├── icon.png ├── preview.png ├── .gitignore ├── tsconfig.json ├── src ├── i18n │ ├── zh_CN.json │ └── en_US.json ├── index.scss └── index.ts ├── package.json ├── LICENSE ├── plugin.json ├── eslint.config.mjs ├── webpack.config.js ├── README_zh_CN.md ├── CHANGELOG.md ├── README.md └── pnpm-lock.yaml /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siyuan-note/plugin-sample/HEAD/icon.png -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siyuan-note/plugin-sample/HEAD/preview.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | .DS_Store 4 | .eslintcache 5 | dist 6 | package.zip 7 | index.css 8 | index.js 9 | /i18n 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": true, 4 | "module": "commonjs", 5 | "target": "es6" 6 | }, 7 | "include": [ 8 | "src/**/*.ts" 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /src/i18n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "addTopBarIcon": "使用插件添加一个顶栏按钮", 3 | "cancel": "取消", 4 | "save": "保存", 5 | "byeMenu": "再见,菜单!", 6 | "helloPlugin": "你好,插件!", 7 | "byePlugin": "再见,插件!", 8 | "showDialog": "弹出一个对话框", 9 | "getTab": "在日志中打印出已打开的所有自定义页签", 10 | "removedData": "数据已删除", 11 | "confirmRemove": "确认删除 ${name} 中的数据?", 12 | "insertEmoji": "插入表情", 13 | "removeSpace": "移除空格" 14 | } 15 | -------------------------------------------------------------------------------- /src/i18n/en_US.json: -------------------------------------------------------------------------------- 1 | { 2 | "addTopBarIcon": "Add a top bar icon by plugin", 3 | "cancel": "Cancel", 4 | "save": "Save", 5 | "byeMenu": "Bye, Menu!", 6 | "helloPlugin": "Hello, Plugin!", 7 | "byePlugin": "Bye, Plugin!", 8 | "showDialog": "Show dialog", 9 | "getTab": "Print out all opened custom tabs in the debugger", 10 | "removedData": "Data deleted", 11 | "confirmRemove": "Confirm to delete the data in ${name}?", 12 | "insertEmoji": "Insert Emoji", 13 | "removeSpace": "Remove Space" 14 | } 15 | -------------------------------------------------------------------------------- /src/index.scss: -------------------------------------------------------------------------------- 1 | .plugin-sample { 2 | &__custom-tab { 3 | background-color: var(--b3-theme-background); 4 | height: 100%; 5 | width: 100%; 6 | display: flex; 7 | justify-content: center; 8 | align-items: center; 9 | } 10 | 11 | &__custom-dock { 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | } 16 | 17 | &__time { 18 | background: var(--b3-card-info-background); 19 | border-radius: 4px; 20 | padding: 2px 8px; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "plugin-sample", 3 | "version": "0.4.3", 4 | "description": "This is a sample plugin for Siyuan (https://b3log.org/siyuan)", 5 | "main": ".src/index.js", 6 | "scripts": { 7 | "lint": "eslint . --fix --cache", 8 | "dev": "webpack --mode development", 9 | "build": "webpack --mode production" 10 | }, 11 | "keywords": [], 12 | "author": "Vanessa", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "@typescript-eslint/eslint-plugin": "8.40.0", 16 | "@typescript-eslint/parser": "8.40.0", 17 | "copy-webpack-plugin": "^11.0.0", 18 | "css-loader": "^6.7.1", 19 | "esbuild-loader": "^3.0.1", 20 | "eslint": "^9.33.0", 21 | "mini-css-extract-plugin": "2.3.0", 22 | "sass": "^1.62.1", 23 | "sass-loader": "^12.6.0", 24 | "siyuan": "1.1.6", 25 | "tslib": "2.4.0", 26 | "typescript": "4.8.4", 27 | "webpack": "^5.76.0", 28 | "webpack-cli": "^5.0.2", 29 | "zip-webpack-plugin": "^4.0.1", 30 | "globals": "^16.3.0" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 SiYuan 思源笔记 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "plugin-sample", 3 | "author": "Vanessa", 4 | "url": "https://github.com/siyuan-note/plugin-sample", 5 | "version": "0.4.3", 6 | "minAppVersion": "3.4.2", 7 | "backends": [ 8 | "windows", 9 | "linux", 10 | "darwin", 11 | "ios", 12 | "android", 13 | "harmony", 14 | "docker", 15 | "all" 16 | ], 17 | "frontends": [ 18 | "desktop", 19 | "mobile", 20 | "browser-desktop", 21 | "browser-mobile", 22 | "desktop-window", 23 | "all" 24 | ], 25 | "disabledInPublish": false, 26 | "displayName": { 27 | "default": "Plugin Sample", 28 | "zh_CN": "插件示例" 29 | }, 30 | "description": { 31 | "default": "This is a plugin development sample", 32 | "zh_CN": "这是一个插件开发示例" 33 | }, 34 | "readme": { 35 | "default": "README.md", 36 | "zh_CN": "README_zh_CN.md" 37 | }, 38 | "funding": { 39 | "openCollective": "", 40 | "patreon": "", 41 | "github": "", 42 | "custom": [ 43 | "https://ld246.com/sponsor" 44 | ] 45 | }, 46 | "keywords": [ 47 | "开发者参考", 48 | "developer reference", 49 | "示例插件" 50 | ] 51 | } 52 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import typescriptEslint from "@typescript-eslint/eslint-plugin"; 2 | import globals from "globals"; 3 | import tsParser from "@typescript-eslint/parser"; 4 | import path from "node:path"; 5 | import {fileURLToPath} from "node:url"; 6 | import js from "@eslint/js"; 7 | import {FlatCompat} from "@eslint/eslintrc"; 8 | 9 | const __filename = fileURLToPath(import.meta.url); 10 | const __dirname = path.dirname(__filename); 11 | const compat = new FlatCompat({ 12 | baseDirectory: __dirname, 13 | recommendedConfig: js.configs.recommended, 14 | allConfig: js.configs.all 15 | }); 16 | 17 | export default [{ 18 | ignores: [ 19 | "dist", 20 | "node_modules", 21 | "index.js", 22 | ], 23 | }, ...compat.extends("eslint:recommended", "plugin:@typescript-eslint/recommended"), { 24 | plugins: { 25 | "@typescript-eslint": typescriptEslint, 26 | }, 27 | 28 | languageOptions: { 29 | globals: { 30 | ...globals.node, 31 | ...globals.browser, 32 | }, 33 | 34 | parser: tsParser, 35 | }, 36 | 37 | rules: { 38 | semi: [2, "always"], 39 | quotes: [2, "double", { 40 | avoidEscape: true, 41 | }], 42 | "@typescript-eslint/no-unused-vars": ["warn", {caughtErrors: "none"}], 43 | "no-async-promise-executor": "off", 44 | "no-prototype-builtins": "off", 45 | "no-useless-escape": "off", 46 | "no-irregular-whitespace": "off", 47 | "@typescript-eslint/ban-ts-comment": "off", 48 | "@typescript-eslint/no-var-requires": "off", 49 | "@typescript-eslint/explicit-function-return-type": "off", 50 | "@typescript-eslint/explicit-module-boundary-types": "off", 51 | "@typescript-eslint/no-explicit-any": "off", 52 | "@typescript-eslint/no-require-imports": "off", 53 | }, 54 | }]; 55 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const fs = require("fs"); 3 | const webpack = require("webpack"); 4 | const {EsbuildPlugin} = require("esbuild-loader"); 5 | const MiniCssExtractPlugin = require("mini-css-extract-plugin"); 6 | const CopyPlugin = require("copy-webpack-plugin"); 7 | const ZipPlugin = require("zip-webpack-plugin"); 8 | 9 | module.exports = (env, argv) => { 10 | const isPro = argv.mode === "production"; 11 | const plugins = [ 12 | new MiniCssExtractPlugin({ 13 | filename: isPro ? "dist/index.css" : "index.css", 14 | }) 15 | ]; 16 | let entry = { 17 | "index": "./src/index.ts", 18 | }; 19 | if (isPro) { 20 | entry = { 21 | "dist/index": "./src/index.ts", 22 | }; 23 | plugins.push(new webpack.BannerPlugin({ 24 | banner: () => { 25 | return fs.readFileSync("LICENSE").toString(); 26 | }, 27 | })); 28 | plugins.push(new CopyPlugin({ 29 | patterns: [ 30 | {from: "preview.png", to: "./dist/"}, 31 | {from: "icon.png", to: "./dist/"}, 32 | {from: "README*.md", to: "./dist/"}, 33 | {from: "plugin.json", to: "./dist/"}, 34 | {from: "src/i18n/", to: "./dist/i18n/"}, 35 | ], 36 | })); 37 | plugins.push(new ZipPlugin({ 38 | filename: "package.zip", 39 | algorithm: "gzip", 40 | include: [/dist/], 41 | pathMapper: (assetPath) => { 42 | return assetPath.replace("dist/", ""); 43 | }, 44 | })); 45 | } else { 46 | plugins.push(new CopyPlugin({ 47 | patterns: [ 48 | {from: "src/i18n/", to: "./i18n/"}, 49 | ], 50 | })); 51 | } 52 | return { 53 | mode: argv.mode || "development", 54 | watch: !isPro, 55 | devtool: isPro ? false : "eval", 56 | output: { 57 | filename: "[name].js", 58 | path: path.resolve(__dirname), 59 | libraryTarget: "commonjs2", 60 | library: { 61 | type: "commonjs2", 62 | }, 63 | }, 64 | externals: { 65 | siyuan: "siyuan", 66 | }, 67 | entry, 68 | optimization: { 69 | minimize: true, 70 | minimizer: [ 71 | new EsbuildPlugin(), 72 | ], 73 | }, 74 | resolve: { 75 | extensions: [".ts", ".scss", ".js", ".json"], 76 | }, 77 | module: { 78 | rules: [ 79 | { 80 | test: /\.ts(x?)$/, 81 | include: [path.resolve(__dirname, "src")], 82 | use: [ 83 | { 84 | loader: "esbuild-loader", 85 | options: { 86 | target: "es6", 87 | } 88 | }, 89 | ], 90 | }, 91 | { 92 | test: /\.scss$/, 93 | include: [path.resolve(__dirname, "src")], 94 | use: [ 95 | MiniCssExtractPlugin.loader, 96 | { 97 | loader: "css-loader", // translates CSS into CommonJS 98 | }, 99 | { 100 | loader: "sass-loader", // compiles Sass to CSS 101 | }, 102 | ], 103 | } 104 | ], 105 | }, 106 | plugins, 107 | }; 108 | }; 109 | -------------------------------------------------------------------------------- /README_zh_CN.md: -------------------------------------------------------------------------------- 1 | [English](https://github.com/siyuan-note/plugin-sample/blob/main/README.md) 2 | 3 | # 思源笔记插件示例 4 | 5 | ## 开始 6 | 7 | * 通过 Use this template 按钮将该库文件复制到你自己的库中,请注意库名必须和插件名称一致,默认分支必须为 `main` 8 | * 将你的库克隆到本地开发文件夹中,为了方便可以直接将开发文件夹放置在 `{工作空间}/data/plugins/` 下 9 | * 安装 [NodeJS](https://nodejs.org/en/download) 和 [pnpm](https://pnpm.io/installation),然后在开发文件夹下执行 `pnpm i` 10 | * 执行 `pnpm run dev` 进行实时编译 11 | * 在思源中打开集市并在下载选项卡中启用插件 12 | 13 | ## 开发 14 | 15 | * i18n/* 16 | * icon.png (160*160) 17 | * index.css 18 | * index.js 19 | * plugin.json 20 | * preview.png (1024*768) 21 | * README*.md 22 | * [前端 API](https://github.com/siyuan-note/petal) 23 | * [后端 API](https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md) 24 | 25 | ## 国际化 26 | 27 | 国际化方面我们主要考虑的是支持多语言,具体需要完成以下工作: 28 | 29 | * 插件自身的元信息,比如插件描述和自述文件 30 | * plugin.json 中的 `displayName`、`description` 和 `readme` 字段,以及对应的 README*.md 文件 31 | * 插件中使用的文本,比如按钮文字和提示信息 32 | * src/i18n/*.json 语言配置文件 33 | * 代码中使用 `this.i18.key` 获取文本 34 | 35 | 建议插件至少支持英文和简体中文,这样可以方便更多人使用。不支持的语种不需要在 plugin.json 中的 `displayName`、`description` 和 `readme` 字段中声明。 36 | 37 | ## plugin.json 38 | 39 | 一个典型的示例如下: 40 | 41 | ```json 42 | { 43 | "name": "plugin-sample", 44 | "author": "Vanessa", 45 | "url": "https://github.com/siyuan-note/plugin-sample", 46 | "version": "0.4.2", 47 | "minAppVersion": "3.3.0", 48 | "backends": ["all"], 49 | "frontends": ["all"], 50 | "disabledInPublish": false, 51 | "displayName": { 52 | "default": "Plugin Sample", 53 | "zh_CN": "插件示例" 54 | }, 55 | "description": { 56 | "default": "This is a plugin development sample", 57 | "zh_CN": "这是一个插件开发示例" 58 | }, 59 | "readme": { 60 | "default": "README.md", 61 | "zh_CN": "README_zh_CN.md" 62 | }, 63 | "funding": { 64 | "custom": ["https://ld246.com/sponsor"] 65 | }, 66 | "keywords": [ 67 | "开发者参考", 68 | "developer reference", 69 | "示例插件" 70 | ] 71 | } 72 | ``` 73 | 74 | * `name`:插件包名,必须和 GitHub 仓库名一致,且不能与集市中的其他插件重复 75 | * `author`:插件作者名 76 | * `url`:插件仓库地址 77 | * `version`:插件版本号,需要遵循 [semver](https://semver.org/lang/zh-CN/) 规范 78 | * `minAppVersion`:插件支持的最低思源笔记版本号 79 | * `disabledInPublish`:使用发布服务时是否禁用该插件,默认为 false,即不禁用 80 | * `backends`:插件需要的后端环境,可选值为 `windows`, `linux`, `darwin`, `docker`, `android`, `ios`, `harmony` 和 `all` 81 | * `windows`:Windows 桌面端 82 | * `linux`:Linux 桌面端 83 | * `darwin`:macOS 桌面端 84 | * `docker`:Docker 端 85 | * `android`:Android 端 86 | * `ios`:iOS 端 87 | * `harmony`:鸿蒙端 88 | * `all`:所有环境 89 | * `frontends`:插件需要的前端环境,可选值为 `desktop`, `desktop-window`, `mobile`, `browser-desktop`, `browser-mobile` 和 `all` 90 | * `desktop`:桌面端 91 | * `desktop-window`:桌面端页签转换的独立窗口 92 | * `mobile`:移动端 93 | * `browser-desktop`:桌面端浏览器 94 | * `browser-mobile`:移动端浏览器 95 | * `all`:所有环境 96 | * `displayName`:插件名称,在插件集市列表中显示 97 | * `default`:默认语言,必须存在。如果插件支持英文,此处应使用英文 98 | * `zh_CN`、`en_US` 等其他语言:可选 99 | * `description`:插件描述,在插件集市列表中显示 100 | * `default`:默认语言,必须存在。如果插件支持英文,此处应使用英文 101 | * `zh_CN`、`en_US` 等其他语言:可选 102 | * `readme`:自述文件名,在插件集市详情页中显示 103 | * `default`:默认语言,必须存在。如果插件支持英文,此处应使用英文 104 | * `zh_CN`、`en_US` 等其他语言:可选 105 | * `funding`:插件赞助信息,集市仅显示其中一种 106 | * `openCollective`:Open Collective 名称 107 | * `patreon`:Patreon 名称 108 | * `github`:GitHub 登录名 109 | * `custom`:自定义赞助链接列表 110 | * `keywords`:搜索关键字列表,用于集市搜索功能,补充 `name`、`author`、`displayName`、`description` 字段值以外的搜索关键词 111 | 112 | ## 打包 113 | 114 | 无论使用何种方式编译打包,我们最终需要生成一个 package.zip,它至少包含如下文件: 115 | 116 | * i18n/* (如果插件支持多语言,则需要将语言文件打包到该目录下,否则不需要该目录) 117 | * icon.png (建议尺寸为 160*160、文件大小不超过 20KB) 118 | * index.css 119 | * index.js 120 | * plugin.json 121 | * preview.png (建议尺寸为 1024*768、文件大小不超过 200KB) 122 | * README*.md 123 | 124 | ## 上架集市 125 | 126 | * 执行 `pnpm run build` 生成 package.zip 127 | * 在 GitHub 上创建一个新的发布,使用插件版本号作为 “Tag version”,示例 https://github.com/siyuan-note/plugin-sample/releases 128 | * 上传 package.zip 作为二进制附件 129 | * 提交发布 130 | 131 | 如果是第一次发布版本,还需要创建一个 PR 到 [Community Bazaar](https://github.com/siyuan-note/bazaar) 社区集市仓库,修改该库的 plugins.json。该文件是所有社区插件库的索引,格式为: 132 | 133 | ```json 134 | { 135 | "repos": [ 136 | "username/reponame" 137 | ] 138 | } 139 | ``` 140 | 141 | PR 被合并以后集市会通过 GitHub Actions 自动更新索引并部署。后续发布新版本插件时只需要按照上述步骤创建新的发布即可,不需要再 PR 社区集市仓库。 142 | 143 | 正常情况下,社区集市仓库每隔 1 小时会自动更新索引并部署,可在 https://github.com/siyuan-note/bazaar/actions 查看部署状态。 144 | 145 | ## 开发者须知 146 | 147 | 开发者需注意以下规范。 148 | 149 | ### 1. 读写文件规范 150 | 151 | 插件或者外部扩展如果有直接读取或者写入 data 下文件的需求,请通过调用内核 API 来实现,**不要自行调用 `fs` 或者其他 electron、nodejs API**,否则可能会导致数据同步时分块丢失,造成云端数据损坏。 152 | 153 | 相关 API 见 `/api/file/*`(例如 `/api/file/getFile` 等)。 154 | 155 | ### 2. Daily Note 属性规范 156 | 157 | 思源在创建日记的时候会自动为文档添加 custom-dailynote-yyyymmdd 属性,以方便将日记文档同普通文档区分。 158 | 159 | > 详情请见 [Github Issue #9807](https://github.com/siyuan-note/siyuan/issues/9807)。 160 | 161 | 开发者在开发手动创建 Daily Note 的功能时请注意: 162 | 163 | * 如果调用了 `/api/filetree/createDailyNote` 创建日记,那么文档会自动添加这个属性,无需开发者特别处理 164 | * 如果是开发者代码手动创建文档(例如使用 `createDocWithMd` API 创建日记),请手动为文档添加该属性 165 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## v0.4.3 2025-12-02 4 | 5 | * [Add onDataChanged method to handle data changes in the plugin](https://github.com/siyuan-note/siyuan/pull/16244) 6 | 7 | ## v0.4.2 2025-08-26 8 | 9 | * [Upgrade ESLint to 9.33.0](https://github.com/siyuan-note/plugin-sample/issues/30) 10 | * [Adjust `addTopBar` and `addStatusBar` from `onload` lifecycle to `onLayoutReady`](https://github.com/siyuan-note/siyuan/issues/15455) 11 | 12 | ## v0.4.1 2025-07-22 13 | 14 | * [Add plugin function `saveLayout`](https://github.com/siyuan-note/siyuan/issues/15308) 15 | 16 | ## v0.4.0 2025-04-08 17 | 18 | * [Add plugin function `openAttributePanel`](https://github.com/siyuan-note/siyuan/issues/14276) 19 | 20 | ## v0.3.9 2025-03-04 21 | 22 | * [Add parameter `nodeElement` to `protyleSlash.callback`](https://github.com/siyuan-note/siyuan/issues/14036) 23 | 24 | ## v0.3.8 2025-02-11 25 | 26 | * [Add plugin util `openSetting`](https://github.com/siyuan-note/siyuan/pull/13761) 27 | * [Add plugin method `updateProtyleToolbar`](https://github.com/siyuan-note/plugin-sample/issues/24) 28 | 29 | ## v0.3.7 2024-11-05 30 | 31 | * [Add plugin util `platformUtils`](https://github.com/siyuan-note/siyuan/issues/12930) 32 | * [Add plugin function `getAllEditor`](https://github.com/siyuan-note/siyuan/issues/12884) 33 | * [Add plugin function `getModelByDockType`](https://github.com/siyuan-note/siyuan/issues/11782) 34 | * [Replace `any` in IProtyle with the corresponding type](https://github.com/siyuan-note/petal/issues/34) 35 | * [Add `data-id` attribute to menu button](https://github.com/siyuan-note/plugin-sample/pull/20) 36 | 37 | ## v0.3.6 2024-09-27 38 | 39 | * [Add plugin event bus `opened-notebook` & `closed-notebook`](https://github.com/siyuan-note/siyuan/issues/11974) 40 | * [⬆️ Bump braces from 3.0.2 to 3.0.3](https://github.com/siyuan-note/plugin-sample/pull/16) 41 | 42 | ## v0.3.5 2024-04-30 43 | 44 | * [Add `direction` to plugin method `Setting.addItem`](https://github.com/siyuan-note/siyuan/issues/11183) 45 | 46 | ## v0.3.4 2024-02-20 47 | 48 | * [Add plugin event bus `click-flashcard-action`](https://github.com/siyuan-note/siyuan/issues/10318) 49 | 50 | ## v0.3.3 2024-01-24 51 | 52 | * Update dock icon class 53 | 54 | ## v0.3.2 2024-01-09 55 | 56 | * [Add plugin `protyleOptions`](https://github.com/siyuan-note/siyuan/issues/10090) 57 | * [Add plugin api `uninstall`](https://github.com/siyuan-note/siyuan/issues/10063) 58 | * [Add plugin method `updateCards`](https://github.com/siyuan-note/siyuan/issues/10065) 59 | * [Add plugin function `lockScreen`](https://github.com/siyuan-note/siyuan/issues/10063) 60 | * [Add plugin event bus `lock-screen`](https://github.com/siyuan-note/siyuan/pull/9967) 61 | * [Add plugin event bus `open-menu-inbox`](https://github.com/siyuan-note/siyuan/pull/9967) 62 | 63 | ## v0.3.1 2023-12-06 64 | 65 | * [Support `Dock Plugin` and `Command Palette` on mobile](https://github.com/siyuan-note/siyuan/issues/9926) 66 | 67 | ## v0.3.0 2023-12-05 68 | 69 | * Upgrade Siyuan to 0.9.0 70 | * Support more platforms 71 | 72 | ## v0.2.9 2023-11-28 73 | 74 | * [Add plugin method `openMobileFileById`](https://github.com/siyuan-note/siyuan/issues/9738) 75 | 76 | ## v0.2.8 2023-11-15 77 | 78 | * [`resize` cannot be triggered after dragging to unpin the dock](https://github.com/siyuan-note/siyuan/issues/9640) 79 | 80 | ## v0.2.7 2023-10-31 81 | 82 | * [Export `Constants` to plugin](https://github.com/siyuan-note/siyuan/issues/9555) 83 | * [Add plugin `app.appId`](https://github.com/siyuan-note/siyuan/issues/9538) 84 | * [Add plugin event bus `switch-protyle`](https://github.com/siyuan-note/siyuan/issues/9454) 85 | 86 | ## v0.2.6 2023-10-24 87 | 88 | * [Deprecated `loaded-protyle` use `loaded-protyle-static` instead](https://github.com/siyuan-note/siyuan/issues/9468) 89 | 90 | ## v0.2.5 2023-10-10 91 | 92 | * [Add plugin event bus `open-menu-doctree`](https://github.com/siyuan-note/siyuan/issues/9351) 93 | 94 | ## v0.2.4 2023-09-19 95 | 96 | * Supports use in windows 97 | * [Add plugin function `transaction`](https://github.com/siyuan-note/siyuan/issues/9172) 98 | 99 | ## v0.2.3 2023-09-05 100 | 101 | * [Add plugin function `transaction`](https://github.com/siyuan-note/siyuan/issues/9172) 102 | * [Plugin API add openWindow and command.globalCallback](https://github.com/siyuan-note/siyuan/issues/9032) 103 | 104 | ## v0.2.2 2023-08-29 105 | 106 | * [Add plugin event bus `destroy-protyle`](https://github.com/siyuan-note/siyuan/issues/9033) 107 | * [Add plugin event bus `loaded-protyle-dynamic`](https://github.com/siyuan-note/siyuan/issues/9021) 108 | 109 | ## v0.2.1 2023-08-21 110 | 111 | * [Plugin API add getOpenedTab method](https://github.com/siyuan-note/siyuan/issues/9002) 112 | * [Plugin API custom.fn => custom.id in openTab](https://github.com/siyuan-note/siyuan/issues/8944) 113 | 114 | ## v0.2.0 2023-08-15 115 | 116 | * [Add plugin event bus `open-siyuan-url-plugin` and `open-siyuan-url-block`](https://github.com/siyuan-note/siyuan/pull/8927) 117 | 118 | ## v0.1.12 2023-08-01 119 | 120 | * Upgrade siyuan to 0.7.9 121 | 122 | ## v0.1.11 123 | 124 | * [Add `input-search` event bus to plugins](https://github.com/siyuan-note/siyuan/issues/8725) 125 | 126 | ## v0.1.10 127 | 128 | * [Add `bind this` example for eventBus in plugins](https://github.com/siyuan-note/siyuan/issues/8668) 129 | * [Add `open-menu-breadcrumbmore` event bus to plugins](https://github.com/siyuan-note/siyuan/issues/8666) 130 | 131 | ## v0.1.9 132 | 133 | * [Add `open-menu-xxx` event bus for plugins ](https://github.com/siyuan-note/siyuan/issues/8617) 134 | 135 | ## v0.1.8 136 | 137 | * [Add protyleSlash to the plugin](https://github.com/siyuan-note/siyuan/issues/8599) 138 | * [Add plugin API protyle](https://github.com/siyuan-note/siyuan/issues/8445) 139 | 140 | ## v0.1.7 141 | 142 | * [Support build js and json](https://github.com/siyuan-note/plugin-sample/pull/8) 143 | 144 | ## v0.1.6 145 | 146 | * add `fetchPost` example 147 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [中文](https://github.com/siyuan-note/plugin-sample/blob/main/README_zh_CN.md) 2 | 3 | # SiYuan plugin sample 4 | 5 | ## Get started 6 | 7 | * Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the plugin name, the default branch must be `main` 8 | * Clone your repo to a local development folder. For convenience, you can place this folder in your `{workspace}/data/plugins/` folder 9 | * Install [NodeJS](https://nodejs.org/en/download) and [pnpm](https://pnpm.io/installation), then run `pnpm i` in the command line under your repo folder 10 | * Execute `pnpm run dev` for real-time compilation 11 | * Open SiYuan marketplace and enable plugin in downloaded tab 12 | 13 | ## Development 14 | 15 | * i18n/* 16 | * icon.png (160*160) 17 | * index.css 18 | * index.js 19 | * plugin.json 20 | * preview.png (1024*768) 21 | * README*.md 22 | * [Fontend API](https://github.com/siyuan-note/petal) 23 | * [Backend API](https://github.com/siyuan-note/siyuan/blob/master/API.md) 24 | 25 | ## I18n 26 | 27 | In terms of internationalization, our main consideration is to support multiple languages. Specifically, we need to 28 | complete the following tasks: 29 | 30 | * Meta information about the plugin itself, such as plugin description and readme 31 | * `displayName`, `description` and `readme` fields in plugin.json, and the corresponding README*.md file 32 | * Text used in the plugin, such as button text and tooltips 33 | * src/i18n/*.json language configuration files 34 | * Use `this.i18.key` to get the text in the code 35 | 36 | It is recommended that the plugin supports at least English and Simplified Chinese, so that more people can use it more conveniently. Unsupported languages do not need to be declared in the `displayName`, `description` and `readme` fields in plugin.json. 37 | 38 | ## plugin.json 39 | 40 | A typical example is as follows: 41 | 42 | ```json 43 | { 44 | "name": "plugin-sample", 45 | "author": "Vanessa", 46 | "url": "https://github.com/siyuan-note/plugin-sample", 47 | "version": "0.4.2", 48 | "minAppVersion": "3.3.0", 49 | "backends": ["all"], 50 | "frontends": ["all"], 51 | "disabledInPublish": false, 52 | "displayName": { 53 | "default": "Plugin Sample", 54 | "zh_CN": "插件示例" 55 | }, 56 | "description": { 57 | "default": "This is a plugin development sample", 58 | "zh_CN": "这是一个插件开发示例" 59 | }, 60 | "readme": { 61 | "default": "README.md", 62 | "zh_CN": "README_zh_CN.md" 63 | }, 64 | "funding": { 65 | "custom": ["https://ld246.com/sponsor"] 66 | }, 67 | "keywords": [ 68 | "开发者参考", 69 | "developer reference", 70 | "示例插件" 71 | ] 72 | } 73 | ``` 74 | 75 | * `name`: Plugin package name, must be the same as the GitHub repository name, and cannot be duplicated with other plugins in the marketplace 76 | * `author`: Plugin author name 77 | * `url`: Plugin repo URL 78 | * `version`: Plugin version number, needs to follow the [semver](https://semver.org/) specification 79 | * `minAppVersion`: Minimum SiYuan version required to use this plugin 80 | * `disabledInPublish`: Whether to disable the plugin when using the publish service, defaults to false, i.e., not disabled 81 | * `backends`: Backend environment required by the plugin, optional values are `windows`, `linux`, `darwin`, `docker`, `android`, `ios`, `harmony` and `all` 82 | * `windows`: Windows desktop 83 | * `linux`: Linux desktop 84 | * `darwin`: macOS desktop 85 | * `docker`: Docker 86 | * `android`: Android APP 87 | * `ios`: iOS APP 88 | * `harmony`: HarmonyOS APP 89 | * `all`: All environments 90 | * `frontends`: Frontend environment required by the plugin, optional values are `desktop`, `desktop-window`, `mobile`, `browser-desktop`, `browser-mobile` and `all` 91 | * `desktop`: Desktop 92 | * `desktop-window`: Desktop window converted from tab 93 | * `mobile`: Mobile APP 94 | * `browser-desktop`: Desktop browser 95 | * `browser-mobile`: Mobile browser 96 | * `all`: All environments 97 | * `displayName`: Plugin name, displayed in the marketplace list 98 | * `default`: Default language, must exist. If the plugin supports English, English should be used here 99 | * `zh_CN`, `en_US` and other languages: optional 100 | * `description`: Plugin description, displayed in the marketplace list 101 | * `default`: Default language, must exist. If the plugin supports English, English should be used here 102 | * `zh_CN`, `en_US` and other languages: optional 103 | * `readme`: Readme file name, displayed in the marketplace details page 104 | * `default`: Default language, must exist. If the plugin supports English, English should be used here 105 | * `zh_CN`, `en_US` and other languages: optional 106 | * `funding`: Plugin sponsorship information, only one type will be displayed in the marketplace 107 | * `openCollective`: Open Collective name 108 | * `patreon`: Patreon name 109 | * `github`: GitHub login name 110 | * `custom`: Custom sponsorship link list 111 | * `keywords`: Search keyword list, used for marketplace search function, supplements search keywords beyond the values of `name`, `author`, `displayName`, and `description` fields 112 | 113 | ## Package 114 | 115 | No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at 116 | least the following files: 117 | 118 | * i18n/* (If the plugin supports multiple languages, language files need to be packaged to this directory, otherwise this directory is not needed) 119 | * icon.png (recommended size: 160*160, file size should not exceed 20KB) 120 | * index.css 121 | * index.js 122 | * plugin.json 123 | * preview.png (recommended size: 1024*768, file size should not exceed 200KB) 124 | * README*.md 125 | 126 | ## List on the marketplace 127 | 128 | * Execute `pnpm run build` to generate package.zip 129 | * Create a new GitHub release using your new version number as the "Tag version". See here for an 130 | example: https://github.com/siyuan-note/plugin-sample/releases 131 | * Upload the file package.zip as binary attachments 132 | * Publish the release 133 | 134 | If this is the first release, you also need to create a PR to the [Community Bazaar](https://github.com/siyuan-note/bazaar) repository and modify the plugins.json file in it. This file is the index of all community plugin repositories, the format is: 135 | 136 | ```json 137 | { 138 | "repos": [ 139 | "username/reponame" 140 | ] 141 | } 142 | ``` 143 | 144 | After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. For subsequent plugin releases, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repository. 145 | 146 | Under normal circumstances, the community bazaar repository will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions. 147 | 148 | ## Developer's Guide 149 | 150 | Developers need to pay attention to the following specifications. 151 | 152 | ### 1. File Reading and Writing Specifications 153 | 154 | If plugins or external extensions require direct reading or writing of files under the `data` directory, please use the kernel API to achieve this. **Do not call `fs` or other electron or nodejs APIs directly**, as it may result in data loss during synchronization and cause damage to cloud data. 155 | 156 | Related APIs can be found at: `/api/file/*` (e.g., `/api/file/getFile`). 157 | 158 | ### 2. Daily Note Attribute Specifications 159 | 160 | When creating a daily note in SiYuan, a custom-dailynote-yyyymmdd attribute will be automatically added to the document to distinguish it from regular documents. 161 | 162 | > For more details, please refer to [Github Issue #9807](https://github.com/siyuan-note/siyuan/issues/9807). 163 | 164 | Developers should pay attention to the following when developing the functionality to manually create Daily Notes: 165 | 166 | * If `/api/filetree/createDailyNote` is called to create a daily note, the attribute will be automatically added to the document, and developers do not need to handle it separately 167 | * If a document is created manually by developer's code (e.g., using the `createDocWithMd` API to create a daily note), please manually add this attribute to the document 168 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Plugin, 3 | showMessage, 4 | confirm, 5 | Dialog, 6 | Menu, 7 | openTab, 8 | adaptHotkey, 9 | getFrontend, 10 | getBackend, 11 | Setting, 12 | fetchPost, 13 | Protyle, 14 | openWindow, 15 | IOperation, 16 | Constants, 17 | openMobileFileById, 18 | lockScreen, 19 | ICard, 20 | ICardData, 21 | Custom, 22 | exitSiYuan, 23 | getModelByDockType, 24 | getAllEditor, 25 | Files, 26 | platformUtils, 27 | openSetting, 28 | openAttributePanel, 29 | saveLayout 30 | } from "siyuan"; 31 | import "./index.scss"; 32 | import {IMenuItem} from "siyuan/types"; 33 | 34 | const STORAGE_NAME = "menu-config"; 35 | const TAB_TYPE = "custom_tab"; 36 | const DOCK_TYPE = "dock_tab"; 37 | 38 | export default class PluginSample extends Plugin { 39 | 40 | private custom: () => Custom; 41 | private isMobile: boolean; 42 | private blockIconEventBindThis = this.blockIconEvent.bind(this); 43 | 44 | updateProtyleToolbar(toolbar: Array) { 45 | toolbar.push("|"); 46 | toolbar.push({ 47 | name: "insert-smail-emoji", 48 | icon: "iconEmoji", 49 | hotkey: "⇧⌘I", 50 | tipPosition: "n", 51 | tip: this.i18n.insertEmoji, 52 | click(protyle: Protyle) { 53 | protyle.insert("😊"); 54 | } 55 | }); 56 | return toolbar; 57 | } 58 | 59 | onload() { 60 | this.data[STORAGE_NAME] = {readonlyText: "Readonly"}; 61 | 62 | const frontEnd = getFrontend(); 63 | this.isMobile = frontEnd === "mobile" || frontEnd === "browser-mobile"; 64 | // 图标的制作参见帮助文档 65 | this.addIcons(` 66 | 67 | 68 | 69 | 70 | `); 71 | 72 | this.custom = this.addTab({ 73 | type: TAB_TYPE, 74 | init() { 75 | this.element.innerHTML = `
${this.data.text}
`; 76 | }, 77 | beforeDestroy() { 78 | console.log("before destroy tab:", TAB_TYPE); 79 | }, 80 | destroy() { 81 | console.log("destroy tab:", TAB_TYPE); 82 | } 83 | }); 84 | 85 | this.addCommand({ 86 | langKey: "showDialog", 87 | hotkey: "⇧⌘O", 88 | callback: () => { 89 | this.showDialog(); 90 | }, 91 | }); 92 | 93 | this.addCommand({ 94 | langKey: "getTab", 95 | hotkey: "⇧⌘M", 96 | globalCallback: () => { 97 | console.log(this.getOpenedTab()); 98 | }, 99 | }); 100 | this.addDock({ 101 | config: { 102 | position: "LeftBottom", 103 | size: {width: 200, height: 0}, 104 | icon: "iconSaving", 105 | title: "Custom Dock", 106 | hotkey: "⌥⌘W", 107 | }, 108 | data: { 109 | text: "This is my custom dock" 110 | }, 111 | type: DOCK_TYPE, 112 | resize() { 113 | console.log(DOCK_TYPE + " resize"); 114 | }, 115 | update() { 116 | console.log(DOCK_TYPE + " update"); 117 | }, 118 | init: (dock) => { 119 | if (this.isMobile) { 120 | dock.element.innerHTML = `
121 | 122 |
Custom Dock
123 |
124 |
125 | ${dock.data.text} 126 |
127 | `; 128 | } else { 129 | dock.element.innerHTML = `
130 |
131 | 134 | 135 | 136 |
137 |
138 | ${dock.data.text} 139 |
140 |
`; 141 | } 142 | }, 143 | destroy() { 144 | console.log("destroy dock:", DOCK_TYPE); 145 | } 146 | }); 147 | 148 | const textareaElement = document.createElement("textarea"); 149 | this.setting = new Setting({ 150 | confirmCallback: () => { 151 | this.saveData(STORAGE_NAME, {readonlyText: textareaElement.value}); 152 | } 153 | }); 154 | this.setting.addItem({ 155 | title: "Readonly text", 156 | direction: "row", 157 | description: "Open plugin url in browser", 158 | createActionElement: () => { 159 | textareaElement.className = "b3-text-field fn__block"; 160 | textareaElement.placeholder = "Readonly text in the menu"; 161 | textareaElement.value = this.data[STORAGE_NAME].readonlyText; 162 | return textareaElement; 163 | }, 164 | }); 165 | const btnaElement = document.createElement("button"); 166 | btnaElement.className = "b3-button b3-button--outline fn__flex-center fn__size200"; 167 | btnaElement.textContent = "Open"; 168 | btnaElement.addEventListener("click", () => { 169 | window.open("https://github.com/siyuan-note/plugin-sample"); 170 | }); 171 | this.setting.addItem({ 172 | title: "Open plugin url", 173 | description: "Open plugin url in browser", 174 | actionElement: btnaElement, 175 | }); 176 | 177 | this.protyleSlash = [{ 178 | filter: ["insert emoji 😊", "插入表情 😊", "crbqwx"], 179 | html: `
${this.i18n.insertEmoji}😊
`, 180 | id: "insertEmoji", 181 | callback(protyle: Protyle) { 182 | protyle.insert("😊"); 183 | } 184 | }]; 185 | 186 | this.protyleOptions = { 187 | toolbar: ["block-ref", 188 | "a", 189 | "|", 190 | "text", 191 | "strong", 192 | "em", 193 | "u", 194 | "s", 195 | "mark", 196 | "sup", 197 | "sub", 198 | "clear", 199 | "|", 200 | "code", 201 | "kbd", 202 | "tag", 203 | "inline-math", 204 | "inline-memo", 205 | ], 206 | }; 207 | 208 | console.log(this.i18n.helloPlugin); 209 | } 210 | 211 | onLayoutReady() { 212 | const topBarElement = this.addTopBar({ 213 | icon: "iconFace", 214 | title: this.i18n.addTopBarIcon, 215 | position: "right", 216 | callback: () => { 217 | if (this.isMobile) { 218 | this.addMenu(); 219 | } else { 220 | let rect = topBarElement.getBoundingClientRect(); 221 | // 如果被隐藏,则使用更多按钮 222 | if (rect.width === 0) { 223 | rect = document.querySelector("#barMore").getBoundingClientRect(); 224 | } 225 | if (rect.width === 0) { 226 | rect = document.querySelector("#barPlugins").getBoundingClientRect(); 227 | } 228 | this.addMenu(rect); 229 | } 230 | } 231 | }); 232 | const statusIconTemp = document.createElement("template"); 233 | statusIconTemp.innerHTML = `
234 | 235 | 236 | 237 |
`; 238 | statusIconTemp.content.firstElementChild.addEventListener("click", () => { 239 | confirm("⚠️", this.i18n.confirmRemove.replace("${name}", this.name), () => { 240 | this.removeData(STORAGE_NAME).then(() => { 241 | this.data[STORAGE_NAME] = {readonlyText: "Readonly"}; 242 | showMessage(`[${this.name}]: ${this.i18n.removedData}`); 243 | }); 244 | }); 245 | }); 246 | this.addStatusBar({ 247 | element: statusIconTemp.content.firstElementChild as HTMLElement, 248 | }); 249 | this.loadData(STORAGE_NAME); 250 | console.log(`frontend: ${getFrontend()}; backend: ${getBackend()}`); 251 | } 252 | 253 | onunload() { 254 | console.log(this.i18n.byePlugin); 255 | } 256 | 257 | uninstall() { 258 | console.log("uninstall"); 259 | } 260 | 261 | // 使用 saveData() 存储的数据发生变更时触发,注释掉则自动禁用插件再重新启用 262 | // Triggered when data stored using saveData() changes. If commented out, the plugin will be automatically disabled and then re-enabled. 263 | // onDataChanged() { 264 | // console.log("onDataChanged"); 265 | // } 266 | 267 | async updateCards(options: ICardData) { 268 | options.cards.sort((a: ICard, b: ICard) => { 269 | if (a.blockID < b.blockID) { 270 | return -1; 271 | } 272 | if (a.blockID > b.blockID) { 273 | return 1; 274 | } 275 | return 0; 276 | }); 277 | return options; 278 | } 279 | 280 | /* 自定义设置 281 | openSetting() { 282 | const dialog = new Dialog({ 283 | title: this.name, 284 | content: `
285 |
286 |
287 | 288 |
`, 289 | width: this.isMobile ? "92vw" : "520px", 290 | }); 291 | const inputElement = dialog.element.querySelector("textarea"); 292 | inputElement.value = this.data[STORAGE_NAME].readonlyText; 293 | const btnsElement = dialog.element.querySelectorAll(".b3-button"); 294 | dialog.bindInput(inputElement, () => { 295 | (btnsElement[1] as HTMLButtonElement).click(); 296 | }); 297 | inputElement.focus(); 298 | btnsElement[0].addEventListener("click", () => { 299 | dialog.destroy(); 300 | }); 301 | btnsElement[1].addEventListener("click", () => { 302 | this.saveData(STORAGE_NAME, {readonlyText: inputElement.value}); 303 | dialog.destroy(); 304 | }); 305 | } 306 | */ 307 | 308 | private eventBusPaste(event: any) { 309 | // 如果需异步处理请调用 preventDefault, 否则会进行默认处理 310 | event.preventDefault(); 311 | // 如果使用了 preventDefault,必须调用 resolve,否则程序会卡死 312 | event.detail.resolve({ 313 | textPlain: event.detail.textPlain.trim(), 314 | }); 315 | } 316 | 317 | private eventBusLog({detail}: any) { 318 | console.log(detail); 319 | } 320 | 321 | private blockIconEvent({detail}: any) { 322 | detail.menu.addItem({ 323 | id: "pluginSample_removeSpace", 324 | iconHTML: "", 325 | label: this.i18n.removeSpace, 326 | click: () => { 327 | const doOperations: IOperation[] = []; 328 | detail.blockElements.forEach((item: HTMLElement) => { 329 | const editElement = item.querySelector('[contenteditable="true"]'); 330 | if (editElement) { 331 | editElement.textContent = editElement.textContent.replace(/ /g, ""); 332 | doOperations.push({ 333 | id: item.dataset.nodeId, 334 | data: item.outerHTML, 335 | action: "update" 336 | }); 337 | } 338 | }); 339 | detail.protyle.getInstance().transaction(doOperations); 340 | } 341 | }); 342 | } 343 | 344 | private showDialog() { 345 | const dialog = new Dialog({ 346 | title: `SiYuan ${Constants.SIYUAN_VERSION}`, 347 | content: `
348 |
appId:
349 |
350 |
${this.app.appId}
351 |
352 |
353 |
API demo:
354 |
355 |
System current time:
356 |
357 |
358 |
Protyle demo:
359 |
360 |
361 |
`, 362 | width: this.isMobile ? "92vw" : "560px", 363 | height: "540px", 364 | }); 365 | new Protyle(this.app, dialog.element.querySelector("#protyle"), { 366 | blockId: this.getEditor().protyle.block.rootID, 367 | }); 368 | fetchPost("/api/system/currentTime", {}, (response) => { 369 | dialog.element.querySelector("#time").innerHTML = new Date(response.data).toString(); 370 | }); 371 | } 372 | 373 | private addMenu(rect?: DOMRect) { 374 | const menu = new Menu("topBarSample", () => { 375 | console.log(this.i18n.byeMenu); 376 | }); 377 | menu.addItem({ 378 | icon: "iconSettings", 379 | label: "Open Setting", 380 | click: () => { 381 | openSetting(this.app); 382 | } 383 | }); 384 | menu.addItem({ 385 | icon: "iconDrag", 386 | label: "Open Attribute Panel", 387 | click: () => { 388 | openAttributePanel({ 389 | nodeElement: this.getEditor().protyle.wysiwyg.element.firstElementChild as HTMLElement, 390 | protyle: this.getEditor().protyle, 391 | focusName: "custom", 392 | }); 393 | } 394 | }); 395 | menu.addItem({ 396 | icon: "iconInfo", 397 | label: "Dialog(open doc first)", 398 | accelerator: this.commands[0].customHotkey, 399 | click: () => { 400 | this.showDialog(); 401 | } 402 | }); 403 | menu.addItem({ 404 | icon: "iconFocus", 405 | label: "Select Opened Doc(open doc first)", 406 | click: () => { 407 | (getModelByDockType("file") as Files).selectItem(this.getEditor().protyle.notebookId, this.getEditor().protyle.path); 408 | } 409 | }); 410 | if (!this.isMobile) { 411 | menu.addItem({ 412 | icon: "iconFace", 413 | label: "Open Custom Tab", 414 | click: () => { 415 | const tab = openTab({ 416 | app: this.app, 417 | custom: { 418 | icon: "iconFace", 419 | title: "Custom Tab", 420 | data: { 421 | text: platformUtils.isHuawei() ? "Hello, Huawei!" : "This is my custom tab", 422 | }, 423 | id: this.name + TAB_TYPE 424 | }, 425 | }); 426 | console.log(tab); 427 | } 428 | }); 429 | menu.addItem({ 430 | icon: "iconImage", 431 | label: "Open Asset Tab(First open the Chinese help document)", 432 | click: () => { 433 | const tab = openTab({ 434 | app: this.app, 435 | asset: { 436 | path: "assets/paragraph-20210512165953-ag1nib4.svg" 437 | } 438 | }); 439 | console.log(tab); 440 | } 441 | }); 442 | menu.addItem({ 443 | icon: "iconFile", 444 | label: "Open Doc Tab(open doc first)", 445 | click: async () => { 446 | const tab = await openTab({ 447 | app: this.app, 448 | doc: { 449 | id: this.getEditor().protyle.block.rootID, 450 | } 451 | }); 452 | console.log(tab); 453 | } 454 | }); 455 | menu.addItem({ 456 | icon: "iconSearch", 457 | label: "Open Search Tab", 458 | click: () => { 459 | const tab = openTab({ 460 | app: this.app, 461 | search: { 462 | k: "SiYuan" 463 | } 464 | }); 465 | console.log(tab); 466 | } 467 | }); 468 | menu.addItem({ 469 | icon: "iconRiffCard", 470 | label: "Open Card Tab", 471 | click: () => { 472 | const tab = openTab({ 473 | app: this.app, 474 | card: { 475 | type: "all" 476 | } 477 | }); 478 | console.log(tab); 479 | } 480 | }); 481 | menu.addItem({ 482 | icon: "iconLayout", 483 | label: "Open Float Layer(open doc first)", 484 | click: () => { 485 | this.addFloatLayer({ 486 | refDefs: [{refID: this.getEditor().protyle.block.rootID}], 487 | x: window.innerWidth - 768 - 120, 488 | y: 32, 489 | isBacklink: false 490 | }); 491 | } 492 | }); 493 | menu.addItem({ 494 | icon: "iconOpenWindow", 495 | label: "Open Doc Window(open doc first)", 496 | click: () => { 497 | openWindow({ 498 | doc: {id: this.getEditor().protyle.block.rootID} 499 | }); 500 | } 501 | }); 502 | } else { 503 | menu.addItem({ 504 | icon: "iconFile", 505 | label: "Open Doc(open doc first)", 506 | click: () => { 507 | openMobileFileById(this.app, this.getEditor().protyle.block.rootID); 508 | } 509 | }); 510 | } 511 | menu.addItem({ 512 | icon: "iconLock", 513 | label: "Lockscreen", 514 | click: () => { 515 | lockScreen(this.app); 516 | } 517 | }); 518 | menu.addItem({ 519 | icon: "iconQuit", 520 | label: "Exit Application", 521 | click: () => { 522 | exitSiYuan(); 523 | } 524 | }); 525 | menu.addItem({ 526 | icon: "iconDownload", 527 | label: "Save Layout", 528 | click: () => { 529 | saveLayout(() => { 530 | showMessage("Layout saved"); 531 | }); 532 | } 533 | }); 534 | menu.addItem({ 535 | icon: "iconScrollHoriz", 536 | label: "Event Bus", 537 | type: "submenu", 538 | submenu: [{ 539 | icon: "iconSelect", 540 | label: "On ws-main", 541 | click: () => { 542 | this.eventBus.on("ws-main", this.eventBusLog); 543 | } 544 | }, { 545 | icon: "iconClose", 546 | label: "Off ws-main", 547 | click: () => { 548 | this.eventBus.off("ws-main", this.eventBusLog); 549 | } 550 | }, { 551 | icon: "iconSelect", 552 | label: "On click-blockicon", 553 | click: () => { 554 | this.eventBus.on("click-blockicon", this.blockIconEventBindThis); 555 | } 556 | }, { 557 | icon: "iconClose", 558 | label: "Off click-blockicon", 559 | click: () => { 560 | this.eventBus.off("click-blockicon", this.blockIconEventBindThis); 561 | } 562 | }, { 563 | icon: "iconSelect", 564 | label: "On click-pdf", 565 | click: () => { 566 | this.eventBus.on("click-pdf", this.eventBusLog); 567 | } 568 | }, { 569 | icon: "iconClose", 570 | label: "Off click-pdf", 571 | click: () => { 572 | this.eventBus.off("click-pdf", this.eventBusLog); 573 | } 574 | }, { 575 | icon: "iconSelect", 576 | label: "On click-editorcontent", 577 | click: () => { 578 | this.eventBus.on("click-editorcontent", this.eventBusLog); 579 | } 580 | }, { 581 | icon: "iconClose", 582 | label: "Off click-editorcontent", 583 | click: () => { 584 | this.eventBus.off("click-editorcontent", this.eventBusLog); 585 | } 586 | }, { 587 | icon: "iconSelect", 588 | label: "On click-editortitleicon", 589 | click: () => { 590 | this.eventBus.on("click-editortitleicon", this.eventBusLog); 591 | } 592 | }, { 593 | icon: "iconClose", 594 | label: "Off click-editortitleicon", 595 | click: () => { 596 | this.eventBus.off("click-editortitleicon", this.eventBusLog); 597 | } 598 | }, { 599 | icon: "iconSelect", 600 | label: "On click-flashcard-action", 601 | click: () => { 602 | this.eventBus.on("click-flashcard-action", this.eventBusLog); 603 | } 604 | }, { 605 | icon: "iconClose", 606 | label: "Off click-flashcard-action", 607 | click: () => { 608 | this.eventBus.off("click-flashcard-action", this.eventBusLog); 609 | } 610 | }, { 611 | icon: "iconSelect", 612 | label: "On open-noneditableblock", 613 | click: () => { 614 | this.eventBus.on("open-noneditableblock", this.eventBusLog); 615 | } 616 | }, { 617 | icon: "iconClose", 618 | label: "Off open-noneditableblock", 619 | click: () => { 620 | this.eventBus.off("open-noneditableblock", this.eventBusLog); 621 | } 622 | }, { 623 | icon: "iconSelect", 624 | label: "On loaded-protyle-static", 625 | click: () => { 626 | this.eventBus.on("loaded-protyle-static", this.eventBusLog); 627 | } 628 | }, { 629 | icon: "iconClose", 630 | label: "Off loaded-protyle-static", 631 | click: () => { 632 | this.eventBus.off("loaded-protyle-static", this.eventBusLog); 633 | } 634 | }, { 635 | icon: "iconSelect", 636 | label: "On loaded-protyle-dynamic", 637 | click: () => { 638 | this.eventBus.on("loaded-protyle-dynamic", this.eventBusLog); 639 | } 640 | }, { 641 | icon: "iconClose", 642 | label: "Off loaded-protyle-dynamic", 643 | click: () => { 644 | this.eventBus.off("loaded-protyle-dynamic", this.eventBusLog); 645 | } 646 | }, { 647 | icon: "iconSelect", 648 | label: "On switch-protyle", 649 | click: () => { 650 | this.eventBus.on("switch-protyle", this.eventBusLog); 651 | } 652 | }, { 653 | icon: "iconClose", 654 | label: "Off switch-protyle", 655 | click: () => { 656 | this.eventBus.off("switch-protyle", this.eventBusLog); 657 | } 658 | }, { 659 | icon: "iconSelect", 660 | label: "On destroy-protyle", 661 | click: () => { 662 | this.eventBus.on("destroy-protyle", this.eventBusLog); 663 | } 664 | }, { 665 | icon: "iconClose", 666 | label: "Off destroy-protyle", 667 | click: () => { 668 | this.eventBus.off("destroy-protyle", this.eventBusLog); 669 | } 670 | }, { 671 | icon: "iconSelect", 672 | label: "On open-menu-doctree", 673 | click: () => { 674 | this.eventBus.on("open-menu-doctree", this.eventBusLog); 675 | } 676 | }, { 677 | icon: "iconClose", 678 | label: "Off open-menu-doctree", 679 | click: () => { 680 | this.eventBus.off("open-menu-doctree", this.eventBusLog); 681 | } 682 | }, { 683 | icon: "iconSelect", 684 | label: "On open-menu-blockref", 685 | click: () => { 686 | this.eventBus.on("open-menu-blockref", this.eventBusLog); 687 | } 688 | }, { 689 | icon: "iconClose", 690 | label: "Off open-menu-blockref", 691 | click: () => { 692 | this.eventBus.off("open-menu-blockref", this.eventBusLog); 693 | } 694 | }, { 695 | icon: "iconSelect", 696 | label: "On open-menu-fileannotationref", 697 | click: () => { 698 | this.eventBus.on("open-menu-fileannotationref", this.eventBusLog); 699 | } 700 | }, { 701 | icon: "iconClose", 702 | label: "Off open-menu-fileannotationref", 703 | click: () => { 704 | this.eventBus.off("open-menu-fileannotationref", this.eventBusLog); 705 | } 706 | }, { 707 | icon: "iconSelect", 708 | label: "On open-menu-tag", 709 | click: () => { 710 | this.eventBus.on("open-menu-tag", this.eventBusLog); 711 | } 712 | }, { 713 | icon: "iconClose", 714 | label: "Off open-menu-tag", 715 | click: () => { 716 | this.eventBus.off("open-menu-tag", this.eventBusLog); 717 | } 718 | }, { 719 | icon: "iconSelect", 720 | label: "On open-menu-link", 721 | click: () => { 722 | this.eventBus.on("open-menu-link", this.eventBusLog); 723 | } 724 | }, { 725 | icon: "iconClose", 726 | label: "Off open-menu-link", 727 | click: () => { 728 | this.eventBus.off("open-menu-link", this.eventBusLog); 729 | } 730 | }, { 731 | icon: "iconSelect", 732 | label: "On open-menu-image", 733 | click: () => { 734 | this.eventBus.on("open-menu-image", this.eventBusLog); 735 | } 736 | }, { 737 | icon: "iconClose", 738 | label: "Off open-menu-image", 739 | click: () => { 740 | this.eventBus.off("open-menu-image", this.eventBusLog); 741 | } 742 | }, { 743 | icon: "iconSelect", 744 | label: "On open-menu-av", 745 | click: () => { 746 | this.eventBus.on("open-menu-av", this.eventBusLog); 747 | } 748 | }, { 749 | icon: "iconClose", 750 | label: "Off open-menu-av", 751 | click: () => { 752 | this.eventBus.off("open-menu-av", this.eventBusLog); 753 | } 754 | }, { 755 | icon: "iconSelect", 756 | label: "On open-menu-content", 757 | click: () => { 758 | this.eventBus.on("open-menu-content", this.eventBusLog); 759 | } 760 | }, { 761 | icon: "iconClose", 762 | label: "Off open-menu-content", 763 | click: () => { 764 | this.eventBus.off("open-menu-content", this.eventBusLog); 765 | } 766 | }, { 767 | icon: "iconSelect", 768 | label: "On open-menu-breadcrumbmore", 769 | click: () => { 770 | this.eventBus.on("open-menu-breadcrumbmore", this.eventBusLog); 771 | } 772 | }, { 773 | icon: "iconClose", 774 | label: "Off open-menu-breadcrumbmore", 775 | click: () => { 776 | this.eventBus.off("open-menu-breadcrumbmore", this.eventBusLog); 777 | } 778 | }, { 779 | icon: "iconSelect", 780 | label: "On open-menu-inbox", 781 | click: () => { 782 | this.eventBus.on("open-menu-inbox", this.eventBusLog); 783 | } 784 | }, { 785 | icon: "iconClose", 786 | label: "Off open-menu-inbox", 787 | click: () => { 788 | this.eventBus.off("open-menu-inbox", this.eventBusLog); 789 | } 790 | }, { 791 | icon: "iconSelect", 792 | label: "On input-search", 793 | click: () => { 794 | this.eventBus.on("input-search", this.eventBusLog); 795 | } 796 | }, { 797 | icon: "iconClose", 798 | label: "Off input-search", 799 | click: () => { 800 | this.eventBus.off("input-search", this.eventBusLog); 801 | } 802 | }, { 803 | icon: "iconSelect", 804 | label: "On paste", 805 | click: () => { 806 | this.eventBus.on("paste", this.eventBusPaste); 807 | } 808 | }, { 809 | icon: "iconClose", 810 | label: "Off paste", 811 | click: () => { 812 | this.eventBus.off("paste", this.eventBusPaste); 813 | } 814 | }, { 815 | icon: "iconSelect", 816 | label: "On open-siyuan-url-plugin", 817 | click: () => { 818 | this.eventBus.on("open-siyuan-url-plugin", this.eventBusLog); 819 | } 820 | }, { 821 | icon: "iconClose", 822 | label: "Off open-siyuan-url-plugin", 823 | click: () => { 824 | this.eventBus.off("open-siyuan-url-plugin", this.eventBusLog); 825 | } 826 | }, { 827 | icon: "iconSelect", 828 | label: "On open-siyuan-url-block", 829 | click: () => { 830 | this.eventBus.on("open-siyuan-url-block", this.eventBusLog); 831 | } 832 | }, { 833 | icon: "iconClose", 834 | label: "Off open-siyuan-url-block", 835 | click: () => { 836 | this.eventBus.off("open-siyuan-url-block", this.eventBusLog); 837 | } 838 | }, { 839 | icon: "iconSelect", 840 | label: "On opened-notebook", 841 | click: () => { 842 | this.eventBus.on("opened-notebook", this.eventBusLog); 843 | } 844 | }, { 845 | icon: "iconClose", 846 | label: "Off opened-notebook", 847 | click: () => { 848 | this.eventBus.off("opened-notebook", this.eventBusLog); 849 | } 850 | }, { 851 | icon: "iconSelect", 852 | label: "On closed-notebook", 853 | click: () => { 854 | this.eventBus.on("closed-notebook", this.eventBusLog); 855 | } 856 | }, { 857 | icon: "iconClose", 858 | label: "Off closed-notebook", 859 | click: () => { 860 | this.eventBus.off("closed-notebook", this.eventBusLog); 861 | } 862 | }] 863 | }); 864 | menu.addSeparator(); 865 | menu.addItem({ 866 | icon: "iconSparkles", 867 | label: this.data[STORAGE_NAME].readonlyText || "Readonly", 868 | type: "readonly", 869 | }); 870 | if (this.isMobile) { 871 | menu.fullscreen(); 872 | } else { 873 | menu.open({ 874 | x: rect.right, 875 | y: rect.bottom, 876 | isLeft: true, 877 | }); 878 | } 879 | } 880 | 881 | private getEditor() { 882 | const editors = getAllEditor(); 883 | if (editors.length === 0) { 884 | showMessage("please open doc first"); 885 | return; 886 | } 887 | return editors[0]; 888 | } 889 | } 890 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@typescript-eslint/eslint-plugin': 12 | specifier: 8.40.0 13 | version: 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.1)(typescript@4.8.4))(eslint@9.39.1)(typescript@4.8.4) 14 | '@typescript-eslint/parser': 15 | specifier: 8.40.0 16 | version: 8.40.0(eslint@9.39.1)(typescript@4.8.4) 17 | copy-webpack-plugin: 18 | specifier: ^11.0.0 19 | version: 11.0.0(webpack@5.103.0) 20 | css-loader: 21 | specifier: ^6.7.1 22 | version: 6.11.0(webpack@5.103.0) 23 | esbuild-loader: 24 | specifier: ^3.0.1 25 | version: 3.2.0(webpack@5.103.0) 26 | eslint: 27 | specifier: ^9.33.0 28 | version: 9.39.1 29 | globals: 30 | specifier: ^16.3.0 31 | version: 16.5.0 32 | mini-css-extract-plugin: 33 | specifier: 2.3.0 34 | version: 2.3.0(webpack@5.103.0) 35 | sass: 36 | specifier: ^1.62.1 37 | version: 1.94.2 38 | sass-loader: 39 | specifier: ^12.6.0 40 | version: 12.6.0(sass@1.94.2)(webpack@5.103.0) 41 | siyuan: 42 | specifier: 1.1.6 43 | version: 1.1.6 44 | tslib: 45 | specifier: 2.4.0 46 | version: 2.4.0 47 | typescript: 48 | specifier: 4.8.4 49 | version: 4.8.4 50 | webpack: 51 | specifier: ^5.76.0 52 | version: 5.103.0(webpack-cli@5.1.4) 53 | webpack-cli: 54 | specifier: ^5.0.2 55 | version: 5.1.4(webpack@5.103.0) 56 | zip-webpack-plugin: 57 | specifier: ^4.0.1 58 | version: 4.0.3(webpack-sources@3.3.3)(webpack@5.103.0) 59 | 60 | packages: 61 | 62 | '@discoveryjs/json-ext@0.5.7': 63 | resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} 64 | engines: {node: '>=10.0.0'} 65 | 66 | '@esbuild/aix-ppc64@0.19.12': 67 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 68 | engines: {node: '>=12'} 69 | cpu: [ppc64] 70 | os: [aix] 71 | 72 | '@esbuild/android-arm64@0.19.12': 73 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 74 | engines: {node: '>=12'} 75 | cpu: [arm64] 76 | os: [android] 77 | 78 | '@esbuild/android-arm@0.19.12': 79 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 80 | engines: {node: '>=12'} 81 | cpu: [arm] 82 | os: [android] 83 | 84 | '@esbuild/android-x64@0.19.12': 85 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 86 | engines: {node: '>=12'} 87 | cpu: [x64] 88 | os: [android] 89 | 90 | '@esbuild/darwin-arm64@0.19.12': 91 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 92 | engines: {node: '>=12'} 93 | cpu: [arm64] 94 | os: [darwin] 95 | 96 | '@esbuild/darwin-x64@0.19.12': 97 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 98 | engines: {node: '>=12'} 99 | cpu: [x64] 100 | os: [darwin] 101 | 102 | '@esbuild/freebsd-arm64@0.19.12': 103 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 104 | engines: {node: '>=12'} 105 | cpu: [arm64] 106 | os: [freebsd] 107 | 108 | '@esbuild/freebsd-x64@0.19.12': 109 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 110 | engines: {node: '>=12'} 111 | cpu: [x64] 112 | os: [freebsd] 113 | 114 | '@esbuild/linux-arm64@0.19.12': 115 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 116 | engines: {node: '>=12'} 117 | cpu: [arm64] 118 | os: [linux] 119 | 120 | '@esbuild/linux-arm@0.19.12': 121 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 122 | engines: {node: '>=12'} 123 | cpu: [arm] 124 | os: [linux] 125 | 126 | '@esbuild/linux-ia32@0.19.12': 127 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 128 | engines: {node: '>=12'} 129 | cpu: [ia32] 130 | os: [linux] 131 | 132 | '@esbuild/linux-loong64@0.19.12': 133 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 134 | engines: {node: '>=12'} 135 | cpu: [loong64] 136 | os: [linux] 137 | 138 | '@esbuild/linux-mips64el@0.19.12': 139 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 140 | engines: {node: '>=12'} 141 | cpu: [mips64el] 142 | os: [linux] 143 | 144 | '@esbuild/linux-ppc64@0.19.12': 145 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 146 | engines: {node: '>=12'} 147 | cpu: [ppc64] 148 | os: [linux] 149 | 150 | '@esbuild/linux-riscv64@0.19.12': 151 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 152 | engines: {node: '>=12'} 153 | cpu: [riscv64] 154 | os: [linux] 155 | 156 | '@esbuild/linux-s390x@0.19.12': 157 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 158 | engines: {node: '>=12'} 159 | cpu: [s390x] 160 | os: [linux] 161 | 162 | '@esbuild/linux-x64@0.19.12': 163 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 164 | engines: {node: '>=12'} 165 | cpu: [x64] 166 | os: [linux] 167 | 168 | '@esbuild/netbsd-x64@0.19.12': 169 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 170 | engines: {node: '>=12'} 171 | cpu: [x64] 172 | os: [netbsd] 173 | 174 | '@esbuild/openbsd-x64@0.19.12': 175 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 176 | engines: {node: '>=12'} 177 | cpu: [x64] 178 | os: [openbsd] 179 | 180 | '@esbuild/sunos-x64@0.19.12': 181 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 182 | engines: {node: '>=12'} 183 | cpu: [x64] 184 | os: [sunos] 185 | 186 | '@esbuild/win32-arm64@0.19.12': 187 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 188 | engines: {node: '>=12'} 189 | cpu: [arm64] 190 | os: [win32] 191 | 192 | '@esbuild/win32-ia32@0.19.12': 193 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 194 | engines: {node: '>=12'} 195 | cpu: [ia32] 196 | os: [win32] 197 | 198 | '@esbuild/win32-x64@0.19.12': 199 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 200 | engines: {node: '>=12'} 201 | cpu: [x64] 202 | os: [win32] 203 | 204 | '@eslint-community/eslint-utils@4.9.0': 205 | resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 206 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 207 | peerDependencies: 208 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 209 | 210 | '@eslint-community/regexpp@4.12.2': 211 | resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} 212 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 213 | 214 | '@eslint/config-array@0.21.1': 215 | resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} 216 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 217 | 218 | '@eslint/config-helpers@0.4.2': 219 | resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} 220 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 221 | 222 | '@eslint/core@0.17.0': 223 | resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} 224 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 225 | 226 | '@eslint/eslintrc@3.3.3': 227 | resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} 228 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 229 | 230 | '@eslint/js@9.39.1': 231 | resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} 232 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 233 | 234 | '@eslint/object-schema@2.1.7': 235 | resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} 236 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 237 | 238 | '@eslint/plugin-kit@0.4.1': 239 | resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} 240 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 241 | 242 | '@humanfs/core@0.19.1': 243 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 244 | engines: {node: '>=18.18.0'} 245 | 246 | '@humanfs/node@0.16.7': 247 | resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 248 | engines: {node: '>=18.18.0'} 249 | 250 | '@humanwhocodes/module-importer@1.0.1': 251 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 252 | engines: {node: '>=12.22'} 253 | 254 | '@humanwhocodes/retry@0.4.3': 255 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 256 | engines: {node: '>=18.18'} 257 | 258 | '@jridgewell/gen-mapping@0.3.13': 259 | resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 260 | 261 | '@jridgewell/resolve-uri@3.1.2': 262 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 263 | engines: {node: '>=6.0.0'} 264 | 265 | '@jridgewell/source-map@0.3.11': 266 | resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} 267 | 268 | '@jridgewell/sourcemap-codec@1.5.5': 269 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 270 | 271 | '@jridgewell/trace-mapping@0.3.31': 272 | resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 273 | 274 | '@nodelib/fs.scandir@2.1.5': 275 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 276 | engines: {node: '>= 8'} 277 | 278 | '@nodelib/fs.stat@2.0.5': 279 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 280 | engines: {node: '>= 8'} 281 | 282 | '@nodelib/fs.walk@1.2.8': 283 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 284 | engines: {node: '>= 8'} 285 | 286 | '@parcel/watcher-android-arm64@2.5.1': 287 | resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} 288 | engines: {node: '>= 10.0.0'} 289 | cpu: [arm64] 290 | os: [android] 291 | 292 | '@parcel/watcher-darwin-arm64@2.5.1': 293 | resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} 294 | engines: {node: '>= 10.0.0'} 295 | cpu: [arm64] 296 | os: [darwin] 297 | 298 | '@parcel/watcher-darwin-x64@2.5.1': 299 | resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} 300 | engines: {node: '>= 10.0.0'} 301 | cpu: [x64] 302 | os: [darwin] 303 | 304 | '@parcel/watcher-freebsd-x64@2.5.1': 305 | resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} 306 | engines: {node: '>= 10.0.0'} 307 | cpu: [x64] 308 | os: [freebsd] 309 | 310 | '@parcel/watcher-linux-arm-glibc@2.5.1': 311 | resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} 312 | engines: {node: '>= 10.0.0'} 313 | cpu: [arm] 314 | os: [linux] 315 | 316 | '@parcel/watcher-linux-arm-musl@2.5.1': 317 | resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} 318 | engines: {node: '>= 10.0.0'} 319 | cpu: [arm] 320 | os: [linux] 321 | 322 | '@parcel/watcher-linux-arm64-glibc@2.5.1': 323 | resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} 324 | engines: {node: '>= 10.0.0'} 325 | cpu: [arm64] 326 | os: [linux] 327 | 328 | '@parcel/watcher-linux-arm64-musl@2.5.1': 329 | resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} 330 | engines: {node: '>= 10.0.0'} 331 | cpu: [arm64] 332 | os: [linux] 333 | 334 | '@parcel/watcher-linux-x64-glibc@2.5.1': 335 | resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} 336 | engines: {node: '>= 10.0.0'} 337 | cpu: [x64] 338 | os: [linux] 339 | 340 | '@parcel/watcher-linux-x64-musl@2.5.1': 341 | resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} 342 | engines: {node: '>= 10.0.0'} 343 | cpu: [x64] 344 | os: [linux] 345 | 346 | '@parcel/watcher-win32-arm64@2.5.1': 347 | resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} 348 | engines: {node: '>= 10.0.0'} 349 | cpu: [arm64] 350 | os: [win32] 351 | 352 | '@parcel/watcher-win32-ia32@2.5.1': 353 | resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} 354 | engines: {node: '>= 10.0.0'} 355 | cpu: [ia32] 356 | os: [win32] 357 | 358 | '@parcel/watcher-win32-x64@2.5.1': 359 | resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} 360 | engines: {node: '>= 10.0.0'} 361 | cpu: [x64] 362 | os: [win32] 363 | 364 | '@parcel/watcher@2.5.1': 365 | resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} 366 | engines: {node: '>= 10.0.0'} 367 | 368 | '@types/eslint-scope@3.7.7': 369 | resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} 370 | 371 | '@types/eslint@9.6.1': 372 | resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 373 | 374 | '@types/estree@1.0.8': 375 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 376 | 377 | '@types/json-schema@7.0.15': 378 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 379 | 380 | '@types/node@24.10.1': 381 | resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} 382 | 383 | '@typescript-eslint/eslint-plugin@8.40.0': 384 | resolution: {integrity: sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==} 385 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 386 | peerDependencies: 387 | '@typescript-eslint/parser': ^8.40.0 388 | eslint: ^8.57.0 || ^9.0.0 389 | typescript: '>=4.8.4 <6.0.0' 390 | 391 | '@typescript-eslint/parser@8.40.0': 392 | resolution: {integrity: sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==} 393 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 394 | peerDependencies: 395 | eslint: ^8.57.0 || ^9.0.0 396 | typescript: '>=4.8.4 <6.0.0' 397 | 398 | '@typescript-eslint/project-service@8.40.0': 399 | resolution: {integrity: sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==} 400 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 401 | peerDependencies: 402 | typescript: '>=4.8.4 <6.0.0' 403 | 404 | '@typescript-eslint/scope-manager@8.40.0': 405 | resolution: {integrity: sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==} 406 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 407 | 408 | '@typescript-eslint/tsconfig-utils@8.40.0': 409 | resolution: {integrity: sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==} 410 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 411 | peerDependencies: 412 | typescript: '>=4.8.4 <6.0.0' 413 | 414 | '@typescript-eslint/type-utils@8.40.0': 415 | resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==} 416 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 417 | peerDependencies: 418 | eslint: ^8.57.0 || ^9.0.0 419 | typescript: '>=4.8.4 <6.0.0' 420 | 421 | '@typescript-eslint/types@8.40.0': 422 | resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==} 423 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 424 | 425 | '@typescript-eslint/typescript-estree@8.40.0': 426 | resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==} 427 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 428 | peerDependencies: 429 | typescript: '>=4.8.4 <6.0.0' 430 | 431 | '@typescript-eslint/utils@8.40.0': 432 | resolution: {integrity: sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==} 433 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 434 | peerDependencies: 435 | eslint: ^8.57.0 || ^9.0.0 436 | typescript: '>=4.8.4 <6.0.0' 437 | 438 | '@typescript-eslint/visitor-keys@8.40.0': 439 | resolution: {integrity: sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==} 440 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 441 | 442 | '@webassemblyjs/ast@1.14.1': 443 | resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} 444 | 445 | '@webassemblyjs/floating-point-hex-parser@1.13.2': 446 | resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} 447 | 448 | '@webassemblyjs/helper-api-error@1.13.2': 449 | resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} 450 | 451 | '@webassemblyjs/helper-buffer@1.14.1': 452 | resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} 453 | 454 | '@webassemblyjs/helper-numbers@1.13.2': 455 | resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} 456 | 457 | '@webassemblyjs/helper-wasm-bytecode@1.13.2': 458 | resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} 459 | 460 | '@webassemblyjs/helper-wasm-section@1.14.1': 461 | resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} 462 | 463 | '@webassemblyjs/ieee754@1.13.2': 464 | resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} 465 | 466 | '@webassemblyjs/leb128@1.13.2': 467 | resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} 468 | 469 | '@webassemblyjs/utf8@1.13.2': 470 | resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} 471 | 472 | '@webassemblyjs/wasm-edit@1.14.1': 473 | resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} 474 | 475 | '@webassemblyjs/wasm-gen@1.14.1': 476 | resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} 477 | 478 | '@webassemblyjs/wasm-opt@1.14.1': 479 | resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} 480 | 481 | '@webassemblyjs/wasm-parser@1.14.1': 482 | resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} 483 | 484 | '@webassemblyjs/wast-printer@1.14.1': 485 | resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} 486 | 487 | '@webpack-cli/configtest@2.1.1': 488 | resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} 489 | engines: {node: '>=14.15.0'} 490 | peerDependencies: 491 | webpack: 5.x.x 492 | webpack-cli: 5.x.x 493 | 494 | '@webpack-cli/info@2.0.2': 495 | resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} 496 | engines: {node: '>=14.15.0'} 497 | peerDependencies: 498 | webpack: 5.x.x 499 | webpack-cli: 5.x.x 500 | 501 | '@webpack-cli/serve@2.0.5': 502 | resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} 503 | engines: {node: '>=14.15.0'} 504 | peerDependencies: 505 | webpack: 5.x.x 506 | webpack-cli: 5.x.x 507 | webpack-dev-server: '*' 508 | peerDependenciesMeta: 509 | webpack-dev-server: 510 | optional: true 511 | 512 | '@xtuc/ieee754@1.2.0': 513 | resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} 514 | 515 | '@xtuc/long@4.2.2': 516 | resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 517 | 518 | acorn-import-phases@1.0.4: 519 | resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} 520 | engines: {node: '>=10.13.0'} 521 | peerDependencies: 522 | acorn: ^8.14.0 523 | 524 | acorn-jsx@5.3.2: 525 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 526 | peerDependencies: 527 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 528 | 529 | acorn@8.15.0: 530 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 531 | engines: {node: '>=0.4.0'} 532 | hasBin: true 533 | 534 | ajv-formats@2.1.1: 535 | resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 536 | peerDependencies: 537 | ajv: ^8.0.0 538 | peerDependenciesMeta: 539 | ajv: 540 | optional: true 541 | 542 | ajv-keywords@3.5.2: 543 | resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} 544 | peerDependencies: 545 | ajv: ^6.9.1 546 | 547 | ajv-keywords@5.1.0: 548 | resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} 549 | peerDependencies: 550 | ajv: ^8.8.2 551 | 552 | ajv@6.12.6: 553 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 554 | 555 | ajv@8.17.1: 556 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 557 | 558 | ansi-styles@4.3.0: 559 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 560 | engines: {node: '>=8'} 561 | 562 | argparse@2.0.1: 563 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 564 | 565 | balanced-match@1.0.2: 566 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 567 | 568 | baseline-browser-mapping@2.8.32: 569 | resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} 570 | hasBin: true 571 | 572 | big.js@5.2.2: 573 | resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} 574 | 575 | brace-expansion@1.1.12: 576 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 577 | 578 | brace-expansion@2.0.2: 579 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 580 | 581 | braces@3.0.3: 582 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 583 | engines: {node: '>=8'} 584 | 585 | browserslist@4.28.0: 586 | resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} 587 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 588 | hasBin: true 589 | 590 | buffer-crc32@0.2.13: 591 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 592 | 593 | buffer-from@1.1.2: 594 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 595 | 596 | callsites@3.1.0: 597 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 598 | engines: {node: '>=6'} 599 | 600 | caniuse-lite@1.0.30001757: 601 | resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} 602 | 603 | chalk@4.1.2: 604 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 605 | engines: {node: '>=10'} 606 | 607 | chokidar@4.0.3: 608 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 609 | engines: {node: '>= 14.16.0'} 610 | 611 | chrome-trace-event@1.0.4: 612 | resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} 613 | engines: {node: '>=6.0'} 614 | 615 | clone-deep@4.0.1: 616 | resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} 617 | engines: {node: '>=6'} 618 | 619 | color-convert@2.0.1: 620 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 621 | engines: {node: '>=7.0.0'} 622 | 623 | color-name@1.1.4: 624 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 625 | 626 | colorette@2.0.20: 627 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 628 | 629 | commander@10.0.1: 630 | resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} 631 | engines: {node: '>=14'} 632 | 633 | commander@2.20.3: 634 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 635 | 636 | concat-map@0.0.1: 637 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 638 | 639 | copy-webpack-plugin@11.0.0: 640 | resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} 641 | engines: {node: '>= 14.15.0'} 642 | peerDependencies: 643 | webpack: ^5.1.0 644 | 645 | cross-spawn@7.0.6: 646 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 647 | engines: {node: '>= 8'} 648 | 649 | css-loader@6.11.0: 650 | resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} 651 | engines: {node: '>= 12.13.0'} 652 | peerDependencies: 653 | '@rspack/core': 0.x || 1.x 654 | webpack: ^5.0.0 655 | peerDependenciesMeta: 656 | '@rspack/core': 657 | optional: true 658 | webpack: 659 | optional: true 660 | 661 | cssesc@3.0.0: 662 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 663 | engines: {node: '>=4'} 664 | hasBin: true 665 | 666 | debug@4.4.3: 667 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 668 | engines: {node: '>=6.0'} 669 | peerDependencies: 670 | supports-color: '*' 671 | peerDependenciesMeta: 672 | supports-color: 673 | optional: true 674 | 675 | deep-is@0.1.4: 676 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 677 | 678 | detect-libc@1.0.3: 679 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 680 | engines: {node: '>=0.10'} 681 | hasBin: true 682 | 683 | dir-glob@3.0.1: 684 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 685 | engines: {node: '>=8'} 686 | 687 | electron-to-chromium@1.5.263: 688 | resolution: {integrity: sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==} 689 | 690 | emojis-list@3.0.0: 691 | resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} 692 | engines: {node: '>= 4'} 693 | 694 | enhanced-resolve@5.18.3: 695 | resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} 696 | engines: {node: '>=10.13.0'} 697 | 698 | envinfo@7.21.0: 699 | resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} 700 | engines: {node: '>=4'} 701 | hasBin: true 702 | 703 | es-module-lexer@1.7.0: 704 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 705 | 706 | esbuild-loader@3.2.0: 707 | resolution: {integrity: sha512-lnIdRMQpk50alCa0QoW0ozc0D3rjJXl02mtMsk9INIcW25RPZhDja332bu85ixwVNbhQ7VfBRcQyZ/qza8mWiA==} 708 | peerDependencies: 709 | webpack: ^4.40.0 || ^5.0.0 710 | 711 | esbuild@0.19.12: 712 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 713 | engines: {node: '>=12'} 714 | hasBin: true 715 | 716 | escalade@3.2.0: 717 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 718 | engines: {node: '>=6'} 719 | 720 | escape-string-regexp@4.0.0: 721 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 722 | engines: {node: '>=10'} 723 | 724 | eslint-scope@5.1.1: 725 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 726 | engines: {node: '>=8.0.0'} 727 | 728 | eslint-scope@8.4.0: 729 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 730 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 731 | 732 | eslint-visitor-keys@3.4.3: 733 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 734 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 735 | 736 | eslint-visitor-keys@4.2.1: 737 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 738 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 739 | 740 | eslint@9.39.1: 741 | resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} 742 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 743 | hasBin: true 744 | peerDependencies: 745 | jiti: '*' 746 | peerDependenciesMeta: 747 | jiti: 748 | optional: true 749 | 750 | espree@10.4.0: 751 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 752 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 753 | 754 | esquery@1.6.0: 755 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 756 | engines: {node: '>=0.10'} 757 | 758 | esrecurse@4.3.0: 759 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 760 | engines: {node: '>=4.0'} 761 | 762 | estraverse@4.3.0: 763 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 764 | engines: {node: '>=4.0'} 765 | 766 | estraverse@5.3.0: 767 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 768 | engines: {node: '>=4.0'} 769 | 770 | esutils@2.0.3: 771 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 772 | engines: {node: '>=0.10.0'} 773 | 774 | events@3.3.0: 775 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 776 | engines: {node: '>=0.8.x'} 777 | 778 | fast-deep-equal@3.1.3: 779 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 780 | 781 | fast-glob@3.3.3: 782 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 783 | engines: {node: '>=8.6.0'} 784 | 785 | fast-json-stable-stringify@2.1.0: 786 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 787 | 788 | fast-levenshtein@2.0.6: 789 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 790 | 791 | fast-uri@3.1.0: 792 | resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 793 | 794 | fastest-levenshtein@1.0.16: 795 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 796 | engines: {node: '>= 4.9.1'} 797 | 798 | fastq@1.19.1: 799 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 800 | 801 | file-entry-cache@8.0.0: 802 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 803 | engines: {node: '>=16.0.0'} 804 | 805 | fill-range@7.1.1: 806 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 807 | engines: {node: '>=8'} 808 | 809 | find-up@4.1.0: 810 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 811 | engines: {node: '>=8'} 812 | 813 | find-up@5.0.0: 814 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 815 | engines: {node: '>=10'} 816 | 817 | flat-cache@4.0.1: 818 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 819 | engines: {node: '>=16'} 820 | 821 | flat@5.0.2: 822 | resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} 823 | hasBin: true 824 | 825 | flatted@3.3.3: 826 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 827 | 828 | function-bind@1.1.2: 829 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 830 | 831 | get-tsconfig@4.13.0: 832 | resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 833 | 834 | glob-parent@5.1.2: 835 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 836 | engines: {node: '>= 6'} 837 | 838 | glob-parent@6.0.2: 839 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 840 | engines: {node: '>=10.13.0'} 841 | 842 | glob-to-regexp@0.4.1: 843 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 844 | 845 | globals@14.0.0: 846 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 847 | engines: {node: '>=18'} 848 | 849 | globals@16.5.0: 850 | resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} 851 | engines: {node: '>=18'} 852 | 853 | globby@13.2.2: 854 | resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} 855 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 856 | 857 | graceful-fs@4.2.11: 858 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 859 | 860 | graphemer@1.4.0: 861 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 862 | 863 | has-flag@4.0.0: 864 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 865 | engines: {node: '>=8'} 866 | 867 | hasown@2.0.2: 868 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 869 | engines: {node: '>= 0.4'} 870 | 871 | icss-utils@5.1.0: 872 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} 873 | engines: {node: ^10 || ^12 || >= 14} 874 | peerDependencies: 875 | postcss: ^8.1.0 876 | 877 | ignore@5.3.2: 878 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 879 | engines: {node: '>= 4'} 880 | 881 | ignore@7.0.5: 882 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 883 | engines: {node: '>= 4'} 884 | 885 | immutable@5.1.4: 886 | resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} 887 | 888 | import-fresh@3.3.1: 889 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 890 | engines: {node: '>=6'} 891 | 892 | import-local@3.2.0: 893 | resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} 894 | engines: {node: '>=8'} 895 | hasBin: true 896 | 897 | imurmurhash@0.1.4: 898 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 899 | engines: {node: '>=0.8.19'} 900 | 901 | interpret@3.1.1: 902 | resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} 903 | engines: {node: '>=10.13.0'} 904 | 905 | is-core-module@2.16.1: 906 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 907 | engines: {node: '>= 0.4'} 908 | 909 | is-extglob@2.1.1: 910 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 911 | engines: {node: '>=0.10.0'} 912 | 913 | is-glob@4.0.3: 914 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 915 | engines: {node: '>=0.10.0'} 916 | 917 | is-number@7.0.0: 918 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 919 | engines: {node: '>=0.12.0'} 920 | 921 | is-plain-object@2.0.4: 922 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 923 | engines: {node: '>=0.10.0'} 924 | 925 | isexe@2.0.0: 926 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 927 | 928 | isobject@3.0.1: 929 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 930 | engines: {node: '>=0.10.0'} 931 | 932 | jest-worker@27.5.1: 933 | resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 934 | engines: {node: '>= 10.13.0'} 935 | 936 | js-yaml@4.1.1: 937 | resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 938 | hasBin: true 939 | 940 | json-buffer@3.0.1: 941 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 942 | 943 | json-parse-even-better-errors@2.3.1: 944 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 945 | 946 | json-schema-traverse@0.4.1: 947 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 948 | 949 | json-schema-traverse@1.0.0: 950 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 951 | 952 | json-stable-stringify-without-jsonify@1.0.1: 953 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 954 | 955 | json5@2.2.3: 956 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 957 | engines: {node: '>=6'} 958 | hasBin: true 959 | 960 | keyv@4.5.4: 961 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 962 | 963 | kind-of@6.0.3: 964 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 965 | engines: {node: '>=0.10.0'} 966 | 967 | klona@2.0.6: 968 | resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} 969 | engines: {node: '>= 8'} 970 | 971 | levn@0.4.1: 972 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 973 | engines: {node: '>= 0.8.0'} 974 | 975 | loader-runner@4.3.1: 976 | resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} 977 | engines: {node: '>=6.11.5'} 978 | 979 | loader-utils@2.0.4: 980 | resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} 981 | engines: {node: '>=8.9.0'} 982 | 983 | locate-path@5.0.0: 984 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 985 | engines: {node: '>=8'} 986 | 987 | locate-path@6.0.0: 988 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 989 | engines: {node: '>=10'} 990 | 991 | lodash.merge@4.6.2: 992 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 993 | 994 | merge-stream@2.0.0: 995 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 996 | 997 | merge2@1.4.1: 998 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 999 | engines: {node: '>= 8'} 1000 | 1001 | micromatch@4.0.8: 1002 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1003 | engines: {node: '>=8.6'} 1004 | 1005 | mime-db@1.52.0: 1006 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1007 | engines: {node: '>= 0.6'} 1008 | 1009 | mime-types@2.1.35: 1010 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1011 | engines: {node: '>= 0.6'} 1012 | 1013 | mini-css-extract-plugin@2.3.0: 1014 | resolution: {integrity: sha512-uzWaOwC+gJrnKbr23J1ZRWx/Wd9W9Ce1mKPlsBGBV/r8zG7/G7oKMxGmxbI65pVGbae2cR7CUx9Ulk0HQt8BfQ==} 1015 | engines: {node: '>= 12.13.0'} 1016 | peerDependencies: 1017 | webpack: ^5.0.0 1018 | 1019 | minimatch@3.1.2: 1020 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1021 | 1022 | minimatch@9.0.5: 1023 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1024 | engines: {node: '>=16 || 14 >=14.17'} 1025 | 1026 | ms@2.1.3: 1027 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1028 | 1029 | nanoid@3.3.11: 1030 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1031 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1032 | hasBin: true 1033 | 1034 | natural-compare@1.4.0: 1035 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1036 | 1037 | neo-async@2.6.2: 1038 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 1039 | 1040 | node-addon-api@7.1.1: 1041 | resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} 1042 | 1043 | node-releases@2.0.27: 1044 | resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 1045 | 1046 | normalize-path@3.0.0: 1047 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1048 | engines: {node: '>=0.10.0'} 1049 | 1050 | optionator@0.9.4: 1051 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1052 | engines: {node: '>= 0.8.0'} 1053 | 1054 | p-limit@2.3.0: 1055 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1056 | engines: {node: '>=6'} 1057 | 1058 | p-limit@3.1.0: 1059 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1060 | engines: {node: '>=10'} 1061 | 1062 | p-locate@4.1.0: 1063 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1064 | engines: {node: '>=8'} 1065 | 1066 | p-locate@5.0.0: 1067 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1068 | engines: {node: '>=10'} 1069 | 1070 | p-try@2.2.0: 1071 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1072 | engines: {node: '>=6'} 1073 | 1074 | parent-module@1.0.1: 1075 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1076 | engines: {node: '>=6'} 1077 | 1078 | path-exists@4.0.0: 1079 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1080 | engines: {node: '>=8'} 1081 | 1082 | path-key@3.1.1: 1083 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1084 | engines: {node: '>=8'} 1085 | 1086 | path-parse@1.0.7: 1087 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1088 | 1089 | path-type@4.0.0: 1090 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1091 | engines: {node: '>=8'} 1092 | 1093 | picocolors@1.1.1: 1094 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1095 | 1096 | picomatch@2.3.1: 1097 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1098 | engines: {node: '>=8.6'} 1099 | 1100 | pkg-dir@4.2.0: 1101 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1102 | engines: {node: '>=8'} 1103 | 1104 | postcss-modules-extract-imports@3.1.0: 1105 | resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} 1106 | engines: {node: ^10 || ^12 || >= 14} 1107 | peerDependencies: 1108 | postcss: ^8.1.0 1109 | 1110 | postcss-modules-local-by-default@4.2.0: 1111 | resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} 1112 | engines: {node: ^10 || ^12 || >= 14} 1113 | peerDependencies: 1114 | postcss: ^8.1.0 1115 | 1116 | postcss-modules-scope@3.2.1: 1117 | resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} 1118 | engines: {node: ^10 || ^12 || >= 14} 1119 | peerDependencies: 1120 | postcss: ^8.1.0 1121 | 1122 | postcss-modules-values@4.0.0: 1123 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} 1124 | engines: {node: ^10 || ^12 || >= 14} 1125 | peerDependencies: 1126 | postcss: ^8.1.0 1127 | 1128 | postcss-selector-parser@7.1.1: 1129 | resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} 1130 | engines: {node: '>=4'} 1131 | 1132 | postcss-value-parser@4.2.0: 1133 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1134 | 1135 | postcss@8.5.6: 1136 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1137 | engines: {node: ^10 || ^12 || >=14} 1138 | 1139 | prelude-ls@1.2.1: 1140 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1141 | engines: {node: '>= 0.8.0'} 1142 | 1143 | punycode@2.3.1: 1144 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1145 | engines: {node: '>=6'} 1146 | 1147 | queue-microtask@1.2.3: 1148 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1149 | 1150 | randombytes@2.1.0: 1151 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 1152 | 1153 | readdirp@4.1.2: 1154 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1155 | engines: {node: '>= 14.18.0'} 1156 | 1157 | rechoir@0.8.0: 1158 | resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} 1159 | engines: {node: '>= 10.13.0'} 1160 | 1161 | require-from-string@2.0.2: 1162 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1163 | engines: {node: '>=0.10.0'} 1164 | 1165 | resolve-cwd@3.0.0: 1166 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1167 | engines: {node: '>=8'} 1168 | 1169 | resolve-from@4.0.0: 1170 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1171 | engines: {node: '>=4'} 1172 | 1173 | resolve-from@5.0.0: 1174 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1175 | engines: {node: '>=8'} 1176 | 1177 | resolve-pkg-maps@1.0.0: 1178 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1179 | 1180 | resolve@1.22.11: 1181 | resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} 1182 | engines: {node: '>= 0.4'} 1183 | hasBin: true 1184 | 1185 | reusify@1.1.0: 1186 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1187 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1188 | 1189 | run-parallel@1.2.0: 1190 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1191 | 1192 | safe-buffer@5.2.1: 1193 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1194 | 1195 | sass-loader@12.6.0: 1196 | resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} 1197 | engines: {node: '>= 12.13.0'} 1198 | peerDependencies: 1199 | fibers: '>= 3.1.0' 1200 | node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 1201 | sass: ^1.3.0 1202 | sass-embedded: '*' 1203 | webpack: ^5.0.0 1204 | peerDependenciesMeta: 1205 | fibers: 1206 | optional: true 1207 | node-sass: 1208 | optional: true 1209 | sass: 1210 | optional: true 1211 | sass-embedded: 1212 | optional: true 1213 | 1214 | sass@1.94.2: 1215 | resolution: {integrity: sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==} 1216 | engines: {node: '>=14.0.0'} 1217 | hasBin: true 1218 | 1219 | schema-utils@3.3.0: 1220 | resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} 1221 | engines: {node: '>= 10.13.0'} 1222 | 1223 | schema-utils@4.3.3: 1224 | resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} 1225 | engines: {node: '>= 10.13.0'} 1226 | 1227 | semver@7.7.3: 1228 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 1229 | engines: {node: '>=10'} 1230 | hasBin: true 1231 | 1232 | serialize-javascript@6.0.2: 1233 | resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 1234 | 1235 | shallow-clone@3.0.1: 1236 | resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} 1237 | engines: {node: '>=8'} 1238 | 1239 | shebang-command@2.0.0: 1240 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1241 | engines: {node: '>=8'} 1242 | 1243 | shebang-regex@3.0.0: 1244 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1245 | engines: {node: '>=8'} 1246 | 1247 | siyuan@1.1.6: 1248 | resolution: {integrity: sha512-YTvO7yV4MBsh/Ec/FhQTegnYLEjl7aIVi2s3aTlv7MyRm2YuHCbdgNjMjFvXyzKPqwUMJY1H48On3Q02ePKKyA==} 1249 | 1250 | slash@4.0.0: 1251 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 1252 | engines: {node: '>=12'} 1253 | 1254 | source-list-map@2.0.1: 1255 | resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} 1256 | 1257 | source-map-js@1.2.1: 1258 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1259 | engines: {node: '>=0.10.0'} 1260 | 1261 | source-map-support@0.5.21: 1262 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1263 | 1264 | source-map@0.6.1: 1265 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1266 | engines: {node: '>=0.10.0'} 1267 | 1268 | strip-json-comments@3.1.1: 1269 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1270 | engines: {node: '>=8'} 1271 | 1272 | supports-color@7.2.0: 1273 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1274 | engines: {node: '>=8'} 1275 | 1276 | supports-color@8.1.1: 1277 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1278 | engines: {node: '>=10'} 1279 | 1280 | supports-preserve-symlinks-flag@1.0.0: 1281 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1282 | engines: {node: '>= 0.4'} 1283 | 1284 | tapable@2.3.0: 1285 | resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} 1286 | engines: {node: '>=6'} 1287 | 1288 | terser-webpack-plugin@5.3.14: 1289 | resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} 1290 | engines: {node: '>= 10.13.0'} 1291 | peerDependencies: 1292 | '@swc/core': '*' 1293 | esbuild: '*' 1294 | uglify-js: '*' 1295 | webpack: ^5.1.0 1296 | peerDependenciesMeta: 1297 | '@swc/core': 1298 | optional: true 1299 | esbuild: 1300 | optional: true 1301 | uglify-js: 1302 | optional: true 1303 | 1304 | terser@5.44.1: 1305 | resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} 1306 | engines: {node: '>=10'} 1307 | hasBin: true 1308 | 1309 | to-regex-range@5.0.1: 1310 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1311 | engines: {node: '>=8.0'} 1312 | 1313 | ts-api-utils@2.1.0: 1314 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1315 | engines: {node: '>=18.12'} 1316 | peerDependencies: 1317 | typescript: '>=4.8.4' 1318 | 1319 | tslib@2.4.0: 1320 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 1321 | 1322 | type-check@0.4.0: 1323 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1324 | engines: {node: '>= 0.8.0'} 1325 | 1326 | typescript@4.8.4: 1327 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 1328 | engines: {node: '>=4.2.0'} 1329 | hasBin: true 1330 | 1331 | undici-types@7.16.0: 1332 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 1333 | 1334 | update-browserslist-db@1.1.4: 1335 | resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} 1336 | hasBin: true 1337 | peerDependencies: 1338 | browserslist: '>= 4.21.0' 1339 | 1340 | uri-js@4.4.1: 1341 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1342 | 1343 | util-deprecate@1.0.2: 1344 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1345 | 1346 | watchpack@2.4.4: 1347 | resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} 1348 | engines: {node: '>=10.13.0'} 1349 | 1350 | webpack-cli@5.1.4: 1351 | resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} 1352 | engines: {node: '>=14.15.0'} 1353 | hasBin: true 1354 | peerDependencies: 1355 | '@webpack-cli/generators': '*' 1356 | webpack: 5.x.x 1357 | webpack-bundle-analyzer: '*' 1358 | webpack-dev-server: '*' 1359 | peerDependenciesMeta: 1360 | '@webpack-cli/generators': 1361 | optional: true 1362 | webpack-bundle-analyzer: 1363 | optional: true 1364 | webpack-dev-server: 1365 | optional: true 1366 | 1367 | webpack-merge@5.10.0: 1368 | resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} 1369 | engines: {node: '>=10.0.0'} 1370 | 1371 | webpack-sources@1.4.3: 1372 | resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} 1373 | 1374 | webpack-sources@3.3.3: 1375 | resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} 1376 | engines: {node: '>=10.13.0'} 1377 | 1378 | webpack@5.103.0: 1379 | resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==} 1380 | engines: {node: '>=10.13.0'} 1381 | hasBin: true 1382 | peerDependencies: 1383 | webpack-cli: '*' 1384 | peerDependenciesMeta: 1385 | webpack-cli: 1386 | optional: true 1387 | 1388 | which@2.0.2: 1389 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1390 | engines: {node: '>= 8'} 1391 | hasBin: true 1392 | 1393 | wildcard@2.0.1: 1394 | resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} 1395 | 1396 | word-wrap@1.2.5: 1397 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1398 | engines: {node: '>=0.10.0'} 1399 | 1400 | yazl@2.5.1: 1401 | resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} 1402 | 1403 | yocto-queue@0.1.0: 1404 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1405 | engines: {node: '>=10'} 1406 | 1407 | zip-webpack-plugin@4.0.3: 1408 | resolution: {integrity: sha512-F9JmhbFwmTqCNi2evY5j7cnyRz6NCAc8Scgzjiw2ZDBjrvVZ56WhKm8VGGVe+4o3B6BJ+J6WViMQ4xSDI2JpVQ==} 1409 | peerDependencies: 1410 | webpack: ^4.0.0 || ^5.0.0 1411 | webpack-sources: '*' 1412 | 1413 | snapshots: 1414 | 1415 | '@discoveryjs/json-ext@0.5.7': {} 1416 | 1417 | '@esbuild/aix-ppc64@0.19.12': 1418 | optional: true 1419 | 1420 | '@esbuild/android-arm64@0.19.12': 1421 | optional: true 1422 | 1423 | '@esbuild/android-arm@0.19.12': 1424 | optional: true 1425 | 1426 | '@esbuild/android-x64@0.19.12': 1427 | optional: true 1428 | 1429 | '@esbuild/darwin-arm64@0.19.12': 1430 | optional: true 1431 | 1432 | '@esbuild/darwin-x64@0.19.12': 1433 | optional: true 1434 | 1435 | '@esbuild/freebsd-arm64@0.19.12': 1436 | optional: true 1437 | 1438 | '@esbuild/freebsd-x64@0.19.12': 1439 | optional: true 1440 | 1441 | '@esbuild/linux-arm64@0.19.12': 1442 | optional: true 1443 | 1444 | '@esbuild/linux-arm@0.19.12': 1445 | optional: true 1446 | 1447 | '@esbuild/linux-ia32@0.19.12': 1448 | optional: true 1449 | 1450 | '@esbuild/linux-loong64@0.19.12': 1451 | optional: true 1452 | 1453 | '@esbuild/linux-mips64el@0.19.12': 1454 | optional: true 1455 | 1456 | '@esbuild/linux-ppc64@0.19.12': 1457 | optional: true 1458 | 1459 | '@esbuild/linux-riscv64@0.19.12': 1460 | optional: true 1461 | 1462 | '@esbuild/linux-s390x@0.19.12': 1463 | optional: true 1464 | 1465 | '@esbuild/linux-x64@0.19.12': 1466 | optional: true 1467 | 1468 | '@esbuild/netbsd-x64@0.19.12': 1469 | optional: true 1470 | 1471 | '@esbuild/openbsd-x64@0.19.12': 1472 | optional: true 1473 | 1474 | '@esbuild/sunos-x64@0.19.12': 1475 | optional: true 1476 | 1477 | '@esbuild/win32-arm64@0.19.12': 1478 | optional: true 1479 | 1480 | '@esbuild/win32-ia32@0.19.12': 1481 | optional: true 1482 | 1483 | '@esbuild/win32-x64@0.19.12': 1484 | optional: true 1485 | 1486 | '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': 1487 | dependencies: 1488 | eslint: 9.39.1 1489 | eslint-visitor-keys: 3.4.3 1490 | 1491 | '@eslint-community/regexpp@4.12.2': {} 1492 | 1493 | '@eslint/config-array@0.21.1': 1494 | dependencies: 1495 | '@eslint/object-schema': 2.1.7 1496 | debug: 4.4.3 1497 | minimatch: 3.1.2 1498 | transitivePeerDependencies: 1499 | - supports-color 1500 | 1501 | '@eslint/config-helpers@0.4.2': 1502 | dependencies: 1503 | '@eslint/core': 0.17.0 1504 | 1505 | '@eslint/core@0.17.0': 1506 | dependencies: 1507 | '@types/json-schema': 7.0.15 1508 | 1509 | '@eslint/eslintrc@3.3.3': 1510 | dependencies: 1511 | ajv: 6.12.6 1512 | debug: 4.4.3 1513 | espree: 10.4.0 1514 | globals: 14.0.0 1515 | ignore: 5.3.2 1516 | import-fresh: 3.3.1 1517 | js-yaml: 4.1.1 1518 | minimatch: 3.1.2 1519 | strip-json-comments: 3.1.1 1520 | transitivePeerDependencies: 1521 | - supports-color 1522 | 1523 | '@eslint/js@9.39.1': {} 1524 | 1525 | '@eslint/object-schema@2.1.7': {} 1526 | 1527 | '@eslint/plugin-kit@0.4.1': 1528 | dependencies: 1529 | '@eslint/core': 0.17.0 1530 | levn: 0.4.1 1531 | 1532 | '@humanfs/core@0.19.1': {} 1533 | 1534 | '@humanfs/node@0.16.7': 1535 | dependencies: 1536 | '@humanfs/core': 0.19.1 1537 | '@humanwhocodes/retry': 0.4.3 1538 | 1539 | '@humanwhocodes/module-importer@1.0.1': {} 1540 | 1541 | '@humanwhocodes/retry@0.4.3': {} 1542 | 1543 | '@jridgewell/gen-mapping@0.3.13': 1544 | dependencies: 1545 | '@jridgewell/sourcemap-codec': 1.5.5 1546 | '@jridgewell/trace-mapping': 0.3.31 1547 | 1548 | '@jridgewell/resolve-uri@3.1.2': {} 1549 | 1550 | '@jridgewell/source-map@0.3.11': 1551 | dependencies: 1552 | '@jridgewell/gen-mapping': 0.3.13 1553 | '@jridgewell/trace-mapping': 0.3.31 1554 | 1555 | '@jridgewell/sourcemap-codec@1.5.5': {} 1556 | 1557 | '@jridgewell/trace-mapping@0.3.31': 1558 | dependencies: 1559 | '@jridgewell/resolve-uri': 3.1.2 1560 | '@jridgewell/sourcemap-codec': 1.5.5 1561 | 1562 | '@nodelib/fs.scandir@2.1.5': 1563 | dependencies: 1564 | '@nodelib/fs.stat': 2.0.5 1565 | run-parallel: 1.2.0 1566 | 1567 | '@nodelib/fs.stat@2.0.5': {} 1568 | 1569 | '@nodelib/fs.walk@1.2.8': 1570 | dependencies: 1571 | '@nodelib/fs.scandir': 2.1.5 1572 | fastq: 1.19.1 1573 | 1574 | '@parcel/watcher-android-arm64@2.5.1': 1575 | optional: true 1576 | 1577 | '@parcel/watcher-darwin-arm64@2.5.1': 1578 | optional: true 1579 | 1580 | '@parcel/watcher-darwin-x64@2.5.1': 1581 | optional: true 1582 | 1583 | '@parcel/watcher-freebsd-x64@2.5.1': 1584 | optional: true 1585 | 1586 | '@parcel/watcher-linux-arm-glibc@2.5.1': 1587 | optional: true 1588 | 1589 | '@parcel/watcher-linux-arm-musl@2.5.1': 1590 | optional: true 1591 | 1592 | '@parcel/watcher-linux-arm64-glibc@2.5.1': 1593 | optional: true 1594 | 1595 | '@parcel/watcher-linux-arm64-musl@2.5.1': 1596 | optional: true 1597 | 1598 | '@parcel/watcher-linux-x64-glibc@2.5.1': 1599 | optional: true 1600 | 1601 | '@parcel/watcher-linux-x64-musl@2.5.1': 1602 | optional: true 1603 | 1604 | '@parcel/watcher-win32-arm64@2.5.1': 1605 | optional: true 1606 | 1607 | '@parcel/watcher-win32-ia32@2.5.1': 1608 | optional: true 1609 | 1610 | '@parcel/watcher-win32-x64@2.5.1': 1611 | optional: true 1612 | 1613 | '@parcel/watcher@2.5.1': 1614 | dependencies: 1615 | detect-libc: 1.0.3 1616 | is-glob: 4.0.3 1617 | micromatch: 4.0.8 1618 | node-addon-api: 7.1.1 1619 | optionalDependencies: 1620 | '@parcel/watcher-android-arm64': 2.5.1 1621 | '@parcel/watcher-darwin-arm64': 2.5.1 1622 | '@parcel/watcher-darwin-x64': 2.5.1 1623 | '@parcel/watcher-freebsd-x64': 2.5.1 1624 | '@parcel/watcher-linux-arm-glibc': 2.5.1 1625 | '@parcel/watcher-linux-arm-musl': 2.5.1 1626 | '@parcel/watcher-linux-arm64-glibc': 2.5.1 1627 | '@parcel/watcher-linux-arm64-musl': 2.5.1 1628 | '@parcel/watcher-linux-x64-glibc': 2.5.1 1629 | '@parcel/watcher-linux-x64-musl': 2.5.1 1630 | '@parcel/watcher-win32-arm64': 2.5.1 1631 | '@parcel/watcher-win32-ia32': 2.5.1 1632 | '@parcel/watcher-win32-x64': 2.5.1 1633 | optional: true 1634 | 1635 | '@types/eslint-scope@3.7.7': 1636 | dependencies: 1637 | '@types/eslint': 9.6.1 1638 | '@types/estree': 1.0.8 1639 | 1640 | '@types/eslint@9.6.1': 1641 | dependencies: 1642 | '@types/estree': 1.0.8 1643 | '@types/json-schema': 7.0.15 1644 | 1645 | '@types/estree@1.0.8': {} 1646 | 1647 | '@types/json-schema@7.0.15': {} 1648 | 1649 | '@types/node@24.10.1': 1650 | dependencies: 1651 | undici-types: 7.16.0 1652 | 1653 | '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.1)(typescript@4.8.4))(eslint@9.39.1)(typescript@4.8.4)': 1654 | dependencies: 1655 | '@eslint-community/regexpp': 4.12.2 1656 | '@typescript-eslint/parser': 8.40.0(eslint@9.39.1)(typescript@4.8.4) 1657 | '@typescript-eslint/scope-manager': 8.40.0 1658 | '@typescript-eslint/type-utils': 8.40.0(eslint@9.39.1)(typescript@4.8.4) 1659 | '@typescript-eslint/utils': 8.40.0(eslint@9.39.1)(typescript@4.8.4) 1660 | '@typescript-eslint/visitor-keys': 8.40.0 1661 | eslint: 9.39.1 1662 | graphemer: 1.4.0 1663 | ignore: 7.0.5 1664 | natural-compare: 1.4.0 1665 | ts-api-utils: 2.1.0(typescript@4.8.4) 1666 | typescript: 4.8.4 1667 | transitivePeerDependencies: 1668 | - supports-color 1669 | 1670 | '@typescript-eslint/parser@8.40.0(eslint@9.39.1)(typescript@4.8.4)': 1671 | dependencies: 1672 | '@typescript-eslint/scope-manager': 8.40.0 1673 | '@typescript-eslint/types': 8.40.0 1674 | '@typescript-eslint/typescript-estree': 8.40.0(typescript@4.8.4) 1675 | '@typescript-eslint/visitor-keys': 8.40.0 1676 | debug: 4.4.3 1677 | eslint: 9.39.1 1678 | typescript: 4.8.4 1679 | transitivePeerDependencies: 1680 | - supports-color 1681 | 1682 | '@typescript-eslint/project-service@8.40.0(typescript@4.8.4)': 1683 | dependencies: 1684 | '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@4.8.4) 1685 | '@typescript-eslint/types': 8.40.0 1686 | debug: 4.4.3 1687 | typescript: 4.8.4 1688 | transitivePeerDependencies: 1689 | - supports-color 1690 | 1691 | '@typescript-eslint/scope-manager@8.40.0': 1692 | dependencies: 1693 | '@typescript-eslint/types': 8.40.0 1694 | '@typescript-eslint/visitor-keys': 8.40.0 1695 | 1696 | '@typescript-eslint/tsconfig-utils@8.40.0(typescript@4.8.4)': 1697 | dependencies: 1698 | typescript: 4.8.4 1699 | 1700 | '@typescript-eslint/type-utils@8.40.0(eslint@9.39.1)(typescript@4.8.4)': 1701 | dependencies: 1702 | '@typescript-eslint/types': 8.40.0 1703 | '@typescript-eslint/typescript-estree': 8.40.0(typescript@4.8.4) 1704 | '@typescript-eslint/utils': 8.40.0(eslint@9.39.1)(typescript@4.8.4) 1705 | debug: 4.4.3 1706 | eslint: 9.39.1 1707 | ts-api-utils: 2.1.0(typescript@4.8.4) 1708 | typescript: 4.8.4 1709 | transitivePeerDependencies: 1710 | - supports-color 1711 | 1712 | '@typescript-eslint/types@8.40.0': {} 1713 | 1714 | '@typescript-eslint/typescript-estree@8.40.0(typescript@4.8.4)': 1715 | dependencies: 1716 | '@typescript-eslint/project-service': 8.40.0(typescript@4.8.4) 1717 | '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@4.8.4) 1718 | '@typescript-eslint/types': 8.40.0 1719 | '@typescript-eslint/visitor-keys': 8.40.0 1720 | debug: 4.4.3 1721 | fast-glob: 3.3.3 1722 | is-glob: 4.0.3 1723 | minimatch: 9.0.5 1724 | semver: 7.7.3 1725 | ts-api-utils: 2.1.0(typescript@4.8.4) 1726 | typescript: 4.8.4 1727 | transitivePeerDependencies: 1728 | - supports-color 1729 | 1730 | '@typescript-eslint/utils@8.40.0(eslint@9.39.1)(typescript@4.8.4)': 1731 | dependencies: 1732 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) 1733 | '@typescript-eslint/scope-manager': 8.40.0 1734 | '@typescript-eslint/types': 8.40.0 1735 | '@typescript-eslint/typescript-estree': 8.40.0(typescript@4.8.4) 1736 | eslint: 9.39.1 1737 | typescript: 4.8.4 1738 | transitivePeerDependencies: 1739 | - supports-color 1740 | 1741 | '@typescript-eslint/visitor-keys@8.40.0': 1742 | dependencies: 1743 | '@typescript-eslint/types': 8.40.0 1744 | eslint-visitor-keys: 4.2.1 1745 | 1746 | '@webassemblyjs/ast@1.14.1': 1747 | dependencies: 1748 | '@webassemblyjs/helper-numbers': 1.13.2 1749 | '@webassemblyjs/helper-wasm-bytecode': 1.13.2 1750 | 1751 | '@webassemblyjs/floating-point-hex-parser@1.13.2': {} 1752 | 1753 | '@webassemblyjs/helper-api-error@1.13.2': {} 1754 | 1755 | '@webassemblyjs/helper-buffer@1.14.1': {} 1756 | 1757 | '@webassemblyjs/helper-numbers@1.13.2': 1758 | dependencies: 1759 | '@webassemblyjs/floating-point-hex-parser': 1.13.2 1760 | '@webassemblyjs/helper-api-error': 1.13.2 1761 | '@xtuc/long': 4.2.2 1762 | 1763 | '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} 1764 | 1765 | '@webassemblyjs/helper-wasm-section@1.14.1': 1766 | dependencies: 1767 | '@webassemblyjs/ast': 1.14.1 1768 | '@webassemblyjs/helper-buffer': 1.14.1 1769 | '@webassemblyjs/helper-wasm-bytecode': 1.13.2 1770 | '@webassemblyjs/wasm-gen': 1.14.1 1771 | 1772 | '@webassemblyjs/ieee754@1.13.2': 1773 | dependencies: 1774 | '@xtuc/ieee754': 1.2.0 1775 | 1776 | '@webassemblyjs/leb128@1.13.2': 1777 | dependencies: 1778 | '@xtuc/long': 4.2.2 1779 | 1780 | '@webassemblyjs/utf8@1.13.2': {} 1781 | 1782 | '@webassemblyjs/wasm-edit@1.14.1': 1783 | dependencies: 1784 | '@webassemblyjs/ast': 1.14.1 1785 | '@webassemblyjs/helper-buffer': 1.14.1 1786 | '@webassemblyjs/helper-wasm-bytecode': 1.13.2 1787 | '@webassemblyjs/helper-wasm-section': 1.14.1 1788 | '@webassemblyjs/wasm-gen': 1.14.1 1789 | '@webassemblyjs/wasm-opt': 1.14.1 1790 | '@webassemblyjs/wasm-parser': 1.14.1 1791 | '@webassemblyjs/wast-printer': 1.14.1 1792 | 1793 | '@webassemblyjs/wasm-gen@1.14.1': 1794 | dependencies: 1795 | '@webassemblyjs/ast': 1.14.1 1796 | '@webassemblyjs/helper-wasm-bytecode': 1.13.2 1797 | '@webassemblyjs/ieee754': 1.13.2 1798 | '@webassemblyjs/leb128': 1.13.2 1799 | '@webassemblyjs/utf8': 1.13.2 1800 | 1801 | '@webassemblyjs/wasm-opt@1.14.1': 1802 | dependencies: 1803 | '@webassemblyjs/ast': 1.14.1 1804 | '@webassemblyjs/helper-buffer': 1.14.1 1805 | '@webassemblyjs/wasm-gen': 1.14.1 1806 | '@webassemblyjs/wasm-parser': 1.14.1 1807 | 1808 | '@webassemblyjs/wasm-parser@1.14.1': 1809 | dependencies: 1810 | '@webassemblyjs/ast': 1.14.1 1811 | '@webassemblyjs/helper-api-error': 1.13.2 1812 | '@webassemblyjs/helper-wasm-bytecode': 1.13.2 1813 | '@webassemblyjs/ieee754': 1.13.2 1814 | '@webassemblyjs/leb128': 1.13.2 1815 | '@webassemblyjs/utf8': 1.13.2 1816 | 1817 | '@webassemblyjs/wast-printer@1.14.1': 1818 | dependencies: 1819 | '@webassemblyjs/ast': 1.14.1 1820 | '@xtuc/long': 4.2.2 1821 | 1822 | '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.103.0)': 1823 | dependencies: 1824 | webpack: 5.103.0(webpack-cli@5.1.4) 1825 | webpack-cli: 5.1.4(webpack@5.103.0) 1826 | 1827 | '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.103.0)': 1828 | dependencies: 1829 | webpack: 5.103.0(webpack-cli@5.1.4) 1830 | webpack-cli: 5.1.4(webpack@5.103.0) 1831 | 1832 | '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.103.0)': 1833 | dependencies: 1834 | webpack: 5.103.0(webpack-cli@5.1.4) 1835 | webpack-cli: 5.1.4(webpack@5.103.0) 1836 | 1837 | '@xtuc/ieee754@1.2.0': {} 1838 | 1839 | '@xtuc/long@4.2.2': {} 1840 | 1841 | acorn-import-phases@1.0.4(acorn@8.15.0): 1842 | dependencies: 1843 | acorn: 8.15.0 1844 | 1845 | acorn-jsx@5.3.2(acorn@8.15.0): 1846 | dependencies: 1847 | acorn: 8.15.0 1848 | 1849 | acorn@8.15.0: {} 1850 | 1851 | ajv-formats@2.1.1(ajv@8.17.1): 1852 | optionalDependencies: 1853 | ajv: 8.17.1 1854 | 1855 | ajv-keywords@3.5.2(ajv@6.12.6): 1856 | dependencies: 1857 | ajv: 6.12.6 1858 | 1859 | ajv-keywords@5.1.0(ajv@8.17.1): 1860 | dependencies: 1861 | ajv: 8.17.1 1862 | fast-deep-equal: 3.1.3 1863 | 1864 | ajv@6.12.6: 1865 | dependencies: 1866 | fast-deep-equal: 3.1.3 1867 | fast-json-stable-stringify: 2.1.0 1868 | json-schema-traverse: 0.4.1 1869 | uri-js: 4.4.1 1870 | 1871 | ajv@8.17.1: 1872 | dependencies: 1873 | fast-deep-equal: 3.1.3 1874 | fast-uri: 3.1.0 1875 | json-schema-traverse: 1.0.0 1876 | require-from-string: 2.0.2 1877 | 1878 | ansi-styles@4.3.0: 1879 | dependencies: 1880 | color-convert: 2.0.1 1881 | 1882 | argparse@2.0.1: {} 1883 | 1884 | balanced-match@1.0.2: {} 1885 | 1886 | baseline-browser-mapping@2.8.32: {} 1887 | 1888 | big.js@5.2.2: {} 1889 | 1890 | brace-expansion@1.1.12: 1891 | dependencies: 1892 | balanced-match: 1.0.2 1893 | concat-map: 0.0.1 1894 | 1895 | brace-expansion@2.0.2: 1896 | dependencies: 1897 | balanced-match: 1.0.2 1898 | 1899 | braces@3.0.3: 1900 | dependencies: 1901 | fill-range: 7.1.1 1902 | 1903 | browserslist@4.28.0: 1904 | dependencies: 1905 | baseline-browser-mapping: 2.8.32 1906 | caniuse-lite: 1.0.30001757 1907 | electron-to-chromium: 1.5.263 1908 | node-releases: 2.0.27 1909 | update-browserslist-db: 1.1.4(browserslist@4.28.0) 1910 | 1911 | buffer-crc32@0.2.13: {} 1912 | 1913 | buffer-from@1.1.2: {} 1914 | 1915 | callsites@3.1.0: {} 1916 | 1917 | caniuse-lite@1.0.30001757: {} 1918 | 1919 | chalk@4.1.2: 1920 | dependencies: 1921 | ansi-styles: 4.3.0 1922 | supports-color: 7.2.0 1923 | 1924 | chokidar@4.0.3: 1925 | dependencies: 1926 | readdirp: 4.1.2 1927 | 1928 | chrome-trace-event@1.0.4: {} 1929 | 1930 | clone-deep@4.0.1: 1931 | dependencies: 1932 | is-plain-object: 2.0.4 1933 | kind-of: 6.0.3 1934 | shallow-clone: 3.0.1 1935 | 1936 | color-convert@2.0.1: 1937 | dependencies: 1938 | color-name: 1.1.4 1939 | 1940 | color-name@1.1.4: {} 1941 | 1942 | colorette@2.0.20: {} 1943 | 1944 | commander@10.0.1: {} 1945 | 1946 | commander@2.20.3: {} 1947 | 1948 | concat-map@0.0.1: {} 1949 | 1950 | copy-webpack-plugin@11.0.0(webpack@5.103.0): 1951 | dependencies: 1952 | fast-glob: 3.3.3 1953 | glob-parent: 6.0.2 1954 | globby: 13.2.2 1955 | normalize-path: 3.0.0 1956 | schema-utils: 4.3.3 1957 | serialize-javascript: 6.0.2 1958 | webpack: 5.103.0(webpack-cli@5.1.4) 1959 | 1960 | cross-spawn@7.0.6: 1961 | dependencies: 1962 | path-key: 3.1.1 1963 | shebang-command: 2.0.0 1964 | which: 2.0.2 1965 | 1966 | css-loader@6.11.0(webpack@5.103.0): 1967 | dependencies: 1968 | icss-utils: 5.1.0(postcss@8.5.6) 1969 | postcss: 8.5.6 1970 | postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) 1971 | postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) 1972 | postcss-modules-scope: 3.2.1(postcss@8.5.6) 1973 | postcss-modules-values: 4.0.0(postcss@8.5.6) 1974 | postcss-value-parser: 4.2.0 1975 | semver: 7.7.3 1976 | optionalDependencies: 1977 | webpack: 5.103.0(webpack-cli@5.1.4) 1978 | 1979 | cssesc@3.0.0: {} 1980 | 1981 | debug@4.4.3: 1982 | dependencies: 1983 | ms: 2.1.3 1984 | 1985 | deep-is@0.1.4: {} 1986 | 1987 | detect-libc@1.0.3: 1988 | optional: true 1989 | 1990 | dir-glob@3.0.1: 1991 | dependencies: 1992 | path-type: 4.0.0 1993 | 1994 | electron-to-chromium@1.5.263: {} 1995 | 1996 | emojis-list@3.0.0: {} 1997 | 1998 | enhanced-resolve@5.18.3: 1999 | dependencies: 2000 | graceful-fs: 4.2.11 2001 | tapable: 2.3.0 2002 | 2003 | envinfo@7.21.0: {} 2004 | 2005 | es-module-lexer@1.7.0: {} 2006 | 2007 | esbuild-loader@3.2.0(webpack@5.103.0): 2008 | dependencies: 2009 | esbuild: 0.19.12 2010 | get-tsconfig: 4.13.0 2011 | loader-utils: 2.0.4 2012 | webpack: 5.103.0(webpack-cli@5.1.4) 2013 | webpack-sources: 1.4.3 2014 | 2015 | esbuild@0.19.12: 2016 | optionalDependencies: 2017 | '@esbuild/aix-ppc64': 0.19.12 2018 | '@esbuild/android-arm': 0.19.12 2019 | '@esbuild/android-arm64': 0.19.12 2020 | '@esbuild/android-x64': 0.19.12 2021 | '@esbuild/darwin-arm64': 0.19.12 2022 | '@esbuild/darwin-x64': 0.19.12 2023 | '@esbuild/freebsd-arm64': 0.19.12 2024 | '@esbuild/freebsd-x64': 0.19.12 2025 | '@esbuild/linux-arm': 0.19.12 2026 | '@esbuild/linux-arm64': 0.19.12 2027 | '@esbuild/linux-ia32': 0.19.12 2028 | '@esbuild/linux-loong64': 0.19.12 2029 | '@esbuild/linux-mips64el': 0.19.12 2030 | '@esbuild/linux-ppc64': 0.19.12 2031 | '@esbuild/linux-riscv64': 0.19.12 2032 | '@esbuild/linux-s390x': 0.19.12 2033 | '@esbuild/linux-x64': 0.19.12 2034 | '@esbuild/netbsd-x64': 0.19.12 2035 | '@esbuild/openbsd-x64': 0.19.12 2036 | '@esbuild/sunos-x64': 0.19.12 2037 | '@esbuild/win32-arm64': 0.19.12 2038 | '@esbuild/win32-ia32': 0.19.12 2039 | '@esbuild/win32-x64': 0.19.12 2040 | 2041 | escalade@3.2.0: {} 2042 | 2043 | escape-string-regexp@4.0.0: {} 2044 | 2045 | eslint-scope@5.1.1: 2046 | dependencies: 2047 | esrecurse: 4.3.0 2048 | estraverse: 4.3.0 2049 | 2050 | eslint-scope@8.4.0: 2051 | dependencies: 2052 | esrecurse: 4.3.0 2053 | estraverse: 5.3.0 2054 | 2055 | eslint-visitor-keys@3.4.3: {} 2056 | 2057 | eslint-visitor-keys@4.2.1: {} 2058 | 2059 | eslint@9.39.1: 2060 | dependencies: 2061 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) 2062 | '@eslint-community/regexpp': 4.12.2 2063 | '@eslint/config-array': 0.21.1 2064 | '@eslint/config-helpers': 0.4.2 2065 | '@eslint/core': 0.17.0 2066 | '@eslint/eslintrc': 3.3.3 2067 | '@eslint/js': 9.39.1 2068 | '@eslint/plugin-kit': 0.4.1 2069 | '@humanfs/node': 0.16.7 2070 | '@humanwhocodes/module-importer': 1.0.1 2071 | '@humanwhocodes/retry': 0.4.3 2072 | '@types/estree': 1.0.8 2073 | ajv: 6.12.6 2074 | chalk: 4.1.2 2075 | cross-spawn: 7.0.6 2076 | debug: 4.4.3 2077 | escape-string-regexp: 4.0.0 2078 | eslint-scope: 8.4.0 2079 | eslint-visitor-keys: 4.2.1 2080 | espree: 10.4.0 2081 | esquery: 1.6.0 2082 | esutils: 2.0.3 2083 | fast-deep-equal: 3.1.3 2084 | file-entry-cache: 8.0.0 2085 | find-up: 5.0.0 2086 | glob-parent: 6.0.2 2087 | ignore: 5.3.2 2088 | imurmurhash: 0.1.4 2089 | is-glob: 4.0.3 2090 | json-stable-stringify-without-jsonify: 1.0.1 2091 | lodash.merge: 4.6.2 2092 | minimatch: 3.1.2 2093 | natural-compare: 1.4.0 2094 | optionator: 0.9.4 2095 | transitivePeerDependencies: 2096 | - supports-color 2097 | 2098 | espree@10.4.0: 2099 | dependencies: 2100 | acorn: 8.15.0 2101 | acorn-jsx: 5.3.2(acorn@8.15.0) 2102 | eslint-visitor-keys: 4.2.1 2103 | 2104 | esquery@1.6.0: 2105 | dependencies: 2106 | estraverse: 5.3.0 2107 | 2108 | esrecurse@4.3.0: 2109 | dependencies: 2110 | estraverse: 5.3.0 2111 | 2112 | estraverse@4.3.0: {} 2113 | 2114 | estraverse@5.3.0: {} 2115 | 2116 | esutils@2.0.3: {} 2117 | 2118 | events@3.3.0: {} 2119 | 2120 | fast-deep-equal@3.1.3: {} 2121 | 2122 | fast-glob@3.3.3: 2123 | dependencies: 2124 | '@nodelib/fs.stat': 2.0.5 2125 | '@nodelib/fs.walk': 1.2.8 2126 | glob-parent: 5.1.2 2127 | merge2: 1.4.1 2128 | micromatch: 4.0.8 2129 | 2130 | fast-json-stable-stringify@2.1.0: {} 2131 | 2132 | fast-levenshtein@2.0.6: {} 2133 | 2134 | fast-uri@3.1.0: {} 2135 | 2136 | fastest-levenshtein@1.0.16: {} 2137 | 2138 | fastq@1.19.1: 2139 | dependencies: 2140 | reusify: 1.1.0 2141 | 2142 | file-entry-cache@8.0.0: 2143 | dependencies: 2144 | flat-cache: 4.0.1 2145 | 2146 | fill-range@7.1.1: 2147 | dependencies: 2148 | to-regex-range: 5.0.1 2149 | 2150 | find-up@4.1.0: 2151 | dependencies: 2152 | locate-path: 5.0.0 2153 | path-exists: 4.0.0 2154 | 2155 | find-up@5.0.0: 2156 | dependencies: 2157 | locate-path: 6.0.0 2158 | path-exists: 4.0.0 2159 | 2160 | flat-cache@4.0.1: 2161 | dependencies: 2162 | flatted: 3.3.3 2163 | keyv: 4.5.4 2164 | 2165 | flat@5.0.2: {} 2166 | 2167 | flatted@3.3.3: {} 2168 | 2169 | function-bind@1.1.2: {} 2170 | 2171 | get-tsconfig@4.13.0: 2172 | dependencies: 2173 | resolve-pkg-maps: 1.0.0 2174 | 2175 | glob-parent@5.1.2: 2176 | dependencies: 2177 | is-glob: 4.0.3 2178 | 2179 | glob-parent@6.0.2: 2180 | dependencies: 2181 | is-glob: 4.0.3 2182 | 2183 | glob-to-regexp@0.4.1: {} 2184 | 2185 | globals@14.0.0: {} 2186 | 2187 | globals@16.5.0: {} 2188 | 2189 | globby@13.2.2: 2190 | dependencies: 2191 | dir-glob: 3.0.1 2192 | fast-glob: 3.3.3 2193 | ignore: 5.3.2 2194 | merge2: 1.4.1 2195 | slash: 4.0.0 2196 | 2197 | graceful-fs@4.2.11: {} 2198 | 2199 | graphemer@1.4.0: {} 2200 | 2201 | has-flag@4.0.0: {} 2202 | 2203 | hasown@2.0.2: 2204 | dependencies: 2205 | function-bind: 1.1.2 2206 | 2207 | icss-utils@5.1.0(postcss@8.5.6): 2208 | dependencies: 2209 | postcss: 8.5.6 2210 | 2211 | ignore@5.3.2: {} 2212 | 2213 | ignore@7.0.5: {} 2214 | 2215 | immutable@5.1.4: {} 2216 | 2217 | import-fresh@3.3.1: 2218 | dependencies: 2219 | parent-module: 1.0.1 2220 | resolve-from: 4.0.0 2221 | 2222 | import-local@3.2.0: 2223 | dependencies: 2224 | pkg-dir: 4.2.0 2225 | resolve-cwd: 3.0.0 2226 | 2227 | imurmurhash@0.1.4: {} 2228 | 2229 | interpret@3.1.1: {} 2230 | 2231 | is-core-module@2.16.1: 2232 | dependencies: 2233 | hasown: 2.0.2 2234 | 2235 | is-extglob@2.1.1: {} 2236 | 2237 | is-glob@4.0.3: 2238 | dependencies: 2239 | is-extglob: 2.1.1 2240 | 2241 | is-number@7.0.0: {} 2242 | 2243 | is-plain-object@2.0.4: 2244 | dependencies: 2245 | isobject: 3.0.1 2246 | 2247 | isexe@2.0.0: {} 2248 | 2249 | isobject@3.0.1: {} 2250 | 2251 | jest-worker@27.5.1: 2252 | dependencies: 2253 | '@types/node': 24.10.1 2254 | merge-stream: 2.0.0 2255 | supports-color: 8.1.1 2256 | 2257 | js-yaml@4.1.1: 2258 | dependencies: 2259 | argparse: 2.0.1 2260 | 2261 | json-buffer@3.0.1: {} 2262 | 2263 | json-parse-even-better-errors@2.3.1: {} 2264 | 2265 | json-schema-traverse@0.4.1: {} 2266 | 2267 | json-schema-traverse@1.0.0: {} 2268 | 2269 | json-stable-stringify-without-jsonify@1.0.1: {} 2270 | 2271 | json5@2.2.3: {} 2272 | 2273 | keyv@4.5.4: 2274 | dependencies: 2275 | json-buffer: 3.0.1 2276 | 2277 | kind-of@6.0.3: {} 2278 | 2279 | klona@2.0.6: {} 2280 | 2281 | levn@0.4.1: 2282 | dependencies: 2283 | prelude-ls: 1.2.1 2284 | type-check: 0.4.0 2285 | 2286 | loader-runner@4.3.1: {} 2287 | 2288 | loader-utils@2.0.4: 2289 | dependencies: 2290 | big.js: 5.2.2 2291 | emojis-list: 3.0.0 2292 | json5: 2.2.3 2293 | 2294 | locate-path@5.0.0: 2295 | dependencies: 2296 | p-locate: 4.1.0 2297 | 2298 | locate-path@6.0.0: 2299 | dependencies: 2300 | p-locate: 5.0.0 2301 | 2302 | lodash.merge@4.6.2: {} 2303 | 2304 | merge-stream@2.0.0: {} 2305 | 2306 | merge2@1.4.1: {} 2307 | 2308 | micromatch@4.0.8: 2309 | dependencies: 2310 | braces: 3.0.3 2311 | picomatch: 2.3.1 2312 | 2313 | mime-db@1.52.0: {} 2314 | 2315 | mime-types@2.1.35: 2316 | dependencies: 2317 | mime-db: 1.52.0 2318 | 2319 | mini-css-extract-plugin@2.3.0(webpack@5.103.0): 2320 | dependencies: 2321 | schema-utils: 3.3.0 2322 | webpack: 5.103.0(webpack-cli@5.1.4) 2323 | 2324 | minimatch@3.1.2: 2325 | dependencies: 2326 | brace-expansion: 1.1.12 2327 | 2328 | minimatch@9.0.5: 2329 | dependencies: 2330 | brace-expansion: 2.0.2 2331 | 2332 | ms@2.1.3: {} 2333 | 2334 | nanoid@3.3.11: {} 2335 | 2336 | natural-compare@1.4.0: {} 2337 | 2338 | neo-async@2.6.2: {} 2339 | 2340 | node-addon-api@7.1.1: 2341 | optional: true 2342 | 2343 | node-releases@2.0.27: {} 2344 | 2345 | normalize-path@3.0.0: {} 2346 | 2347 | optionator@0.9.4: 2348 | dependencies: 2349 | deep-is: 0.1.4 2350 | fast-levenshtein: 2.0.6 2351 | levn: 0.4.1 2352 | prelude-ls: 1.2.1 2353 | type-check: 0.4.0 2354 | word-wrap: 1.2.5 2355 | 2356 | p-limit@2.3.0: 2357 | dependencies: 2358 | p-try: 2.2.0 2359 | 2360 | p-limit@3.1.0: 2361 | dependencies: 2362 | yocto-queue: 0.1.0 2363 | 2364 | p-locate@4.1.0: 2365 | dependencies: 2366 | p-limit: 2.3.0 2367 | 2368 | p-locate@5.0.0: 2369 | dependencies: 2370 | p-limit: 3.1.0 2371 | 2372 | p-try@2.2.0: {} 2373 | 2374 | parent-module@1.0.1: 2375 | dependencies: 2376 | callsites: 3.1.0 2377 | 2378 | path-exists@4.0.0: {} 2379 | 2380 | path-key@3.1.1: {} 2381 | 2382 | path-parse@1.0.7: {} 2383 | 2384 | path-type@4.0.0: {} 2385 | 2386 | picocolors@1.1.1: {} 2387 | 2388 | picomatch@2.3.1: {} 2389 | 2390 | pkg-dir@4.2.0: 2391 | dependencies: 2392 | find-up: 4.1.0 2393 | 2394 | postcss-modules-extract-imports@3.1.0(postcss@8.5.6): 2395 | dependencies: 2396 | postcss: 8.5.6 2397 | 2398 | postcss-modules-local-by-default@4.2.0(postcss@8.5.6): 2399 | dependencies: 2400 | icss-utils: 5.1.0(postcss@8.5.6) 2401 | postcss: 8.5.6 2402 | postcss-selector-parser: 7.1.1 2403 | postcss-value-parser: 4.2.0 2404 | 2405 | postcss-modules-scope@3.2.1(postcss@8.5.6): 2406 | dependencies: 2407 | postcss: 8.5.6 2408 | postcss-selector-parser: 7.1.1 2409 | 2410 | postcss-modules-values@4.0.0(postcss@8.5.6): 2411 | dependencies: 2412 | icss-utils: 5.1.0(postcss@8.5.6) 2413 | postcss: 8.5.6 2414 | 2415 | postcss-selector-parser@7.1.1: 2416 | dependencies: 2417 | cssesc: 3.0.0 2418 | util-deprecate: 1.0.2 2419 | 2420 | postcss-value-parser@4.2.0: {} 2421 | 2422 | postcss@8.5.6: 2423 | dependencies: 2424 | nanoid: 3.3.11 2425 | picocolors: 1.1.1 2426 | source-map-js: 1.2.1 2427 | 2428 | prelude-ls@1.2.1: {} 2429 | 2430 | punycode@2.3.1: {} 2431 | 2432 | queue-microtask@1.2.3: {} 2433 | 2434 | randombytes@2.1.0: 2435 | dependencies: 2436 | safe-buffer: 5.2.1 2437 | 2438 | readdirp@4.1.2: {} 2439 | 2440 | rechoir@0.8.0: 2441 | dependencies: 2442 | resolve: 1.22.11 2443 | 2444 | require-from-string@2.0.2: {} 2445 | 2446 | resolve-cwd@3.0.0: 2447 | dependencies: 2448 | resolve-from: 5.0.0 2449 | 2450 | resolve-from@4.0.0: {} 2451 | 2452 | resolve-from@5.0.0: {} 2453 | 2454 | resolve-pkg-maps@1.0.0: {} 2455 | 2456 | resolve@1.22.11: 2457 | dependencies: 2458 | is-core-module: 2.16.1 2459 | path-parse: 1.0.7 2460 | supports-preserve-symlinks-flag: 1.0.0 2461 | 2462 | reusify@1.1.0: {} 2463 | 2464 | run-parallel@1.2.0: 2465 | dependencies: 2466 | queue-microtask: 1.2.3 2467 | 2468 | safe-buffer@5.2.1: {} 2469 | 2470 | sass-loader@12.6.0(sass@1.94.2)(webpack@5.103.0): 2471 | dependencies: 2472 | klona: 2.0.6 2473 | neo-async: 2.6.2 2474 | webpack: 5.103.0(webpack-cli@5.1.4) 2475 | optionalDependencies: 2476 | sass: 1.94.2 2477 | 2478 | sass@1.94.2: 2479 | dependencies: 2480 | chokidar: 4.0.3 2481 | immutable: 5.1.4 2482 | source-map-js: 1.2.1 2483 | optionalDependencies: 2484 | '@parcel/watcher': 2.5.1 2485 | 2486 | schema-utils@3.3.0: 2487 | dependencies: 2488 | '@types/json-schema': 7.0.15 2489 | ajv: 6.12.6 2490 | ajv-keywords: 3.5.2(ajv@6.12.6) 2491 | 2492 | schema-utils@4.3.3: 2493 | dependencies: 2494 | '@types/json-schema': 7.0.15 2495 | ajv: 8.17.1 2496 | ajv-formats: 2.1.1(ajv@8.17.1) 2497 | ajv-keywords: 5.1.0(ajv@8.17.1) 2498 | 2499 | semver@7.7.3: {} 2500 | 2501 | serialize-javascript@6.0.2: 2502 | dependencies: 2503 | randombytes: 2.1.0 2504 | 2505 | shallow-clone@3.0.1: 2506 | dependencies: 2507 | kind-of: 6.0.3 2508 | 2509 | shebang-command@2.0.0: 2510 | dependencies: 2511 | shebang-regex: 3.0.0 2512 | 2513 | shebang-regex@3.0.0: {} 2514 | 2515 | siyuan@1.1.6: {} 2516 | 2517 | slash@4.0.0: {} 2518 | 2519 | source-list-map@2.0.1: {} 2520 | 2521 | source-map-js@1.2.1: {} 2522 | 2523 | source-map-support@0.5.21: 2524 | dependencies: 2525 | buffer-from: 1.1.2 2526 | source-map: 0.6.1 2527 | 2528 | source-map@0.6.1: {} 2529 | 2530 | strip-json-comments@3.1.1: {} 2531 | 2532 | supports-color@7.2.0: 2533 | dependencies: 2534 | has-flag: 4.0.0 2535 | 2536 | supports-color@8.1.1: 2537 | dependencies: 2538 | has-flag: 4.0.0 2539 | 2540 | supports-preserve-symlinks-flag@1.0.0: {} 2541 | 2542 | tapable@2.3.0: {} 2543 | 2544 | terser-webpack-plugin@5.3.14(webpack@5.103.0): 2545 | dependencies: 2546 | '@jridgewell/trace-mapping': 0.3.31 2547 | jest-worker: 27.5.1 2548 | schema-utils: 4.3.3 2549 | serialize-javascript: 6.0.2 2550 | terser: 5.44.1 2551 | webpack: 5.103.0(webpack-cli@5.1.4) 2552 | 2553 | terser@5.44.1: 2554 | dependencies: 2555 | '@jridgewell/source-map': 0.3.11 2556 | acorn: 8.15.0 2557 | commander: 2.20.3 2558 | source-map-support: 0.5.21 2559 | 2560 | to-regex-range@5.0.1: 2561 | dependencies: 2562 | is-number: 7.0.0 2563 | 2564 | ts-api-utils@2.1.0(typescript@4.8.4): 2565 | dependencies: 2566 | typescript: 4.8.4 2567 | 2568 | tslib@2.4.0: {} 2569 | 2570 | type-check@0.4.0: 2571 | dependencies: 2572 | prelude-ls: 1.2.1 2573 | 2574 | typescript@4.8.4: {} 2575 | 2576 | undici-types@7.16.0: {} 2577 | 2578 | update-browserslist-db@1.1.4(browserslist@4.28.0): 2579 | dependencies: 2580 | browserslist: 4.28.0 2581 | escalade: 3.2.0 2582 | picocolors: 1.1.1 2583 | 2584 | uri-js@4.4.1: 2585 | dependencies: 2586 | punycode: 2.3.1 2587 | 2588 | util-deprecate@1.0.2: {} 2589 | 2590 | watchpack@2.4.4: 2591 | dependencies: 2592 | glob-to-regexp: 0.4.1 2593 | graceful-fs: 4.2.11 2594 | 2595 | webpack-cli@5.1.4(webpack@5.103.0): 2596 | dependencies: 2597 | '@discoveryjs/json-ext': 0.5.7 2598 | '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.103.0) 2599 | '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.103.0) 2600 | '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.103.0) 2601 | colorette: 2.0.20 2602 | commander: 10.0.1 2603 | cross-spawn: 7.0.6 2604 | envinfo: 7.21.0 2605 | fastest-levenshtein: 1.0.16 2606 | import-local: 3.2.0 2607 | interpret: 3.1.1 2608 | rechoir: 0.8.0 2609 | webpack: 5.103.0(webpack-cli@5.1.4) 2610 | webpack-merge: 5.10.0 2611 | 2612 | webpack-merge@5.10.0: 2613 | dependencies: 2614 | clone-deep: 4.0.1 2615 | flat: 5.0.2 2616 | wildcard: 2.0.1 2617 | 2618 | webpack-sources@1.4.3: 2619 | dependencies: 2620 | source-list-map: 2.0.1 2621 | source-map: 0.6.1 2622 | 2623 | webpack-sources@3.3.3: {} 2624 | 2625 | webpack@5.103.0(webpack-cli@5.1.4): 2626 | dependencies: 2627 | '@types/eslint-scope': 3.7.7 2628 | '@types/estree': 1.0.8 2629 | '@types/json-schema': 7.0.15 2630 | '@webassemblyjs/ast': 1.14.1 2631 | '@webassemblyjs/wasm-edit': 1.14.1 2632 | '@webassemblyjs/wasm-parser': 1.14.1 2633 | acorn: 8.15.0 2634 | acorn-import-phases: 1.0.4(acorn@8.15.0) 2635 | browserslist: 4.28.0 2636 | chrome-trace-event: 1.0.4 2637 | enhanced-resolve: 5.18.3 2638 | es-module-lexer: 1.7.0 2639 | eslint-scope: 5.1.1 2640 | events: 3.3.0 2641 | glob-to-regexp: 0.4.1 2642 | graceful-fs: 4.2.11 2643 | json-parse-even-better-errors: 2.3.1 2644 | loader-runner: 4.3.1 2645 | mime-types: 2.1.35 2646 | neo-async: 2.6.2 2647 | schema-utils: 4.3.3 2648 | tapable: 2.3.0 2649 | terser-webpack-plugin: 5.3.14(webpack@5.103.0) 2650 | watchpack: 2.4.4 2651 | webpack-sources: 3.3.3 2652 | optionalDependencies: 2653 | webpack-cli: 5.1.4(webpack@5.103.0) 2654 | transitivePeerDependencies: 2655 | - '@swc/core' 2656 | - esbuild 2657 | - uglify-js 2658 | 2659 | which@2.0.2: 2660 | dependencies: 2661 | isexe: 2.0.0 2662 | 2663 | wildcard@2.0.1: {} 2664 | 2665 | word-wrap@1.2.5: {} 2666 | 2667 | yazl@2.5.1: 2668 | dependencies: 2669 | buffer-crc32: 0.2.13 2670 | 2671 | yocto-queue@0.1.0: {} 2672 | 2673 | zip-webpack-plugin@4.0.3(webpack-sources@3.3.3)(webpack@5.103.0): 2674 | dependencies: 2675 | webpack: 5.103.0(webpack-cli@5.1.4) 2676 | webpack-sources: 3.3.3 2677 | yazl: 2.5.1 2678 | --------------------------------------------------------------------------------