diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..c0a3cdc --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +VITE_BETTER_SQLITE3_BINDING=.\resources\app.asar\native\better_sqlite3.node +VITE_INSTALL=false \ No newline at end of file diff --git a/.gitignore b/.gitignore index 75920e4..ae3c994 100644 --- a/.gitignore +++ b/.gitignore @@ -1,28 +1,38 @@ -.DS_Store -node_modules -/dist - - -# local env files -.env.local -.env.*.local - -# Log files +# Logs +logs +*.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +dist-electron +native +release +*.local +.env # Editor directories and files +.vscode/.debug.env .idea -.vscode +.DS_Store *.suo *.ntvs* *.njsproj *.sln *.sw? -#Electron-builder output -/dist_electron +# lockfile +package-lock.json +pnpm-lock.yaml +yarn.lock -/build +# VSCode +.history + +# Rust +target \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 3748136..0000000 --- a/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "printWidth": 160, -} diff --git a/.vscode/.debug.script.mjs b/.vscode/.debug.script.mjs new file mode 100644 index 0000000..e3674cb --- /dev/null +++ b/.vscode/.debug.script.mjs @@ -0,0 +1,23 @@ +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import { createRequire } from 'node:module' +import { spawn } from 'node:child_process' + +const pkg = createRequire(import.meta.url)('../package.json') +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +// write .debug.env +const envContent = Object.entries(pkg.debug.env).map(([key, val]) => `${key}=${val}`) +fs.writeFileSync(path.join(__dirname, '.debug.env'), envContent.join('\n')) + +// bootstrap +spawn( + // TODO: terminate `npm run dev` when Debug exits. + process.platform === 'win32' ? 'npm.cmd' : 'npm', + ['run', 'dev'], + { + stdio: 'inherit', + env: Object.assign(process.env, { VSCODE_DEBUG: 'true' }), + }, +) diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..232ead7 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "Vue.volar", + "Vue.vscode-typescript-vue-plugin" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..3d01d65 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,53 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "compounds": [ + { + "name": "Debug App", + "preLaunchTask": "Before Debug", + "configurations": [ + "Debug Main Process", + "Debug Renderer Process" + ], + "presentation": { + "hidden": false, + "group": "", + "order": 1 + }, + "stopAll": true + } + ], + "configurations": [ + { + "name": "Debug Main Process", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron", + "windows": { + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd" + }, + "runtimeArgs": [ + "--remote-debugging-port=9229", + "." + ], + "envFile": "${workspaceFolder}/.vscode/.debug.env", + "console": "integratedTerminal" + }, + { + "name": "Debug Renderer Process", + "port": 9229, + "request": "attach", + "type": "chrome", + "timeout": 60000, + "skipFiles": [ + "/**", + "${workspaceRoot}/node_modules/**", + "${workspaceRoot}/dist-electron/**", + // Skip files in host(VITE_DEV_SERVER_URL) + "http://127.0.0.1:3344/**" + ] + }, + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1e3e2cd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.tsc.autoDetect": "off", + "json.schemas": [ + { + "fileMatch": [ + "/*electron-builder.json5", + "/*electron-builder.json" + ], + "url": "https://json.schemastore.org/electron-builder" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..adb5c58 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,31 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Before Debug", + "type": "shell", + "command": "node .vscode/.debug.script.mjs", + "isBackground": true, + "problemMatcher": { + "owner": "typescript", + "fileLocation": "relative", + "pattern": { + // TODO: correct "regexp" + "regexp": "^([a-zA-Z]\\:\/?([\\w\\-]\/?)+\\.\\w+):(\\d+):(\\d+): (ERROR|WARNING)\\: (.*)$", + "file": 1, + "line": 3, + "column": 4, + "code": 5, + "message": 6 + }, + "background": { + "activeOnStart": true, + "beginsPattern": "^.*VITE v.* ready in \\d* ms.*$", + "endsPattern": "^.*\\[startup\\] Electron App.*$" + } + } + } + ] +} diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..17f4723 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,748 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "ctor" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e366bff8cd32dd8754b0991fb66b279dc48f598c3a18914852a6673deef583" +dependencies = [ + "quote", + "syn 2.0.38", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[package]] +name = "exr" +version = "1.71.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fdeflate" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + +[[package]] +name = "image" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", + "qoi", + "tiff", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "napi" +version = "2.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd063c93b900149304e3ba96ce5bf210cd4f81ef5eb80ded0d100df3e85a3ac0" +dependencies = [ + "bitflags 2.4.1", + "ctor", + "napi-derive", + "napi-sys", + "once_cell", +] + +[[package]] +name = "napi-build" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a73d9ef23e8dc2ebbffb6a6ae2ef467c0f18ac10711e4cc59c5485d41df0e" + +[[package]] +name = "napi-derive" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da1c6a8fa84d549aa8708fcd062372bf8ec6e849de39016ab921067d21bde367" +dependencies = [ + "cfg-if", + "convert_case", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "napi-derive-backend" +version = "1.0.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20bbc7c69168d06a848f925ec5f0e0997f98e8c8d4f2cc30157f0da51c009e17" +dependencies = [ + "convert_case", + "once_cell", + "proc-macro2", + "quote", + "regex", + "semver", + "syn 1.0.109", +] + +[[package]] +name = "napi-sys" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166b5ef52a3ab5575047a9fe8d4a030cdd0f63c96f071cd6907674453b07bae3" +dependencies = [ + "libloading", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rayon" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rust" +version = "0.0.0" +dependencies = [ + "base64", + "clipboard-win", + "image", + "napi", + "napi-build", + "napi-derive", + "serde", + "serde_json", + "static_vcruntime", + "windows", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" + +[[package]] +name = "serde" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "static_vcruntime" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "954e3e877803def9dc46075bf4060147c55cd70db97873077232eae0269dc89b" + +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tiff" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/README.md b/README.md index 3c9b771..afe1ec8 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,70 @@ -# Dawn Launcher -Windows快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁。 +# 更新 + +消失了三个多月,我将`Dawn Launcher`代码进行重构,因为一开始没有开发`NodeJS`和`Electron`的经验,`Vue`也写的不好,代码写的有些潦草,所以进行了代码重构,新版使用了`Electron26 + Vite + Vue3 + TS`,UI 框架使用了`Naive`,关于原生 API 方面,我从`C++`切换到了 `Rust`,数据库从`electron-store`切换到了`SQLite3`,语言也新增了`英语`。 + +# Dawn Launcher + +`Windows`快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁。 + +支持关联文件夹(实时同步文件夹内容)、快速搜索、相对路径(便携路径)、扫描本机开始菜单、本地扫描本机 Appx 应用列表、添加网址并一键获取网址信息。 + +# 技术栈 + +`Electron + Vite + Vue3 + TS` -支持相对路径(便携路径),支持扫描本机开始菜单、本地Appx应用列表添加项目、支持多项目添加,一次启动多个项目、支持添加网址并一键获取网址信息。 -# 开发框架 -Electron # 支持平台 -Windows + +`Windows(10/11)` + # 编译步骤 -1. 需要配置 node-gyp 环境,这个可以自行搜索一下。 -2. yarn install 安装依赖。 -3. node-gyp rebuild --arch=x64 或 node-gyp rebuild --arch=ia32 编译64位或32位DLL。 -4. yarn electron:serve 本地运行项目。 -5. yarn electron:build 打包项目,打包64位和32位的时候,需要分两次打包,将 vue.config.js 配置中的 pluginOptions.electronBuilder.builderOptions.win.target.arch 修改为x64或者ia32。 + +1. 首先需要安装`node-gyp`,编译本地模块需要用到。 +2. 然后运行`yarn install`安装项目依赖(如果修改了`Rust`代码也需要重新运行`yarn install`)。 +3. `yarn run dev`本地运行项目。 +4. `yarn run build`打包项目。 +5. 便携版和安装版需要分两次打包,通过修改`.env.production`中的`VITE_INSTALL`,`true`为安装版,`false`为便携版。 + # 官网 + [dawnlauncher.com](https://dawnlauncher.com/) + # 捐赠 + ![微信](/images/wechat.png) ![支付宝](/images/alipay.png) + # 界面 -![界面](/images/界面.png) + +![界面](/images/soft1.png) + ## 子分类 -![子分类](/images/子分类.png) + +![子分类](/images/soft2.png) + ## 自定义主题 -![自定义主题](/images/自定义主题.png) + +![自定义主题](/images/soft3.png) + ## 自定义背景 -![自定义背景](/images/自定义背景.png) + +![自定义背景](/images/soft4.png) + ## 快速搜索 -![快速搜索](/images/快速搜索.gif) + +![快速搜索](/images/soft5.png) + ## 一键获取网址信息 -![一键获取网址信息](/images/一键获取网址信息.gif) + +![一键获取网址信息](/images/soft6.webp) + ## 相对路径(便携路径) -![相对路径(便携路径)](/images/相对路径.png) + +![相对路径(便携路径)](/images/soft7.png) + ## 关联文件夹 -![关联文件夹](/images/关联文件夹.gif) + +![关联文件夹](/images/soft8.webp) + # License + Apache License Version 2.0 diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index ca2a3c1..0000000 --- a/babel.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - presets: ["@vue/cli-plugin-babel/preset"], - plugins: [], -}; diff --git a/binding.gyp b/binding.gyp deleted file mode 100644 index 5c01172..0000000 --- a/binding.gyp +++ /dev/null @@ -1,14 +0,0 @@ -{ - "targets": [ - { - "target_name": "api", - "cflags!": [ "-fno-exceptions" ], - "cflags_cc!": [ "-fno-exceptions" ], - "sources": [ "./src/main/api/api.cc" ], - "include_dirs": [ - " { + return '与"' + value + '"分类快捷键产生冲突,请重新设置。'; + }, + shortcutKeyPrompt3: (value: string) => { + return '与"' + value + '"项目快捷键产生冲突,请重新设置。'; + }, + shortcutKeyPrompt4: + '与"设置-常规"中的"显示/隐藏"快捷键产生冲突,请重新设置。', + shortcutKeyPrompt5: '与"设置-常规"中的"搜索"快捷键产生冲突,请重新设置。', + shortcutKeyPrompt6: + '与"设置-快速搜索"中的"显示/隐藏"快捷键产生冲突,请重新设置。', + show: "显示", + showFollowMousePosition: "显示时跟随鼠标位置", + showHide: "显示/隐藏", + showOnlyFiles: "只显示文件", + showOnlyFolders: "只显示文件夹", + shutdown: "关机", + simplifiedChinese: "简体中文", + size: "尺寸", + sleep: "睡眠", + small: "小", + sort: "排序", + startLocation: "起始位置", + startMenu: "开始菜单", + startup: "启动", + startupTray: "启动后最小化到系统托盘", + subclassification: "子分类", + svgIcon: "SVG图标", + svgIconPrompt1: "输入SVG代码后,需要先点击“校验代码”按钮。", + switch: "切换", + switchClassificationCollapseOtherSubClassification: + "切换分类时收起其他子分类", + switchEnglish: "显示窗口时将输入法切换为英文模式", + system: "系统", + target: "目标", + taskManager: "任务管理器", + theme: "主题", + timeInterval: "时间间隔", + tile: "平铺", + title: "标题", + top: "顶部", + traditionalChinese: "繁体中文", + turnOffMonitor: "关闭显示器", + unlockClassification: "解锁分类", + unlockItem: "解锁项目", + uploadIcon: "上传图标", + url: "网址", + useItemOpen: "从程序外拖动文件到项目图标上时用此项目打开文件", + useProxy: "使用代理", + useQuickSearch: "使用快速搜索", + username: "用户名", + update: "更新", + webSearch: "网络搜索", + webSearchModePrompt1: + '输入"冒号 + 关键字 + 空格"或"关键字 + 空格"使用网络搜索,例如使用谷歌搜索,输入":g"或"g",然后按下空格键,进入网络搜索模式。', + webSearchModePrompt2: "{w}为搜索关键字。", + width: "宽度", + window: "窗口", + zoom: "缩放", +}; + +let traditionalChinese = { + about: "關於", + add: "新增", + address: "地址", + aggregateClassification: "聚合分類", + aggregateClassificationPrompt1: + "聚合分類可以將所有分類下的項目聚合到一起,按照設定的排序方式、項目數量進行排序和顯示。", + aggregateClassificationPrompt2: "當前分類為父級分類,不能設置聚合分類。", + aggregateClassificationPrompt3: + "當前設置排序為按打開次數,需開啟設置-項目-記錄打開次數。", + aggregateClassificationPrompt4: + "設置聚合分類會清空原分類下所有項目,請謹慎操作,是否確認?", + align: "對齊", + all: "全部", + altNumberKey: "Alt + 數字鍵", + alwaysCenter: "永遠居中", + alwaysTop: "永遠置頂", + appearance: "外觀", + appx: "Appx", + associateFolder: "關聯文件夾", + associateFolderPrompt1: + "關聯文件夾可以實時監控指定文件夾內的變化並同步到對應分類中。", + associateFolderPrompt2: "需要隱藏的文件/文件夾名稱,多個按英文逗號分割", + associateFolderPrompt3: "當前分類為父級分類,不能設置關聯文件夾。", + associateFolderPrompt4: "目標路徑不存在。", + associateFolderPrompt5: "目標路徑必須是文件夾。", + associateFolderPrompt6: + "設置關聯文件夾會清空原分類下所有項目,請謹慎操作,是否確認?", + associateFolderPrompt7: + "目標路徑為空,當前分類將會自動轉換為普通分類,是否確認?", + autoSwitchClassification: "項目列表滾動到底部或頂部時自動切換分類", + backgroundIcon: "背景圖標", + backgroundImage: "背景圖", + backgroundImageMode: "背景圖模式", + backgroundImagePostion: "背景圖定位", + backgroundImageTransparent: "背景圖透明", + backgroundTransparent: "背景透明", + backup: "備份", + backupRestoreData: "備份/還原數據", + backupRestoreDataPrompt: + "如果要還原1.2.3及之前版本的備份數據,請在還原時選擇導入JSON格式的文件。", + batchConvertAbsolutePath: "轉為絕對路徑", + batchConvertRelativePath: "轉為相對路徑", + batchCopyTo: "批量復製到", + batchDelete: "批量刪除", + batchDeletePrompt: "是否批量刪除項目?", + batchMoveTo: "批量移動到", + batchOperation: "批量操作", + batchRefreshIcon: "批量刷新圖標", + borderColor: "邊框顏色", + bottom: "底部", + byInitialLetter: "按首字母", + byLastOpen: "按最後打開", + byOpenNumber: "按打開次數", + calculator: "計算器", + cancel: "取消", + cancelBatchOperation: "取消批量操作", + center: "居中", + checkCode: "校驗代碼", + checkInvalidItem: "檢查無效項目", + checkUpdates: "檢查更新", + checkUpdatesPrompt1: '檢查到有新版本,點擊"確定"跳轉官網下載最新版本。', + checkUpdatesPrompt2: "當前已經是最新版本。", + checkUpdatesPrompt3: "檢查更新失敗,請確認網絡。", + classification: "分類", + clear: "清空", + close: "關閉", + colon: ":", + colonKeywordSpace: "冒號 + 關鍵字 + 空格", + color: "顏色", + columnNumber: "列數", + commandPrompt: "命令提示符", + computer: "計算機", + computerManagement: "計算機管理", + controlPanel: "控製面板", + convertAbsolutePath: "轉為絕對路徑", + convertRelativePath: "轉為相對路徑", + copyFullPath: "復製完整路徑", + copyTo: "復製到", + createShortcut: "創建快捷方式", + ctrlNumberKey: "Ctrl + 數字鍵", + default: "默認", + defaultIcon: "默認圖標", + delayDisplay: "延遲顯示", + delayHide: "延遲隱藏", + delete: "刪除", + deleteClassificationPrompt: "是否刪除當前分類?", + deleteIcon: "刪除圖標", + deleteItemPrompt: "是否刪除當前項目?", + description: "描述", + display: "顯示", + displayMainWindow: "顯示主界面", + documents: "文檔", + doubleClickOpen: "雙擊打開", + doubleClickTaskbar: "雙擊任務欄", + downloadImagePrompt1: "下載圖片失敗。", + downloadImagePrompt2: "鏈接不是圖片格式。", + dontPromptAgain: "不再提示", + edgeAutoHide: "停靠在桌面邊緣時自動隱藏", + edgeDock: "邊緣吸附", + edit: "編輯", + editClassification: "編輯分類", + editItem: "編輯項目", + editSubclassification: "編輯子分類", + emptyRecycleBin: "清空回收站", + enable: "啟用", + english: "英語", + excludeSearch: "排除搜索", + exit: "退出", + explorerMenu: "資源管理器菜單", + exportIcon: "導出圖標", + extraLarge: "超大", + feedback: "反饋", + file: "文件", + fileExplorer: "文件資源管理器", + fixedClassification: "固定分類", + fixedIcon: "固定圖標", + fixedPosition: "固定位置", + folder: "文件夾", + folderPath: "文件夾路徑", + fontLineHeight: "字體行高", + fontMainColor: "字體主色", + fontSecondaryColor: "字體副色", + fontShadow: "字體陰影", + fontSize: "字體大小", + fontWeight: "字體粗細", + functions: "功能", + general: "常規", + getIcon: "獲取圖標", + getURLInformation: "獲取網址信息", + globalShortcutKey: "全局快捷鍵", + hiddenItems: "隱藏項", + hideEllipses: "隱藏省略號", + hideLoseFocus: "失去焦點後隱藏", + hideName: "隱藏名稱", + hideTray: "隱藏托盤圖標", + hideWindowCollapseSubClassification: "隱藏窗口時收起子分類", + history: "歷史記錄", + hover: "懸停", + icon: "圖標", + imageLink: "圖片鏈接", + item: "項目", + itemAddEditPrompt1: "選中固定圖標後,當前項目不參與刷新圖標。", + itemAddEditPrompt2: "無特殊需求為空即可", + itemAddEditPrompt3: "添加成功。", + itemAddEditPrompt4: "目標不存在。", + itemAddEditPrompt5: "獲取網址信息失敗。", + itemList: "項目列表", + keyword: "關鍵字", + keywordSpace: "關鍵字 + 空格", + language: "語言", + large: "大", + layout: "布局", + layoutListModeTakeEffect: '布局為"列表"模式下生效。', + layoutTileModeTakeEffect: '布局為"平鋪"模式下生效。', + left: "左側", + lineNumber: "行數", + list: "列表", + lock: "鎖定", + lockClassification: "鎖定分類", + lockItem: "鎖定項目", + lockSize: "鎖定尺寸", + mainColor: "主色", + matchCondition: "匹配條件", + medium: "中", + middleClick: "中鍵單擊", + millisecond: "毫秒", + mode: "模式", + modifyIcon: "修改圖標", + mouseHover: "鼠標懸停", + mouseWheel: "鼠標滾輪", + moveTo: "移動到", + multiItems: "多項目", + name: "名稱", + network: "網絡", + networkIcon: "網絡圖標", + networkIconPrompt1: "支持JPG/JPEG/GIF/PNG/ICO/SVG/WEBP格式圖片。", + networkShareCenter: "網絡和共享中心", + newClassification: "新建分類", + newClassificationName: "新分類", + newItem: "新建項目", + newSubclassification: "新建子分類", + none: "無", + noRepeat: "不重復", + normal: "普通", + notDisturb: "勿擾模式", + notDisturbPrompt: + "開啟勿擾模式後,計算機在遊戲、應用全屏模式下不會彈出Dawn Launcher窗口。", + notFoundFile: "找不到指定的文件", + notFoundFolder: "找不到指定的文件夾", + number: "數量", + numberKey: "數字鍵", + officialWebsite: "官方網站", + ok: "確定", + open: "打開", + openAfterHideMainInterface: "打開後隱藏主界面", + openAfterHideQuickSearchWindow: "打開後隱藏窗口", + openFileLocation: "打開文件所在位置", + openNow: "僅剩一項時立即打開", + openNumber: "打開次數", + parameters: "參數", + password: "密碼", + pasteIcon: "粘貼圖標", + powerOptions: "電源選項", + programsFeatures: "程序和功能", + proxy: "代理", + proxyPrompt: + "僅支持HTTP代理,填寫「地址」時需要帶通信協議和端口,例如:http://127.0.0.1:7890,如果沒有用戶名和密碼,為空即可。", + quickSearch: "快速搜索", + recordOpenNumber: "記錄打開次數", + recycleBin: "回收站", + refreshIcon: "刷新圖標", + registryEditor: "註冊表編輯器", + remark: "備註", + rememberSelectionState: "記住選擇狀態", + repeat: "重復", + resourceMonitor: "資源監視器", + restart: "重啟", + restore: "還原", + restoreDataPrompt: "還原數據失敗。", + rewardSponsor: "打賞&贊助", + right: "右側", + roundedCorners: "圓角", + runAsAdministrator: "以管理員身份運行", + runSystemStartup: "開機啟動", + save: "保存", + search: "搜索", + searchSource: "搜索源", + secondaryColor: "副色", + select: "選擇", + selectAll: "全選", + selectItem: "選擇項目", + services: "服務", + setClassificationIcon: "設置分類圖標", + setIcon: "設置圖標", + settings: "設置", + shortcutKey: "快捷鍵", + shortcutKeyPrompt1: "快捷鍵不完整,請完善快捷鍵。", + shortcutKeyPrompt2: (value: string) => { + return '與"' + value + '"分類快捷鍵產生沖突,請重新設置。'; + }, + shortcutKeyPrompt3: (value: string) => { + return '與"' + value + '"項目快捷鍵產生沖突,請重新設置。'; + }, + shortcutKeyPrompt4: + '與"設置-常規"中的"顯示/隱藏"快捷鍵產生沖突,請重新設置。', + shortcutKeyPrompt5: '與"設置-常規"中的"搜索"快捷鍵產生沖突,請重新設置。', + shortcutKeyPrompt6: + '與"設置-快速搜索"中的"顯示/隱藏"快捷鍵產生沖突,請重新設置。', + show: "顯示", + showFollowMousePosition: "顯示時跟隨鼠標位置", + showHide: "顯示/隱藏", + showOnlyFiles: "只顯示文件", + showOnlyFolders: "只顯示文件夾", + shutdown: "關機", + simplifiedChinese: "簡體中文", + size: "尺寸", + sleep: "睡眠", + small: "小", + sort: "排序", + startLocation: "起始位置", + startMenu: "開始菜單", + startup: "啟動", + startupTray: "啟動後最小化到系統托盤", + subclassification: "子分類", + svgIcon: "SVG圖標", + svgIconPrompt1: "輸入SVG代碼後,需要先點擊「校驗代碼」按鈕。", + switch: "切換", + switchClassificationCollapseOtherSubClassification: + "切換分類時收起其他子分類", + switchEnglish: "顯示窗口時將輸入法切換為英文模式", + system: "系統", + target: "目標", + taskManager: "任務管理器", + theme: "主題", + timeInterval: "時間間隔", + tile: "平鋪", + title: "標題", + top: "頂部", + traditionalChinese: "繁體中文", + turnOffMonitor: "關閉顯示器", + unlockClassification: "解鎖分類", + unlockItem: "解鎖項目", + uploadIcon: "上傳圖標", + url: "網址", + useItemOpen: "從程序外拖動文件到項目圖標上時用此項目打開文件", + useProxy: "使用代理", + useQuickSearch: "使用快速搜索", + username: "用戶名", + update: "更新", + webSearch: "網絡搜索", + webSearchModePrompt1: + '輸入"冒號 + 關鍵字 + 空格"或"關鍵字 + 空格"使用網絡搜索,例如使用谷歌搜索,輸入":g"或"g",然後按下空格鍵,進入網絡搜索模式。', + webSearchModePrompt2: "{w}為搜索關鍵字。", + width: "寬度", + window: "窗口", + zoom: "縮放", +}; + +// 英语 +let english = { + about: "About", + add: "Add", + address: "Address", + aggregateClassification: "Aggregate Classification", + aggregateClassificationPrompt1: + "Aggregation classification can aggregate items under all categories together, sort and display them according to the set sorting method and number of items.", + aggregateClassificationPrompt2: + "The current classification is the parent classification, and aggregate classification cannot be set.", + aggregateClassificationPrompt3: + "The current settings are sorted by the number of opens. You need to enable Settings-Item-Open Count the number of opens.", + aggregateClassificationPrompt4: + "Setting an aggregation classification will clear all items under the original classification. Please operate with caution. Are you sure?", + align: "Align", + all: "All", + altNumberKey: "Alt + Number Key", + alwaysCenter: "Always Center", + alwaysTop: "Always Top", + appearance: "Appearance", + appx: "Appx", + associateFolder: "Associate Folder", + associateFolderPrompt1: + "Associate folder can monitor changes in the specified folder in real time and synchronize them to the corresponding classification.", + associateFolderPrompt2: + "Name of the file/folder to be hidden, multiple separated by commas", + associateFolderPrompt3: + "The current classification is the parent classification and associate folder cannot be set.", + associateFolderPrompt4: "The target path does not exist.", + associateFolderPrompt5: "The destination path must be a folder.", + associateFolderPrompt6: + "Setting the associate folder will clear all items under the original classification. Please operate with caution. Are you sure?", + associateFolderPrompt7: + "The target path is empty. The current classification will be automatically converted to a normal classification. Are you sure?", + autoSwitchClassification: "Auto Switch Classification on Scroll", + backgroundIcon: "Background Icon", + backgroundImage: "Background Image", + backgroundImageMode: "Background Image Mode", + backgroundImagePostion: "Background Image Postion", + backgroundImageTransparent: "Background Image Transparent", + backgroundTransparent: "Background Transparent", + backup: "Backup", + backupRestoreData: "Backup/Restore Data", + backupRestoreDataPrompt: + "If you want to restore the backup data of versions 1.2.3 and earlier, please choose to import a file in JSON format when restoring.", + batchConvertAbsolutePath: "Batch Convert to Absolute Path", + batchConvertRelativePath: "Batch Convert to Relative Path", + batchCopyTo: "Batch Copy to", + batchDelete: "Batch Delete", + batchDeletePrompt: "Delete items in batches?", + batchMoveTo: "Batch Move to", + batchOperation: "Batch Operation", + batchRefreshIcon: "Batch Refresh Icon", + borderColor: "Border Color", + bottom: "Bottom", + byInitialLetter: "by Initial Letter", + byLastOpen: "by Last Open", + byOpenNumber: "by Open Count", + calculator: "Calculator", + cancel: "Cancel", + cancelBatchOperation: "Cancel Batch Operation", + center: "Center", + checkCode: "Check Code", + checkInvalidItem: "Check for Invalid Items", + checkUpdates: "Check Updates", + checkUpdatesPrompt1: + 'Check that there is a new version, click "OK" to jump to the official website to download the latest version.', + checkUpdatesPrompt2: "It is currently the latest version.", + checkUpdatesPrompt3: + "Failed to check for updates, please confirm the network.", + classification: "Classification", + clear: "Clear", + close: "Close", + colon: ": ", + colonKeywordSpace: "Colon + Keyword + Space", + color: "Color", + columnNumber: "Column Number", + commandPrompt: "Command Prompt", + computer: "Computer", + computerManagement: "Computer Management", + controlPanel: "Control Panel", + convertAbsolutePath: "Convert to Absolute Path", + convertRelativePath: "Convert to Relative Path", + copyFullPath: "Copy Full Path", + copyTo: "Copy to", + createShortcut: "Create Shortcut", + ctrlNumberKey: "Ctrl + Number Key", + default: "Default", + defaultIcon: "Default Icon", + delayDisplay: "Delay Display", + delayHide: "Delay Hide", + delete: "Delete", + deleteClassificationPrompt: "Delete current classification?", + deleteIcon: "Delete Icon", + deleteItemPrompt: "Delete current item?", + description: "Description", + display: "Display", + displayMainWindow: "Display Main Interface", + documents: "Documents", + doubleClickOpen: "Double Click Open", + doubleClickTaskbar: "Double Click Taskbar", + downloadImagePrompt1: "Failed to download image.", + downloadImagePrompt2: "The link is not in image format.", + dontPromptAgain: "Don't prompt again", + edgeAutoHide: "Auto Hide at Desktop Edge", + edgeDock: "Edge Dock", + edit: "Edit", + editClassification: "Edit Classification", + editItem: "Edit Item", + editSubclassification: "Edit Subclassification", + emptyRecycleBin: "Empty Recycle Bin", + enable: "Enable", + english: "English", + excludeSearch: "Exclude Search", + exit: "Exit", + explorerMenu: "Explorer Menu", + exportIcon: "Export Icon", + extraLarge: "Extra Large", + feedback: "Feedback", + file: "File", + fileExplorer: "File Explorer", + fixedClassification: "Fixed Classification", + fixedIcon: "Fixed Icon", + fixedPosition: "Fixed Position", + folder: "Folder", + folderPath: "Folder Path", + fontLineHeight: "Font Line Height", + fontMainColor: "Font Main Color", + fontSecondaryColor: "Font Secondary Color", + fontShadow: "Font Shadow", + fontSize: "Font Size", + fontWeight: "Font Weight", + functions: "Functions", + general: "General", + getIcon: "Get Icon", + getURLInformation: "Get URL Information", + globalShortcutKey: "Global Shortcut Key", + hiddenItems: "Hidden Items", + hideEllipses: "Hide Ellipses", + hideLoseFocus: "Hide After Lose Focus", + hideName: "Hide Name", + hideTray: "Hide Tray", + hideWindowCollapseSubClassification: + "Collapse Subclassification when Hide Window", + history: "History", + hover: "Hover", + icon: "Icon", + imageLink: "Image Link", + item: "Item", + itemAddEditPrompt1: + "After selecting the fixed icon, the current project will not participate in refreshing the icon.", + itemAddEditPrompt2: "Leave it blank if there are no special requirements", + itemAddEditPrompt3: "Add successfully.", + itemAddEditPrompt4: "The target does not exist.", + itemAddEditPrompt5: "Failed to obtain URL information.", + itemList: "Item List", + keyword: "Keyword", + keywordSpace: "Leyword + Space", + language: "Language", + large: "Large", + layout: "Layout", + layoutListModeTakeEffect: 'Effective when the layout is in "list" mode.', + layoutTileModeTakeEffect: 'Effective when the layout is in "tile" mode.', + left: "Left", + lineNumber: "Number of Lines", + list: "List", + lock: "Lock", + lockClassification: "Lock Classification", + lockItem: "Lock Item", + lockSize: "Lock Size", + mainColor: "Main Color", + matchCondition: "Match Condition", + medium: "Medium", + middleClick: "Middle Click", + millisecond: "Millisecond", + mode: "Mode", + modifyIcon: "Modify Icon", + mouseHover: "Mouse Hover", + mouseWheel: "Mouse Wheel", + moveTo: "Move to", + multiItems: "Multi Items", + name: "Name", + network: "Network", + networkIcon: "Network Icon", + networkIconPrompt1: "Supports JPG/JPEG/GIF/PNG/ICO/SVG/WEBP format images.", + networkShareCenter: "Network Share Center", + newClassification: "New Classification", + newClassificationName: "New Classification", + newItem: "New Item", + newSubclassification: "New Subclassification", + none: "None", + noRepeat: "No Repeat", + normal: "Normal", + notDisturb: "Not Disturb Mode", + notDisturbPrompt: + "After turning on Do Not Disturb mode, the Dawn Launcher window will not pop up when the computer is in full-screen mode for games or applications.", + notFoundFile: "The file specified cannot be found", + notFoundFolder: "The specified folder cannot be found", + number: "Number", + numberKey: "Number Key", + officialWebsite: "Official Website", + ok: "OK", + open: "Open", + openAfterHideMainInterface: "Hide Main Interface After Open", + openAfterHideQuickSearchWindow: "Hide Window After Open", + openFileLocation: "Open File Location", + openNow: "Open when Only One Item", + openNumber: "Open Count", + parameters: "Parameters", + password: "Password", + pasteIcon: "Paste Icon", + powerOptions: "Power Options", + programsFeatures: "Programs Features", + proxy: "Proxy", + proxyPrompt: + 'Only HTTP proxy is supported. When filling in the "address", you need to include the communication protocol and port, for example: http://127.0.0.1:7890. If there is no username and password, just leave it blank.', + quickSearch: "Quick Search", + recordOpenNumber: "Record Open Count", + recycleBin: "Recycle Bin", + refreshIcon: "Refresh Icon", + registryEditor: "Registry Editor", + remark: "Remark", + rememberSelectionState: "Remember Selection State", + repeat: "Repeat", + resourceMonitor: "Resource Monitor", + restart: "Restart", + restore: "Restore", + restoreDataPrompt: "Failed to restore data.", + rewardSponsor: "Reward&Sponsor", + right: "Right", + roundedCorners: "Rounded Corners", + runAsAdministrator: "Run as Administrator", + runSystemStartup: "Run System Startup", + save: "Save", + search: "Search", + searchSource: "Search Source", + secondaryColor: "Secondary Color", + select: "Select", + selectAll: "Select All", + selectItem: "Select Item", + services: "Services", + setClassificationIcon: "Set Classification Icon", + setIcon: "Set Icon", + settings: "Settings", + shortcutKey: "Shortcut Key", + shortcutKeyPrompt1: + "The shortcut keys are incomplete, please improve the shortcut keys.", + shortcutKeyPrompt2: (value: string) => { + return ( + "There is a conflict with the " + + value + + " classification shortcut keys, please reset." + ); + }, + shortcutKeyPrompt3: (value: string) => { + return ( + "There is a conflict with the " + + value + + " item shortcut keys, please reset." + ); + }, + shortcutKeyPrompt4: + 'It conflicts with the "Show/Hide" shortcut key in "Settings-General", please reset it.', + shortcutKeyPrompt5: + 'It conflicts with the "Search" shortcut key in "Settings-General", please reset it.', + shortcutKeyPrompt6: + 'It conflicts with the "Show/Hide" shortcut key in "Settings-Quick Search", please reset it.', + show: "Show", + showFollowMousePosition: "Follows Mouse Position on Display", + showHide: "Show/Hide", + showOnlyFiles: "Show Only Files", + showOnlyFolders: "Show Only Folders", + shutdown: "Shutdown关机", + simplifiedChinese: "Simplified Chinese", + size: "Size", + sleep: "Sleep", + small: "Small", + sort: "Sort", + startLocation: "Start Location", + startMenu: "Start Menu", + startup: "Startup", + startupTray: "Minimize to System Tray on Startup", + subclassification: "Subclassification", + svgIcon: "SVG Icon", + svgIconPrompt1: + 'After entering the SVG code, you need to click the "Check Code" button first.', + switch: "Switch", + switchClassificationCollapseOtherSubClassification: + "Collapse Other Subclassification on Classification Switch", + switchEnglish: "Switch to English Input on Window Display", + system: "System", + target: "Target", + taskManager: "Task Manager", + theme: "Theme", + timeInterval: "Time Interval", + tile: "Tile", + title: "Title", + top: "Top", + traditionalChinese: "Traditional Chinese", + turnOffMonitor: "Turn Off Monitor", + unlockClassification: "Unlock Classification", + unlockItem: "Unlock Item", + uploadIcon: "Upload Icon", + url: "URL", + useItemOpen: "Use This Item to Open Dragged Files", + useProxy: "Use Proxy", + useQuickSearch: "Use Quick Search", + username: "Username", + update: "Update", + webSearch: "Web Search", + webSearchModePrompt1: + 'Enter "Colon + Keyword + Space" or "Keyword + Space" to use a web search, such as using Google search, enter ":g" or "g", and then press the space bar to enter web search mode.', + webSearchModePrompt2: "{w} is the search keyword.", + width: "Width", + window: "Window", + zoom: "Zoom", +}; + +/** + * 获取语言 + * @param language + * @returns + */ +function getLanguage(language: string | null) { + if (language === "SimplifiedChinese") { + return simplifiedChinese; + } else if (language === "TraditionalChinese") { + return traditionalChinese; + } else if (language === "English") { + return english; + } + return simplifiedChinese; +} + +export { getLanguage }; diff --git a/commons/data/theme.d.ts b/commons/data/theme.d.ts new file mode 100644 index 0000000..456064b --- /dev/null +++ b/commons/data/theme.d.ts @@ -0,0 +1,4 @@ +// 无用,为了tsc编译通过 +import { Theme } from "../../types/setting"; + +export const themeList: Array; diff --git a/commons/data/theme.ts b/commons/data/theme.ts new file mode 100644 index 0000000..4d25df2 --- /dev/null +++ b/commons/data/theme.ts @@ -0,0 +1,86 @@ +import { Theme } from "../../types/setting"; + +const themeList: Array = [ + { + name: "#FFFFFF", + mainFontColor: "#505050FF", + secondFontColor: "#505050FF", + mainBackgroundColor: "#FFFFFFFF", + secondBackgroundColor: "#DCDEDFFF", + borderColor: "#F0F0F0FF", + }, + { + name: "#2B2B2B", + mainFontColor: "#BBBBBBFF", + secondFontColor: "#BBBBBBFF", + mainBackgroundColor: "#2B2B2BFF", + secondBackgroundColor: "#3C3F41FF", + borderColor: "#3C3F41FF", + }, + { + name: "#508CC8", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#508CC8FF", + secondBackgroundColor: "#6FA0D2FF", + borderColor: "#6FA0D2FF", + }, + { + name: "#024351", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#024351FF", + secondBackgroundColor: "#025A6CFF", + borderColor: "#025A6CFF", + }, + { + name: "#516FA3", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#516FA3FF", + secondBackgroundColor: "#91A8D0FF", + borderColor: "#91A8D0FF", + }, + { + name: "#45326E", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#45326EFF", + secondBackgroundColor: "#5F4B8BFF", + borderColor: "#5F4B8BFF", + }, + { + name: "#693030", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#693030FF", + secondBackgroundColor: "#955151FF", + borderColor: "#803A3AFF", + }, + { + name: "#9F2F4A", + mainFontColor: "#FFFFFFFF", + secondFontColor: "#FFFFFFFF", + mainBackgroundColor: "#9F2F4AFF", + secondBackgroundColor: "#EA6F8CFF", + borderColor: "#AD3350FF", + }, + { + name: "#000000,#FFDB00", + mainFontColor: "#B3B3B3FF", + secondFontColor: "#000000FF", + mainBackgroundColor: "#000000FF", + secondBackgroundColor: "#FFDB00FF", + borderColor: "#1D1D1DFF", + }, + { + name: "#000000,#FFFFFF", + mainFontColor: "#B3B3B3FF", + secondFontColor: "#000000FF", + mainBackgroundColor: "#000000FF", + secondBackgroundColor: "#FFFFFFFF", + borderColor: "#1D1D1DFF", + }, +]; + +export { themeList }; diff --git a/commons/data/webSearchSource.d.ts b/commons/data/webSearchSource.d.ts new file mode 100644 index 0000000..155e4dc --- /dev/null +++ b/commons/data/webSearchSource.d.ts @@ -0,0 +1,4 @@ +// 无用,为了tsc编译通过 +import { WebSearchSource } from "../../types/setting"; + +export const webSearchSourceList: Array; diff --git a/commons/data/webSearchSource.ts b/commons/data/webSearchSource.ts new file mode 100644 index 0000000..7d2efd9 --- /dev/null +++ b/commons/data/webSearchSource.ts @@ -0,0 +1,41 @@ +import { WebSearchSource } from "../../types/setting"; + +const webSearchSourceList: Array = [ + { + id: 1, + keyword: "g", + name: "Google", + url: "https://www.google.com/search?q={w}", + description: null, + }, + { + id: 2, + keyword: "b", + name: "Baidu", + url: "https://www.baidu.com/s?wd={w}", + description: null, + }, + { + id: 3, + keyword: "bing", + name: "Bing", + url: "https://cn.bing.com/search?q={w}", + description: null, + }, + { + id: 4, + keyword: "so", + name: "360", + url: "https://www.so.com/s?q={w}", + description: null, + }, + { + id: 5, + keyword: "sogou", + name: "Sogou", + url: "https://www.sogou.com/web?query={w}", + description: null, + }, +]; + +export { webSearchSourceList }; diff --git a/commons/utils/common.d.ts b/commons/utils/common.d.ts new file mode 100644 index 0000000..47e6409 --- /dev/null +++ b/commons/utils/common.d.ts @@ -0,0 +1,71 @@ +// 无用,为了tsc编译通过 +import { Classification, ClassificationData } from "../../types/classification"; +import { CommonItem, CommonItemData, Item, ItemData } from "../../types/item"; + +export function convert(from: F): T; +export function isAbsolutePath(path: string): boolean; +export function deleteExtname(name: string | null): string | null; +export function getFileName(path: string | null): string | null; +export function getFileExtname(path: string | null): string | null; +export function newClassification(data: { + id?: number | null; + parentId?: number | null; + name?: string | null; + type?: number | null; + data?: ClassificationData | null; + shortcutKey?: string | null; + globalShortcutKey?: boolean | null; + order?: number | null; + childList?: Array | null; +}): Classification; +export function newClassificationData(data: { + icon?: string | null; + associateFolderPath?: string | null; + associateFolderHiddenItems?: string | null; + itemLayout?: "default" | "tile" | "list"; + itemSort?: "default" | "initial" | "openNumber" | "lastOpen"; + itemColumnNumber?: number | null; + itemIconSize?: number | null; + itemShowOnly?: "default" | "file" | "folder"; + fixed?: boolean | null; + aggregateItemCount?: number | null; +}): ClassificationData; +export function newCommonItem(data: { + id?: number | null; + name?: string | null; + data?: CommonItemData | null; + order?: number | null; +}): CommonItem; +export function newCommonItemData(data: { + target?: string | null; + params?: string | null; + icon?: string | null; + htmlIcon?: string | null; +}): CommonItemData; +export function newItem(data: { + id?: number | null; + classificationId: number; + name?: string | null; + type?: number | null; + data?: ItemData | null; + shortcutKey?: string | null; + globalShortcutKey?: boolean | null; + order?: number | null; +}): Item; +export function newItemData(data: { + startLocation?: string | null; + target?: string | null; + params?: string | null; + runAsAdmin?: boolean | null; + icon?: string | null; + htmlIcon?: string | null; + remark?: string | null; + iconBackgroundColor?: boolean | null; + fixedIcon?: boolean | null; + openNumber?: number | null; + lastOpen?: number | null; + quickSearchOpenNumber?: number | null; + quickSearchLastOpen?: number | null; + multiItemsTimeInterval?: number | null; +}): ItemData; +export function getItemName(name: string | null): string; diff --git a/commons/utils/common.ts b/commons/utils/common.ts new file mode 100644 index 0000000..164f482 --- /dev/null +++ b/commons/utils/common.ts @@ -0,0 +1,308 @@ +import { Classification, ClassificationData } from "../../types/classification"; +import { CommonItem, CommonItemData, Item, ItemData } from "../../types/item"; + +/** + * 转换 + */ +function convert(from: F): T { + return JSON.parse(JSON.stringify(from)) as T; +} + +/** + * 是否是绝对路径 + * @param path + * @returns + */ +function isAbsolutePath(path: string) { + const regex = /^[a-zA-Z]:\\/; + return regex.test(path); +} + +/** + * 删除文件后缀 + * @param name + * @returns + */ +function deleteExtname(name: string | null) { + if (name && name.trim() !== "") { + if (name.indexOf(".") > 0) { + return name.substring(0, name.lastIndexOf(".")); + } else { + return name; + } + } + return null; +} + +/** + * 获取文件名 + * @param path + * @returns + */ +function getFileName(path: string | null) { + if (path && path.trim() !== "") { + let split = path.split("\\"); + return split[split.length - 1]; + } else { + return null; + } +} + +/** + * 获取文件拓展名 + * @param path + * @returns + */ +function getFileExtname(path: string | null) { + // 获取文件名 + let fileName = getFileName(path); + if (fileName && fileName.trim() !== "") { + if (fileName.indexOf(".") >= 0) { + return fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); + } + } + return null; +} + +/** + * 初始化CLassification + * @returns + */ +function newClassification({ + id = null, + parentId = null, + name = null, + type = null, + data = null, + shortcutKey = null, + globalShortcutKey = false, + order = null, + childList = null, +}: { + id?: number | null; + parentId?: number | null; + name?: string | null; + type?: number | null; + data?: ClassificationData | null; + shortcutKey?: string | null; + globalShortcutKey?: boolean | null; + order?: number | null; + childList?: Array | null; +}): Classification { + return { + id: id ?? 0, + parentId: parentId ?? null, + name: name ?? null, + type: type ?? 0, + data: data ? newClassificationData(data) : newClassificationData({}), + shortcutKey: shortcutKey ?? null, + globalShortcutKey: globalShortcutKey ?? false, + order: order ?? 0, + childList: childList ?? null, + }; +} + +/** + * 初始化ClassificationData + * @returns + */ +function newClassificationData({ + icon = null, + associateFolderPath = null, + associateFolderHiddenItems = null, + itemLayout = "default", + itemSort = "default", + itemColumnNumber = null, + itemIconSize = null, + itemShowOnly = "default", + fixed = false, + aggregateItemCount = 50, + excludeSearch = false, +}: { + icon?: string | null; + associateFolderPath?: string | null; + associateFolderHiddenItems?: string | null; + itemLayout?: "default" | "tile" | "list"; + itemSort?: "default" | "initial" | "openNumber" | "lastOpen"; + itemColumnNumber?: number | null; + itemIconSize?: number | null; + itemShowOnly?: "default" | "file" | "folder"; + fixed?: boolean | null; + aggregateItemCount?: number | null; + excludeSearch?: boolean | null; +}): ClassificationData { + return { + icon: icon ?? null, + associateFolderPath: associateFolderPath ?? null, + associateFolderHiddenItems: associateFolderHiddenItems ?? null, + itemLayout: itemLayout ?? "default", + itemSort: itemSort ?? "default", + itemColumnNumber: itemColumnNumber ?? null, + itemIconSize: itemIconSize ?? null, + itemShowOnly: itemShowOnly ?? "default", + fixed: fixed ?? false, + aggregateItemCount: aggregateItemCount ?? 50, + excludeSearch: excludeSearch ?? false, + }; +} + +/** + * 初始化CommonItem + * @returns + */ +function newCommonItem({ + id = null, + name = null, + data = null, + order = null, +}: { + id?: number | null; + name?: string | null; + data?: CommonItemData | null; + order?: number | null; +}): CommonItem { + return { + id: id ?? 0, + name: name ?? null, + data: data ? newCommonItemData(data) : newCommonItemData({}), + order: order ?? 0, + }; +} + +/** + * 初始化CommonItemData + * @returns + */ +function newCommonItemData({ + target = null, + params = null, + icon = null, + htmlIcon = null, +}: { + target?: string | null; + params?: string | null; + icon?: string | null; + htmlIcon?: string | null; +}): CommonItemData { + return { + target: target ?? null, + params: params ?? null, + icon: icon ?? null, + htmlIcon: htmlIcon ?? null, + }; +} + +/** + * 初始化Item + * @returns + */ +function newItem({ + id = null, + classificationId, + name = null, + type = null, + data = null, + shortcutKey = null, + globalShortcutKey = false, + order = null, +}: { + id?: number | null; + classificationId: number; + name?: string | null; + type?: number | null; + data?: ItemData | null; + shortcutKey?: string | null; + globalShortcutKey?: boolean | null; + order?: number | null; +}): Item { + return { + id: id ?? 0, + classificationId, + name: name ?? null, + type: type ?? 0, + data: data ? newItemData(data) : newItemData({}), + shortcutKey: shortcutKey ?? null, + globalShortcutKey: globalShortcutKey ?? false, + order: order ?? 0, + }; +} + +/** + * 初始化ItemData + * @returns + */ +function newItemData({ + startLocation = null, + target = null, + params = null, + runAsAdmin = false, + icon = null, + htmlIcon = null, + remark = null, + iconBackgroundColor = false, + fixedIcon = false, + openNumber = 0, + lastOpen = 0, + quickSearchOpenNumber = 0, + quickSearchLastOpen = 0, + multiItemsTimeInterval = 0, +}: { + startLocation?: string | null; + target?: string | null; + params?: string | null; + runAsAdmin?: boolean | null; + icon?: string | null; + htmlIcon?: string | null; + remark?: string | null; + iconBackgroundColor?: boolean | null; + fixedIcon?: boolean | null; + openNumber?: number | null; + lastOpen?: number | null; + quickSearchOpenNumber?: number | null; + quickSearchLastOpen?: number | null; + multiItemsTimeInterval?: number | null; +}): ItemData { + return { + startLocation: startLocation ?? null, + target: target ?? null, + params: params ?? null, + runAsAdmin: runAsAdmin ?? false, + icon: icon ?? null, + htmlIcon: htmlIcon ?? null, + remark: remark ?? null, + iconBackgroundColor: iconBackgroundColor ?? false, + fixedIcon: fixedIcon ?? false, + openNumber: openNumber ?? 0, + lastOpen: lastOpen ?? 0, + quickSearchOpenNumber: quickSearchOpenNumber ?? 0, + quickSearchLastOpen: quickSearchLastOpen ?? 0, + multiItemsTimeInterval: multiItemsTimeInterval ?? 0, + }; +} + +/** + * 获取项目名 + * @param name + * @returns + */ +function getItemName(name: string | null) { + if (name) { + return name.replace(/\\n/g, " "); + } + return ""; +} + +export { + convert, + isAbsolutePath, + deleteExtname, + getFileName, + getFileExtname, + newClassification, + newClassificationData, + newCommonItem, + newCommonItemData, + newItem, + newItemData, + getItemName, +}; diff --git a/commons/utils/setting.d.ts b/commons/utils/setting.d.ts new file mode 100644 index 0000000..9be03b8 --- /dev/null +++ b/commons/utils/setting.d.ts @@ -0,0 +1,4 @@ +// 无用,为了tsc编译通过 +import { Setting } from "../../types/setting"; + +export function getSetting(setting: Setting | null): Setting; diff --git a/commons/utils/setting.ts b/commons/utils/setting.ts new file mode 100644 index 0000000..994e74d --- /dev/null +++ b/commons/utils/setting.ts @@ -0,0 +1,378 @@ +import { + Appearance, + Classification, + General, + Item, + Network, + Proxy, + QuickSearch, + Setting, + SubClassification, + Theme, + WebSearch, + WebSearchSource, +} from "../../types/setting"; +import { convert } from "./common"; +import { themeList } from "../data/theme"; +import { webSearchSourceList } from "../data/webSearchSource"; + +/** + * 常规 + * @returns + */ +function getGeneral({ + startup = false, + startupTray = false, + showHideShortcutKey = null, + language = "SimplifiedChinese", + alwaysTop = false, + edgeAdsorb = true, + edgeAutoHide = false, + lockSize = false, + hideLoseFocus = false, + hideTray = false, + fixedPosition = false, + alwaysCenter = false, + showHideMouseWheelClick = false, + showFollowMousePosition = false, + notDisturb = false, + showHideDoubleClickTaskbar = false, + delayDisplayMs = 0, + delayHideMs = 0, + switchEnglish = false, + searchShowHideShortcutKey = "TAB", + checkUpdates = true, +}: { + startup?: boolean | null; + startupTray?: boolean | null; + showHideShortcutKey?: string | null; + language?: string | null; + alwaysTop?: boolean | null; + edgeAdsorb?: boolean | null; + edgeAutoHide?: boolean | null; + lockSize?: boolean | null; + hideLoseFocus?: boolean | null; + hideTray?: boolean | null; + fixedPosition?: boolean | null; + alwaysCenter?: boolean | null; + showHideMouseWheelClick?: boolean | null; + showFollowMousePosition?: boolean | null; + notDisturb?: boolean | null; + showHideDoubleClickTaskbar?: boolean | null; + delayDisplayMs?: number | null; + delayHideMs?: number | null; + switchEnglish?: boolean | null; + searchShowHideShortcutKey?: string | null; + checkUpdates?: boolean | null; +}): General { + return { + startup: startup ?? false, + startupTray: startupTray ?? false, + showHideShortcutKey: showHideShortcutKey ?? null, + language: language ?? "SimplifiedChinese", + alwaysTop: alwaysTop ?? false, + edgeAdsorb: edgeAdsorb ?? true, + edgeAutoHide: edgeAutoHide ?? false, + lockSize: lockSize ?? false, + hideLoseFocus: hideLoseFocus ?? false, + hideTray: hideTray ?? false, + fixedPosition: fixedPosition ?? false, + alwaysCenter: alwaysCenter ?? false, + showHideMouseWheelClick: showHideMouseWheelClick ?? false, + showFollowMousePosition: showFollowMousePosition ?? false, + notDisturb: notDisturb ?? false, + showHideDoubleClickTaskbar: showHideDoubleClickTaskbar ?? false, + delayDisplayMs: delayDisplayMs ?? 0, + delayHideMs: delayHideMs ?? 0, + switchEnglish: switchEnglish ?? false, + searchShowHideShortcutKey: searchShowHideShortcutKey ?? null, + checkUpdates: checkUpdates ?? true, + }; +} + +/** + * 外观 + * @returns + */ +function getAppearance({ + theme = convert(themeList[0]), + transparency = 1, + backgroundImage = null, + backgroundImageTransparency = 1, + backgroundImageMode = "repeat", + backgroundImagePosition = "default", + fontShadow = false, + fontShadowColor = "#000000", + windowRounded = false, + title = "Dawn Launcher", +}: { + theme?: Theme | null; + transparency?: number | null; + backgroundImage?: string | null; + backgroundImageTransparency?: number | null; + backgroundImageMode?: string | null; + backgroundImagePosition?: string | null; + fontShadow?: boolean | null; + fontShadowColor?: string | null; + windowRounded?: boolean | null; + title?: string | null; +}): Appearance { + return { + theme: theme ?? convert(themeList[0]), + transparency: transparency ?? 1, + backgroundImage: backgroundImage ?? null, + backgroundImageTransparency: backgroundImageTransparency ?? 1, + backgroundImageMode: backgroundImageMode ?? "repeat", + backgroundImagePosition: backgroundImagePosition ?? "default", + fontShadow: fontShadow ?? false, + fontShadowColor: fontShadowColor ?? "#000000", + windowRounded: windowRounded ?? false, + title: title ?? "Dawn Launcher", + }; +} + +/** + * 分类 + * @returns + */ +function getClassification({ + width = 140, + layout = "left", + mouseHover = false, + mouseHoverMs = 0, + mouseWheel = false, + rememberSelectionState = false, + nameAlign = "left", + mode = "normal", + autoSwitchClassification = false, + hideWindowCollapseSubClassification = false, + switchClassificationCollapseOtherSubClassification = false, +}: { + width?: number | null; + layout?: string | null; + mouseHover?: boolean | null; + mouseHoverMs?: number | null; + mouseWheel?: boolean | null; + rememberSelectionState?: boolean | null; + nameAlign?: string | null; + mode?: string | null; + autoSwitchClassification?: boolean | null; + hideWindowCollapseSubClassification?: boolean | null; + switchClassificationCollapseOtherSubClassification?: boolean | null; +}): Classification { + return { + width: width ?? 140, + layout: layout ?? "left", + mouseHover: mouseHover ?? false, + mouseHoverMs: mouseHoverMs ?? 0, + mouseWheel: mouseWheel ?? false, + rememberSelectionState: rememberSelectionState ?? false, + nameAlign: nameAlign ?? "left", + mode: mode ?? "normal", + autoSwitchClassification: autoSwitchClassification ?? false, + hideWindowCollapseSubClassification: + hideWindowCollapseSubClassification ?? false, + switchClassificationCollapseOtherSubClassification: + switchClassificationCollapseOtherSubClassification ?? false, + }; +} + +/** + * 子分类 + * @returns + */ +function getSubClassification({ + itemAreaNameFontSize = 14, + itemAreaNameFontWeight = 700, + itemAreaNameFontLineHeight = 1.25, +}: { + itemAreaNameFontSize?: number | null; + itemAreaNameFontWeight?: number | null; + itemAreaNameFontLineHeight?: number | null; +}): SubClassification { + return { + itemAreaNameFontSize: itemAreaNameFontSize ?? 14, + itemAreaNameFontWeight: itemAreaNameFontWeight ?? 700, + itemAreaNameFontLineHeight: itemAreaNameFontLineHeight ?? 1.25, + }; +} + +/** + * 项目 + * @returns + */ +function getItem({ + layout = "tile", + iconSize = 40, + doubleClickOpen = false, + openAfterHideMainInterface = false, + useItemOpen = false, + openNumber = false, + hideItemName = false, + hideEllipsis = false, + itemNameRowCount = 2, + width = 85, + columnNumber = 1, + checkInvalidItem = false, + fontSize = 14, + fontWeight = 400, + fontLineHeight = 1.25, +}: { + layout?: string | null; + iconSize?: number | null; + doubleClickOpen?: boolean | null; + openAfterHideMainInterface?: boolean | null; + useItemOpen?: boolean | null; + openNumber?: boolean | null; + hideItemName?: boolean | null; + hideEllipsis?: boolean | null; + itemNameRowCount?: number | null; + width?: number | null; + columnNumber?: number | null; + checkInvalidItem?: boolean | null; + fontSize?: number | null; + fontWeight?: number | null; + fontLineHeight?: number | null; +}): Item { + return { + layout: layout ?? "tile", + iconSize: iconSize ?? 40, + doubleClickOpen: doubleClickOpen ?? false, + openAfterHideMainInterface: openAfterHideMainInterface ?? false, + useItemOpen: useItemOpen ?? false, + openNumber: openNumber ?? false, + hideItemName: hideItemName ?? false, + hideEllipsis: hideEllipsis ?? false, + itemNameRowCount: itemNameRowCount ?? 2, + width: width ?? 85, + columnNumber: columnNumber ?? 1, + checkInvalidItem: checkInvalidItem ?? false, + fontSize: fontSize ?? 14, + fontWeight: fontWeight ?? 400, + fontLineHeight: fontLineHeight ?? 1.25, + }; +} + +/** + * 快速搜索 + * @returns + */ +function getQuickSearch({ + enable = true, + showHideShortcutKey = "Alt + Space", + openShortcutKey = "none", + hideLoseFocus = false, + openNow = false, + showHistory = false, + showHistorySort = "lastOpen", + useItemOpen = false, + openAfterHideQuickSearchWindow = true, + matchConditionsRemark = false, +}: { + enable?: boolean | null; + showHideShortcutKey?: string | null; + openShortcutKey?: string | null; + hideLoseFocus?: boolean | null; + openNow?: boolean | null; + showHistory?: boolean | null; + showHistorySort?: string | null; + useItemOpen?: boolean | null; + openAfterHideQuickSearchWindow?: boolean | null; + matchConditionsRemark?: boolean | null; +}): QuickSearch { + return { + enable: enable ?? true, + showHideShortcutKey: showHideShortcutKey ?? "Alt + Space", + openShortcutKey: openShortcutKey ?? "none", + hideLoseFocus: hideLoseFocus ?? false, + openNow: openNow ?? false, + showHistory: showHistory ?? false, + showHistorySort: showHistorySort ?? "lastOpen", + useItemOpen: useItemOpen ?? false, + openAfterHideQuickSearchWindow: openAfterHideQuickSearchWindow ?? true, + matchConditionsRemark: matchConditionsRemark ?? false, + }; +} + +/** + * 网络搜索 + * @returns + */ +function getWebSearch({ + mode = 0, + searchSourceList = webSearchSourceList, +}: { + mode?: number | null; + searchSourceList?: Array | null; +}): WebSearch { + return { + mode: mode ?? 0, + searchSourceList: searchSourceList ?? webSearchSourceList, + }; +} + +/** + * 网络 + * @returns + */ +function getNetwork({ + useProxy = false, + proxy = getProxy({}), +}: { + useProxy?: boolean | null; + proxy?: Proxy | null; +}): Network { + return { + useProxy: useProxy ?? false, + proxy: proxy ? getProxy(proxy) : getProxy({}), + }; +} + +/** + * 代理 + * @returns + */ +function getProxy({ + address = "", + username = null, + password = null, +}: { + address?: string | null; + username?: string | null; + password?: string | null; +}): Proxy { + return { + address: address ?? "", + username: username ?? null, + password: password ?? null, + }; +} + +/** + * 设置 + * @returns + */ +function getSetting(setting: Setting | null): Setting { + return { + general: getGeneral(setting && setting.general ? setting.general : {}), + appearance: getAppearance( + setting && setting.appearance ? setting.appearance : {} + ), + classification: getClassification( + setting && setting.classification ? setting.classification : {} + ), + subClassification: getSubClassification( + setting && setting.subClassification ? setting.subClassification : {} + ), + item: getItem(setting && setting.item ? setting.item : {}), + quickSearch: getQuickSearch( + setting && setting.quickSearch ? setting.quickSearch : {} + ), + webSearch: getWebSearch( + setting && setting.webSearch ? setting.webSearch : {} + ), + network: getNetwork(setting && setting.network ? setting.network : {}), + }; +} + +export { getSetting }; diff --git a/electron-builder.json5 b/electron-builder.json5 new file mode 100644 index 0000000..372ec7c --- /dev/null +++ b/electron-builder.json5 @@ -0,0 +1,35 @@ +/** + * @see https://www.electron.build/configuration/configuration + */ +{ + $schema: "https://raw.githubusercontent.com/electron-userland/electron-builder/master/packages/app-builder-lib/scheme.json", + appId: "com.dawnlauncher.application", + asar: true, + compression: "maximum", + productName: "Dawn Launcher", + directories: { + output: "release/${version}", + }, + asarUnpack: ["**/*.node"], + npmRebuild: false, + files: ["dist", "dist-electron", "native", "!node_modules/**/*"], + win: { + appId: "com.dawnlauncher.application", + target: [ + { + target: "nsis", + arch: ["x64"], + }, + ], + artifactName: "${productName}-Windows-${version}-Setup.${ext}", + icon: "public/logo.ico", + }, + nsis: { + artifactName: "${productName}-${version}.${ext}", + oneClick: false, + allowElevation: true, + allowToChangeInstallationDirectory: true, + createDesktopShortcut: true, + createStartMenuShortcut: true, + }, +} diff --git a/electron/commons/betterSqlite3.ts b/electron/commons/betterSqlite3.ts new file mode 100644 index 0000000..9b768eb --- /dev/null +++ b/electron/commons/betterSqlite3.ts @@ -0,0 +1,40 @@ +import { join, dirname } from "node:path"; +import Database from "better-sqlite3-multiple-ciphers"; +import { getUserDataPath } from "../main/commons"; + +let database: Database.Database; +let cacheDatabase: Database.Database; + +function getDataSqlite3() { + let filename = join(getUserDataPath(), "Data.db"); + database ??= new Database(filename, { + nativeBinding: join( + process.env.NODE_ENV !== "development" ? dirname(process.execPath) : "", + import.meta.env.VITE_BETTER_SQLITE3_BINDING + ), + }); + return database; +} + +function getCacheDataSqlite3() { + let filename = join(getUserDataPath(), "CacheData.db"); + cacheDatabase ??= new Database(filename, { + nativeBinding: join( + process.env.NODE_ENV !== "development" ? dirname(process.execPath) : "", + import.meta.env.VITE_BETTER_SQLITE3_BINDING + ), + }); + return cacheDatabase; +} + +function getCustomDataSqlite3(filePath: string) { + let db = new Database(filePath, { + nativeBinding: join( + process.env.NODE_ENV !== "development" ? dirname(process.execPath) : "", + import.meta.env.VITE_BETTER_SQLITE3_BINDING + ), + }); + return db; +} + +export { getDataSqlite3, getCacheDataSqlite3, getCustomDataSqlite3 }; diff --git a/electron/commons/constants.ts b/electron/commons/constants.ts new file mode 100644 index 0000000..73f1fab --- /dev/null +++ b/electron/commons/constants.ts @@ -0,0 +1,15 @@ +// 网络和共享中心图标 +export let networkSharingCenterIcon = + "data:image/png;base64,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"; + +// 计算器图标 +export let calcIcon = + "data:image/png;base64,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"; + +// 文件资源管理器图标 +export let fileExplorerIcon = + "data:image/png;base64,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"; + +// 电源图标 +export let powerIcon = + "data:image/png;base64,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"; diff --git a/electron/commons/logger.ts b/electron/commons/logger.ts new file mode 100644 index 0000000..cf973fb --- /dev/null +++ b/electron/commons/logger.ts @@ -0,0 +1,32 @@ +import { app } from "electron"; +import Logger from "electron-log"; +import { join, dirname } from "node:path"; + +// 名称 +let date = new Date(); +let logName = + date.getFullYear() + + "-" + + (date.getMonth() + 1 < 10 + ? "0" + (date.getMonth() + 1) + : date.getMonth() + 1) + + "-" + + date.getDate(); + +// 日志 +if ( + process.env.NODE_ENV !== "development" && + import.meta.env.VITE_INSTALL === "false" +) { + Logger.transports.file.resolvePathFn = () => + join(dirname(process.execPath), "data", "logs", logName + ".log"); +} else { + Logger.transports.file.resolvePathFn = () => + join(app.getPath("userData"), "logs", logName + ".log"); +} + +export default { + error(content: any) { + Logger.error(content); + }, +}; diff --git a/electron/commons/utilityProcessUtils.ts b/electron/commons/utilityProcessUtils.ts new file mode 100644 index 0000000..93b2e7b --- /dev/null +++ b/electron/commons/utilityProcessUtils.ts @@ -0,0 +1,80 @@ +import { MessageChannelMain, app, utilityProcess } from "electron"; +import { join } from "node:path"; +import { writeFileSync, readFileSync, unlink } from "node:fs"; +import { ChildProcessInfo } from "../types/global"; + +/** + * 子进程 + * @param name + * @param data + */ +function fork(name: string, data: any, callback: Function) { + // 随机数 + let min = 1; + let max = 99999; + let random = Math.floor(Math.random() * (max - min + 1)) + min; + // 子进程 + const { port1, port2 } = new MessageChannelMain(); + const childProcess = utilityProcess.fork(join(__dirname, "worker.js")); + // 存储子进程信息 + if (!global.childProcessMap) { + global.childProcessMap = new Map(); + } + global.childProcessMap.set(childProcess.pid, { + utilityProcess: childProcess, + port1, + port2, + }); + // 获取临时目录 + let temp = app.getPath("temp"); + // 参数文件 + let paramFilePath = + temp + "\\" + random + "." + new Date().getTime() + "." + name + ".txt"; + // 创建文件并写入数据 + writeFileSync(paramFilePath, JSON.stringify(data), { + encoding: "utf-8", + }); + // 发送消息 + let params = { + name, + data: { + filePath: paramFilePath, + }, + }; + // 创建子进程完成后发送消息 + childProcess.once("spawn", () => { + childProcess.postMessage(JSON.stringify(params), [port1]); + }); + // 等待接收消息 + port2.start(); + port2.once("message", (event) => { + let data: string = event.data; + try { + if (data !== "exit") { + // 读取文件 + let res = readFileSync(data, { encoding: "utf-8" }); + // 删除文件 + unlink(data, () => {}); + // 回调 + callback(JSON.parse(res)); + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } finally { + // 关闭子进程 + childProcess.kill(); + } + }); + // 监听关闭子进程 + childProcess.once("exit", () => { + // 关闭通道 + port1.close(); + port2.close(); + // 删除信息 + global.childProcessMap.delete(childProcess.pid); + }); +} + +export { fork }; diff --git a/electron/commons/utils.ts b/electron/commons/utils.ts new file mode 100644 index 0000000..96acc95 --- /dev/null +++ b/electron/commons/utils.ts @@ -0,0 +1,155 @@ +import { resolve, dirname, parse } from "node:path"; +import { isAbsolutePath } from "../../commons/utils/common"; +import mime from "mime"; +import { readFileSync } from "node:fs"; + +// 图标格式 +const iconExts = ["jpg", "jpeg", "png", "gif", "ico", "svg", "webp"]; + +/** + * 随机user-agent + */ +function getRandomUserAgent() { + const userAgents = [ + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 OPR/76.0.4017.123", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 OPR/76.0.4017.123", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", + ]; + const randomIndex = Math.floor(Math.random() * userAgents.length); + return userAgents[randomIndex]; +} + +/** + * 组装参数 + * @param paramsMap + * @returns + */ +function getURLParams(paramsMap: Map) { + let res = ""; + if (paramsMap.size > 0) { + res += "?"; + let params: string | null = null; + paramsMap.forEach((value, key) => { + if (params) { + params += "&" + key + "=" + value; + } else { + params = key + "=" + value; + } + }); + res += params; + } + return res; +} + +/** + * 解析环境变量 + * @param path + */ +function parseEnvPath(path: string) { + // 尝试解析路径中的环境变量 + let parsedPath = parse(path); + let isBase = false; + let pathArr: Array = []; + if (!parsedPath.dir || parsedPath.dir.trim() === "") { + pathArr = parsedPath.base.split("\\"); + isBase = true; + } else { + pathArr = parsedPath.dir.split("\\"); + } + // 新路径 + let newPathArr: Array = []; + // 正则提取环境变量 %{path}% 提取中间的path名称 + const pattern = /^%.*%$/; + for (let string of pathArr) { + // 符合环境变量正则 + if (pattern.test(string)) { + // 尝试获取 + let env: string | null = global.addon.getEnvByName( + string.substring(1, string.length - 1) + ); + // 如果提取到环境变量了就使用环境变量路径,如果没有就使用原路径 + if (env && env.trim() !== "") { + newPathArr.push(env); + } else { + newPathArr.push(string); + } + } else { + // 没有匹配到正则,使用原路径 + newPathArr.push(string); + } + } + // 根据上方解析,如果拥有dir的话,需要追加base变量 + if (!isBase) { + newPathArr.push(parsedPath.base); + } + // 拼接并返回 + return newPathArr.join("\\"); +} + +/** + * 获取绝对路径 + * @param path + */ +function getAbsolutePath(path: string) { + if (!isAbsolutePath(path)) { + // 尝试解析环境变量 + let newPath = parseEnvPath(path); + // 判断解析之后的路径是否是绝对路径 + if (isAbsolutePath(newPath)) { + return newPath; + } else { + return resolve( + process.env.NODE_ENV === "development" + ? resolve(".") + : dirname(process.execPath), + path + ); + } + } + return path; +} + +/** + * 获取文件图标 + * @param filePath + */ +function getFileIcon(filePath: string | null) { + // 图标 + let icon: string | null = null; + if (filePath) { + // 获取后缀 + let ext = mime.getExtension(mime.getType(filePath)); + if (iconExts.includes(ext)) { + // 读取文件 + let buffer = readFileSync(filePath); + icon = + "data:" + + mime.getType(filePath) + + ";base64," + + buffer.toString("base64"); + } else { + // 获取图标 + icon = global.addon.getFileIcon(filePath); + } + } + return icon; +} + +export { + getURLParams, + getAbsolutePath, + getFileIcon, + iconExts, + getRandomUserAgent, +}; diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts new file mode 100644 index 0000000..b4c4211 --- /dev/null +++ b/electron/electron-env.d.ts @@ -0,0 +1,11 @@ +/// + +declare namespace NodeJS { + interface ProcessEnv { + VSCODE_DEBUG?: 'true' + DIST_ELECTRON: string + DIST: string + /** /dist/ or /public/ */ + VITE_PUBLIC: string + } +} diff --git a/electron/main/about/index.ts b/electron/main/about/index.ts new file mode 100644 index 0000000..3038e2f --- /dev/null +++ b/electron/main/about/index.ts @@ -0,0 +1,58 @@ +import { BrowserWindow, shell } from "electron"; +import { closeWindow, getMainBackgorunColor } from "../commons"; +import { join } from "node:path"; + +// 窗口 +let aboutWindow: BrowserWindow | null = null; + +/** + * 关于窗口 + */ +function createWindow() { + // 如果窗口存在先关闭窗口 + closeWindow(aboutWindow); + // 创建窗口 + aboutWindow = global.aboutWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 212, + width: 600, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + aboutWindow.loadURL(process.env.VITE_DEV_SERVER_URL + "About"); + } else { + aboutWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/About", + }); + } + aboutWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + aboutWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + aboutWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + aboutWindow.setEnabled(true); + }, 100); + return true; + }); +} + +export { createWindow }; diff --git a/electron/main/about/ipcEvent.ts b/electron/main/about/ipcEvent.ts new file mode 100644 index 0000000..4872fc5 --- /dev/null +++ b/electron/main/about/ipcEvent.ts @@ -0,0 +1,20 @@ +import { ipcMain } from "electron"; +import { createWindow } from "."; +import { closeWindow } from "../commons"; + +export default function () { + // 创建窗口 + ipcMain.on("createAboutWindow", (event, args) => { + createWindow(); + }); + // 显示窗口 + ipcMain.on("showAboutWindow", (event, args) => { + if (global.aboutWindow) { + global.aboutWindow.show(); + } + }); + // 关闭窗口 + ipcMain.on("closeAboutWindow", (event, args) => { + closeWindow(global.aboutWindow); + }); +} diff --git a/electron/main/classification/data.ts b/electron/main/classification/data.ts new file mode 100644 index 0000000..bd516a2 --- /dev/null +++ b/electron/main/classification/data.ts @@ -0,0 +1,397 @@ +import { deleteAssociateFolderWatcher } from "."; +import { + Classification, + ClassificationData, +} from "../../../types/classification"; +import { + newClassification, + newClassificationData, +} from "../../../commons/utils/common"; +import { deleteByClassificationId, updateClassificationId } from "../item/data"; +import { getDataSqlite3 } from "../../commons/betterSqlite3"; + +// 获取数据库 +let db = getDataSqlite3(); + +// 分类表名 +let classificationTableName = "classification"; + +// 查询字段 +let selectColumn = + "id, parent_id parentId, name, type, data, shortcut_key shortcutKey, global_shortcut_key globalShortcutKey, `order`"; + +/** + * 分类 + */ +function getClassification(row: any): Classification { + return newClassification({ + id: row.id, + parentId: row.parentId, + name: row.name, + type: row.type, + data: newClassificationData(JSON.parse(row.data)), + shortcutKey: row.shortcutKey, + globalShortcutKey: row.globalShortcutKey === 1, + order: row.order, + }); +} + +/** + * 初始化 + */ +function init() { + // sql + let sql = `CREATE TABLE IF NOT EXISTS ${classificationTableName} ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + parent_id INTEGER, + name TEXT NOT NULL, + type INTEGER NOT NULL, + data TEXT NOT NULL, + shortcut_key TEXT, + global_shortcut_key INTEGER NOT NULL, + \`order\` INTEGER NOT NULL)`; + // 运行 + db.exec(sql); + // 查询有多少条数据 + sql = `SELECT COUNT(id) count FROM ${classificationTableName}`; + let row: any = db.prepare(sql).get(); + let count = row.count as number; + if (count === 0) { + // 新增分类 + add(null, global.language.newClassificationName, null, false); + } +} + +/** + * 列表 + * @param parentId + */ +function list(parentId: number | null = null) { + // 参数 + let params = []; + // sql + let sql = `SELECT ${selectColumn} FROM ${classificationTableName}`; + if (parentId) { + sql += " WHERE parent_id = ?"; + params.push(parentId); + } + sql += " ORDER BY `order` ASC"; + // 查询 + let list = db.prepare(sql).all(params); + // 返回 + return list.map((row) => { + return getClassification(row); + }); +} + +/** + * 添加 + * @param parentId + * @param name + * @param shortcutKey + * @param globalShortcutKey + * @returns + */ +function add( + parentId: number | null, + name: string, + shortcutKey: string | null, + globalShortcutKey: boolean, + data: ClassificationData = newClassificationData({}), + type: number = 0 +): Classification | null { + // 获取序号 + let newOrder = getMaxOrder(parentId) + 1; + // SQL + let sql = `INSERT INTO ${classificationTableName} (parent_id, name, type, data, shortcut_key, global_shortcut_key, \`order\`) VALUES (?, ?, ?, ?, ?, ?, ?)`; + // 运行 + let id = db + .prepare(sql) + .run( + parentId, + name, + type, + JSON.stringify(data), + shortcutKey, + globalShortcutKey ? 1 : 0, + newOrder + ).lastInsertRowid as number; + if (id) { + let classification = newClassification({ + id, + name, + parentId, + type, + data, + shortcutKey, + globalShortcutKey, + order: newOrder, + }); + // 如果是添加子分类,将父级分类下的项目移动到新建的子分类中 + if (parentId) { + updateClassificationId(parentId, id); + } + return classification; + } + return null; +} + +/** + * 更新 + * @param id + * @param name + * @param shortcutKey + * @param globalShortcutKey + * @returns + */ +function update(classification: Classification) { + // SQL + let sql = `UPDATE ${classificationTableName} SET name = ?, type = ?, data = ?, shortcut_key = ?, global_shortcut_key = ? WHERE id = ?`; + // 运行 + return ( + db + .prepare(sql) + .run( + classification.name, + classification.type, + JSON.stringify(classification.data), + classification.shortcutKey, + classification.globalShortcutKey ? 1 : 0, + classification.id + ).changes > 0 + ); +} + +/** + * 更新数据 + * @param id + * @param data + */ +function updateData(id: number, data: ClassificationData) { + // SQL + let sql = `UPDATE ${classificationTableName} SET data = ? WHERE id = ?`; + return db.prepare(sql).run(JSON.stringify(data), id).changes > 0; +} + +/** + * 根据ID查询 + * @param id + */ +function selectById(id: number): Classification | null { + // SQL + let sql = `SELECT ${selectColumn} FROM ${classificationTableName} WHERE id = ?`; + // 运行 + let row = db.prepare(sql).get(id); + // 返回 + if (row) { + return getClassification(row); + } else { + return null; + } +} + +/** + * 删除 + * @param id + */ +function del(id: number) { + // 查询数据 + let classifictaion = selectById(id); + if (classifictaion) { + // 查询有无子分类 + let childList = list(classifictaion.id); + // SQL + let sql = `DELETE FROM ${classificationTableName} WHERE id = ? or parent_id = ?`; + // 运行 + let res = db.prepare(sql).run(id, id).changes > 0; + if (res) { + // 更新序号 + reorder(classifictaion.parentId); + // 删除分类下所有项目 + deleteByClassificationId(id); + // 删除子分类下所有项目 + for (const child of childList) { + deleteByClassificationId(child.id); + if (child.type === 1) { + // 删除关联文件夹 + deleteAssociateFolderWatcher(child.id); + } + } + if (classifictaion.type === 1) { + // 删除关联文件夹 + deleteAssociateFolderWatcher(classifictaion.id); + } + return true; + } else { + return false; + } + } else { + return false; + } +} + +/** + * 排序 + * @param fromId + * @param toId + * @param parentId + */ +function updateOrder( + fromId: number, + toId: number | null, + parentId: number | null +) { + // 查询来源分类 + let fromClassification = selectById(fromId); + if (fromClassification) { + // 新序号 + let newOrder = 1; + // 如果目标ID不为空获取项目并获取序号 + if (toId) { + let toClassification = selectById(toId); + if (toClassification) { + newOrder = toClassification.order; + } + } else { + newOrder = getMaxOrder(parentId) + 1; + } + // SQL + let sql = `UPDATE ${classificationTableName} SET \`order\` = ? WHERE id = ?`; + // 更新排序 + db.prepare(sql).run(newOrder, fromClassification.id); + // 判断新序号和老序号之间的数据是+1还是-1 + if (newOrder > fromClassification.order) { + // 新序号和老序号之间数据,序号-1 + let params = [fromClassification.order, newOrder, fromClassification.id]; + sql = `UPDATE ${classificationTableName} SET \`order\` = \`order\` - 1 WHERE \`order\` > ? AND \`order\` <= ? AND id != ?`; + if (parentId) { + sql += " AND parent_id = ?"; + params.push(parentId); + } else { + sql += " AND parent_id is NULL"; + } + db.prepare(sql).run(params); + } else { + // 新序号和老序号之间数据,序号+1 + let params = [newOrder, fromClassification.order, fromClassification.id]; + sql = `UPDATE ${classificationTableName} SET \`order\` = \`order\` + 1 WHERE \`order\` >= ? AND \`order\` < ? AND id != ?`; + if (parentId) { + sql += " AND parent_id = ?"; + params.push(parentId); + } else { + sql += " AND parent_id is NULL"; + } + db.prepare(sql).run(params); + } + return true; + } + return false; +} + +/** + * 重新排序 + * @param parentId + */ +function reorder(parentId: number | null) { + // 查询分类列表 + let classificationList = list(parentId); + // 开启事务 + db.transaction(() => { + // SQL + let sql = `UPDATE ${classificationTableName} SET \`order\` = ? WHERE id = ?`; + // 更新序号 + for (let i = 0; i < classificationList.length; i++) { + db.prepare(sql).run(i + 1, classificationList[i].id); + } + })(); +} + +/** + * 查询最大序号 + * @param parentId + */ +function getMaxOrder(parentId: number | null) { + // SQL + let sql = `SELECT MAX(\`order\`) \`order\` FROM ${classificationTableName}`; + if (parentId) { + sql += " WHERE parent_id = ?"; + } else { + sql += " WHERE parent_id IS NULL"; + } + // 运行 + let row: any = db.prepare(sql).get(parentId ? [parentId] : []); + if (!row || !row.order) { + return 0; + } else { + return row.order; + } +} + +/** + * 更新图标 + * @param id + * @param icon + */ +function updateIcon(id: number, icon: string | null) { + // 查询分类 + let classification = selectById(id); + if (classification) { + // SQL + let sql = `UPDATE ${classificationTableName} SET data = ? WHERE id = ?`; + // 更新图标 + classification.data.icon = icon; + return ( + db.prepare(sql).run(JSON.stringify(classification.data), id).changes > 0 + ); + } + return false; +} + +/** + * 是否有子分类 + * @param id + */ +function hasChildClassification(id: number) { + let classificationList = list(id); + return classificationList.length > 0; +} + +/** + * 更新固定分类 + * @param classification + * @param fixed + */ +function updateFixed(classification: Classification, fixed: boolean) { + classification.data.fixed = fixed; + updateData(classification.id, classification.data); +} + +/** + * 批量更新固定分类 + * @param id + */ +function batchUpdateFixed(id: number | null = null) { + // 事务 + db.transaction(() => { + // 查询所有分类 + let classificationList = list(); + // 更新 + for (const classification of classificationList) { + updateFixed(classification, id === classification.id); + } + })(); +} + +export { + init, + list, + add, + del, + selectById, + update, + updateData, + updateOrder, + updateIcon, + hasChildClassification, + batchUpdateFixed, +}; diff --git a/electron/main/classification/index.ts b/electron/main/classification/index.ts new file mode 100644 index 0000000..c4b039f --- /dev/null +++ b/electron/main/classification/index.ts @@ -0,0 +1,954 @@ +import { BrowserWindow, MenuItem, shell } from "electron"; +import { join, basename } from "node:path"; +import { getURLParams } from "../../commons/utils"; +import { + add, + hasChildClassification, + list, + selectById, + update, + updateData, +} from "./data"; +import { watch, statSync, Stats, readdirSync } from "node:fs"; +import { getDirectoryList } from "../item"; +import { AssociateFolderData } from "../../types/global"; +import { Classification } from "../../../types/classification"; +import { + closeWindow, + getDot, + getMainBackgorunColor, + sendToWebContent, +} from "../commons/index"; +import { deleteByClassificationId } from "../item/data"; + +// 窗口 +let classificationAddEditWindow: BrowserWindow | null = null; +let classificationSetIconWindow: BrowserWindow | null = null; +let classificationAssociateFolderWindow: BrowserWindow | null = null; +let classificationAggregateWindow: BrowserWindow | null = null; + +/** + * 添加/修改窗口 + * @param id + * @param parentId + */ +function createAddEditWindow(id: number | null, parentId: number | null) { + // 如果窗口存在先关闭窗口 + closeWindow(classificationAddEditWindow); + // 创建窗口 + classificationAddEditWindow = global.classificationAddEditWindow = + new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 174, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + // 参数 + let params = new Map(); + if (id) { + params.set("id", id); + } + if (parentId) { + params.set("parentId", parentId); + } + if (process.env.VITE_DEV_SERVER_URL) { + classificationAddEditWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + + "Classification/AddEdit" + + getURLParams(params) + ); + } else { + classificationAddEditWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/Classification/AddEdit", + search: getURLParams(params), + }); + } + classificationAddEditWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + classificationAddEditWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + classificationAddEditWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + classificationAddEditWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 设置图标窗口 + * @param id + */ +function createSetIconWindow(id: number) { + // 如果窗口存在先关闭窗口 + closeWindow(classificationSetIconWindow); + // 创建窗口 + classificationSetIconWindow = global.classificationSetIconWindow = + new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 500, + width: 358, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + // 参数 + let params = new Map(); + params.set("id", id); + if (process.env.VITE_DEV_SERVER_URL) { + classificationSetIconWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + + "Classification/SetIcon" + + getURLParams(params) + ); + } else { + classificationSetIconWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/Classification/SetIcon", + search: getURLParams(params), + }); + } + classificationSetIconWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + classificationSetIconWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + classificationSetIconWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + classificationSetIconWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 关联文件夹窗口 + * @param id + */ +function createAssociateFolderWindow(id: number) { + // 如果窗口存在先关闭窗口 + closeWindow(classificationAssociateFolderWindow); + // 创建窗口 + classificationAssociateFolderWindow = + global.classificationAssociateFolderWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 249, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + // 参数 + let params = new Map(); + params.set("id", id); + if (process.env.VITE_DEV_SERVER_URL) { + classificationAssociateFolderWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + + "Classification/AssociateFolder" + + getURLParams(params) + ); + } else { + classificationAssociateFolderWindow.loadFile( + join(process.env.DIST, "index.html"), + { + hash: "/Classification/AssociateFolder", + search: getURLParams(params), + } + ); + } + classificationAssociateFolderWindow.webContents.setWindowOpenHandler( + ({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + } + ); + // 禁用标题栏右键 + classificationAssociateFolderWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + classificationAssociateFolderWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + classificationAssociateFolderWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 聚合分类窗口 + * @param id + */ +function createAggregateWindow(id: number) { + // 如果窗口存在先关闭窗口 + closeWindow(classificationAggregateWindow); + // 创建窗口 + classificationAggregateWindow = global.classificationAggregateWindow = + new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 144, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + // 参数 + let params = new Map(); + params.set("id", id); + if (process.env.VITE_DEV_SERVER_URL) { + classificationAggregateWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + + "Classification/Aggregate" + + getURLParams(params) + ); + } else { + classificationAggregateWindow.loadFile( + join(process.env.DIST, "index.html"), + { + hash: "/Classification/Aggregate", + search: getURLParams(params), + } + ); + } + classificationAggregateWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + classificationAggregateWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + classificationAggregateWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + classificationAggregateWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 新建文件夹监听 + */ +function addAssociateFolderWatcher( + classificationId: number, + dir: string, + hiddenItems: string | null +) { + // 先删除原有监听 + deleteAssociateFolderWatcher(classificationId); + // 新建监听 + let data: AssociateFolderData = { + classificationId, + dir, + hiddenItems, + watch: null, + }; + // 定时器 + let timer: NodeJS.Timeout | null = null; + let dirWatch = watch(dir, () => { + if (timer) { + clearTimeout(timer); + timer = null; + } + // 启动定时器,在指定的时间间隔后发送合并后的通知 + timer = setTimeout(() => { + getDirectoryList(classificationId, dir, hiddenItems, false, true); + clearTimeout(timer); + timer = null; + }, 2000); + }); + dirWatch.on("error", () => { + dirWatch.close(); + global.associateFolderWatcher.delete(classificationId); + }); + // 保存 + data.watch = dirWatch; + if (!global.associateFolderWatcher) { + global.associateFolderWatcher = new Map(); + } + global.associateFolderWatcher.set(classificationId, data); +} + +/** + * 删除关联文件夹监听 + */ +function deleteAssociateFolderWatcher(classificationId: number) { + if (global.associateFolderWatcher) { + if (global.associateFolderWatcher.has(classificationId)) { + let data = global.associateFolderWatcher.get(classificationId); + if (data.watch) { + data.watch.close(); + data.watch = null; + } + global.associateFolderWatcher.delete(classificationId); + } + } else { + global.associateFolderWatcher = new Map(); + } +} + +/** + * 设置关联文件夹 + * @param id + * @param dir + * @param hiddenItems + */ +function setAssociateFolder( + id: number, + dir: string | null, + hiddenItems: string | null +) { + // 查询分类 + let classification = selectById(id); + if (classification) { + // 类型 + if (!dir) { + classification.type = 0; + classification.data.associateFolderPath = null; + } else { + classification.type = 1; + classification.data.associateFolderPath = dir; + } + classification.data.associateFolderHiddenItems = hiddenItems; + // 更新 + let res = update(classification); + if (res) { + // 如果类型为1,开始读取文件夹的文件 + if (classification.type === 1) { + // 读取文件夹并创建监听 + getDirectoryList(classification.id, dir, hiddenItems, true, true); + } else { + // 删除监听 + deleteAssociateFolderWatcher(classification.id); + } + return classification; + } + } + return null; +} + +/** + * 初始化关联文件夹 + */ +function initAssociateFolder() { + // 初始化Map + global.associateFolderWatcher = new Map(); + // 查询分类 + let classificationList = list(null); + // 初始化 + for (const classification of classificationList) { + if (classification.type === 1) { + // 读取文件夹并创建监听 + getDirectoryList( + classification.id, + classification.data.associateFolderPath, + classification.data.associateFolderHiddenItems, + true, + true + ); + } + } +} + +/** + * 获取项目布局菜单 + * @param classification + * @returns + */ +function getItemLayoutMenu(classification: Classification) { + // 是否拥有子级 + let hasChild = hasChildClassification(classification.id); + // 菜单 + let submenus: any = [ + new MenuItem({ + label: global.language.default, + icon: + classification.data.itemLayout === "default" && !hasChild + ? getDot() + : null, + click: () => { + updateItemLayout(classification, "default"); + }, + }), + new MenuItem({ + label: global.language.tile, + icon: + classification.data.itemLayout === "tile" && !hasChild + ? getDot() + : null, + click: () => { + updateItemLayout(classification, "tile"); + }, + }), + new MenuItem({ + label: global.language.list, + icon: + classification.data.itemLayout === "list" && !hasChild + ? getDot() + : null, + click: () => { + updateItemLayout(classification, "list"); + }, + }), + ]; + return new MenuItem({ + label: global.language.layout, + submenu: submenus, + }); +} + +/** + * 修改项目布局 + * @param classification + * @param layout + */ +function updateItemLayout( + classification: Classification, + layout: "default" | "tile" | "list" +) { + let resultList = []; + // 尝试获取子级分类 + let childList = list(classification.id); + let idList = []; + // 如果有子级分类的话,连同子级分类一起修改 + if (childList && childList.length > 0) { + idList.push(...childList.map((c) => c.id)); + } + idList.push(classification.id); + // 修改 + for (const id of idList) { + // 查询分类 + let classification = selectById(id); + if (classification) { + classification.data.itemLayout = layout; + if (updateData(classification.id, classification.data)) { + resultList.push({ + id, + layout, + }); + } + } + } + // 通知页面 + sendToWebContent("mainWindow", "onUpdateItemLayout", resultList); +} + +/** + * 获取项目排序菜单 + * @param classification + * @returns + */ +function getItemSortMenu(classification: Classification) { + // 是否拥有子级 + let hasChild = hasChildClassification(classification.id); + // 菜单 + let submenus: any = [ + new MenuItem({ + label: global.language.default, + icon: + classification.data.itemSort === "default" && !hasChild + ? getDot() + : null, + click: () => { + updateItemSort(classification, "default"); + }, + }), + new MenuItem({ + label: global.language.byInitialLetter, + icon: + classification.data.itemSort === "initial" && !hasChild + ? getDot() + : null, + click: () => { + updateItemSort(classification, "initial"); + }, + }), + new MenuItem({ + label: global.language.byLastOpen, + icon: + classification.data.itemSort === "lastOpen" && !hasChild + ? getDot() + : null, + click: () => { + updateItemSort(classification, "lastOpen"); + }, + }), + ]; + if (global.setting.item.openNumber) { + submenus.push( + new MenuItem({ + label: global.language.byOpenNumber, + icon: + classification.data.itemSort === "openNumber" && !hasChild + ? getDot() + : null, + click: () => { + updateItemSort(classification, "openNumber"); + }, + }) + ); + } + return new MenuItem({ + label: global.language.sort, + submenu: submenus, + }); +} + +/** + * 修改项目排序 + * @param classification + * @param sort + */ +function updateItemSort( + classification: Classification, + sort: "default" | "initial" | "openNumber" | "lastOpen" +) { + let resultList = []; + // 尝试获取子级分类 + let childList = list(classification.id); + let idList = []; + // 如果有子级分类的话,连同子级分类一起修改 + if (childList && childList.length > 0) { + idList.push(...childList.map((c) => c.id)); + } + idList.push(classification.id); + // 修改 + for (const id of idList) { + // 查询分类 + let classification = selectById(id); + if (classification && classification.type !== 2) { + classification.data.itemSort = sort; + if (updateData(classification.id, classification.data)) { + resultList.push({ + id, + sort, + }); + } + } + } + // 通知页面 + sendToWebContent("mainWindow", "onUpdateItemSort", resultList); +} + +/** + * 获取项目列数菜单 + * @param classification + * @returns + */ +function getItemColumnNumber(classification: Classification) { + // 菜单 + let submenus: any = [ + new MenuItem({ + label: global.language.default, + icon: !classification.data.itemColumnNumber ? getDot() : null, + click: () => { + updateItemColumnNumber(classification, null); + }, + }), + ]; + for (let i = 0; i < 20; i++) { + submenus.push({ + label: (i + 1).toString(), + icon: + classification.data.itemColumnNumber && + classification.data.itemColumnNumber === i + 1 + ? getDot() + : null, + click: () => { + updateItemColumnNumber(classification, i + 1); + }, + }); + } + return new MenuItem({ + label: global.language.columnNumber, + submenu: submenus, + }); +} + +/** + * 修改项目列数 + * @param classification + * @param columnNumber + */ +function updateItemColumnNumber( + classification: Classification, + columnNumber: number | null +) { + // 查询分类 + let curClassification = selectById(classification.id); + if (curClassification) { + curClassification.data.itemColumnNumber = columnNumber; + if (updateData(curClassification.id, curClassification.data)) { + // 通知页面 + sendToWebContent("mainWindow", "onUpdateItemColumnNumber", { + id: curClassification.id, + columnNumber: columnNumber, + }); + } + } +} + +/** + * 获取项目图标大小菜单 + * @param classification + * @returns + */ +function getItemIconSize(classification: Classification) { + // 是否拥有子级 + let hasChild = hasChildClassification(classification.id); + // 菜单 + let submenus: any = [ + new MenuItem({ + label: global.language.default, + icon: !classification.data.itemIconSize && !hasChild ? getDot() : null, + click: () => { + updateItemIconSize(classification, null); + }, + }), + new MenuItem({ + label: global.language.extraLarge, + icon: + classification.data.itemIconSize === 48 && !hasChild ? getDot() : null, + click: () => { + updateItemIconSize(classification, 48); + }, + }), + new MenuItem({ + label: global.language.large, + icon: + classification.data.itemIconSize === 40 && !hasChild ? getDot() : null, + click: () => { + updateItemIconSize(classification, 40); + }, + }), + new MenuItem({ + label: global.language.medium, + icon: + classification.data.itemIconSize === 32 && !hasChild ? getDot() : null, + click: () => { + updateItemIconSize(classification, 32); + }, + }), + new MenuItem({ + label: global.language.small, + icon: + classification.data.itemIconSize === 24 && !hasChild ? getDot() : null, + click: () => { + updateItemIconSize(classification, 24); + }, + }), + ]; + return new MenuItem({ + label: global.language.icon, + submenu: submenus, + }); +} + +/** + * 修改项目图标大小 + * @param classification + * @param iconSize + */ +function updateItemIconSize( + classification: Classification, + iconSize: number | null +) { + let resultList = []; + // 尝试获取子级分类 + let childList = list(classification.id); + let idList = []; + // 如果有子级分类的话,连同子级分类一起修改 + if (childList && childList.length > 0) { + idList.push(...childList.map((c) => c.id)); + } + idList.push(classification.id); + // 修改 + for (const id of idList) { + // 查询分类 + let classification = selectById(id); + if (classification) { + classification.data.itemIconSize = iconSize; + if (updateData(classification.id, classification.data)) { + resultList.push({ + id, + iconSize, + }); + } + } + } + // 通知页面 + sendToWebContent("mainWindow", "onUpdateItemIconSize", resultList); +} + +/** + * 根据文件夹创建分类 + * @param pathList + */ +function addClassificationByDirectory(pathList: Array) { + // 返回信息 + let resultList = []; + // 循环每个路径 + for (let path of pathList) { + try { + // 获取文件类型 + let stats: Stats | null = null; + try { + stats = statSync(path); + } catch (e) { + path = path.replace(" (x86)", ""); + try { + stats = statSync(path); + } catch (e) {} + } + // 只要文件夹 + if (stats && stats.isDirectory()) { + // 文件夹名称 + let name = basename(path); + // 添加分类 + let classification = add(null, name, null, false); + if (classification) { + // 读取文件夹下的内容 + let files = readdirSync(path); + // 组装路径 + let fileList = []; + for (let file of files) { + fileList.push(join(path, file)); + } + // 返回信息 + resultList.push({ + classification, + fileList, + }); + } + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } + } + return resultList; +} + +/** + * 获取项目显示菜单 + * @param classification + * @returns + */ +function getItemShowOnly(classification: Classification) { + // 是否拥有子级 + let hasChild = hasChildClassification(classification.id); + // 菜单 + let submenus: any = [ + new MenuItem({ + label: global.language.all, + icon: + classification.data.itemShowOnly === "default" && !hasChild + ? getDot() + : null, + click: () => { + updateItemShowOnly(classification, "default"); + }, + }), + new MenuItem({ + label: global.language.showOnlyFiles, + icon: + classification.data.itemShowOnly === "file" && !hasChild + ? getDot() + : null, + click: () => { + updateItemShowOnly(classification, "file"); + }, + }), + new MenuItem({ + label: global.language.showOnlyFolders, + icon: + classification.data.itemShowOnly === "folder" && !hasChild + ? getDot() + : null, + click: () => { + updateItemShowOnly(classification, "folder"); + }, + }), + ]; + return new MenuItem({ + label: global.language.show, + submenu: submenus, + }); +} + +/** + * 修改项目显示 + * @param classification + * @param iconSize + */ +function updateItemShowOnly( + classification: Classification, + showOnly: "default" | "file" | "folder" +) { + let resultList = []; + // 尝试获取子级分类 + let childList = list(classification.id); + let idList = []; + // 如果有子级分类的话,连同子级分类一起修改 + if (childList && childList.length > 0) { + idList.push(...childList.map((c) => c.id)); + } + idList.push(classification.id); + // 修改 + for (const id of idList) { + // 查询分类 + let classification = selectById(id); + if (classification) { + classification.data.itemShowOnly = showOnly; + if (updateData(classification.id, classification.data)) { + resultList.push({ + id, + showOnly, + }); + } + } + } + // 通知页面 + sendToWebContent("mainWindow", "onUpdateItemShowOnly", resultList); +} + +/** + * 将排序为打开次数的分类修改为默认排序 + */ +function updateItemOpenNumberSortToDefualt() { + let resultList = []; + // 查询分类 + let classificationList = list(); + // 筛选出来排序是打开次数的分类 + let filterList = classificationList.filter( + (c) => c.data.itemSort === "openNumber" && (c.type === 0 || c.type === 1) + ); + // 修改 + for (const classification of filterList) { + classification.data.itemSort = "default"; + if (updateData(classification.id, classification.data)) { + resultList.push(classification.id); + } + } + // 通知页面 + sendToWebContent( + "mainWindow", + "onUpdateItemOpenNumberSortToDefualt", + resultList + ); +} + +/** + * 更新聚合分类 + * @param id + * @param sort + * @param itemCount + */ +function updateAggregate( + id: number, + sort: "default" | "initial" | "openNumber" | "lastOpen", + itemCount: number +) { + let classification = selectById(id); + if (classification) { + classification.type = 2; + classification.data.itemSort = sort; + classification.data.aggregateItemCount = itemCount; + let res = update(classification); + if (res) { + deleteByClassificationId(id); + } + return res; + } + return false; +} + +/** + * 更新排除搜索 + * @param id + * @param value + */ +function updateExcludeSearch(id: number, value: boolean) { + // 查询分类 + let classification = selectById(id); + if (classification) { + classification.data.excludeSearch = value; + updateData(id, classification.data); + } +} + +export { + createAddEditWindow, + createSetIconWindow, + createAssociateFolderWindow, + createAggregateWindow, + setAssociateFolder, + addAssociateFolderWatcher, + initAssociateFolder, + deleteAssociateFolderWatcher, + getItemSortMenu, + getItemLayoutMenu, + getItemColumnNumber, + getItemIconSize, + addClassificationByDirectory, + getItemShowOnly, + updateItemOpenNumberSortToDefualt, + updateAggregate, + updateExcludeSearch, +}; diff --git a/electron/main/classification/ipcEvent.ts b/electron/main/classification/ipcEvent.ts new file mode 100644 index 0000000..1f6d006 --- /dev/null +++ b/electron/main/classification/ipcEvent.ts @@ -0,0 +1,336 @@ +import { Menu, MenuItem, ipcMain, dialog } from "electron"; +import { Classification } from "../../../types/classification"; +import { + createAddEditWindow, + createAssociateFolderWindow, + createSetIconWindow, + getItemLayoutMenu, + getItemSortMenu, + getItemColumnNumber, + setAssociateFolder, + getItemIconSize, + addClassificationByDirectory, + getItemShowOnly, + createAggregateWindow, + updateAggregate, + updateExcludeSearch, +} from "./index"; +import { + add, + del, + list, + selectById, + update, + updateOrder, + updateIcon, + hasChildClassification, + batchUpdateFixed, +} from "./data"; +import { setShortcutKey } from "../setting"; +import { closeWindow, getDot, sendToWebContent } from "../commons/index"; + +export default function () { + // 获取分类列表 + ipcMain.on("getClassificationList", (event) => { + event.returnValue = list(null); + }); + // 根据ID查询分类 + ipcMain.on("getClassificationById", (event, args) => { + event.returnValue = selectById(args.id); + }); + // 添加分类 + ipcMain.on("addClassification", (event, args) => { + let classification = add( + args.parentId, + args.name, + args.shortcutKey, + args.globalShortcutKey + ); + setShortcutKey(); + event.returnValue = classification; + }); + // 更新分类 + ipcMain.on("updateClassification", (event, args) => { + let res = update(args); + setShortcutKey(); + event.returnValue = res; + }); + // 更新序号 + ipcMain.on("updateClassificationOrder", (event, args) => { + event.returnValue = updateOrder(args.fromId, args.toId, args.parentId); + }); + // 更新图标 + ipcMain.on("updateClassificationIcon", (event, args) => { + event.returnValue = updateIcon(args.id, args.icon); + }); + // 显示新增/修改窗口 + ipcMain.on("showClassificationAddEditWindow", () => { + if (global.classificationAddEditWindow) { + global.classificationAddEditWindow.show(); + } + }); + // 关闭新增/修改窗口 + ipcMain.on("closeClassificationAddEditWindow", () => { + closeWindow(global.classificationAddEditWindow); + }); + // 显示设置图标窗口 + ipcMain.on("showClassificationSetIconWindow", () => { + if (global.classificationSetIconWindow) { + global.classificationSetIconWindow.show(); + } + }); + // 关闭设置图标窗口 + ipcMain.on("closeClassificationSetIconWindow", () => { + closeWindow(global.classificationSetIconWindow); + }); + // 右键菜单 + ipcMain.on("showClassificationRightMenu", (event, args) => { + // 锁定/解锁分类 + let lockClassification: boolean = args.lockClassification; + // 分类 + let classification: Classification | null = args.classification; + // 菜单 + let menuList: Array = []; + // 组装菜单 + if (!classification) { + menuList.push( + new MenuItem({ + label: global.language.newClassification, + click: () => { + // 创建窗口 + createAddEditWindow(null, null); + }, + }), + new MenuItem({ type: "separator" }), + new MenuItem({ + label: !lockClassification + ? global.language.lockClassification + : global.language.unlockClassification, + click: () => { + sendToWebContent("mainWindow", "onLockClassification", []); + }, + }) + ); + } else { + if (!classification.parentId && classification.type === 0) { + menuList.push( + new MenuItem({ + label: global.language.newSubclassification, + click: () => { + // 创建窗口 + createAddEditWindow(null, classification.id); + }, + }), + new MenuItem({ type: "separator" }) + ); + } + menuList.push( + new MenuItem({ + label: global.language.fixedClassification, + icon: classification.data.fixed ? getDot() : null, + click: () => { + batchUpdateFixed( + classification.data.fixed ? null : classification.id + ); + sendToWebContent( + "mainWindow", + "onUpdateClassificationFixed", + classification.data.fixed ? null : classification.id + ); + }, + }) + ); + if (classification.type === 0 || classification.type === 1) { + menuList.push( + new MenuItem({ + label: global.language.excludeSearch, + icon: classification.data.excludeSearch ? getDot() : null, + click: () => { + updateExcludeSearch( + classification.id, + !classification.data.excludeSearch + ); + sendToWebContent( + "mainWindow", + "onUpdateClassificationExcludeSearch", + { + id: classification.id, + value: !classification.data.excludeSearch, + } + ); + }, + }) + ); + } + menuList.push(new MenuItem({ type: "separator" })); + menuList.push( + new MenuItem({ + label: global.language.setIcon, + click: () => { + // 创建窗口 + createSetIconWindow(classification.id); + }, + }), + new MenuItem({ + label: global.language.deleteIcon, + click: () => { + let res = updateIcon(classification.id, null); + if (res) { + sendToWebContent("mainWindow", "onUpdateClassificationIcon", { + id: classification.id, + icon: null, + }); + } + }, + }) + ); + // 子分类、没有子分类的父级分类可以显示 + if ( + classification.parentId || + (!classification.parentId && !hasChildClassification(classification.id)) + ) { + menuList.push(new MenuItem({ type: "separator" })); + if (classification.type === 0 || classification.type === 1) { + menuList.push( + new MenuItem({ + label: global.language.associateFolder, + click: () => { + // 创建窗口 + createAssociateFolderWindow(classification.id); + }, + }) + ); + } + if (classification.type === 0 || classification.type === 2) { + menuList.push( + new MenuItem({ + label: global.language.aggregateClassification, + click: () => { + // 创建窗口 + createAggregateWindow(classification.id); + }, + }) + ); + } + } + // 分割线 + menuList.push(new MenuItem({ type: "separator" })); + if (classification.type !== 2) { + // 排序 + menuList.push(getItemSortMenu(classification)); + } + // 布局 + menuList.push(getItemLayoutMenu(classification)); + // 列数 + if ( + !hasChildClassification(classification.id) && + (classification.data.itemLayout === "list" || + (global.setting.item.layout === "list" && + classification.data.itemLayout === "default")) + ) { + // 只有子级分类或没有子级分类的父级分类并且布局是列表的才显示列数 + menuList.push(getItemColumnNumber(classification)); + } + // 图标 + menuList.push(getItemIconSize(classification)); + // 显示 + menuList.push(getItemShowOnly(classification)); + // 编辑/删除 + menuList.push( + new MenuItem({ type: "separator" }), + new MenuItem({ + label: global.language.edit, + click: () => { + // 创建窗口 + createAddEditWindow(classification.id, null); + }, + }), + new MenuItem({ + label: global.language.delete, + click: () => { + let res = dialog.showMessageBoxSync(global.mainWindow, { + message: global.language.deleteClassificationPrompt, + buttons: [global.language.ok, global.language.cancel], + type: "question", + noLink: true, + cancelId: 1, + }); + if (res === 0) { + // 删除数据 + if (del(classification.id)) { + // 快捷键 + setShortcutKey(); + // 通知前端删除数据 + sendToWebContent( + "mainWindow", + "onDeleteClassification", + classification.id + ); + } + } + }, + }) + ); + } + // 载入菜单 + let menu = Menu.buildFromTemplate(menuList); + // 菜单显示 + menu.on("menu-will-show", () => { + global.classificationRightMenu = true; + }); + // 菜单关闭 + menu.on("menu-will-close", () => { + global.classificationRightMenu = false; + }); + // 显示 + menu.popup(); + }); + // 显示关联文件夹窗口 + ipcMain.on("showClassificationAssociateFolderWindow", () => { + if (global.classificationAssociateFolderWindow) { + global.classificationAssociateFolderWindow.show(); + } + }); + // 关闭关联文件夹窗口 + ipcMain.on("closeClassificationAssociateFolderWindow", () => { + closeWindow(global.classificationAssociateFolderWindow); + }); + // 设置关联文件夹 + ipcMain.on("setClassificationAssociateFolder", (event, args) => { + // 分类ID + let id: number = args.id; + // 文件夹路径 + let dir: string | null = args.dir; + if (!dir || dir.trim() === "") { + dir = null; + } + // 隐藏项 + let hiddenItems: string | null = args.hiddenItems; + // 设置 + event.returnValue = setAssociateFolder(id, dir, hiddenItems); + }); + // 是否拥有子分类 + ipcMain.on("hasChildClassification", (event, args) => { + event.returnValue = hasChildClassification(args); + }); + // 根据文件夹创建分类 + ipcMain.on("addClassificationByDirectory", (event, args) => { + let res = addClassificationByDirectory(args); + // 通知页面 + sendToWebContent("mainWindow", "onAddClassificationByDirectory", res); + }); + // 显示聚合分类窗口 + ipcMain.on("showClassificationAggregateWindow", () => { + if (global.classificationAggregateWindow) { + global.classificationAggregateWindow.show(); + } + }); + // 关闭聚合分类窗口 + ipcMain.on("closeClassificationAggregateWindow", () => { + closeWindow(global.classificationAggregateWindow); + }); + // 更新聚合分类 + ipcMain.on("updateClassificationAggregate", (event, args) => { + event.returnValue = updateAggregate(args.id, args.sort, args.itemCount); + }); +} diff --git a/electron/main/commons/cacheData.ts b/electron/main/commons/cacheData.ts new file mode 100644 index 0000000..a1e768f --- /dev/null +++ b/electron/main/commons/cacheData.ts @@ -0,0 +1,12 @@ +import Store from "electron-store"; +import { getUserDataPath } from "."; + +const cacheStore = new Store({ + name: "Cache", + clearInvalidConfig: true, + cwd: getUserDataPath(), +}); + +export default { + cacheStore, +}; diff --git a/electron/main/commons/index.ts b/electron/main/commons/index.ts new file mode 100644 index 0000000..75f208c --- /dev/null +++ b/electron/main/commons/index.ts @@ -0,0 +1,481 @@ +import { Result } from "../../../types/common"; +import { resolve, dirname, relative, join } from "node:path"; +import { mkdirSync, existsSync } from "node:fs"; +import mime from "mime"; +import retry from "retry"; +import request from "request"; +import * as cheerio from "cheerio"; +import { isAbsolutePath } from "../../../commons/utils/common"; +import { BrowserWindow, app, dialog, nativeImage, nativeTheme } from "electron"; +import { getRandomUserAgent, iconExts } from "../../commons/utils"; +import URI from "urijs"; +import { hideMainWindow } from "../main"; +import { hideQuickSearchWindow } from "../search"; + +/** + * 获取代理 + */ +function getProxy() { + if ( + global.setting.network.useProxy && + global.setting.network.proxy.address && + global.setting.network.proxy.address.trim() !== "" + ) { + let uri = new URI(global.setting.network.proxy.address); + if (uri.protocol() && uri.protocol().trim() !== "") { + let address = uri.protocol().toLowerCase() + "://"; + if ( + global.setting.network.proxy.username && + global.setting.network.proxy.username.trim() !== "" && + global.setting.network.proxy.password && + global.setting.network.proxy.password.trim() !== "" + ) { + address += + global.setting.network.proxy.username + + ":" + + global.setting.network.proxy.password + + "@"; + } + address += uri.hostname() + ":" + uri.port(); + return address; + } + } + return null; +} + +/** + * 下载图片 + * @param windowName + * @param url + */ +function downloadImage(windowName: string, url: string) { + let result: Result = { + status: false, + message: global.language.downloadImagePrompt1, + icon: null, + name: null, + }; + // 重试 + const operation = retry.operation({ + retries: 5, // 最多重试 5 次 + factor: 1, // 每次重试之间的时间间隔加倍 + minTimeout: 1000, // 第一次重试之前等待的时间 + maxTimeout: 5000, // 最长等待时间 + }); + operation.attempt((currentAttempt) => { + // 下载图片 + request( + { + uri: url, + proxy: getProxy(), + encoding: null, + timeout: 5000, + headers: { + "User-Agent": getRandomUserAgent(), + }, + }, + function (error, response, body) { + if (operation.retry(error)) { + return; + } + if ( + !error && + response.statusCode >= 200 && + response.statusCode <= 299 + ) { + if (response.headers && response.headers["content-type"]) { + let ext = mime.getExtension(response.headers["content-type"]); + if (iconExts.includes(ext)) { + let buffer = Buffer.from(body); + result.icon = + "data:" + + mime.getType(response.headers["content-type"]) + + ";base64," + + buffer.toString("base64"); + result.status = true; + result.message = null; + } else { + result.icon = null; + result.status = false; + result.message = global.language.downloadImagePrompt2; + } + } + } + // window + sendToWebContent(windowName, "onDownloadImage", result); + } + ); + }); +} + +/** + * 获取网址信息 + * @param windowName + * @param url + * @param redirect + */ +function getURLInfo(windowName: string, url: string, redirect: boolean) { + let result: Result = { + status: false, + message: null, + name: null, + icon: null, + }; + // 重试 + const operation = retry.operation({ + retries: 5, // 最多重试 5 次 + factor: 1, // 每次重试之间的时间间隔加倍 + minTimeout: 1000, // 第一次重试之前等待的时间 + maxTimeout: 5000, // 最长等待时间 + }); + try { + // 发起请求 + operation.attempt((currentAttempt) => { + request( + { + uri: url, + proxy: getProxy(), + timeout: 5000, + headers: { + "User-Agent": getRandomUserAgent(), + }, + }, + function (error, response, body) { + if (operation.retry(error)) { + return; + } + if ( + !error && + response.statusCode >= 200 && + response.statusCode <= 299 + ) { + const $ = cheerio.load(body); + // 是否有跳转标签 + let refresh = $("meta[http-equiv='refresh']"); + // content + let content = refresh.attr("content"); + if (content && content.trim() !== "" && redirect) { + // 如果有跳转标签的话,就请求新网址并获取网址信息 + let contentSplit = content.split(";"); + let urlProperty = contentSplit[contentSplit.length - 1]; + let urlPropertySplit = urlProperty.split("="); + let newURL = urlPropertySplit[urlPropertySplit.length - 1]; + // 重新获取新网址信息 + getURLInfo(windowName, newURL, false); + } else { + // 解析HTML并返回信息 + analysisHTML(windowName, url, body); + } + } else { + sendUrlInfo(windowName, result); + } + } + ); + }); + } catch (e) { + sendUrlInfo(windowName, result); + } +} + +/** + * 解析HTML并返回信息 + * @param windowName + * @param url + * @param data + */ +function analysisHTML(windowName: string, url: string, data: string) { + let result: Result = { + status: false, + message: null, + name: null, + icon: null, + }; + try { + // 解析HTML + let $ = cheerio.load(data); + // 获取标题 + result.name = $("head").find("title").text(); + // 获取图标URL + let iconURL: string | null = null; + let icon = $("link[rel='icon']"); + let href = icon.attr("href"); + if (href && href.trim() !== "") { + iconURL = href; + } else { + let shortcutIcon = $("link[rel='shortcut icon']"); + let shortcutIconhref = shortcutIcon.attr("href"); + if (shortcutIconhref && shortcutIconhref.trim() !== "") { + iconURL = shortcutIconhref; + } else { + iconURL = "/favicon.ico"; + } + } + if (iconURL) { + // 去掉类似//www.baidu.com/favicon.ico这样域名的”//“字符 + if (iconURL.indexOf("//") === 0) { + iconURL = "http:" + iconURL; + } + // 无协议头,使用当前网址域名 + if (iconURL.indexOf("http://") < 0 && iconURL.indexOf("https://") < 0) { + iconURL = url + (iconURL.indexOf("//") === 0 ? "" : "//") + iconURL; + } + // 重试 + const operation = retry.operation({ + retries: 5, // 最多重试 5 次 + factor: 1, // 每次重试之间的时间间隔加倍 + minTimeout: 1000, // 第一次重试之前等待的时间 + maxTimeout: 5000, // 最长等待时间 + }); + operation.attempt((currentAttempt) => { + // 下载图标 + request( + { + uri: iconURL, + proxy: getProxy(), + encoding: null, + timeout: 5000, + headers: { + "User-Agent": getRandomUserAgent(), + }, + }, + function (error, response, body) { + if (operation.retry(error)) { + return; + } + if ( + !error && + response.statusCode >= 200 && + response.statusCode <= 299 + ) { + let buffer = Buffer.from(body); + result.icon = + "data:" + + mime.getType(iconURL) + + ";base64," + + buffer.toString("base64"); + result.status = true; + sendUrlInfo(windowName, result); + } else { + sendUrlInfo(windowName, result); + } + } + ); + }); + } else { + sendUrlInfo(windowName, result); + } + } catch (e) { + sendUrlInfo(windowName, result); + } +} + +/** + * 发送网址信息 + * @param result + */ +function sendUrlInfo(windowName: string, result: Result) { + sendToWebContent(windowName, "onGetURLInfo", result); +} + +/** + * 路径转换 + * @param path + */ +function convertPath(path: string) { + let appPath = + process.env.NODE_ENV === "development" + ? resolve(".") + : dirname(process.execPath); + if (isAbsolutePath(path)) { + return relative(appPath, path); + } else { + return resolve(appPath, path); + } +} + +/** + * 发送IPC到所有窗口 + * @param channel + * @param data + */ +function sendAllWindows(channel: string, data: any) { + for (const window of BrowserWindow.getAllWindows()) { + if (!window.isDestroyed()) { + window.webContents.send(channel, data); + } + } +} +/** + * 获取窗口实例 + * @param name + */ +function getWindow(name: string): BrowserWindow | null { + let window: BrowserWindow | null = null; + if (name === "mainWindow") { + window = global.mainWindow; + } else if (name === "quickSearchWindow") { + window = global.quickSearchWindow; + } else if (name === "settingWindow") { + window = global.settingWindow; + } else if (name === "classificationAddEditWindow") { + window = global.classificationAddEditWindow; + } else if (name === "classificationSetIconWindow") { + window = global.classificationSetIconWindow; + } else if (name === "classificationAssociateFolderWindow") { + window = global.classificationAssociateFolderWindow; + } else if (name === "classificationAggregateWindow") { + window = global.classificationAggregateWindow; + } else if (name === "itemAddEditWindow") { + window = global.itemAddEditWindow; + } else if (name === "itemNetworkIconWindow") { + window = global.itemNetworkIconWindow; + } else if (name === "itemSVGIconWindow") { + window = global.itemSVGIconWindow; + } else if (name === "aboutWindow") { + window = global.aboutWindow; + } else if (name === "backupRestoreDataWindow") { + window = global.backupRestoreDataWindow; + } + if (window && !window.isDestroyed()) { + return window; + } else { + return null; + } +} + +/** + * 关闭窗口 + * @param window + */ +function closeWindow(window: BrowserWindow | null) { + if (window && !window.isDestroyed() && window.isVisible()) { + window.close(); + } +} + +/** + * 获取图标点 + */ +function getDot() { + return nativeImage.createFromDataURL( + !nativeTheme.shouldUseDarkColors + ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERJREFUOE9jZKAQMFKon2HUAAa8YWDDwMBQCQ3kdgYGhiPYAhxfIG5lYGDwgmraxsDA4E13Ayj2AlFpbDQh4U9IRAUiAEXYCBFBtkaAAAAAAElFTkSuQmCC" + : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAEtJREFUOE9jZKAQMFKon2HUAAbcYfD//38bBgaGSmggtzMyMh7BFuA4A/H///9bGRgYvKCatjEyMnrT3QDKvEBsAhtNSHgSErGBCAD0gBQREV/HsgAAAABJRU5ErkJggg==" + ); +} + +/** + * 发送消息到页面 + * @param windowName + * @param listener + * @param params + */ +function sendToWebContent(windowName: string, listener: string, params: any) { + // 获取窗口 + let window = getWindow(windowName); + if (window && !window.isDestroyed()) { + window.webContents.send(listener, params); + } +} + +/** + * 关闭所有子进程 + */ +function closeAllChildProcess() { + if (global.childProcessMap) { + global.childProcessMap.forEach((value, key) => { + try { + value.utilityProcess.kill(); + } catch (e) {} + try { + value.port1.close(); + } catch (e) {} + try { + value.port2.close(); + } catch (e) {} + }); + global.childProcessMap.clear(); + } +} + +/** + * 打开后隐藏窗口 + * @param type + */ +function openAfterHideWindow(type: string) { + if (type === "main" || type === "search") { + if (global.setting.item.openAfterHideMainInterface) { + hideMainWindow(); + } + } else if (type === "quickSearch") { + if (global.setting.quickSearch.openAfterHideQuickSearchWindow) { + hideQuickSearchWindow(); + } + } +} + +/** + * 错误提示框 + * @param windowName + * @param message + */ +function showErrorMessageBox(windowName: string, message: string) { + dialog.showMessageBoxSync(getWindow(windowName), { + message: message, + buttons: [global.language.ok], + type: "error", + noLink: true, + }); +} + +/** + * 重启 + */ +function relaunch() { + app.relaunch(); + app.quit(); +} + +// 数据存储目录 +function getUserDataPath() { + let userDataPath = app.getPath("userData"); + if ( + process.env.NODE_ENV !== "development" && + import.meta.env.VITE_INSTALL === "false" + ) { + userDataPath = join(dirname(process.execPath), "data"); + if (!existsSync(userDataPath)) { + mkdirSync(userDataPath, { recursive: true }); + } + } + return userDataPath; +} + +/** + * 获取主背景颜色 + */ +function getMainBackgorunColor() { + let backgroundColor = global.setting.appearance.theme.mainBackgroundColor; + if (backgroundColor.length === 9) { + return backgroundColor.substring(0, 7); + } else { + return backgroundColor; + } +} + +export { + downloadImage, + getURLInfo, + convertPath, + sendAllWindows, + closeWindow, + getDot, + getWindow, + sendToWebContent, + closeAllChildProcess, + openAfterHideWindow, + showErrorMessageBox, + relaunch, + getUserDataPath, + getMainBackgorunColor, +}; diff --git a/electron/main/commons/ipcEvent.ts b/electron/main/commons/ipcEvent.ts new file mode 100644 index 0000000..ee38d27 --- /dev/null +++ b/electron/main/commons/ipcEvent.ts @@ -0,0 +1,166 @@ +import { app, dialog, ipcMain, OpenDialogSyncOptions, shell } from "electron"; +import { getFileIcon } from "../../commons/utils"; +import mime from "mime"; +import { ShortcutInfo } from "../../../types/common"; +import { + convertPath, + downloadImage, + getURLInfo, + sendToWebContent, + showErrorMessageBox, +} from "."; +import { statSync } from "node:fs"; +import { getWindow } from "../commons/index"; + +export default function () { + // emit + ipcMain.on("emit", (event, args) => { + sendToWebContent(args.windowName, args.listener, args.paylod); + }); + // 错误提示框 + ipcMain.on("showErrorMessageBox", (event, args) => { + showErrorMessageBox(args.windowName, args.message); + }); + // 信息提示框 + ipcMain.on("showInfoMessageBox", (event, args) => { + dialog.showMessageBoxSync(getWindow(args.windowName), { + message: args.message, + buttons: [global.language.ok], + type: "info", + noLink: true, + }); + }); + // 对话框 + ipcMain.on("showConfirmBox", (event, args) => { + // 弹出对话框 + let res = dialog.showMessageBoxSync(getWindow(args.windowName), { + message: args.message, + buttons: [global.language.ok, global.language.cancel], + type: "question", + noLink: true, + cancelId: 1, + }); + event.returnValue = res === 0; + }); + // 选择文件 + ipcMain.on("selectFile", (event, args) => { + // 窗口名称 + let windowName: string = args.windowName; + // 是否寻找目标 + let target: boolean = args.target; + // 默认路径 + let defaultPath: string | null = args.defaultPath; + // 参数 + let options: OpenDialogSyncOptions = {}; + if (defaultPath && defaultPath.trim() !== "") { + options.defaultPath = defaultPath; + } else { + options.defaultPath = app.getPath("desktop"); + } + let filePathList = dialog.showOpenDialogSync( + getWindow(windowName), + options + ); + if (filePathList && filePathList.length > 0) { + let filePath = filePathList[0]; + if (target) { + if (mime.getType(filePath) === "application/x-ms-shortcut") { + // 获取真实文件路径和参数 + let shortcutInfo: ShortcutInfo | null = + global.addon.getShortcutFileInfo(filePath); + if (shortcutInfo && shortcutInfo.target) { + // 路径 + filePath = shortcutInfo.target; + } + } + } + event.returnValue = filePath; + } else { + event.returnValue = null; + } + }); + // 选择文件夹 + ipcMain.on("selectDirectory", (event, args) => { + // 窗口名称 + let windowName: string = args.windowName; + // 默认路径 + let defaultPath: string | null = args.defaultPath; + // 参数 + let options: OpenDialogSyncOptions = { + properties: ["openDirectory"], + }; + if (defaultPath && defaultPath.trim() !== "") { + options.defaultPath = defaultPath; + } else { + options.defaultPath = app.getPath("desktop"); + } + let dirPathList = dialog.showOpenDialogSync(getWindow(windowName), options); + if (dirPathList && dirPathList.length > 0) { + let dirPath = dirPathList[0]; + event.returnValue = dirPath; + } else { + event.returnValue = null; + } + }); + // 获取图标 + ipcMain.on("getFileIcon", (event, args) => { + // 窗口名称 + let windowName: string = args.windowName; + // 路径 + let filePath: string | null = args.path; + if (filePath) { + // 图标 + let icon: string | null = getFileIcon(filePath); + // 发送到页面 + sendToWebContent(windowName, "onGetFileIcon", icon); + } + }); + // 下载图片 + ipcMain.on("downloadImage", (event, args) => { + downloadImage(args.windowName, args.url); + }); + // 获取网址信息 + ipcMain.on("getURLInfo", (event, args) => { + getURLInfo(args.windowName, args.url, true); + }); + // 转换路径 + ipcMain.on("convertPath", (event, args) => { + event.returnValue = convertPath(args.path); + }); + // 路径是否存在 + ipcMain.on("pathExist", (event, args) => { + try { + statSync(args.path); + event.returnValue = true; + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + event.returnValue = false; + } + }); + // 是否是文件 + ipcMain.on("isFile", (event, args) => { + try { + const stats = statSync(args.path); + event.returnValue = stats.isFile(); + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + event.returnValue = true; + } + }); + // 打开URL + ipcMain.on("openURL", (event, args) => { + shell.openExternal(args); + }); + // 获取版本 + ipcMain.on("getVersion", (event, args) => { + event.returnValue = app.getVersion(); + }); + // 退出 + ipcMain.on("exit", () => { + app.quit(); + }); +} diff --git a/electron/main/data/data.ts b/electron/main/data/data.ts new file mode 100644 index 0000000..f5ced59 --- /dev/null +++ b/electron/main/data/data.ts @@ -0,0 +1,486 @@ +import Database from "better-sqlite3-multiple-ciphers"; +import { + getCustomDataSqlite3, + getDataSqlite3, +} from "../../commons/betterSqlite3"; +import Store from "electron-store"; +import { extname, parse } from "node:path"; +import { + newClassification, + newClassificationData, + newItem, + newItemData, +} from "../../../commons/utils/common"; +import { add as addClassification } from "../classification/data"; +import { add as addItem } from "../item/data"; +import { getSetting } from "../../../commons/utils/setting"; +import { add as addSetting } from "../setting/data"; + +/** + * 恢复数据 + * @param filePath + */ +function restore(filePath: string) { + // 获取文件后缀 + let ext = extname(filePath); + if (ext.toLowerCase() === ".db") { + // 数据库文件 + return databaseRestore(filePath); + } else if (ext.toLowerCase() === ".json") { + // 旧版JSON + return jsonRestore(filePath); + } + return false; +} + +/** + * 数据库恢复数据 + * @param filePath + * @returns + */ +function databaseRestore(filePath: string) { + try { + // 获取导入DB + let importDB = getCustomDataSqlite3(filePath); + // 查询分类数据 + let classificationList = importDB + .prepare("SELECT * FROM classification") + .all(); + // 查询项目数据 + let itemList = importDB.prepare("SELECT * FROM item").all(); + // 查询设置数据 + let setting = importDB.prepare("SELECT * FROM setting").all(); + // 查询ID索引表数据 + let sequence = importDB.prepare("SELECT * FROM sqlite_sequence").all(); + // 获取当前DB + let db = getDataSqlite3(); + // 开启事务 + db.transaction(() => { + // 清空并导入数据 + clearAndInsert(db, "classification", classificationList); + clearAndInsert(db, "item", itemList); + clearAndInsert(db, "setting", setting); + clearAndInsert(db, "sqlite_sequence", sequence); + })(); + return true; + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } + return false; +} + +/** + * 清空并插入数据 + * @param tableName + * @param list + */ +function clearAndInsert( + db: Database.Database, + tableName: string, + list: Array +) { + // 清空数据 + db.prepare(`DELETE FROM ${tableName}`).run(); + // 插入数据 + list.forEach((row) => { + const keys = Object.keys(row); + const columns = keys.map((key) => `\`${key}\``); + const placeholders = keys.map(() => "?").join(","); + const values = keys.map((key) => row[key]); + db.prepare( + `INSERT INTO ${tableName} (${columns.join(",")}) VALUES (${placeholders})` + ).run(values); + }); +} + +/** + * JSON恢复数据 + * @param filePath + * @returns + */ +function jsonRestore(filePath: string) { + try { + // 获取当前DB + let db = getDataSqlite3(); + // 解析路径 + let pathParse = parse(filePath); + // 读取JSON + const store = new Store({ + name: pathParse.name, + cwd: pathParse.dir, + fileExtension: pathParse.ext.replace(".", ""), + encryptionKey: "0b52eb58-4c0f-5ff1-b062-031546a8d269", + }); + // 开启事务 + db.transaction(() => { + // 图标数据 + let iconData = store.get("iconData") as Array; + // 清空数据 + db.prepare(`DELETE FROM classification`).run(); + db.prepare(`DELETE FROM item`).run(); + db.prepare(`DELETE FROM setting`).run(); + db.prepare(`DELETE FROM sqlite_sequence`).run(); + // 导入数据 + let list = store.get("list") as Array; + if (list && list.length > 0) { + for (let i = 0; i < list.length; i++) { + let parent = list[i]; + // 添加分类 + let classification = jsonAddClassification(parent, null); + if (classification) { + if (parent.childList && parent.childList.length > 0) { + // 子分类 + for (let j = 0; j < parent.childList.length; j++) { + const child = parent.childList[j]; + let childClassification = jsonAddClassification( + child, + classification.id + ); + if ( + childClassification && + child.itemList && + child.itemList.length > 0 + ) { + // 项目 + for (let k = 0; k < child.itemList.length; k++) { + jsonAddItem( + child.itemList[k], + child, + childClassification.id, + iconData + ); + } + } + } + } else { + if (parent.itemList && parent.itemList.length > 0) { + // 项目 + for (let k = 0; k < parent.itemList.length; k++) { + jsonAddItem( + parent.itemList[k], + parent, + classification.id, + iconData + ); + } + } + } + } + } + } + // 设置 + if (store.get("setting")) { + jsonAddSetting(store.get("setting")); + } + })(); + return true; + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } + return false; +} + +/** + * 添加分类 + * @param oldClassification + * @param parentId + * @returns + */ +function jsonAddClassification( + oldClassification: any, + parentId: number | null +) { + // 排序 + let itemSort: "default" | "initial" | "openNumber" | "lastOpen" = "default"; + // 如果是聚合分类的话,获取聚合分类排序,否则就获取普通排序 + if ( + oldClassification.aggregateSort && + oldClassification.aggregateSort.trim() != "" && + (oldClassification.aggregateSort == "initial" || + oldClassification.aggregateSort == "openNumber" || + oldClassification.aggregateSort == "lastOpen") + ) { + // 聚合分类 + itemSort = oldClassification.aggregateSort; + } else if ( + oldClassification.sort == "initial" || + oldClassification.sort == "openNumber" || + oldClassification.sort == "lastOpen" + ) { + // 普通 + itemSort = oldClassification.sort; + } + let data = newClassificationData({ + icon: oldClassification.icon, + excludeSearch: oldClassification.excludeSearch, + itemLayout: + oldClassification.layout == "tile" || oldClassification.layout == "list" + ? oldClassification.layout + : "default", + itemSort: itemSort, + itemColumnNumber: oldClassification.columnNumber, + itemIconSize: oldClassification.iconSize, + itemShowOnly: + oldClassification.showOnly == "file" || + oldClassification.showOnly == "folder" + ? oldClassification.showOnly + : "default", + associateFolderHiddenItems: oldClassification.hiddenItem, + associateFolderPath: oldClassification.mapDirectory, + aggregateItemCount: oldClassification.aggregateItemNumber, + }); + // 类型 0:普通分类 1:关联文件夹 2:聚合分类 + let type = 0; + if ( + oldClassification.mapDirectory && + oldClassification.mapDirectory.trim() != "" + ) { + // 关联文件夹 + type = 1; + } else if ( + oldClassification.aggregateSort && + oldClassification.aggregateSort.trim() != "" + ) { + // 聚合分类 + type = 2; + } + let classification = newClassification({ + parentId, + name: oldClassification.name, + type, + data, + shortcutKey: oldClassification.shortcutKey, + globalShortcutKey: oldClassification.globalShortcutKey, + }); + return addClassification( + classification.parentId, + classification.name, + classification.shortcutKey, + classification.globalShortcutKey, + classification.data, + classification.type + ); +} + +/** + * 添加项目 + * @param oldItem + * @param oldClassification + * @param classificationId + * @param iconData + */ +function jsonAddItem( + oldItem: any, + oldClassification: any, + classificationId: number, + iconData: Array +) { + // 类型 + let type = oldItem.type; + if (type == 4) { + type = 5; + } else if (type == 5) { + type = 4; + } + // 多项目不导入 + if (type == 5) { + return null; + } + // 合并目标 + let target = oldItem.path; + if (oldItem.url && oldItem.url.trim() != "") { + // 网址 + target = oldItem.url; + } else if (oldItem.shell && oldItem.shell.trim() != "") { + // 系统 + target = oldItem.shell; + } + // 图标 + let icon = oldItem.icon; + if (iconData) { + for (let i = 0; i < iconData.length; i++) { + const data = iconData[i]; + if (oldClassification.parentId) { + if ( + data.classificationParentId == oldClassification.parentId && + data.classificationChildId == oldClassification.id && + data.itemId == oldItem.id && + data.icon && + data.icon.trim() != "" + ) { + icon = data.icon; + } + } else { + if ( + data.classificationParentId == oldClassification.id && + data.itemId == oldItem.id && + data.icon && + data.icon.trim() != "" + ) { + icon = data.icon; + } + } + } + } + let data = newItemData({ + startLocation: oldItem.startLocation, + target, + params: oldItem.params, + runAsAdmin: oldItem.admin, + icon, + htmlIcon: + !oldItem.htmlIcon || oldItem.htmlIcon.trim() == "" + ? null + : oldItem.htmlIcon, + remark: oldItem.remark, + iconBackgroundColor: oldItem.useAppxBackgroundColor, + fixedIcon: oldItem.notRefreshIcon, + openNumber: oldItem.openNumber, + lastOpen: oldItem.lastOpen, + quickSearchOpenNumber: oldItem.quickSearchOpenNumber, + quickSearchLastOpen: oldItem.quickSearchLastOpen, + }); + let item = newItem({ + classificationId, + name: oldItem.name, + type, + data, + shortcutKey: oldItem.shortcutKey, + globalShortcutKey: oldItem.globalShortcutKey, + }); + return addItem(item, false); +} + +/** + * 添加设置 + * @param oldSetting + */ +function jsonAddSetting(oldSetting: any) { + let setting = getSetting(null); + // 常规 + if (oldSetting.general) { + setting.general.startup = oldSetting.general.startup; + setting.general.startupTray = oldSetting.general.startupTray; + setting.general.showHideShortcutKey = + oldSetting.general.showHideShortcutKey; + setting.general.alwaysTop = oldSetting.general.alwaysTop; + setting.general.edgeAutoHide = oldSetting.general.edgeAutoHide; + setting.general.lockSize = oldSetting.general.lockSize; + setting.general.hideLoseFocus = oldSetting.general.hideLosingFocus; + setting.general.hideTray = oldSetting.general.hideTray; + setting.general.showHideMouseWheelClick = + oldSetting.general.showHideMouseWheelClick; + setting.general.fixedPosition = oldSetting.general.fixedPosition; + setting.general.alwaysCenter = oldSetting.general.alwaysCenter; + setting.general.showFollowMousePosition = + oldSetting.general.showFollowMousePosition; + setting.general.notDisturb = oldSetting.general.notDisturb; + setting.general.showHideDoubleClickTaskbar = + oldSetting.general.doubleClickTaskbar; + setting.general.delayDisplayMs = oldSetting.general.delayDisplayMS; + setting.general.delayHideMs = oldSetting.general.delayHidingMS; + setting.general.switchEnglish = oldSetting.general.switchEnglish; + if (oldSetting.item) { + setting.general.searchShowHideShortcutKey = + oldSetting.item.searchShortcutKey; + } + } + // 分类 + if (oldSetting.classification) { + setting.classification.width = oldSetting.classification.width; + setting.classification.layout = oldSetting.classification.layout; + setting.classification.mouseHover = oldSetting.classification.mouseHover; + setting.classification.mouseHoverMs = + oldSetting.classification.mouseHoverMS; + setting.classification.mouseWheel = oldSetting.classification.mouseWheel; + setting.classification.rememberSelectionState = + oldSetting.classification.rememberSelectionState; + setting.classification.nameAlign = oldSetting.classification.nameAlign; + setting.classification.mode = oldSetting.classification.mode; + setting.classification.autoSwitchClassification = + oldSetting.classification.autoSwitchClassification; + setting.classification.hideWindowCollapseSubClassification = + oldSetting.classification.hideWindowFoldChildClassification; + setting.classification.switchClassificationCollapseOtherSubClassification = + oldSetting.classification.switchClassificationCollapseOtherSubClassification; + } + // 项目 + if (oldSetting.item) { + setting.item.layout = oldSetting.item.layout; + setting.item.iconSize = oldSetting.item.iconSize; + setting.item.doubleClickOpen = oldSetting.item.doubleClickRunItem; + setting.item.openAfterHideMainInterface = + oldSetting.item.openAfterHideMainInterface; + setting.item.useItemOpen = oldSetting.item.useItemOpen; + setting.item.openNumber = oldSetting.item.openNumber; + setting.item.hideItemName = oldSetting.item.hideItemName; + setting.item.hideEllipsis = oldSetting.item.hideEllipsis; + setting.item.itemNameRowCount = oldSetting.item.itemNameRowCount; + setting.item.width = oldSetting.item.width; + setting.item.columnNumber = oldSetting.item.columnNumber; + setting.item.checkInvalidItem = oldSetting.item.checkInvalidItem; + setting.item.fontSize = oldSetting.item.fontSize; + setting.item.fontWeight = oldSetting.item.fontWeight; + setting.item.fontLineHeight = oldSetting.item.fontLineHeight; + } + // 子分类 + if (oldSetting.subClassification) { + setting.subClassification.itemAreaNameFontSize = + oldSetting.subClassification.itemAreaNameFontSize; + setting.subClassification.itemAreaNameFontWeight = + oldSetting.subClassification.itemAreaNameFontWeight; + setting.subClassification.itemAreaNameFontLineHeight = + oldSetting.subClassification.itemAreaNameFontLineHeight; + } + // 快速搜索 + if (oldSetting.quickSearch) { + setting.quickSearch.enable = oldSetting.quickSearch.enable; + setting.quickSearch.showHideShortcutKey = + oldSetting.quickSearch.showHideShortcutKey; + setting.quickSearch.openShortcutKey = + oldSetting.quickSearch.openShortcutKey; + setting.quickSearch.hideLoseFocus = oldSetting.quickSearch.hideLosingFocus; + setting.quickSearch.openNow = oldSetting.quickSearch.openNow; + setting.quickSearch.showHistory = oldSetting.quickSearch.showHistory; + setting.quickSearch.showHistorySort = + oldSetting.quickSearch.showHistorySort; + setting.quickSearch.useItemOpen = oldSetting.quickSearch.useItemOpen; + setting.quickSearch.openAfterHideQuickSearchWindow = + oldSetting.quickSearch.openAfterHideQuickSearchWindow; + setting.quickSearch.matchConditionsRemark = + oldSetting.quickSearch.matchingConditionsRemark; + } + // 网络搜索 + if (oldSetting.webSearch) { + setting.webSearch.mode = oldSetting.webSearch.mode; + if (oldSetting.webSearch.searchSourceList) { + setting.webSearch.searchSourceList = []; + for (let i = 0; i < oldSetting.webSearch.searchSourceList.length; i++) { + const oldSearchSource = oldSetting.webSearch.searchSourceList[i]; + setting.webSearch.searchSourceList.push({ + id: oldSearchSource.id, + keyword: oldSearchSource.keyword, + name: oldSearchSource.name, + url: oldSearchSource.URL, + description: oldSearchSource.description, + }); + } + } + } + // 网络 + if (oldSetting.network) { + setting.network.useProxy = oldSetting.network.useProxy; + if (oldSetting.network.proxy) { + setting.network.proxy.address = oldSetting.network.proxy.address; + setting.network.proxy.username = oldSetting.network.proxy.username; + setting.network.proxy.password = oldSetting.network.proxy.password; + } + } + return addSetting(getSetting(setting)); +} + +export { restore }; diff --git a/electron/main/data/index.ts b/electron/main/data/index.ts new file mode 100644 index 0000000..08085ec --- /dev/null +++ b/electron/main/data/index.ts @@ -0,0 +1,71 @@ +import { BrowserWindow, shell } from "electron"; +import { closeWindow, getMainBackgorunColor } from "../commons"; +import { join } from "node:path"; +import { getDataSqlite3 } from "../../commons/betterSqlite3"; + +// 窗口 +let backupRestoreDataWindow: BrowserWindow | null = null; + +/** + * 备份/恢复数据窗口 + */ +function createBackupRestoreDataWindow() { + // 如果窗口存在先关闭窗口 + closeWindow(backupRestoreDataWindow); + // 创建窗口 + backupRestoreDataWindow = global.backupRestoreDataWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 108, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + backupRestoreDataWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + "Data/BackupRestore" + ); + } else { + backupRestoreDataWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/Data/BackupRestore", + }); + } + backupRestoreDataWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + backupRestoreDataWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + backupRestoreDataWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + backupRestoreDataWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 备份数据 + */ +function backupData(filePath: string) { + // 获取数据库 + let db = getDataSqlite3(); + // 备份数据 + return db.backup(filePath); +} + +export { createBackupRestoreDataWindow, backupData }; diff --git a/electron/main/data/ipcEvent.ts b/electron/main/data/ipcEvent.ts new file mode 100644 index 0000000..01450ec --- /dev/null +++ b/electron/main/data/ipcEvent.ts @@ -0,0 +1,75 @@ +import { dialog, ipcMain } from "electron"; +import { backupData, createBackupRestoreDataWindow } from "."; +import { closeWindow, relaunch, showErrorMessageBox } from "../commons"; +import { restore } from "./data"; + +export default function () { + // 创建备份/恢复数据窗口 + ipcMain.on("createBackupRestoreDataWindow", (event, args) => { + createBackupRestoreDataWindow(); + }); + // 显示备份/恢复数据窗口 + ipcMain.on("showBackupRestoreDataWindow", (event, args) => { + if (global.backupRestoreDataWindow) { + global.backupRestoreDataWindow.show(); + } + }); + // 关闭备份/恢复数据窗口 + ipcMain.on("closeBackupRestoreDataWindow", (event, args) => { + closeWindow(global.backupRestoreDataWindow); + }); + // 备份数据 + ipcMain.on("backupData", () => { + try { + let filePath = dialog.showSaveDialogSync(global.backupRestoreDataWindow, { + defaultPath: "Data", + filters: [{ name: "DB", extensions: ["db"] }], + }); + if (filePath && filePath.trim() !== "") { + backupData(filePath).finally(() => { + // 关闭备份/恢复窗口 + closeWindow(global.backupRestoreDataWindow); + }); + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } + }); + // 恢复数据 + ipcMain.on("restoreData", () => { + try { + let filePathList = dialog.showOpenDialogSync( + global.backupRestoreDataWindow, + { + filters: [{ name: "Data", extensions: ["db", "json"] }], + } + ); + if (filePathList && filePathList.length > 0) { + let filePath = filePathList[0]; + if (restore(filePath)) { + // 清空localStorage + global.mainWindow.webContents.session.clearStorageData({ + storages: ["localstorage"], + }); + // 重新启动程序 + relaunch(); + } else { + showErrorMessageBox( + "backupRestoreDataWindow", + global.language.restoreDataPrompt + ); + } + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + showErrorMessageBox( + "backupRestoreDataWindow", + global.language.restoreDataPrompt + ); + } + }); +} diff --git a/electron/main/index.ts b/electron/main/index.ts new file mode 100644 index 0000000..d55b408 --- /dev/null +++ b/electron/main/index.ts @@ -0,0 +1,159 @@ +import { app, BrowserWindow, dialog } from "electron"; +import { release } from "node:os"; +import { join, dirname } from "node:path"; +import indexIpcEvent from "./main/ipcEvent"; +import classificationIpcEvent from "./classification/ipcEvent"; +import { init as classificationDataInit } from "./classification/data"; +import { init as itemDataInit } from "./item/data"; +import { initSystemItem } from "./item/commons/data"; +import commonIpcEvent from "./commons/ipcEvent"; +import itemIpcEvent from "./item/ipcEvent"; +import settingIpcEvent from "./setting/ipcEvent"; +import { init as settingDataInit } from "./setting/data"; +import { setShortcutKey } from "./setting"; +import searchIpcEvent from "./search/ipcEvent"; +import { createMainWindow } from "./main"; +import { closeAllChildProcess } from "./commons"; +import { createQuickSearchWindow } from "./search"; +import { getLanguage } from "../../commons/data/languages"; +import aboutIpcEvent from "./about/ipcEvent"; +import dataIpcEvent from "./data/ipcEvent"; + +// 数据存储目录 +if ( + process.env.NODE_ENV !== "development" && + import.meta.env.VITE_INSTALL === "false" +) { + app.setPath("appData", join(dirname(process.execPath), "data")); + app.setPath("userData", join(dirname(process.execPath), "data")); +} + +process.env.DIST_ELECTRON = join(__dirname, ".."); +process.env.DIST = join(process.env.DIST_ELECTRON, "../dist"); +process.env.VITE_PUBLIC = process.env.VITE_DEV_SERVER_URL + ? join(process.env.DIST_ELECTRON, "../public") + : process.env.DIST; + +// Disable GPU Acceleration for Windows 7 +if (release().startsWith("6.1")) app.disableHardwareAcceleration(); + +// Set application name for Windows 10+ notifications +if (process.platform === "win32") app.setAppUserModelId(app.getName()); + +if (!app.requestSingleInstanceLock()) { + app.quit(); + process.exit(0); +} + +// Remove electron security warnings +// This warning only shows in development mode +// Read more on https://www.electronjs.org/docs/latest/tutorial/security +// process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' +app.whenReady().then(() => { + try { + // addon + global.addon = require("../../native/addon.node"); + // 初始化数据 + settingDataInit(); + // 获取语言 + global.language = getLanguage(global.setting.general.language); + // 禁用debugtron + for (let i = 0; i < process.argv.length; i++) { + const arg = process.argv[i]; + if ( + arg.indexOf("--inspect") !== -1 || + arg.indexOf("--remote-debugging-port") !== -1 + ) { + dialog.showMessageBoxSync(null, { + message: "达咩呦达咩达咩~", + buttons: [global.language.ok], + type: "error", + noLink: true, + }); + app.quit(); + return; + } + } + // 禁止多开 + const instanceLock = app.requestSingleInstanceLock(); + if (!instanceLock) { + app.quit(); + return; + } + // 初始化数据 + classificationDataInit(); + itemDataInit(); + initSystemItem(); + // 初始化监听 + indexIpcEvent(); + commonIpcEvent(); + classificationIpcEvent(); + itemIpcEvent(); + settingIpcEvent(); + searchIpcEvent(); + aboutIpcEvent(); + dataIpcEvent(); + // 创建主窗口 + createMainWindow(); + if (global.setting.quickSearch.enable) { + // 创建快速搜索窗口 + createQuickSearchWindow(); + } + // 设置快捷键 + setShortcutKey(); + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } else { + dialog.showMessageBoxSync({ + type: "error", + title: "Dawn Launcher", + message: e.stack, + }); + app.quit(); + } + } +}); + +// 全局异常 +process.on("uncaughtException", (err) => { + dialog.showMessageBoxSync({ + type: "error", + title: "Dawn Launcher", + message: err.stack, + }); + // 关闭所有子进程 + closeAllChildProcess(); + // 退出 + app.quit(); +}); + +app.on("before-quit", () => { + // 关闭所有子进程 + closeAllChildProcess(); +}); + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") app.quit(); +}); + +app.on("second-instance", () => { + if (mainWindow) { + if (!mainWindow.isVisible()) { + mainWindow.show(); + mainWindow.focus(); + global.blurHide = true; + } else { + mainWindow.focus(); + } + } +}); + +app.on("activate", () => { + const allWindows = BrowserWindow.getAllWindows(); + if (allWindows.length) { + allWindows[0].focus(); + } else { + createMainWindow(); + } +}); diff --git a/electron/main/item/commons/data.ts b/electron/main/item/commons/data.ts new file mode 100644 index 0000000..dc0ac54 --- /dev/null +++ b/electron/main/item/commons/data.ts @@ -0,0 +1,561 @@ +import { CommonItem } from "../../../../types/item"; +import { + newCommonItem, + newCommonItemData, +} from "../../../../commons/utils/common"; +import { + calcIcon, + fileExplorerIcon, + networkSharingCenterIcon, + powerIcon, +} from "../../../commons/constants"; +import { getCacheDataSqlite3 } from "../../../commons/betterSqlite3"; + +// 获取数据库 +let db = getCacheDataSqlite3(); + +// 系统项目表名 +let systenItemTableName = "system_item"; + +// 开始菜单项目表名 +let startMenuItemTableName = "start_menu_item"; + +/** + * 通用项目 + */ +function getCommonItem(row: any): CommonItem { + let data = JSON.parse(row.data); + return newCommonItem({ + id: row.id, + name: row.name, + data: newCommonItemData({ + target: data.target, + params: data.params, + icon: data.icon, + htmlIcon: data.htmlIcon, + }), + }); +} + +/** + * 初始化系统项目表 + */ +function initSystemItemTable() { + // sql + let sql = `CREATE TABLE IF NOT EXISTS ${systenItemTableName} ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + data TEXT NOT NULL, + \`order\` INTEGER NOT NULL)`; + // 运行 + db.exec(sql); +} + +/** + * 初始化系统项目 + */ +function initSystemItem() { + // 初始化表 + initSystemItemTable(); + // 初始化数据 + // 计算机 + let computer = selectById(systenItemTableName, 1); + if (!computer) { + let icon: string | null = global.addon.getFileIcon( + "shell:MyComputerFolder" + ); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 1, + name: global.language.computer, + data: newCommonItemData({ + target: "shell:MyComputerFolder", + icon: icon, + }), + order: 1, + }) + ); + } + } + // 文档 + let document = selectById(systenItemTableName, 2); + if (!document) { + let icon: string | null = global.addon.getFileIcon("shell:Local Documents"); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 2, + name: global.language.documents, + data: newCommonItemData({ + target: "shell:Local Documents", + icon: icon, + }), + order: 2, + }) + ); + } + } + // 控制面板 + let controlPanel = selectById(systenItemTableName, 3); + if (!controlPanel) { + let icon: string | null = global.addon.getFileIcon( + "shell:ControlPanelFolder" + ); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 3, + name: global.language.controlPanel, + data: newCommonItemData({ + target: "shell:ControlPanelFolder", + icon: icon, + }), + order: 3, + }) + ); + } + } + // 网络和共享中心 + let networkSharingCenter = selectById(systenItemTableName, 4); + if (!networkSharingCenter) { + add( + systenItemTableName, + newCommonItem({ + id: 4, + name: global.language.networkShareCenter, + data: newCommonItemData({ + target: "control.exe", + params: "/name Microsoft.NetworkAndSharingCenter", + icon: networkSharingCenterIcon, + }), + order: 4, + }) + ); + } + // 回收站 + let recyleBin = selectById(systenItemTableName, 5); + if (!recyleBin) { + let icon: string | null = global.addon.getFileIcon( + "shell:RecycleBinFolder" + ); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 5, + name: global.language.recycleBin, + data: newCommonItemData({ + target: "shell:RecycleBinFolder", + icon: icon, + }), + order: 5, + }) + ); + } + } + // 文件资源管理器 + let fileExplorer = selectById(systenItemTableName, 6); + if (!fileExplorer) { + add( + systenItemTableName, + newCommonItem({ + id: 6, + name: global.language.fileExplorer, + data: newCommonItemData({ + target: "control.exe", + params: "folders", + icon: fileExplorerIcon, + }), + order: 6, + }) + ); + } + // 程序和功能 + let programFeatures = selectById(systenItemTableName, 7); + if (!programFeatures) { + let icon: string | null = global.addon.getFileIcon( + "shell:ChangeRemoveProgramsFolder" + ); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 7, + name: global.language.programsFeatures, + data: newCommonItemData({ + target: "shell:ChangeRemoveProgramsFolder", + icon: icon, + }), + order: 7, + }) + ); + } + } + // 文件资源管理器 + let calc = selectById(systenItemTableName, 8); + if (!calc) { + add( + systenItemTableName, + newCommonItem({ + id: 8, + name: global.language.calculator, + data: newCommonItemData({ + target: "calc.exe", + icon: calcIcon, + }), + order: 8, + }) + ); + } + // 服务 + let services = selectById(systenItemTableName, 9); + if (!services) { + let path: string | null = global.addon.searchPath("services.msc"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 9, + name: global.language.services, + data: newCommonItemData({ + target: "services.msc", + icon: icon, + }), + order: 9, + }) + ); + } + } + } + // 命令提示符 + let cmd = selectById(systenItemTableName, 10); + if (!cmd) { + let path: string | null = global.addon.searchPath("cmd.exe"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 10, + name: global.language.commandPrompt, + data: newCommonItemData({ + target: "cmd.exe", + icon: icon, + }), + order: 10, + }) + ); + } + } + } + // 任务管理器 + let taskmgr = selectById(systenItemTableName, 11); + if (!taskmgr) { + let path: string | null = global.addon.searchPath("taskmgr.exe"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 11, + name: global.language.taskManager, + data: newCommonItemData({ + target: "taskmgr.exe", + icon: icon, + }), + order: 11, + }) + ); + } + } + } + // 注册表编辑 + let regedit = selectById(systenItemTableName, 12); + if (!regedit) { + let path: string | null = global.addon.searchPath("regedit.exe"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 12, + name: global.language.registryEditor, + data: newCommonItemData({ + target: "regedit.exe", + icon: icon, + }), + order: 12, + }) + ); + } + } + } + // 电源选项 + let powercfg = selectById(systenItemTableName, 13); + if (!powercfg) { + add( + systenItemTableName, + newCommonItem({ + id: 13, + name: global.language.powerOptions, + data: newCommonItemData({ + target: "control.exe", + params: "powercfg.cpl", + icon: powerIcon, + }), + order: 13, + }) + ); + } + // 资源监视器 + let perfmon = selectById(systenItemTableName, 14); + if (!perfmon) { + let path: string | null = global.addon.searchPath("perfmon.exe"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 14, + name: global.language.resourceMonitor, + data: newCommonItemData({ + target: "perfmon.exe", + params: "/res", + icon: icon, + }), + order: 14, + }) + ); + } + } + } + // 计算机管理 + let compmgmt = selectById(systenItemTableName, 15); + if (!compmgmt) { + let path: string | null = global.addon.searchPath("compmgmt.msc"); + if (path) { + let icon: string | null = global.addon.getFileIcon(path); + if (icon) { + add( + systenItemTableName, + newCommonItem({ + id: 15, + name: global.language.computerManagement, + data: newCommonItemData({ + target: "compmgmt.msc", + params: "/s", + icon: icon, + }), + order: 15, + }) + ); + } + } + } + // 关机 + let shutdown = selectById(systenItemTableName, 16); + if (!shutdown) { + add( + systenItemTableName, + newCommonItem({ + id: 16, + name: global.language.shutdown, + data: newCommonItemData({ + target: "shutdown", + params: "-s -t 0", + htmlIcon: + '', + }), + order: 16, + }) + ); + } + // 重启 + let restart = selectById(systenItemTableName, 17); + if (!restart) { + add( + systenItemTableName, + newCommonItem({ + id: 17, + name: global.language.restart, + data: newCommonItemData({ + target: "shutdown", + params: "-r -t 0", + htmlIcon: + '', + }), + order: 17, + }) + ); + } + // 睡眠 + let sleep = selectById(systenItemTableName, 18); + if (!sleep) { + add( + systenItemTableName, + newCommonItem({ + id: 18, + name: global.language.sleep, + data: newCommonItemData({ + target: "rundll32.exe", + params: "powrprof.dll, SetSuspendState Sleep", + htmlIcon: + '', + }), + order: 18, + }) + ); + } + // 锁定 + let lock = selectById(systenItemTableName, 19); + if (!lock) { + add( + systenItemTableName, + newCommonItem({ + id: 19, + name: global.language.lock, + data: newCommonItemData({ + target: "rundll32.exe", + params: "user32.dll LockWorkStation", + htmlIcon: + '', + }), + order: 19, + }) + ); + } + // 关闭显示器 + let turnOffMonitor = selectById(systenItemTableName, 20); + if (!turnOffMonitor) { + add( + systenItemTableName, + newCommonItem({ + id: 20, + name: global.language.turnOffMonitor, + data: newCommonItemData({ + target: "static:TurnOffMonitor", + htmlIcon: + '', + }), + order: 20, + }) + ); + } +} + +/** + * 初始化开始菜单项目表 + */ +function initStartMenuItemTable() { + // sql + let sql = `CREATE TABLE IF NOT EXISTS ${startMenuItemTableName} ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + data TEXT NOT NULL, + \`order\` INTEGER NOT NULL)`; + // 运行 + db.exec(sql); +} + +/** + * 列表 + * @param table + */ +function list(table: string) { + // sql + let sql = `SELECT id, name, data, \`order\` FROM ${table}`; + // 查询 + let list = db.prepare(sql).all(); + // 返回 + return list.map((row) => { + return getCommonItem(row); + }); +} + +/** + * 根据ID查询 + * @param table + * @param id + */ +function selectById(table: string, id: number): CommonItem | null { + // SQL + let sql = `SELECT id, name, data, \`order\` FROM ${table} WHERE id = ?`; + // 运行 + let row = db.prepare(sql).get(id); + // 返回 + if (row) { + return getCommonItem(row); + } else { + return null; + } +} + +/** + * 添加 + * @param table + * @param commonItem + * @returns + */ +function add(table: string, commonItem: CommonItem) { + // SQL + let sql = `INSERT INTO ${table} (id, name, data, \`order\`) VALUES (?, ?, ?, ?)`; + // 运行 + db.prepare(sql).run( + commonItem.id, + commonItem.name, + JSON.stringify(commonItem.data), + commonItem.order + ); +} + +/** + * 删除所有数据 + * @param table + */ +function deleteAll(table: string) { + // SQL + let sql = `DELETE FROM ${table}`; + // 运行 + db.prepare(sql).run(); +} + +/** + * 批量添加 + * @param list + */ +function batchAdd(list: Array) { + // 开启事务 + db.transaction(() => { + // SQL + let sql = `INSERT INTO ${startMenuItemTableName} VALUES(?, ?, ?, ?)`; + // 添加到缓存表中 + for (let i = 0; i < list.length; i++) { + db.prepare(sql).run( + i + 1, + list[i].name, + JSON.stringify(list[i].data), + i + 1 + ); + } + })(); +} + +export { + systenItemTableName, + startMenuItemTableName, + initSystemItem, + initStartMenuItemTable, + list, + deleteAll, + batchAdd, +}; diff --git a/electron/main/item/commons/index.ts b/electron/main/item/commons/index.ts new file mode 100644 index 0000000..cb0adb0 --- /dev/null +++ b/electron/main/item/commons/index.ts @@ -0,0 +1,60 @@ +import { release } from "node:os"; +import { + batchAdd, + deleteAll, + initStartMenuItemTable, + initSystemItem, + list, + startMenuItemTableName, + systenItemTableName, +} from "./data"; +import { CommonItem } from "../../../../types/item"; +import { fork } from "../../../commons/utilityProcessUtils"; +import { sendToWebContent } from "../../commons"; + +/** + * 获取系统项目 + */ +function getSystemItemList() { + initSystemItem(); + return list(systenItemTableName); +} + +/** + * 获取开始菜单项目列表 + */ +function getStartMenuItemList() { + // 初始化表 + initStartMenuItemTable(); + // 查询缓存 + let cacheList = list(startMenuItemTableName); + // 清空表 + deleteAll(startMenuItemTableName); + // 子进程 + fork("getStartMenuItemList", cacheList, (resultList: Array) => { + // 添加缓存 + batchAdd(resultList); + // 发送消息到页面 + sendToWebContent("itemAddEditWindow", "onGetStartMenuItemList", resultList); + }); +} + +/** + * APPX项目 + */ +function getAppxItemList() { + // 大于win10才有APPX + let releaseArr = release().split("."); + if (Number(releaseArr[0]) >= 10) { + // 子进程 + fork("getAppxItemList", {}, (resultList: Array) => { + // 发送消息到页面 + sendToWebContent("itemAddEditWindow", "onGetAppxItemList", resultList); + }); + } else { + // 发送消息到页面 + sendToWebContent("itemAddEditWindow", "onGetAppxItemList", []); + } +} + +export { getSystemItemList, getStartMenuItemList, getAppxItemList }; diff --git a/electron/main/item/data.ts b/electron/main/item/data.ts new file mode 100644 index 0000000..af7a09f --- /dev/null +++ b/electron/main/item/data.ts @@ -0,0 +1,427 @@ +import { Item, ItemData } from "../../../types/item"; +import { newItem, newItemData } from "../../../commons/utils/common"; +import { list as selectClassificationList } from "../classification/data"; +import { getDataSqlite3 } from "../../commons/betterSqlite3"; + +// 获取数据库 +let db = getDataSqlite3(); + +// 项目表名 +let itemTableName = "item"; + +// 查询字段 +let selectColumn = + "id, classification_id classificationId, name, type, data, shortcut_key shortcutKey, global_shortcut_key globalShortcutKey, `order`"; +let simpleSelectColumn = + "id, classification_id classificationId, name, type, shortcut_key shortcutKey, global_shortcut_key globalShortcutKey, `order`"; + +/** + * 项目 + */ +function getItem(row: any): Item { + return newItem({ + id: row.id, + classificationId: row.classificationId, + name: row.name, + type: row.type, + data: newItemData(row.data ? JSON.parse(row.data) : {}), + shortcutKey: row.shortcutKey, + globalShortcutKey: row.globalShortcutKey === 1, + order: row.order, + }); +} + +/** + * 初始化项目表 + */ +function init() { + // sql + let sql = `CREATE TABLE IF NOT EXISTS ${itemTableName} ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + classification_id INTEGER NOT NULL, + name TEXT NOT NULL, + type INTEGER NOT NULL, + data TEXT NOT NULL, + shortcut_key TEXT, + global_shortcut_key INTEGER NOT NULL, + \`order\` INTEGER NOT NULL)`; + // 运行 + db.exec(sql); +} + +/** + * 添加 + * @param item + * @param reuseId + */ +function add(item: Item, reuseId: boolean = false) { + // 获取序号 + let newOrder = getMaxOrder(item.classificationId) + 1; + // SQL + let sql = `INSERT INTO ${itemTableName} + (classification_id, name, type, data, shortcut_key, global_shortcut_key, \`order\`) + VALUES (?, ?, ?, ?, ?, ?, ?)`; + // 参数 + let params = [ + item.classificationId, + item.name, + item.type, + JSON.stringify(item.data), + item.shortcutKey, + item.globalShortcutKey ? 1 : 0, + newOrder, + ]; + // 重复使用ID + if (reuseId && item.id) { + sql = `INSERT INTO ${itemTableName} + (id, classification_id, name, type, data, shortcut_key, global_shortcut_key, \`order\`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`; + params.unshift(item.id); + } + // 运行 + let id = db.prepare(sql).run(params).lastInsertRowid as number; + if (id) { + item.id = id; + item.order = newOrder; + return item; + } + return null; +} + +/** + * 批量添加 + * @param classificationId + * @param itemList + * @param reuseId + */ +function batchAdd( + classificationId: number, + itemList: Array, + reuseId: boolean = false +) { + // 返回信息 + let resultList: Array = []; + // 事务 + db.transaction(() => { + // 获取序号 + let newOrder = getMaxOrder(classificationId) + 1; + // 循环添加 + for (let item of itemList) { + // SQL + let sql = `INSERT INTO ${itemTableName} + (classification_id, name, type, data, shortcut_key, global_shortcut_key, \`order\`) + VALUES (?, ?, ?, ?, ?, ?, ?)`; + // 参数 + let params = [ + classificationId, + item.name, + item.type, + JSON.stringify(item.data), + item.shortcutKey, + item.globalShortcutKey ? 1 : 0, + newOrder, + ]; + // 重复使用ID + if (reuseId && item.id) { + sql = `INSERT INTO ${itemTableName} + (id, classification_id, name, type, data, shortcut_key, global_shortcut_key, \`order\`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`; + params.unshift(item.id); + } + // 运行 + let id = db.prepare(sql).run(params).lastInsertRowid as number; + if (id) { + item.id = id; + item.order = newOrder; + resultList.push(item); + } + newOrder++; + } + })(); + return resultList; +} + +/** + * 更新 + * @param item + */ +function update(item: Item) { + // SQL + let sql = `UPDATE ${itemTableName} + SET name = ?, + data = ?, + shortcut_key = ?, + global_shortcut_key = ? + WHERE id = ?`; + // 运行 + return ( + db + .prepare(sql) + .run( + item.name, + JSON.stringify(item.data), + item.shortcutKey, + item.globalShortcutKey ? 1 : 0, + item.id + ).changes > 0 + ); +} + +/** + * 更新分类ID + * @param oldClassificationId + * @param newlassificationId + */ +function updateClassificationId( + oldClassificationId: number, + newClassificationId: number +) { + // SQL + let sql = `UPDATE ${itemTableName} + SET classification_id = ? + WHERE classification_id = ?`; + // 运行 + return ( + db.prepare(sql).run(newClassificationId, oldClassificationId).changes > 0 + ); +} + +/** + * 更新数据 + * @param id + * @param itemData + */ +function updateData(id: number, itemData: ItemData) { + // SQL + let sql = `UPDATE ${itemTableName} + SET data = ? + WHERE id = ?`; + // 运行 + return db.prepare(sql).run(JSON.stringify(itemData), id).changes > 0; +} + +/** + * 查询最大序号 + * @param classificationId + */ +function getMaxOrder(classificationId: number) { + // SQL + let sql = `SELECT MAX(\`order\`) \`order\` FROM ${itemTableName} WHERE classification_id = ?`; + // 运行 + let row: any = db.prepare(sql).get(classificationId); + if (row && row.order) { + return row.order; + } else { + return 0; + } +} + +/** + * 根据ID查询 + * @param id + */ +function selectById(id: number): Item | null { + // SQL + let sql = `SELECT ${selectColumn} FROM ${itemTableName} WHERE id = ?`; + // 运行 + let row = db.prepare(sql).get(id); + // 返回 + if (row) { + return getItem(row); + } else { + return null; + } +} + +/** + * 列表 + * @param simple + * @param classificationId + */ +function list(simple: boolean = false, classificationId: number | null = null) { + // 参数 + let params = []; + // sql + let sql = `SELECT ${ + simple ? simpleSelectColumn : selectColumn + } FROM ${itemTableName}`; + if (classificationId) { + sql += " WHERE classification_id = ?"; + params.push(classificationId); + } + sql += " ORDER BY `order` ASC"; + // 查询 + let list = db.prepare(sql).all(params); + // 返回 + return list.map((row) => { + return getItem(row); + }); +} + +/** + * 根据ID列表查询 + * @param simple + * @param idList + */ +function selectByIdList(simple: boolean, idList: Array) { + // 参数 + let params = []; + // sql + let sql = `SELECT ${ + simple ? simpleSelectColumn : selectColumn + } FROM ${itemTableName} WHERE id IN (`; + for (let i = 0; i < idList.length; i++) { + sql += "?"; + if (i !== idList.length - 1) { + sql += ","; + } + params.push(idList[i]); + } + sql += ")"; + // 查询 + let list = db.prepare(sql).all(params); + // 转为Item + let itemList = list.map((row) => { + return getItem(row); + }); + // 返回列表 + let resultList: Array = []; + // 根据传入的参数排序 + for (const id of idList) { + for (const item of itemList) { + if (id === item.id) { + resultList.push(item); + break; + } + } + } + return resultList; +} + +/** + * 删除 + * @param id + */ +function del(id: number) { + // 查询数据 + let item = selectById(id); + if (item) { + // SQL + let sql = `DELETE FROM ${itemTableName} WHERE id = ?`; + // 运行 + let res = db.prepare(sql).run(id).changes > 0; + if (res) { + // 更新序号 + reorder(item.classificationId); + return true; + } else { + return false; + } + } else { + return false; + } +} + +/** + * 删除 + * @param classificationId + */ +function deleteByClassificationId(classificationId: number) { + // SQL + let sql = `DELETE FROM ${itemTableName} WHERE classification_id = ?`; + // 运行 + return db.prepare(sql).run(classificationId).changes > 0; +} + +/** + * 重新排序 + * @param classification_id + */ +function reorder(classification_id: number) { + // 查询项目列表 + let itemList = list(true, classification_id); + // 开启事务 + db.transaction(() => { + // SQL + let sql = `UPDATE ${itemTableName} SET \`order\` = ? WHERE id = ?`; + // 更新序号 + for (let i = 0; i < itemList.length; i++) { + db.prepare(sql).run(i + 1, itemList[i].id); + } + })(); +} + +/** + * 项目排序 + * @param fromIdList + * @param toClassificationId + * @param toId + */ +function updateOrder( + fromIdList: Array, + toClassificationId: number, + newIndex: number | null +) { + // 查询来源项目 + let fromItemList = selectByIdList(true, fromIdList); + if (fromItemList.length > 0) { + // 查询目标分类是否是父级分类,如果是父级分类的话,获取他下面的第一个子分类 + let classificationList = selectClassificationList(toClassificationId); + if (classificationList.length > 0) { + toClassificationId = classificationList[0].id; + } + // 记录来源项目都是来源于哪些分类,需要重新排序 + let fromClassificationIdList = []; + for (const item of fromItemList) { + if ( + item.classificationId !== toClassificationId && + !fromClassificationIdList.includes(item.classificationId) + ) { + fromClassificationIdList.push(item.classificationId); + } + } + // 查询目标项目列表 + let toItemList = list(true, toClassificationId); + // 来源项目分类可能和目标项目分类是一样的,首先先从目标项目列表去掉来源项目 + for (const id of fromIdList) { + toItemList = toItemList.filter((item) => item.id !== id); + } + // 将来源项目插入到目标项目列表 + if (newIndex !== null) { + toItemList.splice(newIndex, 0, ...fromItemList); + } else { + // 尾部追加 + toItemList.push(...fromItemList); + } + // 开启事务 + db.transaction(() => { + // SQL + let sql = `UPDATE ${itemTableName} SET \`order\` = ?, classification_id = ? WHERE id = ?`; + // 更新序号 + for (let i = 0; i < toItemList.length; i++) { + db.prepare(sql).run(i + 1, toClassificationId, toItemList[i].id); + } + })(); + // 重排序其来源分类项目列表 + for (const id of fromClassificationIdList) { + reorder(id); + } + return true; + } + return false; +} + +export { + init, + list, + add, + batchAdd, + update, + del, + selectById, + selectByIdList, + deleteByClassificationId, + updateOrder, + updateData, + updateClassificationId, +}; diff --git a/electron/main/item/index.ts b/electron/main/item/index.ts new file mode 100644 index 0000000..54fda4b --- /dev/null +++ b/electron/main/item/index.ts @@ -0,0 +1,687 @@ +import { BrowserWindow, shell, dialog, app } from "electron"; +import { join } from "node:path"; +import { getAbsolutePath, getURLParams } from "../../commons/utils"; +import { Item } from "../../../types/item"; +import { + batchAdd, + deleteByClassificationId, + list, + selectById, + selectByIdList, + updateData, + updateOrder, +} from "./data"; +import { accessSync, writeFile, statSync, readFileSync } from "node:fs"; +import mime from "mime"; +import { + deleteExtname, + getItemName, + isAbsolutePath, +} from "../../../commons/utils/common"; +import { iconExts } from "../../commons/utils"; +import { addAssociateFolderWatcher } from "../classification"; +import { + closeWindow, + convertPath, + getMainBackgorunColor, + sendToWebContent, +} from "../commons/index"; +import { fork } from "../../commons/utilityProcessUtils"; + +// 窗口 +let itemAddEditWindow: BrowserWindow | null = null; +let itemNetworkIconWindow: BrowserWindow | null = null; +let itemSVGIconWindow: BrowserWindow | null = null; + +/** + * 添加/修改窗口 + * @param id + * @param classificationId + */ +async function createAddEditWindow( + id: number | null, + classificationId: number | null +) { + // 如果窗口存在先关闭窗口 + closeWindow(itemAddEditWindow); + // 创建窗口 + itemAddEditWindow = global.itemAddEditWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 500, + width: 600, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + // 参数 + let params = new Map(); + if (id) { + params.set("id", id); + } + if (classificationId) { + params.set("classificationId", classificationId); + } + if (process.env.VITE_DEV_SERVER_URL) { + itemAddEditWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + "item/AddEdit" + getURLParams(params) + ); + } else { + itemAddEditWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/item/AddEdit", + search: getURLParams(params), + }); + } + itemAddEditWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + itemAddEditWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + itemAddEditWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + itemAddEditWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 网络图标窗口 + */ +async function createNetworkIconWindow() { + // 如果窗口存在先关闭窗口 + closeWindow(itemNetworkIconWindow); + // 创建窗口 + itemNetworkIconWindow = global.itemNetworkIconWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.itemAddEditWindow, + height: 230, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + itemNetworkIconWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + "item/NetworkIcon" + ); + } else { + itemNetworkIconWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/item/NetworkIcon", + }); + } + itemNetworkIconWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + itemNetworkIconWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + itemNetworkIconWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + itemNetworkIconWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * SVG图标窗口 + */ +async function createSVGIconWindow() { + // 如果窗口存在先关闭窗口 + closeWindow(itemSVGIconWindow); + // 创建窗口 + itemSVGIconWindow = global.itemSVGIconWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.itemAddEditWindow, + height: 230, + width: 400, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + focusable: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + itemSVGIconWindow.loadURL(process.env.VITE_DEV_SERVER_URL + "item/SVGIcon"); + } else { + itemSVGIconWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/item/SVGIcon", + }); + } + itemSVGIconWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + itemSVGIconWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + itemSVGIconWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + itemSVGIconWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 复制项目 + * @param idList + * @param toClassificationId + */ +function copy(idList: Array, toClassificationId: number) { + // 返回列表 + let resultList: Array = []; + // 查询项目 + let itemList = selectByIdList(false, idList); + if (itemList.length > 0) { + // 清空打开信息 + resultList.forEach((item) => clearOpenInfo(item)); + // 批量添加 + resultList = batchAdd(toClassificationId, itemList); + } + if (resultList.length > 0) { + // 通知前端 + sendToWebContent("mainWindow", "onAddItem", { + itemList: resultList, + clear: false, + classificationId: null, + }); + } +} + +/** + * 复制/移动项目 + * @param idList + * @param toClassificationId + */ +function move(idList: Array, toClassificationId: number) { + // 移动项目 + let res = updateOrder(idList, toClassificationId, null); + if (res) { + // 通知前端 + sendToWebContent("mainWindow", "onMoveItem", { + idList, + toClassificationId, + }); + } +} + +/** + * 拖入项目 + * @param classificationId + * @param pathList + */ +function drop(classificationId: number, pathList: Array) { + fork( + "getDropItemInfo", + { + classificationId, + pathList, + }, + (resultList: Array) => { + // 添加项目 + let itemList = batchAdd(classificationId, resultList); + // 发送消息到页面 + sendToWebContent("mainWindow", "onAddItem", { + itemList, + clear: false, + classificationId: null, + }); + } + ); +} + +/** + * 更新项目打开信息 + * @param type + * @param id + */ +function updateOpenInfo(type: string, id: number) { + // 查询项目 + let curItem = selectById(id); + if (curItem) { + if (type === "main" || type === "search") { + // 记录打开信息 + curItem.data.lastOpen = new Date().getTime(); + // 记录打开次数 + if (global.setting.item.openNumber) { + curItem.data.openNumber += 1; + } + } else if (type === "quickSearch") { + // 记录打开信息 + curItem.data.quickSearchLastOpen = new Date().getTime(); + // 记录打开次数 + curItem.data.quickSearchOpenNumber += 1; + } + if (updateData(curItem.id, curItem.data)) { + sendToWebContent("mainWindow", "onUpdateOpenInfo", { + id: curItem.id, + openNumber: curItem.data.openNumber, + lastOpen: curItem.data.lastOpen, + quickSearchOpenNumber: curItem.data.quickSearchOpenNumber, + quickSearchLastOpen: curItem.data.quickSearchLastOpen, + type, + }); + } + } +} + +/** + * 运行项目 + * @param type + * @param operation + * @param item + */ +function run( + type: string, + operation: "open" | "runas" | "openFileLocation", + item: Item +) { + if (item.data) { + // 更新打开信息 + updateOpenInfo(type, item.id); + // 判断类型 + if (item.type === 2) { + // 网址 + shell.openExternal(item.data.target); + } else if (item.type === 3 || item.type === 4) { + // 系统 或 appx + global.addon.systemItemExecute(item.data.target, item.data.params); + } else { + // 获取绝对路径 + if (item.type === 0 || item.type === 1) { + // 获取路径 + item.data.target = getAbsolutePath(item.data.target); + } + try { + // 判断文件或文件夹是否存在 + accessSync(item.data.target); + // 存在 + if (operation === "openFileLocation") { + // 打开文件所在位置 + global.addon.openFileLocation(item.data.target); + } else { + // 运行 + global.addon.shellExecute( + operation, + item.data.target, + item.data.params ?? "", + item.data.startLocation + ); + } + } catch (e) { + let message: string | null = null; + if (item.type === 0 && operation !== "openFileLocation") { + message = global.language.notFoundFile; + } else { + message = global.language.notFoundFolder; + } + message += '"' + item.data.target + '"'; + dialog.showMessageBox(global.mainWindow, { + title: "Dawn Launcher", + message: message, + buttons: [global.language.ok], + type: "error", + noLink: true, + }); + } + } + } +} + +/** + * 转换目标路径 + * @param idList + * @param type + */ +function convertTarget(idList: Array, type: "Absolute" | "Relative") { + // 返回数据 + let resultList = []; + // 查询数据 + let itemList = selectByIdList(false, idList); + for (let item of itemList) { + // 是否是绝对路径 + let isAbsolute = isAbsolutePath(item.data.target); + // 如果是绝对路径并且type是Relative,就转为相对路径 + // 如果不是绝对路径并且type是Absolute,就转为绝对路径 + if ( + (isAbsolute && type === "Relative") || + (!isAbsolute && type === "Absolute") + ) { + // 转换路径 + item.data.target = convertPath(item.data.target); + // 更新 + updateData(item.id, item.data); + // push + resultList.push({ + id: item.id, + target: item.data.target, + }); + } + } + // 通知页面 + sendToWebContent("mainWindow", "onConvertPath", resultList); +} + +/** + * 导出图标 + * @param item + */ +function exportIcon(item: Item) { + if (item.data.icon || item.data.htmlIcon) { + // SVG代码图标 + let svgCode = false; + // 拓展名 + let extensionName: string | null = null; + // 内容 + let content: string | null = null; + if (item.data.htmlIcon && item.data.htmlIcon.trim() !== "") { + // 保存为SVG图片 + svgCode = true; + extensionName = "svg"; + content = item.data.htmlIcon.trim(); + } else if (item.data.icon && item.data.icon.trim() !== "") { + // 提取base64类型 + let re = new RegExp("data:(?.*?);base64,.*"); + let res = re.exec(item.data.icon); + if (res && res.groups) { + // 获取拓展名 + extensionName = mime.getExtension(res.groups.ext); + if (item.data.icon.trim().split(",").length === 2) { + content = item.data.icon.trim().split(",")[1]; + } + } + } + // 弹出文件对话框保存 + if (extensionName && content) { + let path = dialog.showSaveDialogSync(global.mainWindow, { + defaultPath: "icon", + filters: [ + { + name: extensionName, + extensions: [extensionName], + }, + ], + }); + // 保存 + if (path) { + if (svgCode) { + writeFile(path, content, function (err) {}); + } else { + let dataBuffer = Buffer.from(content, "base64"); + writeFile(path, dataBuffer, function (err) {}); + } + } + } + } +} + +/** + * 刷新图标 + * @param idList + */ +function refreshIcon(idList: Array) { + // 查询项目 + let itemList = selectByIdList(false, idList); + // 过滤掉固定图标项目 + itemList = itemList.filter((item) => !item.data.fixedIcon); + // 子进程 + fork( + "refreshItemIcon", + itemList, + (resultList: Array<{ id: number; icon: string }>) => { + // 项目列表 + let itemList: Array<{ id: number; icon: string }> = []; + // 更新项目图标 + for (const data of resultList) { + let item = selectById(data.id); + if (item) { + item.data.icon = data.icon; + item.data.htmlIcon = null; + let res = updateData(item.id, item.data); + if (res) { + itemList.push({ + id: item.id, + icon: item.data.icon, + }); + } + } + } + // 发送消息到页面 + sendToWebContent("mainWindow", "onRefreshItemIcon", itemList); + } + ); +} + +/** + * 创建快捷方式 + * @param item + */ +async function createShortcut(item: Item) { + let target = item.data.target; + if (item.type === 0 || item.type === 1) { + // 获取绝对路径 + target = getAbsolutePath(target); + } + // 保存路径 + let savePath = + app.getPath("desktop") + + "\\" + + deleteExtname(getItemName(item.name)) + + ".lnk"; + shell.writeShortcutLink(savePath, "create", { + target: target, + }); +} + +/** + * 读取文件夹下的项目 + * @param classificationId + * @param dir + * @param hiddenItems + * @param listen 是否创建监听 + * @param clear 是否清空原有项目 + */ +function getDirectoryList( + classificationId: number, + dir: string | null, + hiddenItems: string | null, + listen: boolean, + clear: boolean +) { + // 校验目录 + if (!dir || dir.trim() === "") { + return; + } + // 校验是否存在,校验是否是文件夹 + try { + let stats = statSync(dir); + if (!stats.isDirectory()) { + return; + } + } catch (e) { + return; + } + // 查询旧数据 + let oldList = list(false, classificationId); + // 子进程 + fork( + "getDirectoryItemList", + { + classificationId, + dir, + hiddenItems, + oldList, + }, + (resultList: Array) => { + if (clear) { + // 删除旧数据 + deleteByClassificationId(classificationId); + } + // 添加项目 + let itemList = batchAdd(classificationId, resultList, true); + if (listen) { + // 创建关联文件夹监听 + addAssociateFolderWatcher(classificationId, dir, hiddenItems); + } + if (global.mainWindow && !global.mainWindow.isDestroyed()) { + // 发送消息到页面 + sendToWebContent("mainWindow", "onAddItem", { + itemList, + clear, + classificationId, + }); + } + } + ); +} + +/** + * 获取剪切板图片文件 + */ +function getClipboardImageFile() { + // 获取文件列表 + let fileList: Array = global.addon.getClipboardFileList(); + // 多个文件返回空,单个文件返回文件路径 + if (fileList.length === 1) { + let filePath = fileList[0]; + // 获取后缀 + let ext = mime.getExtension(mime.getType(filePath)); + if (iconExts.includes(ext)) { + return filePath; + } + } + return null; +} + +/** + * 粘贴图标 + * @param id + */ +function pasteIcon(id: number | null) { + if (id) { + // 查询项目 + let item = selectById(id); + if (item) { + // 图标 + let icon = null; + // 获取剪切板图片文件 + let imageFile = getClipboardImageFile(); + if (imageFile) { + try { + // 读取文件 + let buffer = readFileSync(imageFile); + // 图标 + icon = + "data:" + + mime.getType(imageFile) + + ";base64," + + buffer.toString("base64"); + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + } + } else { + let bitmap = global.addon.getClipboardBitmapBase64(); + if (bitmap) { + icon = bitmap; + } + } + if (icon) { + item.data.icon = icon; + // 更新 + updateData(item.id, item.data); + // 通知页面刷新图标 + sendToWebContent("mainWindow", "onRefreshItemIcon", [ + { id, icon: item.data.icon }, + ]); + } + } + } +} + +/** + * 检查无效项目 + */ +function checkInvalid() { + // 查询项目列表 + let itemList = list(); + // 去掉图标 + for (const item of itemList) { + item.data.icon = null; + } + // 子进程 + fork("checkInvalidItem", itemList, (resultList: Array) => { + // 发送消息到页面 + sendToWebContent("mainWindow", "onCheckInvalidItem", resultList); + }); +} + +/** + * 清空打开信息 + * @param item + */ +function clearOpenInfo(item: Item) { + item.data.openNumber = 0; + item.data.lastOpen = 0; + item.data.quickSearchOpenNumber = 0; + item.data.quickSearchLastOpen = 0; +} + +export { + createAddEditWindow, + createNetworkIconWindow, + createSVGIconWindow, + copy, + move, + drop, + updateOpenInfo, + run, + convertTarget, + exportIcon, + refreshIcon, + createShortcut, + getDirectoryList, + getClipboardImageFile, + pasteIcon, + checkInvalid, +}; diff --git a/electron/main/item/ipcEvent.ts b/electron/main/item/ipcEvent.ts new file mode 100644 index 0000000..f7119b4 --- /dev/null +++ b/electron/main/item/ipcEvent.ts @@ -0,0 +1,680 @@ +import { + Menu, + MenuItem, + dialog, + ipcMain, + clipboard, + MenuItemConstructorOptions, +} from "electron"; +import { getAbsolutePath } from "../../commons/utils"; +import { + convertTarget, + createAddEditWindow, + createNetworkIconWindow, + createSVGIconWindow, + createShortcut, + drop, + exportIcon, + refreshIcon, + run, + copy, + move, + getClipboardImageFile, + pasteIcon, + updateOpenInfo, +} from "."; +import { + getAppxItemList, + getStartMenuItemList, + getSystemItemList, +} from "./commons"; +import { add, del, list, selectById, update, updateOrder } from "./data"; +import { Item } from "../../../types/item"; +import { getFileExtname, isAbsolutePath } from "../../../commons/utils/common"; +import { + list as selectClassificationList, + selectById as selectClassificationById, + hasChildClassification, +} from "../classification/data"; +import { getWindowInScreen } from "../main/index"; +import { + getItemLayoutMenu, + getItemSortMenu, + getItemColumnNumber, + getItemIconSize, + getItemShowOnly, +} from "../classification"; +import { join } from "node:path"; +import { setShortcutKey } from "../setting"; +import { + closeWindow, + openAfterHideWindow, + sendToWebContent, +} from "../commons/index"; + +/** + * 获取复制/移动菜单 + * @param idList + * @param type + * @returns + */ +function getCopyMoveMenuItems( + idList: Array, + type: "MoveItem" | "CopyItem" +) { + // 菜单 + let menuItems: Array = []; + // 查询分类 + let classificationList = selectClassificationList(null); + for (const parent of classificationList) { + if (parent.parentId || parent.type !== 0) { + continue; + } + let submenus: Array = []; + // 子分类 + for (const child of classificationList) { + if (parent.id === child.parentId && child.type === 0) { + submenus.push({ + label: child.name, + click: () => { + if (type === "CopyItem") { + copy(idList, child.id); + } else { + move(idList, child.id); + } + }, + }); + } + } + if (submenus.length > 0) { + menuItems.push({ + label: parent.name, + submenu: submenus, + }); + } else { + menuItems.push({ + label: parent.name, + click: () => { + if (type === "CopyItem") { + copy(idList, parent.id); + } else { + move(idList, parent.id); + } + }, + }); + } + } + return menuItems; +} + +export default function () { + // 显示新增/修改窗口 + ipcMain.on("showItemAddEditWindow", () => { + if (global.itemAddEditWindow) { + global.itemAddEditWindow.show(); + } + }); + // 关闭新增/修改窗口 + ipcMain.on("closeItemAddEditWindow", () => { + closeWindow(global.itemAddEditWindow); + }); + // 获取项目列表 + ipcMain.on("getItemList", (event) => { + event.returnValue = list(); + }); + // 获取简单项目列表 + ipcMain.on("getSimpleItemList", (event) => { + event.returnValue = list(true); + }); + // 根据ID查询项目 + ipcMain.on("getItemById", (event, args) => { + event.returnValue = selectById(args.id); + }); + // 添加项目 + ipcMain.on("addItem", (event, args) => { + let item = add(args); + setShortcutKey(); + event.returnValue = item; + }); + // 更新项目 + ipcMain.on("updateItem", (event, args) => { + let res = update(args); + setShortcutKey(); + event.returnValue = res; + }); + // 项目排序 + ipcMain.on("updateItemOrder", (event, args) => { + event.returnValue = updateOrder( + args.fromIdList, + args.toClassificationId, + args.newIndex + ); + }); + // 右键菜单 + ipcMain.on("showItemRightMenu", (event, args) => { + // 类型 main:主界面 search:搜索模块 + let type: string = args.type; + // 项目 + let item: Item | null = args.item; + // 锁定/解锁项目 + let lockItem: boolean = type === "main" ? args.lockItem : false; + // 批量操作 + let batchOperation: boolean = type === "main" ? args.batchOperation : false; + // 批量操作ID列表 + let batchSelectedIdList: Array = + type === "main" ? args.batchSelectedIdList : []; + // 分类ID + let classificationId: number = + type === "main" ? args.classificationId : item.classificationId; + // 查询分类信息 + let classification = selectClassificationById(classificationId); + if (!classification) { + return; + } + // 菜单 + let menuList: Array = []; + // 组装菜单 + if (!batchOperation) { + if (item) { + // 后缀 + let ext: string | null = null; + // 排除 + if (item.type === 0) { + ext = getFileExtname(item.data.target); + } + // "打开"菜单 + let openMenu = false; + if (item.type === 0 && ext && (ext === "exe" || ext === "bat")) { + menuList.push( + new MenuItem({ + label: global.language.runAsAdministrator, + click: () => { + // 运行 + run(type, "runas", item); + openAfterHideWindow(type); + }, + }) + ); + openMenu = true; + } + if (item.type === 0 || item.type === 1) { + menuList.push( + new MenuItem({ + label: global.language.openFileLocation, + click: () => { + // 运行 + run(type, "openFileLocation", item); + openAfterHideWindow(type); + }, + }) + ); + openMenu = true; + } + if (item.type === 3 && item.data.target === "shell:RecycleBinFolder") { + menuList.push( + new MenuItem({ + label: global.language.emptyRecycleBin, + click: () => { + global.addon.emptyRecycleBin( + global.mainWindow.getNativeWindowHandle().readInt32LE(0) + ); + }, + }) + ); + openMenu = true; + } + if ( + item.type === 0 || + item.type === 1 || + (item.type === 3 && item.data.target.indexOf("shell:") >= 0) + ) { + menuList.push( + new MenuItem({ + label: global.language.explorerMenu, + click: () => { + // 获取当前窗口所在屏幕 + let screen = getWindowInScreen(); + let scaleFactor = 1; + if (screen && screen.length > 0) { + scaleFactor = screen[0].scaleFactor; + } + // 弹出资源管理器菜单 + sendToWebContent( + type === "quickSearch" ? "quickSearchWindow" : "mainWindow", + "onItemExplorerMenu", + { + type: type, + id: item.id, + } + ); + // 禁用鼠标HOOK + global.addon.disableMouseHook(); + // 弹出资源管理器菜单 + global.addon.explorerContextMenu( + global.mainWindow.getNativeWindowHandle().readInt32LE(0), + item.type === 0 || item.type === 1 + ? getAbsolutePath(item.data.target) + : item.data.target, + args.x * scaleFactor, + args.y * scaleFactor + ); + // 开启鼠标HOOK + global.addon.enableMouseHook(); + sendToWebContent( + type === "quickSearch" ? "quickSearchWindow" : "mainWindow", + "onItemRightMenuClose", + {} + ); + }, + }) + ); + openMenu = true; + } + if (openMenu) { + menuList.push(new MenuItem({ type: "separator" })); + } + // "路径"菜单 + let pathMenu = false; + if (item.type === 0 || item.type === 1 || item.type === 2) { + menuList.push( + new MenuItem({ + label: global.language.copyFullPath, + click: () => { + clipboard.writeText( + item.type === 0 || item.type === 1 + ? getAbsolutePath(item.data.target) + : item.data.target + ); + }, + }) + ); + pathMenu = true; + } + if ( + type === "main" && + (item.type === 0 || item.type === 1) && + classification.type === 0 + ) { + menuList.push( + new MenuItem({ + label: isAbsolutePath(item.data.target) + ? global.language.convertRelativePath + : global.language.convertAbsolutePath, + click: () => { + convertTarget( + [item.id], + isAbsolutePath(item.data.target) ? "Relative" : "Absolute" + ); + }, + }) + ); + pathMenu = true; + } + if (item.type === 0 || item.type === 1 || item.type === 2) { + menuList.push( + new MenuItem({ + label: global.language.createShortcut, + click: () => { + createShortcut(item); + }, + }) + ); + pathMenu = true; + } + if (pathMenu) { + menuList.push(new MenuItem({ type: "separator" })); + } + if (type === "main") { + // "图标"菜单 + let existPasteIcon = false; + // 获取剪切板图片文件 + let imageFile = getClipboardImageFile(); + if (imageFile) { + existPasteIcon = true; + } else { + // 判断剪切板中的BITMAP是否存在 + let hasBitmap = global.addon.clipboardHasBitmap(); + if (hasBitmap) { + existPasteIcon = true; + } + } + if (existPasteIcon) { + menuList.push( + new MenuItem({ + label: global.language.pasteIcon, + click: () => { + pasteIcon(item.id); + }, + }) + ); + } + } + menuList.push( + new MenuItem({ + label: global.language.exportIcon, + click: () => { + exportIcon(item); + }, + }) + ); + if ( + type === "main" && + (item.type === 0 || item.type === 1) && + !item.data.fixedIcon + ) { + menuList.push( + new MenuItem({ + label: global.language.refreshIcon, + click: () => { + refreshIcon([item.id]); + }, + }) + ); + } + if (type === "main" && classification.type === 0) { + menuList.push(new MenuItem({ type: "separator" })); + menuList.push( + new MenuItem({ + label: global.language.moveTo, + submenu: getCopyMoveMenuItems([item.id], "MoveItem"), + }) + ); + menuList.push( + new MenuItem({ + label: global.language.copyTo, + submenu: getCopyMoveMenuItems([item.id], "CopyItem"), + }) + ); + menuList.push(new MenuItem({ type: "separator" })); + // 项目通用 + menuList.push( + new MenuItem({ + label: global.language.edit, + click: () => { + // 创建窗口 + createAddEditWindow(item.id, null); + }, + }), + new MenuItem({ + label: global.language.delete, + click: () => { + let res = dialog.showMessageBoxSync(global.mainWindow, { + message: global.language.deleteItemPrompt, + buttons: [global.language.ok, global.language.cancel], + type: "question", + noLink: true, + cancelId: 1, + }); + if (res === 0) { + // 删除数据 + del(item.id); + // 快捷键 + setShortcutKey(); + // 通知前端删除数据 + sendToWebContent("mainWindow", "onDeleteItem", [item.id]); + } + }, + }) + ); + } + } else { + // 尝试查询分类下有没有子分类 + let classificationList = selectClassificationList(classificationId); + // 添加项目选项 + if (classificationList && classificationList.length > 0) { + let submenus = []; + for (const classification of classificationList) { + if (classification.type === 0) { + submenus.push( + new MenuItem({ + label: classification.name, + click: () => { + // 创建窗口 + createAddEditWindow(null, classification.id); + }, + }) + ); + } + } + if (submenus.length > 0) { + menuList.push( + new MenuItem({ + label: global.language.newItem, + submenu: submenus, + }) + ); + } + } else { + if (classification.type === 0) { + menuList.push( + new MenuItem({ + label: global.language.newItem, + click: () => { + // 创建窗口 + createAddEditWindow(null, classificationId); + }, + }) + ); + } + } + // 分割线 + menuList.push(new MenuItem({ type: "separator" })); + if (classification.type !== 2) { + // 排序 + menuList.push(getItemSortMenu(classification)); + } + // 布局 + menuList.push(getItemLayoutMenu(classification)); + // 列数 + if ( + !hasChildClassification(classificationId) && + (classification.data.itemLayout === "list" || + (global.setting.item.layout === "list" && + classification.data.itemLayout === "default")) + ) { + // 只有子级分类或没有子级分类的父级分类并且布局是列表的才显示列数 + menuList.push(getItemColumnNumber(classification)); + } + // 图标 + menuList.push(getItemIconSize(classification)); + // 显示 + menuList.push(getItemShowOnly(classification)); + // 只有普通分类可以锁定/解锁分类 + if (classification.type === 0) { + menuList.push( + new MenuItem({ type: "separator" }), + new MenuItem({ + label: !lockItem + ? global.language.lockItem + : global.language.unlockItem, + click: () => { + sendToWebContent("mainWindow", "onLockItem", {}); + }, + }) + ); + } + } + } else { + if (classification.type === 0) { + menuList.push( + new MenuItem({ + label: global.language.selectAll, + click: () => { + sendToWebContent( + "mainWindow", + "onItembatchOperationSelectAll", + {} + ); + }, + }), + new MenuItem({ type: "separator" }), + new MenuItem({ + label: global.language.batchMoveTo, + submenu: getCopyMoveMenuItems(batchSelectedIdList, "MoveItem"), + }), + new MenuItem({ + label: global.language.batchCopyTo, + submenu: getCopyMoveMenuItems(batchSelectedIdList, "CopyItem"), + }), + new MenuItem({ type: "separator" }), + new MenuItem({ + label: global.language.batchConvertRelativePath, + click: () => { + convertTarget(batchSelectedIdList, "Relative"); + }, + }), + new MenuItem({ + label: global.language.batchConvertAbsolutePath, + click: () => { + convertTarget(batchSelectedIdList, "Absolute"); + }, + }), + new MenuItem({ type: "separator" }), + new MenuItem({ + label: global.language.batchRefreshIcon, + click: () => { + refreshIcon(batchSelectedIdList); + }, + }), + new MenuItem({ type: "separator" }), + new MenuItem({ + label: global.language.batchDelete, + click: () => { + let res = dialog.showMessageBoxSync(global.mainWindow, { + message: global.language.batchDeletePrompt, + buttons: [global.language.ok, global.language.cancel], + type: "question", + noLink: true, + cancelId: 1, + }); + if (res === 0) { + for (const id of batchSelectedIdList) { + // 删除数据 + del(id); + // 快捷键 + setShortcutKey(); + } + // 通知前端删除数据 + sendToWebContent( + "mainWindow", + "onDeleteItem", + batchSelectedIdList + ); + } + }, + }) + ); + } + } + // 非锁定项目下可以批量操作 + if (type === "main" && !lockItem && classification.type === 0) { + menuList.push( + new MenuItem({ type: "separator" }), + new MenuItem({ + label: !batchOperation + ? global.language.batchOperation + : global.language.cancelBatchOperation, + click: () => { + sendToWebContent( + "mainWindow", + "onItemBatchOperation", + !batchOperation + ); + }, + }) + ); + } + if (menuList.length > 0) { + // 载入菜单 + let menu = Menu.buildFromTemplate(menuList); + // 菜单显示 + menu.on("menu-will-show", () => { + global.itemRightMenu = true; + }); + // 菜单关闭 + menu.on("menu-will-close", () => { + global.itemRightMenu = false; + sendToWebContent( + type === "quickSearch" ? "quickSearchWindow" : "mainWindow", + "onItemRightMenuClose", + [] + ); + }); + // 显示 + menu.popup(); + } + }); + // 创建网络图标窗口 + ipcMain.on("createItemNetworkIconWindow", () => { + createNetworkIconWindow(); + }); + // 显示网络图标窗口 + ipcMain.on("showItemNetworkIconWindow", () => { + if (global.itemNetworkIconWindow) { + global.itemNetworkIconWindow.show(); + } + }); + // 关闭网络图标窗口 + ipcMain.on("closeItemNetworkIconWindow", () => { + closeWindow(global.itemNetworkIconWindow); + }); + // 创建SVG图标窗口 + ipcMain.on("createItemSVGIconWindow", () => { + createSVGIconWindow(); + }); + // 显示SVG图标窗口 + ipcMain.on("showItemSVGIconWindow", () => { + if (global.itemSVGIconWindow) { + global.itemSVGIconWindow.show(); + } + }); + // 关闭SVG图标窗口 + ipcMain.on("closeItemSVGIconWindow", () => { + closeWindow(global.itemSVGIconWindow); + }); + // 获取系统项目 + ipcMain.on("getSystemItemList", (event, args) => { + let res = getSystemItemList(); + sendToWebContent("itemAddEditWindow", "onGetSystemItemList", res); + }); + // 获取开始菜单项目 + ipcMain.on("getStartMenuItemList", (event, args) => { + getStartMenuItemList(); + }); + // 获取APPX项目 + ipcMain.on("getAppxItemList", (event, args) => { + getAppxItemList(); + }); + // 拖入项目 + ipcMain.on("dropItem", (event, args) => { + drop(args.classificationId, args.pathList); + }); + // 运行项目 + ipcMain.on("runItem", (event, args) => { + run(args.type, args.operation, args.item); + }); + // 项目拖出 + ipcMain.on("itemDragOut", (event, args) => { + let item: Item = args; + try { + // 网站和系统不能拖出 + if (item.type === 2 || item.type === 3) { + // 取消拖出状态 + sendToWebContent("mainWindow", "onItemCancelDragOut", {}); + return; + } + let icon = join(process.env.VITE_PUBLIC, "drag-and-drop.png"); + event.sender.startDrag({ + file: getAbsolutePath(item.data.target), + icon: icon, + }); + } finally { + // 取消拖出状态 + sendToWebContent("mainWindow", "onItemCancelDragOut", {}); + } + }); + // 更新打开信息 + ipcMain.on("updateItemOpenInfo", (event, args) => { + updateOpenInfo(args.type, args.id); + }); +} diff --git a/electron/main/main/index.ts b/electron/main/main/index.ts new file mode 100644 index 0000000..3a518d5 --- /dev/null +++ b/electron/main/main/index.ts @@ -0,0 +1,701 @@ +import { + BrowserWindow, + Display, + Menu, + Tray, + app, + screen, + shell, +} from "electron"; +import { createSettingWindow } from "../setting"; +import { join } from "node:path"; +import cacheData from "../commons/cacheData"; +import { getMainBackgorunColor, sendToWebContent } from "../commons"; + +// 窗口 +let mainWindow: BrowserWindow | null = null; + +/** + * 主窗口 + */ +function createMainWindow() { + // 如果窗口存在先关闭窗口 + if (mainWindow && !mainWindow.isDestroyed() && mainWindow.isVisible()) { + mainWindow.close(); + mainWindow = null; + global.mainWindow = null; + } + // 创建窗口 + mainWindow = global.mainWindow = new BrowserWindow({ + title: "Dawn Launcher", + width: 800, + height: 600, + type: "toolbar", + frame: false, + show: false, + maximizable: false, + minimizable: false, + fullscreenable: false, + transparent: global.setting.appearance.transparency < 1, + skipTaskbar: true, + backgroundColor: + global.setting.appearance.transparency === 1 + ? getMainBackgorunColor() + : null, + webPreferences: { + spellcheck: false, + backgroundThrottling: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL); + } else { + mainWindow.loadFile(join(process.env.DIST, "index.html")); + } + // 加载完毕 + mainWindow.webContents.on("did-finish-load", () => { + // 恢复上一次的位置 + let bounds = cacheData.cacheStore.get("mainWindowBounds"); + if (bounds) { + mainWindow.setBounds(bounds); + } + // 永远居中不可移动 + if (global.setting.general.alwaysCenter) { + mainWindow.setMovable(false); + } else { + mainWindow.setMovable(!global.setting.general.fixedPosition); + } + // 永远置顶 + if (global.setting.general.alwaysTop) { + mainWindow.setAlwaysOnTop(true, "screen-saver"); + } + // 锁定尺寸 + if (!global.setting.general.lockSize) { + mainWindow.setResizable(!global.setting.general.lockSize); + } + // 托盘 + createTray(!global.setting.general.hideTray); + // 永远居中 + alwaysCenter(); + // 判断窗口位置 + let displays = getWindowInScreen(); + if (displays.length === 0) { + // 代表窗口的位置不再任一屏幕内,将窗口位置移动到主窗口 + mainWindow.center(); + } + // 边缘吸附 + edgeAdsorb(null); + }); + mainWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 显示窗口 + mainWindow.on("show", () => { + // 显示窗口时将输入法切换为英文模式 + if (global.setting.general.switchEnglish) { + global.addon.switchEnglish( + mainWindow.getNativeWindowHandle().readInt32LE(0) + ); + } + // 边缘吸附 + edgeAdsorb(null); + }); + // 失去焦点 + mainWindow.on("blur", () => { + if (global.setting.general.edgeAutoHide && global.blurHide) { + let scaleFactor = screen.getPrimaryDisplay().scaleFactor; + autoHide( + screen.getCursorScreenPoint().x * scaleFactor, + screen.getCursorScreenPoint().y * scaleFactor, + 0, + false + ); + } + if ( + mainWindow.isVisible() && + global.setting.general.hideLoseFocus && + !global.setting.general.alwaysTop + ) { + // 如果当前还有打开的子窗口就不执行失去焦点隐藏 + if (mainWindow.getChildWindows().length === 0) { + hideMainWindow(); + } + } + }); + // 窗口移动完毕 + mainWindow.on("moved", () => { + // 边缘吸附 + edgeAdsorb(null); + // 永远居中 + alwaysCenter(); + // 记录位置 + cacheData.cacheStore.set("mainWindowBounds", mainWindow.getBounds()); + }); + // 改变窗口大小完毕 + mainWindow.on("resized", () => { + // 边缘吸附 + edgeAdsorb(null); + // 永远居中 + alwaysCenter(); + // 记录位置 + cacheData.cacheStore.set("mainWindowBounds", mainWindow.getBounds()); + }); + // 窗口隐藏事件 + mainWindow.on("hide", () => { + // 收起子分类 + if (global.setting.classification.hideWindowCollapseSubClassification) { + sendToWebContent("mainWindow", "onCollapseSubClassification", {}); + } + }); + // 创建鼠标hook + addon.createMouseHook((...args: any[]) => { + let res = JSON.parse(args[1]); + let event: string = res.event; + let x: number = res.x; + let y: number = res.y; + // 1左键 2右键 3滚轮 + let button: number = res.button; + if (event === "mousemove") { + // 鼠标移动 + if (!global.blurHide) { + // 停靠在桌面边缘时自动隐藏 + autoHide(x, y, 40, true); + } + } else if (event === "mousedown") { + // 鼠标按下 + } else if (event === "mouseup") { + // 鼠标抬起 + if (button === 3) { + // 中间单击 + // 显示隐藏窗口 + showHideMouseWheelClick(); + } + // 双击任务栏 + doubleClickTaskbar(button); + } + }); + // 禁用标题栏右键 + mainWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + mainWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + mainWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 显示窗口之前 + * @param blurHide + * @param selectedClassificationId + */ +function showMainWindowBefore( + blurHide: boolean, + selectedClassificationId: number | null = null +) { + // 向主窗口发送通知 + sendToWebContent("mainWindow", "onShowMainWindowBefore", { + blurHide, + selectedClassificationId, + }); +} + +/** + * 显示窗口 + * @param blurHide + */ +function showMainWindow(blurHide: boolean) { + // flag + let flag = true; + // 是否开启勿扰模式 + if (global.setting.general.notDisturb) { + if (global.addon.isFullscreen()) { + flag = false; + } + } + // 显示时跟随鼠标位置 + showFollowMousePosition(); + if (flag) { + global.mainWindow.show(); + // 如果没有设置置顶时,显示窗口先置顶一下,再取消 + if (!global.mainWindow.isAlwaysOnTop) { + mainWindow.setAlwaysOnTop(true, "screen-saver"); + mainWindow.setAlwaysOnTop(false); + } + global.mainWindow.focus(); + global.blurHide = blurHide; + if (blurHide) { + global.blurHide = true; + } else { + global.blurHide = false; + } + } +} + +/** + * 隐藏窗口 + */ +function hideMainWindow() { + if (global.mainWindow.isVisible()) { + global.mainWindow.hide(); + global.blurHide = false; + } +} + +/** + * 托盘 + */ +function createTray(show: boolean) { + if (show) { + // 销毁托盘 + if (global.tray && !global.tray.isDestroyed()) { + global.tray.destroy(); + global.tray = null; + } + // 创建托盘 + global.tray = new Tray(join(process.env.VITE_PUBLIC, "tray.ico")); + // 菜单 + let contextMenu = Menu.buildFromTemplate([ + { + label: global.language.displayMainWindow, + click: function () { + showMainWindowBefore(true); + }, + }, + { + label: global.language.settings, + click: function () { + createSettingWindow(); + }, + }, + { + label: global.language.exit, + click: function () { + app.quit(); + }, + }, + ]); + global.tray.setToolTip("Dawn Launcher"); + global.tray.setContextMenu(contextMenu); + // 点击托盘 + global.tray.on("click", () => { + showMainWindowBefore(true); + }); + } else { + // 销毁托盘 + if (global.tray && !global.tray.isDestroyed()) { + global.tray.destroy(); + global.tray = null; + } + } +} + +/** + * 获取窗口所在的屏幕 + */ +function getWindowInScreen() { + let inDisplays: Array = []; + let displays = screen.getAllDisplays(); + let bounds = global.mainWindow.getBounds(); + for (let display of displays) { + let workArea = display.workArea; + if ( + ((workArea.x <= bounds.x && workArea.x + workArea.width >= bounds.x) || + (workArea.x <= bounds.x + bounds.width && + workArea.x + workArea.width >= bounds.x + bounds.width)) && + ((workArea.y <= bounds.y && workArea.y + workArea.height >= bounds.y) || + (workArea.y <= bounds.y + bounds.height && + workArea.y + workArea.height >= bounds.y + bounds.height)) + ) { + inDisplays.push(display); + } + } + return inDisplays; +} + +/** + * 边缘吸附 + * @param display + * @returns + */ +function edgeAdsorb(display: Display | null) { + // 如果勾选停靠在桌面边缘时自动隐藏,放行 + if ( + global.mainWindow.isDestroyed() || + (!global.setting.general.edgeAdsorb && !global.setting.general.edgeAutoHide) + ) { + return; + } + try { + // 清空方向 + global.mainWindowDirection = null; + // 屏幕 + let displays = display ? [display] : getWindowInScreen(); + if (displays.length > 1 || displays.length === 0) { + return; + } + // 获取屏幕工作区域 + let workArea = displays[0].workArea; + // 窗口位置信息 + let bounds = global.mainWindow.getBounds(); + if (bounds.x + bounds.width >= workArea.x + workArea.width) { + // 右侧 + global.mainWindow.setBounds({ + x: workArea.x + workArea.width - bounds.width, + }); + global.mainWindowDirection = "right"; + global.blurHide = false; + } else if (bounds.x <= workArea.x) { + // 左侧 + global.mainWindow.setBounds({ x: workArea.x }); + global.mainWindowDirection = "left"; + global.blurHide = false; + } + if (bounds.y + bounds.height >= workArea.y + workArea.height) { + // 底部 + global.mainWindow.setBounds({ + y: workArea.y + workArea.height - bounds.height, + }); + global.mainWindowDirection = "bottom"; + global.blurHide = false; + } else if (bounds.y <= workArea.y) { + // 顶部 + global.mainWindow.setBounds({ y: workArea.y }); + global.mainWindowDirection = "top"; + global.blurHide = false; + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + global.mainWindow.setBounds({ x: 1, y: 1 }); + } +} + +/** + * 显示时跟随鼠标位置 + */ +function showFollowMousePosition() { + // 当永远居中、固定位置勾选后不能使用显示时跟随鼠标位置 + if ( + !global.setting.general.alwaysCenter && + !global.setting.general.fixedPosition && + global.setting.general.showFollowMousePosition + ) { + // 获取鼠标位置 + let point = screen.getCursorScreenPoint(); + // 窗口位置信息 + let bounds = global.mainWindow.getBounds(); + let x = Math.round(bounds.width / 2); + let y = Math.round(bounds.height / 2); + // 设置窗口位置 + global.mainWindow.setPosition(point.x - x, point.y - y); + for (let i = 0; i < 10; i++) { + global.mainWindow.setSize(bounds.width, bounds.height); + } + // 获取当前鼠标所在屏幕 + let display = screen.getDisplayNearestPoint(point); + // 边缘吸附 + edgeAdsorb(display); + } +} + +/** + * 中间单击显示/隐藏窗口 + */ +function showHideMouseWheelClick() { + if (global.setting.general.showHideMouseWheelClick) { + if (global.mainWindow.isVisible()) { + hideMainWindow(); + } else { + showMainWindowBefore(true); + } + } +} + +/** + * 永远居中 + */ +function alwaysCenter() { + if (global.setting.general.alwaysCenter) { + mainWindow.center(); + } +} + +/** + * 边缘自动隐藏 + * @param x + * @param y + * @param size + * @param timer 是否启用延迟显示/隐藏 + * @returns + */ +function autoHide(x: number, y: number, size: number, timer: boolean) { + if (global.mainWindow.isDestroyed() || !global.setting.general.edgeAutoHide) { + return; + } + // 当有子窗口时不自动隐藏 + if (mainWindow.getChildWindows().length > 0) { + return; + } + try { + // 屏幕 + let displays = getWindowInScreen(); + if (displays.length > 1 || displays.length === 0) { + return; + } + // 工作区域 + let workArea = displays[0].workArea; + // 缩放比例 + let scaleFactor = displays[0].scaleFactor; + // 窗口位置信息 + let bounds = mainWindow.getBounds(); + if (mainWindow.isVisible()) { + let flag = false; + if (bounds.x + bounds.width >= workArea.x + workArea.width) { + // 右侧 + flag = + x <= bounds.x * scaleFactor - size || + y <= bounds.y * scaleFactor - size || + y >= (bounds.y + bounds.height) * scaleFactor + size; + } else if (bounds.x === workArea.x) { + // 左侧 + flag = + x > (bounds.x + bounds.width) * scaleFactor + size || + y <= bounds.y * scaleFactor - size || + y >= (bounds.y + bounds.height) * scaleFactor + size; + } else if (bounds.y + bounds.height >= workArea.y + workArea.height) { + // 底部 + flag = + y < bounds.y * scaleFactor - size || + x <= bounds.x * scaleFactor - size || + x >= (bounds.x + bounds.width) * scaleFactor + size; + } else if (bounds.y === workArea.y) { + // 顶部 + flag = + y > (bounds.y + bounds.height) * scaleFactor + size || + x <= bounds.x * scaleFactor - size || + x >= (bounds.x + bounds.width) * scaleFactor + size; + } + if (flag && !global.classificationRightMenu && !global.itemRightMenu) { + if ( + timer && + global.setting.general.delayHideMs > 0 && + !global.autoHideTimer + ) { + // 延迟隐藏 + global.autoHideTimer = setTimeout(function () { + hideMainWindow(); + }, global.setting.general.delayHideMs); + } else if (!timer || global.setting.general.delayHideMs === 0) { + // 隐藏 + hideMainWindow(); + } + } else { + // 清空timer + clearTimeout(global.autoHideTimer); + global.autoHideTimer = null; + } + } else { + if (global.mainWindowDirection) { + let flag = false; + let scaleFactorX = bounds.x * scaleFactor; + let scaleFactorY = bounds.y * scaleFactor; + let windowWidthPosition = (bounds.x + bounds.width) * scaleFactor; + let windowHeightPosition = (bounds.y + bounds.height) * scaleFactor; + if ( + global.mainWindowDirection === "right" && + x >= windowWidthPosition - 1 && + y >= scaleFactorY && + y <= windowHeightPosition + ) { + // 右侧 + flag = true; + } else if ( + global.mainWindowDirection === "left" && + x <= workArea.x && + y >= scaleFactorY && + y <= windowHeightPosition + ) { + // 左侧 + flag = true; + } else if ( + global.mainWindowDirection === "bottom" && + y >= windowHeightPosition - 1 && + x >= scaleFactorX && + x <= windowWidthPosition + ) { + // 底部 + flag = true; + } else if ( + global.mainWindowDirection === "top" && + y <= workArea.y && + x >= scaleFactorX && + x <= windowWidthPosition + ) { + // 顶部 + flag = true; + } + if (flag) { + if ( + timer && + global.setting.general.delayDisplayMs > 0 && + !global.autoHideTimer + ) { + // 延迟显示 + global.autoHideTimer = setTimeout(function () { + showMainWindowBefore(false); + }, global.setting.general.delayDisplayMs); + } else if (!timer || global.setting.general.delayDisplayMs === 0) { + // 显示 + showMainWindowBefore(false); + } + } else { + // 清空timer + clearTimeout(global.autoHideTimer); + global.autoHideTimer = null; + } + } + } + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + global.mainWindow.setBounds({ x: 1, y: 1 }); + } +} + +/** + * 双击任务栏显示/隐藏 + */ +function doubleClickTaskbar(button: number) { + // 必须开启设置 + if (!global.setting.general.showHideDoubleClickTaskbar) { + return; + } + // 不是左键的话 + if (button !== 1) { + // 清除timeout + clearTimeout(global.doubleClickTaskbarTimer); + // 清空计数 + global.doubleClickTaskbarCounter = 0; + return; + } + // 获取屏幕 + let displays = getWindowInScreen(); + if (displays.length > 1 || displays.length === 0) { + // 清除timeout + clearTimeout(global.doubleClickTaskbarTimer); + // 清空计数 + global.doubleClickTaskbarCounter = 0; + return; + } + // 获取鼠标位置 + let point = screen.getCursorScreenPoint(); + // 判断鼠标是否在当前屏幕内 + if ( + point.x >= displays[0].bounds.x && + point.x <= displays[0].bounds.x + displays[0].bounds.width && + point.y >= displays[0].bounds.y && + point.y <= displays[0].bounds.y + displays[0].bounds.height + ) { + // 判断是否双击在任务栏上 + let flag = false; + // 判断任务栏在哪一侧 + if (displays[0].bounds.height > displays[0].workArea.height) { + if (displays[0].bounds.y === displays[0].workArea.y) { + // 底部 + let top = displays[0].workArea.y + displays[0].workArea.height; + let bottom = displays[0].bounds.y + displays[0].bounds.height; + if (point.y >= top && point.y <= bottom) { + flag = true; + } + } else { + // 顶部 + if ( + point.y >= displays[0].bounds.y && + point.y <= displays[0].workArea.y + ) { + flag = true; + } + } + } else if (displays[0].bounds.width > displays[0].workArea.width) { + if (displays[0].bounds.x === displays[0].workArea.x) { + // 右侧 + let left = displays[0].workArea.x + displays[0].workArea.width; + let right = displays[0].bounds.x + displays[0].bounds.width; + if (point.x >= left && point.x <= right) { + flag = true; + } + } else { + // 左侧 + if ( + point.x >= displays[0].bounds.x && + point.x <= displays[0].workArea.x + ) { + flag = true; + } + } + } + if (flag) { + // 监听双击 + if (!global.doubleClickTaskbarCounter) { + global.doubleClickTaskbarCounter = 0; + } + // +1 + global.doubleClickTaskbarCounter++; + // 等于2就是双击 + if ( + global.doubleClickTaskbarCounter && + global.doubleClickTaskbarCounter === 2 + ) { + // 清除timeout + clearTimeout(global.doubleClickTaskbarTimer); + // 清空计数 + global.doubleClickTaskbarCounter = 0; + // 判断点击的窗口ClassName + let className = global.addon.getCursorPosWindowClassName(); + if (className.indexOf("MSTask") >= 0 || className === "Shell_TrayWnd") { + if (mainWindow.isVisible()) { + hideMainWindow(); + } else { + showMainWindowBefore(false); + } + } + } else { + // 间隔为500毫秒,如果超过500毫秒就代表不是双击 + global.doubleClickTaskbarTimer = setTimeout(function () { + global.doubleClickTaskbarCounter = 0; + }, 500); + } + } else { + // 清除timeout + clearTimeout(global.doubleClickTaskbarTimer); + // 清空计数 + global.doubleClickTaskbarCounter = 0; + } + } else { + // 清除timeout + clearTimeout(global.doubleClickTaskbarTimer); + // 清空计数 + global.doubleClickTaskbarCounter = 0; + } +} + +export { + createMainWindow, + showMainWindowBefore, + showMainWindow, + hideMainWindow, + createTray, + edgeAdsorb, + getWindowInScreen, + showHideMouseWheelClick, + alwaysCenter, + autoHide, +}; diff --git a/electron/main/main/ipcEvent.ts b/electron/main/main/ipcEvent.ts new file mode 100644 index 0000000..ccea079 --- /dev/null +++ b/electron/main/main/ipcEvent.ts @@ -0,0 +1,33 @@ +import { ipcMain } from "electron"; +import { createTray, hideMainWindow, showMainWindow } from "./index"; +import { initAssociateFolder } from "../classification"; +import { checkInvalid } from "../item"; + +export default function () { + // 显示窗口 + ipcMain.on("showMainWindow", (event, args) => { + showMainWindow(args.blurHide); + }); + // 隐藏窗口 + ipcMain.on("hideMainWindow", () => { + hideMainWindow(); + }); + // 托盘 + ipcMain.on("setTray", (event, args) => { + createTray(args); + }); + // 初始化数据 + ipcMain.on("mainWindowInitData", () => { + // 初始化关联文件夹 + initAssociateFolder(); + // 检测无效项目 + if (global.setting.item.checkInvalidItem) { + // 五分钟检测一次 + global.checkInvalidItemInterval = setInterval(() => { + checkInvalid(); + }, 300000); + // 初始化执行一次 + checkInvalid(); + } + }); +} diff --git a/electron/main/search/index.ts b/electron/main/search/index.ts new file mode 100644 index 0000000..79cb52b --- /dev/null +++ b/electron/main/search/index.ts @@ -0,0 +1,131 @@ +import { BrowserWindow, shell } from "electron"; +import { join } from "node:path"; +import { getMainBackgorunColor, sendToWebContent } from "../commons"; +import cacheData from "../commons/cacheData"; + +// 窗口 +let quickSearchWindow: BrowserWindow | null = null; + +/** + * 快速搜索窗口 + */ +function createQuickSearchWindow() { + // 创建窗口 + global.quickSearchWindowInit = false; + quickSearchWindow = global.quickSearchWindow = new BrowserWindow({ + title: "Dawn Launcher", + width: 600, + height: 44, + type: "toolbar", + frame: false, + show: false, + maximizable: false, + minimizable: false, + fullscreenable: false, + resizable: false, + alwaysOnTop: true, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + backgroundThrottling: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + quickSearchWindow.loadURL( + process.env.VITE_DEV_SERVER_URL + "Search/QuickSearch" + ); + } else { + quickSearchWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/Search/QuickSearch", + }); + } + quickSearchWindow.webContents.on("did-finish-load", function () { + // 恢复上一次的位置 + let bounds = cacheData.cacheStore.get("quickSearchWindowBounds"); + if (bounds) { + quickSearchWindow.setBounds(bounds); + } + // 设置可以显示 + global.searchWindowShow = true; + }); + quickSearchWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 失去焦点 + quickSearchWindow.on("blur", () => { + // 失去焦点后隐藏 + if (global.setting.quickSearch.hideLoseFocus) { + hideQuickSearchWindow(); + } + }); + // 显示窗口 + quickSearchWindow.on("show", () => { + // 背景色 + quickSearchWindow.setBackgroundColor( + global.setting.appearance.theme.mainBackgroundColor + ); + // 显示窗口时将输入法切换为英文模式 + if (global.setting.general.switchEnglish) { + global.addon.switchEnglish( + quickSearchWindow.getNativeWindowHandle().readInt32LE(0) + ); + } + }); + // 窗口移动完毕 + quickSearchWindow.on("moved", () => { + // 记录位置 + cacheData.cacheStore.set( + "quickSearchWindowBounds", + quickSearchWindow.getBounds() + ); + }); + // 隐藏窗口 + quickSearchWindow.on("hide", () => { + // 设置默认高度 + quickSearchWindow.setBounds({ height: 44 }); + // 发送消息清空数据 + quickSearchWindow.webContents.send("onQuickSearchClearData"); + }); + // 禁用标题栏右键 + quickSearchWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + quickSearchWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + quickSearchWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 显示快速搜索窗口之前 + */ +function showQuickSearchWindowBefore() { + // 向主窗口发送通知 + sendToWebContent("quickSearchWindow", "onShowQuickSearchWindowBefore", null); +} + +/** + * 显示快速搜索窗口 + */ +function showQuickSearchWindow() { + quickSearchWindow.show(); +} + +/** + * 隐藏快速搜索窗口 + */ +function hideQuickSearchWindow() { + quickSearchWindow.hide(); +} + +export { + createQuickSearchWindow, + showQuickSearchWindow, + hideQuickSearchWindow, + showQuickSearchWindowBefore, +}; diff --git a/electron/main/search/ipcEvent.ts b/electron/main/search/ipcEvent.ts new file mode 100644 index 0000000..fdfc40c --- /dev/null +++ b/electron/main/search/ipcEvent.ts @@ -0,0 +1,21 @@ +import { ipcMain } from "electron"; +import { hideQuickSearchWindow, showQuickSearchWindow } from "."; + +export default function () { + // 快速搜索初始化完成 + ipcMain.on("quickSearchInitFinished", () => { + global.quickSearchWindowInit = true; + }); + // 显示快速搜索窗口 + ipcMain.on("showQuickSearchWindow", () => { + showQuickSearchWindow(); + }); + // 隐藏快速搜索窗口 + ipcMain.on("hideQuickSearchWindow", () => { + hideQuickSearchWindow(); + }); + // 设置快速搜索窗口高度 + ipcMain.on("setQuickSearchWindowHeight", (event, args) => { + global.quickSearchWindow.setBounds({ height: args }); + }); +} diff --git a/electron/main/setting/data.ts b/electron/main/setting/data.ts new file mode 100644 index 0000000..4634e54 --- /dev/null +++ b/electron/main/setting/data.ts @@ -0,0 +1,82 @@ +import { Setting } from "../../../types/setting"; +import { getSetting } from "../../../commons/utils/setting"; +import { getDataSqlite3 } from "../../commons/betterSqlite3"; + +// 获取数据库 +let db = getDataSqlite3(); + +// 设置表名 +let settingTableName = "setting"; + +/** + * 初始化 + */ +function init() { + // sql + let sql = `CREATE TABLE IF NOT EXISTS ${settingTableName} ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + setting TEXT NOT NULL)`; + // 运行 + db.exec(sql); + // 如果无数据的话,初始化 + let setting = select(); + if (setting) { + global.setting = setting; + } else { + setting = getSetting(null); + if (add(setting)) { + global.setting = setting; + } + } +} + +/** + * 查询 + */ +function select() { + // sql + let sql = `SELECT setting FROM ${settingTableName} WHERE id = 1`; + // 运行 + let row: any = db.prepare(sql).get(); + // 返回 + if (row && row.setting) { + return getSetting(JSON.parse(row.setting)); + } else { + return null; + } +} + +/** + * 添加 + */ +function add(setting: Setting) { + // SQL + let sql = `INSERT INTO ${settingTableName} + (id, setting) + VALUES (?, ?)`; + // 运行 + let id = db.prepare(sql).run(1, JSON.stringify(setting)).lastInsertRowid; + if (id) { + global.setting = setting; + return true; + } + return false; +} + +/** + * 更新 + */ +function update(setting: Setting) { + // SQL + let sql = `UPDATE ${settingTableName} + SET setting = ? + WHERE id = ?`; + // 运行 + let res = db.prepare(sql).run(JSON.stringify(setting), 1).changes > 0; + if (res) { + global.setting = setting; + } + return res; +} + +export { init, select, add, update }; diff --git a/electron/main/setting/index.ts b/electron/main/setting/index.ts new file mode 100644 index 0000000..1ef1a86 --- /dev/null +++ b/electron/main/setting/index.ts @@ -0,0 +1,146 @@ +import { BrowserWindow, globalShortcut, shell } from "electron"; +import { join } from "node:path"; +import { Setting } from "../../../types/setting"; +import { hideMainWindow, showMainWindowBefore } from "../main/index"; +import { list as selectClassificationList } from "../classification/data"; +import { list as selectItemList } from "../item/data"; +import { run } from "../item"; +import { closeWindow, getMainBackgorunColor } from "../commons/index"; +import { + createQuickSearchWindow, + hideQuickSearchWindow, + showQuickSearchWindowBefore, +} from "../search"; + +// 窗口 +let settingWindow: BrowserWindow | null = null; + +/** + * 设置窗口 + */ +function createSettingWindow() { + // 如果窗口存在先关闭窗口 + closeWindow(settingWindow); + // 创建窗口 + settingWindow = global.settingWindow = new BrowserWindow({ + title: "Dawn Launcher", + frame: false, + parent: global.mainWindow, + height: 500, + width: 600, + type: "toolbar", + maximizable: false, + minimizable: false, + resizable: false, + fullscreenable: false, + skipTaskbar: true, + show: false, + backgroundColor: getMainBackgorunColor(), + webPreferences: { + spellcheck: false, + preload: join(__dirname, "../preload/index.js"), + devTools: process.env.NODE_ENV === "development", + }, + }); + if (process.env.VITE_DEV_SERVER_URL) { + settingWindow.loadURL(process.env.VITE_DEV_SERVER_URL + "Setting/Index"); + } else { + settingWindow.loadFile(join(process.env.DIST, "index.html"), { + hash: "/Setting/Index", + }); + } + settingWindow.webContents.setWindowOpenHandler(({ url }) => { + if (url.startsWith("https:")) shell.openExternal(url); + return { action: "deny" }; + }); + // 禁用标题栏右键 + settingWindow.hookWindowMessage(278, function (e) { + // 窗口禁用 + settingWindow.setEnabled(false); + // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 + setTimeout(() => { + settingWindow.setEnabled(true); + }, 100); + return true; + }); +} + +/** + * 设置快捷键 + */ +function setShortcutKey(setting: Setting = global.setting) { + // 取消所有快捷键 + globalShortcut.unregisterAll(); + // 设置主窗口显示/隐藏快捷键 + if ( + setting.general.showHideShortcutKey && + setting.general.showHideShortcutKey.trim() !== "" + ) { + globalShortcut.register(setting.general.showHideShortcutKey, () => { + if (global.mainWindow.isVisible()) { + hideMainWindow(); + } else { + showMainWindowBefore(true); + } + }); + } + // 分类快捷键 + let classificationList = selectClassificationList(); + for (const classification of classificationList) { + if (classification.globalShortcutKey && classification.shortcutKey) { + globalShortcut.register(classification.shortcutKey, () => { + // 分类 + showMainWindowBefore(true, classification.id); + }); + } + } + // 项目快捷键 + let itemList = selectItemList(); + for (const item of itemList) { + if (item.globalShortcutKey && item.shortcutKey) { + globalShortcut.register(item.shortcutKey, () => { + // 项目 + run("main", "open", item); + }); + } + } + // 快速搜索 + if ( + setting.quickSearch.showHideShortcutKey && + setting.quickSearch.showHideShortcutKey.trim() !== "" + ) { + globalShortcut.register(setting.quickSearch.showHideShortcutKey, () => { + // 如果窗口不存在或者被销毁的话,就创建窗口 + if (!global.quickSearchWindow || global.quickSearchWindow.isDestroyed()) { + createQuickSearchWindow(); + } + // 如果初始化完毕并且窗口状态是正常的话,可以进行显示/隐藏 + if ( + global.quickSearchWindowInit && + global.quickSearchWindow && + !global.quickSearchWindow.isDestroyed() + ) { + if (global.quickSearchWindow.isVisible()) { + hideQuickSearchWindow(); + } else { + showQuickSearchWindowBefore(); + } + } + }); + } +} + +/** + * 固定位置 + * @param fixedPosition + * @param alwaysCenter + */ +function setFixedPosition(fixedPosition: boolean, alwaysCenter: boolean) { + global.mainWindow.setMovable(!fixedPosition); + // 固定位置和永远居中不能同时存在 + if (alwaysCenter && fixedPosition) { + global.mainWindow.setMovable(false); + } +} + +export { createSettingWindow, setShortcutKey, setFixedPosition }; diff --git a/electron/main/setting/ipcEvent.ts b/electron/main/setting/ipcEvent.ts new file mode 100644 index 0000000..e903915 --- /dev/null +++ b/electron/main/setting/ipcEvent.ts @@ -0,0 +1,207 @@ +import { app, dialog, ipcMain } from "electron"; +import { + closeWindow, + getUserDataPath, + relaunch, + sendToWebContent, +} from "../commons/index"; +import { createSettingWindow, setFixedPosition, setShortcutKey } from "."; +import { add, select, update } from "./data"; +import { basename } from "node:path"; +import { edgeAdsorb } from "../main"; +import { sendAllWindows } from "../commons"; +import { parse } from "node:path"; +import { statSync, mkdirSync, copyFileSync, readFileSync } from "node:fs"; +import mime from "mime"; +import { checkInvalid } from "../item"; +import { updateItemOpenNumberSortToDefualt } from "../classification"; + +export default function () { + // 创建设置窗口 + ipcMain.on("createSettingWindow", () => { + createSettingWindow(); + }); + // 显示设置窗口 + ipcMain.on("showSettingWindow", () => { + if (global.settingWindow) { + global.settingWindow.show(); + } + }); + // 关闭设置窗口 + ipcMain.on("closeSettingWindow", () => { + closeWindow(global.settingWindow); + }); + // 查询设置 + ipcMain.on("selectSetting", (event, args) => { + event.returnValue = select(); + }); + // 添加设置 + ipcMain.on("addSetting", (event, args) => { + event.returnValue = add(args); + }); + // 更新设置 + ipcMain.on("updateSetting", (event, args) => { + // 记录旧透明度 + let oldTransparency = global.setting.appearance.transparency; + // 记录旧语言 + let oldLanguage = global.setting.general.language; + // 更新 + event.returnValue = update(args); + // 判断是否需要重启主界面 + if ( + (oldTransparency === 1 && global.setting.appearance.transparency < 1) || + (oldTransparency < 1 && global.setting.appearance.transparency === 1) + ) { + // 重新启动程序 + relaunch(); + return; + } else if (global.setting.general.language !== oldLanguage) { + // 重新启动程序 + relaunch(); + return; + } + // 通知所有窗口 + sendAllWindows("onUpdateSetting", args); + }); + // 开机启动 + ipcMain.on("startup", (event, args) => { + if (process.env.NODE_ENV !== "development") { + const exeName = basename(process.execPath); + app.setLoginItemSettings({ + openAtLogin: args, + openAsHidden: false, + path: process.execPath, + args: ["--processStart", `"${exeName}"`], + }); + } + }); + // 设置快捷键 + ipcMain.on("setShortcutKey", (event, args) => { + setShortcutKey(args); + }); + // 永远置顶 + ipcMain.on("setAlwaysTop", (event, args) => { + if (args) { + global.mainWindow.setAlwaysOnTop(true, "screen-saver"); + } else { + global.mainWindow.setAlwaysOnTop(false); + } + }); + // 锁定尺寸 + ipcMain.on("setLockSize", (event, args) => { + global.mainWindow.setResizable(!args); + }); + // 固定位置 + ipcMain.on("setFixedPosition", (event, args) => { + setFixedPosition(args.fixedPosition, args.alwaysCenter); + }); + // 永远居中 + ipcMain.on("setAlwaysCenter", (event, args) => { + if (args.alwaysCenter) { + global.mainWindow.center(); + global.mainWindow.setMovable(false); + } else { + setFixedPosition(args.fixedPosition, args.alwaysCenter); + } + }); + // 边缘吸附 + ipcMain.on("setEdgeAdsorb", (event, args) => { + if (args) { + global.setting.general.edgeAdsorb = true; + edgeAdsorb(null); + } + }); + // 上传背景图 + ipcMain.on("uploadBackgrounImage", (event, args) => { + // 打开文件对话框 + let filePathList = dialog.showOpenDialogSync(global.settingWindow, { + filters: [ + { + name: "Images", + extensions: ["jpg", "jpeg", "png", "gif", "ico", "svg", "webp"], + }, + ], + }); + if (filePathList && filePathList.length > 0) { + // 获取文件路径 + let filePath = filePathList[0]; + // 解析路径 + let parsedPath = parse(filePath); + // 拷贝的路径 + let destPath = getUserDataPath() + "\\images"; + // 不存在目录,创建目录 + try { + statSync(destPath); + } catch (e) { + mkdirSync(destPath); + } + // 图片名 + let name = "backgroundImage" + parsedPath.ext; + // 全路径 + let copyFullPath = destPath + "\\" + name; + try { + // 拷贝 + copyFileSync(filePath, copyFullPath); + // 图片转base64 + let buffer = readFileSync(copyFullPath); + let image = + "data:" + + mime.getType(copyFullPath) + + ";base64," + + buffer.toString("base64"); + // 返回base64 + event.returnValue = { + name, + image, + }; + } catch (e) { + if (process.env.NODE_ENV === "development") { + console.log(e); + } + event.returnValue = null; + } + } else { + event.returnValue = null; + } + }); + // 获取背景图 + ipcMain.on("getBackgroundImage", (event, args) => { + // 图片名 + let name: string = args.name; + // 窗口 + let windowName: string = args.windowName; + try { + // 读取图片转为BASE64 + let data = readFileSync(getUserDataPath() + "\\images\\" + name); + let buffer = Buffer.from(data); + let image = + "data:" + mime.getType(name) + ";base64," + buffer.toString("base64"); + // 通知窗口 + sendToWebContent(windowName, "onSetBacngroundImage", image); + } catch (e) {} + }); + // 检测无效项目 + ipcMain.on("setCheckInvalidItem", (event, args) => { + if (args) { + if (!global.checkInvalidItemInterval) { + // 五分钟检测一次 + global.checkInvalidItemInterval = setInterval(() => { + checkInvalid(); + }, 300000); + // 执行一次 + checkInvalid(); + } + } else { + // 清空定时 + clearInterval(global.checkInvalidItemInterval); + global.checkInvalidItemInterval = null; + } + }); + // 项目打开次数 + ipcMain.on("setItemOpenNumber", (event, args) => { + if (!args) { + // 将排序为打开次数的分类修改为默认排序 + updateItemOpenNumberSortToDefualt(); + } + }); +} diff --git a/electron/main/worker.ts b/electron/main/worker.ts new file mode 100644 index 0000000..b32122d --- /dev/null +++ b/electron/main/worker.ts @@ -0,0 +1,793 @@ +import mime from "mime"; +import { + deleteExtname, + getFileName, + newItem, +} from "../../commons/utils/common"; +import { CommonItem, Item } from "../../types/item"; +import { parse, join } from "node:path"; +import { readdirSync, readFileSync, statSync, writeFileSync } from "node:fs"; +import { execSync } from "node:child_process"; +import xml2js from "xml2js"; +import { newCommonItem, newCommonItemData } from "../../commons/utils/common"; +import { ShortcutInfo } from "../../types/common"; +import { getAbsolutePath, getFileIcon } from "../commons/utils"; + +// AppxInfo +export interface AppxInfo { + packageFamilyName: string; + installLocation: string; + appId: string | null; + icon: string | null; + name: string | null; +} + +// addon +global.addon = require("../../native/addon.node"); + +// 接收消息 +process.parentPort.once("message", async (event) => { + // 参数 + let data = event.data; + // 通道 + let port = event.ports[0]; + try { + // 转为实体 + let params = JSON.parse(data); + // 获取数据参数 + let dataParamStr = readFileSync(params.data.filePath, { + encoding: "utf-8", + }); + // 转为JSON + let dataParam = JSON.parse(dataParamStr); + // 返回信息 + let res = null; + if (params.name === "getStartMenuItemList") { + res = await getStartMenuItemList(dataParam); + } else if (params.name === "getAppxItemList") { + res = await getAppxItemList(); + } else if (params.name === "getDropItemInfo") { + res = await getDropItemInfo( + dataParam.classificationId, + dataParam.pathList + ); + } else if (params.name === "refreshItemIcon") { + res = await refreshItemIcon(dataParam); + } else if (params.name === "getDirectoryItemList") { + res = await getDirectoryItemList( + dataParam.classificationId, + dataParam.dir, + dataParam.hiddenItems, + dataParam.oldList + ); + } else if (params.name === "checkInvalidItem") { + res = checkInvalidItem(dataParam); + } + // 写入结果 + writeFileSync(params.data.filePath, JSON.stringify(res)); + port.postMessage(params.data.filePath); + } catch (e) { + process.exit(); + } +}); + +/** + * 读取路径下的文件 + * @param dir + */ +function getFiles(dir: string) { + let resultList: Array = []; + try { + // 读取开始菜单下所有内容 + let pathList = readdirSync(dir); + // 循环判断文件类型 + for (let path of pathList) { + // 完整路径 + let fullPath = dir + "\\" + path; + // 判断文件类型 + let stats; + try { + // 文件类型 + stats = statSync(fullPath); + // 如果是文件夹继续向下读取,如果是文件则添加到返回列表 + if (stats.isDirectory()) { + // 文件夹 + resultList.push(...getFiles(fullPath)); + } else { + // 文件 + resultList.push(fullPath); + } + } catch (e) {} + } + } catch (e) {} + return resultList; +} +/** + * 获取开始菜单项目 + * @param cacheList + */ +async function getStartMenuItemList(cacheList: Array) { + // 返回列表 + let resultList: Array = []; + // appData + let appDataPathList = getFiles( + process.env["AppData"] + "\\Microsoft\\Windows\\Start Menu\\Programs" + ); + // programData + let programDataPathList = getFiles( + process.env["ProgramData"] + "\\Microsoft\\Windows\\Start Menu\\Programs" + ); + // 文件列表 + let filePathList: Array = []; + filePathList.push(...appDataPathList); + filePathList.push(...programDataPathList); + // 循环组装数据 + for (let filePath of filePathList) { + // 获取后缀,必须是快捷方式 + if (mime.getType(filePath) === "application/x-ms-shortcut") { + // 获取名称去掉后缀 + let name = deleteExtname(getFileName(filePath)); + // 参数 + let params = null; + // 获取真实文件路径和参数 + let shortcutInfo: ShortcutInfo | null = + global.addon.getShortcutFileInfo(filePath); + if (shortcutInfo) { + // 路径 + if (shortcutInfo.target) { + filePath = shortcutInfo.target; + } + // 参数 + if (shortcutInfo.arguments) { + params = shortcutInfo.arguments; + } + } + // 查重 + let flag = false; + for (let item of resultList) { + if (item.data.target.toLowerCase() === filePath.toLowerCase()) { + flag = true; + break; + } + } + if (!flag) { + let exist = false; + // 是否存在如果存在的话不需要重新获取图标 + if (cacheList && cacheList.length > 0) { + for (let cacheItem of cacheList) { + if (filePath === cacheItem.data.target) { + resultList.push(newCommonItem(cacheItem)); + exist = true; + break; + } + } + } + if (!exist) { + // item + let item = newCommonItem({ + name, + data: newCommonItemData({ + target: filePath, + icon: getFileIcon(filePath), + params, + }), + }); + // push + resultList.push(item); + } + } + } + } + return resultList; +} + +/** + * APPX项目 + */ +async function getAppxItemList() { + // 返回列表 + let resultList: Array = []; + try { + // ID + let id = 1; + // 获取APPX信息 + let stdout = execSync( + 'powershell -Command "Get-AppxPackage | Select-Object PackageFamilyName, InstallLocation | Format-list"' + ); + let strAppxInfo = stdout.toString("utf-8"); + // 按换行符分割 + let lines = strAppxInfo + .trim() + .split("\r\n") + .filter((str) => str.trim() !== ""); + // 临时列表 + let tempList: Array = []; + // APPX包名 + let packageFamilyName: string | null = null; + // APPX路径 + let installLocation: string | null = null; + // 循环的前一个信息 + let prev = null; + // 解析每一行 + for (let i = 0; i < lines.length; i++) { + let line = lines[i].trim(); + let arr = line.split(" : "); + if (arr.length > 1) { + if (arr[0].trim() === "PackageFamilyName") { + if (packageFamilyName && installLocation) { + tempList.push({ + packageFamilyName: packageFamilyName, + installLocation: installLocation, + appId: null, + icon: null, + name: null, + }); + packageFamilyName = arr[1].trim(); + installLocation = null; + prev = "PackageFamilyName"; + } else { + packageFamilyName = arr[1].trim(); + prev = "PackageFamilyName"; + } + } else if (arr[0].trim() === "InstallLocation") { + installLocation = arr[1].trim(); + prev = "InstallLocation"; + } + } else { + if (prev === "PackageFamilyName") { + packageFamilyName += line; + } else if (prev === "InstallLocation") { + installLocation += line; + } + } + } + if (packageFamilyName && installLocation) { + tempList.push({ + packageFamilyName: packageFamilyName, + installLocation: installLocation, + appId: null, + icon: null, + name: null, + }); + } + // 读取XML获取图标路径和名称 + for (let temp of tempList) { + let appxInfo = await getAppxInfo(temp.installLocation); + temp.appId = appxInfo.appId; + temp.icon = appxInfo.icon; + temp.name = appxInfo.name; + } + // 过滤 + let filterList = tempList.filter((e) => e.icon && e.appId && e.name); + // 图标转BASE64 + for (let appxInfo of filterList) { + try { + let buffer = readFileSync(appxInfo.icon); + let icon = + "data:" + + mime.getType(appxInfo.icon) + + ";base64," + + buffer.toString("base64"); + appxInfo.icon = icon; + } catch (ex) { + appxInfo.icon = null; + } + } + // 筛选出有图标的数据 + filterList = filterList.filter((e) => e.icon); + // 返回列表 + for (const appxInfo of filterList) { + resultList.push( + newCommonItem({ + id: id++, + name: appxInfo.name, + data: newCommonItemData({ + icon: appxInfo.icon, + target: + "Shell:AppsFolder\\" + + appxInfo.packageFamilyName + + "!" + + appxInfo.appId, + }), + }) + ); + } + // 排序 + resultList.sort((a, b) => a.name.localeCompare(b.name)); + } catch (e) {} + return resultList; +} + +/** + * 获取Appx信息 + */ +async function getAppxInfo(installLocation: string) { + // appx信息 + let appxInfo: AppxInfo = { + packageFamilyName: null, + installLocation: null, + appId: null, + icon: null, + name: null, + }; + // buffer, 解析结果 + let buffer: Buffer, result: any; + try { + // 解析 + buffer = readFileSync(installLocation + "\\AppxManifest.xml"); + result = await xml2jsSync(buffer); + // 备用名称 + let executable = null; + // targetsize图标 + let targetSizeIcon: string | null = null; + let targetSizeIconMax: number | null = null; + // scale图标 + let scaleIcon = null; + let scaleIconMax = null; + // 图标 APPID + if (result.Package.Applications && result.Package.Applications[0]) { + if (result.Package.Applications[0].Application[0]) { + // APPID + appxInfo.appId = result.Package.Applications[0].Application[0].$.Id; + // Executable + executable = result.Package.Applications[0].Application[0].$.Executable; + // 获取图标 + if ( + result.Package.Applications[0].Application[0]["uap:VisualElements"] != + null + ) { + // logo地址 + let logo = + result.Package.Applications[0].Application[0][ + "uap:VisualElements" + ][0].$.Square44x44Logo; + // 解析路径 + let parsedPath = parse(logo); + // 获取文件夹下所有文件 + let fileNameList = readdirSync( + installLocation + "\\" + parsedPath.dir + ); + // 筛选出和包含logo名称的文件名 + let filterList = fileNameList.filter( + (f) => f.indexOf(parsedPath.name) >= 0 + ); + if (filterList.length > 1) { + // 获取targetsize图片 + let targetSizeList = filterList.filter( + (f) => f.indexOf(parsedPath.name + ".targetsize") >= 0 + ); + if (targetSizeList.length > 0) { + // 获取最大图标尺寸 + let max = getMaxIconSize( + targetSizeList, + parsedPath.name, + "targetsize" + ); + if (max) { + // 记录max + targetSizeIconMax = max; + // 先获取最终图标 + let defaultList = targetSizeList.filter( + (f) => + f === + parsedPath.name + + ".targetsize-" + + max + + "_altform-unplated_devicefamily-colorfulunplated.png" + ); + targetSizeIcon = + defaultList.length > 0 + ? installLocation + + "\\" + + parsedPath.dir + + "\\" + + parsedPath.name + + ".targetsize-" + + max + + "_altform-unplated_devicefamily-colorfulunplated.png" + : null; + if (!targetSizeIcon) { + // 获取 名称.targetsize-{max}_altform-unplated.png + let defaultUnplatedList = targetSizeList.filter( + (f) => + f === + parsedPath.name + + ".targetsize-" + + max + + "_altform-unplated.png" + ); + if (defaultUnplatedList.length > 0) { + targetSizeIcon = + installLocation + + "\\" + + parsedPath.dir + + "\\" + + parsedPath.name + + ".targetsize-" + + max + + "_altform-unplated.png"; + } else { + // 获取 名称.targetsize-{max}_altform.png + let defaultAltFormList = targetSizeList.filter( + (f) => + f === + parsedPath.name + ".targetsize-" + max + "_altform.png" + ); + if (defaultAltFormList.length > 0) { + targetSizeIcon = + installLocation + + "\\" + + parsedPath.dir + + "\\" + + parsedPath.name + + ".targetsize-" + + max + + "_altform.png"; + } else { + // 获取 名称.targetsize-{max}.png + let defaultTargetSizeList = targetSizeList.filter( + (f) => + f === parsedPath.name + ".targetsize-" + max + ".png" + ); + if (defaultTargetSizeList.length > 0) { + targetSizeIcon = + installLocation + + "\\" + + parsedPath.dir + + "\\" + + defaultTargetSizeList[0]; + } + } + } + } + } + } + // 获取scale图片 + let scaleList = filterList.filter( + (f) => f.indexOf(parsedPath.name + ".scale") >= 0 + ); + if (scaleList.length > 0) { + // 获取最大图标尺寸 + let max = getMaxIconSize(scaleList, parsedPath.name, "scale"); + if (max) { + // 记录max + scaleIconMax = max; + // 获取 名称.scale-{max}.png + let defaultList = scaleList.filter( + (f) => f === parsedPath.name + ".scale-" + max + ".png" + ); + if (defaultList.length > 0) { + scaleIcon = + installLocation + + "\\" + + parsedPath.dir + + "\\" + + defaultList[0]; + } + } + } else { + scaleList = filterList.filter( + (f) => f.indexOf(parsedPath.name + ".Theme-Dark_Scale") >= 0 + ); + if (scaleList.length > 0) { + let max = getMaxIconSize( + scaleList, + parsedPath.name, + "Theme-Dark_Scale" + ); + if (max) { + // 记录max + scaleIconMax = max; + // 获取 名称.Theme-Dark_Scale{max}.png + let defaultList = scaleList.filter( + (f) => + f === + parsedPath.name + ".Theme-Dark_Scale-" + max + ".png" + ); + if (defaultList.length > 0) { + scaleIcon = + installLocation + + "\\" + + parsedPath.dir + + "\\" + + defaultList[0]; + } + } + } + } + } else { + if (filterList.length === 1) { + // 只有一张图片 + appxInfo.icon = + installLocation + "\\" + parsedPath.dir + "\\" + filterList[0]; + } + } + } + } + } + if (!appxInfo.icon) { + // 判断图标大小 + if (targetSizeIcon && !scaleIcon) { + appxInfo.icon = targetSizeIcon; + } else if (!targetSizeIcon && scaleIcon) { + appxInfo.icon = scaleIcon; + } else if (targetSizeIcon && scaleIcon) { + if (targetSizeIconMax === 256 || targetSizeIconMax > scaleIconMax) { + appxInfo.icon = targetSizeIcon; + } else if (targetSizeIconMax < scaleIconMax) { + appxInfo.icon = scaleIcon; + } else { + appxInfo.icon = targetSizeIcon; + } + } else if (!targetSizeIcon && !scaleIcon) { + let propertiesIcon = getPropertiesIcon(installLocation, result); + if (propertiesIcon) { + appxInfo.icon = propertiesIcon; + } + } + } + // 名称 + if (result.Package.Properties) { + if (result.Package.Properties[0].DisplayName) { + appxInfo.name = result.Package.Properties[0].DisplayName[0]; + } + } + if ( + !appxInfo.name || + (appxInfo.name && appxInfo.name.indexOf("ms-resource:") >= 0) + ) { + if (executable && executable.indexOf("ms-resource:") < 0) { + appxInfo.name = parse(executable).name; + } else { + appxInfo.name = null; + } + } + if (!appxInfo.name) { + if (result.Package.Identity && result.Package.Identity[0]) { + let name = result.Package.Identity[0].$.Name; + if (name && name.indexOf("ms-resource:") < 0) { + appxInfo.name = name; + } + } + } + } catch (ex) { + if (result) { + let propertiesIcon = getPropertiesIcon(installLocation, result); + if (propertiesIcon) { + appxInfo.icon = propertiesIcon; + } + } + } + return appxInfo; +} + +/** + * 解析XML同步 + * @param xml + */ +async function xml2jsSync(xml: Buffer) { + let parser = new xml2js.Parser(); + return new Promise((resolve, reject) => { + parser.parseString(xml, function (err, json) { + if (err) reject(err); + else resolve(json); + }); + }); +} + +/** + * 获取最大图标尺寸 + * @param list + * @param name + * @param type + * @returns + */ +function getMaxIconSize(list: Array, name: string, type: string) { + // 获取最大图标尺寸 + let max: number | null = null; + for (let targetSize of list) { + let size = Number( + targetSize + .replace(name + "." + type + "-", "") + .split("_")[0] + .replace(".png", "") + ); + if (!max) { + max = size; + } else { + if (size > max) { + max = size; + } + } + } + return max; +} + +/** + * 获取AppxPropertiesLogo + * @param installLocation + * @param result + */ +function getPropertiesIcon(installLocation: string, result: any) { + if (result.Package.Properties) { + if (result.Package.Properties[0].Logo) { + let logo = result.Package.Properties[0].Logo[0]; + return installLocation + "\\" + logo; + } + } + return null; +} + +/** + * 通过路径获取项目信息 + * @param classificationId + * @param pathList + */ +async function getDropItemInfo( + classificationId: number, + pathList: Array +) { + // 项目列表 + let itemList: Array = []; + // 解析文件信息并添加项目 + for (const path of pathList) { + try { + // item + let item = newItem({ classificationId }); + // 目标 + item.data.target = path; + // 名称 + item.name = getFileName(item.data.target); + // 判断是否是快捷方式,如果是的话,需要获取真实路径 + if (mime.getType(path) === "application/x-ms-shortcut") { + // 快捷方式 + // 获取真实文件路径和参数 + let shortcutInfo: ShortcutInfo | null = + global.addon.getShortcutFileInfo(path); + if (shortcutInfo) { + // 路径 + if (shortcutInfo.target) { + item.data.target = shortcutInfo.target; + } + // 参数 + if (shortcutInfo.arguments) { + item.data.params = shortcutInfo.arguments; + } + } + } + // 文件类型 + let stats = statSync(item.data.target); + // 路径 + item.type = stats.isFile() ? 0 : 1; + // 获取图标 + item.data.icon = getFileIcon(item.data.target); + // 去掉后缀 + if (item.type === 0) { + item.name = deleteExtname(item.name); + } + // push + itemList.push(item); + } catch (e) {} + } + return itemList; +} + +/** + * 刷新项目图标 + * @param itemList + */ +async function refreshItemIcon(itemList: Array) { + // 返回数据 + let resultList: Array<{ + id: number; + icon: string; + }> = []; + // 刷新图标 + for (const item of itemList) { + if (item.type === 0 || item.type === 1) { + let icon: string | null = getFileIcon(item.data.target); + if (icon) { + resultList.push({ + id: item.id, + icon, + }); + } + } + } + return resultList; +} + +/** + * 读取文件夹下的项目 + * @param classificationId + * @param dir + * @param hiddenItems + * @param oldList + * @returns + */ +async function getDirectoryItemList( + classificationId: number, + dir: string, + hiddenItems: string | null, + oldList: Array +) { + // 返回列表 + let resultList: Array = []; + // 转map + let oldMap = new Map( + oldList.map((item) => [item.data.target.toLowerCase(), item]) + ); + try { + // 文件类型 + let stats = statSync(dir); + // 必须是文件夹 + if (stats.isDirectory()) { + // 转为数组 + let hiddenItemList = []; + if (hiddenItems && hiddenItems.trim() !== "") { + hiddenItemList = hiddenItems.split(","); + } + // 读取文件夹下面的所有文件 + let nameList = readdirSync(dir); + for (const name of nameList) { + try { + // 判断是否隐藏 + let hidden = false; + for (let hiddenItem of hiddenItemList) { + if (hiddenItem.trim().toLowerCase() === name.trim().toLowerCase()) { + hidden = true; + break; + } + } + if (hidden) { + continue; + } + // item + let item: Item | null = null; + // 组合路径 + let path = join(dir, name); + // 获取类型 0:文件 1:文件夹 + let type = statSync(path).isDirectory() ? 1 : 0; + // 是否有旧数据 + if (oldMap.has(path.toLowerCase())) { + let oldItem = oldMap.get(path.toLowerCase()); + if (oldItem.type === type) { + item = newItem(oldItem); + } + } + if (!item) { + item = newItem({ classificationId, type }); + item.name = deleteExtname(getFileName(path)); + item.data.target = path; + item.data.icon = getFileIcon(path); + } + // push + resultList.push(item); + } catch (e) {} + } + } + } catch (e) {} + return resultList; +} + +/** + * 检查无效项目 + */ +function checkInvalidItem(itemList: Array) { + // 无效项目ID列表 + let resultList: Array = []; + // 循环校验每个项目 + for (const item of itemList) { + // 只校验文件和文件夹 + if (item.type === 0 || item.type === 1) { + // 获取绝对路径 + let path = getAbsolutePath(item.data.target); + try { + statSync(path); + } catch (e) { + resultList.push(item.id); + } + } + } + return resultList; +} diff --git a/electron/preload/index.ts b/electron/preload/index.ts new file mode 100644 index 0000000..269dad1 --- /dev/null +++ b/electron/preload/index.ts @@ -0,0 +1,850 @@ +import { contextBridge, ipcRenderer } from "electron"; +import { Classification } from "../../types/classification"; +import { Item } from "../../types/item"; +import { Setting } from "../../types/setting"; + +contextBridge.exposeInMainWorld("api", { + // emit + emit: (windowName: string, listener: string, paylod: any) => { + ipcRenderer.send("emit", { windowName, listener, paylod }); + }, + // 错误提示框 + showErrorMessageBox: (windowName: string, message: string) => { + ipcRenderer.send("showErrorMessageBox", { windowName, message }); + }, + // 信息提示框 + showInfoMessageBox: (windowName: string, message: string) => { + ipcRenderer.send("showInfoMessageBox", { windowName, message }); + }, + // 对话框 + showConfirmBox: (windowName: string, message: string): boolean => { + return ipcRenderer.sendSync("showConfirmBox", { windowName, message }); + }, + // 选择文件 + selectFile: ( + windowName: string, + target: boolean, + defaultPath: string | null + ): string | null => { + return ipcRenderer.sendSync("selectFile", { + windowName, + target, + defaultPath, + }); + }, + // 选择文件夹 + selectDirectory: ( + windowName: string, + defaultPath: string | null + ): string | null => { + return ipcRenderer.sendSync("selectDirectory", { + windowName, + defaultPath, + }); + }, + // 获取图标 + getFileIcon: (windowName: string, path: string) => { + ipcRenderer.send("getFileIcon", { windowName, path }); + }, + // 监听获取图标 + onGetFileIcon: (callback): Function => { + ipcRenderer.on("onGetFileIcon", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onGetFileIcon"); + }; + }, + // 下载图片 + downloadImage: (windowName: string, url: string) => { + ipcRenderer.send("downloadImage", { windowName, url }); + }, + // 监听下载图片 + onDownloadImage: (callback): Function => { + ipcRenderer.on("onDownloadImage", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onDownloadImage"); + }; + }, + // 获取网址信息 + getURLInfo: (windowName: string, url: string) => { + ipcRenderer.send("getURLInfo", { windowName, url }); + }, + // 监听获取网址信息 + onGetURLInfo: (callback): Function => { + ipcRenderer.on("onGetURLInfo", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onGetURLInfo"); + }; + }, + // 转换路径 + convertPath: (path: string): string => { + return ipcRenderer.sendSync("convertPath", { path }); + }, + // 路径是否存在 + pathExist: (path: string): boolean => { + return ipcRenderer.sendSync("pathExist", { path }); + }, + // 是否是文件 + isFile: (path: string): boolean => { + return ipcRenderer.sendSync("isFile", { path }); + }, + // 打开URL + openURL: (url: string) => { + ipcRenderer.send("openURL", url); + }, + // 获取版本 + getVersion: (): string => { + return ipcRenderer.sendSync("getVersion"); + }, + // 退出 + exit: () => { + ipcRenderer.send("exit"); + }, +}); + +contextBridge.exposeInMainWorld("main", { + // 显示窗口 + showWindow: (blurHide: boolean) => { + ipcRenderer.send("showMainWindow", { blurHide }); + }, + // 隐藏窗口 + hideWindow: () => { + ipcRenderer.send("hideMainWindow"); + }, + // 初始化数据 + initData: () => { + ipcRenderer.send("mainWindowInitData"); + }, + // 显示窗口之前 + onShowWindowBefore: (callback): Function => { + ipcRenderer.on("onShowMainWindowBefore", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onShowMainWindowBefore"); + }; + }, +}); + +contextBridge.exposeInMainWorld("classification", { + // 获取分类列表 + list: (): Array => { + return ipcRenderer.sendSync("getClassificationList"); + }, + // 根据ID查询分类 + selectById: (id: number): Classification | null => { + return ipcRenderer.sendSync("getClassificationById", { id }); + }, + // 新增分类 + add: ( + parentId: number | null, + name: string, + shortcutKey: string | null, + globalShortcutKey: boolean + ): Classification | null => { + return ipcRenderer.sendSync("addClassification", { + parentId, + name, + shortcutKey, + globalShortcutKey, + }); + }, + // 更新分类 + update: (classifictaion: Classification): boolean => { + return ipcRenderer.sendSync("updateClassification", classifictaion); + }, + // 更新序号 + updateOrder: ( + fromId: number, + toId: number | null, + parentId: number | null + ): boolean => { + return ipcRenderer.sendSync("updateClassificationOrder", { + fromId, + toId, + parentId, + }); + }, + // 更新图标 + updateIcon: (id: number, icon: string | null): boolean => { + return ipcRenderer.sendSync("updateClassificationIcon", { + id, + icon, + }); + }, + // 显示新增/修改窗口 + showAddEditWindow: () => { + ipcRenderer.send("showClassificationAddEditWindow"); + }, + // 关闭新增/修改窗口 + closeAddEditWindow: () => { + ipcRenderer.send("closeClassificationAddEditWindow"); + }, + // 显示设置图标窗口 + showSetIconWindow: () => { + ipcRenderer.send("showClassificationSetIconWindow"); + }, + // 关闭设置图标窗口 + closeSetIconWindow: () => { + ipcRenderer.send("closeClassificationSetIconWindow"); + }, + // 右键菜单 + showRightMenu: ( + classification: Classification | null, + lockClassification: boolean + ) => { + ipcRenderer.send("showClassificationRightMenu", { + classification, + lockClassification, + }); + }, + // 监听新增分类 + onAdd: (callback): Function => { + ipcRenderer.on("onAddClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onAddClassification"); + }; + }, + // 监听更新分类 + onUpdate: (callback): Function => { + ipcRenderer.on("onUpdateClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateClassification"); + }; + }, + // 监听删除分类 + onDelete: (callback): Function => { + ipcRenderer.on("onDeleteClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onDeleteClassification"); + }; + }, + // 监听锁定/解锁分类 + onLock: (callback): Function => { + ipcRenderer.on("onLockClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onLockClassification"); + }; + }, + // 更新分类图标 + onUpdateIcon: (callback): Function => { + ipcRenderer.on("onUpdateClassificationIcon", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateClassificationIcon"); + }; + }, + // 显示关联文件夹窗口 + showAssociateFolderWindow: () => { + ipcRenderer.send("showClassificationAssociateFolderWindow"); + }, + // 关闭关联文件夹窗口 + closeAssociateFolderWindow: () => { + ipcRenderer.send("closeClassificationAssociateFolderWindow"); + }, + // 设置关联文件夹 + setAssociateFolder: ( + id: number, + dir: string | null, + hiddenItems: string | null + ): Classification => { + return ipcRenderer.sendSync("setClassificationAssociateFolder", { + id, + dir, + hiddenItems, + }); + }, + // 监听更新关联文件夹 + onUpdateAssociateFolder: (callback): Function => { + ipcRenderer.on("onUpdateAssociateFolderClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateAssociateFolderClassification"); + }; + }, + // 是否拥有子分类 + hasChildClassification: (id: number): boolean => { + return ipcRenderer.sendSync("hasChildClassification", id); + }, + // 监听收起子分类 + onCollapseSubClassification: (callback) => { + ipcRenderer.on("onCollapseSubClassification", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onCollapseSubClassification"); + }; + }, + // 修改项目布局 + onUpdateItemLayout: (callback) => { + ipcRenderer.on("onUpdateItemLayout", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemLayout"); + }; + }, + // 修改项目排序 + onUpdateItemSort: (callback) => { + ipcRenderer.on("onUpdateItemSort", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemSort"); + }; + }, + // 修改项目列数 + onUpdateItemColumnNumber: (callback) => { + ipcRenderer.on("onUpdateItemColumnNumber", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemColumnNumber"); + }; + }, + // 修改项目图标 + onUpdateItemIconSize: (callback) => { + ipcRenderer.on("onUpdateItemIconSize", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemIconSize"); + }; + }, + // 根据文件夹创建分类 + addClassificationByDirectory: (pathList: Array) => { + ipcRenderer.send("addClassificationByDirectory", pathList); + }, + // 监听根据文件夹创建分类 + onAddClassificationByDirectory: (callback) => { + ipcRenderer.on("onAddClassificationByDirectory", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onAddClassificationByDirectory"); + }; + }, + // 修改项目显示 + onUpdateItemShowOnly: (callback) => { + ipcRenderer.on("onUpdateItemShowOnly", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemShowOnly"); + }; + }, + // 修改固定分类 + onUpdateFixed: (callback) => { + ipcRenderer.on("onUpdateClassificationFixed", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateClassificationFixed"); + }; + }, + // 将排序为打开次数的分类修改为默认排序 + onUpdateItemOpenNumberSortToDefualt: (callback) => { + ipcRenderer.on("onUpdateItemOpenNumberSortToDefualt", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItemOpenNumberSortToDefualt"); + }; + }, + // 显示聚合分类窗口 + showAggregateWindow: () => { + ipcRenderer.send("showClassificationAggregateWindow"); + }, + // 关闭聚合分类窗口 + closeAggregateWindow: () => { + ipcRenderer.send("closeClassificationAggregateWindow"); + }, + // 更新聚合分类 + updateAggregate: (id: number, sort: string, itemCount: number): boolean => { + return ipcRenderer.sendSync("updateClassificationAggregate", { + id, + sort, + itemCount, + }); + }, + // 监听更新聚合分类 + onUpdateAggregate: (callback) => { + ipcRenderer.on("onUpdateClassificationAggregate", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateClassificationAggregate"); + }; + }, + // 监听修改排除搜索 + onUpdateExcludeSearch: (callback) => { + ipcRenderer.on("onUpdateClassificationExcludeSearch", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateClassificationExcludeSearch"); + }; + }, +}); + +contextBridge.exposeInMainWorld("item", { + // 显示新增/修改窗口 + showAddEditWindow: () => { + ipcRenderer.send("showItemAddEditWindow"); + }, + // 关闭新增/修改窗口 + closeAddEditWindow: () => { + ipcRenderer.send("closeItemAddEditWindow"); + }, + // 获取项目列表 + list: (): Array => { + return ipcRenderer.sendSync("getItemList"); + }, + // 获取简单项目列表 + simpleList: (): Array => { + return ipcRenderer.sendSync("getSimpleItemList"); + }, + // 根据ID查询分类 + selectById: (id: number): Item | null => { + return ipcRenderer.sendSync("getItemById", { id }); + }, + // 新增项目 + add: (item: Item): Item | null => { + return ipcRenderer.sendSync("addItem", item); + }, + // 更新项目 + update: (item: Item): boolean => { + return ipcRenderer.sendSync("updateItem", item); + }, + // 项目排序 + updateOrder: ( + fromIdList: Array, + toClassificationId: number, + newIndex: number | null + ): boolean => { + return ipcRenderer.sendSync("updateItemOrder", { + fromIdList, + toClassificationId, + newIndex, + }); + }, + // 右键菜单 + showRightMenu: (params: any) => { + ipcRenderer.send("showItemRightMenu", params); + }, + // 创建网络图标窗口 + createNetworkIconWindow: () => { + ipcRenderer.send("createItemNetworkIconWindow"); + }, + // 显示网络图标窗口 + showNetworkIconWindow: () => { + ipcRenderer.send("showItemNetworkIconWindow"); + }, + // 关闭网络图标窗口 + closeNetworkIconWindow: () => { + ipcRenderer.send("closeItemNetworkIconWindow"); + }, + // 监听网络图标 + onNetworkIcon: (callback): Function => { + ipcRenderer.on("onItemNetworkIcon", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemNetworkIcon"); + }; + }, + // 创建SVG图标窗口 + createSVGIconWindow: () => { + ipcRenderer.send("createItemSVGIconWindow"); + }, + // 显示SVG图标窗口 + showSVGIconWindow: () => { + ipcRenderer.send("showItemSVGIconWindow"); + }, + // 关闭SVG图标窗口 + closeSVGIconWindow: () => { + ipcRenderer.send("closeItemSVGIconWindow"); + }, + // 监听SVG图标 + onSVGIcon: (callback): Function => { + ipcRenderer.on("onItemSVGIcon", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemSVGIcon"); + }; + }, + // 获取系统项目 + getSystemItemList: () => { + ipcRenderer.send("getSystemItemList"); + }, + // 监听获取系统项目 + onGetSystemItemList: (callback): Function => { + ipcRenderer.on("onGetSystemItemList", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onGetSystemItemList"); + }; + }, + // 获取开始菜单项目 + getStartMenuItemList: () => { + ipcRenderer.send("getStartMenuItemList"); + }, + // 监听获取开始菜单项目 + onGetStartMenuItemList: (callback): Function => { + ipcRenderer.on("onGetStartMenuItemList", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onGetStartMenuItemList"); + }; + }, + // 获取APPX项目 + getAppxItemList: () => { + ipcRenderer.send("getAppxItemList"); + }, + // 监听APPX项目 + onGetAppxItemList: (callback): Function => { + ipcRenderer.on("onGetAppxItemList", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onGetAppxItemList"); + }; + }, + // 监听新增项目 + onAdd: (callback): Function => { + ipcRenderer.on("onAddItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onAddItem"); + }; + }, + // 监听更新项目 + onUpdate: (callback): Function => { + ipcRenderer.on("onUpdateItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateItem"); + }; + }, + // 监听删除项目 + onDelete: (callback): Function => { + ipcRenderer.on("onDeleteItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onDeleteItem"); + }; + }, + // 监听锁定/解锁项目 + onLock: (callback): Function => { + ipcRenderer.on("onLockItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onLockItem"); + }; + }, + // 拖入项目 + drop: (classificationId: number, pathList: Array) => { + ipcRenderer.send("dropItem", { + classificationId, + pathList, + }); + }, + // 监听批量操作 + onBatchOperation: (callback): Function => { + ipcRenderer.on("onItemBatchOperation", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemBatchOperation"); + }; + }, + // 运行项目 + run: (type: string, operation: string, item: Item) => { + ipcRenderer.send("runItem", { operation, item, type }); + }, + // 监听转换路径 + onConvertPath: (callback): Function => { + ipcRenderer.on("onConvertPath", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onConvertPath"); + }; + }, + // 监听刷新图标 + onRefreshIcon: (callback): Function => { + ipcRenderer.on("onRefreshItemIcon", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onRefreshItemIcon"); + }; + }, + // 监听移动项目 + onMove: (callback): Function => { + ipcRenderer.on("onMoveItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onMoveItem"); + }; + }, + // 监听批量操作全选 + onBatchOperationSelectAll: (callback): Function => { + ipcRenderer.on("onItembatchOperationSelectAll", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItembatchOperationSelectAll"); + }; + }, + // 监听项目右键菜单关闭 + onRightMenuClose: (callback): Function => { + ipcRenderer.on("onItemRightMenuClose", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemRightMenuClose"); + }; + }, + // 监听项目资源管理器菜单 + onExplorerMenu: (callback): Function => { + ipcRenderer.on("onItemExplorerMenu", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemExplorerMenu"); + }; + }, + // 项目拖出 + dragOut: (item: Item) => { + ipcRenderer.send("itemDragOut", item); + }, + // 取消项目拖出 + onCancelDragOut: (callback): Function => { + ipcRenderer.on("onItemCancelDragOut", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onItemCancelDragOut"); + }; + }, + // 监听更新打开信息 + onUpdateOpenInfo: (callback): Function => { + ipcRenderer.on("onUpdateOpenInfo", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateOpenInfo"); + }; + }, + // 监听无效项目 + onCheckInvalid: (callback): Function => { + ipcRenderer.on("onCheckInvalidItem", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onCheckInvalidItem"); + }; + }, + // 更新打开信息 + updateOpenInfo: (type: string, id: number) => { + ipcRenderer.send("updateItemOpenInfo", { type, id }); + }, +}); + +contextBridge.exposeInMainWorld("setting", { + // 创建设置窗口 + createWindow: () => { + ipcRenderer.send("createSettingWindow"); + }, + // 显示设置窗口 + showWindow: () => { + ipcRenderer.send("showSettingWindow"); + }, + // 关闭设置窗口 + closeWindow: () => { + ipcRenderer.send("closeSettingWindow"); + }, + // 查询设置 + select: (): Setting | null => { + return ipcRenderer.sendSync("selectSetting"); + }, + // 新增设置 + add: (setting: Setting): boolean => { + return ipcRenderer.sendSync("addSetting", setting); + }, + // 更新设置 + update: (setting: Setting): boolean => { + return ipcRenderer.sendSync("updateSetting", setting); + }, + // 监听更新设置 + onUpdate: (callback): Function => { + ipcRenderer.on("onUpdateSetting", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onUpdateSetting"); + }; + }, + // 开机启动 + setStartup: (value: boolean) => { + ipcRenderer.send("startup", value); + }, + // 隐藏托盘图标 + setTray: (show: boolean) => { + ipcRenderer.send("setTray", show); + }, + // 设置快捷键 + setShortcutKey: (setting: Setting) => { + ipcRenderer.send("setShortcutKey", setting); + }, + // 永远置顶 + setAlwaysTop: (value: boolean) => { + ipcRenderer.send("setAlwaysTop", value); + }, + // 锁定尺寸 + setLockSize: (value: boolean) => { + ipcRenderer.send("setLockSize", value); + }, + // 固定位置 + setFixedPosition: (fixedPosition: boolean, alwaysCenter: boolean) => { + ipcRenderer.send("setFixedPosition", { + fixedPosition, + alwaysCenter, + }); + }, + // 永远居中 + setAlwaysCenter: (fixedPosition: boolean, alwaysCenter: boolean) => { + ipcRenderer.send("setAlwaysCenter", { + fixedPosition, + alwaysCenter, + }); + }, + // 边缘吸附 + setEdgeAdsorb: (value: boolean) => { + ipcRenderer.send("setEdgeAdsorb", value); + }, + // 上传背景图 + uploadBackgrounImage: (): any => { + return ipcRenderer.sendSync("uploadBackgrounImage"); + }, + // 监听设置背景图 + onSetBacngroundImage: (callback) => { + ipcRenderer.on("onSetBacngroundImage", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onSetBacngroundImage"); + }; + }, + // 获取背景图 + getBackgroundImage: (name: string, windowName: string) => { + ipcRenderer.send("getBackgroundImage", { name, windowName }); + }, + // 检测无效项目 + setCheckInvalidItem: (value: boolean) => { + ipcRenderer.send("setCheckInvalidItem", value); + }, + // 项目打开次数 + setOpenNumber: (value: boolean) => { + ipcRenderer.send("setItemOpenNumber", value); + }, +}); + +contextBridge.exposeInMainWorld("quickSearch", { + // 初始化完毕 + initFinished: () => { + ipcRenderer.send("quickSearchInitFinished"); + }, + // 显示窗口 + showWindow: () => { + ipcRenderer.send("showQuickSearchWindow"); + }, + // 隐藏窗口 + hideWindow: () => { + ipcRenderer.send("hideQuickSearchWindow"); + }, + // 显示窗口之前 + onShowWindowBefore: (callback): Function => { + ipcRenderer.on("onShowQuickSearchWindowBefore", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onShowQuickSearchWindowBefore"); + }; + }, + // 清空数据 + onClearData: (callback): Function => { + ipcRenderer.on("onQuickSearchClearData", (event, data) => { + callback(data); + }); + return () => { + ipcRenderer.removeAllListeners("onQuickSearchClearData"); + }; + }, + // 设置窗口高度 + setWindowHeight: (height: number) => { + ipcRenderer.send("setQuickSearchWindowHeight", height); + }, +}); + +contextBridge.exposeInMainWorld("about", { + // 创建窗口 + createWindow: () => { + ipcRenderer.send("createAboutWindow"); + }, + // 显示窗口 + showWindow: () => { + ipcRenderer.send("showAboutWindow"); + }, + // 关闭窗口 + closeWindow: () => { + ipcRenderer.send("closeAboutWindow"); + }, +}); + +contextBridge.exposeInMainWorld("data", { + // 创建备份/恢复数据窗口 + createBackupRestoreDataWindow: () => { + ipcRenderer.send("createBackupRestoreDataWindow"); + }, + // 显示备份/恢复数据窗口 + showBackupRestoreDataWindow: () => { + ipcRenderer.send("showBackupRestoreDataWindow"); + }, + // 关闭备份/恢复数据窗口 + closeBackupRestoreDataWindow: () => { + ipcRenderer.send("closeBackupRestoreDataWindow"); + }, + // 备份数据 + backupData: () => { + ipcRenderer.send("backupData"); + }, + // 恢复数据 + restoreData: () => { + ipcRenderer.send("restoreData"); + }, +}); diff --git a/electron/types/global.d.ts b/electron/types/global.d.ts new file mode 100644 index 0000000..e60a6ce --- /dev/null +++ b/electron/types/global.d.ts @@ -0,0 +1,75 @@ +import { BrowserWindow, Tray } from "electron"; +import { FSWatcher } from "node:fs"; +import { Setting } from "../../types/setting"; + +declare global { + // addon + var addon: any; + // 语言 + var language: any; + // 主窗口 + var mainWindow: BrowserWindow | null; + // 快速搜索窗口 + var quickSearchWindow: BrowserWindow | null; + // 快速搜索窗口是否初始化完成 + var quickSearchWindowInit: Boolean | null; + // 设置窗口 + var settingWindow: BrowserWindow | null; + // 分类添加/编辑窗口 + var classificationAddEditWindow: BrowserWindow | null; + // 分类图标窗口 + var classificationSetIconWindow: BrowserWindow | null; + // 关联分类窗口 + var classificationAssociateFolderWindow: BrowserWindow | null; + // 聚合分类窗口 + var classificationAggregateWindow: BrowserWindow | null; + // 项目添加/编辑窗口 + var itemAddEditWindow: BrowserWindow | null; + // 项目网络图标窗口 + var itemNetworkIconWindow: BrowserWindow | null; + // 项目SVG图标窗口 + var itemSVGIconWindow: BrowserWindow | null; + // 关于窗口 + var aboutWindow: BrowserWindow | null; + // 备份/恢复数据窗口 + var backupRestoreDataWindow: BrowserWindow | null; + // 存储关联分类监听 + var associateFolderWatcher: Map; + // 设置 + var setting: Setting | null; + // 托盘 + var tray: Tray; + // 主窗口方向 + var mainWindowDirection: String | null; + // 停靠在桌面边缘时自动隐藏timer + var autoHideTimer: NodeJS.Timeout; + // 需要失去焦点时隐藏 + var blurHide: boolean | null; + // 双击任务栏显示/隐藏timer + var doubleClickTaskbarTimer: NodeJS.Timeout; + // 双击任务栏显示/隐藏counter + var doubleClickTaskbarCounter: number; + // 监测无效项目interval + var checkInvalidItemInterval: NodeJS.Timeout; + // 存储子进程信息 + var childProcessMap: Map; + // 分类右键菜单显示 + var classificationRightMenu: boolean | null; + // 项目右键菜单显示 + var itemRightMenu: boolean | null; +} + +export interface ChildProcessInfo { + utilityProcess: Electron.UtilityProcess; + port1: Electron.MessagePortMain; + port2: Electron.MessagePortMain; +} + +export interface AssociateFolderData { + classificationId: number; + dir: string; + hiddenItems: string | null; + watch: FSWatcher; +} + +export {}; diff --git a/images/soft1.png b/images/soft1.png new file mode 100644 index 0000000..c1408cc Binary files /dev/null and b/images/soft1.png differ diff --git a/images/soft2.png b/images/soft2.png new file mode 100644 index 0000000..9d1c228 Binary files /dev/null and b/images/soft2.png differ diff --git a/images/soft3.png b/images/soft3.png new file mode 100644 index 0000000..2cf60ff Binary files /dev/null and b/images/soft3.png differ diff --git a/images/soft4.png b/images/soft4.png new file mode 100644 index 0000000..8385f44 Binary files /dev/null and b/images/soft4.png differ diff --git a/images/soft5.png b/images/soft5.png new file mode 100644 index 0000000..60c3bdf Binary files /dev/null and b/images/soft5.png differ diff --git a/images/soft6.webp b/images/soft6.webp new file mode 100644 index 0000000..4f3bae0 Binary files /dev/null and b/images/soft6.webp differ diff --git a/images/soft7.png b/images/soft7.png new file mode 100644 index 0000000..dd73231 Binary files /dev/null and b/images/soft7.png differ diff --git a/images/soft8.webp b/images/soft8.webp new file mode 100644 index 0000000..1a08a39 Binary files /dev/null and b/images/soft8.webp differ diff --git a/images/一键获取网址信息.gif b/images/一键获取网址信息.gif deleted file mode 100644 index c4bf8dc..0000000 Binary files a/images/一键获取网址信息.gif and /dev/null differ diff --git a/images/关联文件夹.gif b/images/关联文件夹.gif deleted file mode 100644 index 56d1a7d..0000000 Binary files a/images/关联文件夹.gif and /dev/null differ diff --git a/images/子分类.png b/images/子分类.png deleted file mode 100644 index 79a4b9e..0000000 Binary files a/images/子分类.png and /dev/null differ diff --git a/images/快速搜索.gif b/images/快速搜索.gif deleted file mode 100644 index 7af5b34..0000000 Binary files a/images/快速搜索.gif and /dev/null differ diff --git a/images/界面.png b/images/界面.png deleted file mode 100644 index 92f1bf3..0000000 Binary files a/images/界面.png and /dev/null differ diff --git a/images/相对路径.png b/images/相对路径.png deleted file mode 100644 index 2517e7c..0000000 Binary files a/images/相对路径.png and /dev/null differ diff --git a/images/自定义主题.png b/images/自定义主题.png deleted file mode 100644 index 5dcdc09..0000000 Binary files a/images/自定义主题.png and /dev/null differ diff --git a/images/自定义背景.png b/images/自定义背景.png deleted file mode 100644 index 02e3998..0000000 Binary files a/images/自定义背景.png and /dev/null differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..125221e --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + Dawn Launcher + + + +
+ + + + \ No newline at end of file diff --git a/jsconfig.JSON b/jsconfig.JSON deleted file mode 100644 index 4aafc5f..0000000 --- a/jsconfig.JSON +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "esnext", - "baseUrl": "./", - "moduleResolution": "node", - "paths": { - "@/*": [ - "src/*" - ] - }, - "lib": [ - "esnext", - "dom", - "dom.iterable", - "scripthost" - ] - } -} diff --git a/package.json b/package.json index 2dc9e81..1438c4c 100644 --- a/package.json +++ b/package.json @@ -1,60 +1,73 @@ { - "name": "DawnLauncher", + "name": "dawn-launcher", "productName": "Dawn Launcher", - "author": "Dawn Launcher", - "version": "1.2.3", + "version": "1.3.1", + "main": "dist-electron/main/index.js", + "description": "Windows 快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁。", + "author": "FanChenIO", "private": true, - "gypfile": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "electron:build": "vue-cli-service electron:build", - "electron:serve": "vue-cli-service electron:serve", - "postinstall": "electron-builder install-app-deps", - "postuninstall": "electron-builder install-app-deps" + "keywords": [ + "electron", + "vite", + "vue" + ], + "debug": { + "env": { + "VITE_DEV_SERVER_URL": "http://127.0.0.1:3344/" + } }, - "dependencies": { - "@ckpack/vue-color": "^1.4.1", - "bindings": "^1.5.0", - "cheerio": "^1.0.0-rc.12", - "core-js": "^3.8.3", - "dompurify": "^3.0.3", - "electron-store": "^8.1.0", - "jimp": "^0.22.7", - "mime": "^3.0.0", - "node-addon-api": "^5.0.0", - "pinyin-match": "^1.2.4", - "request": "^2.88.2", - "retry": "^0.13.1", - "simplebar": "^5.3.8", - "sortablejs": "^1.15.0", - "urijs": "^1.19.11", - "uuid": "^9.0.0", - "vue": "^3.3.4", - "vue-router": "^4.2.0", - "vuex": "^4.1.0", - "xml2js": "^0.5.0" + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build && electron-builder", + "preview": "vite preview", + "rsbuild": "napi build --release --strip ./native", + "rebuild": "electron rebuild.js", + "postinstall": "yarn run rebuild && yarn run rsbuild" + }, + "napi": { + "name": "addon" }, "devDependencies": { - "@babel/core": "^7.12.16", - "@tailwindcss/forms": "^0.5.3", - "@vue/cli-plugin-babel": "~5.0.0", - "@vue/cli-service": "~5.0.0", - "autoprefixer": "^10.4.8", - "electron": "^22.3.17", - "electron-builder": "^24.4.0", - "electron-devtools-installer": "^3.2.0", - "modclean": "^3.0.0-beta.1", - "postcss": "^8.4.16", - "prettier": "^2.7.1", - "tailwindcss": "^3.1.8", - "terser-webpack-plugin": "^5.3.8", - "vue-cli-plugin-electron-builder": "^3.0.0-alpha.4" + "@napi-rs/cli": "^2.16.3", + "@vicons/material": "^0.12.0", + "@vicons/utils": "^0.1.4", + "@vitejs/plugin-vue": "^4.4.0", + "autoprefixer": "^10.4.16", + "better-sqlite3-multiple-ciphers": "^9.0.0", + "electron": "^26.4.2", + "electron-builder": "^24.6.4", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "naive-ui": "^2.35.0", + "postcss": "^8.4.31", + "tailwindcss": "^3.3.5", + "typescript": "^5.2.2", + "vite": "^4.4.11", + "vite-plugin-electron": "^0.14.1", + "vue": "^3.3.7", + "vue-tsc": "^1.8.22" }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead", - "not ie 11" - ] -} + "dependencies": { + "@types/dompurify": "^3.0.3", + "@types/mime": "^3.0.2", + "@types/request": "^2.48.10", + "@types/retry": "^0.12.3", + "@types/sortablejs": "^1.15.3", + "@types/urijs": "^1.19.22", + "@types/xml2js": "^0.4.12", + "cheerio": "1.0.0-rc.12", + "dompurify": "^3.0.6", + "electron-log": "^5.0.0", + "electron-store": "^8.1.0", + "mime": "^3.0.0", + "pinia": "^2.1.7", + "pinyin-pro": "^3.17.0", + "request": "^2.88.2", + "retry": "^0.13.1", + "simplebar": "^6.2.5", + "sortablejs": "^1.15.0", + "urijs": "^1.19.11", + "vue-router": "^4.2.5", + "xml2js": "^0.6.2" + } +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js index 33ad091..96bb01e 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -3,4 +3,4 @@ module.exports = { tailwindcss: {}, autoprefixer: {}, }, -} +} \ No newline at end of file diff --git a/public/images/drag-and-drop.png b/public/drag-and-drop.png similarity index 100% rename from public/images/drag-and-drop.png rename to public/drag-and-drop.png diff --git a/public/images/logo.png b/public/images/logo.png deleted file mode 100644 index 7447b95..0000000 Binary files a/public/images/logo.png and /dev/null differ diff --git a/public/images/logo-transparent.png b/public/logo-transparent.png similarity index 100% rename from public/images/logo-transparent.png rename to public/logo-transparent.png diff --git a/public/images/logo.ico b/public/logo.ico similarity index 100% rename from public/images/logo.ico rename to public/logo.ico diff --git a/public/images/logo-thick.ico b/public/tray.ico similarity index 100% rename from public/images/logo-thick.ico rename to public/tray.ico diff --git a/rebuild.js b/rebuild.js new file mode 100644 index 0000000..e184de8 --- /dev/null +++ b/rebuild.js @@ -0,0 +1,33 @@ +const path = require("path"); +const child = require("child_process"); + +// If you prefer electron-rebuild: +// 👉 https://github.com/WiseLibs/better-sqlite3/blob/v8.5.2/docs/troubleshooting.md#electron +// 👉 https://stackoverflow.com/questions/46384591/node-was-compiled-against-a-different-node-js-version-using-node-module-versio/52796884#52796884 + +const better_sqlite3 = require.resolve("better-sqlite3-multiple-ciphers"); +const better_sqlite3_root = path.posix.join( + better_sqlite3.slice(0, better_sqlite3.lastIndexOf("node_modules")), + "node_modules/better-sqlite3-multiple-ciphers" +); +const cp = child.spawn( + process.platform === "win32" ? "npm.cmd" : "npm", + [ + "run", + "build-release", + `--target=${process.versions.electron}`, + // https://github.com/electron/electron/blob/v26.1.0/docs/tutorial/using-native-node-modules.md#manually-building-for-electron + "--dist-url=https://electronjs.org/headers", + ], + { + cwd: better_sqlite3_root, + stdio: "inherit", + } +); + +cp.on("exit", (code) => { + if (code === 0) { + console.log("Rebuild better-sqlite3 success."); + } + process.exit(code); +}); diff --git a/rust/lib.rs b/rust/lib.rs new file mode 100644 index 0000000..8f2e460 --- /dev/null +++ b/rust/lib.rs @@ -0,0 +1,167 @@ +use napi::JsFunction; +use napi_derive::napi; +use std::collections::HashMap; + +mod windows; + +/** + * 获取图标 + */ +#[allow(dead_code)] +#[napi] +fn get_file_icon(path: String) -> Option { + windows::get_file_icon(&path) +} + +/** + * 搜索路径 + */ +#[allow(dead_code)] +#[napi] +fn search_path(path: String) -> Option { + windows::search_path(&path) +} + +/** + * 解析快捷方式 + */ +#[allow(dead_code)] +#[napi] +fn get_shortcut_file_info(path: String) -> Option> { + windows::get_shortcut_file_info(&path) +} + +/** + * 运行 + */ +#[allow(dead_code)] +#[napi] +fn shell_execute(operation: String, file: String, params: String, start_location: Option) { + windows::shell_execute(operation, file, params, start_location) +} + +/** + * 运行系统项目 + */ +#[allow(dead_code)] +#[napi] +fn system_item_execute(target: String, params: Option) { + windows::system_item_execute(&target, params.as_deref()) +} + +/** + * 打开文件所在位置 + */ +#[allow(dead_code)] +#[napi] +fn open_file_location(path: String) { + windows::open_file_location(&path) +} + +/** + * 资源管理器菜单 + */ +#[allow(dead_code)] +#[napi] +fn explorer_context_menu(window: i32, path: String, x: i32, y: i32) { + windows::explorer_context_menu(window, &path, x, y) +} + +/** + * 获取环境变量 + */ +#[allow(dead_code)] +#[napi] +fn get_env_by_name(name: String) -> Option { + windows::get_env_by_name(&name) +} + +/** + * 是否是全屏模式 + */ +#[allow(dead_code)] +#[napi] +fn is_fullscreen() -> bool { + windows::is_fullscreen() +} + +/** + * 切换英文输入法 + */ +#[allow(dead_code)] +#[napi] +fn switch_english(window: i32) { + windows::switch_english(window) +} + +/** + * 创建鼠标HOOK + */ +#[allow(dead_code)] +#[napi] +fn create_mouse_hook(callback: JsFunction) { + windows::create_mouse_hook(callback) +} + +/** + * 启用鼠标HOOK + */ +#[allow(dead_code)] +#[napi] +fn enable_mouse_hook() { + windows::enable_mouse_hook() +} + +/** + * 禁用鼠标HOOK + */ +#[allow(dead_code)] +#[napi] +fn disable_mouse_hook() { + windows::disable_mouse_hook() +} + +/** + * 获取鼠标点击的窗口ClassName + */ +#[allow(dead_code)] +#[napi] +pub fn get_cursor_pos_window_class_name() -> String { + windows::get_cursor_pos_window_class_name() +} + +/** + * 获取剪切板文件列表 + */ +#[allow(dead_code)] +#[napi] +pub fn get_clipboard_file_list() -> Vec { + windows::get_clipboard_file_list() +} + +/** + * 剪切板是否存在BITMAP + */ +#[allow(dead_code)] +#[napi] +pub fn clipboard_has_bitmap() -> bool { + windows::clipboard_has_bitmap() +} + +/** + * 获取剪切板BITMAP的BASE64 + */ +#[allow(dead_code)] +#[napi] +pub fn get_clipboard_bitmap_base64() -> Option { + windows::get_clipboard_bitmap_base64() +} + +/** + * 清空回收站 + */ +#[allow(dead_code)] +#[napi] +pub fn empty_recycle_bin(window: i32) { + windows::empty_recycle_bin(window) +} diff --git a/rust/windows.rs b/rust/windows.rs new file mode 100644 index 0000000..ba1487c --- /dev/null +++ b/rust/windows.rs @@ -0,0 +1,673 @@ +use base64::{engine::general_purpose, Engine as _}; +use clipboard_win::{formats, get_clipboard}; +use image::{imageops::flip_vertical, ImageBuffer, ImageFormat, Rgba}; +use napi::{ + threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode}, + JsFunction, +}; +use serde::{Deserialize, Serialize}; +use std::{ + collections::HashMap, + io::Cursor, + path::Path, + process::Command, + sync::atomic::{AtomicBool, Ordering}, +}; +use windows::{ + core::{ComInterface, HSTRING, PCSTR, PCWSTR}, + w, + Win32::{ + Foundation::{HWND, LPARAM, LRESULT, MAX_PATH, POINT, RECT, SIZE, WPARAM}, + Graphics::Gdi::{ + GetMonitorInfoW, GetObjectW, MonitorFromWindow, BITMAP, MONITORINFO, + MONITOR_DEFAULTTONEAREST, + }, + Storage::FileSystem::SearchPathW, + System::{ + Com::{ + CoCreateInstance, CoInitializeEx, CoUninitialize, IPersistFile, + CLSCTX_INPROC_SERVER, COINIT_APARTMENTTHREADED, STGM_READ, + }, + Environment::GetEnvironmentVariableW, + SystemInformation::GetSystemDirectoryW, + }, + UI::{ + Input::Ime::{ + ImmGetContext, ImmReleaseContext, ImmSetConversionStatus, IME_CMODE_ALPHANUMERIC, + IME_SMODE_AUTOMATIC, + }, + Shell::{ + BHID_SFUIObject, IContextMenu, IShellItem, IShellItemImageFactory, IShellLinkW, + SHCreateItemFromParsingName, SHEmptyRecycleBinW, SHQueryUserNotificationState, + ShellExecuteW, ShellLink, CMF_NORMAL, CMINVOKECOMMANDINFO, + QUNS_ACCEPTS_NOTIFICATIONS, QUNS_APP, QUNS_BUSY, QUNS_NOT_PRESENT, + QUNS_PRESENTATION_MODE, QUNS_QUIET_TIME, QUNS_RUNNING_D3D_FULL_SCREEN, + SHERB_NOSOUND, SIIGBF_ICONONLY, SLGP_UNCPRIORITY, + }, + WindowsAndMessaging::{ + CallNextHookEx, CreatePopupMenu, DestroyMenu, FindWindowW, GetClassNameW, + GetCursorPos, GetForegroundWindow, GetSystemMetrics, GetWindowRect, SendMessageW, + SetForegroundWindow, SetWindowsHookExW, TrackPopupMenu, WindowFromPoint, HHOOK, + MSLLHOOKSTRUCT, SC_MONITORPOWER, SM_CXSCREEN, SM_CYSCREEN, SW_NORMAL, + SW_SHOWDEFAULT, TPM_NONOTIFY, TPM_RETURNCMD, WH_MOUSE_LL, WM_LBUTTONDOWN, + WM_LBUTTONUP, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_MOUSEHWHEEL, WM_MOUSEMOVE, + WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_SYSCOMMAND, + }, + }, + }, +}; + +// 获取图标并转为BASE64 +pub fn get_file_icon(path: &str) -> Option { + // 返回信息 + let mut base64 = None; + // HSTRING + let path = HSTRING::from(path); + // PCWSTR + let path: PCWSTR = PCWSTR(path.as_ptr()); + // unsafe + unsafe { + // Init + let _ = CoInitializeEx(None, COINIT_APARTMENTTHREADED); + } + // IShellItemImageFactory + let result = unsafe { + SHCreateItemFromParsingName::, IShellItemImageFactory>(path, None) + }; + if let Ok(shell_item_image_factory) = result { + if let Some(mut image_buffer) = get_file_icon_image_buffer(&shell_item_image_factory, 256) { + // 判断像素点,是否是小图标 + let mut transparency: f64 = 0_f64; + let mut non_transparency: f64 = 0_f64; + for y in 0..image_buffer.height() { + for x in 0..image_buffer.width() { + let pixel = image_buffer.get_pixel(x, y); + let alpha = pixel[3]; // 获取像素的 Alpha 通道值 + if alpha == 0 { + // 透明 + transparency += 1_f64; + } else { + // 不透明 + non_transparency += 1_f64; + } + } + } + // 计算如果透明区域大于百分之70就代表是小图标 + let proportion = + (transparency / (transparency + non_transparency) * 100_f64).round() as u32; + if proportion >= 70 { + // 获取小图标 + if let Some(image_buffer_small) = + get_file_icon_image_buffer(&shell_item_image_factory, 48) + { + image_buffer = image_buffer_small; + } + } + // 翻转图片 + image_buffer = flip_vertical(&image_buffer); + // 转码 + base64 = Some(image_buffer_to_base64(image_buffer)); + } + } + unsafe { + // UnInit + CoUninitialize(); + } + base64 +} + +// 获取图标并转为ImageBuffer +fn get_file_icon_image_buffer( + shell_item_image_factory: &IShellItemImageFactory, + size: i32, +) -> Option, Vec>> { + // 获取图片 + let result = + unsafe { shell_item_image_factory.GetImage(SIZE { cx: size, cy: size }, SIIGBF_ICONONLY) }; + if let Ok(h_bitmap) = result { + // 转为BITMAP + let mut bitmap: BITMAP = BITMAP::default(); + unsafe { + GetObjectW( + h_bitmap, + std::mem::size_of::() as i32, + Some(&mut bitmap as *mut _ as _), + ); + } + // 转换ImageBuffer + let width: u32 = bitmap.bmWidth as u32; + let height = bitmap.bmHeight as u32; + let pixel_data: &[u8] = unsafe { + std::slice::from_raw_parts(bitmap.bmBits as *const u8, (width * height * 4) as usize) + }; + let result = ImageBuffer::, _>::from_raw(width, height, pixel_data.to_vec()); + if let Some(mut image_buffer) = result { + // 将ImageBuffer的颜色通道顺序从BGRA转为RGB + for pixel in image_buffer.pixels_mut() { + let b = pixel[0]; + let r = pixel[2]; + pixel[0] = r; + pixel[2] = b; + } + return Some(image_buffer); + } + } + None +} + +/** + * imageBuffer转BASE64 + */ +fn image_buffer_to_base64(image_buffer: ImageBuffer, Vec>) -> String { + // imageBufferData + let mut image_buffer_data = Cursor::new(Vec::new()); + // write + image_buffer + .write_to(&mut image_buffer_data, ImageFormat::Png) + .unwrap(); + // 转码 + format!( + "data:image/png;base64,{}", + general_purpose::STANDARD.encode(image_buffer_data.into_inner()) + ) +} + +/** + * 运行 + */ +pub fn shell_execute( + operation: String, + file: String, + params: String, + start_location: Option, +) { + // dir + let dir = start_location.unwrap_or_else(|| { + // 判断是否是文件夹 + let path = Path::new(&file); + if path.is_dir() { + // 文件夹 + file.clone() + } else { + // 文件 获取上一级目录 + path.parent().unwrap().display().to_string() + } + }); + // HSTRING + let operation = HSTRING::from(operation.as_str()); + let file = HSTRING::from(file.as_str()); + let params = HSTRING::from(params.as_str()); + let dir = HSTRING::from(dir.as_str()); + // PCWSTR + let operation = PCWSTR(operation.as_ptr()); + let file = PCWSTR(file.as_ptr()); + let params = PCWSTR(params.as_ptr()); + let dir = PCWSTR(dir.as_ptr()); + unsafe { + // execute + ShellExecuteW(None, operation, file, params, dir, SW_SHOWDEFAULT); + } +} + +/** + * 获取快捷方式信息 + */ +pub fn get_shortcut_file_info(path: &str) -> Option> { + // HSTRING + let path = HSTRING::from(path); + unsafe { + // Init + let _ = CoInitializeEx(None, COINIT_APARTMENTTHREADED); + } + // IShellLinkW + let shell_link_result: Result = + unsafe { CoCreateInstance(&ShellLink, None, CLSCTX_INPROC_SERVER) }; + if let Ok(shell_link) = shell_link_result { + // IPersistFile + let persist_file_result: Result = shell_link.cast(); + if let Ok(persist_file) = persist_file_result { + let load_result = unsafe { + // 加载路径 + persist_file.Load(PCWSTR(path.as_ptr()), STGM_READ) + }; + if let Ok(()) = load_result { + // 获取目标 + let mut target_buffer = [0u16; MAX_PATH as usize]; + let _ = unsafe { + shell_link.GetPath( + &mut target_buffer, + std::ptr::null_mut(), + SLGP_UNCPRIORITY.0 as u32, + ) + }; + // 获取参数 + let mut arguments_buffer = [0u16; MAX_PATH as usize]; + let _ = unsafe { shell_link.GetArguments(&mut arguments_buffer) }; + // map + let mut map = HashMap::with_capacity(2); + map.insert(String::from("target"), u16_to_string(&target_buffer)); + map.insert(String::from("arguments"), u16_to_string(&arguments_buffer)); + return Some(map); + } + } + } + unsafe { + // UnInit + CoUninitialize(); + } + None +} + +/** + * 运行命令 + */ +pub fn system_item_execute(target: &str, params: Option<&str>) { + if target == "static:TurnOffMonitor" { + // 关闭显示器 + turn_off_monitor() + } else { + let mut file = target.to_string(); + if !target.starts_with("shell:") { + // 如果不是shell开头,就查询路径 + file = search_path(target).unwrap_or(target.to_string()); + } + let file = HSTRING::from(file); + let params = match params { + Some(p) => HSTRING::from(p), + _ => HSTRING::new(), + }; + // 获取系统盘路径当作工作目录 + let mut buffer = [0u16; MAX_PATH as usize]; + unsafe { + GetSystemDirectoryW(Some(&mut buffer)); + } + let dir = u16_to_string(&buffer); + let dir = HSTRING::from(dir); + // execute + unsafe { + ShellExecuteW( + None, + w!("open"), + PCWSTR(file.as_ptr()), + PCWSTR(params.as_ptr()), + PCWSTR(dir.as_ptr()), + SW_SHOWDEFAULT, + ); + } + } +} + +/** + * 关闭显示器 + */ +pub fn turn_off_monitor() { + unsafe { + let _ = SendMessageW( + FindWindowW(PCWSTR::null(), PCWSTR::null()), + WM_SYSCOMMAND, + WPARAM(SC_MONITORPOWER as usize), + LPARAM(2), + ); + } +} + +/** + * 打开文件所在位置 + */ +pub fn open_file_location(path: &str) { + let _ = Command::new("explorer").arg("/select,").arg(path).spawn(); +} + +/** + * 资源管理器菜单 + */ +pub fn explorer_context_menu(window: i32, path: &str, x: i32, y: i32) { + // IShellItem + let path = HSTRING::from(path); + if let Ok(shell_item) = + unsafe { SHCreateItemFromParsingName::<_, _, IShellItem>(PCWSTR(path.as_ptr()), None) } + { + // IContextMenu + if let Ok(context_menu) = + unsafe { shell_item.BindToHandler::<_, IContextMenu>(None, &BHID_SFUIObject) } + { + // Menu + if let Ok(menu) = unsafe { CreatePopupMenu() } { + // 写入菜单 + if let Ok(()) = + unsafe { context_menu.QueryContextMenu(menu, 0, 1, 0x7FFF, CMF_NORMAL) } + { + // HWND + let hwnd = HWND(window as isize); + // 弹出菜单 + let res = unsafe { + SetForegroundWindow(hwnd); + TrackPopupMenu(menu, TPM_RETURNCMD | TPM_NONOTIFY, x, y, 0, hwnd, None) + }; + unsafe { + DestroyMenu(menu); + } + if res.as_bool() { + let mut info = CMINVOKECOMMANDINFO::default(); + info.cbSize = std::mem::size_of::() as u32; + info.hwnd = hwnd; + info.lpVerb = PCSTR((res.0 - 1) as *mut u8); + info.nShow = SW_NORMAL.0 as i32; + let _ = unsafe { context_menu.InvokeCommand(&info) }; + } + } + } + } + } +} + +/** + * 搜索路径 + */ +pub fn search_path(name: &str) -> Option { + let name = HSTRING::from(name); + let mut buffer = [0u16; MAX_PATH as usize]; + let result = unsafe { + SearchPathW( + PCWSTR::null(), + PCWSTR(name.as_ptr()), + PCWSTR::null(), + Some(&mut buffer), + None, + ) + }; + if result > 0 { + Some(u16_to_string(&buffer)) + } else { + None + } +} + +/** + * 数组转String + */ +fn u16_to_string(slice: &[u16]) -> String { + let mut vec = vec![]; + for s in slice { + if *s > 0 { + vec.push(*s); + } + } + String::from_utf16_lossy(&vec) +} + +/** + * 获取环境变量 + */ +pub fn get_env_by_name(name: &str) -> Option { + let name = HSTRING::from(name); + let mut buffer = [0u16; MAX_PATH as usize]; + let result = unsafe { GetEnvironmentVariableW(PCWSTR(name.as_ptr()), Some(&mut buffer)) }; + if result > 0 { + Some(u16_to_string(&buffer)) + } else { + None + } +} + +/** + * 是否有全屏窗口 + */ +fn is_fullscreen_window() -> bool { + // 获取当前活动窗口的句柄 + let foreground_window = unsafe { GetForegroundWindow() }; + // 获取活动窗口的位置信息 + let mut window_rect = RECT::default(); + unsafe { GetWindowRect(foreground_window, &mut window_rect) }; + // 获取包含活动窗口的显示器句柄 + let monitor = unsafe { MonitorFromWindow(foreground_window, MONITOR_DEFAULTTONEAREST) }; + // 获取显示器信息 + let mut monitor_info = MONITORINFO::default(); + monitor_info.cbSize = std::mem::size_of::() as u32; + unsafe { GetMonitorInfoW(monitor, &mut monitor_info) }; + // 获取屏幕的尺寸 + let screen_width = unsafe { GetSystemMetrics(SM_CXSCREEN) }; + let screen_height = unsafe { GetSystemMetrics(SM_CYSCREEN) }; + // 比较窗口位置和显示器尺寸来判断是否处于全屏模式 + if window_rect.left <= 0 + && window_rect.top <= 0 + && window_rect.right >= screen_width + && window_rect.bottom >= screen_height + && monitor_info.rcMonitor.left == 0 + && monitor_info.rcMonitor.top == 0 + && monitor_info.rcMonitor.right == screen_width + && monitor_info.rcMonitor.bottom == screen_height + { + // 获取窗口类名 + let mut buffer = [0u16; MAX_PATH as usize]; + unsafe { GetClassNameW(foreground_window, &mut buffer) }; + // 转为String + let name = u16_to_string(&buffer); + if name != "WorkerW" { + return true; + } + } + false +} + +/** + * 是否是全屏模式 + */ +pub fn is_fullscreen() -> bool { + if let Ok(state) = unsafe { SHQueryUserNotificationState() } { + if state == QUNS_NOT_PRESENT { + // 非全屏(机器锁定/屏幕保护程序/用户切换) + return false; + } else if state == QUNS_BUSY { + // 全屏(F11 全屏,我试过的所有视频游戏都使用它) + return is_fullscreen_window(); + } else if state == QUNS_RUNNING_D3D_FULL_SCREEN { + // 全屏(Direct3D 应用程序以独占模式运行,即全屏) + return true; + } else if state == QUNS_PRESENTATION_MODE { + // 全屏(一种用于显示全屏演示文稿的特殊模式) + return true; + } else if state == QUNS_ACCEPTS_NOTIFICATIONS { + // 不是全屏 + return false; + } else if state == QUNS_QUIET_TIME { + // 不是全屏 + return false; + } else if state == QUNS_APP { + // 不是全屏 + return false; + } + } + false +} + +/** + * 切换英文输入法 + */ +pub fn switch_english(window: i32) { + // 窗口句柄 + let hwnd = HWND(window as isize); + // 获取输入法上下文 + let imc = unsafe { ImmGetContext(hwnd) }; + // 设置输入法的首选转换模式为英文 + unsafe { ImmSetConversionStatus(imc, IME_CMODE_ALPHANUMERIC, IME_SMODE_AUTOMATIC) }; + // 释放输入法上下文 + unsafe { ImmReleaseContext(hwnd, imc) }; +} + +// 是否回调 +static mut MOUSE_HOOK_CALL: AtomicBool = AtomicBool::new(false); +// ThreadsafeFunction +static mut TSFN: Option> = None; +// 全局鼠标HOOK +static mut MOUSE_HOOK: Option = None; + +// 鼠标事件 +#[derive(Debug, Serialize, Deserialize)] +struct MouseEvent { + event: String, + x: i32, + y: i32, + button: i32, + mouse_data: u32, +} + +/** + * HOOK回调方法 + */ +unsafe extern "system" fn mouse_proc(code: i32, wparam: WPARAM, lparam: LPARAM) -> LRESULT { + if code >= 0 && MOUSE_HOOK_CALL.load(Ordering::Relaxed) { + // 鼠标坐标 + let msll_struct = lparam.0 as *const MSLLHOOKSTRUCT; + let x = (*msll_struct).pt.x; + let y = (*msll_struct).pt.y; + let mouse_data = (*msll_struct).mouseData; + // 参数 + let param = wparam.0 as u32; + // 事件 + let mut event = String::from(""); + // 按键类型 + let mut button = -1; + // 判断事件 + if param == WM_MOUSEMOVE { + // 鼠标移动 + event.push_str("mousemove"); + } else { + // 鼠标操作 + if param == WM_LBUTTONUP || param == WM_RBUTTONUP || param == WM_MBUTTONUP { + event.push_str("mouseup"); + } else if param == WM_LBUTTONDOWN || param == WM_RBUTTONDOWN || param == WM_MBUTTONDOWN + { + event.push_str("mousedown"); + } else if param == WM_MOUSEWHEEL || param == WM_MOUSEHWHEEL { + event.push_str("mousewheel"); + } + // 按键类型 + if param == WM_LBUTTONUP || param == WM_LBUTTONDOWN { + button = 1; + } else if param == WM_RBUTTONUP || param == WM_RBUTTONDOWN { + button = 2; + } else if param == WM_MBUTTONUP || param == WM_MBUTTONDOWN { + button = 3; + } else if param == WM_MOUSEWHEEL { + button = 0; + } else if param == WM_MOUSEHWHEEL { + button = 1; + } + } + if event != "" { + if let Some(func) = TSFN.as_ref() { + let mouse_event = MouseEvent { + event, + x, + y, + mouse_data, + button, + }; + func.call( + Ok(serde_json::to_string(&mouse_event).unwrap()), + ThreadsafeFunctionCallMode::NonBlocking, + ); + } + } + } + return CallNextHookEx(MOUSE_HOOK.unwrap(), code, wparam, lparam); +} + +/** + * 创建鼠标hook + */ +pub fn create_mouse_hook(callback: JsFunction) { + // 创建回调 + if let Ok(threadsafe_function) = + callback.create_threadsafe_function(0, |ctx| Ok(vec![ctx.value])) + { + unsafe { TSFN = Some(threadsafe_function) }; + // 创建鼠标HOOK + if let Ok(hook) = unsafe { SetWindowsHookExW(WH_MOUSE_LL, Some(mouse_proc), None, 0) } { + unsafe { + MOUSE_HOOK = Some(hook); + MOUSE_HOOK_CALL.store(true, Ordering::Relaxed); + }; + } + } +} + +/** + * 启用鼠标HOOK + */ +pub fn enable_mouse_hook() { + unsafe { MOUSE_HOOK_CALL.store(true, Ordering::Relaxed) } +} + +/** + * 禁用鼠标HOOK + */ +pub fn disable_mouse_hook() { + unsafe { MOUSE_HOOK_CALL.store(false, Ordering::Relaxed) } +} + +/** + * 获取鼠标点击的窗口ClassName + */ +pub fn get_cursor_pos_window_class_name() -> String { + // 获取鼠标位置 + let mut point: POINT = POINT::default(); + unsafe { + GetCursorPos(&mut point); + } + // 获取鼠标所在的窗口句柄 + let hwnd = unsafe { WindowFromPoint(point) }; + // 获取窗口的ClassName + let mut buffer = [0u16; MAX_PATH as usize]; + unsafe { + GetClassNameW(hwnd, &mut buffer); + }; + // 返回 + u16_to_string(&buffer) +} + +/** + * 获取剪切板文件列表 + */ +pub fn get_clipboard_file_list() -> Vec { + match get_clipboard(formats::FileList) { + Ok(vec) => vec, + Err(_) => vec![], + } +} + +/** + * 剪切板是否存在BITMAP + */ +pub fn clipboard_has_bitmap() -> bool { + match get_clipboard(formats::Bitmap) { + Ok(_) => true, + Err(_) => false, + } +} + +/** + * 获取剪切板BITMAP的BASE64 + */ +pub fn get_clipboard_bitmap_base64() -> Option { + match get_clipboard(formats::Bitmap) { + Ok(data) => Some(format!( + "data:image/bmp;base64,{}", + general_purpose::STANDARD.encode(data) + )), + Err(_) => None, + } +} + +/** + * 清空回收站 + */ +pub fn empty_recycle_bin(window: i32) { + // HWND + let hwnd = HWND(window as isize); + // 清空回收站 + unsafe { + let _ = SHEmptyRecycleBinW(hwnd, None, SHERB_NOSOUND); + }; +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..931601d --- /dev/null +++ b/src/App.vue @@ -0,0 +1,282 @@ + + diff --git a/src/components/CustomItemIcon.vue b/src/components/CustomItemIcon.vue new file mode 100644 index 0000000..d24f684 --- /dev/null +++ b/src/components/CustomItemIcon.vue @@ -0,0 +1,91 @@ + + +../../types/item diff --git a/src/components/Desc.vue b/src/components/Desc.vue new file mode 100644 index 0000000..81d4caf --- /dev/null +++ b/src/components/Desc.vue @@ -0,0 +1,20 @@ + + diff --git a/src/components/ItemIcon.vue b/src/components/ItemIcon.vue new file mode 100644 index 0000000..1bb6ded --- /dev/null +++ b/src/components/ItemIcon.vue @@ -0,0 +1,172 @@ + + +../../types/item diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..4a63818 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,185 @@ +import { Classification } from "../types/classification"; +import { Item } from "../types/item"; + +type Callback = (param: any) => void; + +declare global { + interface Window { + api: { + emit: (windowName: string, listener: string, paylod: any) => void; + showErrorMessageBox: (windowName: string, message: string) => void; + showInfoMessageBox: (windowName: string, message: string) => void; + showConfirmBox: (windowName: string, message: string) => boolean; + selectFile: ( + windowName: string, + target: boolean, + defaultPath: string | null + ) => string | null; + selectDirectory: ( + windowName: string, + defaultPath: string | null + ) => string | null; + getFileIcon: (windowName: string, path: string) => void; + onGetFileIcon: (callback: Callback) => Function; + downloadImage: (windowName: string, url: string) => void; + onDownloadImage: (callback: Callback) => Function; + getURLInfo: (windowName: string, url: string) => void; + onGetURLInfo: (callback: Callback) => Function; + convertPath: (path: string) => string; + pathExist: (path: string) => boolean; + isFile: (path: string) => boolean; + openURL: (url: string) => void; + getVersion: () => string; + exit: () => void; + }; + main: { + showWindow: (blurHide: boolean) => void; + hideWindow: () => void; + initData: () => void; + onShowWindowBefore: (callback: Callback) => Function; + }; + classification: { + list: () => Array; + selectById: (id: number) => Classification | null; + add: ( + parentId: number | null, + name: string, + shortcutKey: string | null, + globalShortcutKey: boolean + ) => Classification | null; + update: (classifictaion: Classification) => boolean; + updateOrder: ( + fromId: number, + toId: number | null, + parentId: number | null + ) => boolean; + updateIcon: (id: number, icon: string | null) => boolean; + showAddEditWindow: () => void; + closeAddEditWindow: () => void; + showSetIconWindow: () => void; + closeSetIconWindow: () => void; + showRightMenu: ( + classification: Classification | null, + lockClassification: boolean + ) => void; + onAdd: (callback: Callback) => Function; + onUpdate: (callback: Callback) => Function; + onDelete: (callback: Callback) => Function; + onLock: (callback: Callback) => Function; + onUpdateIcon: (callback: Callback) => Function; + showAssociateFolderWindow: () => void; + closeAssociateFolderWindow: () => void; + setAssociateFolder: ( + id: number, + dir: string | null, + hiddenItems: string | null + ) => Classification; + onUpdateAssociateFolder: (callback: Callback) => Function; + hasChildClassification: (id: number) => boolean; + onCollapseSubClassification: (callback: Callback) => Function; + onUpdateItemLayout: (callback: Callback) => Function; + onUpdateItemSort: (callback: Callback) => Function; + onUpdateItemColumnNumber: (callback: Callback) => Function; + onUpdateItemIconSize: (callback: Callback) => Function; + addClassificationByDirectory: (pathList: Array) => void; + onAddClassificationByDirectory: (callback: Callback) => Function; + onUpdateItemShowOnly: (callback: Callback) => Function; + onUpdateFixed: (callback: Callback) => Function; + onUpdateItemOpenNumberSortToDefualt: (callback: Callback) => Function; + showAggregateWindow: () => void; + closeAggregateWindow: () => void; + updateAggregate: (id: number, sort: string, itemCount: number) => boolean; + onUpdateAggregate: (callback: Callback) => Function; + onUpdateExcludeSearch: (callback: Callback) => Function; + }; + item: { + showAddEditWindow: () => void; + closeAddEditWindow: () => void; + list: () => Array; + simpleList: () => Array; + selectById: (id: number) => Item | null; + add: (item: Item) => Item | null; + update: (item: Item) => boolean; + updateOrder: ( + fromIdList: Array, + toClassificationId: number, + newIndex: number | null + ) => boolean; + showRightMenu: (params: any) => void; + createNetworkIconWindow: () => void; + showNetworkIconWindow: () => void; + closeNetworkIconWindow: () => void; + onNetworkIcon: (callback: Callback) => Function; + createSVGIconWindow: () => void; + showSVGIconWindow: () => void; + closeSVGIconWindow: () => void; + onSVGIcon: (callback: Callback) => Function; + getSystemItemList: () => void; + onGetSystemItemList: (callback: Callback) => Function; + getStartMenuItemList: () => void; + onGetStartMenuItemList: (callback: Callback) => Function; + getAppxItemList: () => void; + onGetAppxItemList: (callback: Callback) => Function; + onAdd: (callback: Callback) => Function; + onUpdate: (callback: Callback) => Function; + onDelete: (callback: Callback) => Function; + onLock: (callback: Callback) => Function; + drop: (classificationId: number, pathList: Array) => void; + onBatchOperation: (callback: Callback) => Function; + run: (type: string, operation: string, item: Item) => void; + onConvertPath: (callback: Callback) => Function; + onRefreshIcon: (callback: Callback) => Function; + onMove: (callback: Callback) => Function; + onBatchOperationSelectAll: (callback: Callback) => Function; + onRightMenuClose: (callback: Callback) => Function; + onExplorerMenu: (callback: Callback) => Function; + dragOut: (item: Item) => void; + onCancelDragOut: (callback: Callback) => Function; + onUpdateOpenInfo: (callback: Callback) => Function; + onCheckInvalid: (callback: Callback) => Function; + updateOpenInfo: (type: string, id: number) => void; + }; + setting: { + createWindow: () => void; + showWindow: () => void; + closeWindow: () => void; + select: () => Setting | null; + add: (setting: Setting) => boolean; + update: (setting: Setting) => boolean; + onUpdate: (callback: Callback) => Function; + setStartup: (value: boolean) => void; + setTray: (show: boolean) => void; + setShortcutKey: (setting: Setting) => void; + setAlwaysTop: (value: boolean) => void; + setLockSize: (value: boolean) => void; + setFixedPosition: (fixedPosition: boolean, alwaysCenter: boolean) => void; + setAlwaysCenter: (fixedPosition: boolean, alwaysCenter: boolean) => void; + setEdgeAdsorb: (value: boolean) => void; + uploadBackgrounImage: () => any; + onSetBacngroundImage: (callback: Callback) => Function; + getBackgroundImage: (name: string, windowName: string) => void; + setCheckInvalidItem: (value: boolean) => void; + setOpenNumber: (value: boolean) => void; + }; + quickSearch: { + initFinished: () => void; + showWindow: () => void; + hideWindow: () => void; + onShowWindowBefore: (callback: Callback) => Function; + onClearData: (callback: Callback) => Function; + setWindowHeight: (height: number) => void; + }; + about: { + createWindow: () => void; + showWindow: () => void; + closeWindow: () => void; + }; + data: { + createBackupRestoreDataWindow: () => void; + showBackupRestoreDataWindow: () => void; + closeBackupRestoreDataWindow: () => void; + backupData: () => void; + restoreData: () => void; + }; + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..5b93b35 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,9 @@ +import { createApp } from "vue"; +import "./styles/style.css"; +import "./styles/tailwind.css"; +import router from "./router/index"; +import App from "./App.vue"; +import { createPinia } from "pinia"; +const pinia = createPinia(); + +createApp(App).use(router).use(pinia).mount("#app"); diff --git a/src/main/api/api.cc b/src/main/api/api.cc deleted file mode 100644 index 450e61f..0000000 --- a/src/main/api/api.cc +++ /dev/null @@ -1,589 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#pragma comment(lib, "imm32.lib") - -std::string UTF8ToGBK(const char *source) -{ - int length = MultiByteToWideChar(CP_UTF8, 0, source, -1, NULL, 0); - wchar_t *wcGBK = new wchar_t[length + 1]; - memset(wcGBK, 0, length * 2 + 2); - MultiByteToWideChar(CP_UTF8, 0, source, -1, wcGBK, length); - length = WideCharToMultiByte(CP_ACP, 0, wcGBK, -1, NULL, 0, NULL, NULL); - char *cGBK = new char[length + 1]; - memset(cGBK, 0, length + 1); - WideCharToMultiByte(CP_ACP, 0, wcGBK, -1, cGBK, length, NULL, NULL); - std::string strTemp(cGBK); - if (wcGBK) - delete[] wcGBK; - if (cGBK) - delete[] cGBK; - return strTemp; -} - -std::string GBKToUTF8(const char *source) -{ - int length = MultiByteToWideChar(CP_ACP, 0, source, -1, NULL, 0); - wchar_t *wStr = new wchar_t[length + 1]; - memset(wStr, 0, length + 1); - MultiByteToWideChar(CP_ACP, 0, source, -1, wStr, length); - length = WideCharToMultiByte(CP_UTF8, 0, wStr, -1, NULL, 0, NULL, NULL); - char *str = new char[length + 1]; - memset(str, 0, length + 1); - WideCharToMultiByte(CP_UTF8, 0, wStr, -1, str, length, NULL, NULL); - std::string strTemp = str; - if (wStr) - delete[] wStr; - if (str) - delete[] str; - return strTemp; -} - -LPCWSTR StringToLPCWSTR(std::string source) -{ - size_t size = source.length(); - int wLen = ::MultiByteToWideChar(CP_UTF8, - 0, - source.c_str(), - -1, - NULL, - 0); - wchar_t *buffer = new wchar_t[wLen + 1]; - memset(buffer, 0, (wLen + 1) * sizeof(wchar_t)); - MultiByteToWideChar(CP_ACP, 0, source.c_str(), size, (LPWSTR)buffer, wLen); - return buffer; -} - -Napi::Number SaveIcon(std::string source, std::string target, int size, Napi::Env env) -{ - CoInitialize(NULL); - IShellItemImageFactory *itemImageFactory; - HBITMAP bitmap; - SIZE s = {size, size}; - if (SUCCEEDED(SHCreateItemFromParsingName(StringToLPCWSTR(source), NULL, IID_PPV_ARGS(&itemImageFactory)))) - { - itemImageFactory->GetImage(s, SIIGBF_ICONONLY, &bitmap); - itemImageFactory->Release(); - } - CoUninitialize(); - if (NULL == &bitmap) - { - return Napi::Number::New(env, 0); - } - else - { - CImage image; - image.Attach(bitmap); - image.SetHasAlphaChannel(1); - image.Save(target.c_str()); - return Napi::Number::New(env, 1); - } -} - -Napi::Number GetFileIcon(const Napi::CallbackInfo &info) -{ - Napi::Env env = info.Env(); - std::string source = info[0].ToString().Utf8Value(); - std::string target = info[1].ToString().Utf8Value(); - int size = info[2].As().Int32Value(); - return SaveIcon(UTF8ToGBK(source.c_str()), UTF8ToGBK(target.c_str()), size, env); -} - -Napi::Object GetShortcutFile(const Napi::CallbackInfo &info) -{ - Napi::Env env = info.Env(); - std::string source = info[0].ToString().Utf8Value(); - source = UTF8ToGBK(source.c_str()); - Napi::Object shortcutFileInfo; - CoInitialize(NULL); - CHAR target[MAX_PATH]; - CHAR arguments[MAX_PATH]; - WIN32_FIND_DATA fd; - IShellLink *shellLink; - HRESULT result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&shellLink); - if (SUCCEEDED(result)) - { - IPersistFile *persistFile; - result = shellLink->QueryInterface(IID_IPersistFile, (void **)&persistFile); - if (SUCCEEDED(result)) - { - result = persistFile->Load(StringToLPCWSTR(source), STGM_READ); - if (SUCCEEDED(result)) - { - shellLink->GetPath(target, MAX_PATH, &fd, SLGP_UNCPRIORITY); - shellLink->GetArguments(arguments, MAX_PATH); - shortcutFileInfo = Napi::Object::New(env); - shortcutFileInfo.Set(Napi::String::New(env, "target"), Napi::String::New(env, GBKToUTF8(target))); - shortcutFileInfo.Set(Napi::String::New(env, "arguments"), Napi::String::New(env, GBKToUTF8(arguments))); - } - } - if (NULL != persistFile) - { - persistFile->Release(); - } - } - if (NULL != shellLink) - { - shellLink->Release(); - } - CoUninitialize(); - return shortcutFileInfo; -} - -Napi::Number RunItem(const Napi::CallbackInfo &info) -{ - Napi::Env env = info.Env(); - std::string type = info[0].ToString().Utf8Value(); - std::string source = info[1].ToString().Utf8Value(); - std::string parameters = info[2].ToString().Utf8Value(); - LPCWSTR ldir; - if (info[3] != NULL) - { - std::string dir = info[3].ToString().Utf8Value(); - ldir = StringToLPCWSTR(UTF8ToGBK(dir.c_str())); - } - return Napi::Number::New(env, (unsigned long)ShellExecuteW(NULL, StringToLPCWSTR(type), StringToLPCWSTR(UTF8ToGBK(source.c_str())), StringToLPCWSTR(UTF8ToGBK(parameters.c_str())), ldir, SW_SHOWDEFAULT)); -} - -Napi::ThreadSafeFunction _tsfn; -HANDLE _hThread; -std::atomic_bool captureMouseMove = false; -// PostThreadMessage races with the actual thread; we'll get a thread ID -// and won't be able to post to it because it's "invalid" during the early -// lifecycle of the thread. To ensure that immediate pauses don't get dropped, -// we'll use this flag instead of distinct message IDs. -std::atomic_bool installEventHook = false; -DWORD dwThreadID = 0; - -struct MouseEventContext -{ -public: - int nCode; - WPARAM wParam; - LONG ptX; - LONG ptY; - DWORD mouseData; -}; - -void onMainThread(Napi::Env env, Napi::Function function, MouseEventContext *pMouseEvent) -{ - auto nCode = pMouseEvent->nCode; - auto wParam = pMouseEvent->wParam; - auto ptX = pMouseEvent->ptX; - auto ptY = pMouseEvent->ptY; - auto nMouseData = pMouseEvent->mouseData; - - delete pMouseEvent; - - if (nCode >= 0) - { - auto name = ""; - auto button = -1; - - // Isolate mouse movement, as it's more CPU intensive - if (wParam == WM_MOUSEMOVE) - { - // Is mouse movement - if (captureMouseMove.load()) - { - name = "mousemove"; - } - } - else - { - // Is not mouse movement - - // Determine event type - if (wParam == WM_LBUTTONUP || wParam == WM_RBUTTONUP || wParam == WM_MBUTTONUP) - { - name = "mouseup"; - } - else if (wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN || wParam == WM_MBUTTONDOWN) - { - name = "mousedown"; - } - else if (wParam == WM_MOUSEWHEEL || wParam == WM_MOUSEHWHEEL) - { - name = "mousewheel"; - } - - // Determine button - if (wParam == WM_LBUTTONUP || wParam == WM_LBUTTONDOWN) - { - button = 1; - } - else if (wParam == WM_RBUTTONUP || wParam == WM_RBUTTONDOWN) - { - button = 2; - } - else if (wParam == WM_MBUTTONUP || wParam == WM_MBUTTONDOWN) - { - button = 3; - } - else if (wParam == WM_MOUSEWHEEL) - { - button = 0; - } - else if (wParam == WM_MOUSEHWHEEL) - { - button = 1; - } - } - - // Only proceed if an event was identified - if (name != "") - { - Napi::HandleScope scope(env); - - auto x = Napi::Number::New(env, ptX); - auto y = Napi::Number::New(env, ptY); - - auto mouseData = Napi::Number::New(env, nMouseData); - - // Yell back to NodeJS - function.Call(env.Global(), - {Napi::String::New(env, name), x, y, - Napi::Number::New(env, button), mouseData}); - } - } -} - -LRESULT CALLBACK HookCallback(int nCode, WPARAM wParam, LPARAM lParam) -{ - - // If not WM_MOUSEMOVE or WM_MOUSEMOVE has been requested, process event - if (!(wParam == WM_MOUSEMOVE && !captureMouseMove.load())) - { - // Prepare data to be processed - MSLLHOOKSTRUCT *data = (MSLLHOOKSTRUCT *)lParam; - auto pMouseEvent = new MouseEventContext(); - pMouseEvent->nCode = nCode; - pMouseEvent->wParam = wParam; - pMouseEvent->ptX = data->pt.x; - pMouseEvent->ptY = data->pt.y; - pMouseEvent->mouseData = data->mouseData; - - // Process event on non-blocking thread - _tsfn.NonBlockingCall(pMouseEvent, onMainThread); - } - - // Let Windows continue with this event as normal - return CallNextHookEx(NULL, nCode, wParam, lParam); -} - -DWORD WINAPI MouseHookThread(LPVOID lpParam) -{ - MSG msg; - HHOOK hook = installEventHook.load() ? SetWindowsHookEx(WH_MOUSE_LL, HookCallback, NULL, 0) : NULL; - - while (GetMessage(&msg, NULL, 0, 0) > 0) - { - if (msg.message != WM_USER) - continue; - if (!installEventHook.load() && hook != NULL) - { - if (!UnhookWindowsHookEx(hook)) - break; - hook = NULL; - } - else if (installEventHook.load() && hook == NULL) - { - hook = SetWindowsHookEx(WH_MOUSE_LL, HookCallback, NULL, 0); - if (hook == NULL) - break; - } - } - - _tsfn.Release(); - return GetLastError(); -} - -Napi::Boolean createMouseHook(const Napi::CallbackInfo &info) -{ - _hThread = CreateThread(NULL, 0, MouseHookThread, NULL, CREATE_SUSPENDED, &dwThreadID); - _tsfn = Napi::ThreadSafeFunction::New( - info.Env(), - info[0].As(), - "WH_MOUSE_LL Hook Thread", - 512, - 1, - [](Napi::Env) - { CloseHandle(_hThread); }); - - ResumeThread(_hThread); - return Napi::Boolean::New(info.Env(), true); -} - -void enableMouseMove(const Napi::CallbackInfo &info) -{ - captureMouseMove = true; -} - -void disableMouseMove(const Napi::CallbackInfo &info) -{ - captureMouseMove = false; -} - -Napi::Boolean pauseMouseEvents(const Napi::CallbackInfo &info) -{ - BOOL bDidPost = FALSE; - if (dwThreadID != 0) - { - installEventHook = false; - bDidPost = PostThreadMessageW(dwThreadID, WM_USER, NULL, NULL); - } - return Napi::Boolean::New(info.Env(), bDidPost); -} - -Napi::Boolean resumeMouseEvents(const Napi::CallbackInfo &info) -{ - BOOL bDidPost = FALSE; - if (dwThreadID != 0) - { - installEventHook = true; - bDidPost = PostThreadMessageW(dwThreadID, WM_USER, NULL, NULL); - } - return Napi::Boolean::New(info.Env(), bDidPost); -} - -Napi::Boolean IsFullscreenSize(const Napi::CallbackInfo &info) -{ - // 获取当前活动窗口的句柄 - HWND foregroundWindow = GetForegroundWindow(); - // 获取活动窗口的位置信息 - RECT windowRect; - GetWindowRect(foregroundWindow, &windowRect); - // 获取包含活动窗口的显示器句柄 - HMONITOR monitor = MonitorFromWindow(foregroundWindow, MONITOR_DEFAULTTONEAREST); - // 获取显示器信息 - MONITORINFO monitorInfo = { sizeof(MONITORINFO) }; - GetMonitorInfo(monitor, &monitorInfo); - // 获取屏幕的尺寸 - int screenWidth = GetSystemMetrics(SM_CXSCREEN); - int screenHeight = GetSystemMetrics(SM_CYSCREEN); - // 比较窗口位置和显示器尺寸来判断是否处于全屏模式 - if (windowRect.left <= 0 && windowRect.top <= 0 && - windowRect.right >= screenWidth && windowRect.bottom >= screenHeight && - monitorInfo.rcMonitor.left == 0 && monitorInfo.rcMonitor.top == 0 && - monitorInfo.rcMonitor.right == screenWidth && monitorInfo.rcMonitor.bottom == screenHeight) - { - // 获取窗口类名 - char className[256]; - GetClassName(foregroundWindow, className, sizeof(className)); - std::string classNameStr(className); - if (classNameStr != "WorkerW") - { - return Napi::Boolean::New(info.Env(), true); - } - } - return Napi::Boolean::New(info.Env(), false); -} - -Napi::Boolean IsFullscreen(const Napi::CallbackInfo &info) -{ - QUERY_USER_NOTIFICATION_STATE state; - HRESULT hr = SHQueryUserNotificationState(&state); - if (hr == S_OK) - { - switch (state) - { - case QUNS_NOT_PRESENT: - // 非全屏(机器锁定/屏幕保护程序/用户切换) - return Napi::Boolean::New(info.Env(), false); - case QUNS_BUSY: - // 全屏(F11 全屏,我试过的所有视频游戏都使用它) - return IsFullscreenSize(info); - case QUNS_RUNNING_D3D_FULL_SCREEN: - // 全屏(Direct3D 应用程序以独占模式运行,即全屏) - return Napi::Boolean::New(info.Env(), true); - case QUNS_PRESENTATION_MODE: - // 全屏(一种用于显示全屏演示文稿的特殊模式) - return Napi::Boolean::New(info.Env(), true); - case QUNS_ACCEPTS_NOTIFICATIONS: - // 不是全屏 - return Napi::Boolean::New(info.Env(), false); - case QUNS_QUIET_TIME: - // 不是全屏 - return Napi::Boolean::New(info.Env(), false); - case QUNS_APP: - // 不是全屏 - return Napi::Boolean::New(info.Env(), false); - } - return Napi::Boolean::New(info.Env(), false); - } - else - { - return Napi::Boolean::New(info.Env(), false); - } -} - -Napi::Boolean ContextMenu(const Napi::CallbackInfo &info) -{ - // CoInitialize - CoInitialize(NULL); - // 获取文件路径 - std::string filePath = info[1].ToString().Utf8Value(); - // 获取文件的 IShellItem 接口 - IShellItem *pItem; - HRESULT hr = SHCreateItemFromParsingName(StringToLPCWSTR(UTF8ToGBK(filePath.c_str())), NULL, IID_PPV_ARGS(&pItem)); - if (FAILED(hr)) - { - return Napi::Boolean::New(info.Env(), false); - } - // 获取文件的 IContextMenu 接口 - IContextMenu *pContextMenu; - hr = pItem->BindToHandler(NULL, BHID_SFUIObject, IID_PPV_ARGS(&pContextMenu)); - if (FAILED(hr)) - { - pItem->Release(); - return Napi::Boolean::New(info.Env(), false); - } - // 创建菜单 - HMENU hMenu = CreatePopupMenu(); - if (hMenu == NULL) - { - pContextMenu->Release(); - pItem->Release(); - return Napi::Boolean::New(info.Env(), false); - } - hr = pContextMenu->QueryContextMenu(hMenu, 0, 1, 0x7FFF, CMF_NORMAL); - if (FAILED(hr)) - { - DestroyMenu(hMenu); - pContextMenu->Release(); - pItem->Release(); - return Napi::Boolean::New(info.Env(), false); - } - // 获取当前窗口句柄 - Napi::Buffer buffer = info[0].As>(); - HWND hWnd = static_cast(*reinterpret_cast(buffer.Data())); - if (!IsWindow(hWnd)) - { - return Napi::Boolean::New(info.Env(), false); - } - // 弹出菜单 - int command = TrackPopupMenuEx(hMenu, TPM_RETURNCMD | TPM_NONOTIFY, info[2].As(), info[3].As(), hWnd, NULL); - if (command > 0) - { - CMINVOKECOMMANDINFOEX info = {0}; - info.cbSize = sizeof(info); - info.hwnd = hWnd; - info.lpVerb = MAKEINTRESOURCEA(command - 1); - info.nShow = SW_NORMAL; - pContextMenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info); - } - // 释放资源 - DestroyMenu(hMenu); - pContextMenu->Release(); - pItem->Release(); - // CoUninitialize - CoUninitialize(); - return Napi::Boolean::New(info.Env(), true); -} - -Napi::Boolean SwitchEnglish(const Napi::CallbackInfo &info) -{ - // 获取当前窗口句柄 - Napi::Buffer buffer = info[0].As>(); - HWND hWnd = static_cast(*reinterpret_cast(buffer.Data())); - if (!IsWindow(hWnd)) - { - return Napi::Boolean::New(info.Env(), false); - } - // 获取输入法上下文 - HIMC hImc = ImmGetContext(hWnd); - if (hImc == nullptr) - { - return Napi::Boolean::New(info.Env(), false); - } - // 设置输入法的首选转换模式为英文 - ImmSetConversionStatus(hImc, IME_CMODE_ALPHANUMERIC, IME_SMODE_AUTOMATIC); - // 释放输入法上下文 - ImmReleaseContext(hWnd, hImc); - return Napi::Boolean::New(info.Env(), true); -} - -Napi::String getCursorPosWindowClassName(const Napi::CallbackInfo &info) -{ - POINT cursorPos; - GetCursorPos(&cursorPos); - HWND windowHandle = WindowFromPoint(cursorPos); - char className[256]; - GetClassName(windowHandle, className, sizeof(className)); - std::string classNameStr(className); - return Napi::String::New(info.Env(), className); -} - -Napi::Boolean TurnOffMonitor(const Napi::CallbackInfo &info) -{ - // 关闭显示器 - SendMessage(FindWindow(0, 0), WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2); - return Napi::Boolean::New(info.Env(), true); -} - -Napi::Boolean EmptyRecycleBin(const Napi::CallbackInfo &info) { - // 获取当前窗口句柄 - Napi::Buffer buffer = info[0].As>(); - HWND hWnd = static_cast(*reinterpret_cast(buffer.Data())); - if (!IsWindow(hWnd)) - { - return Napi::Boolean::New(info.Env(), false); - } - SHEmptyRecycleBinW(hWnd, NULL, SHERB_NOSOUND); - return Napi::Boolean::New(info.Env(), true); -} - -Napi::Object Init(Napi::Env env, Napi::Object exports) -{ - exports.Set(Napi::String::New(env, "GetFileIcon"), - Napi::Function::New(env, GetFileIcon)); - - exports.Set(Napi::String::New(env, "GetShortcutFile"), - Napi::Function::New(env, GetShortcutFile)); - - exports.Set(Napi::String::New(env, "RunItem"), - Napi::Function::New(env, RunItem)); - - exports.Set(Napi::String::New(env, "createMouseHook"), - Napi::Function::New(env, createMouseHook)); - - exports.Set(Napi::String::New(env, "enableMouseMove"), - Napi::Function::New(env, enableMouseMove)); - - exports.Set(Napi::String::New(env, "disableMouseMove"), - Napi::Function::New(env, disableMouseMove)); - - exports.Set(Napi::String::New(env, "pauseMouseEvents"), - Napi::Function::New(env, pauseMouseEvents)); - - exports.Set(Napi::String::New(env, "resumeMouseEvents"), - Napi::Function::New(env, resumeMouseEvents)); - - exports.Set(Napi::String::New(env, "IsFullscreen"), - Napi::Function::New(env, IsFullscreen)); - - exports.Set(Napi::String::New(env, "ContextMenu"), - Napi::Function::New(env, ContextMenu)); - - exports.Set(Napi::String::New(env, "SwitchEnglish"), - Napi::Function::New(env, SwitchEnglish)); - - exports.Set(Napi::String::New(env, "getCursorPosWindowClassName"), - Napi::Function::New(env, getCursorPosWindowClassName)); - - exports.Set(Napi::String::New(env, "TurnOffMonitor"), - Napi::Function::New(env, TurnOffMonitor)); - - exports.Set(Napi::String::New(env, "EmptyRecycleBin"), - Napi::Function::New(env, EmptyRecycleBin)); - return exports; -} - -NODE_API_MODULE(hello, Init) diff --git a/src/main/appInit.js b/src/main/appInit.js deleted file mode 100644 index 28a645f..0000000 --- a/src/main/appInit.js +++ /dev/null @@ -1,32 +0,0 @@ -import { app } from "electron"; -import fs from "fs"; -import path from "path"; - -function getDawnLauncherProfilePath() { - let p; - if (process.env.NODE_ENV !== "production") { - p = path.resolve("."); - } else { - p = path.dirname(process.execPath); - } - p = path.resolve(p, ".."); - p = path.join(p, ".dawn_launcher_profile"); - return p; -} - -try { - // 安装版 - // 记录一下默认目录 - global.defaultAppDataPath = app.getPath("appData"); - // 获取数据目录配置文件地址 - let dataDirPath = getDawnLauncherProfilePath(); - // 读取文件内容 - let r = fs.readFileSync(dataDirPath); - if (r != null) { - let appDataPath = r.toString(); - fs.statSync(appDataPath); - app.setPath("appData", appDataPath); - } - // 免安装版 - // app.setPath("appData", process.env.NODE_ENV !== "production" ? path.resolve(".") + "/data" : path.dirname(process.execPath) + "/data"); -} catch (e) {} diff --git a/src/main/cache/data.js b/src/main/cache/data.js deleted file mode 100644 index 4ac86d7..0000000 --- a/src/main/cache/data.js +++ /dev/null @@ -1,7 +0,0 @@ -import Store from "electron-store"; - -const cacheStore = new Store({ name: "cache", encryptionKey: "41fdb85a-4706-57b1-ba22-d7556f3723c7", clearInvalidConfig: true }); - -export default { - cacheStore, -}; diff --git a/src/main/classification/index.js b/src/main/classification/index.js deleted file mode 100644 index 975e355..0000000 --- a/src/main/classification/index.js +++ /dev/null @@ -1,50 +0,0 @@ -import util from "../util" - -/** - * 获取分类 - * @param parentId - * @param childId - * @returns {*|null|{childList}|any|any} - */ -function getClassificationById(parentId, childId) { - if (parentId != null) { - let classificationParent; - for (let c of global.list) { - if (c.id == parentId) { - classificationParent = c; - break; - } - } - if (classificationParent != null && childId != null) { - if (!util.arrayIsEmpty(classificationParent.childList)) { - let classificationChild; - for (let c of classificationParent.childList) { - if (c.id == childId) { - classificationChild = c; - break; - } - } - return classificationChild; - } else { - return classificationParent; - } - } else { - return classificationParent; - } - } - return null; -} - -/** - * 转换ID - * @param id - * @param parentId - */ -function convertClassificationId(id, parentId) { - return { classificationParentId: parentId != null ? parentId : id, classificationChildId: parentId != null ? id : null }; -} - -export default { - getClassificationById, - convertClassificationId, -}; diff --git a/src/main/classification/ipcEvent.js b/src/main/classification/ipcEvent.js deleted file mode 100644 index ee32432..0000000 --- a/src/main/classification/ipcEvent.js +++ /dev/null @@ -1,338 +0,0 @@ -import { dialog, ipcMain, Menu } from "electron"; -import data from "../data"; -import ItemJS from "../item/index"; -import cacheData from "../cache/data"; -import util from "../util"; - -/** - * 删除分类提示 - * @param params - * @param callback - */ -function classificationDeleteDialog(params, callback) { - let name = params.classificationChildId != null ? params.classificationChildName : params.classificationParentName; - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.deleteClassificationMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - callback(params); - } - }); -} - -export default function () { - // 分类空白处右键菜单 - ipcMain.on("classificationContentRightMenu", (event, args) => { - let m = Menu.buildFromTemplate([ - { - label: global.currentLanguage.newClassification, - click: () => { - let params = { - type: 0, - }; - global.mainWindow.webContents.send("showClassificationAddEditWindow", JSON.stringify(params)); - }, - }, - ]); - util.menuListen(m); - m.popup(); - }); - // 某个父级分类上右键菜单 - ipcMain.on("classificationRightMenu", (event, args) => { - let p = JSON.parse(args); - let menuList = [ - { - label: global.currentLanguage.newSubClassification, - click: () => { - let params = { - type: 0, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAddEditWindow", JSON.stringify(params)); - }, - }, - { type: "separator" }, - { - label: global.currentLanguage.newClassification, - click: () => { - let params = { - type: 0, - }; - global.mainWindow.webContents.send("showClassificationAddEditWindow", JSON.stringify(params)); - }, - }, - { type: "separator" }, - ]; - // 固定分类 - let fixedClassificationData = data.store.get("fixedClassification"); - let selected = - fixedClassificationData != null && - fixedClassificationData.classificationParentId == p.classificationParentId && - fixedClassificationData.classificationChildId == null; - menuList.push({ - label: global.currentLanguage.fixedClassification, - icon: selected ? util.getDot() : null, - click: () => { - if (selected) { - data.store.set("fixedClassification", null); - } else { - data.store.set("fixedClassification", { classificationParentId: p.classificationParentId }); - } - }, - }); - if (!p.aggregate) { - menuList.push({ - label: global.currentLanguage.excludeSearch, - icon: p.excludeSearch ? util.getDot() : null, - click: () => { - let params = { - classificationParentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("classificationExcludeSearch", JSON.stringify(params)); - }, - }); - } - menuList.push({ type: "separator" }); - if (!p.haveClassificationChild) { - if (!p.aggregate) { - // 关联文件夹 - menuList.push({ - label: global.currentLanguage.associatedFolder, - click: () => { - let params = { - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAssociatedFolderWindow", JSON.stringify(params)); - }, - }); - } - if (!p.isMapDirectory) { - menuList.push({ - label: "聚合分类", - click: () => { - let params = { - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAggregateWindow", JSON.stringify(params)); - }, - }); - } - menuList.push({ type: "separator" }); - } - menuList.push({ - label: global.currentLanguage.setIcon, - click: () => { - let params = { - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("showSetClassificationIconWindow", JSON.stringify(params)); - }, - }); - menuList.push({ - label: global.currentLanguage.deleteIcon, - click: () => { - let params = { - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("deleteSetClassificationIcon", JSON.stringify(params)); - }, - }); - menuList.push({ type: "separator" }); - if (!p.aggregate) { - menuList.push(ItemJS.itemSortMenu(p.classificationParentId, null, p.haveClassificationChild, p.sort)); - } - menuList.push(...ItemJS.itemLayoutIconSize(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.layout, p.iconSize)); - menuList.push(ItemJS.itemShowOnly(p.classificationParentId, null, p.haveClassificationChild, p.showOnly)); - if ( - !p.haveClassificationChild && - ((p.layout != null && p.layout == "list") || (global.setting.item.layout == "list" && (p.layout == null || p.layout == "default"))) - ) { - menuList.push(ItemJS.itemColumnNumber(p.classificationParentId, null, p.haveClassificationChild, p.columnNumber)); - } - menuList.push({ type: "separator" }); - menuList.push( - { - label: global.currentLanguage.edit, - click: () => { - let params = { - type: 1, - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAddEditWindow", JSON.stringify(params)); - }, - }, - { - label: global.currentLanguage.delete, - click: () => { - classificationDeleteDialog(p, (p) => { - let params = { - id: p.classificationParentId, - }; - global.mainWindow.webContents.send("classificationDelete", JSON.stringify(params)); - }); - }, - } - ); - menuList.push({ type: "separator" }); - menuList.push({ - label: p.lockClassification ? global.currentLanguage.unlockClassification : global.currentLanguage.lockClassification, - click: () => { - global.mainWindow.webContents.send("setLockClassification", !p.lockClassification); - cacheData.cacheStore.set("lockClassification", !p.lockClassification); - }, - }); - let m = Menu.buildFromTemplate(menuList); - util.menuListen(m); - m.popup(); - }); - // 某个子级分类上右键菜单 - ipcMain.on("classificationChildRightMenu", (event, args) => { - let p = JSON.parse(args); - let menuList = []; - // 固定分类 - let fixedClassificationData = data.store.get("fixedClassification"); - let selected = - fixedClassificationData != null && - fixedClassificationData.classificationParentId == p.classificationParentId && - fixedClassificationData.classificationChildId == p.classificationChildId; - menuList.push({ - label: global.currentLanguage.fixedClassification, - icon: selected ? util.getDot() : null, - click: () => { - if (selected) { - data.store.set("fixedClassification", null); - } else { - data.store.set("fixedClassification", { classificationParentId: p.classificationParentId, classificationChildId: p.classificationChildId }); - } - }, - }); - if (!p.aggregate) { - menuList.push({ - label: global.currentLanguage.excludeSearch, - icon: p.excludeSearch ? util.getDot() : null, - click: () => { - let params = { - classificationParentId: p.classificationParentId, - classificationChildId: p.classificationChildId, - }; - global.mainWindow.webContents.send("classificationExcludeSearch", JSON.stringify(params)); - }, - }); - } - menuList.push({ type: "separator" }); - if (!p.aggregate) { - // 关联文件夹 - menuList.push({ - label: global.currentLanguage.associatedFolder, - click: () => { - let params = { - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAssociatedFolderWindow", JSON.stringify(params)); - }, - }); - } - if (!p.isMapDirectory) { - menuList.push({ - label: "聚合分类", - click: () => { - let params = { - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAggregateWindow", JSON.stringify(params)); - }, - }); - } - menuList.push({ type: "separator" }); - menuList.push({ - label: global.currentLanguage.setIcon, - click: () => { - let params = { - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("showSetClassificationIconWindow", JSON.stringify(params)); - }, - }); - menuList.push({ - label: global.currentLanguage.deleteIcon, - click: () => { - let params = { - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("deleteSetClassificationIcon", JSON.stringify(params)); - }, - }); - menuList.push({ type: "separator" }); - if (!p.aggregate) { - menuList.push(ItemJS.itemSortMenu(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.sort)); - } - menuList.push(...ItemJS.itemLayoutIconSize(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.layout, p.iconSize)); - menuList.push(ItemJS.itemShowOnly(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.showOnly)); - if ( - !p.haveClassificationChild && - ((p.layout != null && p.layout == "list") || (global.setting.item.layout == "list" && (p.layout == null || p.layout == "default"))) - ) { - menuList.push(ItemJS.itemColumnNumber(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.columnNumber)); - } - menuList.push({ type: "separator" }); - menuList.push( - { - label: global.currentLanguage.edit, - click: () => { - let params = { - type: 1, - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("showClassificationAddEditWindow", JSON.stringify(params)); - }, - }, - { - label: global.currentLanguage.delete, - click: () => { - classificationDeleteDialog(p, (p) => { - let params = { - id: p.classificationChildId, - parentId: p.classificationParentId, - }; - global.mainWindow.webContents.send("classificationDelete", JSON.stringify(params)); - }); - }, - } - ); - menuList.push({ type: "separator" }); - menuList.push({ - label: p.lockClassification ? global.currentLanguage.unlockClassification : global.currentLanguage.lockClassification, - click: () => { - global.mainWindow.webContents.send("setLockClassification", !p.lockClassification); - cacheData.cacheStore.set("lockClassification", !p.lockClassification); - }, - }); - let m = Menu.buildFromTemplate(menuList); - util.menuListen(m); - m.popup(); - }); - // 获取锁定分类状态 - ipcMain.on("getLockClassification", (event, args) => { - let lockClassification = cacheData.cacheStore.get("lockClassification"); - event.returnValue = lockClassification == null ? false : lockClassification; - }); - // 获取固定分类 - ipcMain.on("getFixedClassification", (event, args) => { - event.returnValue = data.store.get("fixedClassification"); - }); - // 设置固定分类 - ipcMain.on("setFixedClassification", (event, args) => { - data.store.set("fixedClassification", args); - }); -} diff --git a/src/main/data.js b/src/main/data.js deleted file mode 100644 index f80d96d..0000000 --- a/src/main/data.js +++ /dev/null @@ -1,126 +0,0 @@ -import ClassificationJS from "./classification/index"; -const Store = require("electron-store"); -const store = new Store({ name: "data", encryptionKey: "0b52eb58-4c0f-5ff1-b062-031546a8d269", clearInvalidConfig: true }); - -/** - * 默认初始化 - * @returns {Promise} - */ -function initData() { - let list = store.get("list"); - if (list == null || list.length == 0) { - list = [ - { - id: 1, - name: "新分类", - order: 0, - }, - ]; - store.set("list", list); - } - global.list = list; -} - -/** - * 分离数据 - */ -function splitData() { - let iconData = store.get("iconData"); - if (iconData == null) { - iconData = []; - for (let c of global.list) { - if (c.childList != null) { - for (let cc of c.childList) { - if (cc.itemList != null) { - for (let item of cc.itemList) { - let icon = { - classificationParentId: item.classificationParentId, - classificationChildId: item.classificationId, - itemId: item.id, - icon: item.icon, - }; - item.icon = null; - iconData.push(icon); - } - } - } - } else { - if (c.itemList != null) { - for (let item of c.itemList) { - let icon = { - classificationParentId: item.classificationId, - classificationChildId: null, - itemId: item.id, - icon: item.icon, - }; - item.icon = null; - iconData.push(icon); - } - } - } - } - store.set("iconData", iconData); - store.set("list", global.list); - } -} - -/** - * 校验数据 - */ -function validData() { - let iconData = store.get("iconData"); - if (iconData != null) { - let newIconData = []; - for (let icon of iconData) { - let classification = ClassificationJS.getClassificationById(icon.classificationParentId, icon.classificationChildId); - if (classification != null && classification.itemList != null && classification.itemList.length > 0) { - for (let item of classification.itemList) { - if (icon.itemId == item.id) { - newIconData.push(icon); - break; - } - } - } - } - store.set("iconData", newIconData); - } -} - -/** - * 获取分类数据 - * @returns {Promise} - */ -function getList() { - this.initData(); - let list = store.get("list"); - global.list = list; - return list; -} - -/** - * 保存 - * @param list - * @returns {Promise} - */ -function setList(list) { - store.set("list", list); - global.list = list; -} - -/** - * 获取图标 - * @returns {Promise} - */ -function getIconData() { - return store.get("iconData"); -} - -export default { - store, - initData, - splitData, - validData, - getList, - setList, - getIconData, -}; diff --git a/src/main/ipcEvent.js b/src/main/ipcEvent.js deleted file mode 100644 index 5082e07..0000000 --- a/src/main/ipcEvent.js +++ /dev/null @@ -1,414 +0,0 @@ -import { ipcMain, dialog, Menu, app, shell } from "electron"; -import os from "os"; -import data from "@/main/data"; -import fs from "fs"; -import settingIndex from "./setting/index"; -import util from "./util"; -import retry from "retry"; -import request from "request"; -import mime from "mime"; -import path from "path"; - -/** - * 固定位置 - * @param fixedPosition - * @param alwaysCenter - */ -function setFixedPosition(fixedPosition, alwaysCenter) { - global.mainWindow.setMovable(fixedPosition); - if (alwaysCenter) { - global.mainWindow.setMovable(false); - } -} - -export default function () { - // 隐藏 - ipcMain.on("hide", (event, args) => { - global.mainWindow.hide(); - }); - // 隐藏 - ipcMain.on("hideMainWindow", (event, args) => { - global.mainWindow.webContents.send("hideMainWindowBefore"); - }); - // 关闭 - ipcMain.on("close", (event, args) => { - global.mainWindow.close(); - }); - // 获取数据 - ipcMain.on("getList", (event) => { - let list = data.getList(); - event.returnValue = list; - }); - // 保存数据 - ipcMain.on("setList", (event, args) => { - let params = JSON.parse(args); - data.setList(params.list); - settingIndex.setShortcutKey(global.setting); - if (params.searchWindowGetData != null && params.searchWindowGetData) { - if (global.searchWindow != null && !global.searchWindow.isDestroyed()) { - global.searchWindow.webContents.send("searchWindowGetData"); - } - } - }); - // 错误消息 - ipcMain.on("errorMessage", (event, args) => { - dialog.showMessageBox(global.mainWindow, { - title: "Dawn Launcher", - message: args, - buttons: [global.currentLanguage.ok], - type: "error", - noLink: true, - cancelId: 1, - }); - }); - // 文本框菜单 - ipcMain.on("textRightMenu", (event, args) => { - // 菜单 - let m = Menu.buildFromTemplate([ - { - role: "cut", - label: global.currentLanguage.cut, - }, - { - role: "copy", - label: global.currentLanguage.copy, - }, - { - role: "paste", - label: global.currentLanguage.paste, - }, - ]); - util.menuListen(m); - m.popup(); - }); - // 获取版本 - ipcMain.on("getVersion", (event) => { - event.returnValue = app.getVersion(); - }); - // 打开网页 - ipcMain.on("openUrl", (event, args) => { - shell.openExternal(args); - }); - // 检查更新 - ipcMain.on("checkUpdate", () => { - util.checkUpdate("checkUpdate"); - }); - // 统计 - ipcMain.on("statistics", () => { - try { - let data = { - system: os.type(), - release: os.release(), - locale: app.getLocale(), - appVersion: app.getVersion(), - }; - // 重试 - const operation = retry.operation({ - retries: 5, // 最多重试 5 次 - factor: 1, // 每次重试之间的时间间隔加倍 - minTimeout: 1000, // 第一次重试之前等待的时间 - maxTimeout: 5000, // 最长等待时间 - }); - // 发起请求 - operation.attempt((currentAttempt) => { - request( - { - uri: "https://client.dawnlauncher.com/access/statistics/add", - method: "POST", - json: true, - headers: { - "content-type": "application/json", - }, - body: data, - timeout: 5000, - }, - function (error, response, body) { - if (operation.retry(error)) { - return; - } - } - ); - }); - } catch (e) {} - }); - // 备份数据 - ipcMain.on("backup", () => { - try { - dialog - .showSaveDialog(global.mainWindow, { - title: global.currentLanguage.backUpData, - defaultPath: "data", - filters: [{ name: "JSON", extensions: ["json"] }], - }) - .then((r) => { - if (!r.canceled && !util.strIsEmpty(r.filePath)) { - fs.copyFileSync(app.getPath("userData") + "\\data.json", r.filePath); - global.mainWindow.webContents.send("hideBackupRestore"); - } - }); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - }); - // 恢复数据 - ipcMain.on("restore", () => { - try { - dialog - .showOpenDialog(global.mainWindow, { - title: global.currentLanguage.restoreData, - filters: [{ name: "JSON", extensions: ["json"] }], - }) - .then((r) => { - if (!r.canceled && !util.arrayIsEmpty(r.filePaths)) { - if (!util.strIsEmpty(r.filePaths[0])) { - fs.copyFileSync(r.filePaths[0], app.getPath("userData") + "\\data.json"); - // 清空所有文件映射监听 - if (global.mapDirectoryWatcher != null) { - for (let value of global.mapDirectoryWatcher.values()) { - if (value != null && value.watch != null && value.watch) { - value.watch.close(); - } - } - global.mapDirectoryWatcher = new Map(); - } - // 初始化图标数据 - data.getList(); - data.splitData(); - // 重新获取数据 - global.mainWindow.webContents.send("getAllData"); - } - } - }); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - }); - // 设置置顶 - ipcMain.on("setAlwaysTop", (event, args) => { - if (args) { - global.mainWindow.setAlwaysOnTop(true, "screen-saver"); - } else { - global.mainWindow.setAlwaysOnTop(false); - } - }); - // 反馈 - ipcMain.on("feedback", () => { - shell.openExternal("https://support.qq.com/product/487828"); - }); - // 锁定尺寸 - ipcMain.on("setResize", (event, args) => { - global.mainWindow.setResizable(args); - }); - // 设置透明度 - ipcMain.on("setOpacity", (event, args) => { - global.mainWindow.setOpacity(Number(args)); - }); - // 设置固定位置 - ipcMain.on("setFixedPosition", (event, args) => { - setFixedPosition(args[0], args[1]); - }); - // 永远居中 - ipcMain.on("setAlwaysCenter", (event, args) => { - if (args[0]) { - global.mainWindow.center(); - global.mainWindow.setMovable(false); - } else { - setFixedPosition(args[1], args[2]); - } - }); - // 打赏赞助 - ipcMain.on("rewardAndSponsorship", () => { - shell.openExternal("https://dawnlauncher.com/sponsor"); - }); - // 跳转搜索窗口高度 - ipcMain.on("setSearchWindowHeight", (event, args) => { - global.searchWindow.setBounds({ height: args }); - }); - // 隐藏搜索窗口 - ipcMain.on("hideSearchWindow", () => { - if (global.searchWindow.isVisible()) { - global.searchWindow.hide(); - } - }); - // 窗口设置透明 - ipcMain.on("setSearchWindowOpacity", (event, args) => { - global.searchWindow.setOpacity(args); - event.returnValue = null; - }); - // 获取release - ipcMain.on("getRelease", (event, args) => { - event.returnValue = os.release(); - }); - // 获取背景图 - ipcMain.on("getBackgroundImageBase64", (event, args) => { - let params = JSON.parse(args); - fs.readFile(app.getPath("userData") + "\\images\\" + params.backgroundImage, (err, data) => { - if (!err) { - try { - let buffer = Buffer.from(data); - let image = "data:" + mime.getType(params.backgroundImage) + ";base64," + buffer.toString("base64"); - if (params.page == "main") { - global.mainWindow.webContents.send("returnBackgroundImageBase64", image); - } else { - global.settingWindow.webContents.send("returnBackgroundImageBase64", image); - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - }); - }); - // 通知快速搜索窗口获取数据 - ipcMain.on("noticeSearchWindowGetData", () => { - if (global.searchWindow != null) { - global.searchWindow.webContents.send("searchWindowGetData"); - } - }); - // 获取软件目录 - ipcMain.on("getPath", (event, args) => { - event.returnValue = process.env.NODE_ENV !== "production" ? path.resolve(".") : path.dirname(process.execPath); - }); - // 获取图标 - ipcMain.on("getIconData", (event) => { - let iconData = data.getIconData(); - event.returnValue = iconData; - }); - // 更新图标 - ipcMain.on("updateIconData", (event, args) => { - // 参数 - let updateIconData = JSON.parse(args); - // 获取图标数据 - let iconData = data.store.get("iconData"); - if (iconData != null) { - // 删除 - if (!util.arrayIsEmpty(updateIconData.delete)) { - for (let del of updateIconData.delete) { - let index; - for (let i = 0; i < iconData.length; i++) { - if ( - iconData[i].classificationParentId == del.classificationParentId && - iconData[i].classificationChildId == del.classificationChildId && - iconData[i].itemId == del.itemId - ) { - index = i; - break; - } - } - if (index != null) { - iconData.splice(index, 1); - } - } - } - // 添加 - if (!util.arrayIsEmpty(updateIconData.add)) { - for (let add of updateIconData.add) { - let icon = { - classificationParentId: add.classificationParentId, - classificationChildId: add.classificationChildId, - itemId: add.itemId, - icon: add.icon, - }; - iconData.push(icon); - } - } - // 更新 - if (!util.arrayIsEmpty(updateIconData.update)) { - for (let update of updateIconData.update) { - let flag = false; - for (let icon of iconData) { - if ( - icon.classificationParentId == update.classificationParentId && - icon.classificationChildId == update.classificationChildId && - icon.itemId == update.itemId - ) { - icon.icon = update.icon; - flag = true; - break; - } - } - if (!flag) { - iconData.push(update); - } - } - } - // set - data.store.set("iconData", iconData); - } - // 更新搜索框图标数据 - if (global.searchWindow != null && !global.searchWindow.isDestroyed()) { - global.searchWindow.webContents.send("searchWindowUpdateIconData", args); - } - }); - // 通知搜索窗口重新获取图标数据 - ipcMain.on("searchWindowGetIconData", (event, args) => { - if (global.searchWindow != null && !global.searchWindow.isDestroyed()) { - global.searchWindow.webContents.send("getIconData"); - } - }); - // showMessageBoxSync - ipcMain.on("showMessageBoxSync", (event, args) => { - let index = dialog.showMessageBoxSync(global.mainWindow, { - title: "Dawn Launcher", - message: args, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }); - event.returnValue = index == 0 ? true : false; - }); - // 选择文件夹 - ipcMain.on("openDirectory", (event, args) => { - let params = JSON.parse(args); - let options = { - properties: ["openDirectory"], - }; - if (!util.strIsEmpty(params.defaultPath)) { - options.defaultPath = params.defaultPath; - } else { - options.defaultPath = app.getPath("desktop"); - } - dialog.showOpenDialog(params.window == "mainWindow" ? global.mainWindow : null, options).then((r) => { - if (r.filePaths.length > 0) { - event.returnValue = r.filePaths[0]; - } else { - event.returnValue = null; - } - }); - }); - // 选择文件 - ipcMain.on("openFile", (event, args) => { - let params = JSON.parse(args); - let options = {}; - if (!util.strIsEmpty(params.defaultPath)) { - options.defaultPath = params.defaultPath; - } else { - options.defaultPath = app.getPath("desktop"); - } - dialog.showOpenDialog(params.window == "mainWindow" ? global.mainWindow : null, options).then((r) => { - if (r.filePaths.length > 0) { - let filePath = r.filePaths[0]; - if (params.target) { - if (mime.getType(filePath) == "application/x-ms-shortcut") { - // 快捷方式 - // 获取真实文件路径和参数 - let shortcutDetail = global.api.GetShortcutFile(filePath); - if (!util.strIsEmpty(shortcutDetail.target)) { - // 路径 - filePath = shortcutDetail.target; - } - } - } - event.returnValue = filePath; - } else { - event.returnValue = null; - } - }); - }); -} diff --git a/src/main/item/index.js b/src/main/item/index.js deleted file mode 100644 index 009f9d9..0000000 --- a/src/main/item/index.js +++ /dev/null @@ -1,790 +0,0 @@ -import { shell, dialog, app } from "electron"; -import path from "path"; -import fs from "fs"; -import util from "../util"; -import { v4 } from "uuid"; -import Jimp from "jimp"; -import ClassificationJS from "../classification/index.js"; -import data from "../data"; -const { exec } = require("child_process"); - -/** - * 校验无效项目 - * @param itemList - */ -function checkInvalidItemList(itemList) { - let list = []; - if (!util.arrayIsEmpty(itemList)) { - for (let item of itemList) { - // 只校验文件和文件夹 - if (item.type == 0 || item.type == 1) { - // 获取绝对路径 - item.path = getAbsolutePath(item.path); - try { - fs.statSync(item.path); - } catch (e) { - if (item.classificationParentId != null) { - list.push(item.classificationParentId + "-" + item.classificationId + "-" + item.id); - } else { - list.push(item.classificationId + "-" + item.id); - } - } - } - } - } - return list; -} - -/** - * 校验无效项目 - * @returns {*[]} - */ -function checkInvalidItem() { - let list = []; - for (let c of global.list) { - if (!util.arrayIsEmpty(c.childList)) { - for (let cc of c.childList) { - if (util.strIsEmpty(cc.mapDirectory)) { - list.push(...checkInvalidItemList(cc.itemList)); - } - } - } else { - if (util.strIsEmpty(c.mapDirectory)) { - list.push(...checkInvalidItemList(c.itemList)); - } - } - } - return list; -} - -/** - * 解析环境变量 - * @param p - */ -function parseEnvPath(p) { - // 尝试解析环境变量 - let parsedPath = path.parse(p); - let isBase = false; - let dirArr; - if (util.strIsEmpty(parsedPath.dir)) { - dirArr = parsedPath.base.split("\\"); - isBase = true; - } else { - dirArr = parsedPath.dir.split("\\"); - } - let newPathArr = []; - const pattern = /^%.*%$/; - for (let string of dirArr) { - if (pattern.test(string)) { - let nString = string.substring(1, string.length - 1); - if (!util.strIsEmpty(process.env[nString])) { - newPathArr.push(process.env[nString]); - } else { - newPathArr.push(string); - } - } else { - newPathArr.push(string); - } - } - if (!isBase) { - newPathArr.push(parsedPath.base); - } - return newPathArr.join("\\"); -} - -/** - * 是否是绝对路径 - * @param p - */ -function isAbsolutePath(p) { - const regex = /^[a-zA-Z]:\\/; - return regex.test(p); -} - -/** - * 获取绝对路径 - * @param path - */ -function getAbsolutePath(p) { - if (!isAbsolutePath(p)) { - // 尝试解析环境变量 - let newPath = parseEnvPath(p); - // 判断解析之后的路径是否是绝对路径 - if (isAbsolutePath(newPath)) { - return newPath; - } else { - return path.resolve(process.env.NODE_ENV !== "production" ? path.resolve(".") : path.dirname(process.execPath), p); - } - } - return p; -} - -/** - * 运行项目 - * @param item - * @param location 是否打开文件所在的位置 - * @param openWith 打开方式 - */ -function itemRun(item, location, openWith) { - // 系统 - if (item.type == 3) { - if (item.shell.indexOf("shell:") >= 0) { - shell.openExternal(item.shell); - } else { - if (item.shell == "cmd") { - if (item.admin) { - exec('powershell -Command "Start-Process cmd -Verb RunAs"', (error, stdout, stderr) => {}); - } else { - exec("start cmd.exe", (error, stdout, stderr) => {}); - } - } else if (item.shell == "turnOffMonitor") { - global.api.TurnOffMonitor(); - } else { - exec(item.shell, (error, stdout, stderr) => {}); - } - } - return; - } else if (item.type == 5) { - exec("start " + item.shell, (error, stdout, stderr) => {}); - return; - } - // 如果是类型是0或者1并且是相对路径的话,恢复为绝对路径 - if (item.type == 0 || item.type == 1) { - // 获取路径 - item.path = getAbsolutePath(item.path); - } - let t = item.path; - let params = !util.strIsEmpty(item.params) ? item.params.trim() : ""; - if (openWith != null && openWith && item.type == 0) { - exec("RUNDLL32.EXE SHELL32.DLL,OpenAs_RunDLL " + t + "", (error, stdout, stderr) => {}); - } else { - let type = "open"; - if (item.type == 0) { - if (location) { - // 如果是打开文件所在位置 - exec('start %windir%\\explorer.exe /select, "' + item.path + '"', (error, stdout, stderr) => {}); - return; - } else { - // 以管理员身份运行 - if (item.admin && (item.extension == ".exe" || item.extension == ".bat")) { - type = "runas"; - } - } - } else if (item.type == 2) { - // 网址 - t = item.url; - } - if (item.type == 0 || item.type == 1) { - // 判断文件或文件夹是否存在 - try { - fs.accessSync(t); - global.api.RunItem(type, t, params, item.type == 0 && !util.strIsEmpty(item.startLocation) ? item.startLocation : path.dirname(item.path)); - } catch (e) { - let message; - if (item.type == 0 && !location) { - message = global.currentLanguage.notFoundFileMessage; - } else { - message = global.currentLanguage.notFoundFolderMessage; - } - message += '"' + t + '"。'; - dialog.showMessageBox(global.mainWindow, { - title: "Dawn Launcher", - message: message, - buttons: [global.currentLanguage.ok], - type: "error", - noLink: true, - }); - } - } else { - global.api.RunItem(type, t, params, null); - } - } -} - -/** - * 返回排序菜单 - * @param classificationParentId - * @param classificationChildId - * @param haveClassificationChild - * @param sort - */ -function itemSortMenu(classificationParentId, classificationChildId, haveClassificationChild, sort) { - let submenu = [ - { - label: global.currentLanguage.default, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - sort: "default", - }; - global.mainWindow.webContents.send("itemSort", JSON.stringify(params)); - }, - icon: (sort == null || sort == "default") && !haveClassificationChild ? util.getDot() : null, - }, - { - label: global.currentLanguage.byInitial, - type: "normal", - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - sort: "initial", - }; - global.mainWindow.webContents.send("itemSort", JSON.stringify(params)); - }, - icon: sort != null && sort == "initial" ? util.getDot() : null, - }, - ]; - if (global.setting.item.openNumber) { - submenu.push({ - label: global.currentLanguage.byOpenNumber, - type: "normal", - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - sort: "openNumber", - }; - global.mainWindow.webContents.send("itemSort", JSON.stringify(params)); - }, - icon: sort != null && sort == "openNumber" ? util.getDot() : null, - }); - } - return { - label: global.currentLanguage.sort, - type: "submenu", - submenu: submenu, - }; -} - -/** - * 返回布局和图标大小 - * @param classificationParentId - * @param classificationChildId - * @param haveClassificationChild - * @param layout - * @param iconSize - */ -function itemLayoutIconSize(classificationParentId, classificationChildId, haveClassificationChild, layout, iconSize) { - let menuList = [ - { - label: global.currentLanguage.layout, - type: "submenu", - submenu: [ - { - label: global.currentLanguage.default, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: "default", - }; - global.mainWindow.webContents.send("itemTile", JSON.stringify(params)); - }, - icon: (layout == null || layout == "default") && !haveClassificationChild ? util.getDot() : null, - }, - { - label: global.currentLanguage.tile, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: "tile", - }; - global.mainWindow.webContents.send("itemTile", JSON.stringify(params)); - }, - icon: layout != null && layout == "tile" ? util.getDot() : null, - }, - { - label: global.currentLanguage.list, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: "list", - }; - global.mainWindow.webContents.send("itemTile", JSON.stringify(params)); - }, - icon: layout != null && layout == "list" ? util.getDot() : null, - }, - ], - }, - ]; - menuList.push({ - label: global.currentLanguage.iconSize, - type: "submenu", - submenu: [ - { - label: global.currentLanguage.default, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: null, - }; - global.mainWindow.webContents.send("itemIconSize", JSON.stringify(params)); - }, - icon: iconSize == null && !haveClassificationChild ? util.getDot() : null, - }, - { - label: global.currentLanguage.extraLarge, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: 48, - }; - global.mainWindow.webContents.send("itemIconSize", JSON.stringify(params)); - }, - icon: iconSize != null && iconSize == 48 ? util.getDot() : null, - }, - { - label: global.currentLanguage.large, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: 40, - }; - global.mainWindow.webContents.send("itemIconSize", JSON.stringify(params)); - }, - icon: iconSize != null && iconSize == 40 ? util.getDot() : null, - }, - { - label: global.currentLanguage.medium, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: 32, - }; - global.mainWindow.webContents.send("itemIconSize", JSON.stringify(params)); - }, - icon: iconSize != null && iconSize == 32 ? util.getDot() : null, - }, - { - label: global.currentLanguage.small, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: 24, - }; - global.mainWindow.webContents.send("itemIconSize", JSON.stringify(params)); - }, - icon: iconSize != null && iconSize == 24 ? util.getDot() : null, - }, - ], - }); - return menuList; -} - -/** - * 返回显示菜单 - * @param classificationParentId - * @param classificationChildId - * @param haveClassificationChild - * @param showOnly - */ -function itemShowOnly(classificationParentId, classificationChildId, haveClassificationChild, showOnly) { - let submenu = [ - { - label: global.currentLanguage.default, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - showOnly: "default", - }; - global.mainWindow.webContents.send("itemShowOnly", JSON.stringify(params)); - }, - icon: (showOnly == null || showOnly == "default") && !haveClassificationChild ? util.getDot() : null, - }, - { - label: global.currentLanguage.showOnlyFiles, - type: "normal", - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - showOnly: "file", - }; - global.mainWindow.webContents.send("itemShowOnly", JSON.stringify(params)); - }, - icon: showOnly != null && showOnly == "file" ? util.getDot() : null, - }, - { - label: global.currentLanguage.showOnlyFolders, - type: "normal", - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - showOnly: "folder", - }; - global.mainWindow.webContents.send("itemShowOnly", JSON.stringify(params)); - }, - icon: showOnly != null && showOnly == "folder" ? util.getDot() : null, - }, - ]; - return { - label: global.currentLanguage.show, - type: "submenu", - submenu: submenu, - }; -} - -/** - * 返回列数菜单 - * @param classificationParentId - * @param classificationChildId - * @param haveClassificationChild - * @param columnNumber - */ -function itemColumnNumber(classificationParentId, classificationChildId, haveClassificationChild, columnNumber) { - let submenu = [ - { - label: global.currentLanguage.default, - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - columnNumber: 0, - }; - global.mainWindow.webContents.send("itemColumnNumber", JSON.stringify(params)); - }, - icon: (columnNumber == null || columnNumber == 0) && !haveClassificationChild ? util.getDot() : null, - }, - ]; - for (let i = 0; i < 20; i++) { - submenu.push({ - label: (i + 1).toString(), - click: () => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - columnNumber: i + 1, - }; - global.mainWindow.webContents.send("itemColumnNumber", JSON.stringify(params)); - }, - icon: columnNumber != null && columnNumber == i + 1 ? util.getDot() : null, - }); - } - return { - label: global.currentLanguage.numberOfColumns, - type: "submenu", - submenu: submenu, - }; -} - -/** - * 获取文件图标 - * @param target - * @param message - */ -async function getFileIcon(target, message) { - // 获取绝对路径 - target = getAbsolutePath(target); - let size = 256; - try { - // 先获取一下文件判断是否存在,不存在抛出异常 - let stats = fs.statSync(target); - // 图标临时地址 - let tempPath = app.getPath("temp") + "\\" + v4() + ".png"; - // 获取图标 - let result = global.api.GetFileIcon(target, tempPath, size); - // 1为成功 - if (result == 1) { - // 读取图标文件 - let buffer = fs.readFileSync(tempPath); - // 如果透明区域占比大于80代表这个图标没有超大图标,那么就获取48*48图标 - let tempResult = await Jimp.read(tempPath); - let zero = 0; - let color = 0; - for (const { x, y, image } of tempResult.scanIterator(0, 0, tempResult.bitmap.width, tempResult.bitmap.height)) { - if (image.getPixelColor(x, y) == 0) { - zero++; - } else { - color++; - } - } - // 计算占比 - let proportion = Math.round((zero / (zero + color)) * 100); - // 删除临时文件 - fs.unlink(tempPath, (err) => {}); - // 透明区域大于80,获取48*48图标 - if (proportion >= 80) { - // 图标临时地址 - tempPath = app.getPath("temp") + "\\" + v4() + ".png"; - // 获取48*48图标 - result = global.api.GetFileIcon(target, tempPath, 48); - // 1成功 - if (result == 1) { - // 读取图标文件 - buffer = fs.readFileSync(tempPath); - // 删除文件 - fs.unlink(tempPath, (err) => {}); - } - } - // 图标 - let base64 = "data:image/png;base64," + buffer.toString("base64"); - // 返回base64 - return base64; - } - } catch (e) { - if (message) { - dialog.showMessageBox(global.mainWindow, { - title: "Dawn Launcher", - message: global.currentLanguage.targetNotExist + '"' + target + '"。', - buttons: [global.currentLanguage.ok], - type: "error", - noLink: true, - cancelId: 1, - }); - } - } - return null; -} - -/** - * 新建文件夹监听 - */ -function addMapDirectoryWatcher(classificationParentId, classificationChildId, mapDirectory) { - // key - let key = classificationParentId + (classificationChildId != null ? "-" + classificationChildId : ""); - // 先删除原有监听 - deleteMapDirectoryWatcher(classificationParentId, classificationChildId); - // 新建监听 - let data = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - mapDirectory: mapDirectory, - }; - let timer; - let watch = fs.watch(mapDirectory, (event, filename) => { - if (timer) { - clearTimeout(timer); - timer = null; - } - // 启动定时器,在指定的时间间隔后发送合并后的通知 - timer = setTimeout(() => { - readMapDirectory(classificationParentId, classificationChildId, mapDirectory, false, true, true); - clearTimeout(timer); - timer = null; - }, 1000); - }); - watch.on("error", (error) => { - watch.close(); - global.mapDirectoryWatcher.delete(key); - }); - // 保存 - data.watch = watch; - global.mapDirectoryWatcher.set(key, data); -} - -/** - * 删除文件夹监听 - */ -function deleteMapDirectoryWatcher(classificationParentId, classificationChildId) { - // 判断是否存在 - let key = classificationParentId + (classificationChildId != null ? "-" + classificationChildId : ""); - let watcherData = global.mapDirectoryWatcher.get(key); - if (watcherData != null) { - // 存在 - if (watcherData.watch != null && watcherData.watch) { - watcherData.watch.close(); - watcherData.watch = null; - } - global.mapDirectoryWatcher.delete(key); - } -} - -/** - * 读取映射文件夹内容 - * @param classificationParentId - * @param classificationChildId - * @param mapDirectory - * @param listener - * @param old - * @param notice - */ -async function readMapDirectory(classificationParentId, classificationChildId, mapDirectory, listener, old, notice) { - let itemList = []; - try { - // 判断是否含有环境变量 - mapDirectory = parseEnvPath(mapDirectory); - // 获取图标数据 - let iconData = data.store.get("iconData"); - let iconDataMap = new Map(); - // 转为Map - if (!util.arrayIsEmpty(iconData)) { - for (let icon of iconData) { - iconDataMap.set(util.getKey(icon.classificationParentId, icon.classificationChildId, icon.itemId), icon); - } - } - // 文件类型 - let stats = fs.statSync(mapDirectory); - // 必须是文件夹 - if (stats.isDirectory()) { - // 获取旧列表 - let oldItemList = []; - let hiddenItem; - // 分类 - let classification = ClassificationJS.getClassificationById(classificationParentId, classificationChildId); - if (classification != null) { - if (old != null && old) { - oldItemList = classification.itemList; - } - hiddenItem = classification.hiddenItem; - } - // 转为数组 - let hiddenItemArr = []; - if (!util.strIsEmpty(hiddenItem)) { - hiddenItemArr = hiddenItem.split(","); - } - // 读取文件夹下面的所有文件 - let pathList = fs.readdirSync(mapDirectory); - let i = 1; - for (let p of pathList) { - try { - // 判断是否隐藏 - let flag = false; - for (let item of hiddenItemArr) { - if (item != null && p == item.trim()) { - flag = true; - break; - } - } - if (flag) { - continue; - } - // 组合路径 - let np = path.join(mapDirectory, p); - // 获取类型 0:文件 1:文件夹 - let type = fs.statSync(np).isDirectory() ? 1 : 0; - // 如果旧数据有的话,获取旧数据 - let icon; - let openNumber; - let lastOpen; - let quickSearchOpenNumber; - let quickSearchLastOpen; - if (!util.arrayIsEmpty(oldItemList)) { - for (let oldItem of oldItemList) { - if ( - (type == 0 && oldItem.name == util.removeSuffix(p) && oldItem.path == np && oldItem.type == type) || - (type == 1 && oldItem.name == p && oldItem.path == np && oldItem.type == type) - ) { - // 通过旧数据获取图标 - let oldIcon = iconDataMap.get(util.getKey(classificationParentId, classificationChildId, oldItem.id)); - if (oldIcon != null) { - icon = oldIcon.icon; - } - openNumber = oldItem.openNumber; - lastOpen = oldItem.lastOpen; - quickSearchOpenNumber = oldItem.quickSearchOpenNumber; - quickSearchLastOpen = oldItem.quickSearchLastOpen; - break; - } - } - } - let item = { - // id - id: i++, - // 路径 - path: np, - // 名称 - name: type == 1 ? p : util.removeSuffix(p), - // 全称 - fullName: p, - // 图标 - icon: icon != null ? icon : await getFileIcon(np, false), - // 类型 0:文件 1:文件夹 - type: type, - // 打开次数 - openNumber: openNumber, - // 最近打开 - lastOpen: lastOpen, - // 快速搜索 打开次数 - quickSearchOpenNumber: quickSearchOpenNumber, - // 快速搜索 最近打开 - quickSearchLastOpen: quickSearchLastOpen, - }; - itemList.push(item); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - if (listener != null && listener) { - // 新建监听 - addMapDirectoryWatcher(classificationParentId, classificationChildId, mapDirectory); - } - if (notice) { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - itemList: itemList, - clear: true, - }; - // 添加项目 - global.mainWindow.webContents.send("itemAdd", JSON.stringify(params)); - } - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - return itemList; -} - -/** - * 初始化映射文件夹 - */ -async function initMapDirectory() { - let list = []; - for (let c of global.list) { - if (util.arrayIsEmpty(c.childList)) { - // 没有子级 - if (!util.strIsEmpty(c.mapDirectory)) { - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId(c.id, c.parentId); - let itemList = await readMapDirectory(classificationParentId, classificationChildId, c.mapDirectory, true, true, false); - list.push({ - classificationParentId: classificationParentId, - itemList: itemList, - }); - } - } else { - for (let cc of c.childList) { - if (!util.strIsEmpty(cc.mapDirectory)) { - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId(cc.id, cc.parentId); - let itemList = await readMapDirectory(classificationParentId, classificationChildId, cc.mapDirectory, true, true, false); - list.push({ - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - itemList: itemList, - }); - } - } - } - } - return list; -} - -export default { - checkInvalidItem, - isAbsolutePath, - getAbsolutePath, - itemRun, - itemSortMenu, - itemLayoutIconSize, - itemShowOnly, - itemColumnNumber, - getFileIcon, - addMapDirectoryWatcher, - readMapDirectory, - deleteMapDirectoryWatcher, - initMapDirectory, -}; diff --git a/src/main/item/ipcEvent.js b/src/main/item/ipcEvent.js deleted file mode 100644 index ce479ee..0000000 --- a/src/main/item/ipcEvent.js +++ /dev/null @@ -1,1897 +0,0 @@ -import { ipcMain, dialog, Menu, clipboard, shell } from "electron"; -import * as cheerio from "cheerio"; -import url from "url"; -import fs from "fs"; -import path from "path"; -import mime from "mime"; -import index from "./index"; -import util from "../util"; -import xml2js from "xml2js"; -import os from "os"; -import request from "request"; -import URI from "urijs"; -import retry from "retry"; -import cacheData from "../cache/data"; -import ItemJS from "@/main/item/index"; -import ClassificationJS from "@/main/classification/index"; -const { execSync } = require("child_process"); - -/** - * 随机user-agent - * @returns {string} - */ -function getRandomUserAgent() { - const userAgents = [ - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 OPR/76.0.4017.123", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 OPR/76.0.4017.123", - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0", - ]; - const randomIndex = Math.floor(Math.random() * userAgents.length); - return userAgents[randomIndex]; -} - -/** - * 发送网址信息 - * @param item - */ -function sendUrlInfo(item) { - global.mainWindow.webContents.send("getUrlInfo", JSON.stringify(item)); -} - -/** - * 获取代理 - */ -function getProxy() { - if (global.setting.network.useProxy && !util.strIsEmpty(global.setting.network.proxy.address)) { - let uri = new URI(global.setting.network.proxy.address); - if (!util.strIsEmpty(uri.protocol())) { - let address = uri.protocol().toLowerCase() + "://"; - if (!util.strIsEmpty(global.setting.network.proxy.username) && !util.strIsEmpty(global.setting.network.proxy.password)) { - address += global.setting.network.proxy.username + ":" + global.setting.network.proxy.password + "@"; - } - address += uri.hostname() + ":" + uri.port(); - return address; - } - } - return null; -} - -/** - * 获取网址信息 - * @param u 网址 - * @param r 是否支持跳转获取 - */ -function getUrlInfo(u, r) { - let result = { - status: false, - message: null, - name: null, - icon: null, - }; - // 重试 - const operation = retry.operation({ - retries: 5, // 最多重试 5 次 - factor: 1, // 每次重试之间的时间间隔加倍 - minTimeout: 1000, // 第一次重试之前等待的时间 - maxTimeout: 5000, // 最长等待时间 - }); - try { - // 发起请求 - operation.attempt((currentAttempt) => { - request( - { - uri: u, - proxy: getProxy(), - timeout: 5000, - headers: { - "User-Agent": getRandomUserAgent(), - }, - }, - function (error, response, body) { - if (operation.retry(error)) { - return; - } - if (!error && response.statusCode >= 200 && response.statusCode <= 299) { - // 解析HTML - let $ = cheerio.load(body); - // 是否有跳转标签 - let refresh = $("meta[http-equiv='refresh']"); - if (refresh != null && !util.strIsEmpty(refresh.attr("content")) && r) { - // 如果有跳转标签的话,就请求新网址并获取网址信息 - let content = refresh.attr("content"); - let contentSplit = content.split(";"); - let urlProperty = contentSplit[contentSplit.length - 1]; - let urlPropertySplit = urlProperty.split("="); - let newUrl = urlPropertySplit[urlPropertySplit.length - 1]; - // 重新获取新网址信息 - getUrlInfo(newUrl, false); - } else { - // 解析HTML并返回信息 - analysisHTML(u, body); - } - } else { - sendUrlInfo(result); - } - } - ); - }); - } catch (e) { - sendUrlInfo(result); - } -} - -/** - * 解析HTML并返回信息 - * @param u url - * @param data HTML - */ -function analysisHTML(u, data) { - let result = { - status: false, - message: null, - name: null, - icon: null, - }; - try { - // 解析HTML - let $ = cheerio.load(data); - // 获取标题 - result.name = $("head").find("title").text(); - // 获取图标URL - let iconUrl; - let icon = $("link[rel='icon']"); - if (icon != null && !util.strIsEmpty(icon.attr("href"))) { - iconUrl = icon.attr("href"); - } else { - let shortcutIcon = $("link[rel='shortcut icon']"); - if (shortcutIcon != null && !util.strIsEmpty(shortcutIcon.attr("href"))) { - iconUrl = shortcutIcon.attr("href"); - } else { - iconUrl = "/favicon.ico"; - } - } - if (!util.strIsEmpty(iconUrl)) { - // 解析URL - let urlParse = url.parse(u); - // 新图标URL - let newIconUrl = ""; - // 去掉类似//www.baidu.com/favicon.ico这样域名的”//“字符 - if (iconUrl.indexOf("//") == 0) { - iconUrl = "http:" + iconUrl; - } - // 如果url包含https://或者http://就是正常的链接 - if (iconUrl.indexOf("http://") >= 0 || iconUrl.indexOf("https://") >= 0) { - newIconUrl = iconUrl; - } else { - // 无协议头,使用当前网址域名 - newIconUrl = url.resolve("http://" + urlParse.host + (urlParse.port != null ? ":" + urlParse.port : ""), iconUrl); - } - // 重试 - const operation = retry.operation({ - retries: 5, // 最多重试 5 次 - factor: 1, // 每次重试之间的时间间隔加倍 - minTimeout: 1000, // 第一次重试之前等待的时间 - maxTimeout: 5000, // 最长等待时间 - }); - operation.attempt((currentAttempt) => { - // 下载图标 - request( - { - uri: newIconUrl, - proxy: getProxy(), - encoding: null, - timeout: 5000, - headers: { - "User-Agent": getRandomUserAgent(), - }, - }, - function (error, response, body) { - if (operation.retry(error)) { - return; - } - if (!error && response.statusCode >= 200 && response.statusCode <= 299) { - let buffer = Buffer.from(body); - result.icon = "data:" + mime.getType(newIconUrl) + ";base64," + buffer.toString("base64"); - result.status = true; - sendUrlInfo(result); - } else { - sendUrlInfo(result); - } - } - ); - }); - } else { - sendUrlInfo(result); - } - } catch (e) { - sendUrlInfo(result); - } -} - -/** - * 获取文件图标 - * @param target - * @param message - */ -async function getFileIcon(target, message) { - return await index.getFileIcon(target, message); -} - -/** - * 转换为菜单 - * - * @param classificationParentId - * @param classificationChildId - * @param id - * @param list - * @param del - */ -function convertMenu(classificationParentId, classificationChildId, id, list, del) { - let menuList = []; - for (let i = 0; i < list.length; i++) { - let classification = list[i]; - let menu = { - label: classification.name, - }; - let submenu = []; - if (!util.arrayIsEmpty(classification.childList)) { - for (let j = 0; j < classification.childList.length; j++) { - if (util.strIsEmpty(classification.childList[j].mapDirectory) && (classification.childList[j].type == null || classification.childList[j].type != 1)) { - submenu.push({ - label: classification.childList[j].name, - click: () => { - let params = { - from: { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - id: id, - }, - to: { - classificationParentId: classification.id, - classificationChildId: classification.childList[j].id, - }, - del: del, - }; - global.mainWindow.webContents.send("moveItem", JSON.stringify(params)); - }, - }); - } - } - } - if (!util.arrayIsEmpty(submenu)) { - menu.submenu = submenu; - menu.type = "submenu"; - } else { - menu.type = "normal"; - menu.click = () => { - let params = { - from: { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - id: id, - }, - to: { - classificationParentId: classification.id, - classificationChildId: null, - }, - del: del, - }; - global.mainWindow.webContents.send("moveItem", JSON.stringify(params)); - }; - } - if (util.strIsEmpty(classification.mapDirectory) && (classification.type == null || classification.type != 1)) { - menuList.push(menu); - } - } - return menuList; -} - -/** - * 批量操作转换为菜单 - * - * @param list - * @param del - */ -function batchOperationConvertMenu(list, del) { - let menuList = []; - for (let i = 0; i < list.length; i++) { - let classification = list[i]; - let menu = { - label: classification.name, - }; - let submenu = []; - if (!util.arrayIsEmpty(classification.childList)) { - for (let j = 0; j < classification.childList.length; j++) { - if (util.strIsEmpty(classification.childList[j].mapDirectory) && (classification.childList[j].type == null || classification.childList[j].type != 1)) { - submenu.push({ - label: classification.childList[j].name, - click: () => { - dialog - .showMessageBox(global.mainWindow, { - message: del ? global.currentLanguage.batchMoveItemMessage : global.currentLanguage.batchCopyItemMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - let params = { - to: { - classificationParentId: classification.id, - classificationChildId: classification.childList[j].id, - }, - del: del, - }; - global.mainWindow.webContents.send("batchMoveItem", JSON.stringify(params)); - } - }); - }, - }); - } - } - } - if (!util.arrayIsEmpty(submenu)) { - menu.submenu = submenu; - menu.type = "submenu"; - } else { - menu.type = "normal"; - menu.click = () => { - dialog - .showMessageBox(global.mainWindow, { - message: del ? global.currentLanguage.batchMoveItemMessage : global.currentLanguage.batchCopyItemMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - let params = { - to: { - classificationParentId: classification.id, - classificationChildId: null, - }, - del: del, - }; - global.mainWindow.webContents.send("batchMoveItem", JSON.stringify(params)); - } - }); - }; - } - if (util.strIsEmpty(classification.mapDirectory) && (classification.type == null || classification.type != 1)) { - menuList.push(menu); - } - } - return menuList; -} - -/** - * 读取路径下的文件 - * @param path - * @returns {*[]} - */ -function getPathProgramList(path) { - let resultList = []; - try { - // 读取开始菜单下所有内容 - let pathList = fs.readdirSync(path); - // 循环判断文件类型 - for (let p of pathList) { - // 完整路径 - let fullPath = path + "\\" + p; - // 判断文件类型 - let stats; - try { - // 文件类型 - stats = fs.statSync(fullPath); - // 如果是文件夹继续向下读取,如果是文件则添加到返回列表 - if (stats.isDirectory()) { - // 文件夹 - resultList.push(...getPathProgramList(fullPath)); - } else { - // 文件 - resultList.push(fullPath); - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - return resultList; -} - -/** - * 获取最大图标尺寸 - */ -function getMaxIconSize(list, name, type) { - // 获取最大图标尺寸 - let max = null; - for (let targetSize of list) { - let s = targetSize.replace(name + "." + type + "-", "").split("_"); - let size = Number(s[0].replace(".png", "")); - if (max == null) { - max = size; - } else { - if (size > max) { - max = size; - } - } - } - return max; -} - -/** - * 接续XML同步 - * @param xml - * @returns {Promise} - */ -async function xml2jsSync(xml) { - let parser = new xml2js.Parser(); - return new Promise((resolve, reject) => { - parser.parseString(xml, function (err, json) { - if (err) reject(err); - else resolve(json); - }); - }); -} - -/** - * 获取AppxPropertiesLogo - * @param installLocation - * @param result - * @returns {string|null} - */ -function getPropertiesIcon(installLocation, result) { - if (result.Package.Properties != null) { - if (result.Package.Properties[0].Logo != null) { - let logo = result.Package.Properties[0].Logo[0]; - return installLocation + "\\" + logo; - } - } - return null; -} - -/** - * 获取Appx信息 - */ -async function getAppxInfo(installLocation) { - let appxInfo = {}; - let buffer, result; - try { - buffer = fs.readFileSync(installLocation + "\\AppxManifest.xml"); - result = await xml2jsSync(buffer); - // 备用,如果没有名称的话 - let executable = null; - // targetsize图标 - let targetSizeIcon = null; - let targetSizeIconMax = null; - // scale图标 - let scaleIcon = null; - let scaleIconMax = null; - // 图标 APPID - if (result.Package.Applications != null && result.Package.Applications[0] != null) { - if (result.Package.Applications[0].Application[0] != null) { - // APPID - appxInfo.appId = result.Package.Applications[0].Application[0].$.Id; - // Executable - executable = result.Package.Applications[0].Application[0].$.Executable; - // 图标 - if (result.Package.Applications[0].Application[0]["uap:VisualElements"] != null) { - // logo地址 - let logo = result.Package.Applications[0].Application[0]["uap:VisualElements"][0].$.Square44x44Logo; - // 解析路径 - let parsedPath = path.parse(logo); - // 获取文件夹下所有文件 - let fileNameList = fs.readdirSync(installLocation + "\\" + parsedPath.dir); - // 筛选出和包含logo名称的文件名 - let filterList = fileNameList.filter((f) => f.indexOf(parsedPath.name) >= 0); - if (filterList.length > 1) { - // 获取targetsize图片 - let targetSizeList = filterList.filter((f) => f.indexOf(parsedPath.name + ".targetsize") >= 0); - if (targetSizeList.length > 0) { - // 获取最大图标尺寸 - let max = getMaxIconSize(targetSizeList, parsedPath.name, "targetsize"); - if (max != null) { - // 记录max - targetSizeIconMax = max; - // 先获取最终图标 - let defaultList = targetSizeList.filter( - (f) => f == parsedPath.name + ".targetsize-" + max + "_altform-unplated_devicefamily-colorfulunplated.png" - ); - targetSizeIcon = - defaultList.length > 0 - ? installLocation + - "\\" + - parsedPath.dir + - "\\" + - parsedPath.name + - ".targetsize-" + - max + - "_altform-unplated_devicefamily-colorfulunplated.png" - : null; - if (targetSizeIcon == null) { - // 获取 名称.targetsize-{max}_altform-unplated.png - let defaultUnplatedList = targetSizeList.filter((f) => f == parsedPath.name + ".targetsize-" + max + "_altform-unplated.png"); - if (defaultUnplatedList.length > 0) { - targetSizeIcon = installLocation + "\\" + parsedPath.dir + "\\" + parsedPath.name + ".targetsize-" + max + "_altform-unplated.png"; - } else { - // 获取 名称.targetsize-{max}_altform.png - let defaultAltFormList = targetSizeList.filter((f) => f == parsedPath.name + ".targetsize-" + max + "_altform.png"); - if (defaultAltFormList.length > 0) { - targetSizeIcon = installLocation + "\\" + parsedPath.dir + "\\" + parsedPath.name + ".targetsize-" + max + "_altform.png"; - } else { - // 获取 名称.targetsize-{max}.png - let defaultTargetSizeList = targetSizeList.filter((f) => f == parsedPath.name + ".targetsize-" + max + ".png"); - if (defaultTargetSizeList.length > 0) { - targetSizeIcon = installLocation + "\\" + parsedPath.dir + "\\" + defaultTargetSizeList[0]; - } - } - } - } - } - } - // 获取scale图片 - let scaleList = filterList.filter((f) => f.indexOf(parsedPath.name + ".scale") >= 0); - if (scaleList.length > 0) { - // 获取最大图标尺寸 - let max = getMaxIconSize(scaleList, parsedPath.name, "scale"); - if (max != null) { - // 记录max - scaleIconMax = max; - // 获取 名称.scale-{max}.png - let defaultList = scaleList.filter((f) => f == parsedPath.name + ".scale-" + max + ".png"); - if (defaultList.length > 0) { - scaleIcon = installLocation + "\\" + parsedPath.dir + "\\" + defaultList[0]; - } - } - } else { - scaleList = filterList.filter((f) => f.indexOf(parsedPath.name + ".Theme-Dark_Scale") >= 0); - if (scaleList.length > 0) { - let max = getMaxIconSize(scaleList, parsedPath.name, "Theme-Dark_Scale"); - if (max != null) { - // 记录max - scaleIconMax = max; - // 获取 名称.Theme-Dark_Scale{max}.png - let defaultList = scaleList.filter((f) => f == parsedPath.name + ".Theme-Dark_Scale-" + max + ".png"); - if (defaultList.length > 0) { - scaleIcon = installLocation + "\\" + parsedPath.dir + "\\" + defaultList[0]; - } - } - } - } - } else { - if (filterList.length == 1) { - // 只有一张图片 - appxInfo.icon = installLocation + "\\" + parsedPath.dir + "\\" + filterList[0]; - } - } - } - } - } - if (appxInfo.icon == null) { - // 判断图标大小 - if (targetSizeIcon != null && scaleIcon == null) { - appxInfo.icon = targetSizeIcon; - } else if (targetSizeIcon == null && scaleIcon != null) { - appxInfo.icon = scaleIcon; - } else if (targetSizeIcon != null && scaleIcon != null) { - if (targetSizeIconMax == 256 || targetSizeIconMax > scaleIconMax) { - appxInfo.icon = targetSizeIcon; - } else if (targetSizeIconMax < scaleIconMax) { - appxInfo.icon = scaleIcon; - } else { - appxInfo.icon = targetSizeIcon; - } - } else if (targetSizeIcon == null && scaleIcon == null) { - let propertiesIcon = getPropertiesIcon(installLocation, result); - if (propertiesIcon != null) { - appxInfo.icon = propertiesIcon; - } - } - } - // 名称 - if (result.Package.Properties != null) { - if (result.Package.Properties[0].DisplayName != null) { - appxInfo.name = result.Package.Properties[0].DisplayName[0]; - } - } - if (appxInfo.name == null || (appxInfo.name != null && appxInfo.name.indexOf("ms-resource:") >= 0)) { - if (executable != null && executable.indexOf("ms-resource:") < 0) { - appxInfo.name = path.parse(executable).name; - } else { - appxInfo.name = null; - } - } - if (appxInfo.name == null) { - if (result.Package.Identity != null && result.Package.Identity[0] != null) { - let name = result.Package.Identity[0].$.Name; - if (name != null && name.indexOf("ms-resource:") < 0) { - appxInfo.name = name; - } - } - } - } catch (ex) { - if (result != null) { - let propertiesIcon = getPropertiesIcon(installLocation, result); - if (propertiesIcon != null) { - appxInfo.icon = propertiesIcon; - } - } - if (process.env.NODE_ENV !== "production") { - console.log(ex); - } - } - return appxInfo; -} - -/** - * 刷新图标缓存 - * @param item - */ -async function refreshIconCache(item) { - let info = {}; - if (item.type == 0 || item.type == 1) { - info.icon = await getFileIcon(item.path, false); - } else { - let appxInfo = await getAppxInfo(item.installLocation); - if (appxInfo.icon != null) { - try { - let buffer = fs.readFileSync(appxInfo.icon); - info.icon = "data:" + mime.getType(appxInfo.icon) + ";base64," + buffer.toString("base64"); - info.iconPath = appxInfo.icon; - } catch (ex) { - if (process.env.NODE_ENV !== "production") { - console.log(ex); - } - } - } - } - return info; -} - -/** - * 刷新图标缓存 - * @param item - */ -async function refreshIconCacheList(classificationParentId, classificationChildId) { - // 获取分类下所有项目 - let classification; - if (classificationParentId != null) { - let classificationParent; - for (let c of global.list) { - if (c.id == classificationParentId) { - classificationParent = c; - break; - } - } - if (classificationChildId != null) { - if (!util.arrayIsEmpty(classificationParent.childList)) { - let classificationChild; - for (let c of classificationParent.childList) { - if (c.id == classificationChildId) { - classificationChild = c; - break; - } - } - classification = classificationChild; - } else { - classification = classificationParent; - } - } else { - classification = classificationParent; - } - } - let resultList = []; - if (classification != null && !util.arrayIsEmpty(classification.itemList)) { - // 刷新所有项目图标 - for (let item of classification.itemList) { - if ((item.type == 0 || item.type == 1 || item.type == 5) && (item.notRefreshIcon == null || !item.notRefreshIcon)) { - let info = await refreshIconCache(item); - info.itemId = item.id; - resultList.push(info); - } - } - } - return resultList; -} - -/** - * 读取文件 - * @param pathArr - */ -async function readFiles(pathArr) { - let itemList = []; - for (let filePath of pathArr) { - try { - let item = { - // id - id: null, - // 路径 - path: null, - // url - url: null, - // 名称 - name: null, - // 图标 - icon: null, - // 参数 - params: null, - // 以管理员身份运行 - admin: false, - // 类型 0:文件 1:文件夹 2:网址 - type: 0, - // 排序 - order: 0, - }; - // path - let target = filePath; - // 文件名 - item.name = path.basename(target); - // 判断是否是快捷方式,如果是的话,需要获取真实路径 - if (mime.getType(filePath) == "application/x-ms-shortcut") { - // 快捷方式 - // 获取真实文件路径和参数 - let shortcutDetail = global.api.GetShortcutFile(filePath); - if (util.strIsEmpty(shortcutDetail.target)) { - // 路径 - target = filePath; - } else { - // 路径 - target = shortcutDetail.target; - } - // 参数 - item.params = !util.strIsEmpty(shortcutDetail.arguments) ? shortcutDetail.arguments : null; - } - // 文件类型 - let stats = fs.statSync(target); - // 路径 - item.path = target; - item.type = stats.isFile() ? 0 : 1; - // 获取图标 - item.icon = await getFileIcon(target, true); - // 去掉后缀 - if (item.type == 0) { - item.name = util.removeSuffix(item.name); - } - // add - itemList.push(item); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - return itemList; -} - -/** - * 获取开始菜单程序 - */ -async function getStartMenuProgramList() { - // 返回列表 - let resultList = []; - // appData - let appDataPathList = getPathProgramList(process.env["AppData"] + "\\Microsoft\\Windows\\Start Menu\\Programs"); - // programData - let programDataPathList = getPathProgramList(process.env["ProgramData"] + "\\Microsoft\\Windows\\Start Menu\\Programs"); - // list - let pathList = []; - pathList.push(...appDataPathList); - pathList.push(...programDataPathList); - // 查询缓存 - let cacheStartMenuProgramList = cacheData.cacheStore.get("startMenuProgramList"); - // 循环组装数据 - for (let p of pathList) { - // 获取后缀,必须是快捷方式 - if (mime.getType(p) == "application/x-ms-shortcut") { - // 获取名称去掉后缀 - let name = util.removeSuffix(path.basename(p)); - // 查重 - let flag = false; - for (let e of resultList) { - if (e.name == name) { - flag = true; - break; - } - } - if (!flag) { - let exist = false; - // 是否存在如果存在的话不需要重新获取图标 - if (!util.arrayIsEmpty(cacheStartMenuProgramList)) { - for (let pro of cacheStartMenuProgramList) { - if (name == pro.name && p == pro.path) { - resultList.push(pro); - exist = true; - break; - } - } - } - if (!exist) { - // data - let data = { - name: name, - path: p, - icon: await getFileIcon(p, true), - }; - // push - resultList.push(data); - } - } - } - } - // 排序 - resultList.sort((a, b) => a.name.localeCompare(b.name)); - // 写入缓存 - cacheData.cacheStore.set("startMenuProgramList", resultList); - // 返回 - return resultList; -} - -/** - * 获取Appx列表 - */ -async function getAppxList() { - let resultList = []; - try { - let release = os.release(); - let releaseSplit = release.split("."); - if (Number(releaseSplit[0]) >= 10) { - let stdout = execSync('powershell -Command "Get-AppxPackage | Select-Object PackageFamilyName, InstallLocation | Format-list"'); - stdout = stdout.toString("UTF8"); - let split = stdout.trim().split("\r\n"); - split = split.filter((str) => str.trim() != ""); - let list = []; - let packageFamilyName = null; - let installLocation = null; - let prev = null; - for (let i = 0; i < split.length; i++) { - let t = split[i].trim(); - let s = t.split(" : "); - if (s.length > 1) { - if (s[0].trim() == "PackageFamilyName") { - if (packageFamilyName != null && installLocation != null) { - list.push({ - packageFamilyName: packageFamilyName, - installLocation: installLocation, - }); - packageFamilyName = s[1].trim(); - installLocation = null; - prev = "PackageFamilyName"; - } else { - packageFamilyName = s[1].trim(); - prev = "PackageFamilyName"; - } - } else if (s[0].trim() == "InstallLocation") { - installLocation = s[1].trim(); - prev = "InstallLocation"; - } - } else { - if (prev == "PackageFamilyName") { - packageFamilyName += t; - } else if (prev == "InstallLocation") { - installLocation += t; - } - } - } - if (packageFamilyName != null && installLocation != null) { - list.push({ - packageFamilyName: packageFamilyName, - installLocation: installLocation, - }); - } - // 读取XML获取图标路径和名称 - for (let e of list) { - let appxInfo = await getAppxInfo(e.installLocation); - e.appId = appxInfo.appId; - e.icon = appxInfo.icon; - e.name = appxInfo.name; - } - // 过滤 - let filterList = list.filter((e) => e.icon != null && e.appId != null && e.name != null); - // 图标转BASE64 - for (let e of filterList) { - try { - let buffer = fs.readFileSync(e.icon); - let icon = "data:" + mime.getType(e.icon) + ";base64," + buffer.toString("base64"); - e.originalIcon = e.icon; - e.icon = icon; - } catch (ex) { - if (process.env.NODE_ENV !== "production") { - console.log(ex); - } - e.icon = null; - } - } - // 返回列表 - resultList = filterList.filter((e) => e.icon != null); - // 排序 - resultList.sort((a, b) => a.name.localeCompare(b.name)); - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - return resultList; -} - -/** - * 图片转BASE64 - */ -function imageToBase64(path) { - fs.readFile(path, (err, data) => { - let buffer = Buffer.from(data); - let icon = "data:" + mime.getType(path) + ";base64," + buffer.toString("base64"); - global.mainWindow.webContents.send("imageToBase64", icon); - }); -} - -/** - * 下载图片 - * @param url - */ -function downloadImage(url) { - let result = { - status: false, - message: global.currentLanguage.downloadImageFailedMessage, - name: null, - icon: null, - }; - // 重试 - const operation = retry.operation({ - retries: 5, // 最多重试 5 次 - factor: 1, // 每次重试之间的时间间隔加倍 - minTimeout: 1000, // 第一次重试之前等待的时间 - maxTimeout: 5000, // 最长等待时间 - }); - operation.attempt((currentAttempt) => { - // 下载图片 - request( - { - uri: url, - proxy: getProxy(), - encoding: null, - timeout: 5000, - headers: { - "User-Agent": getRandomUserAgent(), - }, - }, - function (error, response, body) { - if (operation.retry(error)) { - return; - } - if (!error && response.statusCode >= 200 && response.statusCode <= 299) { - if (response.headers != null && response.headers["content-type"] != null) { - let ext = mime.getExtension(response.headers["content-type"]); - if (ext == "jpg" || ext == "jpeg" || ext == "png" || ext == "gif" || ext == "ico" || ext == "svg") { - let buffer = Buffer.from(body); - result.icon = "data:" + mime.getType(response.headers["content-type"]) + ";base64," + buffer.toString("base64"); - result.status = true; - result.message = null; - } else { - result.icon = null; - result.status = false; - result.message = global.currentLanguage.downloadImageNotImageFormatMessage; - } - } - } - returnDownloadImage(result); - } - ); - }); -} - -/** - * 返回下载图片信息 - * @param result - */ -function returnDownloadImage(result) { - global.mainWindow.webContents.send("returnDownloadImage", JSON.stringify(result)); -} - -/** - * 添加/修改项目菜单项 - * @param type - * @param classificationParentId - * @param classificationChildId - * @param id - * @param itemType - */ -function addEditItemMenu(type, classificationParentId, classificationChildId, id, itemType) { - let params = { - type: type, - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - id: id, - itemType: itemType, - }; - global.mainWindow.webContents.send("showItemAddEditWindow", JSON.stringify(params)); -} - -/** - * 清空项目菜单 - * @param classificationParentId - * @param classificationChildId - * @param confirm - */ -function clearItemMenu(classificationParentId, classificationChildId, confirm) { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - confirm: confirm, - }; - global.mainWindow.webContents.send("clearItem", JSON.stringify(params)); -} - -/** - * 项目刷新图标缓存列表菜单 - * @param classificationParentId - * @param classificationChildId - */ -function refreshIconCacheListItemMenu(classificationParentId, classificationChildId) { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.refreshIconCurrentClassificationMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - refreshIconCacheList(classificationParentId, classificationChildId).then((res) => { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - list: res, - }; - global.mainWindow.webContents.send("refreshIconCacheList", JSON.stringify(params)); - }); - } - }); -} - -/** - * 项目转换路径菜单 - * @param classificationParentId - * @param classificationChildId - * @param type - */ -function convertPathListItemMenu(classificationParentId, classificationChildId, type) { - dialog - .showMessageBox(global.mainWindow, { - message: type == "relative" ? global.currentLanguage.relativeCurrentClassificationMessage : global.currentLanguage.absoluteCurrentClassificationMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - type: type, - }; - global.mainWindow.webContents.send("convertPathList", JSON.stringify(params)); - } - }); -} - -export default function () { - // 项目空白处右键菜单 - ipcMain.on("itemContentRightMenu", (event, args) => { - // 参数 - let p = JSON.parse(args); - // 在拥有子级分类的父级分类下右键 - let addSubmenu = []; - let clearSubmenu = []; - let refreshIconCacheSubmenu = []; - let convertRelativePathSubmenu = []; - let convertAbsolutePathSubmenu = []; - if (p.haveClassificationChild && p.classificationChildId == null) { - for (let i = 0; i < global.list.length; i++) { - if (global.list[i].id == p.classificationParentId) { - for (let j = 0; j < global.list[i].childList.length; j++) { - if ( - util.strIsEmpty(global.list[i].childList[j].mapDirectory) && - (global.list[i].childList[j].type == null || global.list[i].childList[j].type != 1) - ) { - addSubmenu.push({ - label: global.list[i].childList[j].name, - click: () => { - addEditItemMenu(0, p.classificationParentId, global.list[i].childList[j].id); - }, - }); - clearSubmenu.push({ - label: global.list[i].childList[j].name, - click: () => { - clearItemMenu(p.classificationParentId, global.list[i].childList[j].id, true); - }, - }); - convertRelativePathSubmenu.push({ - label: global.list[i].childList[j].name, - click: () => { - convertPathListItemMenu(p.classificationParentId, global.list[i].childList[j].id, "relative"); - }, - }); - convertAbsolutePathSubmenu.push({ - label: global.list[i].childList[j].name, - click: () => { - convertPathListItemMenu(p.classificationParentId, global.list[i].childList[j].id, "absolute"); - }, - }); - } - if (global.list[i].childList[j].type == null || global.list[i].childList[j].type != 1) { - refreshIconCacheSubmenu.push({ - label: global.list[i].childList[j].name, - click: () => { - refreshIconCacheListItemMenu(p.classificationParentId, global.list[i].childList[j].id); - }, - }); - } - } - } - } - } - // 菜单 - let menuList = []; - if (p.haveClassificationChild && p.classificationChildId == null) { - if (!util.arrayIsEmpty(addSubmenu)) { - menuList.push({ - label: global.currentLanguage.newItem, - type: "submenu", - submenu: addSubmenu, - }); - } - } else { - if (!p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: global.currentLanguage.newItem, - click: () => { - addEditItemMenu(0, p.classificationParentId, p.classificationChildId); - }, - }); - } - } - if (!p.aggregate) { - menuList.push(index.itemSortMenu(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.sort)); - } - menuList.push(...index.itemLayoutIconSize(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.layout, p.iconSize)); - menuList.push(ItemJS.itemShowOnly(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.showOnly)); - if ( - !p.haveClassificationChild && - ((p.layout != null && p.layout == "list") || (global.setting.item.layout == "list" && (p.layout == null || p.layout == "default"))) - ) { - menuList.push(ItemJS.itemColumnNumber(p.classificationParentId, p.classificationChildId, p.haveClassificationChild, p.columnNumber)); - } - menuList.push({ type: "separator" }); - if (p.haveClassificationChild && p.classificationChildId == null) { - if (!util.arrayIsEmpty(refreshIconCacheSubmenu)) { - menuList.push({ - label: global.currentLanguage.batchRefreshIconCache, - type: "submenu", - submenu: refreshIconCacheSubmenu, - }); - } - } else { - if (!p.aggregate) { - menuList.push({ - label: global.currentLanguage.batchRefreshIconCache, - click: () => { - refreshIconCacheListItemMenu(p.classificationParentId, p.classificationChildId); - }, - }); - } - } - if (p.haveClassificationChild && p.classificationChildId == null) { - if (!util.arrayIsEmpty(convertRelativePathSubmenu)) { - menuList.push({ - label: global.currentLanguage.batchConversionRelativePath, - type: "submenu", - submenu: convertRelativePathSubmenu, - }); - } - } else { - if (!p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: global.currentLanguage.batchConversionRelativePath, - click: () => { - convertPathListItemMenu(p.classificationParentId, p.classificationChildId, "relative"); - }, - }); - } - } - if (p.haveClassificationChild && p.classificationChildId == null) { - if (!util.arrayIsEmpty(convertAbsolutePathSubmenu)) { - menuList.push({ - label: global.currentLanguage.batchConversionAbsolutePath, - type: "submenu", - submenu: convertAbsolutePathSubmenu, - }); - } - } else { - if (!p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: global.currentLanguage.batchConversionAbsolutePath, - click: () => { - convertPathListItemMenu(p.classificationParentId, p.classificationChildId, "absolute"); - }, - }); - } - } - menuList.push({ type: "separator" }); - if (p.haveClassificationChild && p.classificationChildId == null) { - if (!util.arrayIsEmpty(clearSubmenu)) { - menuList.push({ - label: global.currentLanguage.clearItem, - type: "submenu", - submenu: clearSubmenu, - }); - } - } else { - if (!p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: global.currentLanguage.clearItem, - click: () => { - clearItemMenu(p.classificationParentId, p.classificationChildId, true); - }, - }); - } - } - menuList.push({ type: "separator" }); - if (!p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: p.lockItem ? global.currentLanguage.unlockItem : global.currentLanguage.lockItem, - click: () => { - global.mainWindow.webContents.send("setLockItem", !p.lockItem); - cacheData.cacheStore.set("lockItem", !p.lockItem); - }, - }); - menuList.push({ type: "separator" }); - } - if (!p.lockItem && !p.isMapDirectory && !p.aggregate) { - menuList.push({ - label: p.batchOperation ? global.currentLanguage.cancelBatchOperation : global.currentLanguage.batchOperation, - click: () => { - global.mainWindow.webContents.send("setBatchOperation", !p.batchOperation); - }, - }); - } - let m = Menu.buildFromTemplate(menuList); - util.menuListen(m); - m.popup(); - }); - // 项目右键 - ipcMain.on("itemRightMenu", (event, args) => { - // 参数 - let p = JSON.parse(args); - // 项目 - let item = p.item; - // 转为菜单 - let moveSubmenu = []; - let copySubmenu = []; - if ((p.search == null || !p.search) && (p.searchWindow == null || !p.searchWindow) && !p.isMapDirectory && !p.aggregate) { - moveSubmenu = convertMenu(p.classificationParentId, p.classificationChildId, item.id, global.list, true); - copySubmenu = convertMenu(p.classificationParentId, p.classificationChildId, item.id, global.list, false); - } - // 菜单 - let menuList = [ - { - label: global.currentLanguage.open, - click: () => { - if (p.searchWindow != null && p.searchWindow) { - global.searchWindow.hide(); - } - index.itemRun(item, false); - if (p.search != null && p.search) { - global.mainWindow.webContents.send("closeSearch"); - } - }, - }, - { - label: global.currentLanguage.emptyRecycleBin, - visible: item.type == 3 && item.shell == "shell:RecycleBinFolder", - click: () => { - global.api.EmptyRecycleBin(global.mainWindow.getNativeWindowHandle()); - }, - }, - { - label: global.currentLanguage.openWith, - visible: item.type == 0 && item.extension != ".exe" && item.extension != ".bat" && item.extension != ".lnk", - click: () => { - if (p.searchWindow != null && p.searchWindow) { - global.searchWindow.hide(); - } - index.itemRun(item, false, true); - if (p.search != null && p.search) { - global.mainWindow.webContents.send("closeSearch"); - } - }, - }, - { - label: global.currentLanguage.runAsAdministrator, - visible: (item.type == 0 && (item.extension == ".exe" || item.extension == ".bat")) || (item.type == 3 && item.shell == "cmd"), - click: () => { - item.admin = true; - index.itemRun(item, false); - if (p.search != null && p.search) { - global.mainWindow.webContents.send("closeSearch"); - } - if (p.searchWindow != null && p.searchWindow) { - global.searchWindow.hide(); - } - }, - }, - { - label: global.currentLanguage.openLocation, - visible: item.type == 0, - click: () => { - index.itemRun(item, true); - if (p.search != null && p.search) { - global.mainWindow.webContents.send("closeSearch"); - } - if (p.searchWindow != null && p.searchWindow) { - global.searchWindow.hide(); - } - }, - }, - ]; - menuList.push({ - type: "separator", - }); - if (item.type != 3 && item.type != 4 && item.type != 5) { - menuList.push({ - label: global.currentLanguage.copyFullPath, - click: () => { - if (item.type == 0 || item.type == 1) { - clipboard.writeText(index.getAbsolutePath(item.path)); - } else if (item.type == 2) { - clipboard.writeText(item.url); - } - if (p.search != null && p.search) { - global.mainWindow.webContents.send("closeSearch"); - } - if (p.searchWindow != null && p.searchWindow) { - global.searchWindow.hide(); - } - }, - }); - } - if (item.type == 0 || item.type == 1 || item.type == 5) { - menuList.push({ - label: global.currentLanguage.createDesktopShortcut, - click: () => { - dialog - .showSaveDialog(global.mainWindow, { - title: global.currentLanguage.createDesktopShortcut, - defaultPath: util.removeSuffix(item.name.replace(/\\n/g, " ")), - filters: [{ name: "lnk", extensions: ["lnk"] }], - }) - .then((r) => { - if (!r.canceled && !util.strIsEmpty(r.filePath)) { - if (item.type == 0 || item.type == 1) { - // 获取绝对路径 - item.path = index.getAbsolutePath(item.path); - } - shell.writeShortcutLink(r.filePath, "create", { - target: item.type == 5 ? item.shell : item.path, - }); - } - }); - }, - }); - } - menuList.push({ - label: global.currentLanguage.exportIcon, - click: () => { - if (!util.strIsEmpty(item.icon) || !util.strIsEmpty(item.htmlIcon)) { - let re = new RegExp("data:(?.*?);base64,.*"); - let res = re.exec(item.icon); - let htmlIcon = !util.strIsEmpty(item.htmlIcon); - if (res || htmlIcon) { - try { - dialog - .showSaveDialog(global.mainWindow, { - title: global.currentLanguage.exportIcon, - defaultPath: "icon", - filters: [{ name: htmlIcon ? "svg" : mime.getExtension(res.groups.ext), extensions: [htmlIcon ? "svg" : mime.getExtension(res.groups.ext)] }], - }) - .then((r) => { - if (!r.canceled && !util.strIsEmpty(r.filePath)) { - if (htmlIcon) { - fs.writeFile(r.filePath, item.htmlIcon, function (err) {}); - } else { - let arr = item.icon.split(","); - if (arr.length == 2) { - let base64Data = arr[1]; - let dataBuffer = Buffer.from(base64Data, "base64"); - fs.writeFile(r.filePath, dataBuffer, function (err) {}); - } - } - } - }); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - } - }, - }); - if ( - (item.type == 0 || item.type == 1 || item.type == 5) && - (p.search == null || !p.search) && - (p.searchWindow == null || !p.searchWindow) && - (item.notRefreshIcon == null || !item.notRefreshIcon) && - !p.aggregate - ) { - menuList.push({ - label: global.currentLanguage.refreshIconCache, - click: () => { - // 获取图标 - refreshIconCache(item).then((res) => { - if (res.icon != null) { - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId( - item.classificationId, - item.classificationParentId - ); - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - id: item.id, - icon: res.icon, - }; - if (item.type == 5) { - params.iconPath = res.iconPath; - } - global.mainWindow.webContents.send("refreshIconCache", JSON.stringify(params)); - } - }); - }, - }); - } - if ( - (item.type == 0 || item.type == 1) && - (p.search == null || !p.search) && - (p.searchWindow == null || !p.searchWindow) && - !p.isMapDirectory && - !p.aggregate - ) { - menuList.push({ - label: ItemJS.isAbsolutePath(item.path) ? global.currentLanguage.convertRelativePath : global.currentLanguage.convertAbsolutePath, - click: () => { - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId(item.classificationId, item.classificationParentId); - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - id: item.id, - type: ItemJS.isAbsolutePath(item.path) ? "relative" : "absolute", - }; - global.mainWindow.webContents.send("convertPath", JSON.stringify(params)); - }, - }); - } - if (item.type == 0 || item.type == 1 || item.type == 3) { - let flag = false; - let itemPath; - if (item.type == 3) { - if ( - item.shell == "shell:MyComputerFolder" || - item.shell == "shell:DocumentsLibrary" || - item.shell == "shell:ControlPanelFolder" || - item.shell == "shell:RecycleBinFolder" - ) { - itemPath = item.shell; - flag = true; - } else if (item.shell == "services.msc") { - itemPath = process.env.SystemRoot + "\\System32\\services.msc"; - flag = true; - } else if (item.shell == "cmd") { - itemPath = process.env.SystemRoot + "\\System32\\cmd.exe"; - flag = true; - } else if (item.shell == "taskmgr") { - itemPath = process.env.SystemRoot + "\\System32\\taskmgr.exe"; - flag = true; - } else if (item.shell == "regedit") { - itemPath = process.env.SystemRoot + "\\regedit.exe"; - flag = true; - } else if (item.shell == "powercfg.cpl") { - itemPath = process.env.SystemRoot + "\\System32\\powercfg.exe"; - flag = true; - } else if (item.shell == "compmgmt.msc /s") { - itemPath = process.env.SystemRoot + "\\System32\\compmgmt.msc"; - flag = true; - } - } else { - flag = true; - itemPath = index.getAbsolutePath(item.path); - } - if (flag) { - menuList.push({ - type: "separator", - }); - menuList.push({ - label: global.currentLanguage.explorerMenu, - click: () => { - const mouseEvent = require("../mouse"); - let screen = util.getWindowInScreen(); - let scaleFactor = 1; - if (!util.arrayIsEmpty(screen)) { - scaleFactor = screen[0].scaleFactor; - } - // 暂停鼠标事件 - mouseEvent.pauseMouseEvents(); - try { - global.api.ContextMenu(global.mainWindow.getNativeWindowHandle(), itemPath, p.x * scaleFactor, p.y * scaleFactor); - } finally { - // 恢复鼠标事件 - mouseEvent.resumeMouseEvents(); - } - }, - }); - } - } - if ( - (!util.arrayIsEmpty(moveSubmenu) || !util.arrayIsEmpty(copySubmenu)) && - (p.search == null || !p.search) && - (p.searchWindow == null || !p.searchWindow) && - !p.isMapDirectory && - !p.aggregate - ) { - menuList.push({ - type: "separator", - }); - if (!util.arrayIsEmpty(moveSubmenu)) { - menuList.push({ - label: global.currentLanguage.moveTo, - visible: !util.arrayIsEmpty(moveSubmenu), - type: "submenu", - submenu: moveSubmenu, - }); - } - if (!util.arrayIsEmpty(copySubmenu)) { - menuList.push({ - label: global.currentLanguage.copyTo, - visible: !util.arrayIsEmpty(copySubmenu), - type: "submenu", - submenu: copySubmenu, - }); - } - } - if ((p.search == null || !p.search) && (p.searchWindow == null || !p.searchWindow) && !p.isMapDirectory && !p.aggregate) { - menuList.push( - { - type: "separator", - }, - { - label: global.currentLanguage.newItem, - click: () => { - addEditItemMenu(0, p.classificationParentId, p.classificationChildId); - }, - }, - { - type: "separator", - }, - { - label: global.currentLanguage.edit, - click: () => { - addEditItemMenu(1, p.classificationParentId, p.classificationChildId, item.id, item.type); - }, - }, - { - label: global.currentLanguage.delete, - click: () => { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.deleteItemMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - let params = { - classificationParentId: p.classificationParentId, - classificationChildId: p.classificationChildId, - id: item.id, - }; - global.mainWindow.webContents.send("deleteItem", JSON.stringify(params)); - } - }); - }, - } - ); - } - if ((p.search == null || !p.search) && (p.searchWindow == null || !p.searchWindow) && p.isMapDirectory && !p.aggregate) { - menuList.push({ type: "separator" }); - menuList.push({ - label: global.currentLanguage.hideThisItem, - click: () => { - let params = { - classificationParentId: p.classificationParentId, - classificationChildId: p.classificationChildId, - item: item, - }; - global.mainWindow.webContents.send("hiddenItem", JSON.stringify(params)); - }, - }); - } - // 菜单 - let m = Menu.buildFromTemplate(menuList); - util.menuListen(m); - m.popup(); - }); - // 多选项目右键 - ipcMain.on("multiItemRightMenu", (event, args) => { - // 菜单列表 - let menuList = []; - // 全选 - menuList.push({ - label: global.currentLanguage.selectAll, - click: () => { - global.mainWindow.webContents.send("batchOperationSelectAll"); - }, - }); - menuList.push({ type: "separator" }); - // 转为菜单 - let moveSubmenu = batchOperationConvertMenu(global.list, true); - let copySubmenu = batchOperationConvertMenu(global.list, false); - // 移动 复制 - if (!util.arrayIsEmpty(moveSubmenu) || !util.arrayIsEmpty(copySubmenu)) { - if (!util.arrayIsEmpty(moveSubmenu)) { - menuList.push({ - label: global.currentLanguage.moveTo, - visible: !util.arrayIsEmpty(moveSubmenu), - type: "submenu", - submenu: moveSubmenu, - }); - } - if (!util.arrayIsEmpty(copySubmenu)) { - menuList.push({ - label: global.currentLanguage.copyTo, - visible: !util.arrayIsEmpty(copySubmenu), - type: "submenu", - submenu: copySubmenu, - }); - } - } - menuList.push({ type: "separator" }); - menuList.push({ - label: global.currentLanguage.delete, - click: () => { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.batchDeleteItemMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - global.mainWindow.webContents.send("batchDeleteItem"); - } - }); - }, - }); - menuList.push({ type: "separator" }); - menuList.push({ - label: global.currentLanguage.cancelBatchOperation, - click: () => { - global.mainWindow.webContents.send("setBatchOperation", false); - }, - }); - // 菜单 - let m = Menu.buildFromTemplate(menuList); - util.menuListen(m); - m.popup(); - }); - // 运行项目 - ipcMain.on("itemRun", (event, args) => { - let params = JSON.parse(args); - index.itemRun(params.item, params.location); - let setItemDataParams = { - item: params.item, - recordQuickSearch: params.recordQuickSearch, - }; - global.mainWindow.webContents.send("setItemData", JSON.stringify(setItemDataParams)); - }); - // 获取文件图标 - ipcMain.on("getFileIcon", (event, args) => { - getFileIcon(args, true).then((res) => { - event.sender.send("getFileBase64", res); - }); - }); - // 获取网址信息 - ipcMain.on("getUrlInfo", (event, args) => { - getUrlInfo(args, true); - }); - // 读取文件 - ipcMain.on("readFiles", (event, args) => { - let params = JSON.parse(args); - readFiles(params.path).then((res) => { - // 主窗口编辑分类 - let itemAddParams = { - classificationParentId: params.classificationParentId, - classificationChildId: params.classificationChildId, - itemList: res, - clear: false, - }; - global.mainWindow.webContents.send("itemAdd", JSON.stringify(itemAddParams)); - }); - }); - // 图片转base64 - ipcMain.on("imageToBase64", (event, args) => { - imageToBase64(args); - }); - // 清空项目 - ipcMain.on("clearItemDialog", (event, args) => { - let params = JSON.parse(args); - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.clearItemMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - clearItemMenu(params.classificationParentId, params.classificationChildId, false); - } - }); - }); - // 获取文件后缀 - ipcMain.on("getFileExtension", (event, args) => { - event.returnValue = path.extname(args); - }); - // 拖出文件 - ipcMain.on("ondragstart", (event, args) => { - let params = JSON.parse(args); - try { - // 网站和系统不能拖出 - if (params.type == 2 || params.type == 3) { - // 取消拖出状态 - global.mainWindow.webContents.send("cancelDragOut"); - return; - } - let icon; - // 环境判断 - if (process.env.NODE_ENV !== "production") { - // 开发 - icon = "./public/images/drag-and-drop.png"; - } else { - // 正式 - icon = path.join(__dirname, "./images/drag-and-drop.png"); - } - event.sender.startDrag({ - file: index.getAbsolutePath(params.path), - icon: icon, - }); - } finally { - // 取消拖出状态 - global.mainWindow.webContents.send("cancelDragOut"); - } - }); - // 获取锁定项目状态 - ipcMain.on("getLockItem", (event, args) => { - let lockItem = cacheData.cacheStore.get("lockItem"); - event.returnValue = lockItem == null ? false : lockItem; - }); - // 读取文件夹 - ipcMain.on("readDirectory", (event, args) => { - let pathArr = JSON.parse(args); - let resultList = []; - for (let p of pathArr) { - try { - // 获取文件类型 - let stats; - try { - // 文件类型 - stats = fs.statSync(p); - } catch (e) { - p = p.replace(" (x86)", ""); - try { - stats = fs.statSync(p); - } catch (e) {} - } - // 只要文件夹 - if (stats != null && stats.isDirectory()) { - // 读取文件夹下的内容 - let files = fs.readdirSync(p); - // 组装路径 - let fileList = []; - for (let file of files) { - fileList.push(path.join(p, file)); - } - // 返回信息 - let name = path.basename(p); - resultList.push({ - name: util.strIsEmpty(name) ? p : name, - fileList: fileList, - }); - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } - // 返回 - event.returnValue = JSON.stringify(resultList); - }); - // 校验无效项目 - ipcMain.on("checkInvalidItem", (event, args) => { - global.mainWindow.webContents.send("checkInvalidItemResult", JSON.stringify(index.checkInvalidItem())); - }); - // 获取开始菜单程序 - ipcMain.on("getStartMenuProgramList", (event, args) => { - getStartMenuProgramList().then((res) => { - // 返回数据 - global.mainWindow.webContents.send("resultStartMenuProgramList", JSON.stringify(res)); - }); - }); - // 获取Appx列表 - ipcMain.on("getAppxList", (event, args) => { - getAppxList().then((res) => { - global.mainWindow.webContents.send("returnAppxList", JSON.stringify(res)); - }); - }); - // 初始化映射文件夹 - ipcMain.on("initMapDirectory", (event, args) => { - // 初始化映射文件夹 - index.initMapDirectory().then((res) => { - if (res != null) { - global.mainWindow.webContents.send("returnInitMapDirectory", JSON.stringify(res)); - } - }); - }); - // 读取映射文件夹 - ipcMain.on("readMapDirectory", (event, args) => { - let params = JSON.parse(args); - index.readMapDirectory(params.classificationParentId, params.classificationChildId, params.mapDirectory, true, false, true); - }); - // 删除文件夹监听 - ipcMain.on("deleteMapDirectoryWatch", (event, args) => { - let params = JSON.parse(args); - index.deleteMapDirectoryWatcher(params.classificationParentId, params.classificationChildId); - }); - // 上传图标 - ipcMain.on("uploadIcon", (event, args) => { - let ext = path.extname(args); - if (ext == ".jpg" || ext == ".jpeg" || ext == ".png" || ext == ".gif" || ext == ".ico" || ext == ".svg") { - // 图片 - imageToBase64(args); - } else { - // 获取文件图标 - getFileIcon(args, true).then((res) => { - event.sender.send("getFileBase64", res); - }); - } - }); - // 下载图片 - ipcMain.on("downloadImage", (event, args) => { - downloadImage(args); - }); -} diff --git a/src/main/main.js b/src/main/main.js deleted file mode 100644 index 36136f0..0000000 --- a/src/main/main.js +++ /dev/null @@ -1,816 +0,0 @@ -import appInit from "./appInit"; -import { app, BrowserWindow, dialog, ipcMain, Menu, protocol, Tray, screen } from "electron"; -import { createProtocol } from "vue-cli-plugin-electron-builder/lib"; -import classificationIpcEvent from "./classification/ipcEvent"; -import itemIpcEvent from "./item/ipcEvent"; -import settingIpcEvent from "./setting/ipcEvent"; -import ipcEvent from "./ipcEvent"; -import settingIndex from "./setting/index"; -import path from "path"; -import util from "./util"; -import itemIndex from "./item/index"; -import cacheData from "./cache/data"; -import data from "./data"; - -// 解决透明窗口闪烁 -app.commandLine.appendSwitch("wm-window-animations-disabled"); - -// 数据 -const settingData = require("./setting/data"); - -protocol.registerSchemesAsPrivileged([{ scheme: "app", privileges: { secure: true, standard: true } }]); - -// 主窗口 -let mainWindow = null; -// 设置窗口 -let settingWindow = null; -// 搜索框 -let searchWindow = null; - -/** - * 创建主窗口 - * @param init - * @returns {Promise} - */ -async function createWindow(init) { - // 浏览器开发者工具 - let devTools; - // 环境判断 - if (process.env.NODE_ENV !== "production") { - // 开发 - devTools = true; - } else { - // 正式 - devTools = false; - } - if (init) { - // 初始化监听 - await ipcEvent(); - await classificationIpcEvent(); - await itemIpcEvent(); - await settingIpcEvent(); - // 初始化数据 - await settingData.initData(); - await data.initData(); - await data.splitData(); - await data.validData(); - // watch - global.mapDirectoryWatcher = new Map(); - } - // 记录是否透明 - if (global.setting.appearance.backgroundTransparency == 1) { - global.backgroundTransparency = false; - } else { - global.backgroundTransparency = true; - } - // 主窗口 - global.mainWindow = mainWindow = new BrowserWindow({ - minWidth: 300, - minHeight: 400, - width: 800, - height: 600, - frame: false, - show: false, - maximizable: false, - minimizable: false, - fullscreenable: false, - transparent: global.backgroundTransparency, - skipTaskbar: true, - webPreferences: { - backgroundThrottling: false, - nodeIntegration: true, - contextIsolation: false, - spellcheck: false, - devTools: devTools, - }, - }); - // 加载页面 - if (process.env.WEBPACK_DEV_SERVER_URL) { - // Load the url of the dev server if in development mode - mainWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL); - } else { - createProtocol("app"); - // Load the index.html when not in development - mainWindow.loadURL("app://./index.html"); - } - // 加载完webContents后再显示窗口 - mainWindow.webContents.on("did-finish-load", function () { - // 透明度 - mainWindow.setOpacity(Number(global.setting.appearance.transparency)); - // 永远居中不可移动 - if (global.setting.general.alwaysCenter) { - // 是否可移动 - mainWindow.setMovable(false); - } else { - // 是否可移动 - mainWindow.setMovable(!global.setting.general.fixedPosition); - } - // 恢复上一次的位置 - let bounds = cacheData.cacheStore.get("bounds"); - if (bounds != null) { - mainWindow.setBounds(bounds); - } - // 永远置顶 - if (global.setting.general.alwaysTop) { - mainWindow.setAlwaysOnTop(true, "screen-saver"); - } - // 是否托盘化启动 - if (!global.setting.general.startupTray) { - mainWindow.show(); - } - // 锁定尺寸 - mainWindow.setResizable(!global.setting.general.lockSize); - // 检查更新 - let checkUpdate = cacheData.cacheStore.get("checkUpdate"); - if (checkUpdate == null || checkUpdate) { - util.checkUpdate("init"); - } - // 永远居中 - if (global.setting.general.alwaysCenter) { - mainWindow.center(); - } - // 判断窗口位置 - let displays = util.getWindowInScreen(); - if (displays.length == 0) { - // 代表窗口的位置不再任一屏幕内,将窗口位置移动到主窗口 - mainWindow.center(); - } - // 边缘吸附 - util.edgeAdsorb(); - }); - // 禁用标题栏右键 - mainWindow.hookWindowMessage(278, function (e) { - // 窗口禁用 - mainWindow.setEnabled(false); - // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 - setTimeout(() => { - mainWindow.setEnabled(true); - }, 100); - return true; - }); - // 窗口移动完毕 - mainWindow.on("moved", () => { - // 永远居中 - if (global.setting.general.alwaysCenter) { - mainWindow.center(); - } - // 记录位置 - cacheData.cacheStore.set("bounds", mainWindow.getBounds()); - // 边缘吸附 - util.edgeAdsorb(); - }); - // 改变窗口大小完毕 - mainWindow.on("resized", () => { - // 永远居中 - if (global.setting.general.alwaysCenter) { - mainWindow.center(); - } - // 记录位置 - cacheData.cacheStore.set("bounds", mainWindow.getBounds()); - }); - // 监听鼠标移动 - const mouseEvent = require("./mouse"); - mouseEvent.on("mousemove", (data) => { - if (global.setting.general.edgeAutoHide && (global.blurHide == null || !global.blurHide) && !global.setting.general.alwaysCenter) { - autoHide(data, 40, true); - } - }); - // 监听鼠标抬起 - mouseEvent.on("mouseup", (data) => { - // 中键单击 - if (data.button == 3 && global.setting.general.showHideMouseWheelClick) { - if (util.notDisturb()) { - return; - } - if (global.mainWindow.isVisible()) { - // global.mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - } else { - util.showFollowMousePosition(); - global.mainWindow.show(); - global.mainWindow.focus(); - global.blurHide = true; - } - } - // 双击任务栏显示/隐藏窗口 - if (global.setting.general.doubleClickTaskbar) { - // 不是左键的话 - if (data.button != 1) { - // 清除timeout - clearTimeout(global.doubleClickTimer); - // 清空 - global.doubleClickCounter = 0; - return; - } - // 双击操作 - let displays = util.getWindowInScreen(); - if (displays.length > 1 || displays.length == 0) { - // 清除timeout - clearTimeout(global.doubleClickTimer); - // 清空 - global.doubleClickCounter = 0; - return; - } - // 获取鼠标位置 - let point = screen.getCursorScreenPoint(); - // 判断鼠标是否在当前屏幕内 - if ( - point.x >= displays[0].bounds.x && - point.x <= displays[0].bounds.x + displays[0].bounds.width && - point.y >= displays[0].bounds.y && - point.y <= displays[0].bounds.y + displays[0].bounds.height - ) { - // 判断是否双击在任务栏上 - let flag = false; - // 判断任务栏在哪一侧 - if (displays[0].bounds.height > displays[0].workArea.height) { - if (displays[0].bounds.y == displays[0].workArea.y) { - // 底部 - let top = displays[0].workArea.y + displays[0].workArea.height; - let bottom = displays[0].bounds.y + displays[0].bounds.height; - if (point.y >= top && point.y <= bottom) { - flag = true; - } - } else { - // 顶部 - if (point.y >= displays[0].bounds.y && point.y <= displays[0].workArea.y) { - flag = true; - } - } - } else if (displays[0].bounds.width > displays[0].workArea.width) { - if (displays[0].bounds.x == displays[0].workArea.x) { - // 右侧 - let left = displays[0].workArea.x + displays[0].workArea.width; - let right = displays[0].bounds.x + displays[0].bounds.width; - if (point.x >= left && point.x <= right) { - flag = true; - } - } else { - // 左侧 - if (point.x >= displays[0].bounds.x && point.x <= displays[0].workArea.x) { - flag = true; - } - } - } - if (flag) { - // 监听双击 - if (global.doubleClickCounter == null) { - global.doubleClickCounter = 0; - } - // +1 - global.doubleClickCounter++; - // 等于2就是双击 - if (global.doubleClickCounter != null && global.doubleClickCounter == 2) { - // 清除timeout - clearTimeout(global.doubleClickTimer); - // 清空 - global.doubleClickCounter = 0; - let className = global.api.getCursorPosWindowClassName(); - if (className.indexOf("MSTask") >= 0 || className == "Shell_TrayWnd") { - if (mainWindow.isVisible()) { - // mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - } else { - util.showFollowMousePosition(); - mainWindow.show(); - } - } - } else { - // 间隔为500毫秒,如果超过500毫秒就代表不是双击 - global.doubleClickTimer = setTimeout(function () { - global.doubleClickCounter = 0; - }, 500); - } - } else { - // 清除timeout - clearTimeout(global.doubleClickTimer); - // 清空 - global.doubleClickCounter = 0; - } - } else { - // 清除timeout - clearTimeout(global.doubleClickTimer); - // 清空 - global.doubleClickCounter = 0; - } - } - }); - // 失去焦点 - mainWindow.on("blur", () => { - if (global.setting.general.edgeAutoHide && global.blurHide) { - let scaleFactor = screen.getPrimaryDisplay().scaleFactor; - let data = { - x: screen.getCursorScreenPoint().x * scaleFactor, - y: screen.getCursorScreenPoint().y * scaleFactor, - }; - autoHide(data, 0, false); - } - if (mainWindow.isVisible()) { - if (global.setting.general.hideLosingFocus && !global.setting.general.alwaysTop) { - // 隐藏 - // mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - } - } - }); - // 显示窗口 - mainWindow.on("show", () => { - // 检测无效项目 - if (global.setting.item.checkInvalidItem) { - global.mainWindow.webContents.send("checkInvalidItemResult", JSON.stringify(itemIndex.checkInvalidItem())); - } - // 边缘吸附 - util.edgeAdsorb(); - // 显示窗口时将输入法切换为英文模式 - if (global.setting.general.switchEnglish) { - global.api.SwitchEnglish(mainWindow.getNativeWindowHandle()); - } - }); - // 隐藏窗口 - mainWindow.on("hide", () => { - global.blurHide = null; - }); - // 关闭窗口事件 - mainWindow.on("close", () => { - // 关闭搜索框 - if (searchWindow != null && !searchWindow.isDestroyed()) { - searchWindow.close(); - } - // 释放鼠标监听 - global.api.disableMouseMove(); - }); -} - -/** - * 创建搜索窗口 - * @returns {Promise} - */ -async function createSettingWindow() { - // 浏览器开发者工具 - let devTools; - // 环境判断 - if (process.env.NODE_ENV !== "production") { - // 开发 - devTools = true; - } else { - // 正式 - devTools = false; - } - // 设置窗口 - global.settingWindow = settingWindow = new BrowserWindow({ - width: 600, - height: 500, - frame: false, - show: false, - maximizable: false, - minimizable: false, - fullscreenable: false, - skipTaskbar: true, - parent: mainWindow, - resizable: false, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - spellcheck: false, - devTools: devTools, - }, - }); - // 加载页面 - if (process.env.WEBPACK_DEV_SERVER_URL) { - // Load the url of the dev server if in development mode - settingWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL + "#/setting"); - } else { - createProtocol("app"); - // Load the index.html when not in development - settingWindow.loadURL("app://./index.html#setting"); - } - // 加载完webContents后再显示窗口 - settingWindow.webContents.on("did-finish-load", function () { - // 显示窗口 - settingWindow.show(); - }); - // 禁用标题栏右键 - settingWindow.hookWindowMessage(278, function (e) { - // 窗口禁用 - settingWindow.setEnabled(false); - // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 - setTimeout(() => { - settingWindow.setEnabled(true); - }, 100); - return true; - }); -} - -/** - * 创建搜索窗口 - * @returns {Promise} - */ -async function createSearchWindow() { - // 是否可以显示 - global.searchWindowShow = false; - if (searchWindow != null && !searchWindow.isDestroyed()) { - searchWindow.destroy(); - } - // 浏览器开发者工具 - let devTools; - // 环境判断 - if (process.env.NODE_ENV !== "production") { - // 开发 - devTools = true; - } else { - // 正式 - devTools = false; - } - // 窗口 - global.searchWindow = searchWindow = new BrowserWindow({ - width: 600, - height: 44, - type: "toolbar", - frame: false, - show: false, - maximizable: false, - minimizable: false, - fullscreenable: false, - resizable: false, - alwaysOnTop: true, - backgroundColor: global.setting.appearance.theme.mainBackground.replace("bg-[", "").replace("]", ""), - webPreferences: { - backgroundThrottling: false, - nodeIntegration: true, - contextIsolation: false, - spellcheck: false, - devTools: devTools, - }, - }); - // 加载页面 - if (process.env.WEBPACK_DEV_SERVER_URL) { - // Load the url of the dev server if in development mode - searchWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL + "#/searchWindow"); - } else { - createProtocol("app"); - // Load the index.html when not in development - searchWindow.loadURL("app://./index.html#searchWindow"); - } - // 加载完webContents后再显示窗口 - searchWindow.webContents.on("did-finish-load", function () { - // 恢复上一次的位置 - let bounds = cacheData.cacheStore.get("searchWindowBounds"); - if (bounds != null) { - searchWindow.setBounds({ x: bounds.x, y: bounds.y }); - } - // 设置可以显示 - global.searchWindowShow = true; - }); - // 隐藏窗口 - searchWindow.on("hide", () => { - searchWindow.setBounds({ height: 44 }); - searchWindow.webContents.send("hideSearchWindowOperation"); - }); - // 显示窗口 - searchWindow.on("show", () => { - searchWindow.setBackgroundColor(global.setting.appearance.theme.mainBackground.replace("bg-[", "").replace("]", "")); - // 显示窗口时将输入法切换为英文模式 - if (global.setting.general.switchEnglish) { - global.api.SwitchEnglish(searchWindow.getNativeWindowHandle()); - } - }); - // 窗口移动完毕 - searchWindow.on("moved", () => { - // 记录位置 - cacheData.cacheStore.set("searchWindowBounds", searchWindow.getBounds()); - }); - // 失去焦点 - searchWindow.on("blur", () => { - if (searchWindow.isVisible() && global.setting.quickSearch.hideLosingFocus) { - global.searchWindow.webContents.send("hideSearchWindowBefore"); - } - }); - // 禁用标题栏右键 - searchWindow.hookWindowMessage(278, function (e) { - // 窗口禁用 - searchWindow.setEnabled(false); - // 延时太快会立刻启动,太慢会妨碍窗口其他操作,可自行测试最佳时间 - setTimeout(() => { - searchWindow.setEnabled(true); - }, 100); - return true; - }); -} - -/** - * 自动隐藏 - * @param data - * @param size - * @param timer - */ -function autoHide(data, size, timer) { - if (global.mainWindow.isDestroyed()) { - return; - } - try { - let displays = util.getWindowInScreen(); - if (displays.length > 1 || displays.length == 0) { - return; - } - let workArea = displays[0].workArea; - let scaleFactor = displays[0].scaleFactor; - let bounds = mainWindow.getBounds(); - if (mainWindow.isVisible()) { - let flag = false; - if (bounds.x + bounds.width >= workArea.x + workArea.width) { - // 右侧 - flag = data.x <= bounds.x * scaleFactor - size || data.y <= bounds.y * scaleFactor - size || data.y >= (bounds.y + bounds.height) * scaleFactor + size; - } else if (bounds.x == workArea.x) { - // 左侧 - flag = - data.x > (bounds.x + bounds.width) * scaleFactor + size || - data.y <= bounds.y * scaleFactor - size || - data.y >= (bounds.y + bounds.height) * scaleFactor + size; - } else if (bounds.y + bounds.height >= workArea.y + workArea.height) { - // 底部 - flag = data.y < bounds.y * scaleFactor - size || data.x <= bounds.x * scaleFactor - size || data.x >= (bounds.x + bounds.width) * scaleFactor + size; - } else if (bounds.y == workArea.y) { - // 顶部 - flag = - data.y > (bounds.y + bounds.height) * scaleFactor + size || - data.x <= bounds.x * scaleFactor - size || - data.x >= (bounds.x + bounds.width) * scaleFactor + size; - } - if (flag) { - if (global.menuShow != null && global.menuShow) { - return; - } - if (timer && global.setting.general.delayHidingMS > 0 && global.autoHideTimer == null) { - global.autoHideTimer = setTimeout(function () { - // 隐藏 - // mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - }, global.setting.general.delayHidingMS); - } else if (global.setting.general.delayHidingMS == 0 || !timer) { - // 隐藏 - // mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - } - } else { - clearTimeout(global.autoHideTimer); - global.autoHideTimer = null; - } - } else { - if (global.direction != "none") { - let flag = false; - let x = bounds.x * scaleFactor; - let y = bounds.y * scaleFactor; - let windowWidthPosition = (bounds.x + bounds.width) * scaleFactor; - let windowHeightPosition = (bounds.y + bounds.height) * scaleFactor; - if (global.direction == "right" && data.x >= windowWidthPosition - 1 && data.y >= y && data.y <= windowHeightPosition) { - // 右侧 - flag = true; - } else if (global.direction == "left" && data.x <= workArea.x && data.y >= y && data.y <= windowHeightPosition) { - // 左侧 - flag = true; - } else if (global.direction == "bottom" && data.y >= windowHeightPosition - 1 && data.x >= x && data.x <= windowWidthPosition) { - // 底部 - flag = true; - } else if (global.direction == "top" && data.y <= workArea.y && data.x >= x && data.x <= windowWidthPosition) { - // 顶部 - flag = true; - } - if (flag) { - if (util.notDisturb()) { - return; - } - if (timer && global.setting.general.delayDisplayMS > 0 && global.autoHideTimer == null) { - global.autoHideTimer = setTimeout(function () { - // 显示 - mainWindow.show(); - if (!global.setting.general.alwaysTop) { - global.mainWindow.setAlwaysOnTop(true, "screen-saver"); - global.mainWindow.setAlwaysOnTop(false); - } - }, global.setting.general.delayDisplayMS); - } else if (global.setting.general.delayDisplayMS == 0 || !timer) { - // 显示 - mainWindow.show(); - if (!global.setting.general.alwaysTop) { - global.mainWindow.setAlwaysOnTop(true, "screen-saver"); - global.mainWindow.setAlwaysOnTop(false); - } - } - } else { - clearTimeout(global.autoHideTimer); - global.autoHideTimer = null; - } - } - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - global.mainWindow.setBounds({ x: 1, y: 1 }); - } -} - -/** - * 显示设置窗口 - */ -function showSettingWindow() { - if (settingWindow != null && !settingWindow.isDestroyed()) { - if (!settingWindow.isVisible()) { - settingWindow.show(); - } - settingWindow.focus(); - } else { - createSettingWindow(); - } -} - -app.whenReady().then(() => { - // 禁用debugtron - for (let i = 0; i < process.argv.length; i++) { - const arg = process.argv[i]; - if (arg.indexOf("--inspect") !== -1 || arg.indexOf("--remote-debugging-port") !== -1) { - dialog.showMessageBoxSync(global.mainWindow, { - title: "Dawn Launcher", - message: "达咩呦达咩达咩~", - buttons: ["确定"], - type: "error", - noLink: true, - }); - app.quit(); - return; - } - } - // 禁止多开 - const instanceLock = app.requestSingleInstanceLock(); - if (!instanceLock) { - app.quit(); - return; - } - // 设置快捷键 - let setting = settingData.get(); - settingIndex.setShortcutKey(setting); - // 引用c++ - try { - global.api = require("bindings")({ - bindings: "api.node", - module_root: process.env.NODE_ENV !== "production" ? path.resolve(".") : path.dirname(process.execPath), - }); - } catch (e) { - dialog.showMessageBoxSync(global.mainWindow, { - title: "Dawn Launcher", - message: "缺少DLL文件,请重新下载安装包,安装后运行。", - buttons: ["确定"], - type: "error", - noLink: true, - }); - app.quit(); - return; - } - // 创建窗口 - createWindow(true); -}); - -app.on("second-instance", (event, commandLine, workingDirectory) => { - if (mainWindow) { - if (!mainWindow.isVisible()) { - mainWindow.show(); - mainWindow.focus(); - global.blurHide = true; - } else { - mainWindow.focus(); - } - } -}); - -app.on("window-all-closed", () => { - // 释放鼠标监听 - global.api.disableMouseMove(); - if (process.platform !== "darwin") { - app.quit(); - } -}); - -app.on("activate", () => { - if (BrowserWindow.getAllWindows().length === 0) { - createWindow(false).then((r) => {}); - } -}); - -if (process.env.NODE_ENV === "production") { - // 开机启动 - const exeName = path.basename(process.execPath); - ipcMain.on("setAutoLaunch", (event, args) => { - app.setLoginItemSettings({ - openAtLogin: args, - openAsHidden: false, - path: process.execPath, - args: ["--processStart", `"${exeName}"`], - }); - }); -} - -// 设置当前语言 -ipcMain.on("setCurrentLanguage", (event, args) => { - let currentLanguage = JSON.parse(args); - global.currentLanguage = currentLanguage; - // 托盘菜单 - setTray(!global.setting.general.hideTray); -}); - -/** - * 托盘 - */ -function setTray(show) { - // 获取语言 - if (show) { - if (global.tray == null) { - // 环境判断 - if (process.env.NODE_ENV !== "production") { - // 开发 - global.tray = new Tray("./public/images/logo-thick.ico"); - } else { - // 正式 - global.tray = new Tray(path.join(__dirname, "./images/logo-thick.ico")); - } - } - let contextMenu = Menu.buildFromTemplate([ - { - label: global.currentLanguage.displayMainInterface, - click: function () { - mainWindow.show(); - global.blurHide = true; - }, - }, - { - label: global.currentLanguage.setting, - click: function () { - showSettingWindow(); - }, - }, - { - // 点击退出菜单退出程序 - label: global.currentLanguage.exit, - click: function () { - mainWindow.close(); - }, - }, - ]); - // 托盘 - global.tray.setToolTip("Dawn Launcher"); - global.tray.setContextMenu(contextMenu); - // 点击托盘图标,显示主窗口 - global.tray.on("click", () => { - mainWindow.show(); - global.blurHide = true; - }); - } else { - // 隐藏托盘 - if (global.tray != null) { - if (!global.tray.isDestroyed()) { - global.tray.destroy(); - global.tray = null; - } - } - } -} - -// 创建搜索窗口 -ipcMain.on("createSearchWindow", () => { - // 搜索框 - createSearchWindow(); -}); - -// 托盘 -ipcMain.on("setTray", (event, args) => { - setTray(args); -}); - -// 开启快捷搜索 -ipcMain.on("setEnableQuickSearch", (event, args) => { - // 设置快捷键 - let setting = settingData.get(); - setting.quickSearch.enable = args; - settingIndex.setShortcutKey(setting); -}); - -// 设置背景透明度 -ipcMain.on("setBackgroundTransparency", (event, args) => { - if ((Number(args) == 1 && global.backgroundTransparency) || (Number(args) != 1 && !global.backgroundTransparency)) { - mainWindow.destroy(); - global.mainWindow = mainWindow = null; - createWindow(false); - } -}); - -// 创建设置窗口 -ipcMain.on("createSettingWindow", (event, args) => { - showSettingWindow(); -}); - -// 显示搜索窗口 -ipcMain.on("searchWindowShow", (event, args) => { - if (args != null) { - searchWindow.setBounds({ height: args }); - } - searchWindow.show(); -}); diff --git a/src/main/mouse.js b/src/main/mouse.js deleted file mode 100644 index 8c4a857..0000000 --- a/src/main/mouse.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -const { EventEmitter } = require("events"); -let paused = true; - -class MouseEvents extends EventEmitter { - constructor() { - super(); - if (require("os").platform() !== "win32") return; - let createdListener = false; - let registeredEvents = []; - this.on("newListener", (event) => { - if (registeredEvents.indexOf(event) !== -1) return; - // Enable WM_MOUSEMOVE capture if requested - if (event === "mousemove") { - global.api.enableMouseMove(); - } - if ((event === "mouseup" || event === "mousedown" || event === "mousemove" || event === "mousewheel") && !createdListener) { - // Careful: this currently "leaks" a thread every time it's called. - // We should probably get around to fixing that. - createdListener = global.api.createMouseHook((event, x, y, button, delta) => { - const payload = { x, y }; - if (event === "mousewheel") { - payload.delta = FromInt32(delta) / 120; - payload.axis = button; - } else if (event === "mousedown" || event === "mouseup") { - payload.button = button; - } - this.emit(event, payload); - }); - if (createdListener) { - this.resumeMouseEvents(); - } - } else { - return; - } - registeredEvents.push(event); - }); - this.on("removeListener", (event) => { - if (this.listenerCount(event) > 0) return; - registeredEvents = registeredEvents.filter((x) => x !== event); - if (event === "mousemove") { - global.api.disableMouseMove(); - } - }); - } - getPaused() { - return paused; - } - pauseMouseEvents() { - if (paused) return false; - paused = true; - return global.api.pauseMouseEvents(); - } - resumeMouseEvents() { - if (!paused) return false; - paused = false; - return global.api.resumeMouseEvents(); - } -} - -function FromInt32(x) { - var uint32 = x - Math.floor(x / 4294967296) * 4294967296; - if (uint32 >= 2147483648) { - return (uint32 - 4294967296) / 65536; - } else { - return uint32 / 65536; - } -} - -module.exports = new MouseEvents(); diff --git a/src/main/setting/data.js b/src/main/setting/data.js deleted file mode 100644 index 2ee89b3..0000000 --- a/src/main/setting/data.js +++ /dev/null @@ -1,516 +0,0 @@ -const Store = require("electron-store"); -const settingStore = new Store({ name: "setting", encryptionKey: "732b6562-c2dd-56c7-8fe9-ef3ed6646128", clearInvalidConfig: true }); -const store = new Store({ name: "data", encryptionKey: "0b52eb58-4c0f-5ff1-b062-031546a8d269", clearInvalidConfig: true }); - -module.exports = { - initData() { - let setting = store.get("setting"); - if (setting == null) { - let ss = settingStore.get("setting"); - if (ss == null) { - setting = { - general: { - // 开机启动 - startup: false, - // 启动后最小化到系统托盘 - startupTray: false, - // 显示/隐藏快捷键 - showHideShortcutKey: null, - // 语言 - language: "chinese", - // 永远置顶 - alwaysTop: false, - // 停靠在桌面边缘时自动隐藏 - edgeAutoHide: true, - // 锁定尺寸 - lockSize: false, - // 失去焦点后隐藏 - hideLosingFocus: false, - // 隐藏托盘图标 - hideTray: false, - // 中间单击 - showHideMouseWheelClick: false, - // 固定位置 - fixedPosition: false, - // 永远居中 - alwaysCenter: false, - // 显示时跟随鼠标位置 - showFollowMousePosition: false, - // 隐藏任务栏 - hideTaskbar: false, - // 勿扰模式 - notDisturb: false, - // 双击任务栏 - doubleClickTaskbar: false, - // 延迟显示(毫秒) - delayDisplayMS: 0, - // 延迟隐藏(毫秒) - delayHidingMS: 0, - // 显示窗口时将输入法切换为英文模式 - switchEnglish: false, - }, - appearance: { - // 主题 - theme: { - name: "#FFFFFF", - fontBasic: "#505050", - fontHover: "#FFFFFF", - mainBackground: "#FFFFFF", - minorBackground: "#999999", - border: "#F0F0F0", - }, - // 窗口透明度 - transparency: 1, - // 背景透明度 - backgroundTransparency: 1, - // 使用字体阴影 - useFontShadow: false, - // 文字阴影 - fontShadow: "#000000", - // 背景图 - backgroundImage: null, - // 背景图模式 - backgroundImageMode: "repeat", - // 背景图定位 - backgroundImagePosition: "default", - // 背景图透明度 - backgroundImageTransparency: 1, - // 窗口圆角 - windowRoundedCorners: false, - // 标题 - title: "Dawn Launcher", - }, - classification: { - // 宽度 - width: 140, - // 布局 - layout: "left", - // 鼠标悬停切换 - mouseHover: false, - // 悬停毫秒 - mouseHoverMS: 1000, - // 滚轮切换 - mouseWheel: false, - // 记住选择状态 - rememberSelectionState: false, - // 名称对齐 - nameAlign: "left", - // 模式 - mode: "normal", - // 项目列表滚动到底部或顶部时自动切换分类 - autoSwitchClassification: false, - // 隐藏窗口时折叠子分类 - hideWindowFoldChildClassification: false, - // 切换分类时收起其他子分类 - switchClassificationCollapseOtherSubClassification: false, - }, - item: { - // 布局 - layout: "tile", - // 图标大小 - iconSize: 40, - // 搜索快捷键 - searchShortcutKey: "TAB", - // 双击运行项目 - doubleClickRunItem: false, - // 打开后隐藏主界面 - openAfterHideMainInterface: false, - // 从程序外拖动文件到项目图标上时用此项目打开文件 - useItemOpen: false, - // 记录打开次数 - openNumber: false, - // 隐藏项目名称 - hideItemName: false, - // 隐藏省略号 - hideEllipsis: false, - // 项目名称行数 - itemNameRowCount: 2, - // 宽度 - width: 100, - // 列数 单列多列 - columnNumber: 1, - // 检测无效项目 - checkInvalidItem: true, - // 字体大小 - fontSize: 14, - // 字体粗细 - fontWeight: 400, - // 字体行高 - fontLineHeight: 1.25, - }, - quickSearch: { - // 开启 - enable: true, - // 快捷键 - showHideShortcutKey: "Alt + Enter", - // 打开快捷键 - openShortcutKey: "none", - // 失去焦点后隐藏 - hideLosingFocus: false, - // 仅剩一项时立即打开 - openNow: false, - // 显示历史记录 - showHistory: false, - // 历史记录排序 - showHistorySort: "lastOpen", - // 从程序外拖动文件到项目图标上时用此项目打开文件 - useItemOpen: false, - // 打开后隐藏快速搜索窗口 - openAfterHideQuickSearchWindow: true, - // 匹配条件 - matchingConditionsRemark: false, - }, - webSearch: { - // 模式 - mode: 0, - // 搜索源 - searchSourceList: [ - { - id: 1, - keyword: "g", - name: "Google", - URL: "https://www.google.com/search?q={w}", - }, - { - id: 2, - keyword: "b", - name: "Baidu", - URL: "https://www.baidu.com/s?wd={w}", - }, - { - id: 3, - keyword: "bing", - name: "Bing", - URL: "https://cn.bing.com/search?q={w}", - }, - { - id: 4, - keyword: "so", - name: "360", - URL: "https://www.so.com/s?q={w}", - }, - { - id: 5, - keyword: "sogou", - name: "Sogou", - URL: "https://www.sogou.com/web?query={w}", - }, - ], - }, - network: { - // 使用代理 - useProxy: false, - // 代理信息 - proxy: { - // address - address: null, - // 用户名 - username: null, - // 密码 - password: null, - }, - }, - // 子分类 - subClassification: { - // 名称字体(项目区域) - itemAreaNameFontSize: 14, - // 名称粗细(项目区域) - itemAreaNameFontWeight: 700, - // 名称字体行高(项目区域) - itemAreaNameFontLineHeight: 1.25, - }, - }; - } else { - setting = ss; - } - } - if (setting.general.language == null) { - setting.general.language = "chinese"; - } - if (setting.general.alwaysTop == null) { - setting.general.alwaysTop = false; - } - if (setting.general.fixedPosition == null) { - setting.general.fixedPosition = false; - } - if (setting.general.alwaysCenter == null) { - setting.general.alwaysCenter = false; - } - if (setting.general.showFollowMousePosition == null) { - setting.general.showFollowMousePosition = false; - } - if (setting.general.edgeAutoHide == null) { - setting.general.edgeAutoHide = true; - } - if (setting.general.startupTray == null) { - setting.general.startupTray = false; - } - if (setting.general.lockSize == null) { - setting.general.lockSize = false; - } - if (setting.general.hideLosingFocus == null) { - setting.general.hideLosingFocus = false; - } - if (setting.general.hideTray == null) { - setting.general.hideTray = false; - } - if (setting.general.showHideMouseWheelClick == null) { - setting.general.showHideMouseWheelClick = false; - } - if (setting.general.hideTaskbar == null) { - setting.general.hideTaskbar = false; - } - if (setting.general.notDisturb == null) { - setting.general.notDisturb = false; - } - if (setting.general.doubleClickTaskbar == null) { - setting.general.doubleClickTaskbar = false; - } - if (setting.general.delayDisplayMS == null) { - setting.general.delayDisplayMS = 0; - } - if (setting.general.delayHidingMS == null) { - setting.general.delayHidingMS = 0; - } - if (setting.general.switchEnglish == null) { - setting.general.switchEnglish = false; - } - if (setting.item.layout == null) { - setting.item.layout = "tile"; - } - if (setting.item.iconSize == null) { - setting.item.iconSize = 40; - } - if (setting.item.openAfterHideMainInterface == null) { - setting.item.openAfterHideMainInterface = false; - } - if (setting.item.useItemOpen == null) { - setting.item.useItemOpen = false; - } - if (setting.item.openNumber == null) { - setting.item.openNumber = false; - } - if (setting.item.hideItemName == null) { - setting.item.hideItemName = false; - } - if (setting.item.hideEllipsis == null) { - setting.item.hideEllipsis = false; - } - if (setting.item.itemNameRowCount == null) { - setting.item.itemNameRowCount = 2; - } - if (setting.item.width == null) { - setting.item.width = 100; - } - if (setting.item.columnNumber == null) { - setting.item.columnNumber = 1; - } else if (setting.item.columnNumber != null && setting.item.columnNumber == "single") { - setting.item.columnNumber = 1; - } else if (setting.item.columnNumber != null && setting.item.columnNumber == "multiple") { - setting.item.columnNumber = 2; - } - if (setting.item.checkInvalidItem == null) { - setting.item.checkInvalidItem = true; - } - if (setting.item.fontSize == null) { - setting.item.fontSize = 14; - } - if (setting.item.fontWeight == null) { - setting.item.fontWeight = 400; - } - if (setting.item.fontLineHeight == null) { - setting.item.fontLineHeight = 1.25; - } - if (setting.classification == null) { - setting.classification = {}; - } - if (setting.classification.width == null) { - setting.classification.width = 140; - } - if (setting.classification.layout == null) { - setting.classification.layout = "left"; - } - if (setting.classification.mouseHover == null) { - setting.classification.mouseHover = false; - } - if (setting.classification.mouseHoverMS == null) { - setting.classification.mouseHoverMS = 1000; - } - if (setting.classification.mouseWheel == null) { - setting.classification.mouseWheel = false; - } - if (setting.classification.rememberSelectionState == null) { - setting.classification.rememberSelectionState = false; - } - if (setting.classification.nameAlign == null) { - setting.classification.nameAlign = "left"; - } - if (setting.classification.mode == null) { - setting.classification.mode = "normal"; - } - if (setting.classification.autoSwitchClassification == null) { - setting.classification.autoSwitchClassification = false; - } - if (setting.classification.hideWindowFoldChildClassification == null) { - setting.classification.hideWindowFoldChildClassification = false; - } - if (setting.classification.switchClassificationCollapseOtherSubClassification == null) { - setting.classification.switchClassificationCollapseOtherSubClassification = false; - } - if (setting.appearance.theme.name.toUpperCase() == "#FFFFFF") { - setting.appearance.theme = { - name: "#FFFFFF", - fontBasic: "#505050", - fontHover: "#FFFFFF", - mainBackground: "#FFFFFF", - minorBackground: "#999999", - border: "#F0F0F0", - }; - } - if (setting.appearance.theme.name.toUpperCase() == "#2B2B2B") { - setting.appearance.theme = { - name: "#2B2B2B", - fontBasic: "#BBBBBB", - fontHover: "#BBBBBB", - mainBackground: "#2B2B2B", - minorBackground: "#3C3F41", - border: "#3C3F41", - }; - } - if (setting.appearance.transparency == null) { - setting.appearance.transparency = 1; - } - if (setting.appearance.backgroundTransparency == null) { - setting.appearance.backgroundTransparency = 1; - } - if (setting.appearance.useFontShadow == null) { - setting.appearance.useFontShadow = false; - } - if (setting.appearance.fontShadow == null) { - setting.appearance.fontShadow = "#000000"; - } - if (setting.appearance.backgroundImageMode == null) { - setting.appearance.backgroundImageMode = "repeat"; - } - if (setting.appearance.backgroundImagePosition == null) { - setting.appearance.backgroundImagePosition = "default"; - } - if (setting.appearance.backgroundImageTransparency == null) { - setting.appearance.backgroundImageTransparency = 1; - } - if (setting.appearance.windowRoundedCorners == null) { - setting.appearance.windowRoundedCorners = false; - } - if (setting.appearance.title == null) { - setting.appearance.title = "Dawn Launcher"; - } - if (setting.quickSearch == null) { - setting.quickSearch = {}; - } - if (setting.quickSearch.enable == null) { - setting.quickSearch.enable = true; - } - if (setting.quickSearch.showHideShortcutKey == null) { - setting.quickSearch.showHideShortcutKey = "Alt + Enter"; - } - if (setting.quickSearch.openShortcutKey == null) { - setting.quickSearch.openShortcutKey = "none"; - } - if (setting.quickSearch.hideLosingFocus == null) { - setting.quickSearch.hideLosingFocus = false; - } - if (setting.quickSearch.openNow == null) { - setting.quickSearch.openNow = false; - } - if (setting.quickSearch.showHistory == null) { - setting.quickSearch.showHistory = false; - } - if (setting.quickSearch.showHistorySort == null) { - setting.quickSearch.showHistorySort = "lastOpen"; - } - if (setting.quickSearch.useItemOpen == null) { - setting.quickSearch.useItemOpen = false; - } - if (setting.quickSearch.openAfterHideQuickSearchWindow == null) { - setting.quickSearch.openAfterHideQuickSearchWindow = true; - } - if (setting.quickSearch.matchingConditionsRemark == null) { - setting.quickSearch.matchingConditionsRemark = false; - } - if (setting.webSearch == null) { - setting.webSearch = {}; - } - if (setting.webSearch.mode == null) { - setting.webSearch.mode = 0; - } - if (setting.webSearch.searchSourceList == null || setting.webSearch.searchSourceList.length == 0) { - setting.webSearch.searchSourceList = [ - { - id: 1, - keyword: "g", - name: "Google", - URL: "https://www.google.com/search?q={w}", - }, - { - id: 2, - keyword: "b", - name: "Baidu", - URL: "https://www.baidu.com/s?wd={w}", - }, - { - id: 3, - keyword: "bing", - name: "Bing", - URL: "https://cn.bing.com/search?q={w}", - }, - { - id: 4, - keyword: "so", - name: "360", - URL: "https://www.so.com/s?q={w}", - }, - { - id: 5, - keyword: "sogou", - name: "Sogou", - URL: "https://www.sogou.com/web?query={w}", - }, - ]; - } - if (setting.network == null) { - setting.network = {}; - } - if (setting.network.useProxy == null) { - setting.network.useProxy = false; - } - if (setting.subClassification == null) { - setting.subClassification = {}; - } - if (setting.subClassification.itemAreaNameFontSize == null) { - setting.subClassification.itemAreaNameFontSize = 14; - } - if (setting.subClassification.itemAreaNameFontWeight == null) { - setting.subClassification.itemAreaNameFontWeight = 700; - } - if (setting.subClassification.itemAreaNameFontLineHeight == null) { - setting.subClassification.itemAreaNameFontLineHeight = 1.25; - } - this.set(setting); - global.setting = setting; - }, - /** - * get - */ - get() { - this.initData(); - return store.get("setting"); - }, - /** - * set - * @param setting - */ - set(setting) { - store.set("setting", setting); - global.setting = setting; - }, -}; diff --git a/src/main/setting/index.js b/src/main/setting/index.js deleted file mode 100644 index 9d9cbde..0000000 --- a/src/main/setting/index.js +++ /dev/null @@ -1,149 +0,0 @@ -import { globalShortcut } from "electron"; -import path from "path"; -import util from "../util"; -import itemJS from "../item/index"; -import ClassificationJS from "../classification/index"; - -/** - * 设置快捷键 - * @param setting - */ -function setShortcutKey(setting) { - // 取消所有快捷键 - globalShortcut.unregisterAll(); - if (setting != null) { - // 设置快捷键 - if (setting.general != null) { - if (!util.strIsEmpty(setting.general.showHideShortcutKey)) { - globalShortcut.register(setting.general.showHideShortcutKey, () => { - if (util.notDisturb()) { - return; - } - if (global.mainWindow.isVisible()) { - // global.mainWindow.hide(); - global.mainWindow.webContents.send("hideMainWindowBefore"); - } else { - util.showFollowMousePosition(); - global.mainWindow.show(); - global.mainWindow.focus(); - global.blurHide = true; - } - }); - } - } - if (setting.quickSearch != null) { - if (setting.quickSearch.enable && !util.strIsEmpty(setting.quickSearch.showHideShortcutKey)) { - globalShortcut.register(setting.quickSearch.showHideShortcutKey, () => { - if (util.notDisturb()) { - return; - } - if (global.searchWindow != null && global.searchWindowShow) { - if (global.searchWindow.isVisible()) { - global.searchWindow.webContents.send("hideSearchWindowBefore"); - } else { - let params = { - setting: global.setting, - list: global.list, - }; - global.searchWindow.webContents.send("showSearchWindowOperation", JSON.stringify(params)); - } - } - }); - } - } - // 扫描有没有全局快捷键分类、项目 - if (!util.arrayIsEmpty(global.list)) { - let itemList = []; - let classificationList = []; - for (let c of global.list) { - if (c.globalShortcutKey && !util.strIsEmpty(c.shortcutKey)) { - classificationList.push(c); - } - if (!util.arrayIsEmpty(c.childList)) { - for (let cc of c.childList) { - if (cc.globalShortcutKey && !util.strIsEmpty(cc.shortcutKey)) { - classificationList.push(cc); - } - if (!util.arrayIsEmpty(cc.itemList)) { - for (let item of cc.itemList) { - if (item.globalShortcutKey && !util.strIsEmpty(item.shortcutKey)) { - itemList.push(item); - } - } - } - } - } else { - if (!util.arrayIsEmpty(c.itemList)) { - for (let item of c.itemList) { - if (item.globalShortcutKey && !util.strIsEmpty(item.shortcutKey)) { - itemList.push(item); - } - } - } - } - } - // 设置快捷键 - for (let item of itemList) { - globalShortcut.register(item.shortcutKey, () => { - if (util.notDisturb()) { - return; - } - if (item.type == 4) { - if (!util.arrayIsEmpty(item.itemList)) { - for (let iItem of item.itemList) { - itemJS.itemRun(iItem, null, null); - } - } - } else { - itemJS.itemRun(item, null, null); - } - }); - } - for (let classification of classificationList) { - globalShortcut.register(classification.shortcutKey, () => { - if (util.notDisturb()) { - return; - } - if (global.mainWindow != null && !global.mainWindow.isDestroyed()) { - if (!global.mainWindow.isVisible()) { - global.mainWindow.show(); - global.mainWindow.focus(); - global.blurHide = true; - if (!global.setting.general.alwaysTop) { - global.mainWindow.setAlwaysOnTop(true, "screen-saver"); - global.mainWindow.setAlwaysOnTop(false); - } - } - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId(classification.id, classification.parentId); - let params = { - classificationParentId: classificationParentId, - classificationChildId: classificationChildId, - }; - global.mainWindow.webContents.send("changeClassification", JSON.stringify(params)); - } - }); - } - } - } -} - -/** - * 获取数据目录配置文件地址 - * @returns {string} - */ -function getDawnLauncherProfilePath() { - let p; - if (process.env.NODE_ENV !== "production") { - p = path.resolve("."); - } else { - p = path.dirname(process.execPath); - } - p = path.resolve(p, ".."); - p = path.join(p, ".dawn_launcher_profile"); - return p; -} - -export default { - setShortcutKey, - getDawnLauncherProfilePath, -}; diff --git a/src/main/setting/ipcEvent.js b/src/main/setting/ipcEvent.js deleted file mode 100644 index ba3348e..0000000 --- a/src/main/setting/ipcEvent.js +++ /dev/null @@ -1,162 +0,0 @@ -import { app, dialog, ipcMain } from "electron"; -import data from "./data"; -import index from "./index"; -import util from "../util"; -import fs from "fs"; -import path from "path"; - -/** - * 判断路径是否一样 - * @param currentAppDataPath - * @param profileAppDataPath - */ -function pathIsEqual(currentAppDataPath, profileAppDataPath) { - let c = path.normalize(currentAppDataPath); - let p = path.normalize(profileAppDataPath); - return c == p; -} - -export default function () { - // 获取数据 - ipcMain.on("getSetting", (event, args) => { - event.returnValue = data.get(); - }); - // set数据 - ipcMain.on("setSetting", (event, args) => { - let params = JSON.parse(args); - // 保存数据 - data.set(params.setting); - // 需要通知 - if (params.other.main) { - if (global.mainWindow != null) { - global.mainWindow.webContents.send("mainWindowGetData"); - } - } - if (params.other.search) { - if (global.searchWindow != null && !global.searchWindow.isDestroyed() && global.searchWindow.isVisible()) { - global.searchWindow.webContents.send("searchWindowGetData"); - global.searchWindow.setBackgroundColor(global.setting.appearance.theme.mainBackground.replace("bg-[", "").replace("]", "")); - } - } - if (params.other.setting) { - if (global.settingWindow != null && !global.settingWindow.isDestroyed() && global.settingWindow.isVisible()) { - global.settingWindow.webContents.send("settingWindowGetData"); - } - } - }); - // 设置快捷键 - ipcMain.on("setShortcutKey", (event, args) => { - let setting = JSON.parse(args); - index.setShortcutKey(setting); - }); - // 设置启动后最小化到系统托盘 - ipcMain.on("setStartupTray", (event, args) => { - if (args) { - util.edgeAdsorb(); - } - }); - // 获取数据目录 - ipcMain.on("getAppDataPath", (event, args) => { - try { - // 获取数据目录配置文件地址 - let p = index.getDawnLauncherProfilePath(); - // 读取文件 - let r = fs.readFileSync(p); - event.returnValue = r.toString(); - } catch (e) { - event.returnValue = app.getPath("appData"); - } - }); - // 选择用户数据目录 - ipcMain.on("chooseDataDirectory", (event, args) => { - dialog.showOpenDialog(global.settingWindow, { properties: ["openDirectory"] }).then((r) => { - if (r.filePaths.length > 0) { - event.returnValue = r.filePaths[0]; - } else { - event.returnValue = null; - } - }); - }); - // 提示切换数据目录 - ipcMain.on("promptChangeDataDirectory", (event, args) => { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.modifyDataDirectoryMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "question", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - // 获取数据目录配置文件地址 - let p = index.getDawnLauncherProfilePath(); - if (util.strIsEmpty(args)) { - try { - let profile = fs.readFileSync(p); - // 路径不一样的话,开始移动和删除文件 - if (!pathIsEqual(global.defaultAppDataPath, profile.toString())) { - try { - // 删除默认路径下的文件 - fs.rmdirSync(global.defaultAppDataPath + "\\Dawn Launcher"); - } catch (e) {} - try { - // 将现在文件夹的内容移动到默认路径下 - fs.cpSync(profile.toString() + "\\Dawn Launcher", global.defaultAppDataPath + "\\Dawn Launcher", { recursive: true }); - } catch (e) {} - } - // 删除配置数据目录文件 - try { - fs.rmSync(p); - } catch (e) {} - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } - } else { - try { - // 写入内容 - fs.writeFileSync(p, args); - try { - // 删除写入内容文件夹 - fs.rmdirSync(args + "\\Dawn Launcher"); - } catch (e) {} - try { - // 将现有文件夹内容移动到写入文件夹内容 - fs.cpSync(app.getPath("appData") + "\\Dawn Launcher", args + "\\Dawn Launcher", { recursive: true }); - } catch (e) {} - } catch (e) {} - } - app.relaunch(); - app.exit(); - } - }); - }); - // 拷贝背景图 - ipcMain.on("copyBackgroundImage", (event, args) => { - let parsedPath = path.parse(args); - let destPath = app.getPath("userData") + "\\images"; - let name = "backgroundImage" + parsedPath.ext; - try { - fs.statSync(destPath); - } catch (e) { - fs.mkdirSync(destPath); - } - try { - fs.copyFileSync(args, destPath + "\\" + name); - event.returnValue = name; - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - event.returnValue = null; - } - }); - // 关闭设置窗口 - ipcMain.on("closeSettingWindow", (event, args) => { - if (global.settingWindow != null && !global.settingWindow.isDestroyed()) { - global.settingWindow.close(); - } - }); -} diff --git a/src/main/util.js b/src/main/util.js deleted file mode 100644 index 3fd8754..0000000 --- a/src/main/util.js +++ /dev/null @@ -1,297 +0,0 @@ -import { screen, nativeImage, nativeTheme, app, dialog, shell } from "electron"; -import request from "request"; -import retry from "retry"; -import cacheData from "./cache/data"; - -/** - * 边缘吸附 - */ -function edgeAdsorb(display) { - if (global.mainWindow.isDestroyed()) { - return; - } - try { - global.direction = "none"; - let displays = display != null ? [display] : this.getWindowInScreen(); - if (displays.length > 1 || displays.length == 0) { - return; - } - let workArea = displays[0].workArea; - let bounds = global.mainWindow.getBounds(); - if (bounds.x + bounds.width >= workArea.x + workArea.width) { - // 右侧 - global.mainWindow.setBounds({ x: workArea.x + workArea.width - bounds.width }); - global.direction = "right"; - global.blurHide = null; - } else if (bounds.x <= workArea.x) { - // 左侧 - global.mainWindow.setBounds({ x: workArea.x }); - global.direction = "left"; - global.blurHide = null; - } - if (bounds.y + bounds.height >= workArea.y + workArea.height) { - // 底部 - global.mainWindow.setBounds({ y: workArea.y + workArea.height - bounds.height }); - global.direction = "bottom"; - global.blurHide = null; - } else if (bounds.y <= workArea.y) { - // 顶部 - global.mainWindow.setBounds({ y: workArea.y }); - global.direction = "top"; - global.blurHide = null; - } - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - global.mainWindow.setBounds({ x: 1, y: 1 }); - } -} - -/** - * 获取图标点 - * @returns {Electron.NativeImage} - */ -function getDot() { - return nativeImage.createFromDataURL( - !nativeTheme.shouldUseDarkColors - ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERJREFUOE9jZKAQMFKon2HUAAa8YWDDwMBQCQ3kdgYGhiPYAhxfIG5lYGDwgmraxsDA4E13Ayj2AlFpbDQh4U9IRAUiAEXYCBFBtkaAAAAAAElFTkSuQmCC" - : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAEtJREFUOE9jZKAQMFKon2HUAAbcYfD//38bBgaGSmggtzMyMh7BFuA4A/H///9bGRgYvKCatjEyMnrT3QDKvEBsAhtNSHgSErGBCAD0gBQREV/HsgAAAABJRU5ErkJggg==" - ); -} - -/** - * 显示时跟随鼠标位置 - */ -function showFollowMousePosition() { - if (!global.setting.general.alwaysCenter && !global.setting.general.fixedPosition && global.setting.general.showFollowMousePosition) { - // 获取鼠标位置 - let point = screen.getCursorScreenPoint(); - // 获取窗口大小 - let bounds = global.mainWindow.getBounds(); - let x = Math.round(bounds.width / 2); - let y = Math.round(bounds.height / 2); - global.mainWindow.setPosition(point.x - x, point.y - y) - for (let i = 0; i < 10; i++) { - global.mainWindow.setSize(bounds.width, bounds.height) - } - // 获取当前鼠标所在屏幕 - let display = screen.getDisplayNearestPoint(point); - // 边缘吸附 - edgeAdsorb(display); - } -} - -/** - * 获取窗口所在的屏幕 - */ -function getWindowInScreen() { - let inDisplays = []; - let displays = screen.getAllDisplays(); - let bounds = global.mainWindow.getBounds(); - for (let display of displays) { - let workArea = display.workArea; - if ( - ((workArea.x <= bounds.x && workArea.x + workArea.width >= bounds.x) || - (workArea.x <= bounds.x + bounds.width && workArea.x + workArea.width >= bounds.x + bounds.width)) && - ((workArea.y <= bounds.y && workArea.y + workArea.height >= bounds.y) || - (workArea.y <= bounds.y + bounds.height && workArea.y + workArea.height >= bounds.y + bounds.height)) - ) { - inDisplays.push(display); - } - } - return inDisplays; -} - -/** - * 去掉后缀 - * @param name - */ -function removeSuffix(name) { - if (name != null && name.trim() != "") { - let arr = name.split("."); - if (arr.length > 1) { - let n = name.substring(0, name.lastIndexOf(".")); - if (n.trim() != "") { - name = n; - } - } - } - return name; -} - -/** - * 获取后缀 - * @param name - */ -function getSuffix(name) { - let suffix = ""; - if (name != null && name.trim() != "") { - let arr = name.split("."); - if (arr.length > 1) { - suffix = name.substring(name.lastIndexOf(".") + 1); - } - } - return suffix.toLowerCase(); -} - -/** - * 勿扰模式 - */ -function notDisturb() { - return global.setting.general.notDisturb && global.api.IsFullscreen(); -} - -/** - * 检查更新 - */ -function checkUpdate(type) { - try { - // 重试 - const operation = retry.operation({ - retries: 5, // 最多重试 5 次 - factor: 1, // 每次重试之间的时间间隔加倍 - minTimeout: 1000, // 第一次重试之前等待的时间 - maxTimeout: 5000, // 最长等待时间 - }); - // 发起请求 - operation.attempt((currentAttempt) => { - request( - { - uri: "https://dawnlauncher.com/version.json", - timeout: 5000, - }, - function (error, response, body) { - if (operation.retry(error)) { - return; - } - if (!error && response.statusCode == 200) { - let buffer = Buffer.from(body); - let json = JSON.parse(buffer.toString()); - if (json.version != app.getVersion()) { - if (type == "init") { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.checkForUpdatesNewVersionMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel, global.currentLanguage.notPrompt], - type: "info", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - shell.openExternal("https://dawnlauncher.com/"); - } else if (r.response == 2) { - cacheData.cacheStore.set("checkUpdate", false); - } - }); - } else { - dialog - .showMessageBox(global.mainWindow, { - message: global.currentLanguage.checkForUpdatesNewVersionMessage, - buttons: [global.currentLanguage.ok, global.currentLanguage.cancel], - type: "info", - noLink: true, - cancelId: 1, - }) - .then((r) => { - if (r.response == 0) { - shell.openExternal("https://dawnlauncher.com/"); - } - }); - } - } else { - if (type == "checkUpdate") { - dialog.showMessageBox(global.mainWindow, { - message: global.currentLanguage.checkForUpdatesLatestVersionMessage, - buttons: [global.currentLanguage.ok], - type: "info", - noLink: true, - }); - } - } - } else { - if (type == "checkUpdate") { - dialog.showMessageBox(global.mainWindow, { - message: global.currentLanguage.checkForUpdatesFailedMessage, - buttons: [global.currentLanguage.ok], - type: "error", - noLink: true, - }); - } - } - } - ); - }); - } catch (e) { - if (process.env.NODE_ENV !== "production") { - console.log(e); - } - } -} - -/** - * 判断数组是否等于空 - * @param arr - */ -function arrayIsEmpty(arr) { - if (arr == null || arr.length == 0) { - return true; - } - return false; -} - -/** - * 判断字符串是否为空 - * @param str - */ -function strIsEmpty(str) { - if (str == null || str.trim() == "") { - return true; - } - return false; -} - -/** - * 菜单监听 - * @param menu - */ -function menuListen(menu) { - menu.on("menu-will-show", () => { - global.menuShow = true; - }); - menu.on("menu-will-close", () => { - global.menuShow = false; - }); -} - -/** - * 获取Key - * @param classificationParentId - * @param classificationChildId - * @param itemId - * @returns {*} - */ -function getKey(classificationParentId, classificationChildId, itemId) { - let key = classificationParentId; - if (classificationChildId != null) { - key += "-" + classificationChildId; - } - key += "-" + itemId; - return key; -} - -export default { - edgeAdsorb, - getDot, - showFollowMousePosition, - getWindowInScreen, - removeSuffix, - notDisturb, - checkUpdate, - getSuffix, - arrayIsEmpty, - strIsEmpty, - menuListen, - getKey, -}; diff --git a/src/pages/about/Index.vue b/src/pages/about/Index.vue new file mode 100644 index 0000000..68b40d2 --- /dev/null +++ b/src/pages/about/Index.vue @@ -0,0 +1,85 @@ + + diff --git a/src/pages/classification/AddEdit.vue b/src/pages/classification/AddEdit.vue new file mode 100644 index 0000000..9a7728b --- /dev/null +++ b/src/pages/classification/AddEdit.vue @@ -0,0 +1,216 @@ + + +../../../types/classification diff --git a/src/pages/classification/Aggregate.vue b/src/pages/classification/Aggregate.vue new file mode 100644 index 0000000..3375c38 --- /dev/null +++ b/src/pages/classification/Aggregate.vue @@ -0,0 +1,213 @@ + + +./js/classification ../../../types/classification diff --git a/src/pages/classification/AssociateFolder.vue b/src/pages/classification/AssociateFolder.vue new file mode 100644 index 0000000..5132256 --- /dev/null +++ b/src/pages/classification/AssociateFolder.vue @@ -0,0 +1,224 @@ + + +./js/classification ../../../types/classification diff --git a/src/pages/classification/SetIcon.vue b/src/pages/classification/SetIcon.vue new file mode 100644 index 0000000..08cc311 --- /dev/null +++ b/src/pages/classification/SetIcon.vue @@ -0,0 +1,12354 @@ + + diff --git a/src/pages/classification/components/Content.vue b/src/pages/classification/components/Content.vue new file mode 100644 index 0000000..a6ec13c --- /dev/null +++ b/src/pages/classification/components/Content.vue @@ -0,0 +1,1403 @@ + + +../../../../types/classification diff --git a/src/pages/classification/js/index.ts b/src/pages/classification/js/index.ts new file mode 100644 index 0000000..0361ce2 --- /dev/null +++ b/src/pages/classification/js/index.ts @@ -0,0 +1,381 @@ +import { Classification } from "../../../../types/classification"; +import { useMainStore } from "../../../store"; +import { + deleteItemByClassificationId, + moveItemByClassificationId, +} from "../../item/js"; + +// pinia +const store = useMainStore(); + +/** + * 转换分类列表 + */ +function convertClassificationList( + classificationList: Array +): Array { + // 获取父级 + let parentList = classificationList.filter((c) => !c.parentId); + // 获取子级 + let childList = classificationList.filter((c) => c.parentId); + // 关联父子级 + for (let parent of parentList) { + for (const child of childList) { + if (parent.id === child.parentId) { + if (!parent.childList) { + parent.childList = []; + } + parent.childList.push(child); + } + } + } + return parentList; +} + +/** + * 根据ID查询分类 + */ +function getClassificationById(id: number): Classification | null { + for (let classification of store.classificationList) { + if (classification.id === id) { + return classification; + } else { + if (classification.childList) { + for (let childClassification of classification.childList) { + if (childClassification.id === id) { + return childClassification; + } + } + } + } + } + return null; +} + +/** + * 添加分类 + */ +function addClassification(classification: Classification) { + // 判断是否是子级分类 + if (!classification.parentId) { + // 父级 添加 + store.classificationList.push(classification); + } else { + // 子级 + // 寻找父级分类 + let parentClassification = getClassificationById(classification.parentId); + if (parentClassification) { + if (!parentClassification.childList) { + parentClassification.childList = []; + } + // 添加 + parentClassification.childList.push(classification); + // 将父级项目移动到子级 + moveItemByClassificationId(classification.parentId, classification.id); + } + } +} + +/** + * 更新分类 + * @param classification + */ +function updateClassification(classification: Classification) { + // 查询分类 + let curClassification = getClassificationById(classification.id); + // 更新字段 + if (curClassification) { + curClassification.name = classification.name; + curClassification.type = classification.type; + curClassification.data = classification.data; + curClassification.shortcutKey = classification.shortcutKey; + curClassification.globalShortcutKey = classification.globalShortcutKey; + } +} + +/** + * 删除分类 + * @param id + */ +function deleteClassification(id: number) { + // func + const del = (list: Array, id: number) => { + // index + let index: number | null = null; + // 当前分类 + let classification: Classification | null = null; + // 寻找需要删除的分类下标 + for (let i = 0; i < list.length; i++) { + if (list[i].id === id) { + // 下标 + index = i; + classification = list[i]; + break; + } + } + if (index !== null && classification) { + // 删除 + list.splice(index, 1); + // 删除项目 + deleteItemByClassificationId(id); + // 如果有子分类,删除子分类下所有项目 + if (classification.childList && classification.childList.length > 0) { + for (const child of classification.childList) { + deleteItemByClassificationId(child.id); + } + } + // 更新分类序号 + for (let i = 0; i < list.length; i++) { + list[i].order = i + 1; + } + } + }; + // 查询分类 + let classification = getClassificationById(id); + if (classification) { + // 是否有父级,如果有父级就先寻找父级,在父级列表中删除当前子分类 + if (classification.parentId) { + let parentClassification = getClassificationById(classification.parentId); + if ( + parentClassification && + parentClassification.childList && + parentClassification.childList.length > 0 + ) { + del(parentClassification.childList, id); + } + } else { + del(store.classificationList, id); + } + } +} + +/** + * 判断分类是否有子分类 + * @param id + * @returns + */ +function hasChildClassification(id: number | null): boolean { + if (id) { + let classification = getClassificationById(id); + if ( + classification && + classification.childList && + classification.childList.length > 0 + ) { + return true; + } + } + return false; +} + +/** + * 查询子分类列表 + * @param id + * @returns + */ +function getClassificationChildList(id: number | null): Array { + if (id) { + let classification = getClassificationById(id); + if ( + classification && + classification.childList && + classification.childList.length > 0 + ) { + return classification.childList; + } + } + return []; +} + +/** + * 分类排序 + * @param fromId + * @param toId + * @param parentId + */ +function updateClassificationOrder( + fromId: number, + toId: number | null, + parentId: number | null +) { + // update + const update = ( + list: Array, + id: number, + newOrder: number, + oldOrder: number + ) => { + // 当前分类 + let currentClassification = getClassificationById(id); + if (currentClassification) { + // 更新序号 + currentClassification.order = newOrder; + // 判断新序号和老序号之间的数据是+1还是-1 + for (let classification of list) { + if (newOrder > oldOrder) { + if ( + classification.order > oldOrder && + classification.order <= newOrder && + classification.id !== id + ) { + classification.order = classification.order - 1; + } + } else { + if ( + classification.order >= newOrder && + classification.order < oldOrder && + classification.id !== id + ) { + classification.order = classification.order + 1; + } + } + } + // 重新排序 + list.sort((a, b) => a.order - b.order); + } + }; + // 查询来源分类 + let fromClassification = getClassificationById(fromId); + if (fromClassification) { + // 新序号 + let newOrder: number | null = null; + // 如果目标ID不为空获取项目并获取序号 + if (toId) { + let toClassificationId = getClassificationById(toId); + if (toClassificationId) { + newOrder = toClassificationId.order; + } + } + if (!newOrder) { + // 查询最大序号 + let classificationList = parentId + ? getClassificationChildList(parentId) + : store.classificationList; + if (classificationList.length === 0) { + newOrder = 1; + } else { + newOrder = classificationList[classificationList.length - 1].order + 1; + } + } + // 父级分类ID不为空先查询父级分类 + if (parentId) { + let parentClassification = getClassificationById(parentId); + if (parentClassification && parentClassification.childList) { + // 更新序号 + update( + parentClassification.childList, + fromClassification.id, + newOrder, + fromClassification.order + ); + } + } else { + // 更新序号 + update( + store.classificationList, + fromClassification.id, + newOrder, + fromClassification.order + ); + } + } +} + +/** + * 更新分类图标 + * @param id + * @param icon + */ +function updateClassificationIcon(id: number, icon: string | null) { + // 查询分类 + let classification = getClassificationById(id); + if (classification) { + classification.data.icon = icon; + } +} + +/** + * 获取名称 + */ +function getClassificationName(classification: Classification) { + let name = ""; + if (classification.data.icon && classification.data.icon.trim() !== "") { + name += classification.data.icon; + } + if (store.setting.classification.mode === "normal") { + if (name.trim() !== "") { + name += " "; + } + name += classification.name; + } else { + if (name === "" && classification.name && classification.name.length > 0) { + name += classification.name.substring(0, 1); + } + } + return name; +} + +/** + * 获取当前选中的ID + * @returns + */ +function getSelectedClassificationId(): number | null { + if (store.selectedClassificationParentId) { + if (store.selectedClassificationChildId) { + return store.selectedClassificationChildId; + } else { + return store.selectedClassificationParentId; + } + } + return null; +} + +/** + * 查询固定分类 + */ +function getClassificationFixed(): Classification | null { + for (let classification of store.classificationList) { + if (classification.data.fixed) { + return classification; + } else { + if (classification.childList) { + for (let childClassification of classification.childList) { + if (childClassification.data.fixed) { + return childClassification; + } + } + } + } + } + return null; +} + +/** + * 获取分类名称 + * @param id + * @returns + */ +function getSearchItemClassificationName(id: number) { + let classification = getClassificationById(id); + if (classification) { + return "(" + getClassificationName(classification) + ")"; + } else { + return ""; + } +} + +export { + convertClassificationList, + getClassificationById, + hasChildClassification, + getClassificationName, + addClassification, + deleteClassification, + updateClassification, + updateClassificationOrder, + updateClassificationIcon, + getSelectedClassificationId, + getClassificationChildList, + getClassificationFixed, + getSearchItemClassificationName, +}; diff --git a/src/pages/data/BackupRestore.vue b/src/pages/data/BackupRestore.vue new file mode 100644 index 0000000..6fcb781 --- /dev/null +++ b/src/pages/data/BackupRestore.vue @@ -0,0 +1,94 @@ + + diff --git a/src/pages/index/Index.vue b/src/pages/index/Index.vue new file mode 100644 index 0000000..0b525c0 --- /dev/null +++ b/src/pages/index/Index.vue @@ -0,0 +1,576 @@ + + + +../../../types/setting diff --git a/src/pages/item/AddEdit.vue b/src/pages/item/AddEdit.vue new file mode 100644 index 0000000..0766b8f --- /dev/null +++ b/src/pages/item/AddEdit.vue @@ -0,0 +1,858 @@ + + +../../../types/common../../../types/item diff --git a/src/pages/item/NetworkIcon.vue b/src/pages/item/NetworkIcon.vue new file mode 100644 index 0000000..a56ed5e --- /dev/null +++ b/src/pages/item/NetworkIcon.vue @@ -0,0 +1,152 @@ + + +../../../types/common diff --git a/src/pages/item/SVGIcon.vue b/src/pages/item/SVGIcon.vue new file mode 100644 index 0000000..f57b5f9 --- /dev/null +++ b/src/pages/item/SVGIcon.vue @@ -0,0 +1,147 @@ + + diff --git a/src/pages/item/components/AppxItemList.vue b/src/pages/item/components/AppxItemList.vue new file mode 100644 index 0000000..c6a20c7 --- /dev/null +++ b/src/pages/item/components/AppxItemList.vue @@ -0,0 +1,213 @@ + + +../js/item ../../../../types/item diff --git a/src/pages/item/components/Content.vue b/src/pages/item/components/Content.vue new file mode 100644 index 0000000..ee76588 --- /dev/null +++ b/src/pages/item/components/Content.vue @@ -0,0 +1,894 @@ + + +../../../../types/item diff --git a/src/pages/item/components/List.vue b/src/pages/item/components/List.vue new file mode 100644 index 0000000..48c0cac --- /dev/null +++ b/src/pages/item/components/List.vue @@ -0,0 +1,267 @@ + + + +../../classification/js/classification../js/item +../../../../types/item../../../../types/classification diff --git a/src/pages/item/components/MultiItem.vue b/src/pages/item/components/MultiItem.vue new file mode 100644 index 0000000..1c71266 --- /dev/null +++ b/src/pages/item/components/MultiItem.vue @@ -0,0 +1,188 @@ + + diff --git a/src/pages/item/components/StartMenuItemList.vue b/src/pages/item/components/StartMenuItemList.vue new file mode 100644 index 0000000..9e2b123 --- /dev/null +++ b/src/pages/item/components/StartMenuItemList.vue @@ -0,0 +1,213 @@ + + +../js/item ../../../../types/item diff --git a/src/pages/item/components/SystemItemList.vue b/src/pages/item/components/SystemItemList.vue new file mode 100644 index 0000000..2289543 --- /dev/null +++ b/src/pages/item/components/SystemItemList.vue @@ -0,0 +1,214 @@ + + +../../entities/commonItem ../js/item ../../../../types/item diff --git a/src/pages/item/js/index.ts b/src/pages/item/js/index.ts new file mode 100644 index 0000000..48bd009 --- /dev/null +++ b/src/pages/item/js/index.ts @@ -0,0 +1,815 @@ +import { CommonItem, Item } from "../../../../types/item"; +import { useMainStore } from "../../../store"; +import { Classification } from "../../../../types/classification"; +import { + getClassificationById, + getClassificationChildList, +} from "../../classification/js"; +import { + convert, + getFileExtname, + getItemName, +} from "../../../../commons/utils/common"; +import { hexToRGBA, removeStyle, setStyle } from "../../../utils/style"; +import { pinyin, match } from "pinyin-pro"; +// pinia +const store = useMainStore(); + +/** + * 设置项目宽度 + */ +function setItemWidth() { + // 获取所有项目列表 + let itemListElementList = document.getElementsByClassName("item-list"); + for (let i = 0; i < itemListElementList.length; i++) { + let itemListElement = itemListElementList[i]; + // 分类ID + let classificationId = itemListElement.getAttribute("classification-id"); + // 查询分类 + let classification = classificationId + ? getClassificationById(parseInt(classificationId)) + : null; + // 当前项目区域宽度 + let width = itemListElement.getBoundingClientRect().width; + // 最小宽度 + let minWidth = store.setting.item.width; + // 获取项目数量 + let itemList = itemListElement.getElementsByClassName("item"); + // 每行数量 + let num = null; + // 布局 + let layout = getLayout( + classificationId ? parseInt(classificationId) : null + ); + // 无名称 + if (store.setting.item.hideItemName) { + minWidth = + getIconSize(classificationId ? parseInt(classificationId) : null) + 24; + num = Math.floor(width / (minWidth + 4)); + } else { + if (layout === "tile") { + // 平铺布局 + num = Math.floor(width / (minWidth + 4)); + } else if (layout === "list") { + // 列表布局 + // 先使用分类布局信息 + if (classification && classification.data.itemColumnNumber) { + if (classification.data.itemColumnNumber === 1) { + minWidth = width; + } else { + num = classification.data.itemColumnNumber; + } + } else { + // 设置-分类布局信息 + if (store.setting.item.columnNumber === 1) { + minWidth = width; + } else { + num = store.setting.item.columnNumber; + } + } + } + } + if ( + num !== null && + ((layout === "tile" && itemList.length >= num) || layout === "list") + ) { + for (let i = 0; i < itemList.length; i++) { + let itemElement = itemList[i] as HTMLElement; + itemElement.style.width = (width - num * 4) / num + "px"; + } + } else { + for (let i = 0; i < itemList.length; i++) { + let itemElement = itemList[i] as HTMLElement; + itemElement.style.width = minWidth + "px"; + } + } + } +} + +/** + * 转换项目列表 + */ +function convertItemList(itemList: Array): Map> { + let itemMap: Map> = new Map(); + // 根据分类ID将列表转为Map + itemList.forEach((item) => { + const { classificationId } = item; + if (!itemMap.has(classificationId)) { + itemMap.set(classificationId, []); + } + itemMap.get(classificationId)!.push(item); + }); + return itemMap; +} + +/** + * 获取项目列表 + */ +function getItemListByClassificationId( + classificationId: number | null +): Array { + let resultList: Array = []; + if (classificationId) { + if (store.itemMap.has(classificationId)) { + resultList = store.itemMap.get(classificationId)!; + } else { + store.itemMap.set(classificationId, resultList); + } + } + return resultList; +} + +/** + * 获取项目列表 + */ +function getShowItemListByClassificationId(classificationId: number | null) { + let resultList: Array = []; + if (classificationId) { + // 查询分类 + let classification = getClassificationById(classificationId); + if (classification) { + if (classification.type === 2) { + for (const value of store.itemMap.values()) { + resultList.push(...value); + } + } else { + if (store.itemMap.has(classificationId)) { + resultList = store.itemMap.get(classificationId)!; + } else { + store.itemMap.set(classificationId, resultList); + } + } + } + } + return { resultList, id: classificationId }; +} + +/** + * 添加项目 + */ +function addItem(item: Item) { + let itemList = getItemListByClassificationId(item.classificationId); + itemList.push(item); + // 重新排序 + itemList.sort((a, b) => a.order! - b.order!); +} + +/** + * 根据ID查询 + */ +function getItemById(id: number): Item | null { + for (let value of store.itemMap.values()) { + for (let item of value) { + if (item.id === id) { + return item; + } + } + } + return null; +} + +/** + * 更新项目 + */ +function updateItem(item: Item) { + // 查询项目 + let curItem = getItemById(item.id); + if (curItem) { + curItem.name = item.name; + curItem.shortcutKey = item.shortcutKey; + curItem.globalShortcutKey = item.globalShortcutKey; + if (curItem.data) { + curItem.data.startLocation = item.data.startLocation; + curItem.data.target = item.data.target; + curItem.data.params = item.data.params; + curItem.data.runAsAdmin = item.data.runAsAdmin; + curItem.data.icon = item.data.icon; + curItem.data.htmlIcon = item.data.htmlIcon; + curItem.data.remark = item.data.remark; + curItem.data.iconBackgroundColor = item.data.iconBackgroundColor; + curItem.data.fixedIcon = item.data.fixedIcon; + } + } +} + +/** + * 删除项目 + */ +function deleteItem(id: number) { + for (let value of store.itemMap.values()) { + // index + let index: number | null = null; + // 当前项目 + let item: Item | null = null; + for (let i = 0; i < value.length; i++) { + if (value[i].id === id) { + index = i; + item = value[i]; + break; + } + } + if (index !== null && item) { + // 删除 + value.splice(index, 1); + // 更新目标分类下其他项目序号 + for (let i of value) { + if (i.order >= item.order) { + i.order -= 1; + } + } + break; + } + } +} + +/** + * 根据分类ID删除项目 + */ +function deleteItemByClassificationId(classificationId: number | null) { + if (classificationId && store.itemMap.has(classificationId)) { + store.itemMap.delete(classificationId); + } +} + +/** + * 根据ID查询列表 + */ +function getItemByIdList(idList: Array): Array { + let itemList = []; + for (const id of idList) { + let item = getItemById(id); + if (item) { + itemList.push(item); + } + } + // 返回列表 + let resultList = []; + // 根据传入的参数排序 + for (const id of idList) { + for (const item of itemList) { + if (id === item.id) { + resultList.push(item); + break; + } + } + } + return resultList; +} + +/** + * 项目排序 + */ +function updateItemOrder( + fromIdList: Array, + toClassificationId: number, + newIndex: number | null +) { + // 查询来源项目 + let fromItemList = getItemByIdList(fromIdList); + if (fromItemList.length > 0) { + // 删除来源项目原有位置 + for (const item of fromItemList) { + deleteItem(item.id); + } + // 查询目标分类是否是父级分类,如果是父级分类的话,获取他下面的第一个子分类 + let childClassificationList = + getClassificationChildList(toClassificationId); + if (childClassificationList.length > 0) { + toClassificationId = childClassificationList[0].id; + } + // 记录来源项目都是来源于哪些分类,需要重新排序 + let fromClassificationIdList = []; + for (const item of fromItemList) { + if ( + item.classificationId != toClassificationId && + fromClassificationIdList.indexOf(item.classificationId) < 0 + ) { + fromClassificationIdList.push(item.classificationId); + } + } + // 查询目标项目列表 + let toItemList = getItemListByClassificationId(toClassificationId); + // 将来源项目插入到目标项目列表 + if (newIndex !== null) { + toItemList.splice(newIndex, 0, ...fromItemList); + } else { + toItemList.push(...fromItemList); + } + // 目标分类重新排序和修改分类信息 + for (let i = 0; i < toItemList.length; i++) { + toItemList[i].order = i + 1; + toItemList[i].classificationId = toClassificationId; + } + // 重新排序 + toItemList.sort((a, b) => a.order - b.order); + // 重排序其来源分类项目列表 + for (const id of fromClassificationIdList) { + let itemList = getItemListByClassificationId(id); + for (let i = 0; i < itemList.length; i++) { + itemList[i].order = i + 1; + } + // 重新排序 + itemList.sort((a, b) => a.order - b.order); + } + } +} + +/** + * 根据分类ID移动项目 + */ +function moveItemByClassificationId( + oldClassificationId: number, + newClassificationId: number +) { + if (store.itemMap.has(oldClassificationId)) { + store.itemMap.set( + newClassificationId, + store.itemMap.get(oldClassificationId)! + ); + deleteItemByClassificationId(oldClassificationId); + } else { + store.itemMap.set(newClassificationId, []); + } +} + +/** + * 获取名称缩写 + */ +function getAbbr(name: string): string | null { + let split = getItemName(name).split(" "); + let abbr = ""; + if (split.length > 1) { + for (let i = 0; i < split.length; i++) { + abbr += split[i].slice(0, 1); + } + } + return abbr === "" ? null : abbr; +} + +/** + * 获取搜索Map + */ +function getItemSearchMap( + itemList: Array, + remark: boolean = false +): Map> { + // 搜索Map + let searchMap: Map> = new Map(); + // 循环每一个项目提取名字和缩写找到相同的放到同一个列表中 + for (const item of itemList) { + if (!item.name) { + continue; + } + // 名称 + let name = item.name.toLowerCase(); + let nameList = searchMap.get(name); + if (!nameList) { + nameList = []; + } + nameList.push(item); + searchMap.set(name, nameList); + // 缩写 + let abbr = getAbbr(item.name); + if (abbr) { + abbr = abbr.toLowerCase(); + let abbrList = searchMap.get(abbr); + if (!abbrList) { + abbrList = []; + } + abbrList.push(item); + searchMap.set(abbr, abbrList); + } + // 备注 + if (remark) { + let r = (item as Item).data.remark; + if (r && r.trim() !== "") { + r = r.toLowerCase(); + let remarkList = searchMap.get(r); + if (!remarkList) { + remarkList = []; + } + remarkList.push(item); + searchMap.set(r, remarkList); + } + } + } + return searchMap; +} + +/** + * 判断是否有中文 + */ +function hasChinese(str: string): boolean { + const pattern = /[\u4e00-\u9fa5]/; // 中文字符的 Unicode 范围 + return pattern.test(str); +} + +/** + * 搜索通用项目 + */ +function searchItem( + text: string, + searchMap: Map>, + maxLength: number | null = null +): Array { + // 返回列表 + let resultList: Array = []; + // 转换为小写 + text = text.toLowerCase(); + // 循环搜索Map搜索项目 + for (const [key, value] of searchMap.entries()) { + let found = false; + if (hasChinese(key)) { + // 包含中文 + let res: Array = match(key, text, { + continuous: true, + space: "preserve", + }); + if (res && res.length > 0) { + found = true; + } + } else { + // 其他情况 + found = key.indexOf(text) >= 0; + } + if (found) { + // 去重并添加 + for (let vItem of value) { + let exists = false; + for (let rItem of resultList) { + if (vItem.id === rItem.id) { + exists = true; + break; + } + } + if (!exists) { + resultList.push(vItem); + } + } + } + } + // 最大长度 + if (maxLength) { + resultList = resultList.slice(0, maxLength); + } + return resultList; +} + +/** + * 显示项目列表 + * @param itemList + * @param classification + * @returns + */ +function showItemList( + itemList: Array, + classification: Classification | null +) { + // 返回数据 + let resultList = []; + // 隐藏项 + let hiddenItemArr: Array = []; + if ( + classification && + classification.type === 1 && + classification.data.associateFolderHiddenItems + ) { + hiddenItemArr = classification.data.associateFolderHiddenItems + .toLowerCase() + .split(","); + } + // 过滤 + for (const item of itemList) { + let extName = getFileExtname(item.data.target); + if ( + // 判断隐藏项 + (hiddenItemArr.length === 0 || + !extName || + (extName && hiddenItemArr.indexOf(extName.toLowerCase()) < 0)) && + // 判断显示项 + (!classification || + (classification && + (classification.data.itemShowOnly === "default" || + (classification.data.itemShowOnly === "file" && item.type !== 1) || + (classification.data.itemShowOnly === "folder" && + item.type === 1)))) + ) { + resultList.push(item); + } + } + // 排序 + if (classification && classification.data.itemSort !== "default") { + let sortList = sort(resultList, classification.data.itemSort); + if (sortList) { + resultList = sortList; + } + } + // 聚合分类 + if (classification && classification.type === 2) { + // 截取数据 + resultList = resultList.slice(0, classification.data.aggregateItemCount); + } + // 返回 + return resultList; +} + +/** + * 排序 + * @param list + * @param type + * @param key + */ +function sort( + list: Array, + type: + | "default" + | "initial" + | "openNumber" + | "lastOpen" + | "quickSearchOpenNumber" + | "quickSearchLastOpen" +) { + if (type === "initial") { + return list.sort((x, y) => { + let xn: any, yn: any; + if (x.name) { + xn = pinyin(x.name, { toneType: "none", type: "array" }) + .join("") + .charAt(0) + .toLowerCase(); + } else { + xn = ""; + } + if (y.name) { + yn = pinyin(y.name, { toneType: "none", type: "array" }) + .join("") + .charAt(0) + .toLowerCase(); + } else { + yn = ""; + } + // 判断是否是数字 + if (!isNaN(xn) && isNaN(yn)) { + // xn是数字而yn不是,返回1 + return 1; + } + if (!isNaN(yn) && isNaN(xn)) { + // yn是数字而xn不是,返回-1 + return -1; + } + if (xn < yn) { + return -1; + } + if (xn > yn) { + return 1; + } + if (xn == yn) { + if (x.name && y.name) { + if (x.name < y.name) { + return -1; + } + if (x.name < y.name) { + return 1; + } + } + } + return 0; + }); + } else if ( + type === "openNumber" || + type === "lastOpen" || + type === "quickSearchOpenNumber" || + type === "quickSearchLastOpen" + ) { + return list + .sort((x, y) => { + let xn = x.data[type] ?? 0; + let yn = y.data[type] ?? 0; + if (xn < yn) { + return -1; + } + if (xn > yn) { + return 1; + } + if (xn === yn) { + if (x.name && y.name) { + if (x.name < y.name) { + return -1; + } + if (x.name < y.name) { + return 1; + } + } + } + return 0; + }) + .reverse(); + } +} + +/** + * 运行项目 + * @param type + * @param operation + * @param item + */ +function run(type: string, operation: string, item: Item) { + let itemList: Array = []; + if (item.type === 5) { + if (item.data.target) { + let arr = item.data.target.split(","); + for (const a of arr) { + let item = getItemById(parseInt(a)); + if (item) { + itemList.push(item); + } + } + } + window.item.updateOpenInfo(type, item.id); + } else { + itemList.push(item); + } + if (item.type === 5 && item.data.multiItemsTimeInterval > 0) { + let index = 0; + const next = () => { + if (index < itemList.length) { + window.item.run(type, operation, convert(itemList[index])); + index = index + 1; + if (index < itemList.length) { + setTimeout(next, item.data.multiItemsTimeInterval); + } + } + }; + next(); + } else { + for (const element of itemList) { + window.item.run(type, operation, convert(element)); + } + } + if (store.setting.item.openAfterHideMainInterface) { + window.main.hideWindow(); + } +} + +/** + * 项目选中样式 + */ +function itemHoverStyle(e: any, className: string) { + let style: Map = new Map(); + style.set( + "background-color", + hexToRGBA(store.setting.appearance.theme.secondBackgroundColor, 0.3) + ); + setStyle(e, className, style); +} + +/** + * 项目移走样式 + */ +function itemRemoveStyle(e: any, className: string) { + let style: Map = new Map(); + style.set("background-color", null); + removeStyle(e, className, style); +} + +/** + * 去除所有项目选中效果 + */ +function allItemRemoveStyle() { + let elementList = document.getElementsByClassName("item"); + for (let i = 0; i < elementList.length; i++) { + itemRemoveStyle(elementList[i], "item"); + } +} + +/** + * 获取布局 + */ +function getLayout(classificationId: number | null) { + if (classificationId) { + let classification = getClassificationById(classificationId); + if (classification && classification.data.itemLayout !== "default") { + return classification.data.itemLayout; + } + } + return store.setting.item.layout; +} + +/** + * 获取图标大小 + */ +function getIconSize(classificationId: number | null) { + if (classificationId) { + let classification = getClassificationById(classificationId); + if (classification && classification.data.itemIconSize !== null) { + return classification.data.itemIconSize; + } + } + return store.setting.item.iconSize; +} + +/** + * 删除无效项目 + * @param id + */ +function removeInvalidItem(id: number) { + if (store.invalidItemIdList.includes(id)) { + let index = store.invalidItemIdList.indexOf(id); + if (index !== -1) { + store.invalidItemIdList.splice(index, 1); + } + } +} + +/** + * 获取名称 + */ +function getName(name: string | null) { + if (name) { + return name.replace(/\\n/g, " "); + } else { + return ""; + } +} + +/** + * 获取项目标题 + * @param item + * @returns + */ +function getItemTitle(item: Item) { + let name = + store.language.name + + store.language.colon + + (item.name ? item.name.replace(/\\n/g, " ") : ""); + if (store.setting.item.openNumber) { + name += + "\n" + + store.language.openNumber + + store.language.colon + + (item.data.openNumber ?? 0); + } + if (item.data.remark) { + name += + "\n" + store.language.remark + store.language.colon + item.data.remark; + } + return name; +} + +/** + * 过滤排除搜索 + * @returns + */ +function filterExcludeSearchItemList() { + // 项目列表 + let itemList: Array = []; + // 记录排除搜索的分类ID + let excludeSearchIdList = store.classificationList + .filter((classification) => classification.data.excludeSearch) + .map((classification) => classification.id); + for (const [key, value] of store.itemMap.entries()) { + // 查询分类 + let classification = getClassificationById(key); + if ( + classification && + !classification.data.excludeSearch && + !excludeSearchIdList.includes(classification.id) && + (!classification.parentId || + !excludeSearchIdList.includes(classification.parentId)) + ) { + itemList.push(...value); + } + } + return itemList; +} + +export { + setItemWidth, + getAbbr, + getItemSearchMap, + searchItem, + addItem, + getItemById, + updateItem, + deleteItem, + deleteItemByClassificationId, + updateItemOrder, + getItemListByClassificationId, + getShowItemListByClassificationId, + convertItemList, + showItemList, + run, + itemHoverStyle, + itemRemoveStyle, + allItemRemoveStyle, + moveItemByClassificationId, + getLayout, + getIconSize, + removeInvalidItem, + getItemByIdList, + hasChinese, + getName, + getItemTitle, + filterExcludeSearchItemList, + sort, +}; diff --git a/src/pages/search/QuickSearch.vue b/src/pages/search/QuickSearch.vue new file mode 100644 index 0000000..71c0e4b --- /dev/null +++ b/src/pages/search/QuickSearch.vue @@ -0,0 +1,640 @@ + + + diff --git a/src/pages/search/components/Search.vue b/src/pages/search/components/Search.vue new file mode 100644 index 0000000..8c31be6 --- /dev/null +++ b/src/pages/search/components/Search.vue @@ -0,0 +1,392 @@ + + diff --git a/src/pages/search/js/index.ts b/src/pages/search/js/index.ts new file mode 100644 index 0000000..c249006 --- /dev/null +++ b/src/pages/search/js/index.ts @@ -0,0 +1,51 @@ +import { itemRemoveStyle } from "../../item/js"; + +/** + * 删除所有选中项目样式 + * @param className + * @param selected + */ +function itemAllRemoveStyle(className: string, selected: number) { + let elementList = document.getElementsByClassName(className); + for (let i = 0; i < elementList.length; i++) { + const element = elementList[i]; + let index = element.getAttribute("index"); + if (index && selected !== parseInt(index)) { + itemRemoveStyle(element, className); + } + } +} + +/** + * 移动滚动条 + * @param className + * @param height + * @param type + * @param selected + */ +function searchResultDivMoveScroll( + className: string, + height: number, + type: "up" | "down", + selected: number +) { + let listEL = document.getElementById("search-result-list"); + let itemEl = document.getElementById(className + "-" + selected); + if (listEL && itemEl) { + let itemRect = itemEl.getBoundingClientRect(); + let realY = itemRect.y - height - 1 + 48; + if (type === "up") { + if (realY < 48) { + let sim = listEL.getElementsByClassName("simplebar-content-wrapper")[0]; + sim.scrollTop = sim.scrollTop - (48 - realY); + } + } else { + if (realY > listEL.clientHeight) { + let sim = listEL.getElementsByClassName("simplebar-content-wrapper")[0]; + sim.scrollTop = sim.scrollTop + (realY - listEL.clientHeight); + } + } + } +} + +export { itemAllRemoveStyle, searchResultDivMoveScroll }; diff --git a/src/pages/setting/Index.vue b/src/pages/setting/Index.vue new file mode 100644 index 0000000..d1d2312 --- /dev/null +++ b/src/pages/setting/Index.vue @@ -0,0 +1,2259 @@ + + +../../../types/setting diff --git a/src/renderer/App.vue b/src/renderer/App.vue deleted file mode 100644 index a80eddd..0000000 --- a/src/renderer/App.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/src/renderer/assets/images/logo-thick.png b/src/renderer/assets/images/logo-thick.png deleted file mode 100644 index 75bdc58..0000000 Binary files a/src/renderer/assets/images/logo-thick.png and /dev/null differ diff --git a/src/renderer/assets/images/logo-transparent.png b/src/renderer/assets/images/logo-transparent.png deleted file mode 100644 index b4d5105..0000000 Binary files a/src/renderer/assets/images/logo-transparent.png and /dev/null differ diff --git a/src/renderer/common/index.js b/src/renderer/common/index.js deleted file mode 100644 index 5eec9ba..0000000 --- a/src/renderer/common/index.js +++ /dev/null @@ -1,300 +0,0 @@ -import store from "../store"; -import * as DOMPurify from "dompurify"; -import ClassificationJS from "@/views/classification/js"; - -/** - * 校验KeyCode - * @param e - */ -function checkKeyCode(e) { - // (e.keyCode >= 48 && e.keyCode <= 57) 键盘上方数字 - // (e.keyCode >= 65 && e.keyCode <= 90) 键盘字母a-z不区分大小写 - // (e.keyCode >= 96 && e.keyCode <= 111) 数字键盘 - // (e.keyCode >= 112 && e.keyCode <= 135) 键盘F1到F24 - // e.keyCode == 8 退格键 - // e.keyCode == 9 Tab - // e.keyCode == 12 Clear - // e.keyCode == 13 回车 - // e.keyCode == 16 Shift - // e.keyCode == 17 Control - // e.keyCode == 18 Alt - // e.keyCode == 20 Cape Lock 大小写 - // e.keyCode == 27 Esc - // (e.keyCode >= 32 && e.keyCode <= 40) 控制键盘区 - // e.keyCode == 45 Insert - // e.keyCode == 46 Delete - // e.keyCode == 144 Num Lock - // (e.keyCode >= 186 && e.keyCode <= 192) 符号;: =+ ,< -_ .> /? `~ - // (e.keyCode >= 219 && e.keyCode <= 222) 符号[{ \| ]} '" - if ( - (e.keyCode >= 48 && e.keyCode <= 57) || - (e.keyCode >= 65 && e.keyCode <= 90) || - (e.keyCode >= 96 && e.keyCode <= 111) || - (e.keyCode >= 112 && e.keyCode <= 135) || - e.keyCode == 8 || - e.keyCode == 9 || - e.keyCode == 12 || - e.keyCode == 13 || - e.keyCode == 16 || - e.keyCode == 17 || - e.keyCode == 18 || - e.keyCode == 20 || - e.keyCode == 27 || - (e.keyCode >= 32 && e.keyCode <= 40) || - e.keyCode == 45 || - e.keyCode == 46 || - e.keyCode == 144 || - (e.keyCode >= 186 && e.keyCode <= 192) || - (e.keyCode >= 219 && e.keyCode <= 222) - ) { - return true; - } - return false; -} - -/** - * 获取Key - * @param classificationParentId - * @param classificationChildId - * @param itemId - * @returns {*} - */ -function getKey(classificationParentId, classificationChildId, itemId) { - let key = classificationParentId; - if (classificationChildId != null) { - key += "-" + classificationChildId; - } - key += "-" + itemId; - return key; -} - -/** - * 获取图标 - */ -function getIcon(classificationParentId, classificationChildId, itemId) { - if (store.state.iconDataMap != null) { - let icon = store.state.iconDataMap.get(getKey(classificationParentId, classificationChildId, itemId)); - if (icon != null) { - return icon.icon; - } else { - return null; - } - } - return null; -} - -export default { - /** - * 转int - * @param v - */ - parseInt(v) { - return v != null ? parseInt(v) : null; - }, - /** - * 获取新ID - */ - getNewId(list) { - if (list == null || list.length == 0) { - return 1; - } - // 获取ID列表 - let idList = list.map((item) => item.id); - // 获取最大ID - let maxId = Math.max(...idList); - // +1 - return ++maxId; - }, - /** - * 设置快捷键 - */ - setShortcutKey(e, originalVal, preventDefault) { - if (preventDefault) { - e.preventDefault(); - } - if (checkKeyCode(e)) { - // Esc - if (e.keyCode == 27) { - return originalVal; - } - if (e.keyCode == 8) { - return null; - } else { - let keys = []; - // 如果是组合键 - if (e.ctrlKey && e.keyCode != 17) { - keys.push("Ctrl + "); - } - if (e.altKey && e.keyCode != 18) { - keys.push("Alt + "); - } - if (e.metaKey && e.keyCode != 91) { - keys.push("Win + "); - } - if (e.shiftKey && e.keyCode != 16) { - keys.push("Shift + "); - } - // 非组合键情况,按键是ctrl alt shift win - if (e.keyCode == 16 || e.keyCode == 17 || e.keyCode == 18 || e.keyCode == 91) { - let key; - if (e.ctrlKey && e.keyCode == 17) { - key = "Ctrl + "; - } - if (e.altKey && e.keyCode == 18) { - key = "Alt + "; - } - if (e.metaKey && e.keyCode == 91) { - key = "Win + "; - } - if (e.shiftKey && e.keyCode == 16) { - key = "Shift + "; - } - keys.push(key); - } else { - // 排序 - keys.sort((a, b) => a.localeCompare(b)); - // 其他 - if (e.key.toUpperCase() == "ENTER") { - keys.push("Enter"); - } else { - if (e.keyCode == 32) { - keys.push("Space"); - } else if (e.keyCode >= 96 && e.keyCode <= 105) { - keys.push("Num" + e.key); - } else if (e.keyCode >= 106 && e.keyCode <= 111) { - if (e.keyCode == 106) { - keys.push("NumMult"); - } else if (e.keyCode == 107) { - keys.push("NumAdd"); - } else if (e.keyCode == 109) { - keys.push("NumSub"); - } else if (e.keyCode == 110) { - keys.push("NumDec"); - } else if (e.keyCode == 111) { - keys.push("NumDiv"); - } - } else { - keys.push(e.key.replace("Arrow", "").toUpperCase()); - } - } - } - return keys.join(""); - } - } else { - return null; - } - }, - /** - * 校验快捷键完整 - * @param shortcutKey - * @returns {boolean} - */ - checkShortcutKeys(shortcutKey) { - if (shortcutKey != null && shortcutKey.trim() != "") { - let flag = false; - let split = shortcutKey.split("+"); - for (let s of split) { - if (s.trim() == "") { - return false; - } - if (s.trim() != "Ctrl" && s.trim() != "Alt" && s.trim() != "Shift" && s.trim() != "Win") { - flag = true; - } - } - return flag; - } - return false; - }, - /** - * 校验应用程序内快捷是否重复 - * @param shortcutKey - * @param appShortcutKeyMap - */ - checkAppShortcutKeysDuplicate(shortcutKey, appShortcutKeyMap) { - let s = appShortcutKeyMap.get(shortcutKey); - if (s != null) { - let name = s.classificationParentName; - if (s.type == "classification") { - if (s.classificationChildName != null && s.classificationChildName.trim() != "") { - name += "-" + s.classificationChildName; - } - return store.state.currentLanguage.shortcutKeyConflictMessage(name, 0); - } else { - if (s.classificationChildName != null && s.classificationChildName.trim() != "") { - name += "-" + s.classificationChildName; - } - name += "-" + s.itemName; - return store.state.currentLanguage.shortcutKeyConflictMessage(name, 1); - } - } - return null; - }, - /** - * 校验设置中的快捷键是否重复 - * @param shortcutKey - * @param setting - * @param exclude - * @returns {null} - */ - checkSettingShortcutKeysDuplicate(shortcutKey, setting, exclude) { - let msg = null; - let showHide, search, quickSearch; - if (setting.general != null && (exclude == null || exclude != "showHideShortcutKey")) { - showHide = setting.general.showHideShortcutKey; - } - if (setting.item != null && (exclude == null || exclude != "searchShortcutKey")) { - search = setting.item.searchShortcutKey; - } - if (setting.quickSearch != null && (exclude == null || exclude != "quickSearchShowHideShortcutKey")) { - quickSearch = setting.quickSearch.showHideShortcutKey; - } - if (showHide != null && showHide.trim() != "" && showHide == shortcutKey) { - msg = store.state.currentLanguage.shortcutKeyConflictSettingGeneralShowHideMessage; - } else if (search != null && search.trim() != "" && search == shortcutKey) { - msg = store.state.currentLanguage.shortcutKeyConflictSettingItemSearchMessage; - } else if (quickSearch != null && quickSearch.trim() != "" && quickSearch == shortcutKey) { - msg = store.state.currentLanguage.shortcutKeyConflictSettingQuickSearchShowHideMessage; - } - return msg; - }, - /** - * 判断数组是否等于空 - * @param arr - */ - arrayIsEmpty(arr) { - if (arr == null || arr.length == 0) { - return true; - } - return false; - }, - /** - * 判断字符串是否为空 - * @param str - */ - strIsEmpty(str) { - if (str == null || str.trim() == "") { - return true; - } - return false; - }, - DOMPurify, - /** - * 获取图标 - */ - getIcon, - /** - * 获取Key - * @param classificationParentId - * @param classificationChildId - * @param itemId - * @returns {*} - */ - getKey, - /** - * 获取图标根据分类 - */ - getIconByClassification(item) { - let { classificationParentId, classificationChildId } = ClassificationJS.convertClassificationId(item.classificationId, item.classificationParentId); - return getIcon(classificationParentId, classificationChildId, item.id); - }, -}; diff --git a/src/renderer/components/Button.vue b/src/renderer/components/Button.vue deleted file mode 100644 index eccce38..0000000 --- a/src/renderer/components/Button.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - diff --git a/src/renderer/components/CheckBox.vue b/src/renderer/components/CheckBox.vue deleted file mode 100644 index 3b949e0..0000000 --- a/src/renderer/components/CheckBox.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/src/renderer/components/Close.vue b/src/renderer/components/Close.vue deleted file mode 100644 index 4600fef..0000000 --- a/src/renderer/components/Close.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/src/renderer/components/Color.vue b/src/renderer/components/Color.vue deleted file mode 100644 index f700911..0000000 --- a/src/renderer/components/Color.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - diff --git a/src/renderer/components/Input.vue b/src/renderer/components/Input.vue deleted file mode 100644 index f076ec7..0000000 --- a/src/renderer/components/Input.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/src/renderer/components/Popup.vue b/src/renderer/components/Popup.vue deleted file mode 100644 index 0561a1b..0000000 --- a/src/renderer/components/Popup.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - - - diff --git a/src/renderer/components/Select.vue b/src/renderer/components/Select.vue deleted file mode 100644 index 20588d2..0000000 --- a/src/renderer/components/Select.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - diff --git a/src/renderer/components/TopTitleBar.vue b/src/renderer/components/TopTitleBar.vue deleted file mode 100644 index afdbc9a..0000000 --- a/src/renderer/components/TopTitleBar.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/renderer/main.js b/src/renderer/main.js deleted file mode 100644 index 345f28a..0000000 --- a/src/renderer/main.js +++ /dev/null @@ -1,125 +0,0 @@ -import { createApp } from "vue"; -import App from "./App.vue"; -import router from "./router"; -import store from "./store"; -import "./style/tailwind.css"; -import "./style/main.css"; - -/** - * 全局方法 - */ -const getClassElement = function getClassElement(e, className) { - let target; - if (e instanceof HTMLElement) { - target = e; - } else { - for (let i = 0; i < e.path.length; i++) { - if (e.path[i].classList != null && e.path[i].classList.length > 0) { - for (let clazz of e.path[i].classList) { - if (clazz == className) { - target = e.path[i]; - break; - } - } - } - } - } - return target; -}; - -/** - * 鼠标经过 - * @param e - * @param className - * @param style - * @param value - */ -const styleMouseover = function styleMouseover(e, className, style, value) { - let target = getClassElement(e, className); - if (target != null && style != null) { - for (let i = 0; i < style.length; i++) { - target.style.setProperty(style[i], value[i]); - } - } -}; - -/** - * 鼠标移开 - * @param e - * @param className - * @param style - */ -const styleMouseout = function styleMouseout(e, className, style, value) { - let target = getClassElement(e, className); - if (target != null && style != null) { - for (let i = 0; i < style.length; i++) { - if (value != null && value[i] != null) { - target.style.setProperty(style[i], value[i]); - } else { - target.style.removeProperty(style[i]); - } - } - } -}; - -/** - * 十六进制转 RGBA 的函数 - * @param hex - * @param a - * @returns {`rgba(${number}, ${number}, ${number}, ${string})`} - */ -const hexToRGBA = function hexToRGBA(hex, a) { - let hexValue = hex.replace("#", ""); - - // 将六位颜色值转为八位 - if (hexValue.length === 6) { - hexValue = hexValue + "ff"; - } - - // 获取rgba各分量值 - const red = parseInt(hexValue.substring(0, 2), 16); - const green = parseInt(hexValue.substring(2, 4), 16); - const blue = parseInt(hexValue.substring(4, 6), 16); - const alpha = parseInt(hexValue.substring(6, 8), 16) / 255; - - return `rgba(${red}, ${green}, ${blue}, ${a == 1 ? alpha : a})`; -}; - -/** - * 返回背景颜色 - * @param setting - * @returns {`rgba(${number}, ${number}, ${number}, ${string})`} - */ -const backgroundTransparencyBackgroundColor = function backgroundTransparencyBackgroundColor(setting) { - return hexToRGBA(setting.appearance.theme.mainBackground, setting.appearance.backgroundTransparency); -}; - -/** - * 返回字体颜色 - */ -const backgroundTransparencyFontColor = function backgroundTransparencyFontColor(setting, transparency) { - return hexToRGBA(setting.appearance.theme.fontBasic, transparency); -}; - -/** - * 获取冒号 - */ -const getColon = function getColon() { - return store.state.currentLanguage.colon; -}; - -createApp(App) - .mixin({ - methods: { - $styleMouseover: styleMouseover, - $styleMouseout: styleMouseout, - $hexToRGBA: hexToRGBA, - $backgroundTransparencyBackgroundColor: backgroundTransparencyBackgroundColor, - $backgroundTransparencyFontColor: backgroundTransparencyFontColor, - $getColon: getColon, - $getClassElement: getClassElement, - }, - }) - .use(store) - .use(router) - .mount("#app"); diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js deleted file mode 100644 index 031dd85..0000000 --- a/src/renderer/router/index.js +++ /dev/null @@ -1,39 +0,0 @@ -import { createRouter, createWebHashHistory } from "vue-router"; - -const routes = [ - { - path: "/", - name: "Index", - component: () => import("@/views/index/Index.vue"), - }, - { - path: "/classification/addEdit", - name: "ClassificationAddEdit", - component: () => import("@/views/classification/AddEdit.vue"), - }, - { - path: "/item/addEdit", - name: "ItemAddEdit", - component: () => import("@/views/item/AddEdit.vue"), - }, - { - path: "/about", - name: "About", - component: () => import("@/views/about/Index.vue"), - }, - { - path: "/setting", - name: "Setting", - component: () => import("@/views/setting/Index.vue"), - }, - { - path: "/searchWindow", - name: "searchWindow", - component: () => import("@/views/search/Window.vue"), - }, -]; - -export default new createRouter({ - routes, - history: createWebHashHistory(), -}); diff --git a/src/renderer/store/index.js b/src/renderer/store/index.js deleted file mode 100644 index 73cc723..0000000 --- a/src/renderer/store/index.js +++ /dev/null @@ -1,608 +0,0 @@ -import { createStore } from "vuex"; - -export default createStore({ - state: { - // 列表 - list: [], - // 全局设置 - setting: {}, - // 应用内快捷键 - appShortcutKeyMap: new Map(), - // 当前语言 - currentLanguage: null, - // 语言 - language: { - chinese: { - setting: "设置", - about: "关于", - checkForUpdates: "检查更新", - checkForUpdatesNewVersionMessage: '检查到有新版本,点击"确定"跳转官网下载最新版本。', - checkForUpdatesLatestVersionMessage: "当前已经是最新版本。", - checkForUpdatesFailedMessage: "检查更新失败,请确认网络。", - exit: "退出", - ok: "确定", - cancel: "取消", - newClassification: "新建分类", - newSubClassification: "新建子分类", - editClassification: "编辑分类", - editSubClassification: "编辑子分类", - edit: "编辑", - delete: "删除", - cut: "剪切", - copy: "复制", - paste: "粘贴", - notFoundFileMessage: "找不到指定的文件", - notFoundFolderMessage: "找不到指定的文件夹", - newItem: "新建项目", - clearItem: "清空项目", - open: "打开", - runAsAdministrator: "以管理员身份运行", - openLocation: "打开文件所在的位置", - moveTo: "移动到", - copyTo: "复制到", - name: "名称", - shortcutKey: "快捷键", - shortcutKeyIncompleteMessage: "快捷键不完整,请完善您的快捷键。", - shortcutKeyConflictMessage(text, type) { - if (type == 0) { - return '与"' + text + '"分类快捷键产生冲突,请重新设置。'; - } else { - return '与"' + text + '"项目快捷键产生冲突,请重新设置。'; - } - }, - shortcutKeyConflictSettingGeneralShowHideMessage: '与"设置-常规"中的"显示/隐藏"快捷键产生冲突,请重新设置。', - shortcutKeyConflictSettingItemSearchMessage: '与"设置-项目"中的"搜索"快捷键产生冲突,请重新设置。', - shortcutKeyConflictSettingQuickSearchShowHideMessage: '与"设置-快速搜索"中的"显示/隐藏"快捷键产生冲突,请重新设置。', - editItem: "编辑项目", - colon: ":", - target: "目标", - browse: "浏览", - defaultIcon: "默认图标", - url: "网址", - getUrlInfo: "获取网址信息", - urlErrorMessage: "获取网址信息失败,请手动填写。", - arguments: "参数", - file: "文件", - folder: "文件夹", - gettingUrlInfo: "获取中", - officialWebsite: "官方网站", - start: "启动", - autoStart: "开机启动", - showHide: "显示/隐藏", - language: "语言", - theme: "主题", - search: "搜索", - doubleClickOpen: "双击打开", - general: "常规", - appearance: "外观", - item: "项目", - layout: "布局", - iconSize: "图标大小", - backupRestoreData: "备份/恢复数据", - backup: "备份", - restore: "恢复", - openAfterHideMainInterface: "打开后隐藏主界面", - tile: "平铺", - list: "列表", - large: "大", - medium: "中", - small: "小", - chinese: "简体中文", - traditionalChinese: "繁體中文", - window: "窗口", - alwaysTop: "永远置顶", - notPrompt: "不再提示", - feedback: "反馈", - system: "系统", - computer: "计算机", - document: "文档", - controlPanel: "控制面板", - networkAndSharingCenter: "网络和共享中心", - recycleBin: "回收站", - fileExplorerOptions: "文件资源管理器选项", - programsAndFeatures: "程序和功能", - calculator: "计算器", - services: "服务", - commandPrompt: "命令提示符", - taskManager: "任务管理器", - registryEditor: "注册表编辑器", - powerOptions: "电源选项", - menu: "菜单", - close: "关闭", - edgeAutoHide: "停靠在桌面边缘时自动隐藏", - startupTray: "启动后最小化到系统托盘", - save: "保存", - lockItem: "锁定项目", - unlockItem: "解锁项目", - copyFullPath: "复制完整路径", - lockSize: "锁定尺寸", - classification: "分类", - width: "宽度", - size: "尺寸", - hideLosingFocus: "失去焦点后隐藏", - mouseHover: "鼠标悬停", - switch: "切换", - useItemOpen: "从程序外拖动文件到项目图标上时用此项目打开文件", - hideTray: "隐藏托盘图标", - middleClick: "中键单击", - mouseWheel: "鼠标滚轮", - remark: "备注", - show: "显示", - sort: "排序", - ascendingOrder: "升序", - descendingOrder: "降序", - transparency: "窗口透明度", - byInitial: "按首字母", - recordOpenNumber: "记录打开次数", - openNumber: "打开次数", - byOpenNumber: "按打开次数", - fixedPosition: "固定位置", - data: "数据", - dataDirectory: "数据目录", - dataDirectoryNote: - '注意:无特殊需求请勿随意修改数据目录,如果修改数据目录后,会在Dawn Launcher程序目录的上一级目录创建名字为".dawn_launcher_profile"的文件来存储数据目录地址,请勿随意删除。', - select: "选择", - hide: "隐藏", - hideItemName: "隐藏名称", - alwaysCenter: "永远居中", - rewardAndSponsorship: "打赏&赞助", - showFollowMousePosition: "显示时跟随鼠标位置", - default: "默认", - quickSearch: "快速搜索", - rememberSelectionState: "记住选择状态", - onlyTileTakeEffect: "只在布局为“平铺”模式下生效。", - onlyListTakeEffect: "只在布局为“列表”模式下生效。", - left: "左侧", - top: "顶部", - right: "右侧", - enable: "启用", - lockClassification: "锁定分类", - unlockClassification: "解锁分类", - exportIcon: "导出图标", - information: "信息", - itemNameShowRowCount: "名称显示行数", - nameAlign: "名称对齐", - center: "居中", - webSearch: "网络搜索", - searchSource: "搜索源", - keyword: "关键字", - add: "新增", - wSearchKeyword: "{w}为搜索关键字。", - webSearchPrompt: '输入"冒号 + 关键字 + 空格"或"关键字 + 空格"使用网络搜索,例如使用谷歌搜索,输入":g"或"g",然后按下空格键,进入网络搜索模式。', - perfmon: "资源监视器", - computerManagement: "计算机管理", - openWith: "打开方式", - shutdown: "关机", - restart: "重启", - sleep: "睡眠", - lock: "锁定", - multipleItem: "多项目", - itemList: "项目列表", - selectedItems: "已选项目", - startMenu: "开始菜单", - loading: "加载中", - hoverMS: "悬停[毫秒]", - numberOfColumns: "列数", - globalShortcutKey: "全局快捷键", - backgroundTransparency: "背景透明度", - function: "功能", - checkInvalidItem: "检查无效项目", - useIconBackgroundColor: "使用图标背景颜色", - doNotDisturb: "勿扰模式", - doNotDisturbNote: "开启勿扰模式后,计算机在游戏、应用全屏模式下不会弹出Dawn Launcher窗口。", - createDesktopShortcut: "创建快捷方式", - fontSize: "字体大小", - network: "网络", - proxy: "代理", - useProxy: "使用代理", - username: "用户名", - password: "密码", - address: "地址", - proxyNote: "仅支持HTTP代理,填写“地址”时需要带通信协议和端口,例如:http://127.0.0.1:7890,如果没有用户名和密码,为空即可。", - color: "颜色", - fontShadow: "字体阴影", - mainColor: "主色", - secondaryColor: "副色", - mainFontColor: "字体主色", - secondaryFontColor: "字体副色", - borderColor: "边框色", - backgroundImage: "背景图", - backgroundImageMode: "背景图模式", - repeat: "重复", - notRepeat: "不重复", - zoom: "缩放", - backgroundImagePosition: "背景图定位", - bottom: "底部", - windowRoundedCorners: "窗口圆角", - doubleClickTaskbar: "双击任务栏", - refreshIconCache: "刷新图标缓存", - extraLarge: "超大", - titleBar: "标题栏", - title: "标题", - setClassificationIcon: "设置分类图标", - setIcon: "设置图标", - deleteIcon: "删除图标", - iconMode: "图标模式", - mode: "模式", - normal: "普通", - icon: "图标", - toRelativePath: "转相对路径", - toAbsolutePath: "转绝对路径", - delayDisplayMS: "延迟显示[毫秒]", - delayHidingMS: "延迟隐藏[毫秒]", - explorerMenu: "资源管理器菜单", - associatedFolder: "关联文件夹", - associatedFolderMessage: "设置关联文件夹会清空原分类下所有项目,请谨慎操作,是否确认?", - numberKey: "数字键", - none: "无", - ctrlNumberKey: "Ctrl + 数字键", - altNumberKey: "Alt + 数字键", - fixedClassification: "固定分类", - autoSwitchClassification: "项目列表滚动到底部或顶部时自动切换分类", - colonKeywordSpace: "冒号 + 关键字 + 空格", - keywordSpace: "关键字 + 空格", - excludeSearch: "排除搜索", - modifyIcon: "修改图标", - switchEnglish: "显示窗口时将输入法切换为英文模式", - startLocation: "起始位置", - startLocationNote: "无特殊需求为空即可", - batchOperation: "批量操作", - cancelBatchOperation: "取消批量操作", - openNow: "仅剩一项时立即打开", - backgroundImageTransparency: "背景图透明度", - batchDeleteItemMessage: "是否批量删除所选项目?", - turnOffMonitor: "关闭显示器", - showOnlyFiles: "只显示文件", - showOnlyFolders: "只显示文件夹", - description: "描述", - deleteClassificationMessage: "是否删除当前分类?", - batchMoveItemMessage: "是否批量移动项目?", - batchCopyItemMessage: "是否批量复制项目?", - downloadImageFailedMessage: "下载图片失败。", - downloadImageNotImageFormatMessage: "链接不是图片格式。", - refreshIconCurrentClassificationMessage: "是否刷新当前分类下所有项目图标缓存?", - relativeCurrentClassificationMessage: "是否将当前分类下所有项目都转为相对路径?", - absoluteCurrentClassificationMessage: "是否将当前分类下所有项目都转为绝对路径?", - batchRefreshIconCache: "批量刷新图标缓存", - batchConversionRelativePath: "批量转为相对路径", - batchConversionAbsolutePath: "批量转为绝对路径", - convertRelativePath: "转为相对路径", - convertAbsolutePath: "转为绝对路径", - deleteItemMessage: "是否删除项目?", - clearItemMessage: "是否清空当前分类下所有项目?", - modifyDataDirectoryMessage: "是否确定修改数据目录,点击”确定“后,将修改数据目录并重启应用程序。", - backUpData: "备份数据", - restoreData: "恢复数据", - aggregateClassification: "聚合分类", - aggregateClassificationNote: "说明:聚合分类可以将所有分类下的项目聚合到一起,按照设置的排序方式、项目数量进行排序和显示。", - aggregateClassificationSortNote: "如果选择按打开次数排序,需要进入设置-项目-打开-记录打开次数,开启记录打开次数功能。", - aggregateClassificationMessage: "设置聚合分类会清空原分类下所有项目,请谨慎操作,是否确认?", - itemNumber: "项目数量", - byLastOpen: "按最近打开", - hiddenItem: "隐藏项", - hiddenItemNote: "输入需要隐藏文件/文件夹名称,多个按英文逗号分割。", - svgCodeIcon: "SVG代码图标", - svgCodeIconPlaceholder: "请输入SVG代码...", - svgCodeIconValidationNote: "输入SVG代码后,需要先点击“校验”按钮。", - networkIcon: "网络图标", - networkIconPlaceholder: "请输入链接地址...", - networkIconNote: "支持JPG、JPEG、GIF、PNG、ICO、SVG格式图片。", - getIcon: "获取图标", - localIcon: "本地图标", - notRefreshIcon: "不参与刷新图标缓存", - targetNotExist: "目标不存在", - switchClassificationCollapseOtherSubClassification: "切换分类时收起其他子分类", - hideWindowFoldChildClassification: "隐藏窗口时收起子分类", - displayMainInterface: "显示主界面", - hideThisItem: "隐藏该项", - selectAll: "全选", - emptyRecycleBin: "清空回收站", - matchingConditions: "匹配条件", - historyRecord: "历史记录", - openAfterHideQuickSearchWindow: "打开后隐藏快速搜索窗口", - subClassification: "子分类", - fontWeight: "字体粗细", - fontLineHeight: "字体行高", - }, - traditionalChinese: { - setting: "設定", - about: "關於", - checkForUpdates: "檢查更新", - checkForUpdatesNewVersionMessage: '檢查到有新版本,點選"確定"跳轉官網下載最新版本。', - checkForUpdatesLatestVersionMessage: "當前已經是最新版本。", - checkForUpdatesFailedMessage: "檢查更新失敗,請確認網路。", - exit: "退出", - ok: "確定", - cancel: "取消", - newClassification: "新建分類", - newSubClassification: "新建子分類", - editClassification: "編輯分類", - editSubClassification: "編輯子分類", - edit: "編輯", - delete: "刪除", - cut: "剪切", - copy: "復制", - paste: "黏貼", - notFoundFileMessage: "找不到指定的文件", - notFoundFolderMessage: "找不到指定的檔案夾", - newItem: "新建項目", - clearItem: "清空項目", - open: "打開", - runAsAdministrator: "以管理員身份運行", - openLocation: "打開文件所在的位置", - moveTo: "移動到", - copyTo: "復制到", - name: "名稱", - shortcutKey: "快捷鍵", - shortcutKeyIncompleteMessage: "快捷鍵不完整,請完善您的快捷鍵。", - shortcutKeyConflictMessage(text, type) { - if (type == 0) { - return '與"' + text + '"分類快捷鍵產生沖突,請重新設定。'; - } else { - return '與"' + text + '"項目快捷鍵產生沖突,請重新設定。'; - } - }, - shortcutKeyConflictSettingGeneralShowHideMessage: '與"設定-常規"中的"顯示/隱藏"快捷鍵產生沖突,請重新設定。', - shortcutKeyConflictSettingItemSearchMessage: '與"設定-項目"中的"搜索"快捷鍵產生沖突,請重新設定。', - shortcutKeyConflictSettingQuickSearchShowHideMessage: '與"設定-快速搜索"中的"顯示/隱藏"快捷鍵產生沖突,請重新設定。', - editItem: "編輯項目", - colon: ":", - target: "目標", - browse: "瀏覽", - defaultIcon: "預設圖示", - url: "網址", - getUrlInfo: "獲取網址信息", - urlErrorMessage: "獲取網址信息失敗,請手動填寫。", - arguments: "參數", - file: "文件", - folder: "檔案夾", - gettingUrlInfo: "獲取中", - officialWebsite: "官方網站", - start: "啟動", - autoStart: "開機啟動", - showHide: "顯示/隱藏", - language: "語言", - theme: "主題", - search: "搜索", - doubleClickOpen: "雙擊打開", - general: "常規", - appearance: "外觀", - item: "項目", - layout: "佈局", - iconSize: "圖示大小", - backupRestoreData: "備份/恢復數據", - backup: "備份", - restore: "恢復", - openAfterHideMainInterface: "打開後隱藏主界面", - tile: "平鋪", - list: "列錶", - large: "大", - medium: "中", - small: "小", - chinese: "简体中文", - traditionalChinese: "繁體中文", - window: "視窗", - alwaysTop: "永遠置頂", - notPrompt: "不再提示", - feedback: "反饋", - system: "繫統", - computer: "計算機", - document: "文檔", - controlPanel: "控制面闆", - networkAndSharingCenter: "網路和共享中心", - recycleBin: "回收站", - fileExplorerOptions: "文件資源管理器選項", - programsAndFeatures: "程式和功能", - calculator: "計算器", - services: "服務", - commandPrompt: "命令提示符", - taskManager: "任務管理器", - registryEditor: "註冊錶編輯器", - powerOptions: "電源選項", - menu: "菜單", - close: "關閉", - edgeAutoHide: "停靠在桌面邊緣時自動隱藏", - startupTray: "啟動後最小化到繫統托盤", - save: "保存", - lockItem: "鎖定項目", - unlockItem: "解鎖項目", - copyFullPath: "復制完整路徑", - lockSize: "鎖定尺寸", - classification: "分類", - width: "寬度", - size: "尺寸", - hideLosingFocus: "失去焦點後隱藏", - mouseHover: "滑鼠懸停", - switch: "切換", - useItemOpen: "從程式外拖動文件到項目圖示上時用此項目打開文件", - hideTray: "隱藏托盤圖示", - middleClick: "中鍵單擊", - mouseWheel: "滑鼠滾輪", - remark: "備註", - show: "顯示", - sort: "排序", - ascendingOrder: "升序", - descendingOrder: "降序", - transparency: "視窗透明度", - byInitial: "按首字母", - recordOpenNumber: "記錄打開次數", - openNumber: "打開次數", - byOpenNumber: "按打開次數", - fixedPosition: "固定位置", - data: "數據", - dataDirectory: "數據目錄", - dataDirectoryNote: - '註意:無特殊需求請勿隨意修改數據目錄,如果修改數據目錄後,會在Dawn Launcher程式目錄的上一級目錄創建名字為".dawn_launcher_profile"的文件來存儲數據目錄地址,請勿隨意刪除。', - select: "選擇", - hide: "隱藏", - hideItemName: "隱藏名稱", - alwaysCenter: "永遠居中", - rewardAndSponsorship: "打賞&贊助", - showFollowMousePosition: "顯示時跟隨滑鼠位置", - default: "預設", - quickSearch: "快速搜索", - rememberSelectionState: "記住選擇狀態", - onlyTileTakeEffect: "只在佈局為“平鋪”模式下生效。", - onlyListTakeEffect: "只在佈局為“列錶”模式下生效。", - left: "左側", - top: "頂部", - right: "右側", - enable: "啟用", - lockClassification: "鎖定分類", - unlockClassification: "解鎖分類", - exportIcon: "導出圖示", - information: "信息", - itemNameShowRowCount: "名稱顯示行數", - nameAlign: "名稱對齊", - center: "居中", - webSearch: "網路搜索", - searchSource: "搜索源", - keyword: "關鍵字", - add: "新增", - wSearchKeyword: "{w}為搜索關鍵字。", - webSearchPrompt: '輸入"冒號 + 關鍵字 + 空格"或"關鍵字 + 空格"使用網路搜索,例如使用谷歌搜索,輸入":g"或"g",然後按下空格鍵,進入網路搜索模式。', - perfmon: "資源監視器", - computerManagement: "計算機管理", - openWith: "打開方式", - shutdown: "關機", - restart: "重啟", - sleep: "睡眠", - lock: "鎖定", - multipleItem: "多項目", - itemList: "項目列錶", - selectedItems: "已選項目", - startMenu: "開始菜單", - loading: "加載中", - hoverMS: "懸停[毫秒]", - numberOfColumns: "列數", - globalShortcutKey: "全局快捷鍵", - backgroundTransparency: "背景透明度", - function: "功能", - checkInvalidItem: "檢查無效項目", - useIconBackgroundColor: "使用圖示背景顏色", - doNotDisturb: "勿擾模式", - doNotDisturbNote: "開啟勿擾模式後,計算機在遊戲、應用全屏模式下不會彈出Dawn Launcher視窗。", - createDesktopShortcut: "創建捷徑", - fontSize: "字體大小", - network: "網路", - proxy: "代理", - useProxy: "使用代理", - username: "用戶名", - password: "密碼", - address: "地址", - proxyNote: "僅支援HTTP代理,填寫“地址”時需要帶通信協議和端口,例如:http://127.0.0.1:7890,如果沒有用戶名和密碼,為空即可。", - color: "顏色", - fontShadow: "字體陰影", - mainColor: "主色", - secondaryColor: "副色", - mainFontColor: "字體主色", - secondaryFontColor: "字體副色", - borderColor: "邊框色", - backgroundImage: "背景圖", - backgroundImageMode: "背景圖模式", - repeat: "重復", - notRepeat: "不重復", - zoom: "縮放", - backgroundImagePosition: "背景圖定位", - bottom: "底部", - windowRoundedCorners: "視窗圓角", - doubleClickTaskbar: "雙擊任務欄", - refreshIconCache: "刷新圖示緩存", - extraLarge: "超大", - titleBar: "標題欄", - title: "標題", - setClassificationIcon: "設定分類圖示", - setIcon: "設定圖示", - deleteIcon: "刪除圖示", - iconMode: "圖示模式", - mode: "模式", - normal: "普通", - icon: "圖示", - toRelativePath: "轉相對路徑", - toAbsolutePath: "轉絕對路徑", - delayDisplayMS: "延遲顯示[毫秒]", - delayHidingMS: "延遲隱藏[毫秒]", - explorerMenu: "資源管理器菜單", - associatedFolder: "關聯檔案夾", - associatedFolderMessage: "設定關聯檔案夾會清空原分類下所有項目,請謹慎操作,是否確認?", - numberKey: "數字鍵", - none: "無", - ctrlNumberKey: "Ctrl + 數字鍵", - altNumberKey: "Alt + 數字鍵", - fixedClassification: "固定分類", - autoSwitchClassification: "項目列錶滾動到底部或頂部時自動切換分類", - colonKeywordSpace: "冒號 + 關鍵字 + 空格", - keywordSpace: "關鍵字 + 空格", - excludeSearch: "排除搜索", - modifyIcon: "修改圖示", - switchEnglish: "顯示視窗時將輸入法切換為英文模式", - startLocation: "起始位置", - startLocationNote: "無特殊需求為空即可", - batchOperation: "批量操作", - cancelBatchOperation: "取消批量操作", - openNow: "僅剩一項時立即打開", - backgroundImageTransparency: "背景圖透明度", - batchDeleteItemMessage: "是否批量刪除所選項目?", - turnOffMonitor: "關閉顯示器", - showOnlyFiles: "只顯示文件", - showOnlyFolders: "只顯示檔案夾", - description: "描述", - deleteClassificationMessage: "是否刪除當前分類?", - batchMoveItemMessage: "是否批量移動項目?", - batchCopyItemMessage: "是否批量復制項目?", - downloadImageFailedMessage: "下載圖片失敗。", - downloadImageNotImageFormatMessage: "鏈接不是圖片格式。", - refreshIconCurrentClassificationMessage: "是否刷新當前分類下所有項目圖示緩存?", - relativeCurrentClassificationMessage: "是否將當前分類下所有項目都轉為相對路徑?", - absoluteCurrentClassificationMessage: "是否將當前分類下所有項目都轉為絕對路徑?", - batchRefreshIconCache: "批量刷新圖示緩存", - batchConversionRelativePath: "批量轉為相對路徑", - batchConversionAbsolutePath: "批量轉為絕對路徑", - convertRelativePath: "轉為相對路徑", - convertAbsolutePath: "轉為絕對路徑", - deleteItemMessage: "是否刪除項目?", - clearItemMessage: "是否清空當前分類下所有項目?", - modifyDataDirectoryMessage: "是否確定修改數據目錄,點選”確定“後,將修改數據目錄併重啟應用程式。", - backUpData: "備份數據", - restoreData: "恢復數據", - aggregateClassification: "聚合分類", - aggregateClassificationNote: "說明:聚合分類可以將所有分類下的項目聚合到一起,按照設定的排序方式、項目數量進行排序和顯示。", - aggregateClassificationSortNote: "如果選擇按打開次數排序,需要進入設定-項目-打開-記錄打開次數,開啟記錄打開次數功能。", - aggregateClassificationMessage: "設定聚合分類會清空原分類下所有項目,請謹慎操作,是否確認?", - itemNumber: "項目數量", - byLastOpen: "按最近打開", - hiddenItem: "隱藏項", - hiddenItemNote: "輸入需要隱藏文件/檔案夾名稱,多個按英文逗號分割。", - svgCodeIcon: "SVG代碼圖示", - svgCodeIconPlaceholder: "請輸入SVG代碼...", - svgCodeIconValidationNote: "輸入SVG代碼後,需要先點選“校驗”按鈕。", - networkIcon: "網路圖示", - networkIconPlaceholder: "請輸入鏈接地址...", - networkIconNote: "支援JPG、JPEG、GIF、PNG、ICO、SVG格式圖片。", - getIcon: "獲取圖示", - localIcon: "在地圖示", - notRefreshIcon: "不參與刷新圖示緩存", - targetNotExist: "目標不存在", - switchClassificationCollapseOtherSubClassification: "切換分類時收起其他子分類", - hideWindowFoldChildClassification: "隱藏視窗時收起子分類", - displayMainInterface: "顯示主界面", - hideThisItem: "隱藏該項", - selectAll: "全選", - emptyRecycleBin: "清空回收站", - matchingConditions: "匹配條件", - historyRecord: "歷史記錄", - openAfterHideQuickSearchWindow: "開啟後隱藏快速搜尋視窗", - subClassification: "子分類", - fontWeight: "字體粗細", - fontLineHeight: "字體行高", - }, - }, - // 背景图 - backgroundImage: null, - // 图标 - iconDataMap: null, - }, - mutations: {}, - actions: {}, - modules: {}, -}); diff --git a/src/renderer/views/about/Index.vue b/src/renderer/views/about/Index.vue deleted file mode 100644 index bf17f72..0000000 --- a/src/renderer/views/about/Index.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - - diff --git a/src/renderer/views/classification/AddEdit.vue b/src/renderer/views/classification/AddEdit.vue deleted file mode 100644 index 9c4c6f2..0000000 --- a/src/renderer/views/classification/AddEdit.vue +++ /dev/null @@ -1,234 +0,0 @@ - - - - - diff --git a/src/renderer/views/classification/Aggregate.vue b/src/renderer/views/classification/Aggregate.vue deleted file mode 100644 index 82d7fbd..0000000 --- a/src/renderer/views/classification/Aggregate.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - diff --git a/src/renderer/views/classification/AssociatedFolder.vue b/src/renderer/views/classification/AssociatedFolder.vue deleted file mode 100644 index 2b32fe5..0000000 --- a/src/renderer/views/classification/AssociatedFolder.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - - - diff --git a/src/renderer/views/classification/Icon.vue b/src/renderer/views/classification/Icon.vue deleted file mode 100644 index 3069198..0000000 --- a/src/renderer/views/classification/Icon.vue +++ /dev/null @@ -1,12281 +0,0 @@ - - - - - diff --git a/src/renderer/views/classification/js/index.js b/src/renderer/views/classification/js/index.js deleted file mode 100644 index 06e8912..0000000 --- a/src/renderer/views/classification/js/index.js +++ /dev/null @@ -1,59 +0,0 @@ -import store from "@/store"; -import CommonJS from "@/common"; - -export default { - /** - * 根据ID获取分类 - * @param parentId - * @param childId - * @returns {null|*} - */ - getClassificationById(parentId, childId) { - if (parentId != null) { - let classificationParent; - for (let c of store.state.list) { - if (c.id == parentId) { - classificationParent = c; - break; - } - } - if (classificationParent != null && childId != null) { - if (!CommonJS.arrayIsEmpty(classificationParent.childList)) { - let classificationChild; - for (let c of classificationParent.childList) { - if (c.id == childId) { - classificationChild = c; - break; - } - } - return classificationChild; - } else { - return classificationParent; - } - } else { - return classificationParent; - } - } - return null; - }, - /** - * 转换ID - * @param id - * @param parentId - */ - convertClassificationId(id, parentId) { - return { classificationParentId: parentId != null ? parentId : id, classificationChildId: parentId != null ? id : null }; - }, - /** - * 获取分类图标 - * @param c - * @returns {string} - */ - getIcon(c) { - if (c.icon != null) { - return c.icon + " "; - } else { - return ""; - } - }, -}; diff --git a/src/renderer/views/data/BackupRestore.vue b/src/renderer/views/data/BackupRestore.vue deleted file mode 100644 index 79324c7..0000000 --- a/src/renderer/views/data/BackupRestore.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/src/renderer/views/index/Index.vue b/src/renderer/views/index/Index.vue deleted file mode 100644 index 146b729..0000000 --- a/src/renderer/views/index/Index.vue +++ /dev/null @@ -1,4246 +0,0 @@ - - - diff --git a/src/renderer/views/index/js/index.js b/src/renderer/views/index/js/index.js deleted file mode 100644 index ce7bc92..0000000 --- a/src/renderer/views/index/js/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export default { -}; \ No newline at end of file diff --git a/src/renderer/views/item/AddEdit.vue b/src/renderer/views/item/AddEdit.vue deleted file mode 100644 index 5da9f51..0000000 --- a/src/renderer/views/item/AddEdit.vue +++ /dev/null @@ -1,1564 +0,0 @@ - - - - diff --git a/src/renderer/views/item/ItemList.vue b/src/renderer/views/item/ItemList.vue deleted file mode 100644 index 8b4b44d..0000000 --- a/src/renderer/views/item/ItemList.vue +++ /dev/null @@ -1,523 +0,0 @@ - - - - - diff --git a/src/renderer/views/item/SVGIcon.vue b/src/renderer/views/item/SVGIcon.vue deleted file mode 100644 index e63c605..0000000 --- a/src/renderer/views/item/SVGIcon.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - diff --git a/src/renderer/views/item/URLIcon.vue b/src/renderer/views/item/URLIcon.vue deleted file mode 100644 index d5a1839..0000000 --- a/src/renderer/views/item/URLIcon.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/src/renderer/views/item/js/index.js b/src/renderer/views/item/js/index.js deleted file mode 100644 index a3a0dba..0000000 --- a/src/renderer/views/item/js/index.js +++ /dev/null @@ -1,222 +0,0 @@ -import store from "@/store"; -import CommonJS from "@/common"; -const { ipcRenderer } = window.require("electron"); - -export default { - /** - * 运行项目 - * @param item - * @param location - * @param recordQuickSearch 记录快速搜索数据 - */ - itemRun(item, location, recordQuickSearch) { - if (item.type == 4) { - if (!CommonJS.arrayIsEmpty(item.itemList)) { - for (let iItem of item.itemList) { - ipcRenderer.send( - "itemRun", - JSON.stringify({ - item: iItem, - location: false, - recordQuickSearch: recordQuickSearch != null ? recordQuickSearch : false, - }) - ); - } - } - } else { - ipcRenderer.send( - "itemRun", - JSON.stringify({ - item: item, - location: location, - recordQuickSearch: recordQuickSearch != null ? recordQuickSearch : false, - }) - ); - } - if (store.state.setting.item.openAfterHideMainInterface == true) { - ipcRenderer.send("hideMainWindow"); - } - }, - /** - * 查询项目 - * @param classification - * @param id - */ - getItemById(classification, id) { - for (let item of classification.itemList) { - if (item.id == id) { - return item; - } - } - return null; - }, - /** - * 设置项目分类ID - * @param item - * @param classificationParentId - * @param classificationChildId - */ - setItemClassificationId(item, classificationParentId, classificationChildId) { - if (classificationChildId != null) { - item.classificationParentId = classificationParentId; - item.classificationId = classificationChildId; - } else { - item.classificationId = classificationParentId; - item.classificationParentId = null; - } - return item; - }, - /** - * 获取标题 - * @param item - */ - getItemTitle(item) { - let name = this.$store.state.currentLanguage.name + this.$store.state.currentLanguage.colon + item.name.replace(/\\n/g, " "); - if (this.$store.state.setting.item.openNumber) { - name += "\n" + this.$store.state.currentLanguage.openNumber + this.$store.state.currentLanguage.colon + (item.openNumber == null ? 0 : item.openNumber); - } - if (!CommonJS.strIsEmpty(item.remark)) { - name += "\n" + this.$store.state.currentLanguage.remark + this.$store.state.currentLanguage.colon + item.remark; - } - return name; - }, - /** - * 设置拼音 - */ - setPinyin(item) { - // if (hasChinese(item.name)) { - // // 拼音 - // let pinyin = cnchar.spell(item.name, "array", "poly"); - // let pinyinList = []; - // if (pinyin != null && pinyin.length > 0) { - // for (let py of pinyin) { - // let newList = []; - // let list = py.replace("(", "").replace(")", "").split("|"); - // for (let str of list) { - // if (!newList.some((nStr) => str == nStr)) { - // newList.push(str); - // } - // } - // pinyinList.push(newList); - // } - // } - // if (pinyinList.length > 0) { - // item.pinyin = merge(pinyinList); - // } - // // 首字母 - // let pinyinFirst = cnchar.spell(item.name, "array", "poly", "first"); - // let pinyinFirstList = []; - // if (pinyinFirst != null && pinyinFirst.length > 0) { - // for (let py of pinyinFirst) { - // let newList = []; - // let list = py.replace("(", "").replace(")", "").split("|"); - // for (let str of list) { - // if (!newList.some((nStr) => str == nStr)) { - // newList.push(str); - // } - // } - // pinyinFirstList.push(newList); - // } - // } - // if (pinyinFirstList.length > 0) { - // item.initial = merge(pinyinFirstList); - // } - // } - }, - /** - * 设置缩写 - * @param item - */ - setAbbr(item) { - if (!CommonJS.strIsEmpty(item.name)) { - let name = item.name.replace(/\\n/g, " "); - let split = name.split(" "); - let abbr = ""; - for (let i = 0; i < split.length; i++) { - if (!CommonJS.strIsEmpty(split[i])) { - abbr += split[i].slice(0, 1); - } - } - item.abbr = abbr; - } - }, - /** - * 获取名称 - */ - getName(name) { - return name.replace(/\\n/g, " "); - }, - /** - * 排序 - * @param type - * @param key - */ - sort(itemList, type, key) { - if (type == "initial") { - return itemList.sort((x, y) => { - let xn, yn; - if (!CommonJS.strIsEmpty(x.pinyin)) { - xn = x.pinyin.toLowerCase().charAt(0); - } else { - xn = x.name.toLowerCase().charAt(0); - } - if (!CommonJS.strIsEmpty(y.pinyin)) { - yn = y.pinyin.toLowerCase().charAt(0); - } else { - yn = y.name.toLowerCase().charAt(0); - } - // 判断是否是数字 - if (isNaN(xn) == false && isNaN(yn) == true) { - // xn是数字而yn不是,返回1 - return 1; - } - if (isNaN(yn) == false && isNaN(xn) == true) { - // yn是数字而xn不是,返回-1 - return -1; - } - if (xn < yn) { - return -1; - } - if (xn > yn) { - return 1; - } - if (xn == yn) { - if (x.name < y.name) { - return -1; - } - if (x.name < y.name) { - return 1; - } - } - return 0; - }); - } else if (type == "openNumber" || type == "lastOpen") { - return itemList.sort((x, y) => { - let xn = x[key] == null ? 0 : x[key]; - let yn = y[key] == null ? 0 : y[key]; - if (xn < yn) { - return -1; - } - if (xn > yn) { - return 1; - } - if (xn == yn) { - if (x.name < y.name) { - return -1; - } - if (x.name < y.name) { - return 1; - } - } - return 0; - }); - } - }, - /** - * 是否是绝对路径 - */ - isAbsolutePath(path) { - const regex = /^[a-zA-Z]:\\/; - return regex.test(path); - }, -}; diff --git a/src/renderer/views/item/js/systemIcon.js b/src/renderer/views/item/js/systemIcon.js deleted file mode 100644 index d5eeb8b..0000000 --- a/src/renderer/views/item/js/systemIcon.js +++ /dev/null @@ -1,59 +0,0 @@ -export default { - computer(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAACAAElEQVR42u293e/2XXYXtNb1zEsBkeHEBmnpGBM1vpBpEBUV6RwREg2t0USPxFNjYvXMo2lPPDOFQw9M/ANMLAZCCSpIaxooZAYLMi1EpmJJMbEvgJ155pnu5cFen5e1r+t3z/3cvyududvvbp+5f7/r9732d++118tnvey9I652tatd7WpXu9rVrna1q13tale72tWudrWrXe1qV7va1a52tatd7WpXu9rVrna1q13tale72tWudrWrXe1qV7va1a52tatd7WpXu9rVrna1q13tale72tWudrWrXe1qV7va1a52tatd7WpXu9rVrna1q13tale72tWudrWrXe1qV7va1a52tatd7WpXu9rVrna1q13tale72tWudrWrXe1qV7vax2v57A7/zI//1Pdl3f5oVH1/ZHz2Wz3Bq13tvW8VX4rML9Wvff2H/8jn/8BXntn10xTA//Dnv/iZ3/rB+kJF/eAnbrf4HZ/5x+LTn/zkrzutrna132jtV7/2tfjqr349Pvzoo8jIP/6H/63f958/q++nKYAf+/G/8sVPf+KTn/vGh/8ovvKVvxM//dN/PX7xF3/xrb5bVS8PMPONf39DpxH93Tf1kRHx5t5LT1bpt6PPtx9njR/rDd/N/cq37su/UG/1/Rf6evDr2SfodtLvnp5139+DL2GcGfdj35+90ME5zjS6xktrW/f9vGHe5xi/Ke0+xp/PWe33TL76rt/9u+O7v/u741//N/5gfPiNiA+//tGXvro++PwPfP57fzle2Z6iAP7sX/yrP/Jbv+MTP/g3fvpL8RM/8b99rO8+Zvx3FPpe+dcJ1dGfun1le8zxbyuojwXrXhDebZwPhOB44Zv6FeM+Elb78jHReqGve1F/QWAf6IS3E/y3IEPOz+qt+3owxhcG9Mb1jIiM1Nxr8/T3fd8fit//B/7N+JV/8KtPQQKvVgB/5s//5Gd/22/77X/nT/+P/338/M//vRfpOqb2lhLo38vjcx98RUQe1nm/5u0t9PkOjBMC+jZKAGNFXxkRq7+VNeVAL317ZVdR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" - : "data:image/png;base64,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"; - }, - document(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,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" - : "data:image/png;base64,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"; - }, - controlPanel(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,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" - : "data:image/png;base64,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"; - }, - networkAndSharingCenter() { - return "data:image/png;base64,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"; - }, - recycleBin(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAACAAElEQVR42u39ebRl6XUfhv32Pve+qu6uHtDzBPSMiZAAggBBaVEAKTKyOYiSJU4gHbXjZK384cUkTrLiKB4kSuSSl5ed5cRqZ0lKsizLYuTQFqkppki2AJAiRYEiQQogpp67xp67q+pV1Xv3fvuXP/be3/edc+/rgeiueu/hbqD63eHcM3zn7Pm39wY2tKENbWhDG9rQhja0oQ1taEMb2tCGNrShDW1oQxva0IY2tKENbWhDG9rQhja0oQ1taEMb2tCGNrShDW1oQxva0IY2tKENbWhDG9rQhja0oQ1taEMb2tB+I7nSJ/BO0G9/8bHvEuAvAfgukhARAKyXnJ/5324ZSBCI7eHfA0Bum69BCPxv7jb30+8bdV/tF/mTeoxuH7l9fUtiLQlyb3Wb/pz7/eQNzjOo20h9Nz5MfJ7n1V9L22+9CKC/3ljmfr3Z7UPaMtfzbZe6eq3TNYrDrd3Or7W7lunGkmsh7Zq7c6jrRK78XgSfJeSnP/5HHvrsH/KR3Ld06ATAF77y1MNWlv/3c9vnfxmUU6rc3traWogov/G9b+ibhUiT3d3d+WJZ5ke2jvzRo0eO/LH5bP5TH/7AfX/7Sp/b20l6pU/g7aQvfe2Zh4X2X7129rVfXOzsnii23AUAMx46Qbehd5b8mXH2uLC9/ZXXzr72i6T9V1/62jMPX+lzezvp0AiArzx+4mFj+esvvfLyP97ZXZynUEATAFA9NJe5octItHiGFFguludeeuXlf2wsf/1Lj584NELgUHDG48848z/3wov/087O7nkgbh4AQsTMrvQpbuiAEc2a1WgePlksluefe+HF/wm2fORrTx0OIXDgBcBTz5x+eLHkI2eee+FXFovFecDjPQJBCQk+upkb2tCbIFWF0QRQEB7rNDPs7i62n3vxhX9qxkceP3H6wAuBAy0Anjnx/MML2iOnzzz/6O7u7nlARxekUBiwGnLe0IbegIwUVYAwQCggRQSiClza2b1w+szzj3Jpjzxz4vkDLQQOrAA4cfrFh43lkVNnnnt0Z2dnG0IRmlAgIIUMF8C4cQE29IciGgUWykOkZpEUip3FYvvkmeceLSyPnDh9cIXAgRQAp1985eFi5ZHjZ55/9NLu7jZU/VLG6h8UE8UmCLiht0akiRlg8GdIHEIhxswMuEu5u7vYPnH6+UeL8ZHTz794IIXAgeOM51985eGyXD5y4sxzj+7s7m5rBbdYaH0RAtUCMELKJgawobdIAhPQJN1IGkVFAVCIeOoE2Fnsbp8489yjxfjI8y+ePXBC4EAJgBdfOf9wIR85fur5Ry/t7G7334koRNrlKMSjtzAoXEBc6fPf0EEjhZmJVgQjhTRBKJeEbO7sLN0S4OKRF88eLCFwYATAK+fPP2y2fOT4Kdf8kqc+ujmh+dkDfzKau6ENvXkyQgRpRUr3THWupiBtAVza3d0+fur5R21hj5w9e/7ACIEDIQDOX7z4cFnYI8dPhs9fb0VDd7cLclx4oam7AR4A3KABN/RmyZ8VixhAPDcKqCY4sIcINIT5zu5i+/jp5x/dtfLI2fMXD4QQ2PcC4PzF3YcXu8tHnj313KOXdne3ZVK+UC2B+GMg3GZzSS0Q4Yb5N/QWicbqUAopNIjFZ2LsHrsQCiEHLl3a3X725POPlrJ85PzF3X0vBPa1ALi4u/twWS4fefb0C49e2llsA14ZtnLSIZXpJpvA2oVtzP8NvWWKrFIJIFCvc2hrCugM7g6E3rm0u9h+9vRzjy6Xi0cu7i73tRDYtwJgd7l8eLEojzx98syjl3YW27m40uz/lQvRVuAqBgAGoYlAsEEDbuhNE5dLqYrDTLISHED33MnI+lRUOQAFcGlnsf3syeceXSwXj+zuYyGwLwXAcsmHF4vlI08fP/3ozs7OBUhb3HVXoBA0M18hXnoufQxgQxt6s6SqbgRYQ5CKQMjAAmhDnPaZp3QD/IlTXNxdbD994syjy1IeWS65L4XAvhMAJB9elsUjTxw//ejF3cU2oQRHblaceO3w4AuuCpNI0/iOqkCgUYwbOPCG3hyZmSsUjSBgBAK1JgCsqhVGmrl3FbRTVRcvXtp+8vipR5dl8Qi5/4TAvhIAJB9eLJePfP2Zk49evLi7DeYy+1+BQuvaNrssb4qGLWaJ/e+uTrBxATb0Jimen4Yd6Z80/5cuaU/ecqZLE9IAKLYv7W5//ZkTjy6Wy30nBPaNACD58HJZHvnqUycevXjx0jZggMRCe+wVzZz39+MWPwoyoL9CQsWxAbJh/A29eeKkelSqnhEhKMxGYtk5bKxlmhXgNgPymd25tNj+6lMnHl0uy74SAvtCACTzf+Wp467587QYy8exHy8VA9TAQAL3x0hxOLCx+gibTMCG3ioZIYiIPy2CynuSxDOp8Q4wAlVh0d9fvLi7/ZWnju8rIbAvBACAv/y1p48/unMp4b0WXN75V93flVhAfBBBv1oHoAAQrZ0MGzjwht4MjVnCvCOsCClg10ZU1rGOYeS2rmxjuHhxd/trTx9/FMB/eaWvdPVqrxzd4FLS0GKoTkaDSucFjCDAVpFYrF+pI7ZIsbACamunDW3oDclgNAlMCWA2KgWuyEBYC/bVJytjBPG6NaJGc1/NLQKzcqWvFABmV/oEAODlV149+f773/0DwzAMV/pcNrShd5rMrLz40iv/7EqfB7BPBMDZc2d/+/z2hZuG2UBV5UwHDINSdMBsNlBCAhuzrz7T0mL28gcseveLEaBIQLlFTCCmqiYCExFGv3ySFBHpWtIzYj31dfSGl9q83wBoagTS38eXfYiS0xb2RkCFMApUSIs+/QrSKJKfqe+bNg5xCuLzqlZWOuQ3U0j8cHXEQLtg5FqS7Ser+06N1w5B6/bXHV3ET1UlLzHWom5pyPj46ntbe7y0okXBsOASBBZrBZoDQ9gsxbpQ9TIIg3THJqweUlRZP4v7JeZ5frOixag0G4xUMxsAKAk12jBEfwnVwQ1P6QCDIlAZSFBoBhbD0pa6XJqYLcXMxJZFlsX+4BtimreJ9oUAEJHjAjJKsCTGNlSmHyBu6gfzh3vFZBLSkLMoIvTH2C9DGNRhGCPmFmH93D/0/SEYxfsLsD0mjfmNTINvxPwCoTeOiNkdFrtWCWkhfp3B6LD6YAP9jnJ/+Tskg8Z55eyNvjA1d9Exf5VujPWojC/xnh3jA72waxclFGHH9P4+jwW0o2fwS0XjkiqLwhk/4zjtQrvxH/XeAiF0FBSN5hzxsXQnbO1H/in7YzXjnOb48Mr4XZcoUbfrTUEYYR4wglUsiSsCkpJCSIdhLIDdsocO7TkgIIb6DNXfEkKwnPpG+ebtoH0hAGzJ4zKLZ1jIqp0ZI1zyNkosrKI+eW1ADVFH74QIMBCDqAuR6OAgAhLSlGJOwmmCgdKmwrTHKRNC5MSby1MTetoxzyNIm2CBumavzI+mdf2BaczYWwIy0pCT/XfnYCG4+ik3khbN+JLy6+7Y3f4p1TpyI6ufDARavFcBU/PbiPFULNmv7rgXBMJW1MW6JhniSWHogiAYsn9eWPccrzSUg0VmyJlcoEwrQHQseHJ9rVvzkDJ+qiWWyELGd8Ol+vvn50NREcogdJMuLZlccBcCBqorpSIQOfkNM87bQPsiCChzPe71/CSLP6hMVnNVQ4U3+vFf9JZtWgtSPyT6Mk261o799OO0mjGduwjtOlaAcWzmTCt24R20Y7KZyNWqHDNqPugMjknmFhX2Wji1fn5PWH1w0w3q929uPKHqUnKk+YkUBgh3arqOq9aHhDAdTdfqBI9OYRjpDNUdW+44krmWdvtImLmWz+vniPkNHoNTATuh1+2zrXBnUXSmfXMBeouDzowwq6fmAj6/N0PtKTkuJ29Cg9aeG8S6jtevWWFVY5Bm+RwN+8IC2BcCoOzs/AE7DeiKn26/G3tDzv8fDCYjLUNU3uie2uKmXHJB/13145ECgsF3IQxU4kGpjxN6C4CVf+qNjhPRFARsn1nVHBQVQlMgcaLl/YCsUrC2NosbJtXPDYVFN8nBOqLPrRh/KOPztATaQ1tNnt5HCKxLEzJ1v5287P385vfrhEl1stC95myxBv8s+dm/T+bPhbYmStNcIiaj3mQUZ8gDdMwfN08gHjdweUVVoao4Y4bKryaWY8xzlmH6XxiDSn2dazaqmiu+J9Zns9QTI4Dlpd3Tbw/3fGO0LwQA3/Wu10bKkm6WSn3Qmitd/XOBl/u0aZA1wOWlmS2454iCiZ87NgJaQC8Y39OSvSXv926kd3qNX/17ILV3rV20EGqpcdCZuW4OZ40zqyAQcZkYUU5NH7eqnGT40FRMTeTCI99XQco+yNdW2YUU4ss4HDFyM7rgnmtlYhTkq6+Zd8m6IizGNTUBlwI814RIpveTsFzPseZv552eSj0e2AX8SJjIhPlFG5P2z4JbGaymZDw+DLOgBZrC9RKIrwXBiCeDTfMESFWqnO3NgrpOBuzsnNtYAEkP3XTTWZJncyHTL6sLW3UlkBqK7Dxw6c1tdhrDPypez1ljhsiYXxPPzc8H4nFivqdC2qOGmtb1A4UmqVofIaTcoqHjkiPQNInwJ+P3VkC1N3r0o8QD6QwBdkwA9NfeflCFYbgvUrV9Y8awrihd5HzK+CuRfcdl+LqE5pdcf9GUcJ1PMXIzGE8dO8iHB04BjKz08TVivF/fpmdygbJqX8ub68LHmd93YehMoJRmGSeJ1Y/msjRjDj8O6cfoLwNflGBwkQwOS/Nr2jWjWF62Cy2C577zO7/z3DvCTG+R9oUAAACR4Vm/N5ZBQBcGLPXBH/ulOn3qMw3YrLe8If46jhOftbgAEGEk52lOnsN8nqpPx9RYbsp3/oGnq6Y+vWtA6xh/Yv63s+/sixbdp6Xnw475JTdr1gzZfP18vSIbkqsjrdeFCuqfLrVXd7Aa3W/ArZpIYT5SvaCp49RT2laNLCqkgumLp6+vIwu7d96axvcXU4h4JwTQtLvlT1YfmeoyMp+Zcf0ZRMBSlU1GUtnFcDTuEbt+Faw3qz9itTxEvv6N8MrbSftGAMDKH1QLqQbi6pM9iienNoiR36PR8o2FWrWgzwqJkSEtDtAJCowtAEQwuu2WvYkImyinsAAIqVZBn+bro/vorMpq/rddd66FVj8/GFX6Q2YcsypuyfTdKNWXLkUNsqG5ScnssZZgZ9p3TO/vPeK/Lp/vWt+dsfR6G4/28Y1eAFbGtM7CiCOPUovxjYhymtNP5stoP81GllYfaxgFcrogrXSsrdI9GHkc8Q5TsVYjASKa5SZ9XToA1BQh072wwtRvEPIs9gntHwGg+hpQBWz4g5LBq3iAMsCl+XShz8+0/P/E581kd9/ZJYKDfUTfmtTJPTc+782CcRqIrRkJUwmOGbrb1s+zMf1I63cprBQ/+dBVy7+mO0PISYNCScvhcwXcM8oxujswzlbVtB57IaArLkENeHRmvvTXBXYejOjY0mFYWtpa6LS4ykgM9C5Ve5dWwDi676Y+M7VnXYR/Sp1Vw8n7al5ZRvrZqe20I8ZWHDpLi5quUF0xTxybRd8Qf6qLYWMBTGlZFl9ufFpN9Uhpjf2/XuOPYHxhh6akbV+0rWNW4KTTQKb6gtF67WrxWd7cUZCvMj9bLtvTfO2Brxqw2fpVBa3x8yOoFs3NmykvzYfvATlpHeXaZfeKkY3CXmBFtqTm+cfLNELUoVkFvVBIre9L1LRtApVcC6elI6zArW79zE92DN5Zje57FiM0PJzx25c5vicpGD8j+6hMyib4iHFwseqIhkq0bqfu37fgft5Lt2DqRn7eNe5pNTXr9yckiygJUJX7wv8H9pEAmM1mr3Xazo1WKz1Ot2qTRpkREFpo9GrEBaCkZ8RmI7jPn//Ck21YGel4U5sgyPfQ5tcD4CjAh/58QyBUISCc+K2s/+hZB6ILyk3shwQsClq0P/3s2MJlX48qZB83qYDIyLCyBvnGAT/rHgybBFmTGYUMC7pn9FyDmt/vobu5tggIL9v7MZKvrk2YDOM1a64GUutWxkfcy+r3S4uR1OOlAK0Gp0v5iB2KKtgHR9zVB8CRJK1BvXxeoRlzyKULbIi1AKoQwiU3FsCUyu7ul30Qq+difSGbD9v5bmiO3ChnDaDCfydaz6m3gkcWwMSfzq3R7blGsc19QvZBpc4qSGGQgJ8K380NV7RpMH4F6XQaX9JHlT61h8T1dydaXYJqgYaGnVYMpJBNcx8TFyBeZRazjwgA1dyOD8M8jqCnILV+D+cN/vX0amO+Ub18HkP6a/Eful/f+/9kNdE75o+/Up8VVinQTP3eh+f4ofIsQmoDGZ1WuAKjexY/oog2peSpYGjcLVE4LDzcNEeKgqVc2lgAU3rwwQePEyM/HPmCpHTOQT4MjRsaEag3K+C5gQCh1SR25vdXEkth7svYz/dgUcXy+83M96nhUR9ajiyPia9PiFZGyHRlX6DTc2yPvokrai6A9T5/5vJjmbr9ZeaiC2CNTPt+7cY+Pugl1NoWtIsxNARfFYJ1b9Jr5QAjAWxMXxk9sQ1rUX0hXLSmRtMS6AOs3R0cuVm9wzXCkTWRFs+ROvCqzx6wNZDscCZNTUhTSlXK1YO2RS0l8P9kzqYgCHz84x//2ptmjHeY9o0AAAACx4FkhMS5WU2p1CAT6sNdf5pFOnm7Q4tCRNkagTSzzvcXWkEQBTp9FRJSq2dXmGoF1LQemt8d9eOhbDIFVsNsGAX3wseXzs9HPfv4bfXzk3kbs8NjEmN3o2YB2hXKJIBXL22s8buntvo5HVP1ENuxe1O/MNfGBJjmflbrVWFbF3UdkLoJdFpXwafNKosaEPYBPu2FdF6rjBcBPW+GRUVYC8pEkVA8NKCOgdS1L0D8VLqqKE8zuuRTieeCMTogjkcamKhMdwX2BQIwaV8UA1UizmbpZ/sIifxbydEwfP4sBqqxngCaTIWEA2+CUdJVyMOMwe11+kjfCyoDfNLltju3onvwxhqtA8jUgp3+GmIjirRcY6v8a4zeinaQ342f8So0eqZz6qL7HbAnNXymGnt9EHjAUZAPNcVZc5Ta1ju+HmcOAERAgOPayZWUYq57CNzU9q6cR7GftDDyHJprwc7qGWn+/OsXFTtVj8j11Ub9/aUPlRjFnbzytLWs0wYCaseYNJ9xBWYonqzYFwjAtpT7iAj7gy5gHrAsoOf6PgCUQB/WYpikXP8VjTYu4eviCh1Md6TZQo1NK8DYYffjiJVRRp8n22eQsjJ/tQ+6et76nxY3mFYLYuVfPQO24N5Ey49km1XMUmfeN5Vn4/VtFW3ClhZtZjVtGqPrsEb1qF2ATzANS4wsgGTOjKMYOoXQx1wcjNuDuWL3bWmaJVmNRsDcnRjHFfpzWTmvelMtTqIumIAOHrCaafZlE/P4BWt8gqS462cbC2AvMisnRBSqjIirz/oNqZqlnpgG6JJPJZjVzERGfrC5ze3at6EB+4auXd090EXG3P+vkN9sMjzVyhxHFPLL2hwkO5WnRh+X7Yb34MU4rbwZmFoZeUbsD9Xc0kY6CXilZs5odEu39aW0QtFecabgS9bqKq/6cHpdxM5M8OKgzgpCJv7QpfWQab3evx9HC+Ms+4IddGKzCZW+28MKVeavjUCAqvkdQThq/EmamHl5d22+YAAHP2JtClP9OfMyI+0aJ7Qjk5IBQdlXFsC+EgCQ2XEAeV/r3WY+5CpMFd5y3Rn55+j9dNcNBRQuYPYUqKmqDs2ljekJQmyM6gOaxm8qqR6oGSDNg27xgRBUfibd+TPhfjV0P2ayWqPf++LjmAgwBe74xai0Ip7Yqp1rZUTkMIzIDU6usWY4km84Ol5XsYcW70jB4rG4Ct6JyL5v0nL5Iyur58a0BKTWNeSdzFVoHRzQJXvhUj5Rg6ZdT4Ip3rt7V1hajUfJ+9ms+n7/KRSEEAnmJ4uUrCNNlyAzFWWxb1KAwH4TAAVfpgYjNxNOQlt1Aalumz5nnuZ84lMoEDHHieWwsJTnnVlfc/qdiTny+9LqrcyVeboRdr9jvFaxmM1G1rXTApL5cyfN968CrroslO7BYx4nfVALE7O3QxK336fcGoqyX/hgvFDamAT4Ijgq1t2CVaGS52XeIzuEj4zbf3mlnjYLoJ5Bh+JTFZojBSOtx9EajBh9BJBOH07b92iCZ6WzSK3jaKvW0sTM49eSbIgQZrAYDSZIZaPg5P57fEC8kqW772UY9k0K0JdgP9FVw2uAP1Q9J7Ii3tJcbYFBRPBvVHwjgpaNBZo0Qb3N1eTP6H5X1DPa1ygdyA5iG2buxNqrQb708cdOQRfJdEbvcfu+RfP9HY8std6foz05OYMH80cie5rfb7damX5xi6W07EJftpupzKykY6xPszAkg2Atk+LHSTx0t9qdlkfnesSi9rUBuj7FF5ZTDe7V1zXNm8eGRgOFuoNIbBqgmV3QVsTlO2T0Agzcf21BzXTXqtTUkXDpy4h6G7Te67ROHaRmMpvN9pULsK8EwEN3332iqltxUEmr3al+duT3/RW89DVLa+M+NdN6VMAhGVlETesRvanL6vdGoQ5Y/D7XmEKnkjOnbSCzirBt1z3/uWf2jAb2gqDfNtiCrfoxrIJxw032aTxvn+4MMGrIWSHGzanOa85zZMdsGfQTh0my75rTH9vCCKqmf2cwTaDO7E3/+Hk6PC4bEsVnHY7f71cKlprGG9dqRhkwrbOOuu5JQAgCF9bV8THzOEpWGqZ5UWHAzdKshWQpzztIY65arXvIQGksrGU8ylywisA+9sEP7qsg4L4SAABgtBOCYP74jAmpZFYAhpIYFcZg7IonMobehJEVOovwrjuUYR4jswpVOLC7z136YNQRxzNXfQOT7MWX0l/G2n2UVhplExgdeUbw3XFl27rOu6udePMHTRt30f16jXlOrQln5e6GqMN0n3u8G8GFHVgzirJrau9EVrPGYLpbx9G+OjGJ9OwmGYP4FRN84AFG0C2W1Pqe7bDmAnAFZWUZ49fOj6rFA2F0+jOjo65JkpfXGXwp5thNr6AI9k8ZcNL+igEAUMiXzXCXKOANVt2XLEbMhmRsF8gqMuraA3Q6Nd7WDHNP4m7itGBnHNlfA1OVNuuNANXF+gT0J82i6AUGV06iWQaWMYKRGm39D5qW8hXpXmdk3/39Lp8+Ru9Ja0YS/nZVh23TjPhbbDetBKzHyzVpZ1SDfLVMt+J9mtWWWPl67tmoIwOPYfqNgyR9zmOEH2Btyq4AR9WBFVMQp1dVNLMCoN4aEcadF7fioh3N5PrQCWqDD6IVifOrZcFWH0DL42WYiQYzO499RvvOAgDwWoh0SQRcS+9UyQoR1LbNI+4gK8bHmO6Cm9G1uRNHGh8rYI/uZGzlQUAPJa5GgkjFBnBq7rfz62ILQIXvjqHAQP+wjW7WWMt24B7LiH8+fn0qLxumd4HPNP3Zq94wWetlTisB62eoYqLl2Lt/3XJZB1leoXAv2MA8uQhtsYiO+UO7xxc1e9G1aTZoDxNPSGKmfePuwFOwYa6H6xbbsxl9aB2q2hm5i6gjTEQ72xxBR3E3Y7QiJPZPEVDSvhMABvsy0Pn5JIzFA77pq7UiF9Za7NTerfqrUU3jMIT/CKk1rqdPg3TqZ7MGJyl98C791PoodPEHrHMBGoy4af32HOVnfYOOcZ1+H+QbVUjVFXT8YteiykUUs8121ESzL9gBuoEnWFnBKXM3HD3Cqui1fyxr7fgDVt9etYvV5L6nLcm6djCRRpyAdqLVN7QLULq53/z+aqGz3uGu+WtP2htrwdkRKYrxYJkFaHGGVjIc2JO4Z/1QGLLDsvkd2VcZgLj2/UWDWwDMMLprWyWyxx78iWkcA0Qpaax5Lnn9INRbum0tcTgJ4XvhUMWbOKWCYkah+8N20f7G0ADS6gj/semIjo+Ytf7tGxnFFsaMP+67P7qF7DQ/xtZDzZmznXormQVQK+pU+kBkvfrRQz8BO9WD1LSeVQeCPlHXN62dliLaX4NmXbVhY9ZuPfoAIjIA14SMIYsOlDXCX8vJrN6vZlOwOg5pogeev7ZVyZvicyBGKMP0+FkzBV2EWqL6tBgjFtGWsDZ3GfZPI5CkfRcDKGX4sooJTGlCDABIE3p0W4Za7RugEMoo35VeOMLEa8PcpcYGDBlfAOodbLpP+mq9FthrG/VWxhgnnqPGMqbQ7Zgy+kW4DXWDfJZy2AYw8bsdX05/wMeptEbNW66+PjAarQU4dl/QAeG6op323jfsHA6OzKYezBPQXSiaxgtGGRXsZBNSpKfWMzp6Q2gC5on3quGjd0AeDThzVcjCPpzCfl+TmFENAalmgLBaTOaZhd4lky4wgyEivfV5iPV0faRgWaKDWQtJ2V1i38UA9p0AAHZPkDOgk8AiIAuBmY7c/XGTvHHwz/9DiXRafjq2t1PsRzAHCM2burSL6ucRa8NSoFqIjfFS50yifkSH4kvwT9T+uGcz6rXv03ZaMCtx+2NhBIw1flf15Ljf5tpEsK1ClzrrNQVdvidjuGLsKEx7kUycG9wH1i6RngFFo1TIbtecY5ydcSu7z+n3d38M500wEUgzoYIKpZlJr/HjZtUYQmfOU0Y+fFokk36PZil/BIBkGbMFRzf4mN+A1j1avIisVp15zUcxr0Qz8ziVuwjg8uLZfWcB7DsX4KGHHjoLylk3x0yqrYxOw/ZBs077e6BA64PX0npt/7m99W3FO/c9S3R78zT9+XRNpAPn9Fq3xSLas5ln1jr1+nbp4/cWat9tV2UCpEmvNKpvwuusGp5GFCNKIBoz/mUGFDOhmRQgqpGz/XWetaXbUZVeuh0lKgYLGhyAAIoZzDRiXcJiFMvAXsQaRgG+HFLSvJ68haidO0bfpZ+PERDJre+o4Kv5fKmAEXelZNzqPKif7ZDdoOqXybSsWB+/cblIZt0z1byAFYeoyq8a/vcdCfZNK/Ce9qEFAEBxHLAPgLOwXpslMA61VeqmxVk188LflywUGm2fwafuE3ZMD2nMOv51AkN6xu/78AWlVooMRNT1I+2WUT4ffaTdfdr0+dmdnpUYW0cKSn8pva9K2BLS4hEZRiNgPsMuPVQVYNlh9PNZ7ZeX5sMNqVblG+vTHwxZYqyf1DLpekGNESeCup5ZGxia33kTzRDkPXxXJ/GPTuvn+8TvjUoJgD3Dpe1h6D43wFDEg4yZTewrx/LhiOkRHlAFowEIQLHaqxEJI95XAKCkfSkAWOwERT+Q2t+X2WAl1xIIgy0xsLWGe7qrOotvxXx2qqCzSSS/Ndds1X8ro8TbYWLnEkGJ/FnHBPV4fF0/P/P5LoOimYnFlEQxlmpFRIGMAUQZ4c0DLNWdgeP5LYF58KDfks2HiT8MwApWAo6lK6SJeveIpcS1Cks+7SXdHQHMBCIc+rom1ABfGF1oQURVr87rN+1q9mmWfSBH6d9M6fVUA6iApwgjS9DQHIh4JSVLAjxwQUrpxn1Bop9n3Oka29CMAVSBn5OYHHfGiIqARm4EwJsmkROuOb0ffETaGQMX48Z2ucBR9Khv3ZTR9QjMid8sI2Wo5kTXHbdFfbCG0UdFO6guY7xkBdqwD+6t0fiSpnadrotWn1/YGN9LVANt7vZ/FEgL3TRPfadgKQ3skw0pDJABNH8OJ7KyxfSawVO0wXYpoh0gwE9ZajK2eekSeKhWoivgoCk+XSeWKOrSFr3zP54bzMgHRgE91QAJtSqvbnJzNVVkKo1z76xHoqnWcl9mAK+TIIEVbIUoIgIWaCgWGjDogAgCIO+1qtSH04W121clXB8awmm1M5eNf94C7U8BADtRWwCNoHxug9Y2/AKwRMTdbceY89YBOCNA0zFlB+Locv8tQOcbVsug0/o1uNUZ5nla/Y8Qwa6uF16HqqPn8rUG/dpvDBClFa9Nz6twHz5TyQBIWdJEqDQzzeDdSjZEQCxdPfn71H0a1kGY4JIJPwU89g/IACvh+2Qb0BCiiHRMd+IyoDI8BwDL4gJHNfGRGnaFwgGdBqjWTII4k/YVe51673P3Y8mctgow7jcUuIA+4FcDSbGGdGtMyPDvAYW/NWmTqSyeH4VJIACR497yIdN67YVZz8qaIViSsrT91QkoaX8KAJMTvX7yNGDtlccMttdqq5QUUR47wcT7XprSgJgrEwyNmdfX6HfvffAE6nNk8QBUoCob08VWHDN+pX68Vvf4MqpvJDLpFVVWzHPVHnwLdx4A4Q+qETm9pnGlpyqDtQWAgjoupPHN0ORYBkFZFARVXRjFwmXmwn+5iA43CHcClMGFo5RIpSp9XdXDLRwiulY6+V29dQOgStVA05kF3KqDBrOt8fQe95F9TWGCid/fosljvVLzPla7+CL9d7/HgU8aWkdkClKIeTWw+v0Q0JZenGRhwUGA2T4aBtLT/hQAKF82CIbGbBGJMdAEMoRhKQ1UUoO1aEKh14fNr60tXVj91EatL196fJFPH+0tsftMrRiYBGlpvGmBziqQp2N8RCTeD0sCKGFrl+JHXgbjL0MgkEDpDI9SujS9SI0B+CFAoACWvk6BVCGULlAGtKzmFcUmqHwTiGrY3uaCVFwQCEA1yqBig7qQVe8RioHgMLjwElgofrVm3lkN8FXmX5fWGwc2XONLSzZUNGCkCb1vf+e4jbAOkaasSNPmNWbeXsK9Esm0TfQCiA0V4g0//UlBCcks4qnEejdJDsN832UAgH0rAHA23SyaQQY3saLRR7P6Mg3OUei6N8SroWgwDDLQYBigDu+UdKOnCcHuoeucyTaarH3WZyamw4imkX0VhdFg1OhWnBtbZqEixUYpRhhNSjSn2TUKC7CkidFN7EzfpbVRQ1YyuNUkroNRTKqqr+i2iBPUgGE8xm75iKTUZANQQUgsW4dlL6TxNdKoIB4MOig4CDAoOEugfXFlOWjMPKSP8JYKJ1gtPeyZfyzR0lnpgqid1ocqM7g3bRTmDpAPkqmtBkW4LGV0aIF4MJYC6RIACunG0ydSmFBJgDh93cUk7ylA2d5+eRMDeLP00EMPnf36E0+eVfJaROwmeV1r7tu37WJ9qAGiBtSpqb6Mrg+JCkrflFOWB0bAngnzZ7C5gXlW03pAy+XXzrsV3IMugB1xZovocezHmR9YFmBplKXFXxLLpemTL+0e+ZfPnLs+lIs0qyegaInvRVzCbA5ce13V8f65hn/riyEZzc9c6CRQ6MCsyY1iDu0Erp1j8Z5r5OKHb8a5mYGDis0MKINhTgVFMKugHT/EIGkEaF+0E6BvVo1fa32Qty7XuD+TPMvq40v1iCTvaQYHOdqf7yF/7lWB8UC5kUmKAp5FiK7AdR3TDUDtruJFRVnO7kJqX2IAgH0qAIKOA/gAk4G61Fp08Ik+Aa3aLitK+3rucOAsOvUEGhVQAzBMqgE6+Ky/zwxXBylm0/oSENo0+Vc78ADVv2S+RkUm5TNXgvlLmPJGYFFMlkZZFmC3mC7N8HO/89Jtv/D7L911/NWda97SSg4D8OB7AR3qUYFe45W3tLsxjTX3TUdw6cfunz/xEw/gFEU8fzAg6m3bsgwpkLOPHlqjdu65907AAmj1/mgFQCnga+BwjBVIC0Aj4GH0nL1nm0qH1cpz8WxLhX/3Zki8H/oelLRJdaphUN2X/j+wnwUA8RUDPqBuWFV9qfAHqaW8emkeDKrCQLyJiJjBWg9ecZRsNPt0jHxq864hJjDO38cn7MJsk+Yc/nT3giBrCfp++9kkM60MK6zN/2kQo2FZICUsgMXS5IULi9l/9I+ffe/vHD9/0x9qLUsBXnoJuOXWd/y2vbSDo//1Vxbf8thZvfY/+vDsa3Nne4EYRAaymMwHD8Pl0JZEViLMq+SxUVCvLnrtyddMfmYjhnHrdvRIPlRgcYvGuIsZyd/EOOa3fUglblHtEFy9TRHNUeAEzTJYJFEFgEIA+7APQNK+gwJ3dLaN3c7wGFab0AP18fAIcZjvPUyzyxylmR1XPxb2QEbPvTNPzQzEUUaWhrverXJvNa3Xflqvgd3UoPD7XUsVM1lakWKKQmCxpCzM5FIx/YaYP+mVlwD7RjT9W6NfOWnv+T//TvmWRYHsLKkLQhaliLs4mc0wJLCpw0lXyHEP3UW+d43fyn5b2qYvaKqFo+1pkfhdGw3nwqZN9TVajvAKNAOxWn2ZRmBzPY3MpaU3EgdhFiXBJuD+6wSUtH8FgPDLyNFKbDweDRprsW13GewD+In+izxuOAetW4+xlxusWNHaATaCjpka6/3N1oUnLQDrhEItoW3Bg0mZLrMkNppTlFKk0J/npRVZFmBhJjtLk7/1L5678xtmfqBZAZeR/sVz5c6/9bXFvQszWVCxJGSJ5uYUQ4xy6BDGjaaMt8KII40fOf28aVVoSGN8nyoh7AWL94gPF41KKClUopvy6xiMdvvG9QwWjT8jXRrt2zNAKBQuWTYWwFumImd71Zz19dW/yurYvnCnw4Stmw1QkXTTjzPAJ+NmI1FOPBqptbZDzkhLKFFHQ1knCfxKup1Fus+1jBFYEqAJF2ayWJo8+eKlo//oSy/f9bat6WW2AgDgf3ia97+wI/NFMVlAXfPr4PDbyAg0g6wV6vjqdQuHqAtIrR9dG3Li0tj8l8b4nTCIHgAhjrNYx/ddrIgj+VCRlFK3BhCW2xg+KcisqYRxWm0YEmQBQcyG+cYCeKt0UcpXaM4g0q0rAJe/WocxVnRmHatdkXlt+4xsNwRwzbsF07cmnBJ9/voinXGQz7V6Rci2k+ucjnjMakuzhilAdNtluDRLKzVltGumi1JkSeAXvvjybS9tL4+8bYt6BayASwWz//Zxe89iSS3FxFFx5uCmUmThcILsHjZF7vm/vrXXxM9XCY0egiCYvLY6nHQ5cjeBAbMiWZqA6PwHRKAoopPqaUfLZ8Q8WVKb1FsOACk15sCWc0Dh7sYCeKv04YceOiFh8gMtch791dEn7jy3nsGaUQ+QUS4ZyfMuvZltnWo5t7+rPmIP3+3bcWX7baBqEGa0n9Xc79uDh/ZQkJbPM7O+GIR4mq9E3t+AJ164eNVnv/7abW/7wl4BK+CXT5Z7XtrV2e6SsiBkaZQChyeMAVvIO9eFTmzVmus0fjL9yFpgKzDOqjx/0zZcqQ3NBGE+P2kupC3npf/jLABQI8WZTS4kCCXR+gJ+x7d+62OXdcHfAu1bAQAAJE/SKGmSra+1jzEOtZQ3Z/URWVWXSJluTnv9ZdfkpZr74x58qRCcyd0FqE9Sl/FpGr9vlj+aOeDwYX8vYAnMfynE0oilAQsrsiiUf/ClV2596cLbqP2TrpAV8LcfX96zJKQUTzoWZt1NreNj6eqA0I17zj/Wmimwmv6N6sNRU329MAl8X/Z/rbu2iAQwonj91OgQHTmpvmYq1k53BiASxUNuO0ZOal/WACTtawEAlRNZtAG0EEDV/+3xGOVue5JsxhGYgdTCOVGm7+MHTHvwAcno42EbzQLI6D6c8SUxCv6+s1Os3zqe+Jg7UmIPxUwWS8oTL+8c/dxj74D2T7oCVsCvnrJ7XtrhfFGouwWyDNO/GLDw9KdXEkfhU8kS3TT7J1ZAMnj9m5/765HvP+LSSA6GEPFOR1HSaD6DqpUnI+9fWootK0WzjD2kFVMb1KJkVzIKhPsSAVjX8UqfwOuRsZwE0GlRkyoG8kZ2xPbHsek1NUdprXRT43eI4tw7xz4/qmkPtOh+BK5sOhe7xSWkOR6shoLCO+RGBJxmMIOUQrECLALxVwj8w3/90m3viPZPukJWwN95gvcsGfUMBHYLI/vh9Q2FYRmguWpmXlxUSPGqvdSt1cTvLfsu51IzAp0b13kWDegzuoe9O9HqPFr2KVGCokp1KPTIYCg+/Sgb1BD7tAw4aV8LADWcyGCOhbHIDMSmD9jFAqQ2tHApEC4AhXGjWpcWRJpPLGbp9Yy/iuqLIp5qYBpEE4wkdcpOtovq28/43Lt47+3hwNikmBeQLI1SzLAslCdfunT0c4+ffee0f9IVswJkviiQHaMWQnZJWVLosQGTAsWymBQLphep8woMGqPapC5xBvn69l4BrO6aJOa99UyPdYxtTWvU1mKykimSGpnU7AvZvvLfm0VGp/acAEExDBsX4A9Ng5xoTRqi3x2r4V/vSpZyZQ/+6vcDqPzvudkat8/e+NNDNh+/i++sD/BVLZ+CoA9MJhy/n3Nn5t2CCk2s+Ck6KIZYLE2WRvyDL738zmr/pCtkBfx3T9o9C0KKQRb0wOeiFF0UkaXBLQHkP8WyeMAw+dRUUDyAGkK+zVgZafzqZ6FmBUCgY34go/g0TwqVNlfU40XeIHUUd3IrsOIBW5ii4hBaGyIC80H3bQAQ2O8CoJSvrKD5gs0EpIhSMVQTzb+Oeyo+0LNGBCEtljAmTv4F1ThyvK+zBCtJLRqKHYVayrSRCKxOz4ULg5AcSP+XdPBPMZEnXrp41a9fDu2fdCWsgJPl3pcuyXxBwaJAllRZ0tGPu0ZZ0uMDhcAyeiCQ4ohBoBbZZMPevGfSqfzRTekLtNCYf6W9NOqP6aXibZBKTRNW5GjEAGJ/FvBlK0WIEWgIxsW+TQEC+1wAkFedTdHtzGOIyBpqxVYL0PS/rJ9N8fwGN/sRGlxl3RKodxdmavyxnxgtsupzll15qTnqGjHSXmAed+7Gkrm2WRb3exfFkX9LEv/wS69cHu2fVApuW567cNmOB7cCfu6Jco+7AZCdAtkp1F1ClkWxKCa7BlnShcCiUAopZi1zEFWCNLPq6/edhYH08YX5rGRH3zQSRIQ0b6TSuQGgWDfbHYBMBH9Ej0SU68BmWhWR/7t4drmJAfxh6X3ve/fJamVpJ6hZ+zy0Eg6ROmDS1qUDRo9HkEV76xZQTEOxwVHiV2y2IHO+HmMzyc4XGeKvx3Ej1ZuH+Jce6HJL0TW/BwCffvnS0cuq/QFcf9Vs5z/4xLVfOjLI8nIe99FTdu8Ll2xrYZAFIQuDXFq6ENhdUheFslsoywJ5cVfn/78TdgtVPEOAPU02TN76RGhBKzTqU8WGliYOkkCY5bsW4vM0YUSXGX8lXJA69jziTiI0dzlJ+eQnP7Yvm4Em7WsBAACgnHStH/n9ZtMj0XxVQmdASLS1BGh1RJkCCDDXJM1Da00pfWd+OKv5e/QavwJ70vK3ihaswBPPc2sz+QOzmJ19/DPf+Be/+PLtl1X7A/j+D9347A1buvvJWy5vv7pLhtn/5yne64xveqlAF4TsGnWHkF2DPH9Rtv7K79kH/s1fXn7fM+dxzTIwE54FyLuneR+rLEh8QF8mjs5FzBZuooH7yKQyTQK8U8eaZacgP1KbCCmIQe7dNbWgsYDiQ1xE9mcbsJ72bzlwJX4FoneCBeCMdBNbNMe4Z512h/BypGbW7nreryEDs2mGwEDMuv6xk2xClH4ywDvSputqzL0bd6oYAYfQUkGIahJPEVvxEIU3KRArlKde3jn660+ce+drdTu6/urZpe/7lhvPiAJ/5m6e/LUX5M6dcvmeh8+esnv+/D3yzI1HsKDCSoHOBXZ2V+Z/58ly3y+fwv2XlpwDwA++W09Z3hUzULMdB6m1n1+EfiZNXZNn3eQPPdFKyWtAOGE7BES0G/7a30sAMMA0plW+zvWFBbCv/X/gQAgAnHUUX/QCV9LEOHgnmt4eABCtN2rkl43x0V7KNOqDHPy04tOxCxH4HPgMM45L18LymJQDR2lLsdpwXAChmWlBzWHzH3zx5dte2l4cvZyL+qc/dOMz80FMBuHNcynffTtO/NJJ3nu5jn/JMPv5p3nP/+JBeaKAemEXw88/zXsePW33XeoE0Udu1FM3bGFRok/ZQC8KkoiyRsit687U8vckROjCnGT0iUg0qAeJXY57T4JM4wWgS2oTEG1940T9bXZHjtFg4k+lOwi1LTtlX2cAgAMgAET4FSP/rQHwltyCaFTHzOpnFUljSkFNxdRJlKPmf976VUMr6KCRWwiDQTOi3JqOSptN4aZ+NtPqxnbbuHY8Swwoitbzz0FJtN2lgsDTL1266nOPv3b75VzTd109u/Rn/+hNp0Ri4IUofvg9cvwzZ8rdl9MK+Nxpu+e7bx9Of+YU7/jc83bPumN/xy084+C8SLVKxFs6EFfMe6jRfRGv8HVNPsnSdPGhBtluneWi03zXLjI2kexv3KkUHdsAkg9W/MZU92UbsJ72fQzATM4B2QIqou2QDoQn7SpqCrhrEFIrBtvdToOuWJE+Ajy2AKIZprqv34P+LCcIj8x+7ezFxCf4OJnafjewoflwGoBf+OIrt720vbys2v/P/tGbnhoEnM/EZgrOFXbzUex+z+1y/HKex45h9hd/p3znL5+2B/YSPN9/93CqsEv/5YwDekVlP8B1jPhlc9nACNy2ycqJ96ix3ha7FVcM+VHUCsTRZYI/rZogqLalc8/x8cu5nn8Y2vcCYLlTvoJY0UrZEsTH6NRgnUVmOId5iva3SuOnmYsnRBzOWa2FmuYNhkVDoeVKJVIQI3RInlcGihtwSHrkYf4vHqFnX9k58pnHXr3jcq7nu64eLv2ZP3rjqa2Z2FzALfG/c4V9+v7hmaMDLmtG4PXoj7xLT18/5yJXuVZ5esR1xPh1YCv9flZwVsUIO/OrZqyg0+Q1CyS1TbjkUK8gjzpkr7jAHUb80aPK5jkHGMS8vZwU21gA3yhtH5WTidAi2JB1iMq6kdc+Bndkc9CIHGeTh9pfgD5I1D9XGfn1NjmWUtiVE3Q161Xzrz2TsB6jrlyamiH481948Y7Lrf3/rT9y45NzIecqtjXzf7NBbK7gTUex+z13yLOX83xej779Zp4xUFyQ+gQfxAyCMMMiDiysWIyWqZEUwoRS1Jnfh41mc1agBhALJQM4GgVCo5GlfaQZDYXk3Q4JVU2setR6UK66arbvYwD7XgB8x0MPncWAsxboK82efSIsxfpajMB6s28vV816L/FKCCn7yOEopSxRtNPFE7w2AF2xUKf/2dJQ8bCl5s/x3rWXGWkMy98gKvyxj9586pMPXnfZ8sTvumq49Oc/4tp/Flp/rrAj8Xcm4E8+MHt6v1gBf+ouOe0pNyVRxt3ONYextOh+fMNqIlYymFlOGnbrzFgxXc0mzK0BGRX/d8aCAYBCVKohoAiMQqIIRGi08x/60If2fRZg3wsAAADlZH0ZLEYr3pgxBIJUZI5vBUSlZmYAav03AZ86FcKg5vBEMrVoXTUga2S/Gydu6P38eMF876kKa8InUIOqYgLFIMpBwPtvPnrxv/iz9/7B3334vb/xnfe984Lgz3/4pifmg9pc1bZmanMRmw9iwyA2G1wg3HiEi++5U5+5cjfb6VtukDM3HJGFrx84yEBNxRs+ujKZP9t19WPSNaXAKDCbL1yYt7nv5p0fuw3HEKGq8DUyD9UYiPFf+WREtFf36TjwKR0MAWA8WfsAWH+TMHqdtULV7AZSEbBGhnPzRA4y0FzaXPRJNWAGCEZgwqbh4ygx6YZxjjXXjCga6r0Tdbk0U7G5ij1w09bFv/Zn3v3lv/0TD/3mH3+HBMG7rppd/OEP33hqJuBsEM4V5n+VMwXnIjYIOFOxn9gHsYCP3yxnfOghvZsnnUVhMZK84jPynoblpU1IdzQK0iLuqU9889vrjBA6xcvOV0L8Y7RIPl6MkSkOQIo+dULIvoYAJx0IAVBgJz2wh1DT9LF00vz2Hp8todgTgx81wC2GtO4gXTeaBg2uvWVH7oIzeu0HUDV/q/vtbIRoOKo+UowaGIZBhDMVejR+sCM62AO3HLnwMz9w91f+X59+4Df/2L3H3lZB8Oc/fOOTs5nYTJUzAQcBB1UTgANc6A0KqpA3HuHun7zjyloB33unnB5EbBD1xL0oFcJhEHP5Xbv5ZB2Aa3yHC0/dO3RaOzAbCqNk7/eW1iN90k+HAQT6TLJPCk7TwUNNdWaIiA8Hhhg3FsDbRbNhOJGVdCUje8zqOr+/hhZgqxsA2bK5+yaocxErzqM39f0xGfn2+RoIU1/HqT8fIhpmZxxStctGRDMSgWE2qA0gZiLcEnA2EzsyU9saxB645eiFn/nB93z5b/342yMIbrx6dvFHPnzjSRVgGMQGcUYahBzEqIMEdFU4qAurH7tPnjlyhayAb7lBzrxri7sJ1x0gFBhzcEvAPkb3U2NICCcxnf6OSy3Rzs5DFn0irYF3pFP8kiZ/7LkKg64LRaCP0h2lOHy4yEYAvH0kPFnzNWzNVnw8bf2i5f9t/W76uF/FlYMofZKf1vK80jR+an33BpowaFpIKpMDgKpQI43YuhC54BhUTcSgw2CzARyGCMoNYkdnWo6q2JaKPXjL0Qt/5fvf/eW/+aP3/+Yn7vnDC4I/9+EbnxiGwbZ0KDMhhwGmcFN6NszMW2uRaWIDxA1HdPe7r5AV8LGbcXoAOAvEVwoCN/u9BRg170k2V97z3nP6mSqCuTUaSsKjv9kvsusbSfNmoBJ4E5WGJs15jrVxBE3EZx1gNmDfZwCAgyIAlsuvEg7RqlEdyqjubpTSjdZcXjSYI1taD4fM4UivJSbNPzCNAwXfizZh4FiDZPxx2tDyvaR2RZivfqYZCBzUwThbCcqZqW3NxI7M3Ro4Mh/KQ7cc3f6Z77/7D/7mj93/G29VENx49ezij37kxpPzgVQxzlRtoLsAEgjIunBEYBTciv5z9+izV8IK+N47cMaReO4iDYz+ChHsFaQsXnXRaoq3M/enQK7cNrW+BwMpgQCVlkFSQrvysPog+H+FQhhrqJneqYgkcOEA1AEAB0QAkDee7Xv7RwF+mwPk4tfN8kSGpQsw7vwbRRpo3G+YOgjeCwBjTQ8482fNr0DYkn6swBRf1R5RyDRcvIpM6dNnolpVFZhFjGA2CLdUbTYo56p2dCblyAy2NVPbmg/2wC1Xbf/VH3jPl/7Gjz3wz9+sIPjhD9/4+HwQzlRsNgRYJv9GesyB7zpu0E3g+pktP3nb5cUFfPAGOXPjEd2ZCU1QoKLmAh0VzefUVwH2qVjEvWrmfhvgG5BsB+0oQJhZhZJGbAkyRHdfmjSm71vP+c6tdZnyJmSMZBSLDNvbmyDg20Xvf/8t54w82al+8bJeYYkp9priYOQaSnQGamZgVvp1cJ4+RD+yKfKzUdDPGrxk5VnUmjrMlOHodEqOkUEChNS1rQoHEQ4iJkoZVDgfxGbiAmFrBrcGZmJHVOzBm7cu/NUfePcX/+aPPfDr33HvsT1LeW+8enbx099204ktlTJTuPZXD/plUFt0aC0MrYXUjBRC+Cdv18vqy37sZpxWb87PQcQ0Rm9pgH9i8bjmp+6u5T0IUm3Mn+/b4yFQKBS1w1AOmHG/vqsEExlQIaE1NmD16XHLxLMHJM7v13HgU9r3xUAdnYXgDhA0jfHOZiLDEM+uwKvrWw5PpR/XhA7P4WAh0QEkMFDImPveJkV2Gj+w+xUJmnvT6Pmn6FML7P5fUYBWTct4QhW0YmKZcgih5lPpvL+VzgZbhlYZBCwAlgIZTMUMePCWrQs/8wPv/uLTL+0+/v/8recf+K2nz43GiP3Yt9702Nbgmt+Z3zMP6fICUuvpSRG3bUxgild3Oft7T/Hez57hPZfzJn/vHTjtfj6pUfgzwDu9qrLGAepi12KtuG0J266xGLQiLm2MXieMeVOQmgUwM2mM7xMFFT77zwONFmPWATDLwk0KuxZRejD8f+AACQABvwrgfUxzjgYZZiQN1oM2I4NLSuZl+0SQt4SnSsyGjiBupxaqW9ki9+1P5IxVWi+ZfNikWQ/s1HzpfEpA6V1t1KHJntBC9jVwweBVitmtZmZCnQ0sxVxbSRFSUAplwAArJg/dcmT7P/3Td//rp1/eeexv/OYLD/6Lp87dfePVs4t/4dtvfnYQz/NX5tfWyCK7JDAfZChfvqSz/+YJu/9XT43Lci8HffB6OXPjlu7MxDgTsQFwm9z5jUJQY1pP14lpRFXDV4FgUNWEAHdbemGPqAiLy3YjRQNf7oeV+N8oN1BhIeieLRWg+AAxAfd/FWDSgREAgJ4li9eD0mgcYvJ8ONcTo9B7BjoYYAwLlnzq6201EinTJdNJZoCSVId6VqtCx9H+2PEU60NjbR0MmKFEVxIjYIVi1S/JrjZ1quwoqOlpQ8FscIk02MBiJoOCM7hF4Bar4L03H93+L37o3b//zCu7X3v25Z2rt1RNBQjmN7ckNEMfKIUZ0+bLF7H1Nx5bPvBLJ1sjjstNH7uJp5UFno70wKkqarzEb0AL7I3ut63X9qrqacO4rxrDB2vaJuzHtAJixFykhvfykGMj7y5UY1H0VmAYsP/7ACQdGAFA8Ktgy+W6wWUgBijcPKe5zc9qlSsg5pWC3lDC9WxUfks464BXGqs0NBB1NFUwwH9egjo6LSTgiNmXzHGF0bvekf/qVWslzGxku7DBq88MIhV+KJK1AtIKBwEAQ6DiVKOnHYCZDWIUmsf0IAK+79artj94+9XnHe2GaJ5C6CBVGooIVYHnLmLrr3+1PPhPTuCBK8X4Sd9zp5xSoef9KzDJU5Qq6hkdyzLt9rue+ftgX5KYCQKzkS2/oSJYRkaPEoajoHS5InSmUjMJXe8riGUE/vx+WniWJiYHAwUIHCABoMTZHPYGoEVeMM77AGio7jTHFZAEiI2KtwEZwhXg4BZC+vXxfcf09T8iwmIm2Y/MASDCUrpWcWn+B6NajMIiWh/ABDeBChZT+mhxhN8LIUV9Ci10EB8pBOUQ2FV3HdQYATvpGBwAVJRpsdRuteJtiyjEizs6+99/fvltX3iZl7UkeR198AY5fdMR7GgAlDztFxWYoaqHaNVdS4MxZnpMhED+FVWOtssNuydHIh4ipPTSpb0yDBgAKHOmVHYgQsZ26PGDAeVAgICAAyQALkn52pZpdIIgLHrEzACCFn2ie7HdgX6j1j+mgENF18PJ0Fn2E19/lDI0SqsMSsYPCLEJTCg5vMIDa8DSHw4uiweMDK1paPNPTV7bxez/+3S567kLOPozHxu+PE+ZZ44diGgVhsFHIhvg0cFg9GoCI5qZCEYCwODFDgrglqNc/J1PDr/5lXO45nOny63/9Djf89g53Hwl7u+33cjTAsFMQBUxlbDLpZn/jHmLOrHMK3N3Wl/XxAYs/i6XgfqDgCzi/r8JerO/TQH0/n8yoEYRAjJM71EYSEB6D4EF5aIcDAwAcIAEwEfe976TX/7aY4HGGappTCM40Cfy+UNQe7v1meGR4jcTUWXEl3LWGM0YTA+BCksP7EFifH2fFuOiskI9B1o6XNmPuLQi9J6AKPQBmAZgaSIWY7AA4pUdzP/+M4s7fvsF3vr1s7wRAK6ayeL5i/LYrVdxdybZ+9izAUNXCjsA7hvEYzhke6zO1Pe//skAgUXMJMIn8t5rsX3/Nfr0v30fnv3aa7j6N563Wx49zfc8cQ43Xa77+z+7U08OoNclwGdwqGjto5C8WePztj7FF5naSbjP33ftHfPZ8TI/MwmmFvcyPTIrM0AlvAQAQ1YNpAlCeqaIRVgyqAt8ah+PA5/SgREAQSeNuFO9SWjU/jPNcAMFVLe9M8yHaAoJJJpbvFM3KYMIzCg6RDAnwD3sMOdAY3z36Sk1w5CfxTaFkIKsWSBKQY7/FqNIgVsCpODlHZn/4vFyx+efL7c+fhbvml7oxSXn/+jZcvvDD+pxCDATgkNORzZUdFzkCGujgsGrHE2AQaQ5RiqQcDnUjQaRKAoi3em2gfbQtdi+75he+PH78Ozj53DNv3yeN/+zM/bup86/c8LgA9fL6Ru2uBjUZZOnANVUHQ/gjGuRsW/MXzO3HTUhYC0AuOaYzJbf3m9QaBRKhoWlMfoQsWKtPUDRGWWxLwpFCRQRHIwy4KQDJQDMeGqmuANoTEeJYS5DfNp3DOp6w9cOnUahuLVXSJklk9AwDEMAhtz+zLKDYj6UIM38AjafPj4vBIq51FnS59kZRYp585olKa/sYPYLz/COz7+4uPWJs3zXG13vr54qd3/6AT1B74ITgymZ0BWPhEsTAhUGK4Ih/eD6tLaH1h0lo0JRYJINUgcAmAmFECmUh67D+fuule0fuX949slzuPrzL/Dmzz1n737qbbYMPn4TT81FHKQk4DCoQ/XogUBg7Mc33x5cF/33v5rXPyKaBZtLoL6jb3gIyD6+QK0yoAkDwAEmJZ6rYtW4JCkm5cAEAIEDJgBE5SSBbzOa9/OPNFpt7G3N/PURXCNQWPUkfWe1JTwGo8hQTfoA5ThvJ/MbACtwxkYKAtf69NFeQkhj/phv98oO5r/wbLnjXz5vb4rpezq+jeteuGBbt16tO4OCSmIIdFOgeSjRdzAGU3oaMfrZOZ6AoiK0GG6scY2DKAohosrBcgnFZ1oYKANkIER9bLm89zo5f/8xbP/IvcMzT5/jNZ9/CTd/7oy9++m3wTL4U3fKyZnCBoBDZgFAWdOmvUX3wx2YBvymmYBeOMSWtLL0x6WYGGKYdGX+VhTYI0QqShBeg1b9AOGoeEhsYwG8YyTAydofghnWM0gN3MQA0ABoSPTvrnM+ALShD333GDcoupoAJtMDwkL6uGoE4xOyLM3fX8Zoa4sZAC/vcP6Lx3m7m/dvjel7ulQw+6WTvO0nH+DxpYgMBjHxGUYDPPU0SO1ViH5kukpDHVvGA2pJQrhDiV/oAmheFWMiApqJ6CCYiV/7TESKQR66Xs49cB3O/+i9w9NPneM1n3+JN//aGXvP0+flLQuDD16PUzcdwa7CMFMP/oW1w3W2e+/zVwZHY9R1gmBUB0ATVaDsZtTEpATqV0fFpTI5cHUOEvQhQncHM59MEjpcXuj0N0oHSgAsi52azWYoJJTuE+ZogFEL19GrWvyTkNzaIMSfcgoHQWKKIn5HK35zl2Rl7iUhywDy5Oscc/3qjs7+x2fKnb/9gt3yjTD9lD5z2u76kfv0xCAJA6YPpwBisKljHCpfOG5+9JnWoKDAohtRYKfpvRJNVNXEPJYqg3IoJkVJDTepAChKoSoKTYopljR56Do5/8AxOf8j7xmeeXobV3/+Rd78z8/wPU9tv7lswrffIidnApsPairkoB751yFQU5rIP4tmm+PfF4/Y0tYECJNqEDCMxkVx5aBFHTzOpUAU5pirKPCvSgXxSORsgug+huR9B3yZgzBUDg4ICDhgAmBL518xFACD32wDvJZr2r+pJ2nA/PiNBw0BlwqGBrfxWLun5wRhyiOYH8tiWJrIIkZYv7yD+c8/vbjz8y/gbWX6nk5cwHUv78j8tqtoM4gt6dAFg1sfkuPqfCR5A7fF3xHzJ1SdZHGLn2oUiKMEi3qJ6xaAMqgMgWC0wR8Ug2BZKDMRFKHM6EMXlgUyA/Dea/XcA9fY9o/eo888vS1X/8sXyi2/8RxeVxh8/11yYj6DDTAOyFRnJHkVICiG1vvVqrnS8PoqJihATvLLeAHQpQe7OgDChKNYkfoNb0Z++1GgjppN4GtkpGbpMLPHJE0MdmBSgMABEwDA7BytwBs+O0Is2Jl98S7idmagJmCaKQdihBTpmm/o5r4ZTAcUo1jAf9PfX9JkSZUXdjj/e0+Wu37rBbv1sdfeGabv6VLB7JdPlts+fb8eXxbIbDAWCGbiLcg4iCMEm4jjyHLOfkjWpAUADJ719ErKhqqiKrgolJnATBO/HAKRlGFw2MHM3SIUQmYzgRmwFJOiwgLBQ9fa+fuPyfkfvxdPP30eV//2S7j5157jPU+dxy15Dh+6ASdvOcrduQhnyICfoyCtOMzfgX+ha2kR1xWYFRkUtTFgVjNrWAsS5ZlTVyCHxVo0GUI2h/WEg2QGICo1JfM/NEVGVmNoqFjOCXbEmYDCi+f29zjwKR0oAfD+97/n1Je/+thZgNc2jwwkixhnVBFv8TDtBSvic/2YQz8iGYYcLgGg0HPB0TfeC2TcCnjxks3+28fLu3/jueWtX3vN8/SXkz57xu76sfv1eKGPzJ4psITXA1iMI66+MFv6EkCdaDvpZuFB8K75qQgonhOUWTQuiY5GwsGDiRKW7gzAEiKaloFbYjILC8HgzTELgFIg77se5957Hc795H3y1FPncfXnX8Qtn3kO9/6xW3BiS2gz0KP/otRs7WpR26ke3Y2sj4hZum9cGmRQF0hiIoN6EZV2C7ISEHTDPR4cx2W4L5SIQ49A+KyRto7D4FaBaEjANBU8i+RzBGG638eBT+lACQAAKOT5GXAt6X3dZjpkJ98uDBDhuwwKBs9bgGdyG+/crRhk8O+yNgauKf77J5e3/9yTdu9XXrXLBohZR6e2cd1LF7l12zVyKS0SGGCqjlxoD2qNgApzFNaE+qpFSWSz1LCoQFha+STU4wTxzAtLw+TQaGKipEKKI6oxm4lnRuAVizZDYjAFMHzgBj33getw7t99iE+IZzW88CcW3QCgmFRZXOK+F6/TMs99UGJAMIuJDgm+UKh4nCP3MekG7KPjsYQCWIpSaTDPrrozSYpXbHiyVWImYGZOvApRwVJAM8neAbH8B8r/Bw6gAADwVRjuMDGZQ8yRgECJgX21hIcZ/c7nnQhnMllcNJt6mgHDUPPNPnAE/OH7hjOvLjB7/qJd/dIOrrpSF3zJMPvV07z10w/os0WIZaEMM3DmaGDIkBWzgNHadMxGmduQtGoz7NFmJzbk4GA5yig9YaudGGUQi843LBa5BnFHHQO8UjGYrqinRLM6y6I2WwdUQVtLfvMk3e6XRc7tC64vpFipYE9RAwbvF4ChSPRLMKEqBxMZBu8OPcUOGC09fBHaKBVUm6SER5SRBulDA4gR5dlZqsIsTHCAIMBJB6IjUE8iOJsZ/dDz8U0t0qaI1rLe+jsIOekWY5YBcYySxeJoGwDAv/PQcOJXvu/IZ37qg8MXb9ySi1fquj97xu5eFkoprv4ch6DpoIMWgCYRQY9+6q83nKP66LJrdOXzsN1F0my/5Y05AMXg9U5UTz2aAJgJzceM0eYDbQC5NYjNxDiIcTb41KGtAd73cFDbGsDBcVucSZgT0drTSLFCWRSTZYEsCNldmu5Y0Z0ldVGoO4W6WFL/6Vdfu/3M+cWR3eIp2WWBGClm1tVZtAxxEmvVZtzplhYVqkN/8zFSwRokQi5XloOkqSLAASoDTjpwFgAhXyukzCiWHV0U/X3Mji9dSHCK3QSArOdpYj5UY602zeCYCICffHB24kfuLaf+uyfs7p9/yh54ZReXdabfqQty7cu7mN92VHeKmRTvXlMj1C3H2VUxNyxATQvWSOG0VoAtIDDtoJm9uAYonL0SQkyx+L137XH9KYlBDp/bLDMXnoJhzGE0x2n7+fkxxSHVfnMWxUcCZA0FC+XXntq+5ee+8PIHn3xp59Yf/OANX/o/ffftX+IAzrzDUfR8McAUUFINYjEUtCOp950AlxEiKhRomP1ZPVl/0P56PKKZ/yLhWNnBwgAAB1EAlHJOhiGaaQxpwoZmT8VXUS30MvmG7hGRjkmyI0CWEvpjGsFiEUemedl4VH392L2zkz/0Hp7+H54ud/7CM3b/a5dJEFwqnP/KKbv9x+/Fs0sRzNEgyGImNmjk/+tYM2f66KcttXV1jYN4Crsz/wFSVLuZ57VDMoDahbdBpFQ4xKIXy14LAqURg8IKRVVYp6d5YE+ioL759z5XT4zA0tzKMStROOUptl9/avuWv/eFlz/41Ms7NYvwq18/+76HP37jY7dePd/FHEZSj8y0xoFLdPeqDWHjHvoVmLjQ6UJ9kv+JmuNBGiKwr/zNLUVgpYiXdRcMs9mBEwAHzgXggK9qHfnn0enoyOrfN5RfZ7wZfJa8Vt9hPPor3c+GnhPRdHshMHhzisGobir/0HuG0/+PPzb7rXuP6auX69o/d4Z3ef6fYfa6+1zqdbOq/5756zdd8XNMUEoByLoH88GmU+Yf5VhHxlWEUBQcQgilPTZkDwPz3ztu3purluIAq2UpujTI7pKyszBdLIvuLE13CvXigsNnHj9327/3949/6q89evpTPfMDwKWlzf/fn3/xfbs0WSyoidD0IiwLk9D7+VnkNcyifycjzDceLIpM+0nWI3d9wWPum7R1MGFaWRSx3cWBiwEcOAvgCHBqmU3+A4+Z7h7QFQApoCY+SaiP9DgMJL1PwDNlIiIwKxD18i+JAEH0pw9FYfmOAHDqAo+8smuXzRU4fQHXvXxJ5rddjZ3sKVCc+SJ67nl6Cy1fbVhBl/1A1fAxEn0aMOz67QPwkWe16i568cV27kJVvH30alTpW47FHr3fkqf3ikgBpJj77sVMjCaL4kVTRsg/f/L8LT//+y9/8KmXd18XUfiZx84/9Be+7abHbj022/GZR57CH2xgCZgYBnBws65ZL97MJbPJYv4M1BaEBANuZnD/QSNioEApEkiCCCwDUOFVW/t/HPiUDpwF8P73v/8cgHNGj8SyY+7RQOhoAxZePLVnCMueDi1CwKjtTs04XpnaurNh5gn+yinefrlcAMDdgEdP8XbzYGCk21wIhMlKQBiNinqNH8zLbuopw1MiRduEnYagyPSZVx2m1u/bbvfFOHVtJFqxxVaFJkaImaGQUorIghbaH7Io1B0z3VmKXirUX3vi/K0/9QvPfuo/+8yZT74R8wNuBfztf/XyQ7tpEUkIFZrUoAcTHGSxQLkCUTKS741R/9+KgqYXR78OtM5Axe0Gw4EYBz6lAycAAC8L9hfhwbJptXxSM02cfB/PeuC1x9N/R6O+gICVRWuxmO5Tzd5wNo5v21W/9YJd9lZan33e7i70yvO0rpnXZ9FmrLBiZxmgGlprp93aasdFdcMxulUGxiZ/94u8D+PqPMLE6Kq2GMU7IPs2CWLataKLJXV3YbqzLLqzLLq7oH72ibO3/vu/6Iz/zJtg/J4+8/i5h148X47smu/L4NWZVsIXNNfsJfMf9SIoFfSbBRYrqQPNnuF++9WxBjDLGUpp5RwoBGDSgXMBAECIUyDem02/fTDnDDSDelmvOwkxSMbB/azuQXNhHaCSeV63/wLcHe6xJtbYM26SevKXTtodl1P7J52+INe9stDZrXOWYsBS6Gg4miiEMxFQyVoNaH2QD3DN71OULDdofzs3oapGSoej77G1tfnGSoGOSIkce4k0Xfrnu4W6NJNFoS7D1P/vf//lD75Vpu9pZ2nzv/O7Lz30v/kTt/7BICaLpWOGbAZaNASdUWEsoqIwKVW9R+l37QbsF+ZL0aCArTagDppQd43qPg7IOPApHUgLAKonKytGwreUCvFt2m2PHG5GDDxdGD+DBUzUAwuxWQJTvZU3vBPs0+dx1b94nndeiUu/VDj/5ZN2h2UA0MJqYYBvovAntT4ySwiSZjHsZMr8QI+Yy577mGQEs812vm4/De0PH7DJ2EchZEkvntop1EuLMizMX3/2ifO3/m9/4Q+n8dfR5544/+BL28utZfF+jC5w3LfPe0mjWwGe/41BjQn7SUZOi6dOkBtRWgfO/D7FJTDBp97Mee43OpACQGmnGgILSEsVKuQ4/w8gTN4cvAHHvKTDmxkCIPyF4jMHc3K09woMWLEJYIJ/ctzuvNw4gJ5+7Xl7d1bmAYpCYskiNd1pjCEoa2AstZlFs4ORQGnL9N5YdE677YzuRVTbZYmFESjF03qlUMqiyLJQl8uiC4N85vGzt/3U3z/+pn38N0s7S5v/3d99+aGlQZdmUiybrwoKTKzE8ARYnQIcEd0oBTBRyVrgJt1GOACaxOC0WgwsYS2AOJAWwIF0AUicQnEMqWQP8AGt2B9APxKoFnyA1ZbN3HDbqZJWxHRWDb7UJIWejy6kPL195bR/krsBnN+2hZ2I53vqzgymwODNEh1jm/XysRIcM/6IpOudv67ZZk/5fcncuihKoRQ48y/oPRN2abpYUh99/PytP/e7L3/LNJX3dtLnnjj/4E9+9KbHbj022LKoDANQKKKFKIO5jVOx+xHht+gBoNEoEkObDMYOKyjjYmtCaDRhcWUiQzlwGYBchQNHuzN8rZPNFEWMCGtWbEx6iLxf5sAzZ+sbGaxmDizmwAGoJaMOJnEeWrowwD8+zjtf2eUVqwsA3A341ZO83X1sk2KtQanH/Jp15MyfGr+N0a7X2eKmI+afTtgZAYIsBaQHD82tEPEaiqjnM//s0cfO3/q/+vlnv+tnf/X0d72TzA+kFfDSQ0vzOANJWZaSpQag+YyQQpMezERS6L3BhFkKJbV3QHcEq+uKLEr3TQ/MOPApHUgBcDWQs9fy5nVA4I4c1Mv+hqY7YDSJai9OfxLaHyUxLHSwzVPn7OrfeN7uwj6gz57mewRCUQ0UsHWYFm/2IZLM3+IiORS58/Nrc01gtY1We62xLhBvqAGpnxVKNt0nTQpFCkxeOLs48tcePfMnnnxp59bLtS6fe+L8gy9ftHkxyqKECxA1BoFvEMK7NIf5Lyq1DAgiw7gXoGrGBP1Zqg3Yveokv7ppPj9wKEDggAqA97///eeMOGVRYmo0sYZ0Cw3YQ+Jb7tqsZbr9JyY52svM4wElmMmhtpSluQvwj57FXVda+yeduijXv7LLeR+lU8lehm2SdvP5G7P3f9dF8fvPRmk+i0RAML77+95HoUjOPdCEKMu7js13v/e91379cq7LztLmf/d3XnpoScdyWaHUoJ53aa4wDzMPWhjhzcDagjmJC8p8FshwdyKzYkCmoLcPIgYg1+FAkgjO1RBsBbNZdnn2bQAgZgX6DMcAc6AWoXkgpxvuaYT7dYj8NQRGyNPncNV+0f6AuwG/dJJ3SIzOicvpUn9rino6ME9lcl0dsBFr54yi4WbEjIN86H0Ggg9aLoRYQTRF9Yo8BwFR/uffdtNjR2a6uJxr87knzj/4yvZya2lFjR67yaEtcY8jqZcOPkfTfzOukighH7bi6sUCHYycyyCADrisQu7tpAMrAArta03Rs/n/EqW/tVwz87sEHd/vZa/VLG4ZAGngsAwDABFhf/S03fbK7uXtCfAj9+oXf/Re+eL1c6wtQ/7MGd4jUQgo6Q55DY9fVI7YCXmQc/WAztTv9pcVlKqdhQA4F/jieKEOnKmWhAsGo5jkXASvpS5wt+CGo8Piux+69rIGyHaWNv+7X3j5wWJeXARIgJFMY/IPvBcAhcKJ96gt9TcqANJIH1PgACcx7wsAM9u+nNf3dtKBFQBDxgGELb+HgLsCtVtwugNTXz8eAADRbMKoJL2mHAjIp4UUGfjLJ+3ey3l9189x8QfezRN/+t04/jf+uD76bz+A37thCxf6bU5e4A2v7srcR393mQ1zR3cC8QeQpm9jdqCZ/DoxA9y/76YbIXP7rvE96u95/kLIC7vc8syJNyfIPpuf/tYbH7/cVsBvPX3+3iwZWYYFEFNahYacBwB0Hr8xI0Ct3qMRBRgJi4AQQVSHjQVwucmW5euOBG7lAMxSVWYEwJCNLZg2fQ51rI2DQrbXAfQRD3CkO82I33txef3l1v7fd7c8tiWwI4OULaX96D369M/9Cf2n/+5D8q/etcULAHCpyPyfnCx3uqOaCHwXh3WYyeRBpkEyqLduog7Qovw054RCSJEA1gBSTGRhkCUgu8V0aZCvvIZj/96/lE+VHLGsGn614l1XDYtPPXDs8cu5fq9esqufeWVxtdFn9mntk6L5rOSKiPc7FgwqtbsoR8UA6p6iRDPhaKsisW1Z8EBiAIADLAB0azgbUMDsWMf2tGdUp9f62QIgkR+1FziM7uhnsxgPaEdikcDZpQ5v4dS+Ybp+jos/9G4cnylsLrC5iG0N3nXnJ+/H07/w3fpP/tfvlc+/6wi2f+W03DeoWh2Jnh6st8vi2MRPITmO9q8AfFQ9ZQa3AAJPjwJ6l55iuoTKboEuDPLVs3Lspz6P7315F9fEABUpluWZPo35x7/1xicutxXw7Gu7V7eUrxtGxZuY+HgVqR0ApBaWCWTIgiDN4mbfKlqhASIxldkhxcPcDmQGADjAAmBxUb4e4RvLxh4AeuhWzXXTi4DGZXA1Odz2aTQ17xRKjxZfmeX5/rvx9ZmIzYU2V9hczAYh5wLbEthsgP07D+DJX/pe/Yc//B58FQAGqPe4lorEBUvWwTutZfYJFYPUIRxZbVggBSJLqiyLuwC7Rl1S5Guv8dr/3W/ze17ZwTWAT0kq7BuQu3l1w9Xz3U/ef+yJy7qQdQZK371nUiKJLtUHN/7HGZSoBGVdW685qaASObAYAOAAC4CPfvT9p3zwb/Zlh7RAoHBlhIxFXJce2s2bmW2qwvOLG+xz6dSNAl47s+Xluq7r57j4Q3fx+MDCmagN2TKbtAHew0fMPExpBT/8HpyQKIiiA57ErFTt25phxDJ06b3x54ZS03yu59zfpzrze3++3SK6sxRdFOhXXrVr/w+/gz+ZzE+4ADBCloA6ZkDSgsaPfOTyWgHXHR0Wosps/iqKKgiiGUgM9vD2ISLRDammQNBMKbbfti4UFJAHahz4lA6sAAAAFjvNzARI9vxPja81MyAQ1iYXUQAa4CB3G2i1w6t4c/CImpMK8CM3Dq8dVVwWIfB9d/Hrg6qJehg9uh9Ff8ICbwVaUY5xuR0IaFT6125vC/TFN32n3OiWk225SfjQDwBGH4nmZr/IQkSWEPnaWR77D34X3/3KrlzdbghkUUQX6T6owluJumS9/pr54jvvv/bJy7GONxzVC3/krqterchwmljJycpAAUVUqNHtRfMK6ogxrYhQfxFoAPPhJLWQ6IDWACQdaAEAlZP58GdppgcGPR3mvfE9s6dAunNkDP7wPK8y64iyY0hMiWkCRMDvuUve8Qf3+hku/uBdOA4rUIfyE6UALH5a5p+ZVYxylDckrsE76xBao/Z1qdbc6XEtP8RE3dyPSr5iIrtmurs0XVJkUaCXlhy++ppd+xe/gO96tWf+oCUhC4guqZLBQ08j+gn8uT9641NHZvKOC9NP3HvsmSEmJWecX+OFmMmQFiCbzwiYNNPJai9AzyhlFaF/r/BqQCgPrP8PHHABQMNpkcx/VzR8vbC8WZElbA2ArBXDuuAYN8gQ+LjtwXEuVJA/eS+eOvIOWwH/xp38evojLAaytPmEZrASVW6lyILecKNYEQfqUMxRa2Lsml86SqKCenrTP9+PAn4KFAmfv/gMxCVEdgp0x6CPneWx//j38KlXd3H1umtYELqIOIFBpUA8LiDuDlx3zWz3j9933TsqTK8/Olz4wQ/e8LTAC6NUsrVb9HyIbsW0BghbCQnV7GC2AxMUM5E6NSoKp0rZWABXigbBKcA1dEUCW/QDQdfwPTVB3xfPnTrJyaLGkP40qDjEMMbFcBDwpiOy+z13vnNWwPUzXPxTt9tJK97qvJBeXVcMy2WRZaEsSpHFklIKsFxQlkbZXXpjDW+xxerv+wTfFsisVXuwyvjuo2Mc8EvNX0x3abqgaGX+czj2l34fn9yL+QlgEXGDhUEXRi1FtPgxpMCtgh/68E1PHZnpOyZMP3HvsWfuu/no9nwAh8HzQZHprxm9UO3e9jEmKieN5yllxVT0m4TV9CAJUTl4nYB7OtACYIFy2mcDJHAzOoTXZG3zlWuDDBLiEt1dPHNNECYhs6W2ir8exAdmqgp/4r53zgr43tvscRpQgtmtUBbLIoul6aJQdo2ysxTZLSYLM02GXxbKcun/SiL0SsthT9t5aQcBTEhsQczx65h/SZUdo+4aZMegj7/Ga//S73FP5k/aMdEFRZaFuoDILk29Rl/E6KWb1xyZLT9x/7VPvRPreP3R4cIPfOD6ZwYRqighgmGAeccvjS5egGRNgGhXIpyKf9wGJFpBBczRnyFGJxkd9MAGAIEDLgCGYfgajdEDjLLaySeoDsFApAON/kpYI//TGgK0uXgDwUHIG7eG3T95x9tvBVw7w8XvurWcWlpx/9uKXCpFd5fUxdJk10wu7RbdXRZdGPXS0ifkZIedEAS6jC67BGDRGNPgnbkBVA8pQT6Et9CuqT5KS/MRsjSVS8bhiXM49pf/Nf7EGzE/HCXomQKDZwsouoTKQkR3mbEBkX/zW255ZusdsAJS+w/ibcln4s0705pX2FgqgnUKVK0BwLjBrLdEziYSUfgogQrmwWsF3tOBbAiSZBcvnpf5Vagdq0lRZqfHNABiymxUwE7mAeSkWfR93wTgEEmFmQqWapxDbaHEp+/XJ//Z6XL/jr19a3fu2ZNX/dQXX/k3vtH9/OAHb/jS/+V7b//iokBFxGSoxQ3wwgCTEhH/QMUC2uX54Q08dovIgtQdgz5+Fsd++vf5xswP4LUFrvpf/gZ/0N9liW3LsDcaAMyBhz74di0hAOD6OS/8wIfKMzMlZ4M3CR86MJRG9m7Qwdujec4/+8dC6oTF7AzUnXO1EgJtbW5tXj07eK3AezrQFsBHP/rRUyI452AfQL28ty8EBnrBnq2v4ls3ACIVHChiq4ARcFDlQHKmagL3J28+gt0/eQfePitgsQu89srbsiuCsjRIKd67kMVbYFmROi/PGHMFvdEpluGzZ6pvlyK7ZoMH/Ozan/79N6H59wl94kY+e98xbs9EqINSRTkMXrXv9fupG6LaM5t69LIpdUGsaJKBKIwMkf9eQMpBLQNOOtACAAAInI2Xrt1D8TTQRrRx4KTBY0XMO+NkZkAZReIkVEBRpcI1yszH2vHH7pMn37ZYwAsvvK3r4cNDW+lugQMbSqHUqj60gN+yUBfWmH9RoLtQefwcj/3078uBYf7r57zwfXfymdmgnM3Uh5YOElgKZBs4dDn/SoyKwfrAAPDIvzK6pfg0cjMfpZ6VZgdwHPiUDr4AIB7zKjgj69Dr+oxXGEfeM6EP/7CKige8u7uKVIZ3c9HLv8wDgWL0abiwW47qzne/HVbA26j9gdrURJbRlLOWscYfr4vv8vxFpECxNMguVRYFukPoE2d57C//Ht4w4Lef6BM3yzMPXC/nZypUdQtgAKiiXtPvbeMkBsTUOgDAC4X6TqjZLDaVSFoFiQeoESQdzr3F09x3dOAFAGCns9STTN9s1PwSCY/LdGAbCFQHZYt4GlFajYC/GdIV8IeJg5IDyB+/X574hq2At1n7k8DCWLW/RZ++UUEPKUU6kE8x3YXI7pLDpcLh8bM89pcOGPNfP8eF77+Tz8wADgDnAzjAsUcKcBYxIZGYd8iK93DwGInoKycJ/BEdmANBY3R514XSuwLTNhbAFadB5GQmACXTftZGO4XFG0HAvnBYwgkwgeW4ENbwOBCpQAiFbgUMYhxETQW85YjsfNft+MMXt7zN2t+vKnKXJuJ+7ijlJyYUmvhgTjrIZ2GO698tkCfO4cBpfgD4xM145v5rua0K6uDgrfkw2BDL4bFIxwIYKXXiSZb2pYYXtEKA1jocUSVS39dq8gMOAwYOgQDgspxH64EXDTJ9QIa0hE/LCJasCchKMdQt6qgtUoRGVTERUEOzzFS8Kk+9tcyP3ydPHBnkD1fc8jZrf8R5OxrQa+AzFVqKiXllYI32LwpkQdFdgywM+sR5HvvLByjgl3T9HBe+/248o6Lcmg+2NRObD0IR8+nEK52P1IVAdAEGAzXae4TxA4eNxGgYMZIRCMxwwUwPNAhovC4HlHYw+3rMvYE3+EyAB0myb/HuJPDcP0eowFF8MMpXWuWABh5AHA8wKDgoefMR2fnUbXzrsYB3QPsnmZkCjgT0sl4RqMIk23dDSlFZMEZ0Bbz39RB++5lc+8v21kBqTHwZxF22rtdPaHQbx/fdL6xKoIYFsqNaqH83FUVEBNlB2LNOBxsDABwCAbA4L6dRB4CGtZf5ZwFt2vJWcu67Zc9H1MhuDASMQiHCiEHgD1b0hAqf0gaBzYT8ifvk8bdsBbwD2r9dXpapa+tmG2WvJafykrosprsm+vhZHFjmT+0/IzmIcj6QWzMx8U5QUGTjTmVqdM2yAMmGXhQlIEOrHknDP/NCgQGQ2hAkRMVVBxwDABwCAfCd3/n+czScSxyPACwESikd6Ieo1YGTeeKe2o3ILrOjWEYBLBgqgoECzgYxcSHAWdQIfOo2vvlYwDuo/VsDjL6CLeccIIZ2KIo5+OfJ83LNf/L7bwzv3a/k2h/bOpCDwDS0/gDhIA4IMwM0q/yi62suijHw4OILFItYE4XeD8iymYw/LA4dhx3gVuA9HXgBAAAiOF2H3bOIV2kgxoC1kfDGkk0/WuewvrAeMSHIOtBALRl2YaAA56o2G8RUYIPQfvytWAHvoPaPPhWSGc5W/OQXU0oRi5l5j2/LNf/hF/ipg8r8rv3lmZkItwa1uZLzQZ3xtd1i1ZzkIzHII3w/lVrq633LtN50VsEftQMMMGFdT4ooDrz/DxwSAQDDaYHX9YM++UcphHY5PwhFhtpDG1BQhQkXTu2fDSNqUFGMbi8qNcBBgzIQgmEFzPHmrIB3UvsjL5Wp/sWbosSlhb8LAE+exzV/8Qv8roPK/ADwiVs98j8T46wr3BogVAiGqPATIVXc/RmNRAWFtCYFaKJdJIjsQgIAmS3AAThuZCMA9g0Z7TRZEvxCskghI+KfUj3TOl3D5wgcWicmDOYQ4bjVg6r3BNDoEgJPE84GsZnAIu9sP37Pm7AC3kntD+dvQsBxNWDGrKUY5LGzcuz/+K/43euaeRwU8ry/PDMTcBDlIK793ff3hl3RzpOINu9hzovUvF9HbhJ0H+jku0gOenYoAgSyEQD7hgY9FVxLD+8radEQKPqBiGUdQKr2Mt6HR4mh0Ggi7qPGM4joMUJyiJTgAM8IzAaYCviuI9z95K2vYwW8w9o/SQWUAXn+tQLCUS7e3u4K3KG3lar2V7GZesLeAVvC1PygZRck8ckwjelzGIgvjQcDs0YA/Yygrq6kpYhdqJRDgAEADokAEOK0wWu0Sa91kwTxAH7XWsmnD4RB+nx1QlDUhToElDWCqMzkgAYmALl/gcODYZyL2Kfv4d5WwDus/eMS3AoK8zVjFym9FMCD13L7P/+YfOaGOS98o4e7EnT9HBe+/y649gcwE7Et0Zj2EfUbIkSP+LcYA77yuMfIb0a6IJ6X/qc5U0qktRQjidkBHQc+pUMhAGwXj1VTjUQOqOxmg42nPI26BVgtGbTsL+hNRLssQgzdiK4wwyA2qOMBVFMQGG8+KjufvNVWrYDLpP3jUpmzDrOvnUfGUR2d+49h+z/9qH72IAqBT9yKZ+4/hu2ZkDOAqkpRw+D3hRLAnrR0otTTKScnWLUAmjdgNe+f8ABmQbPjRphD5wSAHORW4D0dCgFw9KidA7zu3597x3sbI3DTVf6NyMaNHxSorbXRMT/gD5QOMBHvsCFwwMlclTMB5xEQ/PS7+fgRnVgBl0P7wysachxWcr5G01MAHhgTL2t+4Dqc/9lv1c9df4CEgPv+eGauYoMoZzOxuWIU+VcP6HmaL0NAafL7eKDs/iBANgMIM983qsjgbCUbTSNp9N5AEPAgtwLv6VAIgA996EPnCZ7Jdt4+xtl7uUtEhEeeb0bFNTyCmPBi6RF248SjTHgkPIbB00HZs382E5sJqWK8+SrsfOqWzgq4nNo/Lq6fZwMAg4oXNHlREwbxDMYD1+H8X/1W+bXr5zgQQsB9f9keAMwH2EysRv4H8X+AA39UPehnhenhC4tH/RvyU7wQSAbUvoDZKt3/W4uFYjCA0AgaDoX27y734JOQZysc2JNgHCRaAbYibwDNxGt1nkNVAT5UMwbKd5rBASVtwQaRKD82Gejlw/MACH36Hj5WrYDLpP17sjD/e0HgcRHDoOAsznMuxgevlfN/5SPY90Lg+jku/MCdeGYOePYlINlCj/zX0h6A0xboKu3OmbHZ+hqlwEBYCVJbJovXhzrzm0n4VvSJh7yscw7fSTo0AgCij8FDAO67lRINvirmJzdkTtGNSY/1W08XUOjVwZiO1TILVyD8TG875Sb1bBCbz8RmNN50pOx+6tby+OXU/kkzVRvUG1kIlCrCFhQFhuhslFbAXGEPXCfnf3qfC4HU/jP1cl8PAnrHn177r3uiS1h4/ddGEZS+4g/o/UEJf8p/pNl6XnyOFA58H4Dpehx4KvQOwQGEd+RfKZnsq9N+gDrjJccCx2f5S+kdQtem/VQdA2TwQJvA52gOAOfimnU+U5sL+BPvKY8feen5yzoMM5F/Am+A4YMuDCJKiYG9gwhnQKDnxGYKHhHYg8f2rxC4fo4Lf/pueXqusFkWZAEcxKq3pgCGQVdGojNagXsvf3HwT5J223gzAPYskcNBp+lUgxwK/79bgoNPMxlOAw0DT4Gnf6u/F8UxRmjEBITZ3slEc2pwt8++B/wK0bWpInPQ3i9gpuDWIHbrUex8122X11QUMLrf+CDLIWfi5TmKpLVSaxm2YgDpkRnsgWux/dMf2X8xge+4Fc88eC3Ob4kLgNmgNhs8PTvEABff0kbjzsyrQcX6tt+J809YmFtKAFrthOb4OLKhA6M2JNpKHQoMAHCIBMACy/NABPtjwD2zThhoXWCiclDEB2rCG2R6o0jv+y7hPGfbiBUh4C3Dcn+gKDDAMBsG7xmgPtL7L3z8lq/fcHS4bMwkAszFgeoKQKNKThPYbGzCQMmtQe3IzHH0MzUeGaQ8cB3P//Q+CgzeMMeFv3A/vp4Cazajzavg9aIfINJ+E5ctLhkAQFpF8akPkhyxdl3D9hsRgMVibmRLEcogB3cc+JQOjQDQ3dlj2RbEELmbNs7Zu7hH+4e+vRORraIAxIPh6XOfzENrgzTTDfBYgBISDyGjXRjcEthS4WwAb7padn/2B+7+7OUSAhrDMLSmxgBRg4hCLbIBUSo00IXATMAjM7UjKjYHeFTFHrwW5//yR/DrV1oI3DDnhZ/9qHz21iOyMx9gs4Gcq0N+VY0Spr1mR3cYptXfQDfowyeuincD9vLfCBr719JhhURZC6okWoIVTw+XQ4IB8LU5JPSxj33wtBWmsGbJCS7kxLKPLrFZJUOIVDCQdwiIH4jMvKFkP0sv/3pcOb9wN3MQcB7Bta1B7IiqPXTz1vbP/um7P3vbtfNX3+k1EADDQCobJFZDuMkgdQLeIF4EP9DnH7groLY1o80HsSMCe/BanL+S7sB9x/DCX/uofva91+H8bADncIvFXYAM/IHdNGeo6pohqG0G4Lg/lAWuy1/Xj+vPfEkdUx19ZNQ/+Y5DggEADvhgkCmp6mmStwOAsAipgehSEoas6KokUT3AGA3is6JJGsQGcGngXGWIeRH9eG0grIBiMoiyDBQxYPDZcwZQZS42lIHvv2nr/H/z4/f+yq89ee7WX/762XtPvLp7w6UF59/o9WZkKm3ZY1vD7kyV85nXwmegclDpyl3MDWivmPHuKOLWzpFBDUtTDsIjYI0J/KXf4ydfW7y5ysFrZ7jYgpFvpuwg7Wu/jgeukxf+1J3y9Kduw/NzGOeDehs2b8LCQb3zj0NzvJivvye9BeDC3yO3Ei3Rc44c6rSAFhNIU0D7ZnFMlZIHOBw1AEmHSgAYeWaA3W5UeLKOMqAOdGTa71ZLgNFaw9b2TyaCQQyGQfsuMZ1fiQ4TMGgU3bhK9WZElC2IqfqAHpGBKtTvfeja5z714LHnszuvRR/TLNV1v9TBC4FBbycW5+DDLl2jD8yAnnIIt2OmnXasjGFh0jhAJjANYo6gk8GEW3OxZYEcmalJMYgMlEI+eL1bAm9GCFw7x8X/8tvlUaVDpGeRIYmKWw4iFWIp2noVKAiVqOWHxzEUxtlssAGG1PyD+qINgwRwx3216IJWXbV61QaQRQzmM70iviM+FDV6AbpwMLrwThq3iTNvDlkohoM9DnxKh0oAgDxN6IfrWzOYKoZRS8AgRcUOB2jce/+ICMQw0xkEMWBjovkV47Rg7lhVCHMOk/QdBNCZYBAphVQt3qsqR3gXCswoqgKro6ny/LOxScgqHQORRDQY3pndc+RiAwhRwQBn+Ip76dwZURAFMoiwKGSIwICYAIMai/mgJSgfuI7bf+Uj8mv/yRsIARVwprAZhDMxzoao088x60booKzXBV/IYYhZDOrgi61BTFwMuxDJHgzSLBuPxs1YXTrkteV4N6szfhRKSzPfKClSDcQgQ/SF656ZYYBCWKK5qgf+iwBCPUQZAOCwCYBo0hC92yg6sJpw2fcBCvWqf2fOgIMqvNwrw4FWTEwVHkMzMdPwM9cd1iG2RUw89abBsAoUwwzgUimlDDZoAA1sgNEcpc4hoadeqFLV9JCxKNBENHALCsMQvr0O7usPAziLNB9MENH/KGQBZFhz/oMrQAhYCJkJCA2ctKhhZhAKpYD3X8vtn/4IwhLYu5fAEaGb7AGScsCOYYBStsR7r4XzowBk5uc1RHamXo+CM1EqDaoRrIE4DJvmpn933BanyXHoqIBOY6nNP3wmmOeAtfaN1hoolGgJk/0jwmKAQAkutfDgdwLu6VAJgEG3TpstIIOyGKGhUH1eqBBVQ4xNAu/65z48RER99mt1EVjFQqORRZCAEvOGIoOCxUQGATFk7Ekwm3mjmVIoJhDIYIwqs0KKJCQZyC60YZxQZCY1gqVQr2/Q5sVKDYpFARABmQ2slXHRJjwClmssAe+N6PsNdVjUQFOq8EihPXidnv8rH0FYAuuFwJbCZiq1S8/WAJuJUswBdapKup1FRTOhhICGe1OFV1frr9HQq4750vE96a0bh/V4KXRX+ecw4JgdS0R0T7MBKKG1HYACLHFPLeYIxnoNdmgCgMAhEwC75cLjM92CAZh5R0ihDK06Js1+oPK3ZcUQPQjojmNAQUHJohL3FBrX95mBdAcEykECQKTemQDmjvBAsMDblosXmjkMwbx3fQvlBYCFmoY/TCBa53x4syI3oYlBBopGHVuOwlaJltj52PZd8dt553VUsIsIrbcEsn0mCdlSyhL60HU4/zPfqp/7j79gn3p1IgQEwFZo/i2JOICAMxHTmWHIFF6csBWTYYieBfBiWw3p5Iwv3plZ3eRvc4bdZejTsiPLxpAugI/4MxHCJ785M1OkSs9sAOrMrx3yh4ElSZSoh3cOTwoQOHQCoJwfQKEYqQpCOWit7huTOIto3yWIFB2GViQUZmQGh9Zp/f51CxIq1UzSGiB8ruQM6oXGuZ1Ym0iNhmQRDNG9KJl9yEJUP0/xVmUtX9lOZhjcRfD9eDvs1LPOLAZVrUwTDMRQejlR3K0XjVAZzbCkQsUGCh+6Dud/9qP62f/wd+27RkJAhFsCmyVWXxguAOnIPVIjaR83JYSXF+kBEXQRqSsi6tUdQwRbJcZ9T+s0xmQw0tO7dKssjLBAgqjXgcSliQ7dL1NwiodJo3iY5prjMLQC7+nQ4AAA4JMf+9hpI8/X1DBNQsMjTe1KGQaOFEDWC9IcDWgxX4ykGlGZpv+XNAWf+G6VQ2iqAZ4sGJScDeQM9OAdNHraeQR8BuWW+EirQZQzKGcx5HIW+xskPhPxjjiDeCssJecDqTSIqjcx1XU3ePzJqMZBImIf3XYGgjMlZ6I8ompHZmLzwWsH3n8dzv9nH5VRUxEBMRdwLl4ePfOgIGcKj1soMTCEAsGtmdhcxebS2qwPQ/yLugXHMviJDh3aTyuYY3wdZqvXmI1eM63iFpqfsXTbeqSBYMRC80OvGvdn6jC0Ah+vzSEjHeSc93xvgRwS8FRcasuuMVBdCO3qBpptoEImHHhdmik/r/7nBDQ0DMoh2lV30W6oGOaDC4Vk3vmMHIb2+Xzwf0P8m8+kbj+oYVBSxaASQcEM9tmqVuytFDOsDWbWbRBCQKMLMkgH4xi3lLY1o20NsPe/S87+Xz+uj94wx3buY2tG2wrff2tQm0s0TBmC0QfhXITzwe3xgenjN3BV1lcIfM2mJb4pgFMo9+fev64w4FGXr2j37XrBR38lUFAUg7sCBFsFIQMEJDw8RUB1ra70CbzdJERfgMORa0hkz/dui0QLGiB1CgwIE/E68C6IhJHprNpkiK5xE3rS2Fig8VArpQoHrQ07BP5vPrTtUoiIgvPBv5Pu+2SQFDB5rtjj9ZRZ+s8GrROQIBAO8OlIMyVnqtxStSOD2kxoMyHfdx3P/98+IY++K4SAI/UsLBYHXmvMUxBIjFXz5qSR1vPX9Z9mqzWMJHR3vj00G7r+Ojs4v/dKjK6+LswjECyADFrDHaLRFIaY5BgkA7zbOGR06AQAhKddWjtepphFNZihDcoY/aB9zpb6MQLUgVNfswXPrAKCsnPw1DXoaZ21ULXeHtq6HjO2G/GDdS86Tdif5+tqx3RlsGrBJP5Jo55CwhKYDWT24js6U9saYHOFfcsNcu6//g786k1b3N5Sb5U+DKSqeZ8+FyLwFGUcKxavd1NWBZVOTPvp9y2jMbpWb/noadMMnTCinYGJVA/FOmYzqkNZn4decTA7Aonq8PW36SndN3ToBIB17ZpJ1s64JLVBQzEKB3gBXbQOUYmHRkTMh0ewouj7h027PgENiYZuu72YMN+viyfsZUH0WnrMrDpioBVGXrMfxOl3f1ZchGGIFuIM0BGiijCaiQw0zES5FQG/D9yg5/7Gd+hnB/G4hMcQPfWaLdQwWYvXe/imTL8qBGy0tiP3LDW5deXcoj7WKyyBGvrV1vW3Q/96ZahnhGoV4WJphwoEFJd/uGimeo7FtbInsUxYpILNx7W9PiPa0X4xANKaiVhJmqYZLZ6OGXn6Xf93r+9G++i2oUH6waZT5q9d62zM7NOqxb0oLY9Vwdb9NgQBmPBcTzzMsg8ijDMNYBLIW49iR5FTeoSDEsOAUZ/+vYTS651rvwa9AN5LWNJMHOAFIAJ+nhXw2oGaPRnUDQNIKAtkKBg+DLxrEiTCrUMwDnxlTa/0CbzdtFt2H/egjdabFxqomvcZF/aOL0qN7tDZKiwMAhhMEiucpuRKym9Fw9tac3X6m2nQsJ5aEL3l9Qjc0m+oaevu4c+vswDWfaZYtS5GmhUhBNDq7zMD6e24PN8vSsyG8Osjq5goRKCuPqJhs/Su1Mi1wqpAmGr+vYRm3T+UZrWFV3XRKDkEFqLS4SlikAJj4Y0xTIQ+NIQRG7JDMA58SodOABybz70zEC1L+1D8qaBEpzzUkbAAshQ4B2ok1SdLxB+m1WaTAPbUasDra7bXY9apRgcmpvoe1oat2f+Kf9wdoz/WnuZ0HNv77Bsk0II5LVnh6cK5iCmI7NGXgzSyEEigzGNVdxtrIvk2Pv7q2uqKgFqZAN91cnKQr7cFDVB0YoC6BoAIqHjMUxFQwgIwEhI9Aw4bBsDX55BRtAg/b9nwMzqDiHpwp3UIdqOADXIDV/2Sc7USFwCgPVR7acsa1+pq0vcSDivMHQCdveIFSfV4VWgosIcFkcG9PQXUmsDfuuvq9y2q9GbIUYDDNpKrIvdi2TXOIjMU08DkXnGPXIt2zbZqtVThtj5LUFcgoNmZBXB9bllcJV5I1DuF9GeE9KahbheIkTTj+cOGAQAOoQAAgAE+uNGiI5iIy3PvCZhbRVig9obx5WAMjpjOj6wLtldEGq+/mOtM1f5vCo51zLfCLK/n22sNsK891igD8TpMv1ZwwRGIEinJzNW36Jkh8Q4SKb3pNa1zoVb4eHTw9npqGamOv5u6BKIu+z3Ls15SWt/vC60MeEgJ561AZDhkVYBrluLwUAHOoJv17K2cIuXcifzWR1rQz4au7cKyfjwaS+4V6APe2Nzfy2zfy0JYEQJYpynXn0NvFo9M/NcBMq37u6cvbmMB4piFADppA/NM3Yrp+azbd3/+K67InhiL7jWA6PzoLp31jUEwiQPXqF/tACzeNFJKxg0CBWY8HOPAV9buSp/AO0LG0xY+ATEAABciSURBVLQovAkVnyZ6tgGvBl43J9Cx46zeQGX8HBq1hul683Y1TTdO3K/T7OsQhHsF64DVvH0eZ52A6H/4evn2vbIGq+7DegmXGYMpVPr1LJrpuo1M98l5rkuXTrfp187fOAiIME/hSjZ78zcJ/HFiToDyeKDlADB6twQDVGRjARwYIs4AjiNvU377wI92bQIUIgOyOGBsENb9Vddh+lCn2dlHr5sm7erxdE3aSscM37adPPQTDbcqhHpMQjuvfvvRYSujjCPqq4JlPcuPrYjw0dcw9FSo0Uym57e6b13R/tMU58qxp9swT1wgUApNaITF6Pi8p91RJco+PV3o+4oirvgrGwvgwNAQ+VrX7ayBn1H3L6nRbXh0Oz6W6DTZtZD24OB6k7aa97ZOY64ucB80HEX2J9uO9rMG4POmgEZY/137TFe2WYdC7LH3e9E6QdOu2Rm1r+Ff54qMzn2N1p8KuOn5jPZTLf4a2s/bHnc4RL4gW8UTpIMerCmC2i0Kh2Mc+JQOpQDg4uLjpKP4BK69mRNiWx/IOvUnZ+gky9Ba+Qh9/JyXCu8RxQbeGHizDmTTB672cgemOfK9YgdvdOx1/nYKrzeCME/PYbRPXV+QMxYs45Ndh/JbR4KGF0grYyqw1t2PNOOLFUn/36c+o2ID0Hf5YD2cz3wUjxlFZ9No3Xa4+gAkHUoBcPTo0XOgj+/OqL4COSkGQHSAdfRP1gH4VownwaWGa41JACvpzaDXkqZBsN5knlbv7emPT/bZ1yBMrY9eyOyFWOxRhevM//6863lMrmdd5WF+Pl2zddmAqabvvxd117wPbmKNsFoNmAbkF8hOAL33j8D7IxqxdDBlRnu4gI2SAnpPtsPUCrynQykAPvShD50X1dPBA0wsf44EA4CEBDGyw2khtl5wKgaDmSVAaBQaqEw1+WwvmbAScZ/+LvP7mAbQbPT78Tno62IN1kXfV7ZX7KmC1wULV65ljSZ+PbdkrfZfcw1tP875Asg6YTKNOzgMGMjGH1nmXWekRQeARIlKhAe9gMyfCoMn/wwgpAhxOLU/cEgFAADAeL6CeeDjwjyiHwG9gAT1yb/IAQsgcCCR9sEi9mCgPiU2XdC9ot4rpzhlqMn++lz3G6Xm1v0dxRv2utM21urr4hzT96tpt/XbTbfd67OJJ9+tl3cvco0c4zz2EGT1Wjl1B6IZqIa49/FvWSiMRC0pkE2gXGtkRaAJhkM0DHRKh1YAUPkYi8kI6WXjSGD/nXWrQW/TB402gTSK1dqiWDgdM9aaANQb0jrE4DqtOn29Fx5gL0FTA3lY3d8bxS6w5je9YJme0zQTsrI2k/2tBvmm5sneQmn6HYB+UEikgTWkglsEEi2PgOreu3LwmlB6V2YgRoAJQBSzjQVw4Ig4IxK93fNSdWg3GGh5QXXEeFctBMKENOQzlL2oRsyKjgl6H/sNAmt9meqIAdA0UB7rjXLfuV136ivn2Z3iWh98Zf+jY43jDP1vR4mKPcz+vWhdbGKa7tsrLpGv+/Rpv97eyZcO6I8G8JTEcwRWOe5yd1cgFpPGJmsiGwvg4NGgepr9cBwYFG3cc6R3INXua9vVVEFuS4g/H6towBYWX9Xoa/Pq1tJhY5/WVhqE7MUUmDz0oyDZ5FjrgD6vp6WngKHeBTGsCow3Y0msT+tZtUq08/ExOcbauAUm7yfHjdZ+IhTJOSA+RFQno4D7sI47eFKnSbdnpxxSGDBwiAUAifMxBqLiu0si5ur4h+wTmdRaQgNAHSKTi9V1FJoGu14P2os9vhszTdd0tNtmmv/3N1gROCuHXMM466C+/bbTQF8Pm10vYGxFWE0RgLk/yeKbuhMdCZvkzb0Cj3vRNDXqbd+QDT9qib/E6DVBugBTVyOi//QuJp4l9L+HaRz4lA6tANheXHx8bODFf6IbTF75gK4VTCJEpcaGY1w4BRCxwAIAe2umnvpA4RuZyKNo9uTz6f5W0XurmYKp6b6X27BOGCT1TLmKxnNRug6os257Ue9vMD3+2nRnDQCuP7dR5eTKOtEbPCFnu9ioD5ynhbX9VuJGj4ezSMUJkHJxuTy0FoB847vYv/Tbv/elf66DcqaD6TBQRQw60JVBTAomYEaHjzoSrECkiEhZ7O5uPff88+87f/7inYDNAd9W2myZtpCTlaxTiGMCsWug/jfrX8fmE+pxabL2eJbuTGzvnZBXz7Pfp3+TLXHjCGwjSUUk9luv8nXP3asro5SizThyJsP4umoUfnppnO5z8psudTNep77zCCEyLK655qrTt916y9e25lu7FCgoA4WDioRrIxhUIOo9Aj3YW6QYlWZittTlssjHv/WPfOc3+izuVzpUg0GmpMAZALflE+PqrIj6IAhmbjj/GlBHRF+6dOnqE8dPfseyLK+uHSNAaO0pNWaunDKbnzUG7Q1pWcOUMXgi+1QD49/WAQaNvEdlbhehSxlvL13Pg/xNv31slXtEYxwZMfx4v+33o1VuIqPub7WmWiZCK7HXkzXa83itz+/4+xQM0n0nAGy+vX3hPc8eP3Hze97z7n8xn893gVYQRGsArxwiy+gO6MkA0+gdcWi1P3DIBQBFvg7jbVQKQYqoCIWWM6IQGk6jaSz80b10aefqkydPfnuxcpVMAkVAY6b20KGbziOTv2278QM6VvMyVemYCoq2T4nxuKNWFhMGn57D+Di9tbD+nF//u/6zVW3dr8u6fTbrZI/75jdvovFl5ff9LppgHR+3lHL1s88e/2Pvvvuu397aOrob5b0tExS9AesNBUBSRYQoIjA5tP4/cNgFgC23dTb3qLCn/2KgpieLxbwjTElXAMBisbjq9Kkz31aKXSXRFlcmmlLETWy3Bsbmdm+iJlWzuDLtmIHW/WbMJGsERnQzSuWZ1sf4dw3lrNrvR9B7KOi2zvPrLZJ12/Znklb7mCHXXc90Xcb7qWdBQIfelWjuCulWWLpYYyGR1ghG52RmV584efrb77rzzt85evTIjmTSd3o94RYKwILsIFYOtQVwaIOAAADR0zSr/JvAcnYTgNIUFQGWu4ujJ0+e+liv+ffSlKmBRLQynIhW31IktErnY2ts6/90tK+pSzB2NZLBNY6n9biSBW/S/3Uh0M5FJhZK/5nU85XR8dp2qtq2l36fsc3oGtq6uHAYHy/PW3W8j7wXfu3+W2NaO4iufk3z5zn159Leaz2nPL6ZXXXy1KmP7ezuXBXRvYr+89IPE0KRZcHMsmA5fJ2AezrUAmBQPe0YENZIML094CjXRgAXLly89sTJU99WSjkKoHugMHrApg9b9Zs7ddYLj7p9PVJqfe653+lx44GsFkfzh5sgmp4n0JvKLXDYBNeUkbDneTSfvgUHx8ze77e5Q94YdHyOLVDY76MXEG0doz4Dg+p4PbDufNs2/bVqd+xi5ejJk6c/urO7e1W7mtozQgADzUeKK8ItFD20ICDgsLsAysfQRrw5mbEVugOAYOfihWvPnHnuo2Y2mwbpxu/7YJlOovrrIvjjYF/7fhoQq3voftelzKQ32fV1frfmG+kyEj0EciWjsNc+3ihRNBZ84+vfy3pal+lYd979+9VYw3gbjoTHurUUtwSOnjhx6tvvvOvO3z12zdXnADdq6F3ENYWzFwdSDMtDCwMGDrkA2L50afvq2dEJH0bgLx6WCxcvXnvy1JmPGjnLB7jXIsbeDVgNiDVtO43+t+36BzXTX1O2YndO0xBd/g57/KaiGjtNbmY19eiaFW+COd8cce0ZdtfHlvobfxnxeVtN6bU0KdHuw0jk1jTliNGrK//6AizP2TMonJ0+dfqjd9991+9cfdXR83lVyBHscXKHtRV4T4faBfjkxz52GsC2eSWgR3k7MMqFCxevPXnqdNX8Xl6bZrc/LDrxrYFmFTTfOP1WjLZp5nt+Fou+ztTvzdx6jN4K2dsVqdt3wqj/TRx14iev853H7sTa68E0ljF1F6JMea1bJDV4OnZFxnGH0fn5N92ajV0WnVxDd8DRa+3ckhCQsxMnTn3bxYuXru1jLZaZAPM4wWFsBd7TobYAAAAi5wBcnXMhxQxUlYvbF46dOnX6oyBnPfOuS09VxlXtfPehM61Xf9vHAYgGBMoI9nRb6Q40juJLPMB9Goyjz6Yas322HjXTn0MTTi3vLtpp79CGU4Gyoom7YzZt3moJSMZszrEwW7cW/T7qdnEN6+5Fo7TCuojLZD/dqoK02clTpz961913/e7Ro/NtxOeFXj50GMeBT+nwCwDDY5zxdiTER0R2Ll665uSp099KYPZ6+ei133WmbQP+rKdq6o+0+npBEe/q/jzyXdVxZeD+87EJPd7f6PeQevmjS6m43rG2TsaRqenSmcZaNe4aIdj/dnKdLd7QUqro9jJaJ9V63bmOY29uvHb+liufTe9TL2xJzk6dPPXRO+684wtXbR3ZNpR8bkDBodb+wDeDAFA7AyiMxEwEr7z8yu0vv/Lqg878OvG9OX64gsNo4yi4b5vUtHfbLr3W6eseRNQpZ/T7jod8mjfvNs5jrJ12jlXsYM2hd8eo6U/doxMy9haA7crzv71VkMjKZgGtQofbr3NldOWbdjx2+5FeSI7WKD9ve1qNx6RVND4bkrMTJ05+/OZ33fDV62+4/rnEiYlsLIADT0acGRz2Ka+88uptL73y6vvS53YtJ2kPdjl1VJANJIeGTDQLeps7HtFMLAsAtkesDyJmVzLVJgUaH3fofBl/Vjk/zzOPEeee50LQIb7xeQ/57fnB3YA8qwmev/7e3/cMuHLt3fFjGOMkQBg1eXWdtNtnCtrpOsV5SS8w2TIgzExMIiJ7CyWvdHJ/4vVUpnlg0IN/L778yvshItccu+Z5AVAO4TjwKR16ATBTPWcGvPrKa7e98tpr761BuzALYxagU/fEjVhGu9dAe8ik/91kmxqTk1UNH08/4Vj7xseCCe91v+zch8qL+US3c9HOTGYKl2TSCWM2ZtDuq46xk486oZhDc8fSpLcrmsndeE+aVeAbtN3nesu4WKoJYWdwmRyjMjQm51IXretaMjrfBBb1YZG2gxdefOl9Vopcc+ya54dDOA58SodeAOyW3ccvbe/e+sqrr71XekQb4kFN91g1IToRKu4huiNVVJlD0NqH9BnCKb+la1o1Vs+sGaAC6sPOrMALC2QsQepZdtH7ym6YnMpYSKGPS/j1jqr9+h+y28EkvtDOrQU5m1vRtHEvREfYH7bfBhdP9t+gyCtwaE72lRfVr1d3mLYo7Vjaf5uWkxFeCKp46ZVX32tmoseObCyAg07H5vPTz517+R5k6knV01jdLECgaSntUnfJmM2nDXO2e7S0Awq153FcDefaOINZOoqqj42GxtCjp3vEaIA/whxxuHT/6UQEkikbj4zPddCx5u1OBnnZzL9dK916xtXdaYUJPe6xd2WmGRFIrvHYSmIArdrrjDHALTaOt5be6un2VGVEF5dorO/umEBg8OwwfTgsSMVr587d9+C7jh16C0C+8V3sf/of/9E/5TAMLW+fQkDGrMv2aIwYaIWRuI4pM0i36puOowd7BLuAyhTjUN3YN64eeceQjYEmfnRnsPS/Xedv99c+pTFzyYjRUlv36zEOOMa2vUUxOlbbcjXaMGVnjPbf371pSpC9wFnzt79mHxpisPhLEsvFAj/8Z77v0PPHobcAAODSpQvLq686NpOhK3oRAKItWi6unXumWs1Td5H95mij20XOEoGsPN6dObsHDra3OCpuQFoqLAN6zfyfmv0yyl4gSp0z+l2N8i77Ud2NzvLIz+pxcg0yys/uPHyH3Xl055DXxDptoYqf/pqbYdGuX9esVd0X0tpv96sPaua+1v3V7tqFjHkw4VowuxwV7OxcWl6Wh/MK0zeFALh44eLs4oWL7YMpZyb1Sh/oVdjqbzH5/Rt9xu4Qex33TexrpEjXHaO5yhDZe3+9ZTDd7yj9v3cG782tWX8+e/12usb9OmXAlHv8/vXuSX+tMpa7Mj0vTPYl3xy8caihwJX6OFL/IND/BQS9fTd5KNOX7TJ+422mCn36GbvEwYQJV37bf7Tmu5WA95SB1hkXXfBtdMxp4LLfXNYc8HUE5tpzjvUcMVmuKdfspzvXiYEz9R6wLmyxct/iWke7nmwjk+OuVQyHmL4ppByA0cMjazThlK87l34FbedfYD1zrNPIwDog3kijcd0D2R9n+j4Zq9eQMtk3sKLlZHI+7F7LdL/rzqPf50SA1OtIpluTd19Zo+l6ToVBv/3kPq58PrneFYth3bHX7eubSAh8c1gAr2NS91HudQ+DYPJ5Wg3dBsTEipgee2omA2MrBGMGmqKDswfglNYx/Mp2skZwdcceRclz+9yhTH7WcdZIk3b7rFp2wkDst5M9BEPugKv7ne5vtJwTS2qEsOysAa7Zz+g6u9+9UbnyYaFvDgGA7oZOTdb8aKp5esbF+IEYCYyegeOzqRWRP8oHcsTkE5996qsiP1+zz/6cR3wy1WaTj+qGMj7GOtcl/8nrMP1o/91+Vq63d8GmwnQSJ+mvdSRge6tqDfP2O5gUBDarpF+/NQJ6tN6HnL5pBEA1b/fQQFOGrDQxB9cF8dYF2zh5WHvNusKk3fmMAlZTi4R7HBdrhNjoiwkDYry/kYUx1dzTNent66kFMgoiTFyndf58t4+KjuwFaHevVryBqcDq17tbPwJYlX6rQdB1QvObgb45BEAv3bGqgQCsmOR144m2WevScs32mOxvEryqgcWp+RrbToXKWnN3wpQr57YuSj61PmR9cIzT9ZoE4Hqh8Yb8sleAchKkW7EoJow8Er4TK27qeu2ZMYjPe/T2yDWQ1c0PM31zCICJZhRZ//VaDco99geMGGhqpo40VfdvDQBw1WyenPPamFQftd7rmoFVISdrvpPVn+wZ3+w08so1TP33daczYfK6z27fPaPvKXgnbtHIrVoT41i5mHyZv+Oa774J6JtDAAB7PtUrwa81v+FenNHtYJpBGCmfqZXR/Vb6/U59/d6X3SuoNvWD15nyU1N8D7+5F07rtKNM99+f8/R8ZM2xpf2tJRWCldTrXkHLPM5UiIyYeI01tqd5v0ZgrA3kHmL65hAAEx++f0im/mbdfvpArkQN94gUr2Oufj/dsTj5/o3OfeqS1Gshxj7vOkEw1fyYWAST33S1M23bqQDci+lfJ4aydi2m204E7tqlmQRfa5R/3f1ZF28AXjdm8s1C3xw4gO7B2sv87x+OUcOOjGL3Pwja0898EwGladBtLdJt3cM4NVNTIEz9dOwhuLrzSrenuj+5ydSywOq6rYsvjBQ5x8y5FlW4xz3BdNvJfVontEeW03S7yfZr+6hM1n3jAhwmmmpljh/4XpOuKHB5nf1Mmb93K/ayBOKzUVoNezys+cUad2XFrZiY6X2gb8UlX+Ny1MNMougrQdK9TljGv18nHFfiImssj5HmznvSuQ4r18yxJh8FKKf/ZHweMj2HNbGLw07fHAKAfLU3k4HGICMLYPpg7rm/3C1WHpgVjP1Ew63LQIyi31NTuxdW3YM6Cib2wcd8wDk+nz7NOHWDRoyJ7ljT91Pm6vz3lSxK70LF+9GSThly6pZ18QfusVb52x47kdc63cdo++l+1t1/4ml8E9A3hQAww78P4OmVphTYw4yf+KErQbguoMX+N93+RniDaVS63880+tybyP05Yg8tPPk30uR8fTk2PaeRVbFOG/aWi6x8Nd5t5xbsZdLXffbbTARXdVW6H/WaewrTXifMeoth3TOwxkR61Yw//UZLt6ENbWhDG9rQhja0oQ1taEMb2tCGNrShDW1oQxva0IY2tKENbWhDG9rQhja0oQ1taEMb2tCGNrShDW1oQxva0IY2tKENbWhDG9rQhja0oQ1taEMb2tCGNvRO0P8fAcvgVq1FWBAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjMtMDMtMjJUMDk6MjQ6NDMrMDE6MDAeIpjuAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIzLTAzLTIyVDA5OjI0OjQzKzAxOjAwb38gUgAAAABJRU5ErkJggg==" - : "data:image/png;base64,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"; - }, - fileExplorerOptions(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,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" - : "data:image/png;base64,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"; - }, - programsAndFeatures() { - return "data:image/png;base64,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"; - }, - calculator() { - return "data:image/png;base64,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"; - }, - services() { - return "data:image/png;base64,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"; - }, - commandPrompt() { - return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAWMUlEQVR42u3d25Mc110H8O+vZ1YrRyLIbOHgKyKGXEhCgcHGsi0cG/PEUxIeoYoUbzzkgVf4J4Ci4IkXXqgiAQpDqghOgm3JMlVJSFkW2JZkLK0ua21m75rZ2e4+Px76dk5f5razOzPd30+VtHPpPn26p8/vXPpMD0BERERERERERERERERERERERERERERERERERERERERERERERERERERERMdKrMffmHVmiOjI/EXZi+347zd29np/DgAKBXTWeSU6HGNM+lji/yWp7kQmSPGYabEQei2J9kYEUI0WUcCYEAIgMAYCBTwPLa8Fsfbzk6cfEAB/maSe/G3bGzi5vGRtX51FtSQqRIto+jjdnGTLq3G3aO9csrpaadjLaH7L6bKSy198MCTLd5q1+A110km2p8jtJgQKo+4+Jcmk20zzK3H+7PwroOLmXO29iPIuQLQdsTZecqzViceavZgebbWW0+TwF455kvWy9/LLDJfffnWBSs5BVbfcST41601xcifpwlJYK9pAcggl2Z4I1ERHw4vLTEtaEPHgeVEgSLYnInho5afx2vcu4cXzT+c2K8XM5vzfRzdx9onH0+dvv30FW1udwnJnzqzg3HNfBACEocHNm7dw9uzjgALiFTfQ6+7jxz++hqUlwRe+8CQ2N3dw8+Y6VlZO43OfO2sdhXhfFRDj4Y0LP8ArL5/Dfr8PhUAgOPWJZQBoIarwFYBJDmASAJwcqHvWFQq/2iUS7oljn/SFc8ZeJ/4vaXGovZBmG1KxHtvrJMupWovnC2L2uiIrbOpkWqHWG24LKHovOx65gplEN7iBROy008eS7mMWvPJBNnutLGC6T9XNj7OuWMu66yY5zopvsvGys1ytpSs/0AHLSXw8Jc13GhDya9n5dGpog6QoJsHfWcz6/CES14qKMAwhEIQQeB6gLQUQQrXlJm9t1g8DZw9Ly32u9fDhR6t49NGH0+dbWx189Su/g82tbZgwxNLSEs6c+SS++a3vwA+CNN3rH36EJx5/FKEaSJilqwp4AFZvrWF7axNPPfXL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"; - }, - taskManager(release) { - return release.indexOf("10.0.2") >= 0 - ? "data:image/png;base64,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" - : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAACAAElEQVR42u39eZBlx3kfCv7ybHe/tVd3V29AN3YQBAiAEAFuIsFF1Gi1FBrbklfZshwv/MKesGXPk8eyJD/aDgWlZ3mex89jS2GN7Zmw/AKkRYukwBUSAAoEQBBro/fq2ve6dZdzz5Y5f2TmOXnynnPr3urqboC6X0TVPfuSJ78vv+X3fQmMaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKJeIrf6Ad6N9Jv//J9XJiYmzPe9//04efq0XyqXablc9m/1c41oRMPSSAAMSV/+0peI4zj/gxDyKGNsiRCy7Lbba2EQbNqOs2hb1ltXL18+v7yw0ATg/pN//s/dW/3MIxpRHo0EwJD09NNPl0zDeJsQctK0bdgAiG2DEALGGHzP8zvtthdF0Tql9LLb6VxrNhrrjLFFSun5ZqOx0Go2twxCmv+Pz37Wu9XvM6I/2zQSAEPS1772tSMALgKo2paV3kkIaBjC930wAIQQEMOAaZp8N0DDMPSiKNoFcJkAi7vb24vtVmsLwFatXt/bXF/fczudnRO33bY7NTPTfPn555uPPPFE++NPPhne6ncf0fcfjQTAkPT0V77yXsM0vwPAsW2bb2QMjPCmjMIQnueBMQaDEEBsJ4TAMAyAEBgAYJowCIFpGLAdB4QQ+EEAFkUwDCMCIQFjLIyiqGNZ1hXLspY6rdai2+lcnj5yZB7A6uXz569NHzmy/alPf7p7q9tlRO9OGgmAIenLX/nKhy3D+CYIMRwhAJiyP/B9BL4PxvhWYhggQggYhACGAQLR8GKfFBRE/or9hBBYhCAEYFkW1ygAUN8HCIl8StuEkCWbkJUQWABjlwAs2oSsEsu6SMNwlViW+4HHHx9pDyPKJOv6L/FniyzTHGOUGkbGPgKAUgrKFJFAKdcCDAOUMRiUgomzidAcGGMg4IJE/jIgpVkEvh8LEnF103GcehiG9ZCxe+XtGACfMZAwdC2gwcJw4U+//e0VYhhvE8ZWYBjLpmleZYxdAOATQkJCSPC+970vutVtO6KbTyMBMCTRKJomcrSGYFrGOFMSAtM0YQpVn1IKGkVcG2AMxDA4s1MKGAbAGBBFoIbBzQLGUpoAAFAkahpjLL4vKEXg+/EzAGl1jjFWCoESCDkK34dFCGBZXABRGhLDaBtAixlGE8DOyy+/3ADQJITsEkK2AewCWAVwgRByFUADgPvggw+OBMX3EY0EwJBEKZ0AACtx7IEYBmq1GnzfR2NvD77vwzCM+M+yLBgGgWVasGwbBoCIMS4YoohrAYTwEZ8xGEJYAIiFApT9kqTQIeI4qUGo+6XACAEgDCEclxYoHWOEjKnXNDL1GkQAXHABMP+9733vEiFkEVw4XAJwlRCyDKDzwAMPjKIa7zIaCYAhyTTNyTAIYoceKIVlmqhWKqDlCkixii4FQs8FggAs9BB4XQRBCNftIooieR0YhgHT5AJC/hULBYAAjEVgDEDItYcQwjSQ2oYkSlPPR4FEKIj9JIOxpZmR5QRKaRqAyRirEkKqAI4DeEI73APQBbD02muvXQSwRAhZAXABwCKARULIJoD2/fffzzCidxSNBMCQxCg9A4iRVYzOhmWBEANgEVxioUlsWJWK8PwTmACKhIJQCgMRSBTBdztgXgeMRgi7biwcImEyJBpEYlYYpgHHdmCZJizbgElsbmYEAQIpGMRorpoFjFIQobGwMASx7djEiDUMpBlfEwL99hUYYwVCyBiA+7T9FIn2cOGNN95YBrAgBMIugCaABiFkRyw3AewSQjr33HPPyHF5E2gUBRiC/uAP/sAxDeMFwzAeLJfLMbNVKxXUxsYQUYrlwERAHNiWCcs0YAhPPgCEQt1m4L+UMjCG2DlIEMEkFCwKEXU6XIuIIoSeCxqFCMMw1iCkH4KbGFybKBYLME0bhmFAhigZpUAYcoEgcAvSbElFH5RrqoyvLuvr/fYNcywhJAK3UkJwP8Q8uIlxFYmJcQ3AFQB7hJDuXXfdNdImDoFGGsAQZFpWiUXRybjzSsYxTcHQFCAFFGwLJdvkI7VpcBMeBAz8GAYI5megjAsBxpgQEAAYg1mswWAAA4PFAEYZTBqAEAaEAQK3g9B1QViIoNtFFIVoNJr8+kKDSASEBdMwUCgWUC6VYFmWMBMIRydREbIkBpJX49GJOJyZoyXk7cs6ts8+kxBiAigAqDDGjuoCA9wX0QawAmD1/Pnz18ABWcuEkCUA5wGsA/DuvPPOUV7GgDQSAEOQZZpHwyiqyHi8tLVN0+Qe/jAEDBNFy4RjWyjYJiyhynOLQYz+EVfXJfNTlggDIFmXgiERFDYYY4gcBqNcR0FsLwihQSj3FJAogNfpIPI6YEEI33MRhSHc3S62t3dSAsI0Tdi2BdM04Ng2KpUKTMsEISZsyxKRi+Q5VCdkFu0nBHizHcjkMAHUAdQZY3dnCIgOgBaAlYsXL85DCAdwn8RlcG3CBRAYhhHcfvvto2gGRgJgKAp8/yGDkIIM8wGAKUZYQggoCEzLhG2ZKNgmHMuCbRkwDQNEWOWMAcxioGJ0j5kLioAQDM3AR365jY/UwnRAep3/WuB7SnBKNS4sFAEDxmDQEIxG8NstBN02KI3gdV3A99Fuu9ja3o2ZT2oIpmHAtAzYlo3x8XHYtg3TsmDbDgzDABNajS4gdIZXt6nreQIi77icfWUAZQCzAB7UDgnBBYQLYJcxtnXlypUmIaRFCNkmhDTA/RTXDMO4CmBebG/Pzc1RfB/TSAAMQQQ4YxgGDNPkdj1jfAS1LM5s4MxumQYs04RtGXAsE6bJmUl2cJXp+TqLfyUjIUNAQGoFYEIw8G2UUemOSLQKypRRW9UkHDDGUCxVYiESqUKHhmBRBL+9B991wWiAoOsiDCMEoYfW0nLMjKoWYZomCo6DWr0Gx3FgWTYsy040nwzBsB9laQxyfUjTxCKE1ME1iCN599ccl20AF1ZWVq6BOy5XCSFvC3/EMiGkMTMz864Pe44EwBBkmOYJgMfLYxNACISIUkTEgG0QmOLPMgyYJv+VgbmYwSHj9IiZFPFWJAzJMrZBFRIcKhSbDzRheig+BoAhookAkVqE1DBo/GsBYGDlcsoUCRkXOmAMNPLhd1rwXQ8s6KLbdWFEITpuF7uNRsrEIIRwX4jFMRDVahmlUgmWxZ2V3BFpZDKwvqxuG9YnkWViqCSFCqXUIIRUAFTAtYkPatf0CSEegGubm5vXwE2MecMwLgvhIIVFt16vv+PNjJEAGJD+xxe/SCild5mGAcc0Y4+6IcNrjIES6XgjItGH/8o/wZNKghCQgu+IPpkSEMq61AqIvA4YGBP3hxAIVNEm4mOEZoC0dkEztAjVMUmh+B+o6quwwcqVtBMT3NxgjIGGHtxWC6HbQRT4cD0XcH3QdgeNRgOMAYYhTCghHAxCYFoWLMtEtVqFbduwLRu2Y8MwzPg7qNqSuk0Km/1MjP2EQN52Rbg4jDEHwP0A7ledpYQQBq49bAFY3NvbWzQMYwHAijA39gDsCJNjzzCMBnjY03Mc55Y4LkcCYEAKo6homeY9jDGYjgMqUn7NYjFmjAgmLMn0AnujjvwAFC97ej8R/6SAiOG/YKljejQFucY5FjATYSC3U0UQ6IzDNQcZnkwEh+p3ULepoUtdWCQRDguVcjk2U9JaBBCGPrx2C0GnDdu2USo6oFEI5nfhdV20VtcRRRQSCC3NDMsyUSgUUK1WYNsOHIf/SUgGb1eSyeT7CQGptchj9XaS+/J8ESL6QgzDkL6Ik3K7ISDgyrUjQkgIIAD3TSwHQbBCCDkHrlEsCbTl+YWFhb3Tp0/fsGzPkQAYkJxCYRqUTsnOyGwbEIhASimiiIKZXNWXYb8460+DW+j9h2j71HVDvwJR04YSjQCMAAYytQi5LgUIU4QHU/wHWU5J0GxfhBq+pBAMoAoN9AoKGmsRFmi5BMZm0toHAIcyRIwBNAAiChYFHC5NI4ReB57nYW95TWFQCkJEqNPkAqJUKqJUKqHgFHhEQ7aYTMlGf7+CTvq+fiZH1jUopTruwWSMmZTSgmEYVcbYLICHAHxG3osQQgG0m83m8vPPP/9Vx3H+5SOPPLJw2P16JAAGJBpFZwxCChzXz0N71LZ5qIwQMEYREgtFA3HaLiEEendQmT/Lp00yluPfmPkTMkAAplw3Biiq91YFRkKMUTCY6oa0MKByM1MEB0kJF+5XoCnHZI8WIfwHqhaRaA40FdWg8jrMTrQP8GuElF+7yD8IEAVgEa+hgChEFHTR7XpotbcQhREYoyIR04RpcA3Cdnj0YmZmGo5twzCT75mFe0iaJtkuGToL3CRH/Kzz+/kmMgSMEUVR7cqVK3fv7Ozcfd99933opZde+suPPPLIq4fZr0cCYECiUXQfMQxD2vymaYKB+wAI4U44IpB/kvlBdMRbcr1+zJ/N+IDKvvE+1nsN7lvgCkG8Vblh7Fgkhhgd0/mEwioAI0maMt8uO6uiRSh+AyBDi6AspRHEDE0ZGGhqW5ijOTCaBZyyEImIBpXhTjA4yrks8AEaCQERgAYBut0WGq09zM9fg+/7ICAwTB6mLZaKKJfLGB8fw9TUNHdWmlYc5tX9D3lMrIKxkm+fFg5yWT1fFwS+72NnZwfb29u4du3ag7fddtsfvvjiiz/y6KOPvnJY/XokAAYk07JuB6U81ReiWIeIADDGEBETpuAzEjNc4uy70cxPcq6XdTNDkxokw1CRmYbJOh/9pQCA0HpST8Z0bSFhXAAprYBrDVKDyBAQqt8hUoSJalIwVVhACAK5D2AFGyxiiCCFFIVNZ1EAQ40BiLiZQUMP1PPhu224nQ4ai2t4++1LCMMglclZrVVRLBYxOzuLarWKWq0G23Zgmon2oDoF+5kDWaO+7ncIggDdbheWZWFlZQX1ev345OTk/wzgr193hxY0EgCDEmOnQQhsM1GZTQGxDcIQlBAY4A5AYpCEqfZh/v1VfkCyWGo/yz6fZV04tYllbFPfU95bPzfJFxBWB0AM5bQcLcLo9UXwjm4mWgMDKKMxOEpuix2YTNUiEqdkbDKIYyNACWcmQiHth1DXLZ5siTIoZSgAqAohwijAWAQSBojCAFHXQ+C20Ox2sX7uIkK/i9D34qzOSrmMYrGAWr2OqclJlCtlTE1NwbZsEINAlwVZ2oPUGuSyL+o9SI1hbW0NExMTH33xxReLjz766KE4BkcCYAD6/Oc/bzHG7iAADKUOoPqxIoi4t0FiNfxmMX/qyD4ORv1aPTQAPkd6E/IERM/lMrQI0XziV6AIkajDALgwYGlhEKkRC0XbgDQBFCEShy0htyvHSnMCiRBR/RCMMQSUgsECYw4/twZEdAaMMYwjuTeJfIRBgLDdROR5WGu0sbi6hSDwEHmcRy3LRMG2YdkW6mN1lMsVHDt2DEePHuWmpOaIlN++1Wql0sebzSaazebxer1+Ejzd+rppJAAGINu2Jw3gLspYHPcHRI0/SAyACVPAZ5NMPcX+166Zx/xp51E282edy3JH/ORafVM/B2Z+Bbewz7X6Cok45KnE+LWHkJGBeNSHui7PYHFJhISJZVQh7VNQgU1cG6CgSDSN2Fkpzom04xlLwFShEEYRteAUGVi1npnDwWiIyPcQdlyEfgdbzSaW1ndw8eIV/PRP/2Tcf9TRX/oJtra24Ps+bFF2PgxD7OzsFMbGxm7HSADcVDpJDKNoMhZH2mRKbRhFoJQiJCYswgEuhACS97NGxkGZXx/hVeZPHZkz6gcRg20SkP24e0DmF55B4RwkB75W/Jz7aRGxkOCtoZoZElSVClcKWZKo+FKosFijSDARksmF1iDCj4wpwkPRPHRsRHw9JQ9CahkhPzFO4KLFImi1jogyVGgE6nURrFzlzyqklzr6y23tdrsHd+B5HmWMHRouYCQABqAoDM+YjmMZIutPxNlABAaAMQYqogHSCRhnDCJ/vLxu5idpftPvc2Wrg7tny/1fbhjmhwJMylIEhmD+QYkIZ6p0U6ZuQbipACJ8DYIpTeU4qpgaMqsnUfWFk5FREfJUHIhCEFBxpYiKa6gaQSq60YuuVDUPShl8GiEICQI/glEoZIYdJcOHYn4JPZIQhmEQRdH2YbXvSAAMQKZp3gXG4gk+JNm2jTCMQFnE6/wbUvVHzBx5qv+NZH65/L2Vvf4CYEjmH+DAG056TMSIZZESeVFwCgaTQsKEiYShmVJyMTWSS50hFgSAKLTGzYQUVkFHSGYkbTGJYaCwIwO+YaBJI9jForg/QxZ+wPd9NBqNlAAwDAOdToe98cYbIw3gZpJlWTM0inghUIE7JYTAJAQRIaBg4DEAAmIkvgFD03EPwvwyYke0CzFkbFfWN9o+1ht9ktXehcyvv6feBvHzkuRHdcRybARJaQJca+ATtCQOSZbSIBiTjjoeaZAChlIRLRBXlOYBFCEiIxxhFCEQ5uGeH6JSKYMQcU9FCEikaRiGaDQaPYCiKIoanU5n7bDacSQABiDGWB0ACspUYHLaL8YChMyApST/AAqEV9MErov50zlDmaO+pPPrLXhBTjLa9TK/BAlleR5vIunagOolUHeq4GlZZp2Bt6+ANPBTRFai/BIMXMOI/QYATMUsgCnVfzPWJFRXZpJHwQvHkiAEYwQsDFAqVSF9EXpuAmMsrg2ZUVZthRAy0gBuJhHDmKRRBMNx1G0Cw84QEeH4M5IIgDry5IF8Ejpc5gcYLm25cP2MWhaHMPKrCUrvBFLRjD1gaUUbyGT+jDdVBYYUAkwUdeOWRvK1YvtfuwgDFWYGA6UGSMQhz1FEEUU+yuVyrCVk1Tfwldml1O0Arv3iL/5icFhtNxIA+9AXv/hFwzSM6RAi9Vd8FIOQ2A6EYcbefwLAVKW2dr2sOP8wzN+f8eVRwJWNNvwwytrVl4ZS+98xMoCltIEe7KRwC+Qxf8qcIOmZmpJLpKFOyfHp3/iJmBHHbQnh5xoRh4qHvodisSB8BXy01+dk6HQ6qQiBQpcPs+WM67/E9zdRSu0oDMcNkh7ziGEgCAMOGoGZqgEA9CaTENw85t9s+2i4Aboh1Xf1pWFt/kEr+9xYykc2ZgGk9PbN0sriKsnx9t73TB+vPVGPCpIgASNGEXgBbNuJI0j6H4BME0DQtcNsvZEA2IcYpVYQhhMy6QdAnFYqPyAMUwn9kbhD9KTyYjBs//UwPwC8vdHhWxjQDei73uE37MPsp5jsb5L1F9L97tNPJjJGQQM+c7Tj2En/AVLLcVQi+2LLh9mCIwGwD1m2PW0QMhZPBQ4RaxZJMRFlYNIEgBgNCIkbNtvpl9iraqhPPf6gzA8Al7c68XLH378q1UGY/9aP/v3v3xMl0JwnWczcs40MJizksX2bREQEfNeDZVkchahpALyuBP9ecop5TQMIMTIBbjrdaRhG2VZzALjHj2sBAED45J6JEzBtAuyLx2daB7wO5geAq+uJAGjtIwCuf+S/FYJg/3um2k6DT6tCIH9UZxnbeikW6azXFIivJLIdKaMIggDFoqPkQvQWTGWModvtxj4AhVwA84fZkiMBsA+FYXgKALFtm0txcOY2RYYXZeAzAIkMQLVTGeoIohTzSI0mOZ3zoMy/3Qmw4/qoFrh/txvmC4DDYP6brwgMxvySclOmSe+i4ttP9vX4AzIAkH3VfvkrNAC/C8cpQIYAk31pH4DUAFKPTMi6qCt4aDQSAPuQaZqn4ooxYhsRlWwBrv4TiDRgAlEQhMBQO1hGJR+d+dOIgIMxPwBc2nLBAMxUCwCEDyD37MMa+W+WFBiO+XvMKuSP+FnMHx+Toc2lRv7Usb3PFMOOGYPf8VGtVjKdf6o/wPO8LAzAAoBDLR46EgA5xBg7EgTBTxw9cuQnCSEpVB8xDBBpt4kJPPvF/3V1Mpf5SW8XH4b5AeDCRhsAULD4p21mmACHxfwS+HJz6GDMLymzHXtwGhm+mT7XYCx/n/4gMkfA91yUSsWU3a8LgCAIsLu721O/EMDFv/W3/tahTlQywgEoFIXhMQAfYcAP0Sj60SiKphwJ/onxpIyHAEWYJiIGbCEgrHj0VyV3cn3d4ZfalgHvHZb5wYDL61wAODbXWHQN4EbY/DceEnB9zC8pK+6fAIVYpvDV8QFyO2XaddTzNIegzEhkjCIMfZSKpbiaEoCUs08KhVarlVV3cOmwW/bPtAAIg6AIYIYQ8jHG2E9SSj9GGRvjH5rC83z4vp9KAmLgQJ8g4BiAyDDhkARzroYAs9TBQbH9B2H+nW6ArY6PimPBERqAigW4Ycx/QyXA4TC/pGwhwFLmQi5CUHA23UfApB8naXXGgKDbhVNwUjM36UjASKSYZ2AARgLgesjzvBkCfBAEHwDI2YhG9zHGTjHGqrx4gyxtzT+G2+kAYKnJPwghMEwTYeAjogAsM574Q47+orYNVK4gyAeh5CX2pIntu+vihgsAmBsromjzZ257oXLIjRv5bww8+HCZXycVQpysp3/1y6o2f56gANJaQKzuRxFoFMFxHIRhFJ+pFgg1DCOuBKQJAAo+4emh0ve9APA87xiAjwD4CGPsxyijJ2SCBlMKNyC2wyCqshC022103G6PM4Z/LAOURdwJGM/+I49iICRVkzfXJt2/kk/GyTm7Lm5x9X9uogRbPIwX0BvG/IDwA6Tw8YdFh8P8WeG5hGlZz8Z+uQH8WmlToJ/ZoD4DpYDf7YJSnlYeBEHcfnqp8UajgSAIoGJPwJ1/h4oCBL5PBYDndU8C+BgDnmSM/hhjbFwyfFKqKSlJDUCsJ4UnKeUfOvQDWJYZ9yR1UkweAhSlwETs39AwAPziOd7+PqGo1Ml5pO26IuL/x8eK2HF5B+sGEa6P+a/r0APS4Y38y3tdHB8r9myXNn+WP0BdVJk/fX5ac8vVAijfSREhCDw4jpNy+OlJQIQQdLvdLKDVHoD1w27pd70AcN1OBcCdAG4D2O0A+TiNoo8ysBof2XkWFhhi5o4nuVSLTErQhSzZTGVKJoVtCkegdNaIsB4zjDj0F88HAAKDGEkkIKNn9Caa5NHgzN/0Qmy0PBRtE1MVBx2RCtweAAnYn9/YYIcemh/gcNX+S1tuhgDoDcmyPutM0wz6zSKkni+zBKlw+AVdrwcCzK+fvlYQBFmTjlwDcOhThL0rBYDrdmYBfAxgH2aMfQKM3s4Yc5KJJCRjI8XcvFqsHOn5qM87LYFpWsLWJ2A0gud34bpdhGEIw7Li/h3PaAuAiWVDCgEjHQbU49BZySkqZSEGMylj13mB/58bK4KxJAyYSgga8Fp5O/dj/rx58wanw2X+kDJc3ungI5jIPClz5Na0gL7e/vTrZxpKhMiRHvD9AMViAXrYT507MAzDOAIQ34cvX/qFX/iFQ0sDlvSuEQCdTusEgI8D5IOM0h9ljB6LZ6SRjC5sewBJvTalnjwog6wMZxgGTMvmMX1CEIUhfK+LKAxE3nbInTaU8jqA4B/YUCMAsGArpcChqv9ssAExW/UfjvkB4O1NYf9PlgAARSEAfJ8Ofa2snf2YP87F1+YtHI4O3+G3uNtFkHLZZ4B8kM3AkvmzjpXvul8+RKo6MGPw3Q7q5UqK+flx6QiAWgpMEQSHHgEA3sECoN1uFgAcA/BxAJ9glP5fGFCXcVIoDrvYgYdEtWeKJiDJMA2YxBEqOkEUhQg9D1EUIKIUjEZgIGCUwvNDMPTWAQQhHKYJAKbJTQA1E1BNB2bpTLKYNfryx/DMDwBXNzpgAI6PcwFQsEyAAW4YDn2toUb+Q6Eb4+2/suvC8+lwJwFcm6HxYl9vf94xElTETQHeVwPfR3FiLMb4ZxX8oJTGJoCmTR26/Q+8gwRAq90cI8CnwNj7GXAbY+w+RtntjLGyHMkTtZ6mGD/24sfHASB8vnlCTO4HYFTEV0MwGiGS2ViUIqIMfhAqqCxekcVtd1LztxmiXpvneRwKbJux6m8YYs574SnusSOxPwz1oMzf8iOsNz0ULAPTZe6vcExhAgTDVgU6KPMPFswc8mF6jxiCjxd2u8J51/+kPIfffl5+KeTzYiRxxWBwxva7HkqlkiIUNF+EGFxkRqBGu0M27EB0SwVAq9mYA/AJEDzOKP0kZeysZODEU6+sMyV/mldjjEs189HXgGk5YrJHgohGCDwXYRgI30DC4EEUIvBDhFEUaxJc4nKGZoyhq5VlhqwDIIRNZFgwhfovcQBq9zey1MScdNSDMj8AXNjk9v+xsVJ8OAFgmwaCiMINKEq2McC1rof5JZINwu4dRBDcOOZnDFjY7sam0OAnit8+EYEsygotJvkCor8EPgoFJ3E4o1cLaDabCMOwV/MEGsO9yGB00wVAq9m4DcDHGfAEY+xHKMMRpJwiLG3Pa3YUU0Z6WZjTtu04NBeGAbwud95xhuc1e7lqFSIIQoQR7Sm3lPzy+xUKBRDGYGmFQA1xPy+IYBq85IdpJIVA8pxgeewg2Ca/wQbo9OcF/v/4ZDF1WtE2EUQUbS9EyXZu8MifHXO/nhe7HpDPatODF9IYD7EfZdn8cns+CoIv65qDupeKPhj5IaIogm3b8Zx/SbvxM0zTxN7eHqIoyhIAreFaYDC6oQKg0dgpEULuJAR3MIbbCPA4jegPM7Cyqsoz1ZGnCIC0YEA8AhNueMcZejQK4XdDRFEgCi0wRDQCpQxhFCEKI/4bJUyfNb+7+tFoFCEKQxSKxVg7kNN9MQYw4e6P04C1jLFc3HkPXR/zMwCXhQYwVy+l9kk4sBvuVxXoMJifKcyvY+x0oFD+w7D0SQO3g05XdjkqMqCDnZzpz8vUAtLjfDKxZ9Y1ZR8GQp+XaJdzAeomgAQChWGY1S8p3g0mQKOxYwKYBfAJAE+A4WOMsdspYw53zim2O6Co+Np8asKul2q9ZdkwLQsAAaURfM9DGPopUA9lFFFI4fsB/CBElHK0ZBfqyApbyU/i+z5HY2nhGK45MFCDKHMBInECijBgwvQERLf14t/rZ/6WH2F9j4eHZ6pOytfgmFxAugHd5yoD3Jbtu6Hv3gNVEDqwk5Fhfpe3STiAAGA9TJ6HC2BDnM9i/ABlFJ7nwnGcntJfQNoB2G63szAAPoBDmw1IpesWAM3mrsMYPgXuqX+MAfczxuqIpWISiqOU8sZRRnoIoISssCvVescu8Ik4DANRFKLTaYsQHY1bnDKGMAjheT6CKOJqP0NqdFdV+4GIcey/ZVmpDEAJEIoFi5gM1BQaSZwMJD+a0l0IkAH5vX7mBxgub3dAGXDbZDnJKBP3LAi7P78s2A1ift0FcGjRgkGI32xhiwuAiA7wrP0o/pAsc3O2wzDRCORUYp4AAakJQKnridF/b2+vZzowABGA5o1orQMLgCDwH+h23Z8ByI+apvGgZZqwTAuUUXTabQSRsMGhSH8xEWOiCSQtZ5omDMuCZdpgAMIwQLvTQhSF3NEX0Vig+EEI3/Phh5z5ZYNaljU0EEXNxiIKw4fdLv8Q0gfA+KytnucBIGDEjJme+wIUoaN0EvEV4+4hWTT3KYdgfgA4J+C/R8dLPcfMTRRxZbON//ini/hSrYAj1QJm6g6O1Qt4z9FKykF2GMyvWGpDvc9+bzrwkeLwbTdAywtjJ6gX0jgqsh9lawEsc1/yvqqzV3lmgQNmjCFwAxSFOQkgVe5L7YO+7/cMXuC1AN8ZAuCRRx75+GOPPfZ3/s7f+Z8/3el0SvIFqtUqjhw5gjvuOItPfOKTmJ2dged52NvdQRCG8cgPcGa3bIeDcABElCKKQgSeBzfsgNJIhOcoKI3g+QF83+fzslEGP/Djxpc+AdVZl0U6o/dDrTEALddNOWKkA9DzPZimDZhWAgHuI3N6NYLDGfklzUsH4ESp59iHjo8D4DUCVhpdrDc9kBW+76984DgePFbrf9uh1X7VA05uCfMDwPxONwFisQFG+cwrph0QWfDgrPN0hYFRiJwSF+O1cg8ASGX2IAjy5gK4gHeCE/Chhx76TBRFT339618vyMkMHMfBpz71KaytreHpp58GIQS/8zu/i09+8pP4i3/xL2Jubg6bG2s8DbJQhGXbkLa813Xhe54wAaTNThFGFN2uB89z4XbD2MnCa3EafR14euMOAk/Vc7JNwsFAlmUBYRhrAXIyEGpQwDBEEpBi+yMnKy5HjUw/xP7trzO/G1AsC/v/SNXJPOeh4+N43/FxbLR97HR8bLV9vHx1B0tNHw8eu3E2/61ifkA6ABkKFoEfMnRDGkOjB7++5tgTCmsf/adHM4i1Xcrg+x6KxcnMPAA5uDSbzaw0YAC49jf/5t8McQNoKAFACPlbjLHC2NgY6vU6Wq0WDMPAz/z5v4BqtYq/9lf+MtrtNtbW1vAf/sN/wJe+9CV87nOfw6OPPoLd3QYC30On3ULg+3F4hDcCRRBEcLtddNyukIS8kZI86cNLN91POEg0VllkbhEkGgAxTP5shiWKgxoxBFh6/4GM8BHJKQYCHIj5AeDCVgeMAqcnyz0TkernzlQczFQcnEcLDMDqtndjmf/An+v6mB8Arm3xCAAh3M1KdU7eh/rlAKhZhPJq/PIkzjHh27m44HloDL7XjfMAAGQKgd3dXYRhmKXNrh60NfejYU2AMqUUMzMzeOSRR2JQDGBgu9HC3XffjdXVVWxvc4fl2toafvmXfxmf/exncc8992Bvdxuex8sdh1GEIAwRBiHcrgffD1I50cPa8rLhMj37g6j9SqgvCAJ4nodqraZ8eQLTMmHbNrpBAGJyFGDM/BkYAB3hR7IKTx2Q+QHgoqj/fzRD/c+6BgEwIZCCay0v/8AhHjCf+Q8iBa6f+dt+hO12gKJtwjb5/f0wwz7vd+2cw7LKhuUdyyHrDAR8PsDA8+PZgNRj1D4jc0wy6OqQDTkwDSwAHn74YRvAhPRWPv300/A8D5VKFY89/hGUSzXcfffdeOKJJ9Bo7OGNN17HxYsXcfnyZfz2b/82fvM3fxN+GGJldT0FuwXIdan218vwej02kATZJ417BiCZGowBIg1YFsKQrj8xEKRBsXpd6uEGo75+g8trEgFYHAiEwwBMlXiRie2W33vOITA/ixVlYwhE4ICNoR6Zc/jV3S4YgBOTRTTaXGuWad8DXTvvMKVs2H7HElUPYCzGAHAQkCfO1SIwIsclp79eGrhxhqRhcJIGgBKQZC35vo92u40goNht7OLzn/8CPv/5zyMIAnzmMz+M97//Mdi2Fas2nU4Xe802QpGgIoE1/Zg+T2XKojAMh7pO1vUYYwg9PntLrOZJcIYQGBFJyoDFFYGRMFMWtl9uk9OFXS/z+5RhUYBdjtUK4tn3vyYxCCbKDkLGsNJUtIBDs/mHG22HPXY/V8rVHd4mJ+tFOFIDiAYrpMs0WZ38ZoQAc8y5FLaDiUpAosS3hJhn9WVpdmZQRAi5IZmAwPAmQCQfWkXGBYqKNT8/jyAIcPLkSRQKBXBsvaH87c/wB3He7TfSD3oeYwwdz+PAI3WIJARhFIoPxsuAmaahpAH33LnPg+/f0PtFDM6vt8EYcGKilLL/B9EEpioOdjo+Fvc8zNULN4D5+1+r7+EDtkweXdtyAQacGCvh4kYHYBwMtL9wzAf5qM/L8o5n6eMlmI2yCGHgxyCg5LppzVMPAUoihHRxg1KBgSE0AEKISQipJdDHpAGCgCII+QvZth1nNJXLZdi2jWazmZvlNAxC7HqP7bctjgAYBkzDgGGaHI8ALuV5HTcONJIhQCLSipOJQeOrXldxnH3DhQDOC/t/brI0sF0qaVJEDNab3g1l/kx47GC3GfTuKQoow8oe12qO1BxYFh+P90cD5jO/TqpGQJTT9RBhgmwFul0PhUJ6NmB+XHKWbds9iUFCGCwD2DhIaw1Cw5gANoApILHX1YZvi/nMpY+AMcCyLBiGgW63G+c456niWWpRv2Pzzs8yAwZR+/XrqqAgJtT9KIpAGUNkKLMAEVX175cvluzqqwGpB/ahuP5fvZR5Rj8hMFHhAmBlV59k5nCYX3b+AQ8fkPY/aV6k/54SWpFFBjEBBmf+zOOzhJySucrAELjdFAgoz5zNMQGu4pBnA1JpGA0AhBCmMz8hBgzLiWOYyrGpZdVsuB7qJxx0IdBPqOjLkqIoQuD7sUMQEKXATBOUiriuYSXMnxr9tesNiYgblPn9iGF5R8T/hf2fdWZeJ5Y1A9ZTkYAbofazwQ4fsGX2o8si/Hd8oggGnqUJANHg8c6+7dZT4DHl9BR/Skogz1Ph1YBLpVJu35MOQM/zegZXACt/42/8jQO12iA0jACInyoFZiAEUQQEmpSVICHp+FClW97o3U/FH1SlP+h5cptlmghlOEZqAxavF2gYBFSkCEtfhqwD2KMWqm2X4TDKTkIaTEpc2uogZAzHx0s9+IhBhEC9xF0/221fZMsdJvP33v9mMD/A8f+MAacELNoWyVDZdRHzmD9hZiJ/4yS1RL1PmJ9TjDoU146rU1GGIPBS04HpJAfGPBDQQVptUBrGBDhCCClkjeKeHyEQjUzABUS320W5XIFpWgjDEI1GI9PhlkeDCoW8RlVNgX6jf5ZNFsmEI5YwtS3MmYASEBiKBsA9v7mazSGO/PKQt2P8fzHzzP2EgEEIpqoFMAasNvsXmr0e5h+2Ha7nJMYgoiIMx+oFgMmCnEwJA/I/nZlVmz3rEXJExb7HcdcDRSB8AHp/lcuyKGjGdODADZgMRKVhBIADGdpWOzsDwpAhCpPXl8U31MkxAKSr6+TQQYXCIAJjv/0yFBOIgg3xBxE+AEoZIABAyYShLJUGnL7Z/o06LPMDwKX1NhiAOSUBaFghMFnmqcNLe/nm5fWO/LJyUhK7G+yP9WXS7L+FBi8AerRegG3wsTsujKpOjzaMOTAU86c1KT71F0UYRgjDKJ4PgD9D71W73W6Wk5zhBkYAgOFMAKra80DiEQ0iipCyFAOotow8TxZDUBvhoEy936gOZGsB/c41DEPUFlA0AfDIABXHMGEKmAIMRIxEE4jbSn66/Rt1sAOVQ3zKsNzgo/bRWjHvsOx1ZYOMBKSwAH3OHXbkj9VjNvg5Bzg8PuvKtrT/S4ookXn28nv3vWvPpiz7Pilek2MKxEAwDgP2ux4A3rdoTikw0zTjUmCaJhkAWBm2NYahA2kAsQ9AvKwXcBNAbUZCCMrlMizLQhRFaDabAzsAh/UFZKlO/aICedcjhMAPglhTkV5/GdpkjIkcACjqf4Zj8waN/ABwedtFQBmOjZVgiepE/W6dJwSmRCRgdbdXAFw/86sLN575AeCaKABySpkExDENgHEfgGrbD2QODKDiZ7VJHP4TGkDgpx17Wf4v27bR6XSywoDbhJCFYVtkGBpGA5glhDipvHvxvGEEBBGT9gGvgOoHsG0HhmEiiiJ0Op2+jZC1fdB9ADJLLUtSowL9NAdeubUbzxUAAIxSmKaJKAzjvAd1IpDeh9q/LVXm7zunXsa1zssCoONK/b8DCIGpCocEb7aCvsceBvMPAt+4HuYHgGtbHAI8pwgAWQIgDwYwTKgv+WbpfpPlR4gFCOMYAHU2oCwfAAB4Ai2o0TyA9rCtMgwNowGQrC2MUbiuiyhKM6PndWMGyQv/HYba3+966vogTkHTNNHtdnmGn9wOHgKMC4kK4aemAfOmGCz/vWfkJ30P7KFLEv8/ngYADSsEagUbtmlgu+PDC2nmMTd35B/cR6CP3OvtAG0/wkTJRtE24+0mMcAYYgd16p5DMT/TtrOcPsiU/VzwhJ4nsgBpbr/VS4EpvLL28z//8wPM7XZwGhgKTEgSBA3DkHtZAxN+J8Az/+fvwnAMMJowhIT+qtl914sBSDU1y07mydvW7zqy0Q3DQBhFsISvQtZ9tywLrOsiogzEMJN5AJU0YDDsm/eSp/b3ZAnmdM6QMixsywKgSQQgzllgaUek/kj6+mTZwVqzi6U9D7dPahmFhzbyM1FpObtwSsL8g5N++GVh/89NpNvEErkAemHQYbz9+VX/s7cyBl4zQpgAnueiUCj0CmiW1AFgjKHZbGZhAOaHapgD0LBIQF66ixiIKAO718PUzxoIP3QZe+PneTXdAHGKrGGYKBQcRFGEdrudigIMAujZD7wzyLnqchiGmeYAINR/z0Pg+3wqMAUJaNk2TNNGyCgsw0wnAZF91Hj5DMr/AQ7MpCvC/j9SL8JSzI+DagITZRtgwLLuCDy0kT/LPk7/XS/zA8DVbW7/n9CiIqb4hmpdwOsP9WVpIok2AkA4jPmIH3g+CoVSgg/Kcjyz3EzAGxoCBIZLBpoFBMDHcrD+2CIKPxLgMx/5AZyozqDZaOPy1zbw2v+xi84Cz4E2DDMGOEgfQJ5qfz2pvfpxAPpqAmrRhZQkVqZlAhOFH8QEoDICAENBAAIgbP+io/syf1xKpl/zM7y9KbL/BNItb3QfVBOYqheA1SaWG356537Pi7zDBzsnogyLez5OjzsDHR/fIkdYXNvm8f+T44XUiO2Y/Jl8pZ5k1gv0c/ilf3sFmk6UKZPPMokCnIVqNuh9OScECNzgECAwJBJQlsWemJzEqc3bEb1A8Kff+B62tzcwNlbB+//cbXj0788gIiE67TbPllPU/0Fj9XnHDKMRDHsvwzAQiJmA1OCcYZo8q4tSAFY6DRiHwPyyfftqEfz8i+u8LNzRWg7+P/VO+fvk+qSEBIsEmhvL/Mn+L1/YwuurewPdI3mf7Os3uiEaboBKwUK9YKfeO64IFOVI1+v09qf8EnGfSzQDXrXaj6sB6+8j/U45IcAIPBHohtLQRUGjKMKRY7P41P0/jKvzl7H07Ut45dvnUL29iZn3VlC5E5h5wkDUxb5AoH4j/kG26fuBtCaQpwUAAr3oumKKcE4EgG2aCAIeAqSmGdcFyE8DTogy4K31Nu4/Uu7fqGz/nYwlpa5OTqRV3YNqApOiOMhG07+hzJ88B8NKM8Dzl3Zxenr/KkbJ+fnXlwVAj48X48eQ9yvIMGBAU9tZ3rtmMT9LuwCT81nGecmgQylDKErfSRBQVi0A0zThum7WO3bwTjIBpBNQagFjU2N4aOoRPBA8jKVry7j0xnmsP7uEre4q3FUL1odNGIYJ23biDEH9o+Yx50G2yWfT9+vb1W3ymWQpsa5eCdgwYNk2fD8EZRTEsvnor84GnFeHAMBTb27g1YUmfvWHbs9v2AGYHwAuKfa/Xv/voEKgUrDgWAb2uiE6PkXZGRCnkVoYhPn5XRmAp15bQ0AZVhvegOZ//4Mu7yThvywNiEHa5Ont+fa9vq33ffoxPwBeCRgMvsCOGIbRE4WS/cY0zUz1nxDSIITc0BAgMJwGMCVfplAoIIoowtBHrVbFsdMzOHFmDjSi6Ha62Gs1UK1X40kOgyCI5zw/qA9gv215+wf1CZTLZQRBANO2YyaRmIcg8OMIQOL919OAlfsDeH2thW+e2wIAnNvo4J6ZDC1Aa4rc+vIA3trgo/9R6f0fwuPf79jJSgErDRfLey7umN5HU8FwzK/ejQF49uoe5re7KDsmWl6Eph+h5pj7nNufZPz/5HixZ5+dAQWW15XNLMGYbACBoHZdlhIOqjM5Ue9drwvDMMXxOYYFY3Bdt2cyEEJIE1x23VAaxgdQA7gab5oSDWegUCjjpZe+jVdffRmmZaJULeLY3DHUqrWkgbUGOIwsvkH9AXJ5v+NpFCEIgtToSgA4ts2FHWUghjIXQE8REHFNAFsdH//phZXYPPz2teHs3R57E8AVUf//mKr+D+Hxzzt2UgCCFpuZuejZ1xvC4SePbHZDfPXtTQBJCvPirrfPWf2pG9K4uKn0Z6gkv2UkMx4Vj73aLoMzf6/Nr0YAYuaHKAXuenAcKwVS0/shpTQ1G5ASLt8DhwLfUBomDEh76gAYfHacIAjQ7XbihoqE15X7ANIYAH1uPn35IEx+vUKAAWh3OvDkdODKfrvg8PcwLay0o3T4LwMBHFCK3/3TZXT8EGemKwAYXlvYg0/34dYckt7kBRHrPlbX8P/XKQSmBDOuDZoVeADmB2P4g7c24PoUd85UMVvn91xodJFiqgyQT7+/q1suGONl0QkhXNVX/mQ9gIDX5kYetr/n2rnMn7xUVgvwayX+hsDjhUDkPvUXSPJl+GxTPYC57b/21/7aDQUBAcP5ALQXUMpcquWx4heQ+fJcxuh4/UHV/kHBPXn7BzEHbMtCR0wFRtTrGQYcMfU4SjX85z+6Atsu4Pj0GE5OV3BiqoSz0xWcGiuiXrJAwPD51zdxddvFVNnBD947A+/1CEs7Lr59bQ8fvW1MXDyvlSVoJn3Y/G4X3ZBiulaAYxm96v51mAPjwhG4tpc/2Fwv87+96eLVxRYcy8CH75jiKcgMWG32ZiIODgtguLzLS5qdUB2AyrtaAq4ehOwQvP3JbqpsY1Cfmd+FF45hCANPgIB6IwCSN/rMBjSs2nggGjoKQITRxBiFYRiw7XhPz0hvmiYcpwDDMOC6boyHvt5Yf962gwgBuez7PncAitARgZDQIosrIDZ+4vGz+MOXF7HR8rDTDfHGSgumsQVCCGolG9MVG1cFUu+D98zAtgycOVLF0o6LF+eFAOjD/Hlrb653wJDO/jssITBdkaHAbA3gepnfiyi+8OoGIgY8fHoctaIJxhwADKu76XsOYhrK5wdkAVCGE2OF1LPJd+W5AHxWav3hDiQQshx+Wruoc1/6XQ9jU+M93n+AD4iGYaDT6SCKopTzWdANmQpMp2E0gArAmUKqNaZJ4lCfrJIrG0PVCgzDQLvdTqHwhq3XP6hGMOiyXJexYtd1OeAHCaOYloVIzGDUYRZMg+Fj7zmBWtVB22dodSI03AC7nQBNl/9NVB185O4ZHKsXwShwz2wNf3xuA1c321hv+pjNnMJL73rpNOFL69z+n5vsnQD0eoVA0TZxdKyItUYXX724jbmag+lKAbNV+7qZHwC+dnEbG+0ApydLeP/JCQBAvWTDtgxsdQK4AUXJNoZm/pAyLIs5AGZqxZ6nkyYAA+Cp1aqGdPj1umTzmV/2K0opjwL4XqoUmP6Oki+oSDjTaGvgBr8OGkYDsAAoar1kfj0T3lCWtQ6ZoQrJax6EyQf19qvb5bK6LwwC0CiCaVl8jkJhmxUcB0EQIKIMITNhGhHGKhYmqkUcs03YpgXTNGATgpYXotkNMFcvwVD4lxCCO2ZruLjexLMLe/jJe6e1Zs0Y+ZXzGQMWdrLtf3n89QqBh09P4A9fXcFX3tyEIdOcCb/fdM3GZNnGbMXBTNURo20+qcy/vOfhTy42ADA8emYydc/ZagGLuy4WGx7umBoME6D2n0VRAGRurBjPAKRT8p2ThxvG4Sd6S7a3nwEhpbGfIY4KCG2DRhSBF/RU+1X7JiEE3W43bzDcHKhRrpOGEQCpVuIPrfsQDeUwgn7ZMQcJ+Q0TEtS39xMmlPLJSU1lKnCA1wf0/QCMEPiUwTAJio4dVwOKrwGgVrBQL1jxOlF+7zjGBcBLV3UBkK/2S7q214UbUExVCija2SGz6xUCt02W8cPvPYbVRhdbLR8N18duJ8D8ThfXdrogBCnBMFWxMVUpYLpmY6ps4+RYETNVW+Tfs/i6n39tAwFluO9YHSfqxUSRYMBMjQuAa3se7pgqYj/SB49Loijq3GQx3eU0si0DQUjRDSgKVq/Xdn+HH+sRANzGB15ZaeOR49XYNEillQsMgMSY5DmvXdft6b9ifXHfRjkEGtoJKH+lB5NrA0yEB+24kaSn3BToOdUhqNNBbPth1f68fTJXIYoiPnOxRH4JJ2AURSCGBcrknAESBSiAHEo94DwmOzVewpF6EWt7Xby53sZ9sxXsx/wyQ/DcOh/9j4z1Z5LDEAK3TSY4AAJgrelhxw2w1w2w2/Kx6wbYbHpY2Quw2gxAVvk9DNEctYKF6YqNqRoXkld3upiqOHjy7hnefmCxjyWem2CvXygw+W46zcv8/7qSFs2SZ9fbhjNh1p50m2V/l161/83NLtbbIS/8oRwny0n6XlIJSAJ99PcIwzAVAgRi/qIAbmghEEkH0gAk5lli/ZOHT5cBM02OBAQAX5TaHgT9J8+/HhMgaznrOFUaGyKURAAwSlEoFuB2PTCzCEopbNPg4U9CeGciHLAtx+UIiU4kGVCuH5ssYXWvi+evNXDfbBpw088veHk9KQCiM3HWBzqs6AADj9erZcfl7u1OgN2uj0YnwG47wEbLw64bYKsTYscNcWHTjafPevLe2fh8qrTV0RpPkV3a6S8AsvEgwKJwIM7Ve00S9b0KlgE/pHD3mSI8k/l7bPzkeb672EStaKUEBIsdgEAQeJnqP5Dui2q1bIWXOgAu4CbQMBqADfCRX5b5chwb6PEBkNSl5cjf6XQy4ZDDovr6CYFBz9XXTZH+ywgBkR/JMGA7DrpegNB2wAJR44AkACBGARjpYSeP6e44UsV3r27j9cUmug8diQtW7uf6urIlHIDjpdT1ctsLhysEso6dLHO/ACbTx7e8ENtugEaHl1U/NlbETLWQug4FF4oTMg9BlCa3M6or5TkGV5oeugHFdMXhBUCQPepzI1X1A7ADh//U9c1OiPkdD2enE5OXMaXyEKPwOm6cBNRn0s9MfAy4/X9TwoDDAIHKEgrsOLI8YDrsx4uA2OLPiJ2FSSOyHIne6yUdZlkfyQc5Nz4WPMFJokBkFhfA8QFhGCAiNu/owqxRHV2xtzjRA5Nl8ccYMFGwcWK8DD+k+PZCkx+X19Jix+KeD9dnmCw7KCv2/35Co8cjzvbZf8Bj9eOrBQunxkt4YK6O9x4fw0y1EJ+jqI9cyyIEs/UCKAOWG34G0CeHTRnDpR2Ph0VFWjQDekBAcptlKpGA2OZP/nQ0nw4GYkCPMHhhiVdldoNIeS7FnwRe4kutBKwXBGWMpSbS0egagP1to0OgYWcG6lHxdeBP3p/+EdXfrH39lvNoWEQgf2okkzIKgUAAOIUCTNMEpQy+6SSOHnkWAZhQeELG1X+98+m/t81WAADfudoYCA5wboOr/0fqxX0Zs89lxHvvs/+Ax2Ydn/08iq0svsF02QEYw0IzjQjMRwLyG13b4fF/Xv8vkbJMHqhcyxC2SBj1goESxtbvndTv45V9kucJIoY3lloAY+gGgrljwc/Pi6gsBFLI7YcSe5IzF8DVv/pX/+oNzwMAhtMAUpTF3NwHoP71wn71oiAHGf0PMuJnHSc1migMYxMAQorbto0wogAh8KgleZ53kyxtLoMJdPTv3UfqqBVsXN3qYL3l9w5Z2vEX1+QEoOXUlNR9btl3/y0XAtoxMyKkuNzwBrhOsuOarABU41gLDauTak9TogF7kKi9b5Gv9gvhQBleXe3wmYYYTzJKNEClPwIIfA/FQi/mQx5nmqYYYDL5/Mr+rXk4dGANQGwFQITtKPerAsBMARwOUwgMs7yfGRD4vqjrl6iExWKRlwIHQcD4OzLCKwBxQZB4/yVFrD+jEALMCm/+H19t7NPiDFcEqvDo2OAJQL1X0dZvlRBgyY/8m64IASCSgqRzOXtU5tffcUPsuSGqRQtV4YSjLH2Gag7I0ml+mMXYyNwm1X69TiMD8NJiAtDr+FGiKYDGz0hpBL/roVAsxO+VSjxTfAI5PqwbOheASkNpAMlDUwFlNFNZTLZtCtufV8wpFCw4TgGEcDu7n+qffIjDFwL7HSdNAKp8qEKhAN/3QEwLPo2Es4uAkqRbpK4jfrMmolRl/J3HamAM+O58M545h7Hev8U9Dx0/wkTFQdUxU1rHu1YIIK3ozMQwZD+evKPneE0oXNhyefhvbLCkKAnUoXHf633qfg4/eTEGPovSWtPHkXoBlkEQUiY0CyGgBGqUh5VDWJaNPE2VEJLKA1C2M0LIPG4SDa0BqOQ4RsoLzDPl0iYA/zN7oMB6o9yIET9P7U8tSwEgahUw4Qovlkrw/RChydOB48RfIrQBAGCEjz7aX6hMLSjjwvK442MlHB0rYbvt4y1R4z+L3trgmW5H6tnx/3ejEFD5ioE76KYqDkLKsNLKSgzqvdBVAQA6Pl7KOL73fraYHKCbUxdQ3dYNaS7zM8bwnUURkZkoxbUGumGSXsyEg9NzuUZjWSbyBjtHoExVASD4y8NNqAQkaRgNwGCMwXEcMTuuIU5XL0GUyyYRACkk8qZGytp2mKp+v30SBCSFAWNMOAEdhGEIapoII2m6QMz0S1LdqLfcRLYmIDcdE+Wrn7+8p/XHZKS7HE8AWsq8Bn8P5O7LolspBJj2X6rqE0ILWNIyAzMZhwELAjdwXKkA1O85JdFI9gNdYCcM/MW3dnBV+COkHJBP7AYM50RS1nvn6jEqsxvQBGgkTvB8LzVgZvVF0zTh+5nzMrYBrOEm0TACoCoFgGna4uXkSybpjbZtwLYJbJv0TImU4/A4VFU/77p550VijgP5x4R9VnCE/WZyTy4x5FwASVVg3knSnVolVQionfXsLC+W8trinjJ1dfpsOdfd0bijk55rKbfP3JfZJj1ttM/+Ax6bdXx8jKLVz0hA0K6vnJd9YjuIsNH0UTANTJSdWLOCxtTq5M6ObYAyoBul4zTS2y/X97oR3lx38ZVzu8l1WPJVX1ltI4gYzkxVUC9y2DNjgBsKPwBNogaB68UQYPk+WUKgK1LQgVQocAk3KQQIHNAEkA+dRgKSjChA/6rAt8rpF7+8YcRSmDuTuPpfKBRgmAYYo/DNQsJ7AgPAlF/V4ZQViw4Z/1O31Us2TkyWEVCG5xf2oLPOctNH0w0xVrZjtBkDS6Fd3vVCQJDECqzsqY7A3hMYGC5v82OOjeVrRfp9Zf+MGNH2pW3+5641EVGGlaaP763JefoSpn5xgav/98xx4V20uAbQDhKzgYrnDPwubNuOQ4jJfVj8TJRS7O7uZk0GcuGv/JW/kj9l8yHT0GFAlZl7w4D58f88RjxMP8CwIUAGngkoU4KlGeAUi3DdLsII6MLkRUDlTACEHyPnnoeIcDNlWf2VnUjfdtsRng/wQkY04K2NDgAm7P9kFLoexgT6778pQkBhPLlJQo1Xdr2+zA8AV4T9L02o/d6XMcARmYJ+lFTq0ZnfjyJ8dympv/m1Cw0ESqHOSzsedt0Qc2NF3DFdAQOHGDNwHwAg8QK8D3ndLoo5EQAZepY5KBkRgJvmAAQOGAYkxFRSgUnG/nww0H6AnpvB+PE7AYkdRpMJHUqOg067LUZwk2MAtGnA06a7EhlAdmfU61LefaSGesnGtS0Xq5oD7JLE/08MkCWXfozcffudO8j5N0ITsC0DtaINL6TY6oQ9B6ihuHkR/z82VsxF/unbiIgCRJRlMj/A8OIyj+2fnizj9GQZTS/C84v8G1AKvLjAl09OlePr2gXOOm7I6//xK/Gp5YMggG1b8b2yIgB6KFyhVdxEOgAQiCMAJdRXJjIRosKBDYEUtFAoJNVassqCXc/yQRlfXfc9T3j2OQSYCidgRCPAsuBHLGZ8fgpJAeBTTKEtZ/kE1G3Sw//sfBr2fTW2/0tpxmG99+m57ztYCCSRvjSbTld5FunyXnqGIpX5A8qwuse1hCNVXlGop8ZfxjZLFGcItMlBJPMzBjw/z5F9985V8d6TdQAMz11totGN0PQiXNziGtl7j9fi686JKkQLWz7ObbvY8aJYCwi6XQGXzyZZIStjMhDgJmsAQ6UDyz8uAEzB6EkBENM0wHmcwjD4Oi8cyl/Y8zyEYYgoimJBkQUOGnSZf8jsjMBB1vk05hyySSlH/VHGYAsTAFYpDgEyomgA0gGgEmMcSRi3hhiB0ocgIoBMSz97tIYLa028eLWBP3ffNAgB1ls+Gp0QtaKNumPFDi55aVXTOGhSj05Zz3nYCUTxOgW0+WIwXSvgymYbC3se3nOkBLBe4XFt10NEGebGS6nKzVnvpm6TQKCQ9jI/ALy67qLVDXF8vIS7ZqogAO6creLCegt/dKGJiTJ39t05W0VJJB4xAKfGy6gULFzYcnF+swPGKAww1C2Cu8PeQiBq/7NtG41GQ2gKcU09EEIC3MQQIHBAKLBhmD3MJC8n0YBJGJAzjhrzlKG3KIriOoFZDTXM8qCOP3U9FM8kHYDSB8AnAwnALJtrAvHU3wRUmRI8Zdqq11eWs+Iegejgx8dLODJeQsMN8bpQ+9/czM7/pwz7jrDvFk1AL9E3XeMZg8uiyGfWyH5JqP/xDMAs//rqNjMWANk+gG9f5YlZZ49U4vM+fHYKAPD2Zhsvi8Sf+0/UU9cv2Ab++gdP44N3TuLMdBm1ggU/pNjphojCCMVioSflHOCDjmVZeRExDzepEIikoTWAJMtPvpTiIteyA3kUIDENdIef2giJSdFfJukj/iBVf+S6fC55P1/kYjMx+jMAxDRRcLhUjkwH1GcwrSQLkBAGhqR2oN4K+nYAcY0B/hx8xIwYYBJe539118VzVxp4z5EyLq5xpNvRiWLqPPXcVHvg3aUJxL80OX5WYAFW9/yU2q9+u6ubwv6v904BlvduDIkGEARUoA2T61/d9bHS9HG0VsBDc2PxrmrBwv1H6nhjbQ/dgJcyP1kv9Qg6AHj4+DgenBtDEFH4YQTme3j9mXOZcHe17+mVgMTyBoAmbiINXRWYv4ApVHszxfCmKVX6BBcgTQTGWM8USLJRpDCQlVLl9fQqQgep+qOep28LPC/WQHis34BpWTAtE4ZhITSdpJMpNQBIRu46Lw2Q9MgUc8jnV98dXAjcMVvFd69s483lJtr+EVzc5N7oo/Xs/P/vKyEgFqoFCyXbRNML0QoiVO10/ghjwGKDpwDP1dOVkfV76veToC0eBkxz8HPzHNd/Qjj31G/18Xtm8NG7pxGGFAVbzu6DRBmUzwYlF4ExsIgPKlmzYMn1PiHASwD6T9BwyDRMFIARAmHbmyLnX3ozpRMwHffXMQCy+omOe1dJCgJKOaY6CAKOyBPb8sKHwzgB5Yf2PA9gjFf+FeiRouMgDAOe0EGcOAtQ6DeJpkDQM1axnN+e/cqOSiHBBHzpwjb23BAnJ8txvf7M6+R41PPW34nmQKzcC+aZrDhgAJYagXItfvTSng8/opipFWCZBmjOPRnSkQAAHLADrTIwgPV2gPObLioFC+87Od5zPf6NCRxh91P5p79frI1wQeV7HhzHzpwNCEi04ZxioFf/8l/+y/t9nkOlYXwADmMMpVIl5eCQyDjxejFCMF0dKF2CK8te72fHU0oRhmH8l5dYNKggkLa+Jz4CpVSU/+YOQM8LEDGKACZ3OMnRn6RHuyzKC3NmCQW5fL/ogHIuwfdoHVI/L+/+7zYhoB4/K1KDr2UAgi4L+O+x8WLfa2Tti00Elj72WYHrPz1ZjqszqSIiT4jL87P7KkPodVOOPZ1kDY2cfnLDpwPXaRgNoMQYT3DgcwNKBjeEBkDiZCDVnte1gH5CoN+yXFc1gyAI+joT864jt3W73cT8EEKlXCrBDwIQYiDOICVEMD9JqfhypIivqfz27UBIj1rHxkq4+2gdjAF3H62nyn8h4/rJO2RfO2/9nSwEpiUicMfv+V7zEgGoT4vW5/lUDQAAvDBxAu75Ed5Y5k7X950cSx2flZRIc+7VozUwwGu1Ram83j4uTVzXdeNImEa7uMk0lA9AMr1hmDEWQOYCSCiwYVDo1YHURlCdf/s5/OQ5et20PK1BXlMXPuo54kKIoiieDciIIjCxrVKtwnW7IMUqwjASACCSYP97ni/D7hUhwX7hKemMluc+cdcMHr9rmk9nlXNO5vr3gU8AAKbKBYChBxQFAAuyAOhYaaj2YOAmK5AGAn17qY2QMpydqcY5BSCJAEk5bTPfi8XfLxH2HIPQbTdQKDjx0Xo9QMMw0Gw2e0KAgnZwk+lAQKBkYhAClYd7w3/pdGE9ApA3au8HG85V65GYC77vw/f9lA8heYOkDqDUKCilCMIQcm5QZjl8SnDxcSFNHSKv0H/UAGPISvPJ0xj4VUmcQJR3Tub694EmMF7iY9FOJ0BXsdfX2wGafoSxko2ymEp8mPawYwHAjwwowyuLPKvvgeP1+HymtXuuZpfbN3nOR2tvT+QBZGe+ZuEDJBFCbsp0YCoNDQXmo6sZb9Pt/F74b9oEUBtG9cAfNJa/3zFRFCEMQwRBAN/3Yx+CVPkZ5fBNGkW8FHiB19+LTAdRpI0FwtGTHapSlpXt+xV2oxkM/2dRCBiE8MxHBizvJc5iaf+r8yIO0x4qEIgB+M6yi3YQ4cRECSfHkzkFpAqvUta3Yxn3ksVMGKXwXFeYANn+KcuykhqUCon1mxoCBA6YCyDDe+rsQCpGQP6ZppGaGEQyvDryqyOwLgiylgfVBrK2S+0gCAIeAlQYnzEG27JQKhd5nUDL4eARYexRymKwkIQM82V+CM3oQHKD3ml6OtBICIAhyQxcaCR+gNj+n9w/ASjr+WIgUMSFt8zqu3+unmhoGY0ca3ep67Ge+8jliDLYjIe5pWqfN6i1Wq2s8HaAmzQfoEoHgAIDhuGIVGA1F4DEjkD5zjwXoBjvV5lfjfkDia2UlWGY5fFPfRCWP8GIfiwhhM/4Cy6xIX7jOQJMnsTBiCUq/jIYqRASnxSExdEBnitggMSqpMwuFPCBtFdaPg/StitlfPotlSRYiPU57/vJJzAtMwMbiR9gXhYAqWfPH7hfe0gfQMgYXt/sYssNYtgvE+3egx2QPoGsd8jYFjsJo1DcM3tclYNgs9ns8WsBCAE0cJPpANODc8ZPYv9q86VNAhUZCPRKRJXp9f06SCIP7JO1TRcY+rkGIQjF6G+YJtcApDCAgVarhaPVDUwAIGYJYaEMz7DRZg7cKIJBSUogEkJ4DaT4XRgMg9v0BmUCO0Di1pGMntV5oW37syQEJBZgvcVNgKYfYacToFwwMV7OD631u58hJHDEGJ6f56P/7dPlnlFchQklgjw5hmaoV8KtEPfbwPdjgcPfNbsfZsPoQXELTIAhNQCJ+JMIwIThE7ivoTAxSan/rstx7nL0V0OD+sjfTyPIa0QdcJG1Xe6T4UPCVRoQw0AQhvjOn/4p7rjzTliWBQsAISEcr4EipahGlM8175RhFMsIjCL2mIVWSMT8eHzSUIMAEeW/sVAQ2/XYgBG3H2JvNPBnUwhMC0jwWtNHRBkubXNNIK8u4n7vBvAw4F2zVby93sLynofpSgEPnRiPn0M/Xjdb+HdhPfeQQoIqFwh9F7ZtpbRQPQLg+35eHYAdvJMFgEp8diAJB5YvwtV/Sg3wYhlpZCDAE4LUWuhZhUbl9iz1Pm+ikUFJCiIQgq7rxuEcU6hsnudheXER66urcAoF2LaNsfEJzB6ZRa1Wh2XxUudACOY2YNAdTEYRJhgBHAekWENoFdBhNlohQQQOGzaF8IyIwYUASQQGIyw2H/gLC6GBtEnwZ0EImAbBTK2AjaaH5WaAqzL8N1HKfJd+z6NqU5+87wg+evcMNjt+DCXOUv11TQDgvh/VjOt9ZyYEAUO32e47HbhhGNja2or5QKML4HMC3lQ6gAkgs/14UxGiOjMMEJJMlkC0vE91xM8b4WWj5WGpsyDG8tr6sVn3FjtjFKChfAh5jAwhAsDuzg6uXb0CYhgo2DaK5TKmZ2cxNjaGWq2OYrEochwYmLsLo01hRhQVxmAUCjAKNUROAW3moE0ZIpbWFIjILjQUIccIN1PUzkZAEDLAMr6/hcBUxcFG08PCno9rQgOQAKBBhUDW8zmmgWO1Ys+o38PwGe9LdXNAO4+BIWSA127EdQD0MKDuCM+g5b/0l/7Sfn7YQ6cD1QOwbQN6McN0kVB9xE5GX91Boo70ehHRrGdQTQYAKVNCPU4nXSq7nQ6IYWTuyxImLIrQCQK0Ox1sbW6CgMB2bBSKRVQqFUxMTWN6ehrVWg0EBH7ggzEK5u4CbYYqjVCmFMQpwirVQO0SOrDRoYboYCTWDmKhYEhNgIAQ7kUIIsT59JZiL3y/CIFj4yWcW23i2o6P1SZPAJLzB+S9i/4syLifej7vI/xXZWZ9lI8BP8p99egAi/8Y3FYT9WpZuVfSl1StN4duOgwYOKAGkJ74M23jpH0ARkoLUEd/VRDIhtJNg6xionoDSntKFURZ6EH1+QNhh5lmft32nJeHASCKGLzIQxCGCDwfe3t7WF5ehmUYKJRKKBQKKJbLmBgfR7VeR7lcgePI+QUYWKcBwrZRCCnMkMEqOXDKNURWGV3ioMN4KXIJtDJAhBAQ70O5cAiEUCCix5pIfAwMaRPi3SIEjoo6CG+stsEYcN+xeoZAzn6XvOdhGQep/paseL+sDKXfFykhwBIQEaXw3C7sibFcs1aGoXMwAJdwC+hAGkBi20s1n8UjFqX5wCAgDf7RSXee6LZ/3jE63FLVDjIdMR4fWfbVJ/U2ABBGEbbtdTinQhDfAt2YRBElMMK7Udd10XVd7O7uYntzE6VSKRaahVIJRcfBxOQkxsYnUC6XYgwEbTcAtgs7oqiEEaxCAVa5BuKUEZgFtJiJIGKJIIhk7oXUGgBKCAzCYIquK0qZJEKBAXqE6p0mBCZKNu4+WsPbq03cfbSGj909s++180R45siv7tMYOnkWvqWnHkPGg0g8CBEzAkknIJRr6RWoUn0qaaCruAV0YCegHNmT50+j/9SXY0qoRMUD6FqAyrB6I+rmQdYx8p5yWfe2SkYMwhDDsT5/CQIDbdZEcHID4/cWEOwxBG0HxVYphlRlaSLSqed3uwg8D81mE/TqVZiWJcBHZUxNTaNaq6JYLCIM+dRSrNMAbe+CRRROQFEpOnAqNcCpILIdNEMLAfhIxc0Ffq+IpJ/Dkk5ZEIj5TtPRCPLOEgJP3jOLj941E6P48s6lLF+Gs5wVPfynXpTJh1COywoRIsMcICFnbOncC8MQlmWJ9+JHOo6TF9r28U43AXQNQE22keAXiRGQTaULBCDRAPSRW13PCqPo5kFeqCXLTFD3yXjtwYgAFsVOpwF7x4EdlOFYSHUgouIcoghhEMAW88THtewIgW3wPPUwDLHXaGBnexuGYcCyLBRLJdRqNYyNj6NULIEYBqIoRBhSRO09sNYugoDCigIUCkUUyjWY5Sois4AWE4VMIUEwBCGBiEQoQsFIhIJ8YiNHKNwKISCZP+9YlnNtaPuU10nty3rgPHNQd/rF12aJ0KCRH7etJFUIyOSfHKd1E3xCkJtOw2gADIBm/6svok4MwsR6Gj8gmXgAh0j/B9EacZjQYBiGXAAc4N4MFFWzhlJrHPZmEXVMwYrGk86jee5lRMG0ePp0RCkP/xkGIkWgGoTAFN5jBsDtdOC221hfXQUMA6aEV5smarUaarUayuUyKONJJ6zbhN9pIAgYSOSjVCyhWK7BKFVArQLazIZPKQjThAL3OoKACwgKFkcmdKGgmw+3AicglwcxB/pBj3tUfgBMC/fpAiOrPJsEAQFA1HVhmnxAknNgyv4mhYDEAWQgBecB7OEW0DAaQIsQA57XBaUMtm30jO7SacWYtMGhCIFEfc8LA2Z58/tpBf1Kg+mkah2GmJtdligbSICIe9vMxlm8B8GGC5sVQTwHEdL17FVVMgpDsCjiEQfDACMEjNK40AiTbSBvAy4goLVJGIZgvo9up4PV5WVQSmGaJmzH4UKhPoZavQaAC4XIbSJoNxCGAVgUwbFKKFWrMMtVULsIFzb8kFc3NAyCUAlHEkK4Q1ETCrr5oDsae9ochycEaJ9jgbQ5MEhOhLottvlz/Ap5GAC5MWKA1+6k0nvV/igFgmEYCMRENBot/tzP/VyIW0BDaQCEEFFEQzJlslP0Z/DKwMmEizoWQPcFDEP6eVkRgiwhoR7LGEOpWkWhWASNIkRhCK/bRSjSgwHwDEEBGIqZU/xGNILlO7CDAihj3FZPHjD9wISXGQ/CkNt/MqyU8e5SKDCACwwpIPRGBmBaFgzxjG6ng3aziZWlJUSUwjJNFIpFjI1PYGp6GuVKGYwRngXZbSJ09+D7vBqybRdRLFdgVWpgdhEuceCFVAk9JvMgWoogJ4TF23VHo/KY/L1wfUIAAxwbj9I0fW0gzbzx8ynbmPD2Z5kUWQyva3hSC/Bae/FIn0VyUt2casAruEV0oKrASSZg9nFS/QfAi2poNrqe1TeIx1/u2y/xJw8YlHK+MF4A1LZt2IyhUOax20iqbozBNAx4ngfP8xCJUmTyfkHo8w7Pg8WpXpfVafwggG1ZsZQkYuRn4jnkPSl/UH5Z3ZkIJVYt209xjjLGYIjSZp1WC+1mE4vX5iFTUMvlMqr1OupjYygWiyiUityn4LXhtVugNORz2ttFFCplOKUaWKGMADa6lGeqqELBIrI+gnRyJkIhzWxk35BkFmOrK4OYAwrGq9cc0L5HbNPnefu1EGGWEEjuz7+F227DtizxHOm+zRifDVjWpsig87hFdIAogKqsap+6R90HwtDPNAHyUH4qhgDoHwJUt2Uty/PVdXWbagIAiJlRIgSLloX6xARX40XastvpIFTKkQFpx1/KhpQdLAwRRhFs2051PABxJiKR/oMEgJ7SAKhyTar0dj0FmhACIvANJuEjf6fTQbvdxtbmJkAITJH7YNs2KtUqxifGUa3VUSqXEYVA2OkgaLdBaYAwjGDZRRQrZdiVOohTQkgcuCF/IBXsZSERCiT+diylKYiekulTyOtp/cwBMQjnMnAWPgBI4vxZ6n1WdEAXAjRmcoAxCr/roTxWBcBip7ja70zTRKvVQhiGKRiwOG4Bt4gOFAaUH7wfMU1/MwwDxWIRzWazJwyYx9jyVxUGegQhzyTox/hZfgZ1P5AIB9/3QYR3npgmxiYnYVkWAt+HaRjodDrwu11EYYhAFhvJwDq4nQ4C24Yl/A+maXKBI8yC1KgmBYBsD7EuVVYobSOFgRwN9f3xDEyK6hlRCghQiuu62N7aSmZ8tizU63VUa3XUajVUylVEIAg6HfjtPUQRRRRRmLaNYrmCQnUMpFBGaDroMoBFiVAwhUagCgUV1ajWW5EmhJE32vfE368nOtAnzq8uD2AO8AtFCANfzAfYS9zcstHpdGLfjdLfItyiCABwwDAgX9ex+snsqAnzSnMgQQ+qI5UO4Ek1rhYCzHIE6rDgfhrAftvy9gN8lJahQ8/j+emWZcE0TRTLZYxNTCAQ5cdkYhGlFL7nIRRqXxgECKMInqhEZBACy7K4Q1LMRyAjAsgpJ6X6GmKYqipoFOZXyRQCK09my/JsAHdYbXS7HO4s2sFxHFQqFYxPTGBicgrlUhl+QBG4bfidVlzUxTAt2JUqytU6jEIFkeWgywioEApMOBl1TYFjGPi3ixSmk+YDSQ3Nao/THIHIFwI68+fF+Xv7Yb4QkAKYiJJzlpWfCeg4DnZ3d1OmriAX7zYNQG2AQUp1yRc2DKMvErDffeQ1siC+WbDiG02yKnG7zXPMS6USJiYneXhOMLlt2zBNM5l/QPgSPM+D225z7cHz4IuqxIZhwLLt+LyU+ZO8YIr51fZJCQJFQFqmiWhIp6vqrHJdF67rYmtrC8BFEMOAY9solUqo1uuoVCooFIswCAN122h2WqCUO0gN04ZTraBUrsMsV0CNAlwYiASqEQQgEYFt9GoKEkuicmesUSANxpFtlBcdyKrmEx8DTf1Hr0mRJQQY+PANgQGwrHSGn94XZSEQrX8uAVg/hC55IDpQRSD5+unRXvZH1cvP13XtQW2cfgIjS53Pcgzq+QD9PoLcpt8rb3+/qANjjDP+xATKwpEomZ8QglarhWazCdd1YTsOqpUKSqUSasVi+8TcnF2sVJxuu43dvT3sNRrodDocStztxiaSZVncd6D5QqC2SUb76ULWIATRkFGXrGsCPErRjSJ0u100Go3YnCEATMtEvT6Ger2OYqUC02CIOm00261k9ifTgl0qo1gdg1mugFlFBNSAp3wrQghshdNT5gPj/VCKKD0C0RsdYD3CIunF4hj0DzP2aBOKmhF0O/tqopRSdDqdLAzACjgS8JbQMBqAiIbxppXOD7VZGaOpkUOPeKhqe9b2/UKDeaE9vdGztARdEOSZATrppohkTNu2MT4+jrGxsVizkRRFEVqtFnZ3dxFFERzHQcFx4Ps+XNfF7//+7z+1srLyxfvuu++x+++//8y999573+kzZ06BMYuFoeWHIVrNJhqNBlp7e3BF7QIJBpIl2dUPkxr9Mz4cEX6Aw9aNVPMBAIhP0HW72NjYiJGPjm1jfHISlVoN5UoFlkkQdV00XT6rbhRxbIZdqKA8VodZ4lgFPzLgC2cdEVBnW2gNPPoAIRyE41iGUSE0hfj79foQgN4oQb+QpGza2D0jNjAAgduJQUBZQoAQEqMAszAAP/uzP3t9kvk6aBgNoGsYhlJiWzKyao/T1CjN5whI1H/TNONwWupD5NhNOg26f6BQYJ99OslObts2pqenUa/X4ThOqrgJAOzt7aHRaMDzPBiGwUfBYjGOD0u/R6fT2fvOd77z1ne+853LAIxSqVQ9evTo1MTExPjY2NjUqVOnZk+eODH30Pved8+Zo0dP1+v1scjzsL27i53tbbSF6RBFUczcpvAl5KFhTMviWIcbTLGApxTybmEQoNvtcqY1jBirUB8fR61WQ6lUAgUQ+R3sbbTj9iYGFwrFeg1OtQZmluAzA34kHKeGQFEK30KkRB+kfpAutqJosH2iBPsJgfg9xW93rwnL6i1ZJvthscgzHKPs9r98wz9KHxpGA+gSQtDptDn4hcna/on8TISAXFdGBrJvQYQDkS5p+zn19lP9s4RAFEUoFAqYnZ3F5OQkSqVSap4BSikajQa2t7fR6XRQKBQwPj6OarUaCwhCCIIgwOrqKjzPA2OsC6AMoAKAua4bXblyZfnKlSuL4GZlCIAUi8XK9PT0+BNPPPHgqdOnzz76yCNnTp89+0CtWh0LwhCb6+tYW1tDp9XieAVKYQktIYZsiyFLCuDoJgiBLIqnYRcOQ8/30Wq1YmeqZVlwCg5qY2OoVasoFYs8VyJoo7XZAV1fiYWCUyyjVK/BrtTA7BIiZsKlNOZWAwlWISI8hRtCcwVJiq9ITSH5/lC2K30MeUIAYJTB67qpLEBdu5RzAWalAuMWZQFKGkYDIGlbHGAsUkZAvSR3eiSWWoAaAsxC72VFBoYd+ZVnjvfrH0bdrq/LZ7QsC5OTk5ibm0OtVounJJO13VutFpaWltBut2FZFmZmZjAxMZGqZhRFEba3t7GysoJGowHDMNBoNHYA2EjKshvg6fzxowCg3W6XLS4ubv3X//pfvwSAWpZVPHr06PSjjz56Znp6+o4PfuhD991+5sxD42NjNT8IzJ2tLWxvbaHVbHJHo5iCWjK/1OBuhpN03/4kfiPRfyI5oYvnY3d7B4YQCqVSCaVyBeVyGcUST5923U4sFKJICoUKyvUqrEoNsIsImQVPlHInBuE5DVIoAPGMTxDZlBKHwZ8tXdVZfhDduSjmBkbgeyg5dqb6D3AMQKfTQRRFKbSgOGb1Vn6HAxUEkSM9Z/JkzjVKe1F+kiRiTZ01VQ/l9WPkfvUDsho9a1sWJkAlKXzK5TLGxsYwOTmJer0e7wN4GHB9fR07OztwXRelUglzc3Oo1+uxsy6KInQ6Hezs7GB9fR2tVgvb29vr8/PzL1++fPlPzp8//yK4BhA/mvYLcKHAxDdyALAwDNni4uLW4uLiGoBv/c7v/E5xYmJi/OGHHz514sSJO8+ePXtbrVabOXrkyIRl29OOZU0bhmH5vo+m9CUAvCBKGIIYRjL56S0QCqpnXt6dMgbISVsYQxgEcR19y7JgOw4c20GlUsbYRB0EBvzAR8ftoLnZBttYFVO6GSiUqijWKnDKdaBQQggLbqhklcp6ChCYBdIrFFLgJUjnIn/ukAKgIQLfQ70yltkfGWMx/kXv0+BTgb87TADVkx8ETInNJyqldALKl4+iME5+UEf6wzQBrpfk8xiGgbGxsVjVlzFd+ddoNLCxsYGtrS0wxjAxMYG5uTkUi8WUk3BrawtLS0vY3NyE7/vY29tbfvPNN//Ha6+99rXd3d1N8P5eQG/kKe9XLst1U5xfppTSra2t5tNPP/09AC+JazqFQsEqFArOQw89dOLMmTNnT506dcfjjz/+yMzMzPFKpVJsNhpYW1vD7s4O9vb2eC6EkrAyTHblQG2svWzqyuoAoJ0DxkBkBWrGy7jLgivNvQZW19YSn0KhAKdgwzRt1KpFgBjwPBetzTYYWxPmgwHbKaJUH4NdroEUyohMC92IcptLiXRJoQDCi7qqQgFMmd8iDBH6QRwC1IWAhAG32+0s53QLt6gOgKShowCcqGB2cBVMYWyVwSmNEEVpAaD6AK7XBBgkapB1Pbld7iuVSjh58iSmpqZSZgohBO12G4uLi9jc3ASlFJOTkzhx4gSKxWLq3s1mE9euXcP8/Lw0FbyXX375v7z++utf3tnZ2QIfxUvQsCrKet6v2vZM+SNITAdHbKMA4Hke9TzPfeaZZ9585plnvgeAlMvl2m233z7z3gceuPuuu+6690Mf+tBD98zNna7X6+V2q4X1tTW0221sb23B7XTi8tVJ+nfSdsOSzvCQ6MasfVkkccPqiKwwWShQmEZH5KoIzca2bViOjWKxhGKxCN/nOIzW1jrY5hqf+o0QOMUSyrU6rHIdZrGC0DLhRRQeU8xXAphqjgtlCCMKhBIDYCmP26t5tlqtLMG6B+DWOGUEDeUE5C8TwfM81GoVofanNQDV8ad+T5kqmYXq6/3eg5kAgx6jOwbliF+tVmO7Xa3ewhhDs9nE2tpazPjj4+M4evQoarVaqsjD3t4eFhYWsLq6ina7jb29vb35+fln33rrra9cu3btbXAGrcrbIxtVSjK294tSsZz90mwwkZgPJQCs0+mEb77xxtKbb7xxGcAflkql6vT09OSjjz56+oEHHnj0Bz7wgXuOnzx55szZs2UGFLxWCx3P476LnZ14HgUV6pzMDzGAYIhjcUrnEKO+IdaZRIrKbfIcITD0xDH12nGdaiUCEVEKEgTotDuQ+R0FxxEgpiJMxwGjFB3XQ3NrA2xzTbybgUK5hEKlimJ1HEapjNCwEFEKL4LizKRAl891IetL6iaANF2y5gME1wBuSRqwpCHDgASUMrhuE4xNiFE0isOBqg8gcfqJG1lWHC/PmzppWBTfINBfXR0rFosYHx9HvV6PmVmeK+32nZ0dNJtNFItFnDhxIvbqS+2g2WxieXkZ68IL32w2g5WVlRfPnz//nZWVldd2d3dXwPujnM9KZdgsbThPKEA7X9ce9H00Y5/8lUKhABF5WFhY2FhYWFh+6qmnni0UCqVSqVQ+evTo5Ozs7JFjc3O1er0++9GPfOQvvOehhyaLBZ7+3HVduJ0OPM/Dxvo6XNflMOcgyPUpxA61nIaIX1gwewqaq2gLqe8r7yOvrfYbFTEqzAiAM63X7XIHboeX4HcsC3ahgGLBQqHggBADlAZodwK0tzfR2toQqeGAUyyjWK2iWK3DcCrwHBPruzu5g5kMHatgNY2nthzHCQbu8DeADmQCMJZM6CnDSlzwpn0AKhUKBXFcbyqwSvs59vY7JmtdJmAcPXoUMzMzqdpscv/KygpWV1fhui4qlQruuOMOHDlyJFU5OAxDzM/P4/XXX8fu7i6CgH+7IAiai4uLb167du3ldru9Bs5kJtJMmYNoH7jt1Qg2y7ieyuRAvqBQzQepJYSe53U9z9vb3d3dOnfu3MKRI0fqZ86cOVEulT7+8ne/O1kpl3Fsbg7H5+Zw5MgRVKtV3Hv//WCUYmN9HY1GA1ubm2g1m/H07GAMhgZpJrKzZH0z/VtLhpKagAZ+6ukZmuBRG0gdcmSylWkYiBhD1O2iC6DZ4iFCWYGpWLB5NILwORl8P4yFQhRxZF+z2YynA8/LAeh2u5kCwDTNxk/91E/dUofYUGFAmdjDv00yyWfSzOof3yZx2LVaTZyXrgaUB7uNP1Yftb7f+fK5bNvG1NQUJicnUalUUteMoij21DebTZTLZdx+++04evQoqtVqfA/XdbGysoJLly5hZWVFFEVJhJht25NPPPHEz3/605/+c1evXv36yy+//O233377soj32+gd/NTlfZse+YNm1n75QQyk82PkPgpudwYAqGmazuzs7NH77rvvbL1ev/2BBx44e+LEifeUy+XxUqlUjKIIS0tLuHTpEtbW1vDmG2/Atm2Uy2UcP34cMzMzmJ6Zwe1nz+Kue+4BAeB2u1hdWUGr2cTO9jb3KQicggQuSWejoTO+aq4pL5UF4mIsqafAUh57pPwG8ppE+Af29vbg+z4cx4lRnbZt85oNooEYY4g8P1WMlhCCYpFrCbZtwXEsnDhxDJ7npfL8dWyK67o9IcBCoYCXX365NWAfuGE0jAbgy9h+EPiCkSOFESRzJ32b10FP4/TlaNwvrKdn+WUdox8v16V9XyqVUK1WMTU1hVIpmVmWUoputxvb+EEQoFwu4+zZs5idnUW5XI5Vtt3dXezu7uLixYtYWlqC7/P3llqPjK9bloW5uTncddddEx/96Ed/6id+4id+/Ny5c69+4Qtf+NKrr776csBVBRnnZ8iWliqpA9x+5oEkI2OfyvS+bdvFer0+dfTo0aMnTpw4Pjk5OXv//fffduLEiQfr9fqYWrRCncvx6NGjKJVKWFhYQKvF+2yn08Fbb72Fc+fOxQLhyJEjPC+iUsFYvY6Tp0/j9rNnYRCCvUYD7XabJxYJE0IKhUjcT5YhS55eEQ4S0COWU1JPFyBGUt6UKNoFE+tBEOD0qVNwCgV0Oh0eFqUU7U4H1UolERgZTmQ5knteAvnW09rVvtgPfBVFUWNg7rtBNIwG4AIyqaENxih8P3H6ccaQuHDZEDJMyGPrepTgsEgVGGNjY5ienkapVIolrvyI29vbWFtbQ6vVgmmamJ2dxbFjx1AsFlPhvI2NDbzxxhtYXl5Gt9vlMFYkJo4E1Ujmv+OOO3DbbbeJ6cJqKJVK1szMzMMPPvjgwy+//PJ3/s2/+Tf/z42NjXVwb71MoKDKMpAWBOqsK7r6r2u/WesQ1/YAkJmZmemPfOQjH3788ccfn56evtNxnFKxWDQkQlEWDclCUUqBJ82ia9euxYAmtcptp9PBxYsXYwEs28iyLExMTOD4iROYmpzEqdtvR7VSiQeBTqeDzY0NdF0XrVYLrgDMUClkCQEzDO4fUPLo1Rh9rPorpkXKDBQCwQBSWqtlWZienoZl26BRhPPnzysVhtL5JllmpnwHVUjoxxqGkZoOXJJlWdjc3Nw6VEY4AB0oHZhSOfqHShSA92npEBTfBYZhgjGa6iyD1AHQpW+eRqCCdyYnJzE+Pp6SyADQbrexubmJ7e1tEELiGP74+Lh4Tv6Rd3Z2cOXKFVy5ciVO5FlbW3v99ddf/7JpmvXZ2dk7jx8/ftfExMScbdskCALMzMzgxIkTKJVKGBfY9mKxyEeWIMBjjz32/omJiV/9zd/8zd+4du3aJXBNQKrhEbK1AJXRDeUX6BUOqeYT1/TK5XLtiSeeePKxxx57/5133vnI+Pj4uKxiJBkvKzqitpu6X4YET548Cdu2sbOzk0J3qgJBNbGiKMLi4iLm5+d5EVPbxtT0NGampzE1NYVjc3M4fdtt8bmu66LVbPIsyk4H7U6HV2QS39qUKEvNCSi/o2w8VXMAExOqmGZc9q3jughExV7HtnntRq1g5yBCYD8tVWYB6iaMYRjY3Ny8pShAYAgBYFmW0kAMvp94/ZVXhxQChBgIAh++34WcR0A2iKyIsh90N2tZqufy+GKxiNnZ2Rh7rx7bbrexurqKvb09MMYwNTUVo/ZUZGIQBHjttddw6dIldDoduK5L19fXXz137ty3rl279noURQEAdvny5WcJIcW5ublTp0+ffvADH/jAB2+77baJUqmEsbExFAoFuK4bl+CSyydOnLjtz//5P/8Ln/vc5/5RFEWhaKgQnFmlFqA2hi4ATGWZIi0EDHEd3zCM0tTU1ORjjz326Mc+9rEnz549+x45G0273c4d4fsxvrou2/3o0aNwHEfUB0AK+pwlsFVsRRiGWFpcxPzVqyCEwHEcTExMYFoIhNtvvx31sTGMKYLc9310Oh3s7uxwwRqGIMpITqFoBcLuZ/xhkvCgEBZU1F5ot1qwbBuFQoHnJvAcjVy4eD8hoC/rbakKAC1D8JYVA5U0sABYXl5en5ubEymt7VQkQL5UFDEBDOIN3W43Y+y5LIyhOwH1xt4P888Yz8Gv1+scJ66o+nIEaYjcetd1US6XcerUKVSr1VhIyPrs8/PzWFtbw9bWFnZ2dtBoNBavXLny4srKysWNjY0LlNIQXG23wRm2e/z48aOf/vSnP3D33XefPnv2bFXN+Nva2uJqrFBnBRKw88orr3zze9/73vOiU8iRP4RwxKHXHFCZWwoAdVnVCLyZmZkjH/rQh374oYceeuL06dN3jI+P13Wm1xk9TxhkbctKux4fH4dlWdgRGIEsX0yW8JbAIlkhN4oirK6uYmGBF8VxHAfFYjH24ciQ7eyRI5ibm4sdd77nwe12Efo+XM9DR/gVKGO8wjKQlFdXBh/DMFCr1UCltiFs+CAIUCgUMu3+6xECqhNRXsNxHLTb7Y1XX331RaSduDedhhEA3qlTp+B5HoIgEEhAP+UDkJEB7iTpotNxIf0BhBD4vr+vWp/n5KOUwnEc1Ot1TE5OxtMwy2N930ej0YghuNJLPTs7GwNWZDryysoKLly4gPn5eYRhiG6327l48eKX33777Wdc122KdrHFHwXgz8zMTH/yk5/80Cc+8YmPHj9+vGZZFs/zF6P+1tYWOp1OLHzCMMSLL774ja9//ev/v6WlpcvgTG+CM34IXgRCagEh8gWAzvxy3atWq9Uf//Ef/79+/OMf/8np6enjvihL1mq1epCZeTka/bZJ0ktZq2aXNAfUCS/kvWRIWNUA5DfTi77KzMkoiuLsSnWwsG0bY2NjOHLkCGZmZjA3N4eTJ09ibGwMtm3z8u6+z5Ogmk00Ox34wr8RRx/EfWtKfodM8DJNM4XuzBvRhxUCeli8UCigUChgfn7+jy5cuLCEBMUp//KwHDeEBhYApmkagJxZhkOAuRBImwB8TgAWV0ANgrCnsbJUTFUj0DusdNbU6/UUnkA6sba3t7GzsyMQijUcP34cExMTsUSXnW1xcREXLlzA2tqadO51FhYWvnPhwoVvbW1tLYEzfFV8hBBcrS786I/+6A/9yI/8yCePHj065jgOSiUOLaWUYnd3N9Y29vb20Gw2sbS09Pazzz77P1544YVvgo/yBfErmT4Qf1IYSK1A5TSpvapMb4hrkIcffviRn/mZn/mf7r333sdd142Lraah2LSnzQ8iBPIiNtLLPTExgb29vdhZqqv+kpFVIJj6q0LFpRmn11qQPprNzU0Zeo2RnMeOHcPJkycxNzfHp2qfmICECHueh3a7jZZMmY6iOGQn7yevtZ9D7yBCQIaMpeZaLpdhWRb++I//+Mvi/SykHcOqE1dv+EMXBsM4Abfli3teF4z5sQnAXzrpFK7bhue5YCxIPbMsqKl67fVfud80zZjRpLov90nHSrfbxe7uLsIwRLlcxvT0NGZnZ+MCDADQarWws7OD1dVVXL16FZ1Oh+3t7a2urq6ev3r16jNbW1sr4IwlY4UhAHry5MmTd9111+kPf/jDDz/yyCP3SjWfT94ZYk9k1+3u7vLKutvb4ZUrV95+9dVXv/niiy8+EwRBS7SvZNoA3CsfKssBEg1AdwjqJkAEIHr00Uc/8oM/+IM/8YEPfOAnAThZjK8L2bw8Cr1jq8v9TAD1GlL9r9Vq8bqMHKjVgrKYXl4jxttr+/TnldWU5XO0Wi00Gg1cunQJ9Xod5XIZ4+PjOHLkSFy7QW4bGxuLhYo0z+SfDnHWk9cOKgSkViGLw8gQ85UrV1597rnnngavByGdwroGQDPWs5Cg10XDCIC2fOkg8BUYMO8AYegjikJ4Xhc7Oxv8icUxslFkDDkvDCg9zeVyGVNTU3HjqdgA6dF3XReGYWBychLHjh2LC2nKDuK6Li5fvowLFy6g1WohCAJsbW2dO3fu3B9tbGwshmHYRRquGwAIpqenp3/sx37syU984hMfmpiYsKQ9Kos67O3todVqxdV/dnZ2onPnzv3J888//6XFxcXLlNI2khG7i2Sk99ErAFQTIEsASCHgzs7OTvzcz/3cP/rgBz/4twFYskyYyiD7waj1zqtv308QZG2ToTDTNDE+Ph4fx7W/IP6VGArdWagym7ouTYecmXRSQkMOCr7vY21tDaurq7AsKy42opqO09PTmJubizM+pc0vTMHYcSsFg3xefXZqtR2zhID8lVqKRJ+2Wq3w937v9/6X1dXVFnhKuM78WQJAghnVffEth+DhHhpGAAjvNSGcsUOhTvHIqe93sb6+gjD0eDXYeEbbMGXHy1FAR+3JxhofH0epVOqxo/b29mJ12zCMGN1XrVZTnaHVamF+fh7z8/PY2dlBGIZoNpvLCwsL37548eK3fd+X6LyC0sDe1NTU5Kc+9akPfexjH3t8bm6uLm21YrEIT3EyNZvNOPFnfX392pe//OX/ePHixZdkvxQfSmV6dVlflyaADAtmhQS7Tz755BM/93M/97np6en3S3CONIX6je55YT49I3MYE2FQZ6IpUnRV77+spOy6boyeyzIJs1Ci+5Hv+ygUCnHOiSpUwjDEzs4Otra2cPnyZRQKBZTLZUxMTGBmZgYzMzNxbsjY2FjsG5AYEFcUalXL2cn+pj5nloCQJiMhvAz8N77xjT949tlnnwNQF4+ufnfJ5OqyhGxnoTqBXp/BUDQMEGgdgG8YpBBFYSwd1ew/z2vFFVgp5XBhtRF2d3d7Oo5hGHEZLalGSpKovc3NzTifulqt4tixYynGlx1gcXERb775JnZ3d2Xoa2thYeEbV65c+a7rui0kKbkyDEctyyrce++99/71v/7Xf+yuu+46IicwkcCldruNZrMZj/rr6+tYWVlZffnll7/42muv/Umn02lACcUhbdvLdfUvRK/9rwsAIvd/7GMf+8g/+Af/4PNBEEzIKab1ETPrV1/Wt6nMpZZqV/M5siY5UZ15ecJAFxQSGCSFVr1ej/MF5Igr7XP1/oMKAGl6uK6LarUab5MRB/mnChbpF1hcXIxrPc7MzKBWq8XqeqlUiuHj0t8kS6RLH1dWf9aFl6zsvLm5iaeeeuq/hmFoInEwqzBxdT1rWRcGQFoYAEMKgoEFQBRFEeMIjFhCRlEoRm+kOg9vMA4Dlmo9NxMSiS/tI9nYagzf87zYm+77fpyVJ30CUnVjjMW2/cbGBlqtFrrdbntpaenljY2NKzs7O/PtdnsbnPHLSBjfP3bs2Okf/uEf/tC99957+uzZs0fHxsYgPfsyoiDLXq+urmJnZ4dduHDhO6+99trz165d+26n09lCYpurjK07+lRmlza/rvarzM8AhHfddVfhM5/5zP/y4Q9/+H/yfX9CalL9mD+L0fOW1V+1aKlKeSO+quaHymxIumahMrLOJNKfUqvVUhqCLzz5nueh1WrFERX93bPeVxZjlQNJ1p8uDGQ/ajQ4KndzczM2HwqFQhyW3N3dfdWyrLXTp0+/b25ubqJQKJiu66Z8CXKmJWk+VCqVWCuZn5/f+3f/7t/9r9/97ndfQDL6qyq+jg6lGMw8MDLOG1gQDCwALl++vPbggw/6pmkWpSeV0giU+uKD05RTkDN8EPsA1I5iCwCGnpUnbexms4koilAul3Hs2DGMj4/DcZxYcMjY8fz8PBYXF2W8O+x0Ohdfe+21L29tbc0L5pT58LLR/ImJicmPfvSjP/CZz3zm8dtvv70qbcRCoRCr+K7rxo7DnZ0dXLhw4dUXX3zx/5yfn38D3K6XkriL9KivCgB9pJd/kuF1EFD8ce+7777Sr/zKr/y/Jycnf7bdbqfmPdhv5O+nAQxyjn68No1VZkRHDafpQkFqElkCRHUGG4YBx3GS+RWEUGi1Wmi32/GfHET0+Lp8Ntd1Y69+ngBQl4HEQRmGYQwM4r6uQDUtxz73uc/98uLi4uZHPvKRe97znvc8/OEPf/ie48eP3z07O3usWq3aUoB1u110Op24nNzly5ebv/Vbv/V3v/Wtb31ZML8q7LPU/ixhoDI6UY6X++UgomoN+wqBYTQAmrYhozjuL7oD0gVBkmeUcXg1Y0qOGLKRZS6+rKM/NzeHiYmJVNEJUVATb731FhYWFuC6rvxwnbfffvuLCwsLLwumtJEAZuQIbX/qU5/6+E/8xE985MSJE3XJ9KVSCYyxmPE7nQ7W1tZw7do1bGxsbLz55ptf+e53v/sl4dWXoTl1lNcFgPyLlF8ZVpTLOvgnlSX40z/90/90fHz8Z1UM+X4OvizmVZeHYXr9HJWy7HXpfC0UCjHTS0Eg7X6ZYJQnBFSzQp17YWJiAhMTE/HoKgWC9OTrXnsAcUq37gvIejf57LKfqc+hqvNTU1Onf/EXf/HXPvvZz/7dr3zlK3/6la985cV/9a/+lVMsFssPP/zwifvvv//Rxx9//M4777zzjqNHj95x6tQph1KKF154Yfef/bN/9vdefPHFbwKYlN0f+Wq/7AfSCazb/rqQUI+NlHMGihYM4wMICCE7hJA6L/UlQyf8/qrNKBtZaglSwsqOINUwWbnWF/PuVSqVuCBnoVCIj5N+gPX1dSwtLcXqmmmaUs0qFAqFHz558uTDS0tLl1qt1qbrujue5+3MzMzU7rrrrpNPPPHEe5944ok7JXJQMr4wG+J6fxsbG7hw4cKV+fn5P7148eK3dnZ2FpVG95A483Q7Xx/1B2H6Hub/1Kc+9fEHHnjgb0lnX17nzQpXqZWWsxhfP0929P0ExH7oTF0gSL+PdAJK7UDmImRVF8oSBuo+y7JiNGcURbGZJvuP53kx0ExWbB4fH8/UnKRPQmIApEmpogDV8CXAzdLbb7/9fb/0S7/0G7/927/9z5aWllbDMDRbrZb/zDPPnH/mmWde/bf/9t9a5XK59OCDD9723ve+9/5SqXT8W9/61rMvv/zynwAYU7436bOsr2c5AVUHoSoEpEkqj1U1g+sTAKKjbxNCTqv2vywKKj+01AB4Z6NxspBEECbmQ5JZV6vV4rhtnCcuZt5dWlrC1atXsb29HQuKcrmMWq3G57yvVlGpVMxCoVAFcEez2bxDZP1FlmW5P/7jP16YmZmxy+Vy7D8QkYEYuTc/P4+FhQUsLS29+vrrr39pcXHxe1EU7SJxtLjo9ebnIfp0216371MMr/LSr/3arz3xAz/wA3/Q7XbLeqw8j6FV7Uj9zTpG368ekzUDs37PLIGQF2lQlyX8Wo0KyP6i2s+6MMgTDlLrKJVKKfNDOmybzWY8Eefk5GTq3aX5qbaNyuzqu0lTQArWTqeDO++887F/9I/+0W/+43/8j/92o9FoI4GKFxljUbvdps8999zbzz333Gvi29uC+dXRXR/pdQEA9DoI9ZFfFwa6U1BqBEAfITCUACCEbKvOPNXpx9cjpTGTpB2JvY+iKI4bR1GEWq2G2dnZ+IPIY4MgwIULF3D58mU0RYUZea7EiEsNQX543/f5fPeVCmq1Go4dO2ZWKod7Vp0AABkHSURBVJXqkSNHUC6XUS6XY5iptPUvXbqEpaUlrK+v77z66qv/6cKFC88wXsRDNq5U5yVoRx/xVQeglLbSztfVNJ35oS7//u//frVer/+/2u12eRC1v5/jL4vx+y1nCYk8jUA6DFU0nRQYOopOdQrq4TIpdKQzUBcGKg5A1wzU66uCT07X5nkednd3sbe3F9vi0hOvApJ0LUpHJarha3kP13Vx/PjxO+6///73P/fcc38EDuaRDCeZT1Zu1m19KPtV217Hf+he/7y+o96XaNfW6+5lCoGBBYDv+wzApmVZ2N3dwerqCmZmZkGITLRIFwih1EjNh652GKmC12q11Cy4nudhYWEB8/Pz2NrakmpiFASBqYbAOBrRiz+q4zjxsvTeyviu7GDSftzb28POzg7Onz+P+fn51uLi4rfOnz//xd3d3UWlUbNi9llhPKnm6849plwrd8RX27darf69drv93rxRfxDnX96onRcFyEK86dfJixDIIq8qQ6phMckwvC/05gRkxdPlt5Kmohw0VISeXrVZBwwxxus+SjSg53nxNG7qs8nolHyGPHCPjouQg96nP/3pT3/729/+JuU2sETzAb3IPr0fqAxOkD1ASF9TpB0vr6UWf1EFiVzXE8Z0FGFMQ9UDeOaZZ/7lD/3QD30iDMOp119/FePjE3j88ceFZz5ImQCGwbdJknFeyaASlilgtFhdXcXq6iqazSYMw8Du7u4bS0tLL3c6nQ0AR6enp3+gWq2esW2bSNtN/kkBIIXA7OwsPM+La7XJWgDnz5+XDr7z586d+/rm5uZLrVZrSfkIUp3XBUCWN1/N6dc/Yr/inD30pS996azrun9frucxcxZjDyoo9GV9lFfXVabvVxJcRb0xxuJIjRQGclnNCZDqu4qy05/LcZw4/CZNA9WHAKTrT6ragFyXzmTbtnt8U/JPCgFVuKQmOlXeX9UCut0u3vOe93zkR3/0R3/yC1/4wucFH+Wp65JRVbtckmrHA9nCQ/1VtQJkHJelSZjavlQfHEoALC4ufvfixYt/55577vlP3W7XWF9fw8svvwTP81AscnyNKt15zgBvXCnNZWMyxuIps2Qij3AMLi4vL3/z6tWr3w6CwBPPeG57e/v5er1+ularPTI5OfmY4zgV6cyRAsA0zbgwSBiGsG1bOvVw5coVLCwsXLlw4cJTy8vLz1NKG8pH0G17PZynJ+1khfD04ogpXunXrq7rPkYIkbHhfZn3oFqCJN3WlZ1cMr4eJ1fvkXqpDPtf/skCHzLKo3v69VJZ8to6A0pNw3GcWCvIwh5w5GmUEjRqX9QFhq7264lJOkpVFS5CwJBPf/rTP/3lL3/5q57nBUgzpjpK66OzXKboz8zqqL8f06vLWSaHzCnpCQ0OXRHom9/85v+3UCg8cObMmf+7YRhYWVkRNfZDbG1toV6vx2q97B/6iNDpdLC6uhqn7gppvHnx4sX/try8/Irv+x1w54pE2IEx1m00Gq83Go1Xt7e3n67Vag/W6/V7y+XyPVEUObLzSief4zhYXV3FCy+8gM3NzWB5efnp8+fP/xfXddfEe6sjvhrO00N5qnNPZfZ+3vwUnwzQrA+oTKAu9wO/qPsHCfPpIz2QgHKy9uspu7parI/sumouMR9qPF1X3XV1W1XBVR+A/LZScwyCgOf/ZwCQstR5OdqrQkI+A5BmdN0kUK+rTvY6MzNz+j3vec+9L7300ivgzj6V+VTHHtCrBagfKGtZZeB+x+nL6rqqMUjtIpVcMawAIADYc88999lCoTAxOzv7M6ZpTkZRhGaziVdffSWO2zqOE4fr5AeQyDoJo4yiqLO3t/d2u91+e21t7dmtra0FAEXx0LkTJnQ6nYudTuet9fV1u1QqnRwbG3usXC7PFAqFGdM0j6+trU20222ytLS0vLi4+Kfr6+vf2NraegMJM3bF9dXkHJXps2C6eU69LNs+097KoqeeesoC8PG4gfvY9lnbs7z+WetZNr90nMn9etw8L46ukw7q0aMBjuOkNAF1BNbDiGpNAXVZryVQKBRi4SIjS6rAUO8lmV+aCVIIqLkpuo9CLyunRz7E5LHGAw888NhLL730XWSP0lleflUjoOg1A/Rleb2s47K2q9cgGX8pGlYAMACk2Wy2/vt//+9/+8SJE7/10Y9+9LOVSuWn5Ai/vb2Nra2tng4qq+yur6/DsizWbrefOX/+/P9nd3d3gXI4oSOeZ+CJEhhjXqfTea3T6bwEwCKEOKZpFsfHx293HGd8c3PzRd/315BIQtWel6O+yvCqY09HYu3H9Oiz3u8djhNCHhyE0Yb1B+jnqsJCRWHqKr8qDLJ8ADrjZoX/ZNRGMpnUzFTVX8cgqOeroz6AWO3X30n6HVQ4scrwunaiOg31lGX9PfWIgboM8Jmh7r///nssy6qEPCtOfvs8AZBnJuqqfxZzZyUH6RoGcpazjuHtO2hH1R6WAGCLi4vn//N//s8//eSTT/7aPffc8w+iKCqqGVMqycbudDp/uLKy8vnl5eXvUUoJkrr57gGeRSWPMdYNw3B3c3NzAZyx5fvpZbj0ZRWb30/FH8ipNwxZlnUyiiJ7P/W/X+iun68gi8n6aQbqXIB5JoB6n6xRX56rqtXiXVMjtW5qyOvJ+pNq3ojM0dDLj6n3k95+6SvQTQA95i+1gbykJ/3d1PtKgVAul6csyyoq6eVAr6qtjvxQ9qnIPj2erzrzVCTgQfuc1DrS/e+AF5MPBgDsa1/72j9ZWlr6wqlTp37+5MmTP2VZ1qya3BMEQbi7u3v+rbfe+vfnzp37omD8EpJiGYdJKrPq1Xay7Hp1sgw5xOTBdJGxfF00NjZW393djRurH1Pvx/j9Rn6VyWQ4FUgYQRcEWX/68+hMoWMBAPR436UQUI/RQ4rS86/WnJQAHhlNyhNA0qxR5zhQHX76c6rtoEYmssyaLCKEqBWbdEefPnDoQkAi91Tmz1vux/yD9Mcs5/SBBYCqehgAcO7cuZfOnTv30uTk5L+cnJx8qFqtHgcwxRhzt7a2XltfXz/n+34bHDjR18Y/BMrKmlKhuWrM/qBq/qGQ4zhUqsWDMni/0TzvPCAd3sv60xNlBnEwqqNmFsBG1wSkOSBHeBkWVEkKK1liTKr+MnwsHYC601A+j7y3jA5JH4FqGqhoRCkQspyE6jXVd5btEIZhV6xLT3teX1Lj/kBaK8iKGqj9WCVVEKjL+/Xb60YC6qReUEorsr29Pb+9vT2v7SuCI6MscFW/nwfzekh/WZ259bz7fjDdrPc8dLp06RKZmZnpmTuuHw4gz8OfdZ468mZtzxMEWffrF5HQmSRPcGQJEb2cOwCUSqXYppcqvCz9JlGg7XY7vlaW519N6JGmgQpDl4JJFQxyXfdxZLW1aZrY2NhYCYLAR5qXdLs/y6knj8uy0TNj9mpza79Z23RcyqFqAHkPBKTVIUNZlup2noPisJ6DZazTjGVkLPd7rxtCm5ub3vT09L5MkoXh73e8etygzK8fk3f9PIZT1Wz9+EHKe8WNLq4nUYGSfN+PUaSVSiUOKeep6fo2WS1IChVVa9DbL+9Z1Ws7joO33nprTTixK/LxkR7ts6C+qk2vUr/+ludIzBq4dD+WXisgaRNcP6kvojOTCmjYz1t5WJQlAPQGy9qXdf4NpyAILrfb7XapVKpkAWP2Y8h+DkAZ49cFSd5InzXy60JFh8+q4TN1u8rwWSFI/R11LUAymF5MtCOm9S6XyzHGX9YJyDMH1OtKH4H0MWSFI6UgU6MGeUKw0WjsgEewVMSdrt6r9vxB7Pi8fprVn3X4uS4MUnQjNAC5rmKZ47bVjrvRAiCr0fY75qYSpfRap9N5sV6vf1Sd8Uj+7sfk+rL6qzJ/P3t+Py1Cr/efp2lkJf7ox6iCCUiSiizL6sHdy1i/rCYtrytV/1qtFmeFqqCyvOdQBYQa5tQxAjpoKEtbchwHOzs74VtvvfUWuHmrMnuWppvVx7L6YZ5Nn6fSq0yuLusRrcxkID1j6DCo3wvo3vXoBvzlofVon+e7ZfQP/+E/pO12+xmZu55F+9nS+/kF9tu+n6NPki4I9HOHuaZ+nhqNUOv4yco++jmyGIwc0aemplLzTw5CqjBSC4PoRULUZ5Tn2LaNa9euzS8vL68jmfm532CXN4rnOZ+z9iFjn87k+q/u7E5/04Fbazhi2F+C0QGOO8hfP29+rjPkVlKz2Xx9b28P09PTmeqx+itpv9Fft7/3G/n1bXlovTzfgb4/j7L2STU7609OpKGSHJ23t7fj9UKhEKeW5znt+m2TDK+WE5d/ahhVmiuMMXz729/+U0qpi2w+ysON5HnqdbW9nxpPM/5Uh7Ye2s41PW6UAMhqiHfC3zuSGGPfeP311+cJIZiZmUlh7Ydx0Ole/yxBkHWsJH150NFUPy5PYOQ9p54arI60cnpxnWSNifX19dipZ9s2jhw5grGxsZ53GtZvogoC9TtYloVarYZXXnnl7W9961tPI8kBAHpH5mFH+KzqUTqTq0yt4lzk+VkJbLkf8mYIgBHtQ7/0S7+00el0fuOVV16BnGx0kFEsa9+gocQsJt3v+nrGX5ZPoJ+PIG9dt8t1rUXOQahXKpIe/Y2NjViLME0Tk5OTqNVq+7ZhPxNJFQTSFJBlyXzfx9NPP/2Ndru9KU7RKz8NMmLTfY7VEap56/p2NXV9X413JADeIWSa5r/f3Nx87tVXX8WRI0diNTOv0+ap31nHZdF++9V9w9rVg+7XzQ0gOxVZTq2V9eyGYSAMw7gEmPybmZmJZyra7930tlA1Ehk6lOXGGWO4du1a9/z5898Dd6Kro7a6nMX4efZ73rGRtqza9npNigi9GsS+mu9IALxD6Jd+6Zc80zR/4cqVK2+tra3h9OnTPfZsnjNN/ZWjVta+PE3heqmfCaBSnkaiF+DM8jPovgD9XWS1J7nOGMPU1BSOHDnSE6bMe6a8trFtG7VaDVEUYXFx0X3qqaf+D1F6Hug/4YvOlP2W80b0KOOaYcYxeQVq+pK53wEjunn01a9+deOTn/zkHywtLf1Fx3Gqd999dxz7zhsZgaTDqpj6PP+Buqz+9fMPZI3UWaQnBO23rGIJSqVSDyRYfTcJAZahPnkd9dnkRDJyEk45pbzjOHHUIC80mHVfCVseGxuTM08Fv/d7v/erzz///B+C2/5ZjK4yqc6UeYyfZbdnMXk/4aI6AvujmBQaCYB3GH31q19tPPnkk2RlZeWTAHDmzJm4loLOqEBaCOyX1CNJT/XtJxzUe/WjLCbKy6bLqrlXLBYzBYAkQngRjk6nkxtJABDPFSCndpPZhYVCAd1uNwW57mfiUEpRLBYxNjaGdruN5eVl+oUvfOF/ffbZZ78IHvdX08azQtFZo3LeqJ+nyuep93kh9aGd3SMB8A6kr33ta8994hOfqC4tLT3BGMO9994L27ZjFFwec+vhvkH/JGUJmP0chDrpYJ5+y/K6ktny4vhqVETMApW6hn5OEARxCXg1j79YLMZCIOt51HVZfXpnZwcbGxt4+eWXP//UU0/9FpI5/foxbJ66P6xjL+96OrQ3Cy8wEI0EwDuUvva1rz39yU9+8k/W19fvXl9fPzE1NYXTp08DQCwIdGbNmsarH9P3EwT9wmV5lMVMeaq/foxU1fv5E+T7ySzBrPtL1b3T6cQTf6iVf2Q6sg4dVhlfhhEXFxextLS0+tWvfvWffvnLX/7ffd/Xa0lk/fb7izLWsyaV0dPV+zn5rgvbMhIA72D6+te/fuXJJ5/86vb29o9evnx5Mooi3HPPPajX6/FsOGpJ7f0wA3kqvy5I9GP0fZKyRnudufVl/Tqqmu44TuY+9dpZWkDW/VTfSZYQkHUq5XmmaaJer6NarWJ7exvz8/PY2Nh47T/+x//4F1544YUviLL4QDYjq9sCZDP6IMIhz7HXryxdqgmG7WMjAfAOp69//eu7n/zkJ59ijJ1aXFy8b29vD6dPn8bx48dh2zZarVaMWdfnUQSw72iftW/QcGLWvix8gM7Icpv6q84tqN9DPVaiAD3PS90/6x4ARMXqYnyMTAcGEGcaVqvVeAahixcvyuno3/rd3/3dn7l8+fL3ANTE5bLU/EFU/jybPm+kz8MM6OhB4IAjf9y+13PyiG4u/fqv//pf9X3//1ar1R647777cOedd2J8fBzNZhPtdhuu66ZgtTrz9yv3nRWHV6mfBiCXswpy6tN7Aeip5Cu99fV6PddsULd5nof19fWe8lw6QEleW04Cq84+JM2OUqkE3/exs7OD9fV1LC8vv3rhwoX//sILL/zv8/Pzq0hmlyZIJtzQU90NZbu6DqR5TMcBZHnxs/ACefDhLBpKIIwEwLuMfu3Xfq0cRdEvhGH49wuFwvG7774bjzzyCI4ePYput4v19XW02+1Y3c0K7+m+gqzKwllmgU79CoPq08ap+9SqOwBS4bYsAaCX6QKARqMBOXuyLmzkNdVnkdsdx8HExAQKhQKazSYuXLiAtbU1FAqF4Pz585/7L//lv/xqq9WSTgYJPCD7/GUJAPW8+HWATDBQv/wYqp2f+SkO2p9GAuBdSr/6q796glL6T33f//lCoYAzZ87gB3/wBzE3NxfPpryzsxPbueoUbHqNQH2ugKwQYD91X11W//YTAPq+8fHxeFvWPVTzQM4opR6XxfRSuBSLRdRqNRQKBWxvb2NhYQHLy8vodruglP63P/7jP/7fvvGNbzwrmwC9I7jKK/oIT3K26efFj4v8kT6rcvChM378ra/3AiO6tfQrv/IrP00p/btBEDxaLpcLd955Jx5++GGcPHkynsZqZ2cHzWYzld8uIa5A/1oBkvYzAfSquiozquvq7FByvzymXq/32PxZAgbg9vv29nZK2Kiz+QIcGKXmVjSbTVy9ehVXr16F7/uRYRgXHcf5e7/8y7/8JeW18nhCH811ZicYTgD0y1YF0Nezf2iJbSMB8H1A/+Sf/BODMXZfGIZPGobxM77vv39mZsY4deqUcezYMXLnnXdiZmYm9ozLabRVhlHV/iwHoqQ8+7wfs6pMKhk/SwBUKpU4B0I3J/R7RlGEnZ2dGBloWRYqlUpcPVgKv5WVFaysrKDRaMhZpF8zTfPfGYbxMoBXf+VXfqWV0aRqAQ+Ss48oy4a2Xz9PNwPU5by04Sw69IzWkQD4PqPl5WXrj/7ojx5bWlr6q4uLiz9lGEZtbGzMuvfee8l73/te3H777ajVuFPb8zy02220Wq14mi01Mw9Api9gvxE6SwtQ1X6d+VU4sAzZZfkToiiKS30DSE0iKpF/3W4Xi4uLuHTpUuwPAeCZpvllwzD+m2EYX/jVX/3V5pDN2k8gZG3bb30Yb/4NTWMfCYDvY/r6179+96VLl37y8uXLP76zs/OYZVmkWq2SM2fO4H3vex9Onz6Nqamp1OxNruvCdV34vo8gCDJnzpG036ivqv1Z23XnnUTv6RN/AlwAyRJhtm2jWCzGNQFarRauXr2KhYUFbGxsoNVqyWnprwrG//e//uu//tINaGIy4PZBBEBmE9+AZx7oBUb0fUQbGxv2Sy+99ImFhYUf9DzvzMrKypl2u303pbRy5MgR3H333ZidncX4+Djq9TpqtVoMzVXr5KlTb8kRWTK3OruOPm13FqAnq9aezL0HkKrGI6/vui46nQ729vbQarWwtbWFjY0N7OzswHXdJoBrpmleMwzjgmEYXwLw7Gc/+9lhR/th6bB56KYWrhkJgD+D1Gw2C1evXj169erVxxcWFh57++23n3Rd904ApWKxiGKxCMdxMDk5iePHj2NqagpTU1MYHx+Pa+/J2XeuhyRjS6Hi+37sn2g2m9jc3IwZfHd3V3rspbDxAbxpmuZ3DMP4jmmaTxNCVv7Fv/gX3i1uXr0AaB6PvSMqVI0EwIiwsbFRfOWVV077vv/gwsLCey9fvvx+APft7u5OdrvdMiEEpVIJjuPE6nelUsH4+Hi8vVQqoVQqpSDJ1Wo1VumbzWasCXS73RiQ02630W630el04LpuXOJbahcAYJqmbxhGwzCM7xqG8QqAtw3DeJEQcu43fuM3DntquT9TNBIAI+qh7e1tM4qi6ssvv3zE87yHoig6+/rrrx9tNptnKKVnKaUzvu8Xut2uxRgzGGNmFEWGYRiGZHLf92MwEiEkxvlLZ2IQBFGhUAAhJCKEhIZhUMMwQsMwFg3DWACwZBjGFULI24SQSwAu/9Zv/dberW6b7zcaCYARDUzb29sEQMUwDHt3d7e4s7MzTggpgMNlbUppFQAxDINtbW1Z29vbJUIIMU2Tnjp1qmUYBgMA0zTDb3zjG+3vfOc7rFqtdkzTbBFCXAAdQoj7r//1v77VavyIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiEY1oRCMa0YhGNKIRjWhEIxrRiEY0ohGNaEQjGtGIRjSiER2c/v/Tf799sdRoxgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMy0yMlQwODo0Nzo0MCswMDowMEliTdMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDMtMjJUMDg6NDc6NDArMDA6MDA4P/VvAAAAAElFTkSuQmCC"; - }, - registryEditor() { - return "data:image/png;base64,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"; - }, - powerOptions() { - return "data:image/png;base64,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"; - }, - perfmon() { - return "data:image/png;base64,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"; - }, - computerManagement() { - return "data:image/png;base64,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"; - }, -}; diff --git a/src/renderer/views/search/Index.vue b/src/renderer/views/search/Index.vue deleted file mode 100644 index c1f9761..0000000 --- a/src/renderer/views/search/Index.vue +++ /dev/null @@ -1,356 +0,0 @@ - - - - - diff --git a/src/renderer/views/search/Window.vue b/src/renderer/views/search/Window.vue deleted file mode 100644 index 0da1aa8..0000000 --- a/src/renderer/views/search/Window.vue +++ /dev/null @@ -1,806 +0,0 @@ - - - - diff --git a/src/renderer/views/search/js/index.js b/src/renderer/views/search/js/index.js deleted file mode 100644 index 201fc09..0000000 --- a/src/renderer/views/search/js/index.js +++ /dev/null @@ -1,149 +0,0 @@ -import PinyinMatch from "pinyin-match"; -import CommonJS from "@/common"; -import ItemJS from "@/views/item/js/index"; -import ClassificationJS from "@/views/classification/js/index"; -import store from "@/store"; - -/** - * 判断是否有中文 - * @param str - * @returns {boolean} - */ -function hasChinese(str) { - const pattern = /[\u4e00-\u9fa5]/; // 中文字符的 Unicode 范围 - return pattern.test(str); -} - -/** - * 判断是否是URL - * @param str - * @returns {boolean} - */ -function hasURL(str) { - const pattern = /[a-zA-Z]+:\/\/[^\\s]*/; - return pattern.test(str); -} - -export default { - convertToMap(list) { - let itemMap = new Map(); - // 将数据转为Map - for (let i of list) { - if (i.excludeSearch == null || !i.excludeSearch) { - if (!CommonJS.arrayIsEmpty(i.childList)) { - for (let c of i.childList) { - if (c.excludeSearch == null || !c.excludeSearch) { - this.setMap(itemMap, c.itemList, i.id + "-" + c.id, ClassificationJS.getIcon(i) + i.name + "/" + ClassificationJS.getIcon(c) + c.name); - } - } - } else { - this.setMap(itemMap, i.itemList, i.id, ClassificationJS.getIcon(i) + i.name); - } - } - } - return itemMap; - }, - /** - * 放数据 - */ - setMap(itemMap, itemList, classificationIds, classificationName) { - if (!CommonJS.arrayIsEmpty(itemList)) { - for (let t of itemList) { - // 设置信息 - let item = JSON.parse(JSON.stringify(t)); - item.classificationName = classificationName; - item.classificationIds = classificationIds; - // 名称 - let name = ItemJS.getName(item.name).toLowerCase(); - let list = itemMap.get(name); - if (CommonJS.arrayIsEmpty(list)) { - list = []; - } - list.push(item); - itemMap.set(name, list); - // 缩写 - if (!CommonJS.strIsEmpty(t.abbr)) { - let abbr = t.abbr.toLowerCase(); - let abbrList = itemMap.get(abbr); - if (CommonJS.arrayIsEmpty(abbrList)) { - abbrList = []; - } - abbrList.push(item); - itemMap.set(abbr, abbrList); - } - // 网址 - if (t.type == 2 && !CommonJS.strIsEmpty(t.url)) { - let url = t.url.toLowerCase(); - let urlList = itemMap.get(url); - if (CommonJS.arrayIsEmpty(urlList)) { - urlList = []; - } - urlList.push(item); - itemMap.set(url, urlList); - } - // 备注搜索 - if (store.state.setting.quickSearch.matchingConditionsRemark) { - if (!CommonJS.strIsEmpty(t.remark)) { - let remark = t.remark.toLowerCase(); - let remarkList = itemMap.get(remark); - if (CommonJS.arrayIsEmpty(remarkList)) { - remarkList = []; - } - remarkList.push(item); - itemMap.set(remark, remarkList); - } - } - } - } - }, - /** - * 搜索 - */ - search(name, itemMap) { - let resultList = []; - if (!CommonJS.strIsEmpty(name)) { - let n = name.toLowerCase(); - for (let [key, value] of itemMap.entries()) { - let flag = false; - if (hasURL(key)) { - // 网址 - flag = key.indexOf(n) >= 0; - } else if (hasChinese(key)) { - // 包含中文 - let match = PinyinMatch.match(key, n); - if (match != null && match.length > 0) { - flag = true; - } - } else { - // 其他情况 - flag = key.indexOf(n) >= 0; - } - if (flag) { - for (let v of value) { - let flag = false; - if (v.id != null && v.classificationIds != null) { - for (let r of resultList) { - if (v.classificationIds == r.classificationIds && v.id == r.id) { - flag = true; - break; - } - } - } else { - for (let r of resultList) { - if (v.name == r.name) { - flag = true; - break; - } - } - } - if (!flag) { - resultList.push(v); - } - } - } - } - } - resultList.sort((a, b) => a.name.localeCompare(b.name)); - return resultList; - }, -}; diff --git a/src/renderer/views/setting/Index.vue b/src/renderer/views/setting/Index.vue deleted file mode 100644 index 7667fec..0000000 --- a/src/renderer/views/setting/Index.vue +++ /dev/null @@ -1,1992 +0,0 @@ - - - - - diff --git a/src/renderer/views/setting/js/index.js b/src/renderer/views/setting/js/index.js deleted file mode 100644 index 9303021..0000000 --- a/src/renderer/views/setting/js/index.js +++ /dev/null @@ -1,27 +0,0 @@ -const { ipcRenderer } = window.require("electron"); - -export default { - /** - * 重新设置 - */ - resetSetting(setting) { - // 开机启动 - ipcRenderer.send("setAutoLaunch", setting.general.startup); - // 隐藏托盘图标 - ipcRenderer.send("setTray", !setting.general.hideTray); - // 永远置顶 - ipcRenderer.send("setAlwaysTop", setting.general.alwaysTop); - // 锁定尺寸 - ipcRenderer.send("setResize", !setting.general.lockSize); - // 固定位置 - ipcRenderer.send("setFixedPosition", [!setting.general.fixedPosition, setting.general.alwaysCenter]); - // 永远居中 - ipcRenderer.send("setAlwaysCenter", [setting.general.alwaysCenter, !setting.general.fixedPosition, setting.general.alwaysCenter]); - // 隐藏任务栏 - ipcRenderer.send("setHideTaskbar", setting.general.hideTaskbar); - // 设置透明度 - ipcRenderer.send("setOpacity", setting.appearance.transparency); - // 设置快捷键 - ipcRenderer.send("setShortcutKey", JSON.stringify(setting)); - }, -}; diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..6be5a37 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,77 @@ +import { + createRouter, + createWebHashHistory, + createWebHistory, + RouteRecordRaw, +} from "vue-router"; + +let prod = import.meta.env.PROD; + +const routes: Array = [ + { + path: "/", + component: () => import("../pages/index/Index.vue"), + }, + { + name: "SettingIndex", + path: "/Setting/Index", + component: () => import("../pages/setting/Index.vue"), + }, + { + name: "ClassificationAddEdit", + path: "/Classification/AddEdit", + component: () => import("../pages/classification/AddEdit.vue"), + }, + { + name: "ClassificationSetIcon", + path: "/Classification/SetIcon", + component: () => import("../pages/classification/SetIcon.vue"), + }, + { + name: "ClassificationAssociateFolder", + path: "/Classification/AssociateFolder", + component: () => import("../pages/classification/AssociateFolder.vue"), + }, + { + name: "ClassificationAggregate", + path: "/Classification/Aggregate", + component: () => import("../pages/classification/Aggregate.vue"), + }, + { + name: "ItemAddEdit", + path: "/Item/AddEdit", + component: () => import("../pages/item/AddEdit.vue"), + }, + { + name: "ItemNetworkIcon", + path: "/Item/NetworkIcon", + component: () => import("../pages/item/NetworkIcon.vue"), + }, + { + name: "ItemSVGIcon", + path: "/Item/SVGIcon", + component: () => import("../pages/item/SVGIcon.vue"), + }, + { + name: "QuickSearch", + path: "/Search/QuickSearch", + component: () => import("../pages/search/QuickSearch.vue"), + }, + { + name: "About", + path: "/About", + component: () => import("../pages/about/Index.vue"), + }, + { + name: "BackupRestoreData", + path: "/Data/BackupRestore", + component: () => import("../pages/data/BackupRestore.vue"), + }, +]; + +const router = createRouter({ + history: prod ? createWebHashHistory() : createWebHistory(), + routes, +}); + +export default router; diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..42679dd --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,79 @@ +import { defineStore } from "pinia"; +import { Setting } from "../../types/setting"; +import { Classification } from "../../types/classification"; +import { getSetting } from "../../commons/utils/setting"; +import { Item } from "../../types/item"; +import { getLanguage } from "../../commons/data/languages"; + +export interface State { + // 设置 + setting: Setting; + // 分类列表 + classificationList: Array; + // 项目数据 + itemMap: Map>; + // 当前选中的父级分类ID + selectedClassificationParentId: number | null; + // 当前选中的子级分类ID + selectedClassificationChildId: number | null; + // 鼠标悬浮在分类上时的分类ID + mouseoverClassificationId: number | null; + // 分类是否在拖拽中 + classificationSorting: boolean; + // 滚轮切换分类事件 + classificationWheelEvent: WheelEvent | null; + // 项目是否在拖拽中 + itemSorting: boolean; + // 项目是否再拖出中 + itemDragOut: boolean; + // 项目拖出数据 + itemDragOutData: Item | null; + // 项目批量操作 + itemBatchOperation: boolean; + // 项目批量操作存储已选中项目 + itemBatchOperationDataArray: Array; + // 项目区域右键ID + itemRightMenuItemId: number | null; + // 无效项目 + invalidItemIdList: Array; + // 背景图 + backgroundImage: string | null; + // 重新加载项目列表标识 + reloadItemList: boolean; + // 搜索显示/隐藏标识 + search: boolean; + // 搜索功能项目区域右键ID + searchItemRightMenuItemId: number | null; + // 快速搜索功能项目区域右键ID + quickSearchItemRightMenuItemId: number | null; + // 当前语言 + language: any; +} + +export const useMainStore = defineStore("main", { + state: (): State => { + return { + setting: getSetting(null), + classificationList: [], + itemMap: new Map(), + selectedClassificationParentId: null, + selectedClassificationChildId: null, + mouseoverClassificationId: null, + classificationSorting: false, + classificationWheelEvent: null, + itemSorting: false, + itemDragOut: false, + itemDragOutData: null, + itemBatchOperation: false, + itemBatchOperationDataArray: [], + itemRightMenuItemId: null, + invalidItemIdList: [], + backgroundImage: null, + reloadItemList: false, + search: false, + searchItemRightMenuItemId: null, + quickSearchItemRightMenuItemId: null, + language: getLanguage(null), + }; + }, +}); diff --git a/src/renderer/style/main.css b/src/styles/style.css similarity index 61% rename from src/renderer/style/main.css rename to src/styles/style.css index 037e223..57d56e3 100644 --- a/src/renderer/style/main.css +++ b/src/styles/style.css @@ -1,5 +1,46 @@ body { font-family: system-ui; + margin: 0; + user-select: none; + -webkit-user-select: none; + cursor: default; + overflow: hidden; +} + +h1 { + font-weight: 400; + margin: 0; +} + +ul, +p { + margin: 0; + padding: 0; +} + +li { + list-style: none; +} + +:focus { + outline: none; +} + +input[type="range"] { + -webkit-appearance: none; + appearance: none; + background: transparent; + cursor: pointer; +} + +input[type="range"]:focus { + outline: none; +} + +input { + font-family: system-ui; + padding: 0; + border: none; } input:focus, @@ -19,14 +60,6 @@ input::-webkit-inner-spin-button { -webkit-appearance: none; } -input[type="number"] { - -moz-appearance: textfield; -} - -body { - overflow: hidden; -} - .app-region-drag { -webkit-app-region: drag; } @@ -35,25 +68,12 @@ body { -webkit-app-region: no-drag; } -.popup-header { - cursor: move; -} - -.right-menu.visible { - transform: scale(1); - transition: transform ease-in-out; -} - .simplebar-track.simplebar-vertical, .simplebar-track.simplebar-horizontal { width: 8px !important; top: -2px !important; } -textarea::-webkit-scrollbar { - width: 7px; -} - .item-name-tile-2 { word-break: break-all; overflow: hidden; @@ -85,3 +105,19 @@ textarea::-webkit-scrollbar { word-break: break-all; overflow: hidden; } + +.item-name-list { + word-break: break-all; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 1; + line-clamp: 1; + -webkit-box-orient: vertical; +} + +.item-name-list-no-ellipsis { + max-height: 20px; + word-break: break-all; + overflow: hidden; +} diff --git a/src/renderer/style/tailwind.css b/src/styles/tailwind.css similarity index 64% rename from src/renderer/style/tailwind.css rename to src/styles/tailwind.css index b5c61c9..bd6213e 100644 --- a/src/renderer/style/tailwind.css +++ b/src/styles/tailwind.css @@ -1,3 +1,3 @@ @tailwind base; @tailwind components; -@tailwind utilities; +@tailwind utilities; \ No newline at end of file diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..b4d9b23 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,243 @@ +import SimpleBar from "simplebar"; + +/** + * 组装URL + * @param url + * @param paramsMap + * @returns + */ +function getURL(url: string, paramsMap: Map): string { + let res = url; + if (paramsMap.size > 0) { + res += "?"; + let params: string | null = null; + for (let [key, value] of paramsMap.entries()) { + if (params) { + params += "&" + key + "=" + value; + } else { + params = key + "=" + value; + } + } + res += params; + } + return res; +} + +/** + * 滚动条置顶 + * @param simpleBar + */ +function scrollToTop(simpleBar: SimpleBar | null) { + if (simpleBar) { + let scroll = simpleBar.getScrollElement(); + if (scroll) { + scroll.scrollTop = 0; + } + } +} + +/** + * 寻找父级 + * @param e + * @param className + */ +function findElement(target: any, className: string) { + if (target && target.classList) { + let flag = false; + for (const clazz of target.classList) { + if (clazz === className) { + flag = true; + break; + } + } + if (flag) { + return target; + } else { + if (target.parentElement) { + return findElement(target.parentElement, className); + } + } + } + return null; +} + +/** + * 取消监听 + * @param arr + */ +function unlistens(arr: Array) { + for (const func of arr) { + if (func) { + func(); + } + } +} + +/** + * 获取新ID + */ +function getNewId(list: Array) { + if (list == null || list.length == 0) { + return 1; + } + // 获取ID列表 + let idList = list.map((item) => item.id); + // 获取最大ID + let maxId = Math.max(...idList); + // +1 + return ++maxId; +} + +/** + * 校验KeyCode + * @param e + * @returns + */ +function checkKeyCode(e: any) { + // (e.keyCode >= 48 && e.keyCode <= 57) 键盘上方数字 + // (e.keyCode >= 65 && e.keyCode <= 90) 键盘字母a-z不区分大小写 + // (e.keyCode >= 96 && e.keyCode <= 111) 数字键盘 + // (e.keyCode >= 112 && e.keyCode <= 135) 键盘F1到F24 + // e.keyCode == 8 退格键 + // e.keyCode == 9 Tab + // e.keyCode == 12 Clear + // e.keyCode == 13 回车 + // e.keyCode == 16 Shift + // e.keyCode == 17 Control + // e.keyCode == 18 Alt + // e.keyCode == 20 Cape Lock 大小写 + // e.keyCode == 27 Esc + // (e.keyCode >= 32 && e.keyCode <= 40) 控制键盘区 + // e.keyCode == 45 Insert + // e.keyCode == 46 Delete + // e.keyCode == 144 Num Lock + // (e.keyCode >= 186 && e.keyCode <= 192) 符号;: =+ ,< -_ .> /? `~ + // (e.keyCode >= 219 && e.keyCode <= 222) 符号[{ \| ]} '" + if ( + (e.keyCode >= 48 && e.keyCode <= 57) || + (e.keyCode >= 65 && e.keyCode <= 90) || + (e.keyCode >= 96 && e.keyCode <= 111) || + (e.keyCode >= 112 && e.keyCode <= 135) || + e.keyCode === 8 || + e.keyCode === 9 || + e.keyCode === 12 || + e.keyCode === 13 || + e.keyCode === 16 || + e.keyCode === 17 || + e.keyCode === 18 || + e.keyCode === 20 || + e.keyCode === 27 || + (e.keyCode >= 32 && e.keyCode <= 40) || + e.keyCode === 45 || + e.keyCode === 46 || + e.keyCode === 144 || + (e.keyCode >= 186 && e.keyCode <= 192) || + (e.keyCode >= 219 && e.keyCode <= 222) + ) { + return true; + } + return false; +} + +/** + * 获取快捷键 + * @param e + * @param originalVal + * @param preventDefault + * @returns + */ +function getShortcutKey( + e: any, + originalVal: string | null, + preventDefault: boolean +) { + if (preventDefault) { + e.preventDefault(); + } + if (checkKeyCode(e)) { + // Esc + if (e.keyCode === 27) { + return originalVal; + } + if (e.keyCode === 8) { + return null; + } else { + let keys = []; + // 如果是组合键 + if (e.ctrlKey && e.keyCode != 17) { + keys.push("Ctrl + "); + } + if (e.altKey && e.keyCode != 18) { + keys.push("Alt + "); + } + if (e.metaKey && e.keyCode != 91) { + keys.push("Win + "); + } + if (e.shiftKey && e.keyCode != 16) { + keys.push("Shift + "); + } + // 非组合键情况,按键是ctrl alt shift win + if ( + e.keyCode === 16 || + e.keyCode === 17 || + e.keyCode === 18 || + e.keyCode === 91 + ) { + let key; + if (e.ctrlKey && e.keyCode === 17) { + key = "Ctrl + "; + } + if (e.altKey && e.keyCode === 18) { + key = "Alt + "; + } + if (e.metaKey && e.keyCode === 91) { + key = "Win + "; + } + if (e.shiftKey && e.keyCode === 16) { + key = "Shift + "; + } + keys.push(key); + } else { + // 排序 + keys.sort((a, b) => a.localeCompare(b)); + // 其他 + if (e.key.toUpperCase() === "ENTER") { + keys.push("Enter"); + } else { + if (e.keyCode === 32) { + keys.push("Space"); + } else if (e.keyCode >= 96 && e.keyCode <= 105) { + keys.push("Num" + e.key); + } else if (e.keyCode >= 106 && e.keyCode <= 111) { + if (e.keyCode === 106) { + keys.push("NumMult"); + } else if (e.keyCode === 107) { + keys.push("NumAdd"); + } else if (e.keyCode === 109) { + keys.push("NumSub"); + } else if (e.keyCode === 110) { + keys.push("NumDec"); + } else if (e.keyCode === 111) { + keys.push("NumDiv"); + } + } else { + keys.push(e.key.replace("Arrow", "").toUpperCase()); + } + } + } + return keys.join(""); + } + } else { + return null; + } +} + +export { + getURL, + scrollToTop, + findElement, + unlistens, + getNewId, + getShortcutKey, + checkKeyCode, +}; diff --git a/src/utils/localSetting.ts b/src/utils/localSetting.ts new file mode 100644 index 0000000..1ae17e5 --- /dev/null +++ b/src/utils/localSetting.ts @@ -0,0 +1,39 @@ +/** + * 获取本地配置 + */ +function getLocalSetting(key: string): T | null { + let value = localStorage.getItem(key); + if (!value) { + return null; + } else { + return value as T; + } +} + +/** + * 设置本地配置 + */ +function setLocalSetting(key: string, value: string) { + localStorage.setItem(key, value); +} + +/** + * 删除本地配置 + */ +function deleteLocalSetting(key: string) { + localStorage.removeItem(key); +} + +/** + * 清空本地配置 + */ +function clearLocalSetting() { + localStorage.clear(); +} + +export { + getLocalSetting, + setLocalSetting, + deleteLocalSetting, + clearLocalSetting, +}; diff --git a/src/utils/shortcutKey.ts b/src/utils/shortcutKey.ts new file mode 100644 index 0000000..7ae70d0 --- /dev/null +++ b/src/utils/shortcutKey.ts @@ -0,0 +1,161 @@ +import { Classification } from "../../types/classification"; +import { Setting } from "../../types/setting"; +import { getItemName } from "../../commons/utils/common"; +import { convertClassificationList } from "../pages/classification/js"; +import { convertItemList } from "../pages/item/js"; +import { useMainStore } from "../store"; +// pinia +const store = useMainStore(); + +/** + * 校验快捷键 + * @param oldShortcutKey + * @param shortcutKey + * @param window + * @returns + */ +async function checkShortcutKey( + setting: Setting, + oldShortcutKey: string | null, + shortcutKey: string, + windowName: string, + type: + | "Classification" + | "Item" + | "GeneralShowHide" + | "GeneralSearch" + | "QuickSearch" +): Promise { + // 校验完整性 + if (!checkShortcutKeyComplete(shortcutKey)) { + window.api.showErrorMessageBox( + windowName, + store.language.shortcutKeyPrompt1 + ); + return false; + } + // 判断是否和旧快捷键相同,相同的话跳过 + if (oldShortcutKey && oldShortcutKey === shortcutKey) { + return true; + } + // 校验快捷键重复 + let message = await checkShortcutKeyDuplicate(setting, shortcutKey, type); + if (message) { + window.api.showErrorMessageBox(windowName, message); + return false; + } + return true; +} + +/** + * 校验快捷键完整 + */ +function checkShortcutKeyComplete(shortcutKey: string): boolean { + if (shortcutKey.trim() !== "") { + let flag = false; + let split = shortcutKey.split("+"); + for (let s of split) { + if (s.trim() === "") { + return false; + } + if ( + s.trim() !== "Ctrl" && + s.trim() !== "Alt" && + s.trim() !== "Shift" && + s.trim() !== "Win" + ) { + flag = true; + } + } + return flag; + } + return false; +} + +/** + * 校验快捷键重复 + * @param setting + * @param shortcutKey + * @param type + * @returns + */ +async function checkShortcutKeyDuplicate( + setting: Setting, + shortcutKey: string, + type: + | "Classification" + | "Item" + | "GeneralShowHide" + | "GeneralSearch" + | "QuickSearch" +): Promise { + // 查询分类 + let classificationList: Array = convertClassificationList( + window.classification.list() + ); + // 查询项目 + let itemMap = convertItemList(window.item.simpleList()); + // 校验 + for (const parent of classificationList) { + // 父级分类 + if (parent.shortcutKey === shortcutKey) { + return store.language.shortcutKeyPrompt2(parent.name); + } + // 项目 + let itemList = itemMap.get(parent.id); + if (!itemList) { + itemList = []; + } + for (const item of itemList) { + if (item.shortcutKey === shortcutKey) { + return store.language.shortcutKeyPrompt3( + parent.name + "-" + getItemName(item.name) + ); + } + } + // 有子分类 + if (parent.childList) { + for (const child of parent.childList) { + if (child.shortcutKey === shortcutKey) { + return store.language.shortcutKeyPrompt2( + parent.name + "-" + child.name + ); + } + // 项目 + let itemList = itemMap.get(child.id); + if (!itemList) { + itemList = []; + } + for (const item of itemList) { + if (item.shortcutKey === shortcutKey) { + return store.language.shortcutKeyPrompt3( + parent.name + "-" + child.name + "-" + getItemName(item.name) + ); + } + } + } + } + } + // 校验窗口显示/隐藏快捷键 + if ( + type !== "GeneralShowHide" && + shortcutKey === setting.general.showHideShortcutKey + ) { + return store.language.shortcutKeyPrompt4; + } + if ( + type !== "GeneralSearch" && + shortcutKey === setting.general.searchShowHideShortcutKey + ) { + return store.language.shortcutKeyPrompt5; + } + if ( + type !== "QuickSearch" && + shortcutKey === setting.quickSearch.showHideShortcutKey + ) { + return store.language.shortcutKeyPrompt6; + } + return null; +} + +export { checkShortcutKey }; diff --git a/src/utils/style.ts b/src/utils/style.ts new file mode 100644 index 0000000..31b0617 --- /dev/null +++ b/src/utils/style.ts @@ -0,0 +1,141 @@ +import { Setting } from "../../types/setting"; + +/** + * 根据类名获取元素 + * @param e + * @param className + * @returns + */ +function getClassElement(e: any, className: string) { + let target: any = null; + if (e instanceof HTMLElement) { + target = e; + } else { + const paths = e.composedPath && e.composedPath(); + for (let i = 0; i < paths.length; i++) { + if (paths[i].classList && paths[i].classList.length > 0) { + for (let clazz of paths[i].classList) { + if (clazz === className) { + target = paths[i]; + break; + } + } + } + } + } + return target; +} + +/** + * 根据ID获取元素 + * @param e + * @param className + * @returns + */ +function getIdElement(e: any, id: string) { + let target: any = null; + if (e instanceof HTMLElement) { + target = e; + } else { + const paths = e.composedPath && e.composedPath(); + for (let i = 0; i < paths.length; i++) { + if (paths[i].id === id) { + target = paths[i]; + break; + } + } + } + return target; +} + +/** + * 设置样式 + * @param e + * @param className + * @param style + */ +function setStyle(e: any, className: string, style: Map) { + let target = getClassElement(e, className); + if (target) { + for (const [key, value] of style) { + target.style.setProperty(key, value); + } + } +} + +/** + * 删除样式 + * @param e + * @param className + * @param style + */ +function removeStyle( + e: any, + className: string, + style: Map +) { + let target = getClassElement(e, className); + if (target) { + for (const [key, value] of style) { + if (value) { + target.style.setProperty(key, value); + } else { + target.style.removeProperty(key); + } + } + } +} + +/** + * 十六进制转RGBA的函数 + * @param hex + * @param a + * @returns + */ +function hexToRGBA(hex: string, a: number | null) { + // 去掉井号 + let hexValue = hex.replace("#", ""); + // 将六位颜色值转为八位 + if (hexValue.length === 6) { + hexValue = hexValue + "ff"; + } + // 获取rgba各分量值 + const red = parseInt(hexValue.substring(0, 2), 16); + const green = parseInt(hexValue.substring(2, 4), 16); + const blue = parseInt(hexValue.substring(4, 6), 16); + const alpha = parseInt(hexValue.substring(6, 8), 16) / 255; + // 返回 + return `rgba(${red}, ${green}, ${blue}, ${!a ? alpha : a})`; +} + +/** + * 设置图标样式 + * @param e + * @param className + */ +function setIconStyle(e: any, className: string, setting: Setting) { + setStyle( + e, + className, + new Map([["color", hexToRGBA(setting.appearance.theme.mainFontColor, 0.8)]]) + ); +} + +/** + * 删除图标样式 + * @param e + * @param className + */ +function removeIconStyle(e: any, className: string) { + removeStyle(e, className, new Map([["color", null]])); +} + +export { + getClassElement, + getIdElement, + setStyle, + removeStyle, + hexToRGBA, + setIconStyle, + removeIconStyle, +}; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..323c78a --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/tailwind.config.js b/tailwind.config.js index 8a8e35b..7065373 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,14 +1,11 @@ +/** @type {import('tailwindcss').Config} */ module.exports = { - content: [ - "./src/**/*.{vue,js,ts,jsx,tsx}", - ], + corePlugins: { + preflight: false, + }, + content: ["index.html", "./src/**/*.{html,js,ts,jsx,tsx,vue}"], theme: { extend: {}, }, - variants: { - extend: {}, - }, - plugins: [require('@tailwindcss/forms')({ - strategy: 'class', // only generate classes - })], -} + plugins: [], +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7dc63c1 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "strict": true, + "jsx": "preserve", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "skipLibCheck": true, + "noEmit": true + }, + "include": [ + "src", + "commons", + "types/classification.d.ts", + "types/common.d.ts", + "types/item.d.ts", + "types/setting.ts" + ], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..d7bac39 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts", + "package.json", + "electron", + "commons", + "types/classification.d.ts", + "types/common.d.ts", + "types/item.d.ts", + "types/setting.d.ts" + ] +} diff --git a/types/classification.d.ts b/types/classification.d.ts new file mode 100644 index 0000000..547b488 --- /dev/null +++ b/types/classification.d.ts @@ -0,0 +1,47 @@ +// 分类 +export interface Classification { + // ID + id: number; + // 父级ID + parentId: number | null; + // 名称 + name: string | null; + // 类型 0:普通分类 1:关联文件夹 2:聚合分类 + type: number; + // 数据 + data: ClassificationData; + // 快捷键 + shortcutKey: string | null; + // 全局快捷键 + globalShortcutKey: boolean; + // 顺序 + order: number; + // 子级分类 + childList: Array | null; +} + +// 分类数据 +export interface ClassificationData { + // 图标 + icon: string | null; + // 关联文件夹路径 + associateFolderPath: string | null; + // 关联文件夹隐藏项 + associateFolderHiddenItems: string | null; + // 项目布局 + itemLayout: "default" | "tile" | "list"; + // 项目排序 + itemSort: "default" | "initial" | "openNumber" | "lastOpen"; + // 项目列数 + itemColumnNumber: number | null; + // 项目图标大小 + itemIconSize: number | null; + // 只显示... + itemShowOnly: "default" | "file" | "folder"; + // 固定分类 + fixed: boolean; + // 聚合分类项目数量 + aggregateItemCount: number; + // 排除搜索 + excludeSearch: boolean; +} diff --git a/types/common.d.ts b/types/common.d.ts new file mode 100644 index 0000000..ec23c28 --- /dev/null +++ b/types/common.d.ts @@ -0,0 +1,13 @@ +// 快捷方式信息 +export interface ShortcutInfo { + target: string | null; + arguments: string | null; +} + +// 返回结果 +export interface Result { + status: boolean; + message: string | null; + icon: string | null; + name: string | null; +} diff --git a/types/item.d.ts b/types/item.d.ts new file mode 100644 index 0000000..ac92ab0 --- /dev/null +++ b/types/item.d.ts @@ -0,0 +1,75 @@ +// 通用项目 +export interface CommonItem { + // id + id: number; + // 名称 + name: string | null; + // 数据 + data: CommonItemData; + // 顺序 + order: number; +} + +// 通用项目数据 +export interface CommonItemData { + // 目标 + target: string | null; + // 参数 + params: string | null; + // 图标 + icon: string | null; + // html图标 + htmlIcon: string | null; +} + +// 项目 +export interface Item { + // id + id: number; + // 分类ID + classificationId: number; + // 名称 + name: string | null; + // 类型 0:文件 1:文件夹 2:网址 3:系统 4:Appx 5:多项目 + type: number; + // 数据 + data: ItemData; + // 快捷键 + shortcutKey: string | null; + // 全局快捷键 + globalShortcutKey: boolean; + // 顺序 + order: number; +} + +// 项目数据 +export interface ItemData { + // 起始位置 + startLocation: string | null; + // 目标 + target: string | null; + // 参数 + params: string | null; + // 以管理员身份运行 + runAsAdmin: boolean; + // 图标 + icon: string | null; + // html图标 + htmlIcon: string | null; + // 备注 + remark: string | null; + // 图标背景 + iconBackgroundColor: boolean; + // 固定图标 + fixedIcon: boolean; + // 打开次数 + openNumber: number; + // 最后打开时间 + lastOpen: number; + // 快速搜索-打开次数 + quickSearchOpenNumber: number; + // 快速搜索-最后打开时间 + quickSearchLastOpen: number; + // 多项目时间间隔(毫秒) + multiItemsTimeInterval: number; +} diff --git a/types/setting.d.ts b/types/setting.d.ts new file mode 100644 index 0000000..724e21e --- /dev/null +++ b/types/setting.d.ts @@ -0,0 +1,239 @@ +// 通用 +export interface General { + // 开机启动 + startup: boolean; + // 启动后最小化到系统托盘 + startupTray: boolean; + // 快捷键显示/隐藏 + showHideShortcutKey: string | null; + // 语言 + language: string; + // 永远置顶 + alwaysTop: boolean; + // 边缘吸附 + edgeAdsorb: boolean; + // 停靠在桌面边缘时自动隐藏 + edgeAutoHide: boolean; + // 锁定尺寸 + lockSize: boolean; + // 失去焦点后隐藏 + hideLoseFocus: boolean; + // 隐藏托盘图标 + hideTray: boolean; + // 固定位置 + fixedPosition: boolean; + // 永远居中 + alwaysCenter: boolean; + // 中间单击显示/隐藏 + showHideMouseWheelClick: boolean; + // 显示时跟随鼠标位置 + showFollowMousePosition: boolean; + // 勿扰模式 + notDisturb: boolean; + // 双击任务栏显示/隐藏 + showHideDoubleClickTaskbar: boolean; + // 延迟显示(毫秒) + delayDisplayMs: number; + // 延迟隐藏(毫秒) + delayHideMs: number; + // 显示窗口时将输入法切换为英文模式 + switchEnglish: boolean; + // 搜索显示/隐藏快捷键 + searchShowHideShortcutKey: string | null; + // 检查更新 + checkUpdates: boolean; +} + +// 外观 +export interface Appearance { + // 主题 + theme: Theme; + // 透明度 + transparency: number; + // 背景图 + backgroundImage: string | null; + // 背景图透明 + backgroundImageTransparency: number; + // 背景图模式 + backgroundImageMode: string; + // 背景图定位 + backgroundImagePosition: string; + // 字体阴影 + fontShadow: boolean; + // 字体阴影颜色 + fontShadowColor: string; + // 窗口圆角 + windowRounded: boolean; + // 标题 + title: string; +} + +// 主题 +export interface Theme { + // 名称 + name: string; + // 字体主颜色 + mainFontColor: string; + // 字体次颜色 + secondFontColor: string; + // 背景主颜色 + mainBackgroundColor: string; + // 背景次颜色 + secondBackgroundColor: string; + // 边框颜色 + borderColor: string; +} + +// 分类 +export interface Classification { + // 宽度 + width: number; + // 布局 left top right + layout: string; + // 鼠标悬停切换 + mouseHover: boolean; + // 悬停毫秒 + mouseHoverMs: number; + // 滚轮切换 + mouseWheel: boolean; + // 记住选择状态 + rememberSelectionState: boolean; + // 名称对齐 left center + nameAlign: string; + // 模式 normal icon + mode: string; + // 项目列表滚动到底部或顶部时自动切换分类 + autoSwitchClassification: boolean; + // 隐藏窗口时折叠子分类 + hideWindowCollapseSubClassification: boolean; + // 切换分类时收起其他子分类 + switchClassificationCollapseOtherSubClassification: boolean; +} + +// 子分类 +export interface SubClassification { + // 名称字体(项目区域) + itemAreaNameFontSize: number; + // 名称粗细(项目区域) + itemAreaNameFontWeight: number; + // 名称字体行高(项目区域) + itemAreaNameFontLineHeight: number; +} + +// 项目 +export interface Item { + // 布局 tile list + layout: string; + // 图标大小 + iconSize: number; + // 双击打开项目 + doubleClickOpen: boolean; + // 打开后隐藏主界面 + openAfterHideMainInterface: boolean; + // 从程序外拖动文件到项目图标上时用此项目打开文件 + useItemOpen: boolean; + // 记录打开次数 + openNumber: boolean; + // 隐藏项目名称 + hideItemName: boolean; + // 隐藏省略号 + hideEllipsis: boolean; + // 项目名称行数 + itemNameRowCount: number; + // 宽度 + width: number; + // 列数 单列多列 + columnNumber: number; + // 检测无效项目 + checkInvalidItem: boolean; + // 字体大小 + fontSize: number; + // 字体粗细 + fontWeight: number; + // 字体行高 + fontLineHeight: number; +} + +// 快速搜索 +export interface QuickSearch { + // 开启 + enable: boolean; + // 快捷键 + showHideShortcutKey: string | null; + // 打开快捷键 numberKey ctrlNumberKey altNumberKey + openShortcutKey: string; + // 失去焦点后隐藏 + hideLoseFocus: boolean; + // 仅剩一项时立即打开 + openNow: boolean; + // 显示历史记录 + showHistory: boolean; + // 历史记录排序 lastOpen openNumber + showHistorySort: string; + // 从程序外拖动文件到项目图标上时用此项目打开文件 + useItemOpen: boolean; + // 打开后隐藏快速搜索窗口 + openAfterHideQuickSearchWindow: boolean; + // 匹配条件:备注 + matchConditionsRemark: boolean; +} + +// 网络搜索 +export interface WebSearch { + // 模式 0:冒号 + 关键字 + 空格 1:关键字 + 空格 + mode: number; + // 搜索源 + searchSourceList: Array; +} + +// 网络搜索源 +export interface WebSearchSource { + // ID + id: number; + // 关键字 + keyword: string; + // 名称 + name: string; + // URL + url: string; + // 描述 + description: string | null; +} + +// 网络 +export interface Network { + // 使用代理 + useProxy: boolean; + // 代理信息 + proxy: Proxy; +} + +// 代理 +export interface Proxy { + // address + address: string; + // 用户名 + username: string | null; + // 密码 + password: string | null; +} + +// 设置 +export interface Setting { + // 常规 + general: General; + // 外观 + appearance: Appearance; + // 分类 + classification: Classification; + // 子分类 + subClassification: SubClassification; + // 项目 + item: Item; + // 快速搜索 + quickSearch: QuickSearch; + // 网络搜索 + webSearch: WebSearch; + // 网络 + network: Network; +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..c1164b0 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,153 @@ +import { + rmSync, + mkdirSync, + existsSync, + copyFileSync, + writeFileSync, +} from "node:fs"; +import { resolve, join } from "node:path"; +import { type Plugin, defineConfig, normalizePath } from "vite"; +import vue from "@vitejs/plugin-vue"; +import electron from "vite-plugin-electron"; +import { notBundle } from "vite-plugin-electron/plugin"; +import pkg from "./package.json"; + +// https://vitejs.dev/config/ +export default defineConfig(({ command }) => { + rmSync("dist-electron", { recursive: true, force: true }); + const isServe = command === "serve"; + const isBuild = command === "build"; + const sourcemap = isServe || !!process.env.VSCODE_DEBUG; + return { + plugins: [ + vue(), + electron([ + { + entry: "electron/main/index.ts", + onstart({ startup }) { + if (process.env.VSCODE_DEBUG) { + console.log("[startup] Electron App"); + } else { + startup(); + } + }, + vite: { + build: { + sourcemap, + minify: isBuild, + outDir: "dist-electron/main", + commonjsOptions: { + ignoreDynamicRequires: true, + }, + rollupOptions: { + external: [], + }, + }, + plugins: [isServe && notBundle()], + }, + }, + { + entry: "electron/preload/index.ts", + onstart({ reload }) { + reload(); + }, + vite: { + build: { + sourcemap: sourcemap ? "inline" : undefined, + minify: isBuild, + outDir: "dist-electron/preload", + rollupOptions: { + external: [], + }, + }, + plugins: [isServe && notBundle()], + }, + }, + { + entry: "electron/main/worker.ts", + onstart({ reload }) { + reload(); + }, + vite: { + build: { + sourcemap: sourcemap ? "inline" : undefined, + minify: isBuild, + outDir: "dist-electron/main", + commonjsOptions: { + ignoreDynamicRequires: true, + }, + rollupOptions: { + external: [], + }, + }, + plugins: [isServe && notBundle()], + }, + }, + ]), + bindingSqlite3(), + ], + server: + process.env.VSCODE_DEBUG && + (() => { + const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL); + return { + host: url.hostname, + port: +url.port, + }; + })(), + clearScreen: false, + }; +}); + +function bindingSqlite3( + options: { + output?: string; + better_sqlite3_node?: string; + command?: string; + } = {} +): Plugin { + const TAG = "[vite-plugin-binding-sqlite3]"; + options.output ??= "native"; + options.better_sqlite3_node ??= "better_sqlite3.node"; + options.command ??= "build"; + + return { + name: "vite-plugin-binding-sqlite3", + config(config) { + // https://github.com/vitejs/vite/blob/v4.4.9/packages/vite/src/node/config.ts#L496-L499 + const resolvedRoot = normalizePath( + config.root ? resolve(config.root) : process.cwd() + ); + const output = resolve(resolvedRoot, options.output); + const better_sqlite3 = require.resolve("better-sqlite3-multiple-ciphers"); + const better_sqlite3_root = join( + better_sqlite3.slice(0, better_sqlite3.lastIndexOf("node_modules")), + "node_modules/better-sqlite3-multiple-ciphers" + ); + const better_sqlite3_node = join( + better_sqlite3_root, + "build/Release", + options.better_sqlite3_node + ); + const better_sqlite3_copy = join(output, options.better_sqlite3_node); + if (!existsSync(better_sqlite3_node)) { + throw new Error(`${TAG} Can not found "${better_sqlite3_node}".`); + } + if (!existsSync(output)) { + mkdirSync(output, { recursive: true }); + } + copyFileSync(better_sqlite3_node, better_sqlite3_copy); + /** `native/better_sqlite3.node` */ + const BETTER_SQLITE3_BINDING = better_sqlite3_copy.replace( + resolvedRoot + "/", + "" + ); + writeFileSync( + join(resolvedRoot, ".env"), + `VITE_BETTER_SQLITE3_BINDING=${BETTER_SQLITE3_BINDING}` + ); + + console.log(TAG, `binding to ${BETTER_SQLITE3_BINDING}`); + }, + }; +} diff --git a/vue.config.js b/vue.config.js deleted file mode 100644 index 59fcefd..0000000 --- a/vue.config.js +++ /dev/null @@ -1,82 +0,0 @@ -const { defineConfig } = require("@vue/cli-service"); -const TerserPlugin = require("terser-webpack-plugin"); -const path = require("path"); - -function resolve(dir) { - return path.join(__dirname, dir); -} - -module.exports = defineConfig({ - transpileDependencies: true, - assetsDir: "public", - productionSourceMap: false, - configureWebpack: { - entry: "./src/renderer/main.js", - resolve: { - extensions: [".js", ".vue", ".json", ".ts", ".less"], - alias: { - "@": resolve("src/renderer"), - }, - }, - optimization: { - usedExports: true, - splitChunks: { - chunks: "all", - }, - minimizer: [ - new TerserPlugin({ - extractComments: false, // 禁止生成license.txt文件 - terserOptions: { - compress: { - drop_console: true, // 删除console.log - drop_debugger: true, // 删除debugger - }, - }, - }), - ], - }, - }, - pluginOptions: { - electronBuilder: { - builderOptions: { - // 应用名称 - productName: "Dawn Launcher", - // 压缩级别 - compression: "maximum", - // 包含api目录 - extraFiles: ["build"], - // 图片 - extraResources: [{ from: "./public/images", to: "images" }], - // windows - win: { - // appId - appId: "com.dawnlauncher.application", - target: [ - { - target: "nsis", - // ia32 x64 - arch: ["x64"], - }, - ], - icon: "public/images/logo.ico", - }, - nsis: { - // 安装文件名称 - artifactName: "${productName}-${version}.${ext}", - // 是否一键安装,建议为false,可以让用户点击下一步、下一步、下一步的形式安装程序,如果为true,当用户双击构建好的程序,自动安装程序并打开,即:一键安装(one-click installer) - oneClick: false, - // 允许请求提升,如果为false,则用户必须使用提升的权限重新启动安装程序。 - allowElevation: true, - // 允许修改安装目录,建议为true,是否允许用户改变安装目录,默认是不允许。 - allowToChangeInstallationDirectory: true, - // 创建桌面图标 - createDesktopShortcut: true, - // 创建开始菜单图标 - createStartMenuShortcut: true, - }, - }, - mainProcessFile: "src/main/main.js", - mainProcessWatch: ["src/main"], - }, - }, -}); diff --git a/yarn.lock b/yarn.lock index 1efd748..2e50590 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,996 +4,57 @@ "7zip-bin@~5.1.1": version "5.1.1" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" + resolved "https://registry.npmmirror.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== -"@achrinza/node-ipc@^9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz#29788e608ff41121f0543491da723b243266ac28" - integrity sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ== - dependencies: - "@node-ipc/js-queue" "2.0.3" - event-pubsub "4.3.0" - js-message "1.0.7" - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" - integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== - -"@babel/core@^7.12.16": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" - integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.1" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" - integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== - dependencies: - "@babel/types" "^7.19.0" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" - integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== - dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" - integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" - integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.18.10", "@babel/parser@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" - integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== - -"@babel/parser@^7.20.15", "@babel/parser@^7.21.3": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" - integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.12.13": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz#4bab3e7afe894fdbf47ffa86701266104fcb6ecc" - integrity sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.19.0" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" - integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" - integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@^7.12.15": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" - integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.12.16": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" - integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== - dependencies: - "@babel/compat-data" "^7.19.1" - "@babel/helper-compilation-targets" "^7.19.1" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.19.0" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.13" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.0" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.0.0", "@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" - integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.1" - "@babel/types" "^7.19.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@ckpack/vue-color@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@ckpack/vue-color/-/vue-color-1.4.1.tgz#d08c50755b2a731eb33d91b84b5997b98062ddc5" - integrity sha512-PPon4lIyKWgwexN4Gf8iRzqWVPWTa1nMoW37cKQbMakY/iBPiPzOtgGinNhD44STbv6GUnPLBCg6yfkXsPuFpw== - dependencies: - "@ctrl/tinycolor" "^3.6.0" - material-colors "^1.2.6" - -"@ctrl/tinycolor@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8" - integrity sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ== +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/runtime@^7.21.0": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@css-render/plugin-bem@^0.15.12": + version "0.15.12" + resolved "https://registry.npmmirror.com/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz#cd88e46a388e4786436bd622414da0aa6019af3b" + integrity sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw== + +"@css-render/vue3-ssr@^0.15.10", "@css-render/vue3-ssr@^0.15.12": + version "0.15.12" + resolved "https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz#798d8dffadecd2bf8c80cbaab64e9df10be5626e" + integrity sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg== "@develar/schema-utils@~2.6.5": version "2.6.5" - resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" + resolved "https://registry.npmmirror.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== dependencies: ajv "^6.12.0" ajv-keywords "^3.4.1" "@electron/asar@^3.2.1": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.4.tgz#7e8635a3c4f6d8b3f8ae6efaf5ecb9fbf3bd9864" - integrity sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g== + version "3.2.7" + resolved "https://registry.npmmirror.com/@electron/asar/-/asar-3.2.7.tgz#bb8117dc6fd0c06a922ae7fb1c0e2d433e35a6e5" + integrity sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg== dependencies: - chromium-pickle-js "^0.2.0" commander "^5.0.0" glob "^7.1.6" minimatch "^3.0.4" "@electron/get@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e" - integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g== + version "2.0.3" + resolved "https://registry.npmmirror.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" + integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== dependencies: debug "^4.1.1" env-paths "^2.2.0" @@ -1005,18 +66,19 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/notarize@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-1.2.3.tgz#38056a629e5a0b5fd56c975c4828c0f74285b644" - integrity sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ== +"@electron/notarize@2.1.0": + version "2.1.0" + resolved "https://registry.npmmirror.com/@electron/notarize/-/notarize-2.1.0.tgz#76aaec10c8687225e8d0a427cc9df67611c46ff3" + integrity sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA== dependencies: debug "^4.1.1" fs-extra "^9.0.1" + promise-retry "^2.0.1" -"@electron/osx-sign@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.4.tgz#8e91442846471636ca0469426a82b253b9170151" - integrity sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g== +"@electron/osx-sign@1.0.5": + version "1.0.5" + resolved "https://registry.npmmirror.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8" + integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww== dependencies: compare-version "^0.1.2" debug "^4.3.4" @@ -1025,40 +87,10 @@ minimist "^1.2.6" plist "^3.0.5" -"@electron/rebuild@^3.2.13": - version "3.2.13" - resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.2.13.tgz#98fbb98981b1a86162546a2ab91b2355569cca4c" - integrity sha512-DH9Ol4JCnHDYVOD0fKWq+Qqbn/0WU1O6QR0mIpMXEVU4YFM4PlaqNC9K36mGShNBxxGFotZCMDrB1wl/iHM12g== - dependencies: - "@malept/cross-spawn-promise" "^2.0.0" - chalk "^4.0.0" - debug "^4.1.1" - detect-libc "^2.0.1" - fs-extra "^10.0.0" - got "^11.7.0" - node-abi "^3.0.0" - node-api-version "^0.1.4" - node-gyp "^9.0.0" - ora "^5.1.0" - semver "^7.3.5" - tar "^6.0.5" - yargs "^17.0.1" - -"@electron/universal@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.5.tgz#b812340e4ef21da2b3ee77b2b4d35c9b86defe37" - integrity sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag== - dependencies: - "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.0.3" - debug "^4.3.1" - dir-compare "^2.4.0" - fs-extra "^9.0.1" - -"@electron/universal@1.3.4": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.3.4.tgz#bccd94b635d7c85eeed5eabba457eb4ed2be2777" - integrity sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg== +"@electron/universal@1.4.1": + version "1.4.1" + resolved "https://registry.npmmirror.com/@electron/universal/-/universal-1.4.1.tgz#3fbda2a5ed9ff9f3304c8e8316b94c1e3a7b3785" + integrity sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ== dependencies: "@electron/asar" "^3.2.1" "@malept/cross-spawn-promise" "^1.1.0" @@ -1068,369 +100,168 @@ minimatch "^3.0.4" plist "^3.0.4" -"@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@emotion/hash@~0.8.0": + version "0.8.0" + resolved "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== -"@jimp/bmp@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.22.7.tgz#354ecedb4cbe66587cd06d3cb713d7e0740d768e" - integrity sha512-0cfBPvugURS7G+60vRBL+penDRst8x40alS5Rhn2nlGsgsBHljFDw7+H4o5r6gldw9nv9PR9JA90Wloy7KMZdQ== - dependencies: - "@jimp/utils" "^0.22.7" - bmp-js "^0.1.0" +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== -"@jimp/core@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.22.7.tgz#8bfa365b71669e9746ba0c3ec69029b8494a382c" - integrity sha512-lg4z+pw23v2Gp9LWQur0NqYtnmoNWnyN/Or96elhJgeEJskrDGwROdajortHCCOI1xDnUZSirg8sFvStC8BIlg== - dependencies: - "@jimp/utils" "^0.22.7" - any-base "^1.1.0" - buffer "^5.2.0" - exif-parser "^0.1.12" - file-type "^16.5.4" - isomorphic-fetch "^3.0.0" - mkdirp "^2.1.3" - pixelmatch "^4.0.2" - tinycolor2 "^1.6.0" +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== -"@jimp/custom@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.22.7.tgz#6d34a7df2a94eb295c822287109142fc20e46841" - integrity sha512-n+1+ZVDNumB1E+sL7KdGKAJ6MbgniX1/v/xOEFEQ46WDZ4cRTqP4+tXjHTuHSlOXiANH+K9zD6qgzqmgO6mCVw== - dependencies: - "@jimp/core" "^0.22.7" +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== -"@jimp/gif@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.22.7.tgz#7194e9ae3ce86534918d356e5d31d44c6a3e3730" - integrity sha512-PGZMS8sYFnDcqg+t8IT3RaSJLrqB+3GzhI0hU5D4mmSuJ5UO/6Bdgu8nrwh3uFPxw0ZH6h9ozYk88cz0pKEhLQ== - dependencies: - "@jimp/utils" "^0.22.7" - gifwrap "^0.9.2" - omggif "^1.0.9" +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== -"@jimp/jpeg@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.22.7.tgz#31a92dbdc84c0648701a2a2f94c0dd7e7cb342c5" - integrity sha512-ptwWyX/7RPcREy8SpPN/8IlywbwyPXiuXmoHwM6m4iKcyaCmmnfCdZwLNXYliJzFAFLLOWDuOrwO3cZSkH6Czg== - dependencies: - "@jimp/utils" "^0.22.7" - jpeg-js "^0.4.4" +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== -"@jimp/plugin-blit@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.22.7.tgz#8f8c000e0b9a0e5710635465dba2ec68bf153926" - integrity sha512-8oXcBTSd/sBmTQATrCxQ1ZBER31Lge8vXzWqNCbC3b1ZvRggCcqnDzRRH1+JiI4i+jPRo3Fi6/sdvEUyQ5LY3g== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== -"@jimp/plugin-blur@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.22.7.tgz#497cfe9ce0fdc935cd584b2bee0d963845448da5" - integrity sha512-M+0I5CKFIpnIQE27j8o8NECBsOFBd4z7C95ydy2UohYopugFq+hSVtMs1D4pQgb0RW1DJPiXD/4PHqb+lzV5mA== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== -"@jimp/plugin-circle@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.22.7.tgz#6d05361b04f58eeb7302a947880241d1d32904d6" - integrity sha512-zfZKKpOhlyiDeFjGW5JB9K4h/kvbdaAJWUEwmKrvvGar67G3j8dKu46AX0MeWRNZ1yk/lfz+JIa7TzKfxEBf6w== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== -"@jimp/plugin-color@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.22.7.tgz#c705d4c245708dae731bf0ea1e2684c22892fb3c" - integrity sha512-OXro9pdB0twQjV4LgW0bTEXaX1VgBsTBcFoDAs8q9mtQzD5p3UQmJ+ykCiQ5rTPxNN1Buc44tcCIfp8haB1ZVQ== - dependencies: - "@jimp/utils" "^0.22.7" - tinycolor2 "^1.6.0" +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== -"@jimp/plugin-contain@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.22.7.tgz#f3caf429255ec601ff15ba2016721d10f48f7c91" - integrity sha512-GwUxZp4jMA0O0qbknUPDONJAfHFaTRs8kK+jgRtUfgb1Xi96l5RN/PMMDv4owZCUiPVAON80X1BMj7nSQWNVUw== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== -"@jimp/plugin-cover@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.22.7.tgz#15a08fae12a0386f1f2459717ba817793f7914db" - integrity sha512-PVXeQyofGepMoJaQ5XapLwCcZfsOF1IoAotHosh8AOP8niCP/Erm8T6ZWf5tf0sMJiLHQMPUyns186H5isqEMQ== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== -"@jimp/plugin-crop@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.22.7.tgz#2f46bb905cd853618a19bc0d0b4b7fba9a7397bf" - integrity sha512-XXvUU+hPdodtTBSgyUJUnzh7JgKMVlS1GxjcQsjYU8iGr1dbpuazKMTQxc76ChVmy8ue4goi8bGstacWUHpl/Q== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== -"@jimp/plugin-displace@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.22.7.tgz#a45de07dcaa5e5f7ca87c50b1245eaf7fe8ad5cf" - integrity sha512-CCNAkmm2OS4QQtNRfQvXqoAMxNE0maSlVEV5DNdioHOUKycy02EJ5hNYR3l0FG+NraQHOuqv9XV37sGRl6QzMA== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== -"@jimp/plugin-dither@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.22.7.tgz#7027aa10140f2b7429a05906d21b37d91452f424" - integrity sha512-ndCW5MIGMdh3aBvvgRCO7el9cIPG29kU7xQYlOs5+3JsDk3Vf7X30QGPjzxABOY95qLUNUjf5Qe/p/tqv/vbcw== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== -"@jimp/plugin-fisheye@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.7.tgz#38e14dbb99835e3fac9cd0cffc332dcd43b68db4" - integrity sha512-boI1QowhZRfb6OF+ZPWtiSJP1GATsTHjd5Oy/lJ+n0L4rp439ZOTB1Elzcgc44O2C1mgZDdybRPQQvYdPF8slA== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== -"@jimp/plugin-flip@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.22.7.tgz#c6419645c49f5a9c4dd6dd19c91ed77ecbb0881a" - integrity sha512-/jkbgtvQPcKadAEV5ZXyoEpSdd7GEvGs/Ya/f48+LNszc+S24u4UXtuP3QPRJ5FHm0Re1t4uztM7xa6IPklAOA== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== -"@jimp/plugin-gaussian@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.7.tgz#dcc3bfc05b7886dd5ef0ccb14a319085930dca2f" - integrity sha512-OB1sdnjzq2rfUHmx9Rvi3SJIDbQAgWFgYEw6KhN3TSVOdrJHvwrQkEnwR9PoUzQg992VIpGcVc9Y1s/SOU2oCA== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== -"@jimp/plugin-invert@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.22.7.tgz#96bfd07dbb68ad9558b5c6d19b6476aa072523f8" - integrity sha512-dX/TqACJ/M5uXDIEJlVPPwietMD6EWUeA/CV4uvhLz9EMjTgHociJ3TWqGCY/70phhIBLbhLcHUVBL/q65ynfQ== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== -"@jimp/plugin-mask@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.22.7.tgz#37e8a06b23c47b1c4a3f18bed7f50a52cc25e236" - integrity sha512-rfKHKJLAtJG7qbB4zYAMcQ9ue3CIFRuAJ3xX0lzCxC0fGvCVuXlcxiAEauBxqaTWqiKMnahqpR3/Ah679K2FKQ== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== -"@jimp/plugin-normalize@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.22.7.tgz#cc64132e69862c8b2901a0be88cf9370b43dd1b6" - integrity sha512-t8x2jjKDmvUAZB4Wbeagr4D0BvoVCIWquy94mpglvSZ8ujKLt0aQBl3CBEIbXFAoVqNif+G36NtxPHNsjxIXOg== - dependencies: - "@jimp/utils" "^0.22.7" +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== -"@jimp/plugin-print@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.22.7.tgz#596251eaeedb5f0d1a2761771015d27242370edb" - integrity sha512-kx0+cPeinki1IFg9cJy7LC4uVuOEOa8TIrcERioB6PVgJ7EDzCAfatTKULZ+t4uSs2K/lQF97wPYlbiyxs/Hzg== - dependencies: - "@jimp/utils" "^0.22.7" - load-bmfont "^1.4.1" - -"@jimp/plugin-resize@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.22.7.tgz#d1b711664106b35e6cfcce73a6aefcffde65304f" - integrity sha512-pg7i0JIYt7x7ag+CoD/yG70Xvwm1sKRfcFjQh954yestiin14uppPgXchAmTBmctecBjLNdsVlqSXbPvU4Jvxw== - dependencies: - "@jimp/utils" "^0.22.7" - -"@jimp/plugin-rotate@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.22.7.tgz#a864d736f04e4a5d5813c1d5761b3af84c98cf52" - integrity sha512-Uh3Gb18IY8uXWk6E1bzMopum2GP+xwohbnMIDE0MSWmLaz7LXrfnvgXFba1uRGgn73CJz8UDS4fC1KIJMuxQZA== - dependencies: - "@jimp/utils" "^0.22.7" - -"@jimp/plugin-scale@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.22.7.tgz#5f520370914402b7da6a751f415e677da58cb9ff" - integrity sha512-3uHUrk5Rl6MCxuoJtHTSeJjSHIxHWqOOgmD2caKIvyxds0Zmofu/Fva+N4V/m80E4q4G2RXNsUplFpFGhUM7hw== - dependencies: - "@jimp/utils" "^0.22.7" - -"@jimp/plugin-shadow@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.22.7.tgz#311392c7727f43bb3cb06cda1dc9d2f985545bb4" - integrity sha512-NKEq5VR8U/d0OKf0hxFtrrbMCuNv7by31V+Kwgxb1oTP+j+zZEaww+m3YgEwIwRe7E8/yeDSHa5bJ+CmuyFZjw== - dependencies: - "@jimp/utils" "^0.22.7" - -"@jimp/plugin-threshold@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.22.7.tgz#d5efdfac88f22882f3eabee4525feddcaca51244" - integrity sha512-BH4aLwfmnqjRVhdzMIqUns4ycZ6QoHHFR6Qz+X2iSpH5a33xFA4DRbd3Ehtrs4Gk7XiCjWkUyM6wjmH7l/1hNQ== - dependencies: - "@jimp/utils" "^0.22.7" - -"@jimp/plugins@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.22.7.tgz#2ee1258a005f135f0bc103286faed05acdc8a3b0" - integrity sha512-AJmzTG/sa+CDpvle/UE89hjHR85gnRGSwLuQqPbhlY6GFCmC3uqHRJz9O5I8A4zdi9+e8LsBphuTlKV7RbuXOw== - dependencies: - "@jimp/plugin-blit" "^0.22.7" - "@jimp/plugin-blur" "^0.22.7" - "@jimp/plugin-circle" "^0.22.7" - "@jimp/plugin-color" "^0.22.7" - "@jimp/plugin-contain" "^0.22.7" - "@jimp/plugin-cover" "^0.22.7" - "@jimp/plugin-crop" "^0.22.7" - "@jimp/plugin-displace" "^0.22.7" - "@jimp/plugin-dither" "^0.22.7" - "@jimp/plugin-fisheye" "^0.22.7" - "@jimp/plugin-flip" "^0.22.7" - "@jimp/plugin-gaussian" "^0.22.7" - "@jimp/plugin-invert" "^0.22.7" - "@jimp/plugin-mask" "^0.22.7" - "@jimp/plugin-normalize" "^0.22.7" - "@jimp/plugin-print" "^0.22.7" - "@jimp/plugin-resize" "^0.22.7" - "@jimp/plugin-rotate" "^0.22.7" - "@jimp/plugin-scale" "^0.22.7" - "@jimp/plugin-shadow" "^0.22.7" - "@jimp/plugin-threshold" "^0.22.7" - timm "^1.6.1" - -"@jimp/png@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.22.7.tgz#4f2b641a99192419e3eef8e50e229115fa2df3cc" - integrity sha512-LxD3O9FKEwVv+j+HcUV7ez72Miy+823EjhtFZbBYXNp9qjHtHFBpgcSJBftUOCei8OlmmVgULYn9XjyfPsDgGw== - dependencies: - "@jimp/utils" "^0.22.7" - pngjs "^6.0.0" - -"@jimp/tiff@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.22.7.tgz#2f1c6d0ab71ab5b64d73e7b328a61a70c27f3c88" - integrity sha512-/oE8kLumzBfU1Z6h4TrDXYCGQNc4CjbZQvPssjImEqNLr5vbefpIpoy1fVMpsyuHZHsGovsBhBHxTJaRLO4+Og== - dependencies: - utif2 "^4.0.1" - -"@jimp/types@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.22.7.tgz#388ea61d08a0449eabc94d9b14737db66e83b276" - integrity sha512-1T8BxwDh5HJvBh3tt6HUd8r7ir5Ge3JWATXC8O3Y9QYwOaERjA2+FVhGSjtoo5xCeJvLRjSzEtfZ8heowMBL4w== - dependencies: - "@jimp/bmp" "^0.22.7" - "@jimp/gif" "^0.22.7" - "@jimp/jpeg" "^0.22.7" - "@jimp/png" "^0.22.7" - "@jimp/tiff" "^0.22.7" - timm "^1.6.1" - -"@jimp/utils@^0.22.7": - version "0.22.7" - resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.22.7.tgz#67a061c2f59e822d448b46fd7bb7dec36f8eb16d" - integrity sha512-4ax4IOWLIERx4yz9y3fNXKvQaPOY23yJF5h4sizxVkQUObkZHWE0kL0TVHodBt3rS8ksdbCL8Jkz4GeNP/Katg== - dependencies: - regenerator-runtime "^0.13.3" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.17": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@juggle/resize-observer@^3.3.1": version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" + resolved "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" + resolved "https://registry.npmmirror.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== dependencies: cross-spawn "^7.0.1" -"@malept/cross-spawn-promise@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" - integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== - dependencies: - cross-spawn "^7.0.1" - "@malept/flatpak-bundler@^0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + resolved "https://registry.npmmirror.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== dependencies: debug "^4.1.1" @@ -1438,16 +269,14 @@ lodash "^4.17.15" tmp-promise "^3.0.2" -"@node-ipc/js-queue@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz#ac7fe33d766fa53e233ef8fedaf3443a01c5a4cd" - integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw== - dependencies: - easy-stack "1.0.1" +"@napi-rs/cli@^2.16.3": + version "2.16.3" + resolved "https://registry.npmmirror.com/@napi-rs/cli/-/cli-2.16.3.tgz#6943d0614bbb4900a97b18ae074f735864f78c4b" + integrity sha512-3mLNPlbbOhpbIUKicLrJtIearlHXUuXL3UeueYyRRplpVMNkdn8xCyzY6PcYZi3JXR8bmCOiWgkVmLnrSL7DKw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -1455,134 +284,37 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@polka/url@^1.0.0-next.20": - version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" - integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== -"@soda/friendly-errors-webpack-plugin@^1.8.0", "@soda/friendly-errors-webpack-plugin@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz#4d4fbb1108993aaa362116247c3d18188a2c6c85" - integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg== - dependencies: - chalk "^3.0.0" - error-stack-parser "^2.0.6" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -"@soda/get-current-script@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" - integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" -"@tailwindcss/forms@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.3.tgz#e4d7989686cbcaf416c53f1523df5225332a86e7" - integrity sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q== - dependencies: - mini-svg-data-uri "^1.2.3" - -"@tokenizer/token@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" - integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== - "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.npmmirror.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -1590,836 +322,341 @@ "@types/node" "*" "@types/responselike" "^1.0.0" -"@types/connect-history-api-fallback@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" +"@types/caseless@*": + version "0.12.4" + resolved "https://registry.npmmirror.com/@types/caseless/-/caseless-0.12.4.tgz#1326429a519cc077028150343fd502b04686bd6f" + integrity sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g== "@types/debug@^4.1.6": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + version "4.1.10" + resolved "https://registry.npmmirror.com/@types/debug/-/debug-4.1.10.tgz#f23148a6eb771a34c466a4fc28379d8101e84494" + integrity sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA== dependencies: "@types/ms" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== +"@types/dompurify@^3.0.3": + version "3.0.4" + resolved "https://registry.npmmirror.com/@types/dompurify/-/dompurify-3.0.4.tgz#8a6369dec2dd0c397d01751adf3364be035b40d8" + integrity sha512-1Jk8S/IRzNSbwQRbuGuLFHviwxQ8pX81ZEW3INY9432Cwb4VedkBYan8gSIXVLOLHBtimOmUTEYphjRVmo+30g== dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.4.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" - integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" - integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" + "@types/trusted-types" "*" "@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + resolved "https://registry.npmmirror.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.3" + resolved "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" + integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== -"@types/http-proxy@^1.17.8": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" - integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== - dependencies: - "@types/node" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/katex@^0.16.2": + version "0.16.5" + resolved "https://registry.npmmirror.com/@types/katex/-/katex-0.16.5.tgz#76adc073ce58e860cb8c34b5673e1aea9a0172b0" + integrity sha512-DD2Y3xMlTQvAnN6d8803xdgnOeYZ+HwMglb7/9YCf49J9RkJL53azf9qKa40MkEYhqVwxZ1GS2+VlShnz4Z1Bw== "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" -"@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/lodash-es@^4.17.6", "@types/lodash-es@^4.17.9": + version "4.17.10" + resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.10.tgz#1b36a76ca9eda20c0263e19bbe1a3adb1b317707" + integrity sha512-YJP+w/2khSBwbUSFdGsSqmDvmnN3cCKoPOL7Zjle6s30ZtemkkqhjVfFqGwPN7ASil5VyjE2GtyU/yqYY6mC0A== + dependencies: + "@types/lodash" "*" -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== +"@types/lodash@*", "@types/lodash@^4.14.198": + version "4.14.200" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" + integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/mime@^3.0.2": + version "3.0.3" + resolved "https://registry.npmmirror.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" + integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== "@types/ms@*": - version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + version "0.7.33" + resolved "https://registry.npmmirror.com/@types/ms/-/ms-0.7.33.tgz#80bf1da64b15f21fd8c1dc387c31929317d99ee9" + integrity sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ== "@types/node@*": - version "18.7.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" - integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== + version "20.8.9" + resolved "https://registry.npmmirror.com/@types/node/-/node-20.8.9.tgz#646390b4fab269abce59c308fc286dcd818a2b08" + integrity sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg== + dependencies: + undici-types "~5.26.4" -"@types/node@16.9.1": - version "16.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== +"@types/node@^18.11.18": + version "18.18.7" + resolved "https://registry.npmmirror.com/@types/node/-/node-18.18.7.tgz#bb3a7068dc4ba421b6968f2a259298b3a4e129e8" + integrity sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ== + dependencies: + undici-types "~5.26.4" -"@types/node@^16.11.26": - version "16.11.59" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.59.tgz#823f238b9063ccc3b3b7f13186f143a57926c4f6" - integrity sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw== - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/node@~14.14.31": + version "14.14.45" + resolved "https://registry.npmmirror.com/@types/node/-/node-14.14.45.tgz#ec2dfb5566ff814d061aef7e141575aedba245cf" + integrity sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw== "@types/plist@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" - integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== + version "3.0.4" + resolved "https://registry.npmmirror.com/@types/plist/-/plist-3.0.4.tgz#af0c5ffaf30d2302460adc17861021323c1410f9" + integrity sha512-pTa9xUFQFM9WJGSWHajYNljD+DbVylE1q9IweK1LBhUYJdJ28YNU8j3KZ4Q1Qw+cSl4+QLLLOVmqNjhhvVO8fA== dependencies: "@types/node" "*" xmlbuilder ">=11.0.1" -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/request@^2.48.10": + version "2.48.11" + resolved "https://registry.npmmirror.com/@types/request/-/request-2.48.11.tgz#04b597ea308418422f7901c9a52b24967a2c4ed2" + integrity sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA== + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + version "1.0.2" + resolved "https://registry.npmmirror.com/@types/responselike/-/responselike-1.0.2.tgz#8de1b0477fd7c12df77e50832fa51701a8414bd6" + integrity sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA== dependencies: "@types/node" "*" -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/retry@^0.12.3": + version "0.12.4" + resolved "https://registry.npmmirror.com/@types/retry/-/retry-0.12.4.tgz#67d65e2df7a82b0b0ec0ba7fb2711c50c2adf1f4" + integrity sha512-l1YzFLj8Y6OhLdt7HKXlz56DoEmksB7qR8KVk+MpFsS4duwnoszLgDlLxJB0vgSqtg/rAS5gmYg5Bjw2sMJ8Ew== -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" +"@types/sortablejs@^1.15.3": + version "1.15.4" + resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.4.tgz#9ccaa84a64205defcbb78df63176a3722121ccd7" + integrity sha512-7oL7CcPSfoyoNx3Ba1+79ykJzpEKVhHUyfAiN5eT/FoeDXOR3eBDLXf9ndDNuxaExmjpI+zVi2dMMuaoXUOzNA== -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" - integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== - dependencies: - "@types/mime" "*" - "@types/node" "*" +"@types/tough-cookie@*": + version "4.0.4" + resolved "https://registry.npmmirror.com/@types/tough-cookie/-/tough-cookie-4.0.4.tgz#cf2f0c7c51b985b6afecea73eb2cd65421ecb717" + integrity sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A== -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" +"@types/trusted-types@*": + version "2.0.5" + resolved "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.5.tgz#5cac7e7df3275bb95f79594f192d97da3b4fd5fe" + integrity sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA== + +"@types/urijs@^1.19.22": + version "1.19.22" + resolved "https://registry.npmmirror.com/@types/urijs/-/urijs-1.19.22.tgz#188c573007001de3be3983af5437727bf3042dd6" + integrity sha512-qnYBwfN7O/+i6E1Kr8JaCKsrCLpRCiQ1XxkSxNIYuJ/5Aagt0+HlMX78DJMUrNzDULMz0eu2gcprlxJaDtACOw== "@types/verror@^1.10.3": - version "1.10.6" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.6.tgz#3e600c62d210c5826460858f84bcbb65805460bb" - integrity sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ== + version "1.10.8" + resolved "https://registry.npmmirror.com/@types/verror/-/verror-1.10.8.tgz#5324a03e0885ffe6fef0192900aec317abbb2997" + integrity sha512-YhUhnxRYs/NiVUbIs3F/EzviDP/NZCEAE2Mx5DUqLdldUmphOhFCVh7Kc+7zlYEExM0P8dzfbJi0yRlNb2Bw5g== -"@types/ws@^8.5.1": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== +"@types/xml2js@^0.4.12": + version "0.4.13" + resolved "https://registry.npmmirror.com/@types/xml2js/-/xml2js-0.4.13.tgz#219134d550c21e2f1d7b0e2fbb9174144c6053ed" + integrity sha512-nuT42GzgoUa4zZgBoF4d+Zqc12/FlVxXCT4xU6j3RfqTFVQWrUAClI/0sNJ5ImM9Wv6KB42KMG2xsVMn4cSBzA== dependencies: "@types/node" "*" -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^17.0.1": - version "17.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.12.tgz#0745ff3e4872b4ace98616d4b7e37ccbd75f9526" - integrity sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + version "2.10.2" + resolved "https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.2.tgz#dab926ef9b41a898bc943f11bca6b0bad6d4b729" + integrity sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA== dependencies: "@types/node" "*" -"@vue/babel-helper-vue-jsx-merge-props@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" - integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA== +"@vicons/material@^0.12.0": + version "0.12.0" + resolved "https://registry.npmmirror.com/@vicons/material/-/material-0.12.0.tgz#068e72fa40bd7f780af5fc68011fb69010c8e0b5" + integrity sha512-chv1CYAl8P32P3Ycwgd5+vw/OFNc2mtkKdb1Rw4T5IJmKy6GVDsoUKV3N2l208HATn7CCQphZtuPDdsm7K2kmA== -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.3": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" - integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== +"@vicons/utils@^0.1.4": + version "0.1.4" + resolved "https://registry.npmmirror.com/@vicons/utils/-/utils-0.1.4.tgz#accea9226ff0078ebd80d00dcb63ef5e74b210ff" + integrity sha512-OHI19qVNN6i+uPQ+Y3f2s0dUxwsYnOCcKBW7XOU4yXXO1aU3ZoKpblCc3+4N0qmgoJs5rWKRAaMisipqEXJwAg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" + "@xicons/utils" "^0.1.4" -"@vue/babel-plugin-transform-vue-jsx@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz#4d4b3d46a39ea62b7467dd6e26ce47f7ceafb2fe" - integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA== +"@vitejs/plugin-vue@^4.4.0": + version "4.4.0" + resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390" + integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg== + +"@volar/language-core@1.10.7", "@volar/language-core@~1.10.5": + version "1.10.7" + resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.10.7.tgz#9d555bf0a3ca652c525651baba5ecf8a55cf3471" + integrity sha512-6+WI7HGqWCsKJ/bms4V45WP7eDeoGxDtLjYPrHB7QkIWVkRLIeGPzzBoonZz9kERM+Kld3W89Y+IlICejVAKhA== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" + "@volar/source-map" "1.10.7" -"@vue/babel-preset-app@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz#ce38f76314f5265d62a89756ef264c21f1d351a1" - integrity sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg== +"@volar/source-map@1.10.7", "@volar/source-map@~1.10.5": + version "1.10.7" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.10.7.tgz#f2b5c6b99f3fc91c10d4013eaeb083fbbf4b9e0d" + integrity sha512-anA254XO0lmmeu0p/kvgPOCkrVpqNIHWMvEkPX70PSk4ntg0iBzN/f0Kip6deXvibl6v14Q3Z8RihWrZwdZEEQ== dependencies: - "@babel/core" "^7.12.16" - "@babel/helper-compilation-targets" "^7.12.16" - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-proposal-class-properties" "^7.12.13" - "@babel/plugin-proposal-decorators" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/plugin-transform-runtime" "^7.12.15" - "@babel/preset-env" "^7.12.16" - "@babel/runtime" "^7.12.13" - "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.1.2" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.8.3" - core-js-compat "^3.8.3" - semver "^7.3.4" + muggle-string "^0.3.1" -"@vue/babel-preset-jsx@^1.1.2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz#f4914ba314235ab097bc4372ed67473c0780bfcc" - integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA== +"@volar/typescript@~1.10.5": + version "1.10.7" + resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.10.7.tgz#2ed47e3260d4161445099ba89c7471fbc51133b6" + integrity sha512-2hvA3vjXVUn1vOpsP/nWLnE5DUmY6YKQhvDRoZVfBrnWwIo0ySxdTUP4XieXGGgSk43xJaeU1zqQS/3Wfm7QgA== dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - "@vue/babel-sugar-composition-api-inject-h" "^1.4.0" - "@vue/babel-sugar-composition-api-render-instance" "^1.4.0" - "@vue/babel-sugar-functional-vue" "^1.4.0" - "@vue/babel-sugar-inject-h" "^1.4.0" - "@vue/babel-sugar-v-model" "^1.4.0" - "@vue/babel-sugar-v-on" "^1.4.0" + "@volar/language-core" "1.10.7" + path-browserify "^1.0.1" -"@vue/babel-sugar-composition-api-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz#187e1389f8871d89ece743bb50aed713be9d6c85" - integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g== +"@vue/compiler-core@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.7.tgz#865a5734c971686d9737d85a0c5a08de045b6162" + integrity sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ== dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz#2c1607ae6dffdab47e785bc01fa45ba756e992c1" - integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz#60da31068567082287c7337c66ef4df04e0a1029" - integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz#bf39aa6631fb1d0399b1c49b4c59e1c8899b4363" - integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz#a51d986609f430c4f70ada3a93cc560a2970f720" - integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz#43b7106a9672d8cbeefc0eb8afe1d376edc6166e" - integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.4.0" - camelcase "^5.0.0" - -"@vue/cli-overlay@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz#b61477acdc43bbd42fce6326d228471201ecdcdd" - integrity sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ== - -"@vue/cli-plugin-babel@~5.0.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz#54f9a07900f29baff54803dcfa916c602894feb7" - integrity sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ== - dependencies: - "@babel/core" "^7.12.16" - "@vue/babel-preset-app" "^5.0.8" - "@vue/cli-shared-utils" "^5.0.8" - babel-loader "^8.2.2" - thread-loader "^3.0.0" - webpack "^5.54.0" - -"@vue/cli-plugin-router@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz#a113ec626f3d4216d20496c42d35533bce9e889f" - integrity sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg== - dependencies: - "@vue/cli-shared-utils" "^5.0.8" - -"@vue/cli-plugin-vuex@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz#0d4cb3020f9102bea9288d750729dde176c66ccd" - integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA== - -"@vue/cli-service@~5.0.0": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-5.0.8.tgz#cf3f6f1b7bf0fba9cdab86b6bec4f9897f982dac" - integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw== - dependencies: - "@babel/helper-compilation-targets" "^7.12.16" - "@soda/friendly-errors-webpack-plugin" "^1.8.0" - "@soda/get-current-script" "^1.0.2" - "@types/minimist" "^1.2.0" - "@vue/cli-overlay" "^5.0.8" - "@vue/cli-plugin-router" "^5.0.8" - "@vue/cli-plugin-vuex" "^5.0.8" - "@vue/cli-shared-utils" "^5.0.8" - "@vue/component-compiler-utils" "^3.3.0" - "@vue/vue-loader-v15" "npm:vue-loader@^15.9.7" - "@vue/web-component-wrapper" "^1.3.0" - acorn "^8.0.5" - acorn-walk "^8.0.2" - address "^1.1.2" - autoprefixer "^10.2.4" - browserslist "^4.16.3" - case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.10" - clipboardy "^2.3.0" - cliui "^7.0.4" - copy-webpack-plugin "^9.0.1" - css-loader "^6.5.0" - css-minimizer-webpack-plugin "^3.0.2" - cssnano "^5.0.0" - debug "^4.1.1" - default-gateway "^6.0.3" - dotenv "^10.0.0" - dotenv-expand "^5.1.0" - fs-extra "^9.1.0" - globby "^11.0.2" - hash-sum "^2.0.0" - html-webpack-plugin "^5.1.0" - is-file-esm "^1.0.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - mini-css-extract-plugin "^2.5.3" - minimist "^1.2.5" - module-alias "^2.2.2" - portfinder "^1.0.26" - postcss "^8.2.6" - postcss-loader "^6.1.1" - progress-webpack-plugin "^1.0.12" - ssri "^8.0.1" - terser-webpack-plugin "^5.1.1" - thread-loader "^3.0.0" - vue-loader "^17.0.0" - vue-style-loader "^4.1.3" - webpack "^5.54.0" - webpack-bundle-analyzer "^4.4.0" - webpack-chain "^6.5.1" - webpack-dev-server "^4.7.3" - webpack-merge "^5.7.3" - webpack-virtual-modules "^0.4.2" - whatwg-fetch "^3.6.2" - -"@vue/cli-shared-utils@^5.0.0-rc.1", "@vue/cli-shared-utils@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz#75fc96528eba2b1c7e33cb7e989a984ddef99c8a" - integrity sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ== - dependencies: - "@achrinza/node-ipc" "^9.2.5" - chalk "^4.1.2" - execa "^1.0.0" - joi "^17.4.0" - launch-editor "^2.2.1" - lru-cache "^6.0.0" - node-fetch "^2.6.7" - open "^8.0.2" - ora "^5.3.0" - read-pkg "^5.1.1" - semver "^7.3.4" - strip-ansi "^6.0.0" - -"@vue/compiler-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" - integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== - dependencies: - "@babel/parser" "^7.21.3" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.7" estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" - integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== +"@vue/compiler-dom@3.3.7", "@vue/compiler-dom@^3.3.0": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz#a245aa03f9bfcdb537a239bf02842072de0644c9" + integrity sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw== dependencies: - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-core" "3.3.7" + "@vue/shared" "3.3.7" -"@vue/compiler-sfc@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" - integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== +"@vue/compiler-sfc@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz#219d04b3013c7b15fbc536e2279e07810b731cc2" + integrity sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw== dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-ssr" "3.3.4" - "@vue/reactivity-transform" "3.3.4" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.7" + "@vue/compiler-dom" "3.3.7" + "@vue/compiler-ssr" "3.3.7" + "@vue/reactivity-transform" "3.3.7" + "@vue/shared" "3.3.7" estree-walker "^2.0.2" - magic-string "^0.30.0" - postcss "^8.1.10" + magic-string "^0.30.5" + postcss "^8.4.31" source-map-js "^1.0.2" -"@vue/compiler-ssr@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" - integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== +"@vue/compiler-ssr@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz#eff4a70f7ceb800d60e68d208b96a030c0f1b636" + integrity sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/shared" "3.3.4" - -"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" - integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.36" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2 || ^2.0.0" - -"@vue/devtools-api@^6.0.0-beta.11": - version "6.4.4" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.4.4.tgz#0b024fc8ca91bb4b6035abaf53c5aecc17119b3b" - integrity sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw== + "@vue/compiler-dom" "3.3.7" + "@vue/shared" "3.3.7" "@vue/devtools-api@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" - integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + version "6.5.1" + resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== -"@vue/reactivity-transform@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929" - integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== +"@vue/language-core@1.8.22": + version "1.8.22" + resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3" + integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw== dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" + "@volar/language-core" "~1.10.5" + "@volar/source-map" "~1.10.5" + "@vue/compiler-dom" "^3.3.0" + "@vue/shared" "^3.3.0" + computeds "^0.0.1" + minimatch "^9.0.3" + muggle-string "^0.3.1" + vue-template-compiler "^2.7.14" + +"@vue/reactivity-transform@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz#eb9f5110af5085079b851d162205394bc790d539" + integrity sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.7" + "@vue/shared" "3.3.7" estree-walker "^2.0.2" - magic-string "^0.30.0" + magic-string "^0.30.5" -"@vue/reactivity@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" - integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== +"@vue/reactivity@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.7.tgz#48b6671a45ba33039da2c0eb25ae702f924486a9" + integrity sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg== dependencies: - "@vue/shared" "3.3.4" + "@vue/shared" "3.3.7" -"@vue/runtime-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" - integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== +"@vue/runtime-core@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.7.tgz#c1eece1c98f936dc69dd0667d11b464579b128fd" + integrity sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ== dependencies: - "@vue/reactivity" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/reactivity" "3.3.7" + "@vue/shared" "3.3.7" -"@vue/runtime-dom@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" - integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== +"@vue/runtime-dom@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz#e7cf88cc01591fdf6e3164825554fdadc3137ffc" + integrity sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw== dependencies: - "@vue/runtime-core" "3.3.4" - "@vue/shared" "3.3.4" - csstype "^3.1.1" + "@vue/runtime-core" "3.3.7" + "@vue/shared" "3.3.7" + csstype "^3.1.2" -"@vue/server-renderer@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" - integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== +"@vue/server-renderer@3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.7.tgz#0cc3dc6ad39a54693e6e8f853caa3c7bb43b0364" + integrity sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw== dependencies: - "@vue/compiler-ssr" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-ssr" "3.3.7" + "@vue/shared" "3.3.7" -"@vue/shared@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" - integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== +"@vue/shared@3.3.7", "@vue/shared@^3.3.0": + version "3.3.7" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.7.tgz#0091852fe5cc4237c8440fe32f3ab6bc920ae6d9" + integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg== -"@vue/vue-loader-v15@npm:vue-loader@^15.9.7": - version "15.10.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.10.0.tgz#2a12695c421a2a2cc2138f05a949d04ed086e38b" - integrity sha512-VU6tuO8eKajrFeBzMssFUP9SvakEeeSi1BxdTH5o3+1yUyrldp8IERkSdXlMI2t4kxF2sqYUDsQY+WJBxzBmZg== +"@xicons/utils@^0.1.4": + version "0.1.4" + resolved "https://registry.npmmirror.com/@xicons/utils/-/utils-0.1.4.tgz#cece50613b34d4b4c71e73bb0be92981067e11e1" + integrity sha512-uXxKDLz9abr80yJC05XSTq6wlyFcdW+N/1IYJkeHjzzXVc4VQ0sEYMoMMTjAH7HQBOyOkzOB4pf5NGF72lwa8Q== dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" + css-render "^0.13.2" -"@vue/web-component-wrapper@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" - integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-node@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.0.0, acorn-walk@^8.0.2: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4, acorn@^8.0.5, acorn@^8.5.0, acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -address@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.1.tgz#25bb61095b7522d65b357baa11bc05492d4c8acd" - integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA== - -agent-base@6, agent-base@^6.0.2: +agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== - dependencies: - debug "^4.1.0" - depd "^2.0.0" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv-keywords@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -2427,137 +664,66 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.3, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== +ajv@^8.0.0, ajv@^8.6.3: + version "8.12.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -any-base@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" - integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== - any-promise@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e" - integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw== - app-builder-bin@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" + resolved "https://registry.npmmirror.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== -app-builder-lib@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.13.tgz#c1f5b6afc86596357598bb90b69eef06c7c2eeb3" - integrity sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg== +app-builder-lib@24.6.4: + version "24.6.4" + resolved "https://registry.npmmirror.com/app-builder-lib/-/app-builder-lib-24.6.4.tgz#5bf77dd89d3ee557bc615b9ddfaf383f3e51577b" + integrity sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg== dependencies: "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.0.5" - "@malept/flatpak-bundler" "^0.4.0" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.9" - builder-util "22.14.13" - builder-util-runtime "8.9.2" - chromium-pickle-js "^0.2.0" - debug "^4.3.2" - ejs "^3.1.6" - electron-osx-sign "^0.5.0" - electron-publish "22.14.13" - form-data "^4.0.0" - fs-extra "^10.0.0" - hosted-git-info "^4.0.2" - is-ci "^3.0.0" - isbinaryfile "^4.0.8" - js-yaml "^4.1.0" - lazy-val "^1.0.5" - minimatch "^3.0.4" - read-config-file "6.2.0" - sanitize-filename "^1.6.3" - semver "^7.3.5" - temp-file "^3.4.0" - -app-builder-lib@24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-24.4.0.tgz#1606f94e99366eea9e7507228961b8396e40d546" - integrity sha512-EcdqtWvg1LAApKCfyRBukcVkmsa94s2e1VKHjZLpvA9/D14QEt8rHhffYeaA+cH/pVeoNVn2ob735KnfJKEEow== - dependencies: - "7zip-bin" "~5.1.1" - "@develar/schema-utils" "~2.6.5" - "@electron/notarize" "^1.2.3" - "@electron/osx-sign" "^1.0.4" - "@electron/rebuild" "^3.2.13" - "@electron/universal" "1.3.4" + "@electron/notarize" "2.1.0" + "@electron/osx-sign" "1.0.5" + "@electron/universal" "1.4.1" "@malept/flatpak-bundler" "^0.4.0" "@types/fs-extra" "9.0.13" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "24.4.0" + builder-util "24.5.0" builder-util-runtime "9.2.1" chromium-pickle-js "^0.2.0" debug "^4.3.4" ejs "^3.1.8" - electron-publish "24.4.0" + electron-publish "24.5.0" form-data "^4.0.0" fs-extra "^10.1.0" hosted-git-info "^4.1.0" @@ -2572,220 +738,125 @@ app-builder-lib@24.4.0: tar "^6.1.12" temp-file "^3.4.0" -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -arch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - arg@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + resolved "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asar@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-exit-hook@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + resolved "https://registry.npmmirror.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== -async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" +async-validator@^4.2.5: + version "4.2.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== async@^3.2.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atomically@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + resolved "https://registry.npmmirror.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== -autoprefixer@^10.2.4, autoprefixer@^10.4.8: - version "10.4.12" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.12.tgz#183f30bf0b0722af54ee5ef257f7d4320bb33129" - integrity sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q== +autoprefixer@^10.4.16: + version "10.4.16" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001407" - fraction.js "^4.2.0" + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -await-handler@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/await-handler/-/await-handler-1.1.2.tgz#329c19e9382599898bc12c80c47efdcdaa1b4992" - integrity sha512-dihteGhwbJpT89kVbacWiyKeAZr+En0YGK6pAKQJLR0En9ZxSH2H4TTvfG4bBjzFq9gDAma4y9BrpDns6j5UiQ== - aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + resolved "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -babel-loader@^8.2.2: - version "8.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" - integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +better-sqlite3-multiple-ciphers@^9.0.0: + version "9.0.0" + resolved "https://registry.npmmirror.com/better-sqlite3-multiple-ciphers/-/better-sqlite3-multiple-ciphers-9.0.0.tgz#ce6f10dd5950a508c2bd1596e2863fd5faa3b0bc" + integrity sha512-bM0gv20exF1X1Q8/Rz0PasxCYcgb8VIbQKOhYe3Js35uFAmrvnX8AUqW6c/eq+i8WRtAoRw4yAOBs5Nxx7qaXw== + dependencies: + bindings "^1.5.0" + prebuild-install "^7.1.1" binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" -bl@^4.1.0: +bl@^4.0.3: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -2794,76 +865,29 @@ bl@^4.1.0: bluebird-lst@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" + resolved "https://registry.npmmirror.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== dependencies: bluebird "^3.5.5" -bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.5: +bluebird@^3.5.5: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bmp-js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" - integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== - -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.0.14" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.14.tgz#c346f5bc84e87802d08f8d5a60b93f758e514ee7" - integrity sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ== - dependencies: - array-flatten "^2.1.2" - dns-equal "^1.0.0" - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== boolean@^3.0.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + resolved "https://registry.npmmirror.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -2871,122 +895,63 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.20.3, browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== +browserslist@^4.21.10: + version "4.22.1" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" - integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== - -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== - buffer-equal@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + resolved "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== - buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.1.0, buffer@^5.2.0, buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" -builder-util-runtime@8.9.2: - version "8.9.2" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz#a9669ae5b5dcabfe411ded26678e7ae997246c28" - integrity sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A== - dependencies: - debug "^4.3.2" - sax "^1.2.4" - builder-util-runtime@9.2.1: version "9.2.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz#3184dcdf7ed6c47afb8df733813224ced4f624fd" + resolved "https://registry.npmmirror.com/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz#3184dcdf7ed6c47afb8df733813224ced4f624fd" integrity sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA== dependencies: debug "^4.3.4" sax "^1.2.4" -builder-util@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.13.tgz#41b5b7b4ee53aff4e09cc007fb144522598f3ce6" - integrity sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA== - dependencies: - "7zip-bin" "~5.1.1" - "@types/debug" "^4.1.6" - "@types/fs-extra" "^9.0.11" - app-builder-bin "3.7.1" - bluebird-lst "^1.0.9" - builder-util-runtime "8.9.2" - chalk "^4.1.1" - cross-spawn "^7.0.3" - debug "^4.3.2" - fs-extra "^10.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-ci "^3.0.0" - js-yaml "^4.1.0" - source-map-support "^0.5.19" - stat-mode "^1.0.0" - temp-file "^3.4.0" - -builder-util@24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-24.4.0.tgz#dbb201a118fd573180e6a1070cf4c0be6de80cd7" - integrity sha512-tONb/GIK1MKa1BcOPHE1naId3o5nj6gdka5kP7yUJh2DOfF+jMq3laiu+UOZH6A7ZtkMtnGNMYFKFTIv408n/A== +builder-util@24.5.0: + version "24.5.0" + resolved "https://registry.npmmirror.com/builder-util/-/builder-util-24.5.0.tgz#8683c9a7a1c5c9f9a4c4d2789ecca0e47dddd3f9" + integrity sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ== dependencies: "7zip-bin" "~5.1.1" "@types/debug" "^4.1.6" @@ -3005,62 +970,15 @@ builder-util@24.4.0: stat-mode "^1.0.0" temp-file "^3.4.0" -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + version "7.0.4" + resolved "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" @@ -3070,92 +988,29 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - camelcase-css@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + resolved "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - can-use-dom@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" + resolved "https://registry.npmmirror.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" integrity sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ== -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407: - version "1.0.30001407" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001407.tgz#92281a6ee67cb90bfd8a6a1201fcc2dc19b60a15" - integrity sha512-4ydV+t4P7X3zH83fQWNDX/mQEzYomossfpViCOx9zHBSMV+rIe3LFqglHHtVyvNl1FhTNxPxs3jei82iqOW04w== - -case-sensitive-paths-webpack-plugin@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== +caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001558" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz#d2c6e21fdbfe83817f70feab902421a19b7983ee" + integrity sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ== caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.2, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -3163,7 +1018,7 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: cheerio-select@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: boolbase "^1.0.0" @@ -3173,9 +1028,9 @@ cheerio-select@^2.1.0: domhandler "^5.0.3" domutils "^3.0.1" -cheerio@^1.0.0-rc.12: +cheerio@1.0.0-rc.12: version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + resolved "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: cheerio-select "^2.1.0" @@ -3186,9 +1041,9 @@ cheerio@^1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@^3.0.2, chokidar@^3.5.3: +chokidar@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -3201,256 +1056,97 @@ chokidar@^3.0.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - chromium-pickle-js@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + resolved "https://registry.npmmirror.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251" - integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug== - -clean-css@^5.2.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32" - integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "3.9.0" + resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" string-width "^4.2.0" -clipboardy@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^7.0.2, cliui@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.1.4, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.20.0, commander@^2.9.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmmirror.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - compare-version@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + resolved "https://registry.npmmirror.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" +computeds@^0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e" + integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== conf@^10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + resolved "https://registry.npmmirror.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== dependencies: ajv "^8.6.3" @@ -3466,197 +1162,60 @@ conf@^10.2.0: config-file-ts@^0.2.4: version "0.2.4" - resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" + resolved "https://registry.npmmirror.com/config-file-ts/-/config-file-ts-0.2.4.tgz#6c0741fbe118a7cf786c65f139030f0448a2cc99" integrity sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ== dependencies: glob "^7.1.6" typescript "^4.0.2" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -copy-webpack-plugin@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" - integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^11.0.3" - normalize-path "^3.0.0" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - -core-js-compat@^3.25.1, core-js-compat@^3.8.3: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" - integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== - dependencies: - browserslist "^4.21.4" - -core-js@^3.0.1: - version "3.25.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.3.tgz#cbc2be50b5ddfa7981837bd8c41639f27b166593" - integrity sha512-y1hvKXmPHvm5B7w4ln1S4uc9eV/O5+iFExSRUimnvIph11uaizFR8LFMdONN8hG3P2pipUfX4Y/fR8rAEtcHcQ== - -core-js@^3.8.3: - version "3.25.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.2.tgz#2d3670c1455432b53fa780300a6fc1bd8304932c" - integrity sha512-YB4IAT1bjEfxTJ1XYy11hJAKskO+qmhuDBM8/guIfMz4JvdsAQAqvyb97zXX7JgSrfPLG5mRGFWJwJD39ruq2A== + is-what "^3.14.1" core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - crc@^3.8.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + resolved "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== dependencies: buffer "^5.1.0" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-declaration-sorter@^6.3.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec" - integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== - -css-loader@^6.5.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== +css-render@^0.13.2: + version "0.13.9" + resolved "https://registry.npmmirror.com/css-render/-/css-render-0.13.9.tgz#56f28c180a83a10ec610a12a9ad9fec087ac9dc1" + integrity sha512-n3C4ZH59rveBrUlAD7n0Ze9/gUMKa4dlH1C9CWKpGcIHR/xRcIVXzBGy1iw8WWq2ySmn2/ZqOpySQNAK5Pb6sw== dependencies: - icss-utils "^5.1.0" - postcss "^8.4.7" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.5" + "@emotion/hash" "~0.8.0" + "@types/node" "~14.14.31" + csstype "~3.0.5" -css-minimizer-webpack-plugin@^3.0.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== +css-render@^0.15.10, css-render@^0.15.12: + version "0.15.12" + resolved "https://registry.npmmirror.com/css-render/-/css-render-0.15.12.tgz#76be94066897bd3231a9b9412971ffc258ada66e" + integrity sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw== dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" + "@emotion/hash" "~0.8.0" + csstype "~3.0.5" css-select@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + resolved "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" @@ -3665,286 +1224,146 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1, css-what@^6.1.0: +css-what@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.12: - version "5.2.12" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" - integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== - dependencies: - css-declaration-sorter "^6.3.0" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.2" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.6" - postcss-merge-rules "^5.1.2" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.3" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.0" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.0, cssnano@^5.0.6: - version "5.1.13" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.13.tgz#83d0926e72955332dc4802a7070296e6258efc0a" - integrity sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ== - dependencies: - cssnano-preset-default "^5.2.12" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csstype@^3.1.1: +csstype@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +csstype@~3.0.5: + version "3.0.11" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" +date-fns-tz@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/date-fns-tz/-/date-fns-tz-2.0.0.tgz#1b14c386cb8bc16fc56fe333d4fc34ae1d1099d5" + integrity sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ== + +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + debounce-fn@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + resolved "https://registry.npmmirror.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== dependencies: mimic-fn "^3.0.0" -debug@2.6.9, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.7: +debug@^3.2.6: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" deep-extend@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - defer-to-connect@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3: + version "1.2.1" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== - delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0, depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detective@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" - integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== - dependencies: - acorn-node "^1.8.2" - defined "^1.0.0" - minimist "^1.2.6" - didyoumean@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== - dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" - dir-compare@^3.0.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" + resolved "https://registry.npmmirror.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== dependencies: buffer-equal "^1.0.0" minimatch "^3.0.4" -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - dlv@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dmg-builder@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.13.tgz#cc613f3c18e889b8777d525991fd52f50a564f8c" - integrity sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg== +dmg-builder@24.6.4: + version "24.6.4" + resolved "https://registry.npmmirror.com/dmg-builder/-/dmg-builder-24.6.4.tgz#e19b8305f7e1ea0b4faaa30382c81b9d6de39863" + integrity sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw== dependencies: - app-builder-lib "22.14.13" - builder-util "22.14.13" - builder-util-runtime "8.9.2" - fs-extra "^10.0.0" - iconv-lite "^0.6.2" - js-yaml "^4.1.0" - optionalDependencies: - dmg-license "^1.0.9" - -dmg-builder@24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-24.4.0.tgz#46c80f119465f6a7275766c72b4f3d514cc8013d" - integrity sha512-p5z9Cx539GSBYb+b09Z+hMhuBTh/BrI71VRg4rgF6f2xtIRK/YlTGVS/O08k5OojoyhZcpS7JXxDVSmQoWgiiQ== - dependencies: - app-builder-lib "24.4.0" - builder-util "24.4.0" + app-builder-lib "24.6.4" + builder-util "24.5.0" builder-util-runtime "9.2.1" fs-extra "^10.1.0" iconv-lite "^0.6.2" @@ -3952,9 +1371,9 @@ dmg-builder@24.4.0: optionalDependencies: dmg-license "^1.0.11" -dmg-license@^1.0.11, dmg-license@^1.0.9: +dmg-license@^1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" + resolved "https://registry.npmmirror.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== dependencies: "@types/plist" "^3.0.1" @@ -3966,246 +1385,102 @@ dmg-license@^1.0.11, dmg-license@^1.0.9: smart-buffer "^4.0.2" verror "^1.10.0" -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^5.2.2: - version "5.4.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" - integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" domhandler "^5.0.2" entities "^4.2.0" -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: +domelementtype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: +domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" -dompurify@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.3.tgz#4b115d15a091ddc96f232bcef668550a2f6f1430" - integrity sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ== - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" +dompurify@^3.0.6: + version "3.0.6" + resolved "https://registry.npmmirror.com/dompurify/-/dompurify-3.0.6.tgz#925ebd576d54a9531b5d76f0a5bef32548351dae" + integrity sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w== domutils@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" - integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + version "3.1.0" + resolved "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== dependencies: dom-serializer "^2.0.0" domelementtype "^2.3.0" - domhandler "^5.0.1" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" + domhandler "^5.0.3" dot-prop@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" dotenv-expand@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - dotenv@^9.0.2: version "9.0.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + resolved "https://registry.npmmirror.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -easy-stack@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" - integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== - ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== - dependencies: - jake "^10.8.5" - ejs@^3.1.8: version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-builder@^22.2.0: - version "22.14.13" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.13.tgz#fd40564685cf5422a8f8d667940af3d3776f4fb8" - integrity sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw== +electron-builder@^24.6.4: + version "24.6.4" + resolved "https://registry.npmmirror.com/electron-builder/-/electron-builder-24.6.4.tgz#c51271e49b9a02c9a3ec444f866b6008c4d98a1d" + integrity sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA== dependencies: - "@types/yargs" "^17.0.1" - app-builder-lib "22.14.13" - builder-util "22.14.13" - builder-util-runtime "8.9.2" - chalk "^4.1.1" - dmg-builder "22.14.13" - fs-extra "^10.0.0" - is-ci "^3.0.0" - lazy-val "^1.0.5" - read-config-file "6.2.0" - update-notifier "^5.1.0" - yargs "^17.0.1" - -electron-builder@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-24.4.0.tgz#8846efa45bac8f6b9afc181abf71a4e12530f045" - integrity sha512-D5INxodxaUIJgEX6p/fqBd8wQNS8XRAToNIJ9SQC+taNS5D73ZsjLuXiRraFGCB0cVk9KeKhEkdEOH5AaVya4g== - dependencies: - app-builder-lib "24.4.0" - builder-util "24.4.0" + app-builder-lib "24.6.4" + builder-util "24.5.0" builder-util-runtime "9.2.1" chalk "^4.1.2" - dmg-builder "24.4.0" + dmg-builder "24.6.4" fs-extra "^10.1.0" is-ci "^3.0.0" lazy-val "^1.0.5" read-config-file "6.3.2" - simple-update-notifier "^1.1.0" + simple-update-notifier "2.0.0" yargs "^17.6.2" -electron-devtools-installer@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz#acc48d24eb7033fe5af284a19667e73b78d406d0" - integrity sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ== - dependencies: - rimraf "^3.0.2" - semver "^7.2.1" - tslib "^2.1.0" - unzip-crx-3 "^0.2.0" +electron-log@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/electron-log/-/electron-log-5.0.0.tgz#b5fab83500fce1c61ec7493701f5e228b752d2e2" + integrity sha512-vB3akupmQvA8jAyNL9rULZtf6WoP8vsabjXsRtiqXS6/D37SwN/4LEyj4JD+9Bv6xoTcx/LrVnsIKEEWdq5ClQ== -electron-osx-sign@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a" - integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ== - dependencies: - bluebird "^3.5.0" - compare-version "^0.1.2" - debug "^2.6.8" - isbinaryfile "^3.0.2" - minimist "^1.2.0" - plist "^3.0.1" - -electron-publish@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.13.tgz#8b71e6975af8cc6ac5b21f293ade23f8704047c7" - integrity sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ== +electron-publish@24.5.0: + version "24.5.0" + resolved "https://registry.npmmirror.com/electron-publish/-/electron-publish-24.5.0.tgz#492a4d7caa232e88ee3c18f5c3b4dc637e5e1b3a" + integrity sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA== dependencies: "@types/fs-extra" "^9.0.11" - builder-util "22.14.13" - builder-util-runtime "8.9.2" - chalk "^4.1.1" - fs-extra "^10.0.0" - lazy-val "^1.0.5" - mime "^2.5.2" - -electron-publish@24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-24.4.0.tgz#a58f49ecd727620f65372881788ebb1a9b853284" - integrity sha512-U3mnVSxIfNrLW7ZnwiedFhcLf6ExPFXgAsx89WpfQFsV4gFAt/LG+H74p0m9NSvsLXiZuF82yXoxi7Ou8GHq4Q== - dependencies: - "@types/fs-extra" "^9.0.11" - builder-util "24.4.0" + builder-util "24.5.0" builder-util-runtime "9.2.1" chalk "^4.1.2" fs-extra "^10.1.0" @@ -4214,275 +1489,126 @@ electron-publish@24.4.0: electron-store@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.1.0.tgz#46a398f2bd9aa83c4a9daaae28380e2b3b9c7597" + resolved "https://registry.npmmirror.com/electron-store/-/electron-store-8.1.0.tgz#46a398f2bd9aa83c4a9daaae28380e2b3b9c7597" integrity sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA== dependencies: conf "^10.2.0" type-fest "^2.17.0" -electron-to-chromium@^1.4.251: - version "1.4.256" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz#c735032f412505e8e0482f147a8ff10cfca45bf4" - integrity sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw== +electron-to-chromium@^1.4.535: + version "1.4.569" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.569.tgz#1298b67727187ffbaac005a7425490d157f3ad03" + integrity sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg== -electron@^22.3.17: - version "22.3.17" - resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.17.tgz#90a75f78cc761ed536d8210dd001e142fca78691" - integrity sha512-mo9qD1pOkiibvH+pgETsq9RZF0p3O5ACwxzjk3E2ozMYb9cnJenZyE3jxbs4WqzDCFi+rsm6WWahw3hlPhANXw== +electron@^26.4.2: + version "26.4.2" + resolved "https://registry.npmmirror.com/electron/-/electron-26.4.2.tgz#2f976a3c30558f09ced3f5876862b4c21172c02c" + integrity sha512-BOfQUOIvsq5NnssWOMqcZnA5M0ull620wvQoJq3WhXN1wJAsWu+cdjHvREyxnHbArPkV+F+x3YAi5Dt+UKoqhw== dependencies: "@electron/get" "^2.0.0" - "@types/node" "^16.11.26" + "@types/node" "^18.11.18" extract-zip "^2.0.1" emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -empty-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/empty-dir/-/empty-dir-1.0.0.tgz#be3ea41ca6798dc27bb9407f035888150e4c2995" - integrity sha512-97qcDM6mUA1jAeX6cktw7akc5awIGA+VIkA5MygKOKA+c2Vseo/xwKN0JNJTUhZUtPwZboKVD2p1xu+sV/F4xA== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" - integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + prr "~1.0.1" es6-error@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + resolved "https://registry.npmmirror.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-promise@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -esutils@^2.0.2: +evtd@^0.2.2, evtd@^0.2.4: + version "0.2.4" + resolved "https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz#0aac39ba44d6926e6668948ac27618e0795b9d07" + integrity sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw== + +expand-template@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-pubsub@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" - integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exif-parser@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" - integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== - -express@^4.17.3: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.0" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.10.3" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + resolved "https://registry.npmmirror.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extract-zip@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + resolved "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" @@ -4493,23 +1619,23 @@ extract-zip@^2.0.1: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4519,115 +1645,66 @@ fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -file-type@^16.5.4: - version "16.5.4" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" - integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== - dependencies: - readable-web-to-node-stream "^3.0.0" - strtok3 "^6.2.4" - token-types "^4.1.1" - file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -4636,31 +1713,26 @@ form-data@^4.0.0: form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^10.0.0, fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -4669,16 +1741,16 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -4686,122 +1758,91 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" + has-proto "^1.0.1" has-symbols "^1.0.3" - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" + hasown "^2.0.0" get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -gifwrap@^0.9.2: - version "0.9.4" - resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.9.4.tgz#f4eb6169ba027d61df64aafbdcb1f8ae58ccc0c5" - integrity sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ== - dependencies: - image-q "^4.0.0" - omggif "^1.0.10" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmmirror.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -4811,20 +1852,9 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - global-agent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + resolved "https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== dependencies: boolean "^3.0.1" @@ -4834,48 +1864,23 @@ global-agent@^3.0.0: semver "^7.3.2" serialize-error "^7.0.1" -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globalthis@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" -globby@^11.0.2, globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" + get-intrinsic "^1.1.3" -got@^11.7.0, got@^11.8.5: +got@^11.8.5: version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://registry.npmmirror.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -4890,271 +1895,97 @@ got@^11.7.0, got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA== - -hash-sum@^2.0.0: +hasown@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== +highlight.js@^11.8.0: + version "11.9.0" + resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" + integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.2, hosted-git-info@^4.1.0: +hosted-git-info@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== - -html-tags@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" - integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== - -html-webpack-plugin@^5.1.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" - integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - htmlparser2@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" - integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + version "8.0.2" + resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: domelementtype "^2.3.0" - domhandler "^5.0.2" + domhandler "^5.0.3" domutils "^3.0.1" - entities "^4.3.0" + entities "^4.4.0" http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-cache-semantics@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" agent-base "6" debug "4" -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" @@ -5163,500 +1994,213 @@ http-signature@~1.2.0: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - iconv-corefoundation@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + resolved "https://registry.npmmirror.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== dependencies: cli-truncate "^2.1.0" node-addon-api "^1.6.3" -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: +iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.1.13: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -image-q@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/image-q/-/image-q-4.0.0.tgz#31e075be7bae3c1f42a85c469b4732c358981776" - integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== - dependencies: - "@types/node" "16.9.1" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - ini@~1.3.0: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-ci@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + resolved "https://registry.npmmirror.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: ci-info "^3.2.0" -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + hasown "^2.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-file-esm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-file-esm/-/is-file-esm-1.0.0.tgz#987086b0f5a5318179e9d30f4f2f8d37321e1b5f" - integrity sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA== - dependencies: - read-pkg-up "^7.0.1" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== isbinaryfile@^4.0.8: version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isbinaryfile@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" + resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" - integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== - dependencies: - node-fetch "^2.6.1" - whatwg-fetch "^3.4.1" - isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.7" + resolved "https://registry.npmmirror.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - -jest-worker@^27.0.2, jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jimp@^0.22.7: - version "0.22.7" - resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.22.7.tgz#5b1625f61a4f6ba50f85008cdf1929ae911c684b" - integrity sha512-TJCTJ4ZcFUw6W8XZnR6ajdEu8vSyPi3AuoChs+zLHalXnhAPZgwkzwcXnxey4LNjh1p9dfIUkg8YSQ+q8pBW0A== - dependencies: - "@jimp/custom" "^0.22.7" - "@jimp/plugins" "^0.22.7" - "@jimp/types" "^0.22.7" - regenerator-runtime "^0.13.3" - -joi@^17.4.0: - version "17.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -jpeg-js@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" - integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== - -js-message@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47" - integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +jiti@^1.19.1: + version "1.20.0" + resolved "https://registry.npmmirror.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema-typed@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + resolved "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.0: + version "2.2.3" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -5665,7 +2209,7 @@ jsonfile@^6.0.1: jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" @@ -5673,1619 +2217,616 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -jszip@^3.1.0: - version "3.10.1" - resolved "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + version "4.5.4" + resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klona@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -launch-editor-middleware@^2.2.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz#2ba4fe4b695d7fe3d44dee86b6d46d57b8332dfd" - integrity sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA== - dependencies: - launch-editor "^2.6.0" - -launch-editor@^2.2.1, launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.7.3" - lazy-val@^1.0.4, lazy-val@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + resolved "https://registry.npmmirror.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" +less-loader@^11.1.3: + version "11.1.3" + resolved "https://registry.npmmirror.com/less-loader/-/less-loader-11.1.3.tgz#1bb62d6ca9bf00a177c02793b54baac40f9be694" + integrity sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw== -lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== +less@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -load-bmfont@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" - integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== - dependencies: - buffer-equal "0.0.1" - mime "^1.3.4" - parse-bmfont-ascii "^1.0.3" - parse-bmfont-binary "^1.0.5" - parse-bmfont-xml "^1.1.4" - phin "^2.9.1" - xhr "^2.0.1" - xtend "^4.0.0" - -loader-runner@^4.1.0, loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.defaultsdeep@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.1: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash-es@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -magic-string@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" - integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" + "@jridgewell/sourcemap-codec" "^1.4.15" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - semver "^6.0.0" - -make-fetch-happen@^10.0.3: - version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" + pify "^4.0.1" + semver "^5.6.0" matcher@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + resolved "https://registry.npmmirror.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: escape-string-regexp "^4.0.0" -material-colors@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" - integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.3: - version "3.4.7" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a" - integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== - dependencies: - fs-monkey "^1.0.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@1.6.0, mime@^1.3.4: +mime@^1.4.1: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.5.2: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + resolved "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -mini-css-extract-plugin@^2.5.3: - version "2.6.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" - integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== - dependencies: - schema-utils "^4.0.0" - -mini-svg-data-uri@^1.2.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" - integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^5.1.1: +minimatch@^5.0.1, minimatch@^5.1.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== +minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: - minipass "^3.0.0" + brace-expansion "^2.0.1" -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== - dependencies: - yallist "^4.0.0" - -minipass@^3.1.6: +minipass@^3.0.0: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.1, mkdirp@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^2.1.3: - version "2.1.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" - integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== - -modclean-patterns-default@latest: - version "1.1.2" - resolved "https://registry.yarnpkg.com/modclean-patterns-default/-/modclean-patterns-default-1.1.2.tgz#9b2d53e3abd707edcf0c1501b4d5ac04c947a283" - integrity sha512-h2+ES3SKl+JOtfptJjwJz5fdogFI0byYssw3lXoESNkOcXCnjCvvW6IbMagAKFmfWOx+n9esyomxWP1w4edZjg== - -modclean@^3.0.0-beta.1: - version "3.0.0-beta.1" - resolved "https://registry.yarnpkg.com/modclean/-/modclean-3.0.0-beta.1.tgz#34acdd610f130c2a833dc254486e2a260006d5bf" - integrity sha512-NyJpuqXMUI190sZePU+dBcwlGaqhfFC+UL5WyNSxmNLOHATg9cVSgRpbY+mUbwUj7t5trb4vYscgXArKevYsdA== - dependencies: - await-handler "^1.1.0" - chalk "^2.4.1" - commander "^2.9.0" - empty-dir "^1.0.0" - glob "^7.1.2" - lodash.uniq "^4.5.0" - modclean-patterns-default latest - ora "^2.1.0" - progress "^2.0.0" - rimraf "^2.5.4" - subdirs "^1.0.1" - -module-alias@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== - -mrmime@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" - integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" +muggle-string@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz#e524312eb1728c63dd0b2ac49e3282e6ed85963a" + integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg== -mz@^2.4.0: +mz@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -negotiator@0.6.3, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== +naive-ui@^2.35.0: + version "2.35.0" + resolved "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.35.0.tgz#fe1fc2404694b4114486fa31e609e35714e8ed25" + integrity sha512-PdnLpOip1LQaKs5+rXLZoPDPQkTq26TnHWeABvUA2eOQjtHxE4+TQvj0Jq/W8clM2On/7jptoGmenLt48G3Bhg== dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" + "@css-render/plugin-bem" "^0.15.12" + "@css-render/vue3-ssr" "^0.15.12" + "@types/katex" "^0.16.2" + "@types/lodash" "^4.14.198" + "@types/lodash-es" "^4.17.9" + async-validator "^4.2.5" + css-render "^0.15.12" + date-fns "^2.30.0" + date-fns-tz "^2.0.0" + evtd "^0.2.4" + highlight.js "^11.8.0" + lodash "^4.17.21" + lodash-es "^4.17.21" + seemly "^0.3.6" + treemate "^0.3.11" + vdirs "^0.1.8" + vooks "^0.2.12" + vueuc "^0.4.51" -node-abi@^3.0.0: - version "3.40.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" - integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + +node-abi@^3.3.0: + version "3.51.0" + resolved "https://registry.npmmirror.com/node-abi/-/node-abi-3.51.0.tgz#970bf595ef5a26a271307f8a4befa02823d4e87d" + integrity sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA== dependencies: semver "^7.3.5" node-addon-api@^1.6.3: version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== -node-addon-api@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501" - integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA== - -node-api-version@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080" - integrity sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g== - dependencies: - semver "^7.3.5" - -node-fetch@^2.6.1: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-gyp@^9.0.0: - version "9.3.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" - integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-hash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -omggif@^1.0.10, omggif@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" - integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^8.0.2, open@^8.0.9: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -ora@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" - integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA== - dependencies: - chalk "^2.3.1" - cli-cursor "^2.1.0" - cli-spinners "^1.1.0" - log-symbols "^2.2.0" - strip-ansi "^4.0.0" - wcwidth "^1.0.1" - -ora@^5.1.0, ora@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pako@^1.0.11, pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: +parse-node-version@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-bmfont-ascii@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" - integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== - -parse-bmfont-binary@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" - integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== - -parse-bmfont-xml@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" - integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== - dependencies: - xml-parse-from-string "^1.0.0" - xml2js "^0.4.5" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" + resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: domhandler "^5.0.2" parse5 "^7.0.0" -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parse5@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" - integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== + version "7.1.2" + resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== - pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -phin@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" - integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pinyin-match@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/pinyin-match/-/pinyin-match-1.2.4.tgz#94381bb6501cfd3c24f923fe36c81710d8c49bcc" - integrity sha512-HpUiaSxcG3rrpKAMZXq/rMHbEp7wvfu9B64lHJBy+63xAr/hVdBC8xqkWWPnNyjSb19ihdh8FnXo+9m6jAr9Mg== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pixelmatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" - integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA== +pinia@^2.1.7: + version "2.1.7" + resolved "https://registry.npmmirror.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc" + integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== dependencies: - pngjs "^3.0.0" + "@vue/devtools-api" "^6.5.0" + vue-demi ">=0.14.5" -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" +pinyin-pro@^3.17.0: + version "3.17.0" + resolved "https://registry.npmmirror.com/pinyin-pro/-/pinyin-pro-3.17.0.tgz#33c9f8306b875d1f0314539b150c29f28dc98654" + integrity sha512-0R+K1kDl2Fb21nqKjb9hxKHya/fWuOJCSElWqdh17THSL/cgq95PP/QrJINFezFooepCiP+pbUenV2pRloAHHQ== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-up@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + resolved "https://registry.npmmirror.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" -playwright-core@^1.17.1: - version "1.26.0" - resolved "https://registry.npmmirror.com/playwright-core/-/playwright-core-1.26.0.tgz#850228f0638d410a5cdd69800d552f60e4d295cd" - integrity sha512-p8huU8eU4gD3VkJd3DA1nA7R3XA6rFvFL+1RYS96cSljCF2yJE9CWEHTPF4LqX8KN9MoWCrAfVKP5381X3CZqg== - -plist@^3.0.1, plist@^3.0.4, plist@^3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== +plist@^3.0.4, plist@^3.0.5: + version "3.1.0" + resolved "https://registry.npmmirror.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== dependencies: + "@xmldom/xmldom" "^0.8.8" base64-js "^1.5.1" xmlbuilder "^15.1.1" -pngjs@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" - integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== - -portfinder@^1.0.26: - version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" - integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== - dependencies: - browserslist "^4.20.3" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-import@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: postcss-value-parser "^4.0.0" read-cache "^1.0.0" resolve "^1.1.7" -postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" -postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== dependencies: lilconfig "^2.0.5" - yaml "^1.10.2" + yaml "^2.1.1" -postcss-loader@^6.1.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" + postcss-selector-parser "^6.0.11" -postcss-merge-longhand@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" - integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" - -postcss-merge-rules@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" - integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" - integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== - dependencies: - browserslist "^4.16.6" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-nested@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" - integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== - dependencies: - postcss-selector-parser "^6.0.6" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" - integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" - integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.36: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== +postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.1.10, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.16, postcss@^8.4.7: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== - dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -"prettier@^1.18.2 || ^2.0.0", prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress-webpack-plugin@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz#278f5c1afd21af783aad72c5ec95241520230fe5" - integrity sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA== - dependencies: - chalk "^2.1.0" - figures "^2.0.0" - log-update "^2.3.0" - -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" retry "^0.12.0" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== psl@^1.1.28: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -punycode@^2.1.1: +punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8, rc@^1.2.8: +rc@^1.2.7: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" @@ -7295,25 +2836,14 @@ rc@1.2.8, rc@^1.2.8: read-cache@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" -read-config-file@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" - integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== - dependencies: - dotenv "^9.0.2" - dotenv-expand "^5.1.0" - js-yaml "^4.1.0" - json5 "^2.2.0" - lazy-val "^1.0.4" - read-config-file@6.3.2: version "6.3.2" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.3.2.tgz#556891aa6ffabced916ed57457cb192e61880411" + resolved "https://registry.npmmirror.com/read-config-file/-/read-config-file-6.3.2.tgz#556891aa6ffabced916ed57457cb192e61880411" integrity sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q== dependencies: config-file-ts "^0.2.4" @@ -7323,156 +2853,30 @@ read-config-file@6.3.2: json5 "^2.2.0" lazy-val "^1.0.4" -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.1.1, read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.1, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-web-to-node-stream@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" - integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== - dependencies: - readable-stream "^3.6.0" - readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.3: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexpu-core@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139" - integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -7498,100 +2902,60 @@ request@^2.88.2: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - resolve-alpn@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.1.7, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.npmmirror.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.5.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" roarr@^2.15.3: version "2.15.4" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + resolved "https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== dependencies: boolean "^3.0.1" @@ -7601,413 +2965,173 @@ roarr@^2.15.3: semver-compare "^1.0.0" sprintf-js "^1.1.2" +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize-filename@^1.6.3: version "1.6.3" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + resolved "https://registry.npmmirror.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== dependencies: truncate-utf8-bytes "^1.0.0" sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + version "1.3.0" + resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.8.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== - dependencies: - node-forge "^1" +seemly@^0.3.6: + version "0.3.6" + resolved "https://registry.npmmirror.com/seemly/-/seemly-0.3.6.tgz#7ef97e8083dea00804965e2662f572a5df9cb18e" + integrity sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw== semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== +semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^7.3.8: - version "7.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" - integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== - dependencies: - lru-cache "^6.0.0" - -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - serialize-error@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + resolved "https://registry.npmmirror.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== dependencies: type-fest "^0.13.1" -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" -shebang-loader@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shebang-loader/-/shebang-loader-0.0.1.tgz#a4000495d44cceefbec63435e7b1698569fa52ec" - integrity sha512-nQvhUHvKyzGK5aqPxHfHB5nlAN2EZ2U61S2G0YrxAuCRU5iGhFcxxRiaAdb18UoRS1zVMhRz4gdQ1xFEg3AOyA== - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-update-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== +simple-update-notifier@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== dependencies: - semver "~7.0.0" + semver "^7.5.3" -simplebar@^5.3.8: - version "5.3.9" - resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-5.3.9.tgz#168ea0eb6d52f29f03960e40d9b69a1b28cf6318" - integrity sha512-1vIIpjDvY9sVH14e0LGeiCiTFU3ILqAghzO6OI9axeG+mvU/vMSrvXeAXkBolqFFz3XYaY8n5ahH9MeP3sp2Ag== +simplebar-core@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/simplebar-core/-/simplebar-core-1.2.4.tgz#1fe965716a426f812c1a112ce28d98b9a643797b" + integrity sha512-P+Sqshef4fq3++gQ82TgNYcgl3qZFSCP5jS2/8NMmw18oagXOijMzs1G+vm6RUY3oMvpwH3wGoqh9u6SyDjHfQ== dependencies: - "@juggle/resize-observer" "^3.3.1" + "@types/lodash-es" "^4.17.6" can-use-dom "^0.1.0" - core-js "^3.0.1" - lodash.debounce "^4.0.8" - lodash.memoize "^4.1.2" - lodash.throttle "^4.1.1" + lodash "^4.17.21" + lodash-es "^4.17.21" -sirv@^1.0.7: - version "1.0.19" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" - integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== +simplebar@^6.2.5: + version "6.2.5" + resolved "https://registry.npmmirror.com/simplebar/-/simplebar-6.2.5.tgz#9d7cdf9f9a57b28f2497d165caf60f1bc644913e" + integrity sha512-vfxKR6KNBsPx7+sZnqO7T8VuCvi4px6OlycrrkNgyjvoHhRW7LIyVkHhUfXxbz33Gw99Wb9UMMsnEZv35wtLSw== dependencies: - "@polka/url" "^1.0.0-next.20" - mrmime "^1.0.0" - totalist "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + can-use-dom "^0.1.0" + simplebar-core "^1.2.4" slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -smart-buffer@^4.0.2, smart-buffer@^4.2.0: +smart-buffer@^4.0.2: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - sortablejs@^1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a" integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w== source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@^0.5.19, source-map-support@~0.5.20: +source-map-support@^0.5.19: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + version "1.1.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.18.0" + resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -8019,216 +3143,124 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - stat-mode@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" + resolved "https://registry.npmmirror.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== +sucrase@^3.32.0: + version "3.34.0" + resolved "https://registry.npmmirror.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== dependencies: - "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" - -stylehacks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" - integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== - dependencies: - browserslist "^4.16.6" - postcss-selector-parser "^6.0.4" - -subdirs@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/subdirs/-/subdirs-1.0.1.tgz#d65264787476e4caf7efc5498fb740c69f626d48" - integrity sha512-KSbUKpwQIRcb5Th+l4EzxEZYpCwV/g0pQ348EV7CIM5YEEgzz2L1KJD8FCeTckTiE/TKn2u09DCxpdAL6/iFbg== - dependencies: - es6-promise "^3.0.2" + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" sumchecker@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + resolved "https://registry.npmmirror.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== dependencies: debug "^4.1.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -tailwindcss@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" - integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== +tailwindcss@^3.3.5: + version "3.3.5" + resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" + integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== dependencies: + "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" - color-name "^1.1.4" - detective "^5.2.1" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.11" + fast-glob "^3.3.0" glob-parent "^6.0.2" is-glob "^4.0.3" - lilconfig "^2.0.6" + jiti "^1.19.1" + lilconfig "^2.1.0" + micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.14" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "5.0.6" - postcss-selector-parser "^6.0.10" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" -tar@^6.0.5, tar@^6.1.12, tar@^6.1.2: - version "6.1.14" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.14.tgz#e87926bec1cfe7c9e783a77a79f3e81c1cfa3b66" - integrity sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw== +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^6.1.12: + version "6.2.0" + resolved "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -8237,412 +3269,171 @@ tar@^6.0.5, tar@^6.1.12, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - temp-file@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" + resolved "https://registry.npmmirror.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== dependencies: async-exit-hook "^2.0.1" fs-extra "^10.0.0" -terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.0: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" - -terser-webpack-plugin@^5.3.8: - version "5.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz#415e03d2508f7de63d59eca85c5d102838f06610" - integrity sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@^5.10.0, terser@^5.14.1: - version "5.15.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.16.8: - version "5.17.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.2.tgz#06c9818ae998066234b985abeb57bb7bff29d449" - integrity sha512-1D1aGbOF1Mnayq5PvfMc0amAR1y5Z1nrZaGCvI5xsdEfZEVte8okonk02OiaK5fw5hG1GWuuVsakOnpZW8y25A== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - thenify-all@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" -thread-loader@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" - integrity sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA== - dependencies: - json-parse-better-errors "^1.0.2" - loader-runner "^4.1.0" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timm@^1.6.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" - integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== - -tinycolor2@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== - tmp-promise@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + resolved "https://registry.npmmirror.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" tmp@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -token-types@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" - integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== - dependencies: - "@tokenizer/token" "^0.3.0" - ieee754 "^1.2.1" - -totalist@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" - integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +treemate@^0.3.11: + version "0.3.11" + resolved "https://registry.npmmirror.com/treemate/-/treemate-0.3.11.tgz#7d52f8f69ab9ce326f8d139e0a3d1ffb25e48222" + integrity sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg== truncate-utf8-bytes@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + resolved "https://registry.npmmirror.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== dependencies: utf8-byte-length "^1.0.1" -tslib@^2.0.3, tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@^2.3.0: + version "2.6.2" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-fest@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-fest@^2.17.0: version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typescript@^4.0.2: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unzip-crx-3@^0.2.0: - version "0.2.0" - resolved "https://registry.npmmirror.com/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz#d5324147b104a8aed9ae8639c95521f6f7cda292" - integrity sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ== - dependencies: - jszip "^3.1.0" - mkdirp "^0.5.1" - yaku "^0.16.6" - -update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== - dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urijs@^1.19.11: version "1.19.11" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" + resolved "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - utf8-byte-length@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + resolved "https://registry.npmmirror.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== -utif2@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/utif2/-/utif2-4.0.1.tgz#562433ef58d76b16d85638f052b2d8486122062c" - integrity sha512-KMaD76dbzK1VjbwsckHJiqDjhP3pbpwyV+FdqkY6XFQenc2o/HS6pjPSYdu4+NQMHf2NLTW+nVP/eFP1CvOYQQ== - dependencies: - pako "^1.0.11" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +vdirs@^0.1.4, vdirs@^0.1.8: + version "0.1.8" + resolved "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz#a103bc43baca738f8dea912a7e9737154a19dbc2" + integrity sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + evtd "^0.2.2" verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" @@ -8651,300 +3442,99 @@ verror@1.10.0: verror@^1.10.0: version "1.10.1" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + resolved "https://registry.npmmirror.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -vue-cli-plugin-electron-builder@^3.0.0-alpha.4: - version "3.0.0-alpha.4" - resolved "https://registry.npmmirror.com/vue-cli-plugin-electron-builder/-/vue-cli-plugin-electron-builder-3.0.0-alpha.4.tgz#3a3aae23c593bf8a8ebaf681e3f4e614b83e6aeb" - integrity sha512-YHt0w3onxE6F5OJJTkArm2gIpJi0QW8QEp7uMV+vg+Ze8C3To/Qt8K5eIPkVs72uxqjiBhmE2Xapl3rHz9kEJg== +vite-plugin-electron@^0.14.1: + version "0.14.1" + resolved "https://registry.npmmirror.com/vite-plugin-electron/-/vite-plugin-electron-0.14.1.tgz#faad1e26d853ea7960b812272c19521c7f180482" + integrity sha512-QGQ2nJ4wjMf1FaDSkdoC/UskQGiYGcAToATJqJXvqrL4Jmt0CFaZqoDjh1xLicUWEo/X7urHYjhKTqwEeP7F7g== + +vite@^4.4.11: + version "4.5.0" + resolved "https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== dependencies: - "@soda/friendly-errors-webpack-plugin" "^1.8.1" - "@vue/cli-shared-utils" "^5.0.0-rc.1" - chokidar "^3.0.2" - electron-builder "^22.2.0" - execa "^5.0.0" - fs-extra "^10.0.0" - lodash.merge "^4.6.1" - playwright-core "^1.17.1" - shebang-loader "^0.0.1" - terser-webpack-plugin "^5.3.0" - webpack "^5.65.0" - webpack-chain "^6.0.0" - webpack-merge "^5.8.0" - yargs "^16.2.0" + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-loader@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-17.0.0.tgz#2eaa80aab125b19f00faa794b5bd867b17f85acb" - integrity sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg== +vooks@^0.2.12, vooks@^0.2.4: + version "0.2.12" + resolved "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz#2b6e23330b77bac81c7f7a344c4ca3e9f4f6c373" + integrity sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q== dependencies: - chalk "^4.1.0" - hash-sum "^2.0.0" - loader-utils "^2.0.0" + evtd "^0.2.2" -vue-router@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.0.tgz#558f31978a21ce3accf5122ffdf2cec34a5d2517" - integrity sha512-c+usESa6ZoWsm4PPdzRSyenp5A4dsUtnDJnrI03fY1IpIihA9TK3x5ffgkFDpjhLJZewsXoKURapNLFdZjuqTg== +vue-demi@>=0.14.5: + version "0.14.6" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" + integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== + +vue-router@^4.2.5: + version "4.2.5" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" + integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== dependencies: "@vue/devtools-api" "^6.5.0" -vue-style-loader@^4.1.0, vue-style-loader@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== +vue-template-compiler@^2.7.14: + version "2.7.15" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz#ec88ba8ceafe0f17a528b89c57e01e02da92b0de" + integrity sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og== dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" + de-indent "^1.0.2" + he "^1.2.0" -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" - integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== +vue-tsc@^1.8.22: + version "1.8.22" + resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323" + integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-sfc" "3.3.4" - "@vue/runtime-dom" "3.3.4" - "@vue/server-renderer" "3.3.4" - "@vue/shared" "3.3.4" + "@volar/typescript" "~1.10.5" + "@vue/language-core" "1.8.22" + semver "^7.5.4" -vuex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c" - integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ== +vue@^3.3.7: + version "3.3.7" + resolved "https://registry.npmmirror.com/vue/-/vue-3.3.7.tgz#972a218682443a3819d121261b2bff914417f4f0" + integrity sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA== dependencies: - "@vue/devtools-api" "^6.0.0-beta.11" + "@vue/compiler-dom" "3.3.7" + "@vue/compiler-sfc" "3.3.7" + "@vue/runtime-dom" "3.3.7" + "@vue/server-renderer" "3.3.7" + "@vue/shared" "3.3.7" -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +vueuc@^0.4.51: + version "0.4.51" + resolved "https://registry.npmmirror.com/vueuc/-/vueuc-0.4.51.tgz#35cd5364db4b71fc791a9823748711b91d910d49" + integrity sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw== dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + "@css-render/vue3-ssr" "^0.15.10" + "@juggle/resize-observer" "^3.3.1" + css-render "^0.15.10" + evtd "^0.2.4" + seemly "^0.3.6" + vdirs "^0.1.4" + vooks "^0.2.4" -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webpack-bundle-analyzer@^4.4.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#bee2ee05f4ba4ed430e4831a319126bb4ed9f5a6" - integrity sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw== - dependencies: - acorn "^8.0.4" - acorn-walk "^8.0.0" - chalk "^4.1.0" - commander "^7.2.0" - gzip-size "^6.0.0" - lodash "^4.17.20" - opener "^1.5.2" - sirv "^1.0.7" - ws "^7.3.1" - -webpack-chain@^6.0.0, webpack-chain@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.7.3: - version "4.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5" - integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.4.2" - -webpack-merge@^5.7.3, webpack-merge@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-virtual-modules@^0.4.2: - version "0.4.5" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.5.tgz#e476842dab5eafb7beb844aa2f747fc12ebbf6ec" - integrity sha512-8bWq0Iluiv9lVf9YaqWQ9+liNgXSHICm+rg544yRgGYaR8yXZTVBaHZkINZSB2yZSWo4b0F6MIxqJezVfOEAlg== - -webpack@^5.54.0, webpack@^5.65.0: - version "5.74.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" - integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-fetch@^3.4.1, whatwg-fetch@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -8953,144 +3543,50 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.3.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.4.2: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" - integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xhr@^2.0.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-parse-from-string@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" - integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== - -xml2js@^0.4.5: - version "0.4.23" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xml2js@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" - integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== +xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== dependencies: sax ">=0.6.0" xmlbuilder "~11.0.0" xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== xmlbuilder@~11.0.0: version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xtend@^4.0.0, xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yaku@^0.16.6: - version "0.16.7" - resolved "https://registry.npmmirror.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e" - integrity sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.1.1: + version "2.3.3" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.0, yargs-parser@^21.1.1: +yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^16.0.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - yargs@^17.6.2: version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -9103,7 +3599,7 @@ yargs@^17.6.2: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3"