├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── dart └── serverchan-sdk │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example │ └── serverchan_sdk_example.dart │ ├── lib │ ├── serverchan_sdk.dart │ └── src │ │ └── serverchan_sdk_base.dart │ ├── pubspec.yaml │ └── test │ ├── real_call_test.dart │ └── serverchan_sdk_test.dart ├── npm ├── .npmignore ├── README.md ├── dist │ ├── index.cjs │ ├── index.d.ts │ └── index.mjs ├── package-lock.json ├── package.json ├── publish.sh ├── rollup.config.js ├── src │ ├── index.d.ts │ └── index.js └── test │ ├── test.cjs │ ├── test.html │ └── test.mjs └── pip ├── README.md ├── build └── lib │ └── serverchan_sdk │ └── __init__.py ├── dist ├── serverchan-sdk-1.0.1.tar.gz ├── serverchan-sdk-1.0.2.tar.gz ├── serverchan_sdk-1.0.6-py3-none-any.whl └── serverchan_sdk-1.0.6.tar.gz ├── serverchan_sdk.egg-info ├── PKG-INFO ├── SOURCES.txt ├── dependency_links.txt ├── requires.txt └── top_level.txt ├── serverchan_sdk ├── __init__.py └── __pycache__ │ ├── __init__.cpython-312.pyc │ └── __init__.cpython-39.pyc ├── setup.py └── test.py /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "modules": false 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | venv -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Easy 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # serverchan-sdk 2 | 3 | Server酱SDK 4 | 5 | 这个sdk很简单,只有一个函数。同时支持 sct.ftqq.com 和 sc3.ft07.com, 也就是说,用它你就无需关系用户用的是哪个版本,它会从key中自动适配。 6 | 所有语言的参数均为: 7 | 8 | 1. sendkey 9 | 2. title 10 | 3. desp - 消息内容,支持markdown,可以外链图片(请使用https)。 11 | 4. options - 其他更多选项 12 | 13 | 更多选项包括以下: 14 | 15 | ```jsonc 16 | { 17 | tags?: string; // SC3专用:标签列表,多个标签使用竖线分隔 18 | short?: string; // SC3和SCT:消息卡片的内容,特别适用desp为markdown时, 19 | noip?: 1; // SCT专用:是否隐藏调用IP,1为隐藏 20 | channel?: string; // SCT专用:推送使用的消息通道,多个通道值用竖线隔开 21 | openid?: string; // SCT专用:消息抄送的 openid,仅用于企业微信应用消息和测试号通道,多个 openid 用逗号或竖线分隔 22 | } 23 | ``` 24 | 25 | 返回格式定义: 26 | 27 | ```jsonc 28 | { 29 | code: number; // 返回的状态码, 0 为正确 30 | message: string; // 返回的信息,和状态码对应 31 | data?: any; // 可选的返回数据,SCT和SC3这部分格式不同 32 | } 33 | ``` 34 | 以下是各个语言的SDK及其用法,点击查看详细 35 | 36 |
37 | JavaScript SDK ( Both web & nodejs ) 38 | 39 | ### SDK 地址 40 | - npm : 41 | 42 | 43 | ### 安装 44 | 45 | ```bash 46 | npm install serverchan-sdk 47 | ``` 48 | 49 | ### 调用实例 50 | 51 | ```js 52 | import {scSend} from 'serverchan-sdk'; 53 | 54 | const sendkey = '...'; // 替换成真实的 Server 酱 sendkey 55 | const title = 'Test Notification'; 56 | const desp = 'This is a test message'; 57 | 58 | const response = await scSend(sendkey, title, desp, { tags: '服务器报警|报告' }); 59 | console.log('Response:', response); 60 | ``` 61 |
62 | 63 | 64 |
65 | PHP SDK 66 | 67 | ### SDK 地址 68 | - compose package : 69 | 70 | 71 | ### 安装 72 | 73 | ```bash 74 | composer require easychen/serverchan-sdk 75 | ``` 76 | 77 | ### 调用实例 78 | 79 | ```php 80 | $ret = scSend('sendkey', 'title', 'desp', ['tags'=>'服务器报警|图片']); 81 | print_r($ret); 82 | ``` 83 |
84 | 85 |
86 | Python SDK 87 | 88 | ### SDK 地址 89 | - pip package : 90 | 91 | 92 | ### 安装 93 | 94 | ```bash 95 | pip install serverchan-sdk 96 | ``` 97 | 98 | ### 调用实例 99 | 100 | ```python 101 | from serverchan_sdk import sc_send 102 | 103 | # 发送消息 104 | sendkey = "..." 105 | title = "测试标题" 106 | desp = "这是消息内容" 107 | options = {"tags": "服务器报警|图片"} # 可选参数 108 | 109 | response = sc_send(sendkey, title, desp, options) 110 | ``` 111 |
112 | 113 |
114 | Golang SDK 115 | 116 | ### SDK 地址 117 | - 118 | 119 | 120 | ### 安装 121 | 122 | ```bash 123 | go get github.com/easychen/serverchan-sdk-golang 124 | ``` 125 | 126 | ### 调用实例 127 | 128 | ```go 129 | package main 130 | 131 | import ( 132 | "fmt" 133 | "github.com/easychen/serverchan-sdk-golang" 134 | ) 135 | 136 | func main() { 137 | sendkey := "your-sendkey" 138 | title := "Test Message" 139 | desp := "This is a test message" 140 | 141 | resp, err := serverchan_sdk.ScSend(sendkey, title, desp, nil) 142 | if err != nil { 143 | fmt.Println("Error:", err) 144 | } else { 145 | fmt.Println("Response:", resp) 146 | } 147 | } 148 | ``` 149 |
150 | 151 |
152 | Dart/Flutter SDK 153 | 154 | ### SDK 地址 155 | Pub Package - 156 | 157 | > 此 package 依赖 http 包 158 | 159 | ### 安装 160 | 161 | 在 `pubspec.yaml` 添加依赖 162 | 163 | ``` 164 | dependencies: 165 | serverchan_sdk: 166 | ``` 167 | 然后运行 168 | 169 | ```bash 170 | dart pub get 171 | # 或者 172 | flutter pub get 173 | ``` 174 | 175 | ### 调用实例 176 | 177 | ```dart 178 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 179 | 180 | void main() async { 181 | const sendkey = 'your-sendkey'; 182 | const title = '测试标题'; 183 | const desp = '这是消息的详细内容'; 184 | 185 | try { 186 | ScSendResponse response = await scSend(sendkey, title, desp: desp); 187 | print('Response Code: ${response.code}'); 188 | print('Response Message: ${response.message}'); 189 | } catch (e) { 190 | print('Error: $e'); 191 | } 192 | } 193 | ``` 194 |
195 | 196 | ## 没有覆盖的语言 197 | 198 | 如果您使用的语言没有SDK,您可以把以下提示词粘贴到 ChatGPT/Claude/DeepSeek/Kimi,让AI立马帮你写一个。 199 | 200 | ``` 201 | 请参考以下TypeScript代码,编写对应的实现: 202 | 203 | \`\`\`typescript 204 | import fetch from 'cross-fetch'; 205 | 206 | // ScSendOptions 定义了推送函数的可选参数 207 | export interface ScSendOptions { 208 | /** sctp 专用:标签列表,多个标签使用竖线分隔 */ 209 | tags?: string; 210 | /** sctp 和非 sctp:消息卡片的简短描述 */ 211 | short?: string; 212 | /** 非 sctp:是否隐藏调用IP,1为隐藏 */ 213 | noip?: 1; 214 | /** 非 sctp:推送使用的消息通道,多个通道值用竖线隔开 */ 215 | channel?: string; 216 | /** 非 sctp:消息抄送的 openid,多个 openid 用逗号或竖线分隔 */ 217 | openid?: string; 218 | } 219 | 220 | // ScSendResponse 定义了推送函数返回的响应结果 221 | export interface ScSendResponse { 222 | /** 返回的状态码 */ 223 | code: number; 224 | /** 返回的消息 */ 225 | message: string; 226 | /** 可选的返回数据 */ 227 | data?: any; 228 | } 229 | 230 | // 调用 Server 酱的推送函数 231 | export async function scSend( 232 | sendkey: string, 233 | title: string, 234 | desp: string = '', 235 | options: ScSendOptions = {} 236 | ): Promise { 237 | 238 | const url = sendkey.startsWith('sctp') 239 | ? `https://${sendkey}.push.ft07.com/send` 240 | : `https://sctapi.ftqq.com/${sendkey}.send`; 241 | 242 | const params = { 243 | title, 244 | desp, 245 | ...options, 246 | }; 247 | 248 | const response = await fetch(url, { 249 | method: 'POST', 250 | headers: { 251 | 'Content-Type': 'application/json;charset=utf-8', 252 | }, 253 | body: JSON.stringify(params), 254 | }); 255 | 256 | const result = await response.json() as ScSendResponse; 257 | return result; 258 | } 259 | \`\`\` 260 | ``` 261 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/.gitignore: -------------------------------------------------------------------------------- 1 | # https://dart.dev/guides/libraries/private-files 2 | # Created by `dart pub` 3 | .dart_tool/ 4 | 5 | # Avoid committing pubspec.lock for library packages; see 6 | # https://dart.dev/guides/libraries/private-files#pubspeclock. 7 | pubspec.lock 8 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | ## [1.0.0] - 2024-09-30 3 | 4 | - 初始版本发布,支持通过 Server 酱发送消息。 5 | 6 | ## [1.0.1] - 2024-09-30 7 | 8 | - 支持 可选的 httpclient 参数 9 | 10 | ## [1.0.6] - 2024-10-15 11 | 12 | - 改为以安全模式调用Server酱³的接口 -------------------------------------------------------------------------------- /dart/serverchan-sdk/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Easy 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 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/README.md: -------------------------------------------------------------------------------- 1 | # serverchan-sdk 2 | 3 | `serverchan-sdk` 是一个用于调用 Server 酱推送服务的 Dart SDK。该 SDK 允许你通过简单的接口将消息发送到 Server 酱,并支持可选的自定义参数。 4 | 5 | ## 功能 6 | 7 | - 支持 Server 酱 `SendKey` 推送 8 | - 支持自定义消息内容、描述、频道等选项 9 | - 支持 API 请求结果的解析 10 | 11 | ## 安装 12 | 13 | 在 `pubspec.yaml` 文件中添加依赖项: 14 | 15 | ```yaml 16 | dependencies: 17 | http: ^0.13.0 18 | serverchan_sdk: 19 | path: ./serverchan_sdk 20 | ``` 21 | 22 | 然后运行以下命令: 23 | 24 | ```bash 25 | dart pub get 26 | ``` 27 | 28 | ## 使用方法 29 | 30 | ### 简单示例 31 | 32 | ```dart 33 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 34 | 35 | void main() async { 36 | const sendkey = 'your-sendkey'; 37 | const title = '测试标题'; 38 | const desp = '这是消息的详细内容'; 39 | 40 | try { 41 | ScSendResponse response = await scSend(sendkey, title, desp: desp); 42 | print('Response Code: ${response.code}'); 43 | print('Response Message: ${response.message}'); 44 | } catch (e) { 45 | print('Error: $e'); 46 | } 47 | } 48 | ``` 49 | 50 | ### 带有可选参数的示例 51 | 52 | ```dart 53 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 54 | 55 | void main() async { 56 | const sendkey = 'your-sendkey'; 57 | const title = '带选项的测试标题'; 58 | const desp = '这是带选项的消息内容'; 59 | 60 | ScSendOptions options = ScSendOptions( 61 | tags: '测试,标签', 62 | shortDesc: '简短描述', 63 | noip: 1, 64 | ); 65 | 66 | try { 67 | ScSendResponse response = await scSend(sendkey, title, desp: desp, options: options); 68 | print('Response Code: ${response.code}'); 69 | print('Response Message: ${response.message}'); 70 | } catch (e) { 71 | print('Error: $e'); 72 | } 73 | } 74 | ``` 75 | 76 | ## API 参考 77 | 78 | ### `scSend` 79 | 80 | ```dart 81 | Future scSend(String sendkey, String title, {String desp = '', ScSendOptions? options}) 82 | ``` 83 | 84 | 发送消息到 Server 酱。 85 | 86 | - `sendkey`:Server 酱的 SendKey,用于认证推送。 87 | - `title`:消息的标题。 88 | - `desp`(可选):消息的详细内容,默认为空字符串。 89 | - `options`(可选):一个 `ScSendOptions` 对象,包含推送的可选参数。 90 | 91 | 返回一个 `Future`,其中包含推送请求的结果。 92 | 93 | ### `ScSendOptions` 94 | 95 | 可选的推送参数,包含以下字段: 96 | 97 | - `tags`:消息的标签。 98 | - `shortDesc`:简短的描述。 99 | - `noip`:是否不显示 IP 地址(1 表示不显示)。 100 | - `channel`:自定义推送频道。 101 | - `openid`:指定的用户 OpenID。 102 | 103 | ### `ScSendResponse` 104 | 105 | 响应对象,包含以下字段: 106 | 107 | - `code`:API 返回的状态码。 108 | - `message`:API 返回的消息。 109 | - `data`:API 返回的数据(如果有的话)。 110 | 111 | ## 错误处理 112 | 113 | 在请求过程中可能会抛出异常,因此建议使用 `try-catch` 进行异常处理。 114 | 115 | ```dart 116 | try { 117 | // 发送推送请求 118 | } catch (e) { 119 | print('Error: $e'); 120 | } 121 | ``` 122 | 123 | ## 许可 124 | 125 | 该项目遵循 MIT 许可协议。 -------------------------------------------------------------------------------- /dart/serverchan-sdk/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the static analysis results for your project (errors, 2 | # warnings, and lints). 3 | # 4 | # This enables the 'recommended' set of lints from `package:lints`. 5 | # This set helps identify many issues that may lead to problems when running 6 | # or consuming Dart code, and enforces writing Dart using a single, idiomatic 7 | # style and format. 8 | # 9 | # If you want a smaller set of lints you can change this to specify 10 | # 'package:lints/core.yaml'. These are just the most critical lints 11 | # (the recommended set includes the core lints). 12 | # The core lints are also what is used by pub.dev for scoring packages. 13 | 14 | include: package:lints/recommended.yaml 15 | 16 | # Uncomment the following section to specify additional rules. 17 | 18 | # linter: 19 | # rules: 20 | # - camel_case_types 21 | 22 | # analyzer: 23 | # exclude: 24 | # - path/to/excluded/files/** 25 | 26 | # For more information about the core and recommended set of lints, see 27 | # https://dart.dev/go/core-lints 28 | 29 | # For additional information about configuring this file, see 30 | # https://dart.dev/guides/language/analysis-options 31 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/example/serverchan_sdk_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 2 | 3 | void main() async { 4 | const sendkey = 'your-sendkey'; 5 | const title = 'Hello, Server Chan!'; 6 | const desp = 'This is a test message from Dart SDK.'; 7 | 8 | // 可选参数 9 | ScSendOptions options = ScSendOptions( 10 | tags: 'test,serverchan', 11 | shortDesc: 'Test Message', 12 | noip: 1, 13 | ); 14 | 15 | try { 16 | ScSendResponse response = 17 | await scSend(sendkey, title, desp: desp, options: options); 18 | print('Response Code: ${response.code}'); 19 | print('Response Message: ${response.message}'); 20 | if (response.data != null) { 21 | print('Response Data: ${response.data}'); 22 | } 23 | } catch (e) { 24 | print('Error: $e'); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/lib/serverchan_sdk.dart: -------------------------------------------------------------------------------- 1 | library serverchan_sdk; 2 | 3 | export 'src/serverchan_sdk_base.dart'; 4 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/lib/src/serverchan_sdk_base.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:http/http.dart' as http; 3 | 4 | class ScSendOptions { 5 | String? tags; 6 | String? shortDesc; 7 | int? noip; 8 | String? channel; 9 | String? openid; 10 | 11 | ScSendOptions( 12 | {this.tags, this.shortDesc, this.noip, this.channel, this.openid}); 13 | 14 | Map toJson() { 15 | return { 16 | if (tags != null) 'tags': tags, 17 | if (shortDesc != null) 'short': shortDesc, 18 | if (noip != null) 'noip': noip, 19 | if (channel != null) 'channel': channel, 20 | if (openid != null) 'openid': openid, 21 | }; 22 | } 23 | } 24 | 25 | class ScSendResponse { 26 | int code; 27 | String message; 28 | dynamic data; 29 | 30 | ScSendResponse({required this.code, required this.message, this.data}); 31 | 32 | factory ScSendResponse.fromJson(Map json) { 33 | return ScSendResponse( 34 | code: json['code'], 35 | message: json['message'], 36 | data: json['data'], 37 | ); 38 | } 39 | } 40 | 41 | Future scSend( 42 | String sendkey, 43 | String title, { 44 | String desp = '', 45 | ScSendOptions? options, 46 | http.Client? client, // 新增参数 47 | }) async { 48 | // 使用传入的 client 或默认的 http.Client() 49 | client ??= http.Client(); 50 | 51 | String url; 52 | // 根据 sendkey 构建 URL,检查是否以 'sctp' 开头 53 | if (sendkey.startsWith('sctp')) { 54 | // 使用正则表达式提取数字部分 55 | final match = RegExp(r'^sctp(\d+)t').firstMatch(sendkey); 56 | if (match != null) { 57 | String numPart = match.group(1)!; 58 | url = 'https://$numPart.push.ft07.com/send/$sendkey.send'; 59 | } else { 60 | throw ArgumentError('Invalid sendkey format'); 61 | } 62 | } else { 63 | url = 'https://sctapi.ftqq.com/$sendkey.send'; 64 | } 65 | 66 | Map params = { 67 | 'title': title, 68 | 'desp': desp, 69 | if (options != null) ...options.toJson(), 70 | }; 71 | 72 | final response = await client.post( 73 | Uri.parse(url), 74 | headers: {'Content-Type': 'application/json;charset=utf-8'}, 75 | body: jsonEncode(params), 76 | ); 77 | 78 | final result = jsonDecode(response.body); 79 | return ScSendResponse.fromJson(result); 80 | } 81 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: serverchan_sdk 2 | description: A Dart SDK for sending messages via Server Chan. 3 | version: 1.0.6 4 | homepage: https://sct.ftqq.com 5 | repository: https://github.com/easychen/serverchan-sdk 6 | issue_tracker: https://github.com/easychen/serverchan-sdk/issues 7 | environment: 8 | sdk: ">=2.12.0 <4.0.0" 9 | 10 | dependencies: 11 | http: ^0.13.0 12 | 13 | dev_dependencies: 14 | test: ^1.16.0 15 | pedantic: ^1.11.0 16 | 17 | # Optional section for dart analysis and formatting rules. 18 | # This ensures a consistent code style. 19 | analyzer: 20 | strong-mode: 21 | implicit-casts: false 22 | implicit-dynamic: false 23 | 24 | flutter: 25 | uses-material-design: false 26 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/test/real_call_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 2 | import 'package:test/test.dart'; 3 | 4 | void main() { 5 | // Replace this with your actual SendKey 6 | const sendkey = 'sctp'; // 必须是有效的 sendkey 7 | 8 | group('Real API Call', () { 9 | test( 10 | 'scSend should send a message to ServerChan and return a valid response', 11 | () async { 12 | if (sendkey == 'your-sendkey') { 13 | fail('You must set a real SendKey to run this test.'); 14 | } 15 | 16 | const title = 'Test from Dart SDK'; 17 | const desp = 'This is a test message sent from a Dart test.'; 18 | 19 | try { 20 | // Send an actual message 21 | ScSendResponse response = await scSend(sendkey, title, desp: desp); 22 | 23 | // Check that the response indicates success (Server 酱 API uses code 0 for success) 24 | expect(response.code, 0); 25 | print('Response message: ${response.message}'); 26 | } catch (e) { 27 | fail('Failed to send message: $e'); 28 | } 29 | }); 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /dart/serverchan-sdk/test/serverchan_sdk_test.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:http/http.dart' as http; 3 | import 'package:http/testing.dart'; 4 | import 'package:serverchan_sdk/serverchan_sdk.dart'; 5 | import 'package:test/test.dart'; 6 | 7 | void main() { 8 | group('ScSendOptions', () { 9 | test('toJson should return correct JSON map', () { 10 | ScSendOptions options = ScSendOptions( 11 | tags: 'test,tag', 12 | shortDesc: 'This is a short description', 13 | noip: 1, 14 | channel: 'email', 15 | openid: 'open123', 16 | ); 17 | 18 | expect(options.toJson(), { 19 | 'tags': 'test,tag', 20 | 'short': 'This is a short description', 21 | 'noip': 1, 22 | 'channel': 'email', 23 | 'openid': 'open123', 24 | }); 25 | }); 26 | }); 27 | 28 | group('ScSendResponse', () { 29 | test('fromJson should parse JSON correctly', () { 30 | Map jsonResponse = { 31 | 'code': 0, 32 | 'message': 'success', 33 | 'data': null, 34 | }; 35 | 36 | ScSendResponse response = ScSendResponse.fromJson(jsonResponse); 37 | 38 | expect(response.code, 0); 39 | expect(response.message, 'success'); 40 | expect(response.data, null); 41 | }); 42 | }); 43 | 44 | group('scSend API function', () { 45 | test('scSend should make a POST request and return ScSendResponse', 46 | () async { 47 | // Use MockClient to simulate the HTTP response 48 | final mockClient = MockClient((http.Request request) async { 49 | // Simulate a successful response from the server 50 | return http.Response( 51 | jsonEncode({ 52 | 'code': 0, 53 | 'message': 'success', 54 | 'data': null, 55 | }), 56 | 200, 57 | headers: {'Content-Type': 'application/json'}, 58 | ); 59 | }); 60 | 61 | // Replace the real http.post with the mock client 62 | const sendkey = 'test-sendkey'; 63 | const title = 'Test Title'; 64 | const desp = 'This is a test message.'; 65 | 66 | ScSendOptions options = ScSendOptions( 67 | tags: 'test', 68 | shortDesc: 'Test short desc', 69 | noip: 1, 70 | ); 71 | 72 | // Use mockClient for the http post request within the scSend function 73 | final response = await scSend(sendkey, title, 74 | desp: desp, options: options, client: mockClient); 75 | 76 | print(response); 77 | // Verify the result 78 | expect(response.code, 0); 79 | expect(response.message, 'success'); 80 | }); 81 | }); 82 | } 83 | -------------------------------------------------------------------------------- /npm/.npmignore: -------------------------------------------------------------------------------- 1 | test -------------------------------------------------------------------------------- /npm/README.md: -------------------------------------------------------------------------------- 1 | # serverchan-sdk 2 | 3 | Server酱官方SDK,支持 ESM/CMD ,兼容 Nodejs/Web。使用示例: 4 | 5 | ```js 6 | import { scSend } from 'serverchan-sdk'; 7 | const ret = await scSend('sendkey', 'title', 'description can be markdown', {tags:'服务器报警|图片'}) 8 | console.log(ret); 9 | ``` 10 | 11 | options: 12 | 13 | ```jsonc 14 | { 15 | /** SC3专用:标签列表,多个标签使用竖线分隔 */ 16 | tags?: string; 17 | /** SC3和SCT:消息卡片的简短描述 */ 18 | short?: string; 19 | /** SCT:是否隐藏调用IP,1为隐藏 */ 20 | noip?: 1; 21 | /** SCT:推送使用的消息通道,多个通道值用竖线隔开 */ 22 | channel?: string; 23 | /** SCT:消息抄送的 openid,多个 openid 用逗号或竖线分隔 */ 24 | openid?: string; 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /npm/dist/index.cjs: -------------------------------------------------------------------------------- 1 | "use strict";var a=require("cross-fetch");async function r(t,s,e="",n={}){const c=String(t).startsWith("sctp")?`https://${t}.push.ft07.com/send`:`https://sctapi.ftqq.com/${t}.send`,i={title:s,desp:e,...n};return await(await a(c,{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(i)})).json()}exports.scSend=r; 2 | -------------------------------------------------------------------------------- /npm/dist/index.d.ts: -------------------------------------------------------------------------------- 1 | // index.d.ts 2 | 3 | /** 4 | * ScSendOptions 定义了推送函数的可选参数 5 | */ 6 | export interface ScSendOptions { 7 | /** sctp 专用:标签列表,多个标签使用竖线分隔 */ 8 | tags?: string; 9 | /** sctp 和非 sctp:消息卡片的简短描述 */ 10 | short?: string; 11 | /** 非 sctp:是否隐藏调用IP,1为隐藏 */ 12 | noip?: 1; 13 | /** 非 sctp:推送使用的消息通道,多个通道值用竖线隔开 */ 14 | channel?: string; 15 | /** 非 sctp:消息抄送的 openid,多个 openid 用逗号或竖线分隔 */ 16 | openid?: string; 17 | } 18 | 19 | /** 20 | * ScSendResponse 定义了推送函数返回的响应结果 21 | */ 22 | export interface ScSendResponse { 23 | /** 返回的状态码 */ 24 | code: number; 25 | /** 返回的消息 */ 26 | message: string; 27 | /** 可选的返回数据 */ 28 | data?: any; 29 | } 30 | 31 | /** 32 | * 调用 Server 酱的推送函数 33 | * @param sendkey Server 酱的 SendKey 34 | * @param title 推送的标题 35 | * @param desp 推送的正文内容,默认为空字符串 36 | * @param options 推送的额外选项 37 | * @returns 返回推送结果的 Promise 38 | */ 39 | export function scSend( 40 | sendkey: string, 41 | title: string, 42 | desp?: string, 43 | options?: ScSendOptions 44 | ): Promise; 45 | -------------------------------------------------------------------------------- /npm/dist/index.mjs: -------------------------------------------------------------------------------- 1 | import a from"cross-fetch";async function c(t,s,n="",e={}){const o=String(t).startsWith("sctp")?`https://${t}.push.ft07.com/send`:`https://sctapi.ftqq.com/${t}.send`,i={title:s,desp:n,...e};return await(await a(o,{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8"},body:JSON.stringify(i)})).json()}export{c as scSend}; 2 | -------------------------------------------------------------------------------- /npm/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverchan-sdk", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "serverchan-sdk", 9 | "version": "1.0.0", 10 | "dependencies": { 11 | "cross-fetch": "^4.0.0" 12 | }, 13 | "devDependencies": { 14 | "@babel/core": "^7.0.0", 15 | "@babel/preset-env": "^7.0.0", 16 | "rollup": "^3.29.5", 17 | "rollup-plugin-esbuild": "^6.1.1" 18 | } 19 | }, 20 | "node_modules/@ampproject/remapping": { 21 | "version": "2.3.0", 22 | "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", 23 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 24 | "dev": true, 25 | "license": "Apache-2.0", 26 | "dependencies": { 27 | "@jridgewell/gen-mapping": "^0.3.5", 28 | "@jridgewell/trace-mapping": "^0.3.24" 29 | }, 30 | "engines": { 31 | "node": ">=6.0.0" 32 | } 33 | }, 34 | "node_modules/@babel/code-frame": { 35 | "version": "7.24.7", 36 | "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz", 37 | "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", 38 | "dev": true, 39 | "license": "MIT", 40 | "dependencies": { 41 | "@babel/highlight": "^7.24.7", 42 | "picocolors": "^1.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@babel/compat-data": { 49 | "version": "7.25.4", 50 | "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.25.4.tgz", 51 | "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", 52 | "dev": true, 53 | "license": "MIT", 54 | "engines": { 55 | "node": ">=6.9.0" 56 | } 57 | }, 58 | "node_modules/@babel/core": { 59 | "version": "7.25.2", 60 | "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.25.2.tgz", 61 | "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", 62 | "dev": true, 63 | "license": "MIT", 64 | "dependencies": { 65 | "@ampproject/remapping": "^2.2.0", 66 | "@babel/code-frame": "^7.24.7", 67 | "@babel/generator": "^7.25.0", 68 | "@babel/helper-compilation-targets": "^7.25.2", 69 | "@babel/helper-module-transforms": "^7.25.2", 70 | "@babel/helpers": "^7.25.0", 71 | "@babel/parser": "^7.25.0", 72 | "@babel/template": "^7.25.0", 73 | "@babel/traverse": "^7.25.2", 74 | "@babel/types": "^7.25.2", 75 | "convert-source-map": "^2.0.0", 76 | "debug": "^4.1.0", 77 | "gensync": "^1.0.0-beta.2", 78 | "json5": "^2.2.3", 79 | "semver": "^6.3.1" 80 | }, 81 | "engines": { 82 | "node": ">=6.9.0" 83 | }, 84 | "funding": { 85 | "type": "opencollective", 86 | "url": "https://opencollective.com/babel" 87 | } 88 | }, 89 | "node_modules/@babel/generator": { 90 | "version": "7.25.6", 91 | "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.6.tgz", 92 | "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", 93 | "dev": true, 94 | "license": "MIT", 95 | "dependencies": { 96 | "@babel/types": "^7.25.6", 97 | "@jridgewell/gen-mapping": "^0.3.5", 98 | "@jridgewell/trace-mapping": "^0.3.25", 99 | "jsesc": "^2.5.1" 100 | }, 101 | "engines": { 102 | "node": ">=6.9.0" 103 | } 104 | }, 105 | "node_modules/@babel/helper-annotate-as-pure": { 106 | "version": "7.24.7", 107 | "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", 108 | "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", 109 | "dev": true, 110 | "license": "MIT", 111 | "dependencies": { 112 | "@babel/types": "^7.24.7" 113 | }, 114 | "engines": { 115 | "node": ">=6.9.0" 116 | } 117 | }, 118 | "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { 119 | "version": "7.24.7", 120 | "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", 121 | "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", 122 | "dev": true, 123 | "license": "MIT", 124 | "dependencies": { 125 | "@babel/traverse": "^7.24.7", 126 | "@babel/types": "^7.24.7" 127 | }, 128 | "engines": { 129 | "node": ">=6.9.0" 130 | } 131 | }, 132 | "node_modules/@babel/helper-compilation-targets": { 133 | "version": "7.25.2", 134 | "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", 135 | "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", 136 | "dev": true, 137 | "license": "MIT", 138 | "dependencies": { 139 | "@babel/compat-data": "^7.25.2", 140 | "@babel/helper-validator-option": "^7.24.8", 141 | "browserslist": "^4.23.1", 142 | "lru-cache": "^5.1.1", 143 | "semver": "^6.3.1" 144 | }, 145 | "engines": { 146 | "node": ">=6.9.0" 147 | } 148 | }, 149 | "node_modules/@babel/helper-create-class-features-plugin": { 150 | "version": "7.25.4", 151 | "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", 152 | "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", 153 | "dev": true, 154 | "license": "MIT", 155 | "dependencies": { 156 | "@babel/helper-annotate-as-pure": "^7.24.7", 157 | "@babel/helper-member-expression-to-functions": "^7.24.8", 158 | "@babel/helper-optimise-call-expression": "^7.24.7", 159 | "@babel/helper-replace-supers": "^7.25.0", 160 | "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", 161 | "@babel/traverse": "^7.25.4", 162 | "semver": "^6.3.1" 163 | }, 164 | "engines": { 165 | "node": ">=6.9.0" 166 | }, 167 | "peerDependencies": { 168 | "@babel/core": "^7.0.0" 169 | } 170 | }, 171 | "node_modules/@babel/helper-create-regexp-features-plugin": { 172 | "version": "7.25.2", 173 | "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", 174 | "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", 175 | "dev": true, 176 | "license": "MIT", 177 | "dependencies": { 178 | "@babel/helper-annotate-as-pure": "^7.24.7", 179 | "regexpu-core": "^5.3.1", 180 | "semver": "^6.3.1" 181 | }, 182 | "engines": { 183 | "node": ">=6.9.0" 184 | }, 185 | "peerDependencies": { 186 | "@babel/core": "^7.0.0" 187 | } 188 | }, 189 | "node_modules/@babel/helper-define-polyfill-provider": { 190 | "version": "0.6.2", 191 | "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", 192 | "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", 193 | "dev": true, 194 | "license": "MIT", 195 | "dependencies": { 196 | "@babel/helper-compilation-targets": "^7.22.6", 197 | "@babel/helper-plugin-utils": "^7.22.5", 198 | "debug": "^4.1.1", 199 | "lodash.debounce": "^4.0.8", 200 | "resolve": "^1.14.2" 201 | }, 202 | "peerDependencies": { 203 | "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" 204 | } 205 | }, 206 | "node_modules/@babel/helper-member-expression-to-functions": { 207 | "version": "7.24.8", 208 | "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", 209 | "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", 210 | "dev": true, 211 | "license": "MIT", 212 | "dependencies": { 213 | "@babel/traverse": "^7.24.8", 214 | "@babel/types": "^7.24.8" 215 | }, 216 | "engines": { 217 | "node": ">=6.9.0" 218 | } 219 | }, 220 | "node_modules/@babel/helper-module-imports": { 221 | "version": "7.24.7", 222 | "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", 223 | "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", 224 | "dev": true, 225 | "license": "MIT", 226 | "dependencies": { 227 | "@babel/traverse": "^7.24.7", 228 | "@babel/types": "^7.24.7" 229 | }, 230 | "engines": { 231 | "node": ">=6.9.0" 232 | } 233 | }, 234 | "node_modules/@babel/helper-module-transforms": { 235 | "version": "7.25.2", 236 | "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", 237 | "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", 238 | "dev": true, 239 | "license": "MIT", 240 | "dependencies": { 241 | "@babel/helper-module-imports": "^7.24.7", 242 | "@babel/helper-simple-access": "^7.24.7", 243 | "@babel/helper-validator-identifier": "^7.24.7", 244 | "@babel/traverse": "^7.25.2" 245 | }, 246 | "engines": { 247 | "node": ">=6.9.0" 248 | }, 249 | "peerDependencies": { 250 | "@babel/core": "^7.0.0" 251 | } 252 | }, 253 | "node_modules/@babel/helper-optimise-call-expression": { 254 | "version": "7.24.7", 255 | "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", 256 | "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", 257 | "dev": true, 258 | "license": "MIT", 259 | "dependencies": { 260 | "@babel/types": "^7.24.7" 261 | }, 262 | "engines": { 263 | "node": ">=6.9.0" 264 | } 265 | }, 266 | "node_modules/@babel/helper-plugin-utils": { 267 | "version": "7.24.8", 268 | "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", 269 | "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", 270 | "dev": true, 271 | "license": "MIT", 272 | "engines": { 273 | "node": ">=6.9.0" 274 | } 275 | }, 276 | "node_modules/@babel/helper-remap-async-to-generator": { 277 | "version": "7.25.0", 278 | "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", 279 | "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", 280 | "dev": true, 281 | "license": "MIT", 282 | "dependencies": { 283 | "@babel/helper-annotate-as-pure": "^7.24.7", 284 | "@babel/helper-wrap-function": "^7.25.0", 285 | "@babel/traverse": "^7.25.0" 286 | }, 287 | "engines": { 288 | "node": ">=6.9.0" 289 | }, 290 | "peerDependencies": { 291 | "@babel/core": "^7.0.0" 292 | } 293 | }, 294 | "node_modules/@babel/helper-replace-supers": { 295 | "version": "7.25.0", 296 | "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", 297 | "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", 298 | "dev": true, 299 | "license": "MIT", 300 | "dependencies": { 301 | "@babel/helper-member-expression-to-functions": "^7.24.8", 302 | "@babel/helper-optimise-call-expression": "^7.24.7", 303 | "@babel/traverse": "^7.25.0" 304 | }, 305 | "engines": { 306 | "node": ">=6.9.0" 307 | }, 308 | "peerDependencies": { 309 | "@babel/core": "^7.0.0" 310 | } 311 | }, 312 | "node_modules/@babel/helper-simple-access": { 313 | "version": "7.24.7", 314 | "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", 315 | "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", 316 | "dev": true, 317 | "license": "MIT", 318 | "dependencies": { 319 | "@babel/traverse": "^7.24.7", 320 | "@babel/types": "^7.24.7" 321 | }, 322 | "engines": { 323 | "node": ">=6.9.0" 324 | } 325 | }, 326 | "node_modules/@babel/helper-skip-transparent-expression-wrappers": { 327 | "version": "7.24.7", 328 | "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", 329 | "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", 330 | "dev": true, 331 | "license": "MIT", 332 | "dependencies": { 333 | "@babel/traverse": "^7.24.7", 334 | "@babel/types": "^7.24.7" 335 | }, 336 | "engines": { 337 | "node": ">=6.9.0" 338 | } 339 | }, 340 | "node_modules/@babel/helper-string-parser": { 341 | "version": "7.24.8", 342 | "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", 343 | "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", 344 | "dev": true, 345 | "license": "MIT", 346 | "engines": { 347 | "node": ">=6.9.0" 348 | } 349 | }, 350 | "node_modules/@babel/helper-validator-identifier": { 351 | "version": "7.24.7", 352 | "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", 353 | "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", 354 | "dev": true, 355 | "license": "MIT", 356 | "engines": { 357 | "node": ">=6.9.0" 358 | } 359 | }, 360 | "node_modules/@babel/helper-validator-option": { 361 | "version": "7.24.8", 362 | "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", 363 | "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", 364 | "dev": true, 365 | "license": "MIT", 366 | "engines": { 367 | "node": ">=6.9.0" 368 | } 369 | }, 370 | "node_modules/@babel/helper-wrap-function": { 371 | "version": "7.25.0", 372 | "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", 373 | "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", 374 | "dev": true, 375 | "license": "MIT", 376 | "dependencies": { 377 | "@babel/template": "^7.25.0", 378 | "@babel/traverse": "^7.25.0", 379 | "@babel/types": "^7.25.0" 380 | }, 381 | "engines": { 382 | "node": ">=6.9.0" 383 | } 384 | }, 385 | "node_modules/@babel/helpers": { 386 | "version": "7.25.6", 387 | "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.25.6.tgz", 388 | "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", 389 | "dev": true, 390 | "license": "MIT", 391 | "dependencies": { 392 | "@babel/template": "^7.25.0", 393 | "@babel/types": "^7.25.6" 394 | }, 395 | "engines": { 396 | "node": ">=6.9.0" 397 | } 398 | }, 399 | "node_modules/@babel/highlight": { 400 | "version": "7.24.7", 401 | "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.7.tgz", 402 | "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", 403 | "dev": true, 404 | "license": "MIT", 405 | "dependencies": { 406 | "@babel/helper-validator-identifier": "^7.24.7", 407 | "chalk": "^2.4.2", 408 | "js-tokens": "^4.0.0", 409 | "picocolors": "^1.0.0" 410 | }, 411 | "engines": { 412 | "node": ">=6.9.0" 413 | } 414 | }, 415 | "node_modules/@babel/parser": { 416 | "version": "7.25.6", 417 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.6.tgz", 418 | "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", 419 | "dev": true, 420 | "license": "MIT", 421 | "dependencies": { 422 | "@babel/types": "^7.25.6" 423 | }, 424 | "bin": { 425 | "parser": "bin/babel-parser.js" 426 | }, 427 | "engines": { 428 | "node": ">=6.0.0" 429 | } 430 | }, 431 | "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { 432 | "version": "7.25.3", 433 | "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", 434 | "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", 435 | "dev": true, 436 | "license": "MIT", 437 | "dependencies": { 438 | "@babel/helper-plugin-utils": "^7.24.8", 439 | "@babel/traverse": "^7.25.3" 440 | }, 441 | "engines": { 442 | "node": ">=6.9.0" 443 | }, 444 | "peerDependencies": { 445 | "@babel/core": "^7.0.0" 446 | } 447 | }, 448 | "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { 449 | "version": "7.25.0", 450 | "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", 451 | "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", 452 | "dev": true, 453 | "license": "MIT", 454 | "dependencies": { 455 | "@babel/helper-plugin-utils": "^7.24.8" 456 | }, 457 | "engines": { 458 | "node": ">=6.9.0" 459 | }, 460 | "peerDependencies": { 461 | "@babel/core": "^7.0.0" 462 | } 463 | }, 464 | "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { 465 | "version": "7.25.0", 466 | "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", 467 | "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", 468 | "dev": true, 469 | "license": "MIT", 470 | "dependencies": { 471 | "@babel/helper-plugin-utils": "^7.24.8" 472 | }, 473 | "engines": { 474 | "node": ">=6.9.0" 475 | }, 476 | "peerDependencies": { 477 | "@babel/core": "^7.0.0" 478 | } 479 | }, 480 | "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { 481 | "version": "7.24.7", 482 | "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", 483 | "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", 484 | "dev": true, 485 | "license": "MIT", 486 | "dependencies": { 487 | "@babel/helper-plugin-utils": "^7.24.7", 488 | "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", 489 | "@babel/plugin-transform-optional-chaining": "^7.24.7" 490 | }, 491 | "engines": { 492 | "node": ">=6.9.0" 493 | }, 494 | "peerDependencies": { 495 | "@babel/core": "^7.13.0" 496 | } 497 | }, 498 | "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { 499 | "version": "7.25.0", 500 | "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", 501 | "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", 502 | "dev": true, 503 | "license": "MIT", 504 | "dependencies": { 505 | "@babel/helper-plugin-utils": "^7.24.8", 506 | "@babel/traverse": "^7.25.0" 507 | }, 508 | "engines": { 509 | "node": ">=6.9.0" 510 | }, 511 | "peerDependencies": { 512 | "@babel/core": "^7.0.0" 513 | } 514 | }, 515 | "node_modules/@babel/plugin-proposal-private-property-in-object": { 516 | "version": "7.21.0-placeholder-for-preset-env.2", 517 | "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", 518 | "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", 519 | "dev": true, 520 | "license": "MIT", 521 | "engines": { 522 | "node": ">=6.9.0" 523 | }, 524 | "peerDependencies": { 525 | "@babel/core": "^7.0.0-0" 526 | } 527 | }, 528 | "node_modules/@babel/plugin-syntax-async-generators": { 529 | "version": "7.8.4", 530 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 531 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 532 | "dev": true, 533 | "license": "MIT", 534 | "dependencies": { 535 | "@babel/helper-plugin-utils": "^7.8.0" 536 | }, 537 | "peerDependencies": { 538 | "@babel/core": "^7.0.0-0" 539 | } 540 | }, 541 | "node_modules/@babel/plugin-syntax-class-properties": { 542 | "version": "7.12.13", 543 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", 544 | "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", 545 | "dev": true, 546 | "license": "MIT", 547 | "dependencies": { 548 | "@babel/helper-plugin-utils": "^7.12.13" 549 | }, 550 | "peerDependencies": { 551 | "@babel/core": "^7.0.0-0" 552 | } 553 | }, 554 | "node_modules/@babel/plugin-syntax-class-static-block": { 555 | "version": "7.14.5", 556 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", 557 | "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", 558 | "dev": true, 559 | "license": "MIT", 560 | "dependencies": { 561 | "@babel/helper-plugin-utils": "^7.14.5" 562 | }, 563 | "engines": { 564 | "node": ">=6.9.0" 565 | }, 566 | "peerDependencies": { 567 | "@babel/core": "^7.0.0-0" 568 | } 569 | }, 570 | "node_modules/@babel/plugin-syntax-dynamic-import": { 571 | "version": "7.8.3", 572 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", 573 | "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", 574 | "dev": true, 575 | "license": "MIT", 576 | "dependencies": { 577 | "@babel/helper-plugin-utils": "^7.8.0" 578 | }, 579 | "peerDependencies": { 580 | "@babel/core": "^7.0.0-0" 581 | } 582 | }, 583 | "node_modules/@babel/plugin-syntax-export-namespace-from": { 584 | "version": "7.8.3", 585 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", 586 | "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", 587 | "dev": true, 588 | "license": "MIT", 589 | "dependencies": { 590 | "@babel/helper-plugin-utils": "^7.8.3" 591 | }, 592 | "peerDependencies": { 593 | "@babel/core": "^7.0.0-0" 594 | } 595 | }, 596 | "node_modules/@babel/plugin-syntax-import-assertions": { 597 | "version": "7.25.6", 598 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", 599 | "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", 600 | "dev": true, 601 | "license": "MIT", 602 | "dependencies": { 603 | "@babel/helper-plugin-utils": "^7.24.8" 604 | }, 605 | "engines": { 606 | "node": ">=6.9.0" 607 | }, 608 | "peerDependencies": { 609 | "@babel/core": "^7.0.0-0" 610 | } 611 | }, 612 | "node_modules/@babel/plugin-syntax-import-attributes": { 613 | "version": "7.25.6", 614 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", 615 | "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", 616 | "dev": true, 617 | "license": "MIT", 618 | "dependencies": { 619 | "@babel/helper-plugin-utils": "^7.24.8" 620 | }, 621 | "engines": { 622 | "node": ">=6.9.0" 623 | }, 624 | "peerDependencies": { 625 | "@babel/core": "^7.0.0-0" 626 | } 627 | }, 628 | "node_modules/@babel/plugin-syntax-import-meta": { 629 | "version": "7.10.4", 630 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", 631 | "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", 632 | "dev": true, 633 | "license": "MIT", 634 | "dependencies": { 635 | "@babel/helper-plugin-utils": "^7.10.4" 636 | }, 637 | "peerDependencies": { 638 | "@babel/core": "^7.0.0-0" 639 | } 640 | }, 641 | "node_modules/@babel/plugin-syntax-json-strings": { 642 | "version": "7.8.3", 643 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 644 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 645 | "dev": true, 646 | "license": "MIT", 647 | "dependencies": { 648 | "@babel/helper-plugin-utils": "^7.8.0" 649 | }, 650 | "peerDependencies": { 651 | "@babel/core": "^7.0.0-0" 652 | } 653 | }, 654 | "node_modules/@babel/plugin-syntax-logical-assignment-operators": { 655 | "version": "7.10.4", 656 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", 657 | "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", 658 | "dev": true, 659 | "license": "MIT", 660 | "dependencies": { 661 | "@babel/helper-plugin-utils": "^7.10.4" 662 | }, 663 | "peerDependencies": { 664 | "@babel/core": "^7.0.0-0" 665 | } 666 | }, 667 | "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { 668 | "version": "7.8.3", 669 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 670 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 671 | "dev": true, 672 | "license": "MIT", 673 | "dependencies": { 674 | "@babel/helper-plugin-utils": "^7.8.0" 675 | }, 676 | "peerDependencies": { 677 | "@babel/core": "^7.0.0-0" 678 | } 679 | }, 680 | "node_modules/@babel/plugin-syntax-numeric-separator": { 681 | "version": "7.10.4", 682 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", 683 | "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", 684 | "dev": true, 685 | "license": "MIT", 686 | "dependencies": { 687 | "@babel/helper-plugin-utils": "^7.10.4" 688 | }, 689 | "peerDependencies": { 690 | "@babel/core": "^7.0.0-0" 691 | } 692 | }, 693 | "node_modules/@babel/plugin-syntax-object-rest-spread": { 694 | "version": "7.8.3", 695 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 696 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 697 | "dev": true, 698 | "license": "MIT", 699 | "dependencies": { 700 | "@babel/helper-plugin-utils": "^7.8.0" 701 | }, 702 | "peerDependencies": { 703 | "@babel/core": "^7.0.0-0" 704 | } 705 | }, 706 | "node_modules/@babel/plugin-syntax-optional-catch-binding": { 707 | "version": "7.8.3", 708 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 709 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 710 | "dev": true, 711 | "license": "MIT", 712 | "dependencies": { 713 | "@babel/helper-plugin-utils": "^7.8.0" 714 | }, 715 | "peerDependencies": { 716 | "@babel/core": "^7.0.0-0" 717 | } 718 | }, 719 | "node_modules/@babel/plugin-syntax-optional-chaining": { 720 | "version": "7.8.3", 721 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 722 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 723 | "dev": true, 724 | "license": "MIT", 725 | "dependencies": { 726 | "@babel/helper-plugin-utils": "^7.8.0" 727 | }, 728 | "peerDependencies": { 729 | "@babel/core": "^7.0.0-0" 730 | } 731 | }, 732 | "node_modules/@babel/plugin-syntax-private-property-in-object": { 733 | "version": "7.14.5", 734 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", 735 | "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", 736 | "dev": true, 737 | "license": "MIT", 738 | "dependencies": { 739 | "@babel/helper-plugin-utils": "^7.14.5" 740 | }, 741 | "engines": { 742 | "node": ">=6.9.0" 743 | }, 744 | "peerDependencies": { 745 | "@babel/core": "^7.0.0-0" 746 | } 747 | }, 748 | "node_modules/@babel/plugin-syntax-top-level-await": { 749 | "version": "7.14.5", 750 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", 751 | "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", 752 | "dev": true, 753 | "license": "MIT", 754 | "dependencies": { 755 | "@babel/helper-plugin-utils": "^7.14.5" 756 | }, 757 | "engines": { 758 | "node": ">=6.9.0" 759 | }, 760 | "peerDependencies": { 761 | "@babel/core": "^7.0.0-0" 762 | } 763 | }, 764 | "node_modules/@babel/plugin-syntax-unicode-sets-regex": { 765 | "version": "7.18.6", 766 | "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", 767 | "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", 768 | "dev": true, 769 | "license": "MIT", 770 | "dependencies": { 771 | "@babel/helper-create-regexp-features-plugin": "^7.18.6", 772 | "@babel/helper-plugin-utils": "^7.18.6" 773 | }, 774 | "engines": { 775 | "node": ">=6.9.0" 776 | }, 777 | "peerDependencies": { 778 | "@babel/core": "^7.0.0" 779 | } 780 | }, 781 | "node_modules/@babel/plugin-transform-arrow-functions": { 782 | "version": "7.24.7", 783 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", 784 | "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", 785 | "dev": true, 786 | "license": "MIT", 787 | "dependencies": { 788 | "@babel/helper-plugin-utils": "^7.24.7" 789 | }, 790 | "engines": { 791 | "node": ">=6.9.0" 792 | }, 793 | "peerDependencies": { 794 | "@babel/core": "^7.0.0-0" 795 | } 796 | }, 797 | "node_modules/@babel/plugin-transform-async-generator-functions": { 798 | "version": "7.25.4", 799 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", 800 | "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", 801 | "dev": true, 802 | "license": "MIT", 803 | "dependencies": { 804 | "@babel/helper-plugin-utils": "^7.24.8", 805 | "@babel/helper-remap-async-to-generator": "^7.25.0", 806 | "@babel/plugin-syntax-async-generators": "^7.8.4", 807 | "@babel/traverse": "^7.25.4" 808 | }, 809 | "engines": { 810 | "node": ">=6.9.0" 811 | }, 812 | "peerDependencies": { 813 | "@babel/core": "^7.0.0-0" 814 | } 815 | }, 816 | "node_modules/@babel/plugin-transform-async-to-generator": { 817 | "version": "7.24.7", 818 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", 819 | "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", 820 | "dev": true, 821 | "license": "MIT", 822 | "dependencies": { 823 | "@babel/helper-module-imports": "^7.24.7", 824 | "@babel/helper-plugin-utils": "^7.24.7", 825 | "@babel/helper-remap-async-to-generator": "^7.24.7" 826 | }, 827 | "engines": { 828 | "node": ">=6.9.0" 829 | }, 830 | "peerDependencies": { 831 | "@babel/core": "^7.0.0-0" 832 | } 833 | }, 834 | "node_modules/@babel/plugin-transform-block-scoped-functions": { 835 | "version": "7.24.7", 836 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", 837 | "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", 838 | "dev": true, 839 | "license": "MIT", 840 | "dependencies": { 841 | "@babel/helper-plugin-utils": "^7.24.7" 842 | }, 843 | "engines": { 844 | "node": ">=6.9.0" 845 | }, 846 | "peerDependencies": { 847 | "@babel/core": "^7.0.0-0" 848 | } 849 | }, 850 | "node_modules/@babel/plugin-transform-block-scoping": { 851 | "version": "7.25.0", 852 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", 853 | "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", 854 | "dev": true, 855 | "license": "MIT", 856 | "dependencies": { 857 | "@babel/helper-plugin-utils": "^7.24.8" 858 | }, 859 | "engines": { 860 | "node": ">=6.9.0" 861 | }, 862 | "peerDependencies": { 863 | "@babel/core": "^7.0.0-0" 864 | } 865 | }, 866 | "node_modules/@babel/plugin-transform-class-properties": { 867 | "version": "7.25.4", 868 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", 869 | "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", 870 | "dev": true, 871 | "license": "MIT", 872 | "dependencies": { 873 | "@babel/helper-create-class-features-plugin": "^7.25.4", 874 | "@babel/helper-plugin-utils": "^7.24.8" 875 | }, 876 | "engines": { 877 | "node": ">=6.9.0" 878 | }, 879 | "peerDependencies": { 880 | "@babel/core": "^7.0.0-0" 881 | } 882 | }, 883 | "node_modules/@babel/plugin-transform-class-static-block": { 884 | "version": "7.24.7", 885 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", 886 | "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", 887 | "dev": true, 888 | "license": "MIT", 889 | "dependencies": { 890 | "@babel/helper-create-class-features-plugin": "^7.24.7", 891 | "@babel/helper-plugin-utils": "^7.24.7", 892 | "@babel/plugin-syntax-class-static-block": "^7.14.5" 893 | }, 894 | "engines": { 895 | "node": ">=6.9.0" 896 | }, 897 | "peerDependencies": { 898 | "@babel/core": "^7.12.0" 899 | } 900 | }, 901 | "node_modules/@babel/plugin-transform-classes": { 902 | "version": "7.25.4", 903 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", 904 | "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", 905 | "dev": true, 906 | "license": "MIT", 907 | "dependencies": { 908 | "@babel/helper-annotate-as-pure": "^7.24.7", 909 | "@babel/helper-compilation-targets": "^7.25.2", 910 | "@babel/helper-plugin-utils": "^7.24.8", 911 | "@babel/helper-replace-supers": "^7.25.0", 912 | "@babel/traverse": "^7.25.4", 913 | "globals": "^11.1.0" 914 | }, 915 | "engines": { 916 | "node": ">=6.9.0" 917 | }, 918 | "peerDependencies": { 919 | "@babel/core": "^7.0.0-0" 920 | } 921 | }, 922 | "node_modules/@babel/plugin-transform-computed-properties": { 923 | "version": "7.24.7", 924 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", 925 | "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", 926 | "dev": true, 927 | "license": "MIT", 928 | "dependencies": { 929 | "@babel/helper-plugin-utils": "^7.24.7", 930 | "@babel/template": "^7.24.7" 931 | }, 932 | "engines": { 933 | "node": ">=6.9.0" 934 | }, 935 | "peerDependencies": { 936 | "@babel/core": "^7.0.0-0" 937 | } 938 | }, 939 | "node_modules/@babel/plugin-transform-destructuring": { 940 | "version": "7.24.8", 941 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", 942 | "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", 943 | "dev": true, 944 | "license": "MIT", 945 | "dependencies": { 946 | "@babel/helper-plugin-utils": "^7.24.8" 947 | }, 948 | "engines": { 949 | "node": ">=6.9.0" 950 | }, 951 | "peerDependencies": { 952 | "@babel/core": "^7.0.0-0" 953 | } 954 | }, 955 | "node_modules/@babel/plugin-transform-dotall-regex": { 956 | "version": "7.24.7", 957 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", 958 | "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", 959 | "dev": true, 960 | "license": "MIT", 961 | "dependencies": { 962 | "@babel/helper-create-regexp-features-plugin": "^7.24.7", 963 | "@babel/helper-plugin-utils": "^7.24.7" 964 | }, 965 | "engines": { 966 | "node": ">=6.9.0" 967 | }, 968 | "peerDependencies": { 969 | "@babel/core": "^7.0.0-0" 970 | } 971 | }, 972 | "node_modules/@babel/plugin-transform-duplicate-keys": { 973 | "version": "7.24.7", 974 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", 975 | "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", 976 | "dev": true, 977 | "license": "MIT", 978 | "dependencies": { 979 | "@babel/helper-plugin-utils": "^7.24.7" 980 | }, 981 | "engines": { 982 | "node": ">=6.9.0" 983 | }, 984 | "peerDependencies": { 985 | "@babel/core": "^7.0.0-0" 986 | } 987 | }, 988 | "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { 989 | "version": "7.25.0", 990 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", 991 | "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", 992 | "dev": true, 993 | "license": "MIT", 994 | "dependencies": { 995 | "@babel/helper-create-regexp-features-plugin": "^7.25.0", 996 | "@babel/helper-plugin-utils": "^7.24.8" 997 | }, 998 | "engines": { 999 | "node": ">=6.9.0" 1000 | }, 1001 | "peerDependencies": { 1002 | "@babel/core": "^7.0.0" 1003 | } 1004 | }, 1005 | "node_modules/@babel/plugin-transform-dynamic-import": { 1006 | "version": "7.24.7", 1007 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", 1008 | "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", 1009 | "dev": true, 1010 | "license": "MIT", 1011 | "dependencies": { 1012 | "@babel/helper-plugin-utils": "^7.24.7", 1013 | "@babel/plugin-syntax-dynamic-import": "^7.8.3" 1014 | }, 1015 | "engines": { 1016 | "node": ">=6.9.0" 1017 | }, 1018 | "peerDependencies": { 1019 | "@babel/core": "^7.0.0-0" 1020 | } 1021 | }, 1022 | "node_modules/@babel/plugin-transform-exponentiation-operator": { 1023 | "version": "7.24.7", 1024 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", 1025 | "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", 1026 | "dev": true, 1027 | "license": "MIT", 1028 | "dependencies": { 1029 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", 1030 | "@babel/helper-plugin-utils": "^7.24.7" 1031 | }, 1032 | "engines": { 1033 | "node": ">=6.9.0" 1034 | }, 1035 | "peerDependencies": { 1036 | "@babel/core": "^7.0.0-0" 1037 | } 1038 | }, 1039 | "node_modules/@babel/plugin-transform-export-namespace-from": { 1040 | "version": "7.24.7", 1041 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", 1042 | "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", 1043 | "dev": true, 1044 | "license": "MIT", 1045 | "dependencies": { 1046 | "@babel/helper-plugin-utils": "^7.24.7", 1047 | "@babel/plugin-syntax-export-namespace-from": "^7.8.3" 1048 | }, 1049 | "engines": { 1050 | "node": ">=6.9.0" 1051 | }, 1052 | "peerDependencies": { 1053 | "@babel/core": "^7.0.0-0" 1054 | } 1055 | }, 1056 | "node_modules/@babel/plugin-transform-for-of": { 1057 | "version": "7.24.7", 1058 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", 1059 | "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", 1060 | "dev": true, 1061 | "license": "MIT", 1062 | "dependencies": { 1063 | "@babel/helper-plugin-utils": "^7.24.7", 1064 | "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" 1065 | }, 1066 | "engines": { 1067 | "node": ">=6.9.0" 1068 | }, 1069 | "peerDependencies": { 1070 | "@babel/core": "^7.0.0-0" 1071 | } 1072 | }, 1073 | "node_modules/@babel/plugin-transform-function-name": { 1074 | "version": "7.25.1", 1075 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", 1076 | "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", 1077 | "dev": true, 1078 | "license": "MIT", 1079 | "dependencies": { 1080 | "@babel/helper-compilation-targets": "^7.24.8", 1081 | "@babel/helper-plugin-utils": "^7.24.8", 1082 | "@babel/traverse": "^7.25.1" 1083 | }, 1084 | "engines": { 1085 | "node": ">=6.9.0" 1086 | }, 1087 | "peerDependencies": { 1088 | "@babel/core": "^7.0.0-0" 1089 | } 1090 | }, 1091 | "node_modules/@babel/plugin-transform-json-strings": { 1092 | "version": "7.24.7", 1093 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", 1094 | "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", 1095 | "dev": true, 1096 | "license": "MIT", 1097 | "dependencies": { 1098 | "@babel/helper-plugin-utils": "^7.24.7", 1099 | "@babel/plugin-syntax-json-strings": "^7.8.3" 1100 | }, 1101 | "engines": { 1102 | "node": ">=6.9.0" 1103 | }, 1104 | "peerDependencies": { 1105 | "@babel/core": "^7.0.0-0" 1106 | } 1107 | }, 1108 | "node_modules/@babel/plugin-transform-literals": { 1109 | "version": "7.25.2", 1110 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", 1111 | "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", 1112 | "dev": true, 1113 | "license": "MIT", 1114 | "dependencies": { 1115 | "@babel/helper-plugin-utils": "^7.24.8" 1116 | }, 1117 | "engines": { 1118 | "node": ">=6.9.0" 1119 | }, 1120 | "peerDependencies": { 1121 | "@babel/core": "^7.0.0-0" 1122 | } 1123 | }, 1124 | "node_modules/@babel/plugin-transform-logical-assignment-operators": { 1125 | "version": "7.24.7", 1126 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", 1127 | "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", 1128 | "dev": true, 1129 | "license": "MIT", 1130 | "dependencies": { 1131 | "@babel/helper-plugin-utils": "^7.24.7", 1132 | "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" 1133 | }, 1134 | "engines": { 1135 | "node": ">=6.9.0" 1136 | }, 1137 | "peerDependencies": { 1138 | "@babel/core": "^7.0.0-0" 1139 | } 1140 | }, 1141 | "node_modules/@babel/plugin-transform-member-expression-literals": { 1142 | "version": "7.24.7", 1143 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", 1144 | "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", 1145 | "dev": true, 1146 | "license": "MIT", 1147 | "dependencies": { 1148 | "@babel/helper-plugin-utils": "^7.24.7" 1149 | }, 1150 | "engines": { 1151 | "node": ">=6.9.0" 1152 | }, 1153 | "peerDependencies": { 1154 | "@babel/core": "^7.0.0-0" 1155 | } 1156 | }, 1157 | "node_modules/@babel/plugin-transform-modules-amd": { 1158 | "version": "7.24.7", 1159 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", 1160 | "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", 1161 | "dev": true, 1162 | "license": "MIT", 1163 | "dependencies": { 1164 | "@babel/helper-module-transforms": "^7.24.7", 1165 | "@babel/helper-plugin-utils": "^7.24.7" 1166 | }, 1167 | "engines": { 1168 | "node": ">=6.9.0" 1169 | }, 1170 | "peerDependencies": { 1171 | "@babel/core": "^7.0.0-0" 1172 | } 1173 | }, 1174 | "node_modules/@babel/plugin-transform-modules-commonjs": { 1175 | "version": "7.24.8", 1176 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", 1177 | "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", 1178 | "dev": true, 1179 | "license": "MIT", 1180 | "dependencies": { 1181 | "@babel/helper-module-transforms": "^7.24.8", 1182 | "@babel/helper-plugin-utils": "^7.24.8", 1183 | "@babel/helper-simple-access": "^7.24.7" 1184 | }, 1185 | "engines": { 1186 | "node": ">=6.9.0" 1187 | }, 1188 | "peerDependencies": { 1189 | "@babel/core": "^7.0.0-0" 1190 | } 1191 | }, 1192 | "node_modules/@babel/plugin-transform-modules-systemjs": { 1193 | "version": "7.25.0", 1194 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", 1195 | "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", 1196 | "dev": true, 1197 | "license": "MIT", 1198 | "dependencies": { 1199 | "@babel/helper-module-transforms": "^7.25.0", 1200 | "@babel/helper-plugin-utils": "^7.24.8", 1201 | "@babel/helper-validator-identifier": "^7.24.7", 1202 | "@babel/traverse": "^7.25.0" 1203 | }, 1204 | "engines": { 1205 | "node": ">=6.9.0" 1206 | }, 1207 | "peerDependencies": { 1208 | "@babel/core": "^7.0.0-0" 1209 | } 1210 | }, 1211 | "node_modules/@babel/plugin-transform-modules-umd": { 1212 | "version": "7.24.7", 1213 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", 1214 | "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", 1215 | "dev": true, 1216 | "license": "MIT", 1217 | "dependencies": { 1218 | "@babel/helper-module-transforms": "^7.24.7", 1219 | "@babel/helper-plugin-utils": "^7.24.7" 1220 | }, 1221 | "engines": { 1222 | "node": ">=6.9.0" 1223 | }, 1224 | "peerDependencies": { 1225 | "@babel/core": "^7.0.0-0" 1226 | } 1227 | }, 1228 | "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { 1229 | "version": "7.24.7", 1230 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", 1231 | "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", 1232 | "dev": true, 1233 | "license": "MIT", 1234 | "dependencies": { 1235 | "@babel/helper-create-regexp-features-plugin": "^7.24.7", 1236 | "@babel/helper-plugin-utils": "^7.24.7" 1237 | }, 1238 | "engines": { 1239 | "node": ">=6.9.0" 1240 | }, 1241 | "peerDependencies": { 1242 | "@babel/core": "^7.0.0" 1243 | } 1244 | }, 1245 | "node_modules/@babel/plugin-transform-new-target": { 1246 | "version": "7.24.7", 1247 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", 1248 | "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", 1249 | "dev": true, 1250 | "license": "MIT", 1251 | "dependencies": { 1252 | "@babel/helper-plugin-utils": "^7.24.7" 1253 | }, 1254 | "engines": { 1255 | "node": ">=6.9.0" 1256 | }, 1257 | "peerDependencies": { 1258 | "@babel/core": "^7.0.0-0" 1259 | } 1260 | }, 1261 | "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { 1262 | "version": "7.24.7", 1263 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", 1264 | "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", 1265 | "dev": true, 1266 | "license": "MIT", 1267 | "dependencies": { 1268 | "@babel/helper-plugin-utils": "^7.24.7", 1269 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" 1270 | }, 1271 | "engines": { 1272 | "node": ">=6.9.0" 1273 | }, 1274 | "peerDependencies": { 1275 | "@babel/core": "^7.0.0-0" 1276 | } 1277 | }, 1278 | "node_modules/@babel/plugin-transform-numeric-separator": { 1279 | "version": "7.24.7", 1280 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", 1281 | "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", 1282 | "dev": true, 1283 | "license": "MIT", 1284 | "dependencies": { 1285 | "@babel/helper-plugin-utils": "^7.24.7", 1286 | "@babel/plugin-syntax-numeric-separator": "^7.10.4" 1287 | }, 1288 | "engines": { 1289 | "node": ">=6.9.0" 1290 | }, 1291 | "peerDependencies": { 1292 | "@babel/core": "^7.0.0-0" 1293 | } 1294 | }, 1295 | "node_modules/@babel/plugin-transform-object-rest-spread": { 1296 | "version": "7.24.7", 1297 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", 1298 | "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", 1299 | "dev": true, 1300 | "license": "MIT", 1301 | "dependencies": { 1302 | "@babel/helper-compilation-targets": "^7.24.7", 1303 | "@babel/helper-plugin-utils": "^7.24.7", 1304 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3", 1305 | "@babel/plugin-transform-parameters": "^7.24.7" 1306 | }, 1307 | "engines": { 1308 | "node": ">=6.9.0" 1309 | }, 1310 | "peerDependencies": { 1311 | "@babel/core": "^7.0.0-0" 1312 | } 1313 | }, 1314 | "node_modules/@babel/plugin-transform-object-super": { 1315 | "version": "7.24.7", 1316 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", 1317 | "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", 1318 | "dev": true, 1319 | "license": "MIT", 1320 | "dependencies": { 1321 | "@babel/helper-plugin-utils": "^7.24.7", 1322 | "@babel/helper-replace-supers": "^7.24.7" 1323 | }, 1324 | "engines": { 1325 | "node": ">=6.9.0" 1326 | }, 1327 | "peerDependencies": { 1328 | "@babel/core": "^7.0.0-0" 1329 | } 1330 | }, 1331 | "node_modules/@babel/plugin-transform-optional-catch-binding": { 1332 | "version": "7.24.7", 1333 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", 1334 | "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", 1335 | "dev": true, 1336 | "license": "MIT", 1337 | "dependencies": { 1338 | "@babel/helper-plugin-utils": "^7.24.7", 1339 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" 1340 | }, 1341 | "engines": { 1342 | "node": ">=6.9.0" 1343 | }, 1344 | "peerDependencies": { 1345 | "@babel/core": "^7.0.0-0" 1346 | } 1347 | }, 1348 | "node_modules/@babel/plugin-transform-optional-chaining": { 1349 | "version": "7.24.8", 1350 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", 1351 | "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", 1352 | "dev": true, 1353 | "license": "MIT", 1354 | "dependencies": { 1355 | "@babel/helper-plugin-utils": "^7.24.8", 1356 | "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", 1357 | "@babel/plugin-syntax-optional-chaining": "^7.8.3" 1358 | }, 1359 | "engines": { 1360 | "node": ">=6.9.0" 1361 | }, 1362 | "peerDependencies": { 1363 | "@babel/core": "^7.0.0-0" 1364 | } 1365 | }, 1366 | "node_modules/@babel/plugin-transform-parameters": { 1367 | "version": "7.24.7", 1368 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", 1369 | "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", 1370 | "dev": true, 1371 | "license": "MIT", 1372 | "dependencies": { 1373 | "@babel/helper-plugin-utils": "^7.24.7" 1374 | }, 1375 | "engines": { 1376 | "node": ">=6.9.0" 1377 | }, 1378 | "peerDependencies": { 1379 | "@babel/core": "^7.0.0-0" 1380 | } 1381 | }, 1382 | "node_modules/@babel/plugin-transform-private-methods": { 1383 | "version": "7.25.4", 1384 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", 1385 | "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", 1386 | "dev": true, 1387 | "license": "MIT", 1388 | "dependencies": { 1389 | "@babel/helper-create-class-features-plugin": "^7.25.4", 1390 | "@babel/helper-plugin-utils": "^7.24.8" 1391 | }, 1392 | "engines": { 1393 | "node": ">=6.9.0" 1394 | }, 1395 | "peerDependencies": { 1396 | "@babel/core": "^7.0.0-0" 1397 | } 1398 | }, 1399 | "node_modules/@babel/plugin-transform-private-property-in-object": { 1400 | "version": "7.24.7", 1401 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", 1402 | "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", 1403 | "dev": true, 1404 | "license": "MIT", 1405 | "dependencies": { 1406 | "@babel/helper-annotate-as-pure": "^7.24.7", 1407 | "@babel/helper-create-class-features-plugin": "^7.24.7", 1408 | "@babel/helper-plugin-utils": "^7.24.7", 1409 | "@babel/plugin-syntax-private-property-in-object": "^7.14.5" 1410 | }, 1411 | "engines": { 1412 | "node": ">=6.9.0" 1413 | }, 1414 | "peerDependencies": { 1415 | "@babel/core": "^7.0.0-0" 1416 | } 1417 | }, 1418 | "node_modules/@babel/plugin-transform-property-literals": { 1419 | "version": "7.24.7", 1420 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", 1421 | "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", 1422 | "dev": true, 1423 | "license": "MIT", 1424 | "dependencies": { 1425 | "@babel/helper-plugin-utils": "^7.24.7" 1426 | }, 1427 | "engines": { 1428 | "node": ">=6.9.0" 1429 | }, 1430 | "peerDependencies": { 1431 | "@babel/core": "^7.0.0-0" 1432 | } 1433 | }, 1434 | "node_modules/@babel/plugin-transform-regenerator": { 1435 | "version": "7.24.7", 1436 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", 1437 | "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", 1438 | "dev": true, 1439 | "license": "MIT", 1440 | "dependencies": { 1441 | "@babel/helper-plugin-utils": "^7.24.7", 1442 | "regenerator-transform": "^0.15.2" 1443 | }, 1444 | "engines": { 1445 | "node": ">=6.9.0" 1446 | }, 1447 | "peerDependencies": { 1448 | "@babel/core": "^7.0.0-0" 1449 | } 1450 | }, 1451 | "node_modules/@babel/plugin-transform-reserved-words": { 1452 | "version": "7.24.7", 1453 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", 1454 | "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", 1455 | "dev": true, 1456 | "license": "MIT", 1457 | "dependencies": { 1458 | "@babel/helper-plugin-utils": "^7.24.7" 1459 | }, 1460 | "engines": { 1461 | "node": ">=6.9.0" 1462 | }, 1463 | "peerDependencies": { 1464 | "@babel/core": "^7.0.0-0" 1465 | } 1466 | }, 1467 | "node_modules/@babel/plugin-transform-shorthand-properties": { 1468 | "version": "7.24.7", 1469 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", 1470 | "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", 1471 | "dev": true, 1472 | "license": "MIT", 1473 | "dependencies": { 1474 | "@babel/helper-plugin-utils": "^7.24.7" 1475 | }, 1476 | "engines": { 1477 | "node": ">=6.9.0" 1478 | }, 1479 | "peerDependencies": { 1480 | "@babel/core": "^7.0.0-0" 1481 | } 1482 | }, 1483 | "node_modules/@babel/plugin-transform-spread": { 1484 | "version": "7.24.7", 1485 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", 1486 | "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", 1487 | "dev": true, 1488 | "license": "MIT", 1489 | "dependencies": { 1490 | "@babel/helper-plugin-utils": "^7.24.7", 1491 | "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" 1492 | }, 1493 | "engines": { 1494 | "node": ">=6.9.0" 1495 | }, 1496 | "peerDependencies": { 1497 | "@babel/core": "^7.0.0-0" 1498 | } 1499 | }, 1500 | "node_modules/@babel/plugin-transform-sticky-regex": { 1501 | "version": "7.24.7", 1502 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", 1503 | "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", 1504 | "dev": true, 1505 | "license": "MIT", 1506 | "dependencies": { 1507 | "@babel/helper-plugin-utils": "^7.24.7" 1508 | }, 1509 | "engines": { 1510 | "node": ">=6.9.0" 1511 | }, 1512 | "peerDependencies": { 1513 | "@babel/core": "^7.0.0-0" 1514 | } 1515 | }, 1516 | "node_modules/@babel/plugin-transform-template-literals": { 1517 | "version": "7.24.7", 1518 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", 1519 | "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", 1520 | "dev": true, 1521 | "license": "MIT", 1522 | "dependencies": { 1523 | "@babel/helper-plugin-utils": "^7.24.7" 1524 | }, 1525 | "engines": { 1526 | "node": ">=6.9.0" 1527 | }, 1528 | "peerDependencies": { 1529 | "@babel/core": "^7.0.0-0" 1530 | } 1531 | }, 1532 | "node_modules/@babel/plugin-transform-typeof-symbol": { 1533 | "version": "7.24.8", 1534 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", 1535 | "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", 1536 | "dev": true, 1537 | "license": "MIT", 1538 | "dependencies": { 1539 | "@babel/helper-plugin-utils": "^7.24.8" 1540 | }, 1541 | "engines": { 1542 | "node": ">=6.9.0" 1543 | }, 1544 | "peerDependencies": { 1545 | "@babel/core": "^7.0.0-0" 1546 | } 1547 | }, 1548 | "node_modules/@babel/plugin-transform-unicode-escapes": { 1549 | "version": "7.24.7", 1550 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", 1551 | "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", 1552 | "dev": true, 1553 | "license": "MIT", 1554 | "dependencies": { 1555 | "@babel/helper-plugin-utils": "^7.24.7" 1556 | }, 1557 | "engines": { 1558 | "node": ">=6.9.0" 1559 | }, 1560 | "peerDependencies": { 1561 | "@babel/core": "^7.0.0-0" 1562 | } 1563 | }, 1564 | "node_modules/@babel/plugin-transform-unicode-property-regex": { 1565 | "version": "7.24.7", 1566 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", 1567 | "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", 1568 | "dev": true, 1569 | "license": "MIT", 1570 | "dependencies": { 1571 | "@babel/helper-create-regexp-features-plugin": "^7.24.7", 1572 | "@babel/helper-plugin-utils": "^7.24.7" 1573 | }, 1574 | "engines": { 1575 | "node": ">=6.9.0" 1576 | }, 1577 | "peerDependencies": { 1578 | "@babel/core": "^7.0.0-0" 1579 | } 1580 | }, 1581 | "node_modules/@babel/plugin-transform-unicode-regex": { 1582 | "version": "7.24.7", 1583 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", 1584 | "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", 1585 | "dev": true, 1586 | "license": "MIT", 1587 | "dependencies": { 1588 | "@babel/helper-create-regexp-features-plugin": "^7.24.7", 1589 | "@babel/helper-plugin-utils": "^7.24.7" 1590 | }, 1591 | "engines": { 1592 | "node": ">=6.9.0" 1593 | }, 1594 | "peerDependencies": { 1595 | "@babel/core": "^7.0.0-0" 1596 | } 1597 | }, 1598 | "node_modules/@babel/plugin-transform-unicode-sets-regex": { 1599 | "version": "7.25.4", 1600 | "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", 1601 | "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", 1602 | "dev": true, 1603 | "license": "MIT", 1604 | "dependencies": { 1605 | "@babel/helper-create-regexp-features-plugin": "^7.25.2", 1606 | "@babel/helper-plugin-utils": "^7.24.8" 1607 | }, 1608 | "engines": { 1609 | "node": ">=6.9.0" 1610 | }, 1611 | "peerDependencies": { 1612 | "@babel/core": "^7.0.0" 1613 | } 1614 | }, 1615 | "node_modules/@babel/preset-env": { 1616 | "version": "7.25.4", 1617 | "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.25.4.tgz", 1618 | "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", 1619 | "dev": true, 1620 | "license": "MIT", 1621 | "dependencies": { 1622 | "@babel/compat-data": "^7.25.4", 1623 | "@babel/helper-compilation-targets": "^7.25.2", 1624 | "@babel/helper-plugin-utils": "^7.24.8", 1625 | "@babel/helper-validator-option": "^7.24.8", 1626 | "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", 1627 | "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", 1628 | "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", 1629 | "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", 1630 | "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", 1631 | "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", 1632 | "@babel/plugin-syntax-async-generators": "^7.8.4", 1633 | "@babel/plugin-syntax-class-properties": "^7.12.13", 1634 | "@babel/plugin-syntax-class-static-block": "^7.14.5", 1635 | "@babel/plugin-syntax-dynamic-import": "^7.8.3", 1636 | "@babel/plugin-syntax-export-namespace-from": "^7.8.3", 1637 | "@babel/plugin-syntax-import-assertions": "^7.24.7", 1638 | "@babel/plugin-syntax-import-attributes": "^7.24.7", 1639 | "@babel/plugin-syntax-import-meta": "^7.10.4", 1640 | "@babel/plugin-syntax-json-strings": "^7.8.3", 1641 | "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", 1642 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", 1643 | "@babel/plugin-syntax-numeric-separator": "^7.10.4", 1644 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3", 1645 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", 1646 | "@babel/plugin-syntax-optional-chaining": "^7.8.3", 1647 | "@babel/plugin-syntax-private-property-in-object": "^7.14.5", 1648 | "@babel/plugin-syntax-top-level-await": "^7.14.5", 1649 | "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", 1650 | "@babel/plugin-transform-arrow-functions": "^7.24.7", 1651 | "@babel/plugin-transform-async-generator-functions": "^7.25.4", 1652 | "@babel/plugin-transform-async-to-generator": "^7.24.7", 1653 | "@babel/plugin-transform-block-scoped-functions": "^7.24.7", 1654 | "@babel/plugin-transform-block-scoping": "^7.25.0", 1655 | "@babel/plugin-transform-class-properties": "^7.25.4", 1656 | "@babel/plugin-transform-class-static-block": "^7.24.7", 1657 | "@babel/plugin-transform-classes": "^7.25.4", 1658 | "@babel/plugin-transform-computed-properties": "^7.24.7", 1659 | "@babel/plugin-transform-destructuring": "^7.24.8", 1660 | "@babel/plugin-transform-dotall-regex": "^7.24.7", 1661 | "@babel/plugin-transform-duplicate-keys": "^7.24.7", 1662 | "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", 1663 | "@babel/plugin-transform-dynamic-import": "^7.24.7", 1664 | "@babel/plugin-transform-exponentiation-operator": "^7.24.7", 1665 | "@babel/plugin-transform-export-namespace-from": "^7.24.7", 1666 | "@babel/plugin-transform-for-of": "^7.24.7", 1667 | "@babel/plugin-transform-function-name": "^7.25.1", 1668 | "@babel/plugin-transform-json-strings": "^7.24.7", 1669 | "@babel/plugin-transform-literals": "^7.25.2", 1670 | "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", 1671 | "@babel/plugin-transform-member-expression-literals": "^7.24.7", 1672 | "@babel/plugin-transform-modules-amd": "^7.24.7", 1673 | "@babel/plugin-transform-modules-commonjs": "^7.24.8", 1674 | "@babel/plugin-transform-modules-systemjs": "^7.25.0", 1675 | "@babel/plugin-transform-modules-umd": "^7.24.7", 1676 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", 1677 | "@babel/plugin-transform-new-target": "^7.24.7", 1678 | "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", 1679 | "@babel/plugin-transform-numeric-separator": "^7.24.7", 1680 | "@babel/plugin-transform-object-rest-spread": "^7.24.7", 1681 | "@babel/plugin-transform-object-super": "^7.24.7", 1682 | "@babel/plugin-transform-optional-catch-binding": "^7.24.7", 1683 | "@babel/plugin-transform-optional-chaining": "^7.24.8", 1684 | "@babel/plugin-transform-parameters": "^7.24.7", 1685 | "@babel/plugin-transform-private-methods": "^7.25.4", 1686 | "@babel/plugin-transform-private-property-in-object": "^7.24.7", 1687 | "@babel/plugin-transform-property-literals": "^7.24.7", 1688 | "@babel/plugin-transform-regenerator": "^7.24.7", 1689 | "@babel/plugin-transform-reserved-words": "^7.24.7", 1690 | "@babel/plugin-transform-shorthand-properties": "^7.24.7", 1691 | "@babel/plugin-transform-spread": "^7.24.7", 1692 | "@babel/plugin-transform-sticky-regex": "^7.24.7", 1693 | "@babel/plugin-transform-template-literals": "^7.24.7", 1694 | "@babel/plugin-transform-typeof-symbol": "^7.24.8", 1695 | "@babel/plugin-transform-unicode-escapes": "^7.24.7", 1696 | "@babel/plugin-transform-unicode-property-regex": "^7.24.7", 1697 | "@babel/plugin-transform-unicode-regex": "^7.24.7", 1698 | "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", 1699 | "@babel/preset-modules": "0.1.6-no-external-plugins", 1700 | "babel-plugin-polyfill-corejs2": "^0.4.10", 1701 | "babel-plugin-polyfill-corejs3": "^0.10.6", 1702 | "babel-plugin-polyfill-regenerator": "^0.6.1", 1703 | "core-js-compat": "^3.37.1", 1704 | "semver": "^6.3.1" 1705 | }, 1706 | "engines": { 1707 | "node": ">=6.9.0" 1708 | }, 1709 | "peerDependencies": { 1710 | "@babel/core": "^7.0.0-0" 1711 | } 1712 | }, 1713 | "node_modules/@babel/preset-modules": { 1714 | "version": "0.1.6-no-external-plugins", 1715 | "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", 1716 | "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", 1717 | "dev": true, 1718 | "license": "MIT", 1719 | "dependencies": { 1720 | "@babel/helper-plugin-utils": "^7.0.0", 1721 | "@babel/types": "^7.4.4", 1722 | "esutils": "^2.0.2" 1723 | }, 1724 | "peerDependencies": { 1725 | "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" 1726 | } 1727 | }, 1728 | "node_modules/@babel/regjsgen": { 1729 | "version": "0.8.0", 1730 | "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz", 1731 | "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", 1732 | "dev": true, 1733 | "license": "MIT" 1734 | }, 1735 | "node_modules/@babel/runtime": { 1736 | "version": "7.25.6", 1737 | "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.6.tgz", 1738 | "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", 1739 | "dev": true, 1740 | "license": "MIT", 1741 | "dependencies": { 1742 | "regenerator-runtime": "^0.14.0" 1743 | }, 1744 | "engines": { 1745 | "node": ">=6.9.0" 1746 | } 1747 | }, 1748 | "node_modules/@babel/template": { 1749 | "version": "7.25.0", 1750 | "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.0.tgz", 1751 | "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", 1752 | "dev": true, 1753 | "license": "MIT", 1754 | "dependencies": { 1755 | "@babel/code-frame": "^7.24.7", 1756 | "@babel/parser": "^7.25.0", 1757 | "@babel/types": "^7.25.0" 1758 | }, 1759 | "engines": { 1760 | "node": ">=6.9.0" 1761 | } 1762 | }, 1763 | "node_modules/@babel/traverse": { 1764 | "version": "7.25.6", 1765 | "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.6.tgz", 1766 | "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", 1767 | "dev": true, 1768 | "license": "MIT", 1769 | "dependencies": { 1770 | "@babel/code-frame": "^7.24.7", 1771 | "@babel/generator": "^7.25.6", 1772 | "@babel/parser": "^7.25.6", 1773 | "@babel/template": "^7.25.0", 1774 | "@babel/types": "^7.25.6", 1775 | "debug": "^4.3.1", 1776 | "globals": "^11.1.0" 1777 | }, 1778 | "engines": { 1779 | "node": ">=6.9.0" 1780 | } 1781 | }, 1782 | "node_modules/@babel/types": { 1783 | "version": "7.25.6", 1784 | "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.6.tgz", 1785 | "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", 1786 | "dev": true, 1787 | "license": "MIT", 1788 | "dependencies": { 1789 | "@babel/helper-string-parser": "^7.24.8", 1790 | "@babel/helper-validator-identifier": "^7.24.7", 1791 | "to-fast-properties": "^2.0.0" 1792 | }, 1793 | "engines": { 1794 | "node": ">=6.9.0" 1795 | } 1796 | }, 1797 | "node_modules/@esbuild/aix-ppc64": { 1798 | "version": "0.24.0", 1799 | "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", 1800 | "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", 1801 | "cpu": [ 1802 | "ppc64" 1803 | ], 1804 | "dev": true, 1805 | "license": "MIT", 1806 | "optional": true, 1807 | "os": [ 1808 | "aix" 1809 | ], 1810 | "peer": true, 1811 | "engines": { 1812 | "node": ">=18" 1813 | } 1814 | }, 1815 | "node_modules/@esbuild/android-arm": { 1816 | "version": "0.24.0", 1817 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz", 1818 | "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", 1819 | "cpu": [ 1820 | "arm" 1821 | ], 1822 | "dev": true, 1823 | "license": "MIT", 1824 | "optional": true, 1825 | "os": [ 1826 | "android" 1827 | ], 1828 | "peer": true, 1829 | "engines": { 1830 | "node": ">=18" 1831 | } 1832 | }, 1833 | "node_modules/@esbuild/android-arm64": { 1834 | "version": "0.24.0", 1835 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", 1836 | "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", 1837 | "cpu": [ 1838 | "arm64" 1839 | ], 1840 | "dev": true, 1841 | "license": "MIT", 1842 | "optional": true, 1843 | "os": [ 1844 | "android" 1845 | ], 1846 | "peer": true, 1847 | "engines": { 1848 | "node": ">=18" 1849 | } 1850 | }, 1851 | "node_modules/@esbuild/android-x64": { 1852 | "version": "0.24.0", 1853 | "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz", 1854 | "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", 1855 | "cpu": [ 1856 | "x64" 1857 | ], 1858 | "dev": true, 1859 | "license": "MIT", 1860 | "optional": true, 1861 | "os": [ 1862 | "android" 1863 | ], 1864 | "peer": true, 1865 | "engines": { 1866 | "node": ">=18" 1867 | } 1868 | }, 1869 | "node_modules/@esbuild/darwin-arm64": { 1870 | "version": "0.24.0", 1871 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", 1872 | "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", 1873 | "cpu": [ 1874 | "arm64" 1875 | ], 1876 | "dev": true, 1877 | "license": "MIT", 1878 | "optional": true, 1879 | "os": [ 1880 | "darwin" 1881 | ], 1882 | "peer": true, 1883 | "engines": { 1884 | "node": ">=18" 1885 | } 1886 | }, 1887 | "node_modules/@esbuild/darwin-x64": { 1888 | "version": "0.24.0", 1889 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", 1890 | "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", 1891 | "cpu": [ 1892 | "x64" 1893 | ], 1894 | "dev": true, 1895 | "license": "MIT", 1896 | "optional": true, 1897 | "os": [ 1898 | "darwin" 1899 | ], 1900 | "peer": true, 1901 | "engines": { 1902 | "node": ">=18" 1903 | } 1904 | }, 1905 | "node_modules/@esbuild/freebsd-arm64": { 1906 | "version": "0.24.0", 1907 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", 1908 | "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", 1909 | "cpu": [ 1910 | "arm64" 1911 | ], 1912 | "dev": true, 1913 | "license": "MIT", 1914 | "optional": true, 1915 | "os": [ 1916 | "freebsd" 1917 | ], 1918 | "peer": true, 1919 | "engines": { 1920 | "node": ">=18" 1921 | } 1922 | }, 1923 | "node_modules/@esbuild/freebsd-x64": { 1924 | "version": "0.24.0", 1925 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", 1926 | "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", 1927 | "cpu": [ 1928 | "x64" 1929 | ], 1930 | "dev": true, 1931 | "license": "MIT", 1932 | "optional": true, 1933 | "os": [ 1934 | "freebsd" 1935 | ], 1936 | "peer": true, 1937 | "engines": { 1938 | "node": ">=18" 1939 | } 1940 | }, 1941 | "node_modules/@esbuild/linux-arm": { 1942 | "version": "0.24.0", 1943 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", 1944 | "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", 1945 | "cpu": [ 1946 | "arm" 1947 | ], 1948 | "dev": true, 1949 | "license": "MIT", 1950 | "optional": true, 1951 | "os": [ 1952 | "linux" 1953 | ], 1954 | "peer": true, 1955 | "engines": { 1956 | "node": ">=18" 1957 | } 1958 | }, 1959 | "node_modules/@esbuild/linux-arm64": { 1960 | "version": "0.24.0", 1961 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", 1962 | "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", 1963 | "cpu": [ 1964 | "arm64" 1965 | ], 1966 | "dev": true, 1967 | "license": "MIT", 1968 | "optional": true, 1969 | "os": [ 1970 | "linux" 1971 | ], 1972 | "peer": true, 1973 | "engines": { 1974 | "node": ">=18" 1975 | } 1976 | }, 1977 | "node_modules/@esbuild/linux-ia32": { 1978 | "version": "0.24.0", 1979 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", 1980 | "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", 1981 | "cpu": [ 1982 | "ia32" 1983 | ], 1984 | "dev": true, 1985 | "license": "MIT", 1986 | "optional": true, 1987 | "os": [ 1988 | "linux" 1989 | ], 1990 | "peer": true, 1991 | "engines": { 1992 | "node": ">=18" 1993 | } 1994 | }, 1995 | "node_modules/@esbuild/linux-loong64": { 1996 | "version": "0.24.0", 1997 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", 1998 | "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", 1999 | "cpu": [ 2000 | "loong64" 2001 | ], 2002 | "dev": true, 2003 | "license": "MIT", 2004 | "optional": true, 2005 | "os": [ 2006 | "linux" 2007 | ], 2008 | "peer": true, 2009 | "engines": { 2010 | "node": ">=18" 2011 | } 2012 | }, 2013 | "node_modules/@esbuild/linux-mips64el": { 2014 | "version": "0.24.0", 2015 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", 2016 | "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", 2017 | "cpu": [ 2018 | "mips64el" 2019 | ], 2020 | "dev": true, 2021 | "license": "MIT", 2022 | "optional": true, 2023 | "os": [ 2024 | "linux" 2025 | ], 2026 | "peer": true, 2027 | "engines": { 2028 | "node": ">=18" 2029 | } 2030 | }, 2031 | "node_modules/@esbuild/linux-ppc64": { 2032 | "version": "0.24.0", 2033 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", 2034 | "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", 2035 | "cpu": [ 2036 | "ppc64" 2037 | ], 2038 | "dev": true, 2039 | "license": "MIT", 2040 | "optional": true, 2041 | "os": [ 2042 | "linux" 2043 | ], 2044 | "peer": true, 2045 | "engines": { 2046 | "node": ">=18" 2047 | } 2048 | }, 2049 | "node_modules/@esbuild/linux-riscv64": { 2050 | "version": "0.24.0", 2051 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", 2052 | "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", 2053 | "cpu": [ 2054 | "riscv64" 2055 | ], 2056 | "dev": true, 2057 | "license": "MIT", 2058 | "optional": true, 2059 | "os": [ 2060 | "linux" 2061 | ], 2062 | "peer": true, 2063 | "engines": { 2064 | "node": ">=18" 2065 | } 2066 | }, 2067 | "node_modules/@esbuild/linux-s390x": { 2068 | "version": "0.24.0", 2069 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", 2070 | "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", 2071 | "cpu": [ 2072 | "s390x" 2073 | ], 2074 | "dev": true, 2075 | "license": "MIT", 2076 | "optional": true, 2077 | "os": [ 2078 | "linux" 2079 | ], 2080 | "peer": true, 2081 | "engines": { 2082 | "node": ">=18" 2083 | } 2084 | }, 2085 | "node_modules/@esbuild/linux-x64": { 2086 | "version": "0.24.0", 2087 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", 2088 | "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", 2089 | "cpu": [ 2090 | "x64" 2091 | ], 2092 | "dev": true, 2093 | "license": "MIT", 2094 | "optional": true, 2095 | "os": [ 2096 | "linux" 2097 | ], 2098 | "peer": true, 2099 | "engines": { 2100 | "node": ">=18" 2101 | } 2102 | }, 2103 | "node_modules/@esbuild/netbsd-x64": { 2104 | "version": "0.24.0", 2105 | "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", 2106 | "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", 2107 | "cpu": [ 2108 | "x64" 2109 | ], 2110 | "dev": true, 2111 | "license": "MIT", 2112 | "optional": true, 2113 | "os": [ 2114 | "netbsd" 2115 | ], 2116 | "peer": true, 2117 | "engines": { 2118 | "node": ">=18" 2119 | } 2120 | }, 2121 | "node_modules/@esbuild/openbsd-arm64": { 2122 | "version": "0.24.0", 2123 | "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", 2124 | "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", 2125 | "cpu": [ 2126 | "arm64" 2127 | ], 2128 | "dev": true, 2129 | "license": "MIT", 2130 | "optional": true, 2131 | "os": [ 2132 | "openbsd" 2133 | ], 2134 | "peer": true, 2135 | "engines": { 2136 | "node": ">=18" 2137 | } 2138 | }, 2139 | "node_modules/@esbuild/openbsd-x64": { 2140 | "version": "0.24.0", 2141 | "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", 2142 | "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", 2143 | "cpu": [ 2144 | "x64" 2145 | ], 2146 | "dev": true, 2147 | "license": "MIT", 2148 | "optional": true, 2149 | "os": [ 2150 | "openbsd" 2151 | ], 2152 | "peer": true, 2153 | "engines": { 2154 | "node": ">=18" 2155 | } 2156 | }, 2157 | "node_modules/@esbuild/sunos-x64": { 2158 | "version": "0.24.0", 2159 | "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", 2160 | "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", 2161 | "cpu": [ 2162 | "x64" 2163 | ], 2164 | "dev": true, 2165 | "license": "MIT", 2166 | "optional": true, 2167 | "os": [ 2168 | "sunos" 2169 | ], 2170 | "peer": true, 2171 | "engines": { 2172 | "node": ">=18" 2173 | } 2174 | }, 2175 | "node_modules/@esbuild/win32-arm64": { 2176 | "version": "0.24.0", 2177 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", 2178 | "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", 2179 | "cpu": [ 2180 | "arm64" 2181 | ], 2182 | "dev": true, 2183 | "license": "MIT", 2184 | "optional": true, 2185 | "os": [ 2186 | "win32" 2187 | ], 2188 | "peer": true, 2189 | "engines": { 2190 | "node": ">=18" 2191 | } 2192 | }, 2193 | "node_modules/@esbuild/win32-ia32": { 2194 | "version": "0.24.0", 2195 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", 2196 | "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", 2197 | "cpu": [ 2198 | "ia32" 2199 | ], 2200 | "dev": true, 2201 | "license": "MIT", 2202 | "optional": true, 2203 | "os": [ 2204 | "win32" 2205 | ], 2206 | "peer": true, 2207 | "engines": { 2208 | "node": ">=18" 2209 | } 2210 | }, 2211 | "node_modules/@esbuild/win32-x64": { 2212 | "version": "0.24.0", 2213 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", 2214 | "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", 2215 | "cpu": [ 2216 | "x64" 2217 | ], 2218 | "dev": true, 2219 | "license": "MIT", 2220 | "optional": true, 2221 | "os": [ 2222 | "win32" 2223 | ], 2224 | "peer": true, 2225 | "engines": { 2226 | "node": ">=18" 2227 | } 2228 | }, 2229 | "node_modules/@jridgewell/gen-mapping": { 2230 | "version": "0.3.5", 2231 | "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 2232 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 2233 | "dev": true, 2234 | "license": "MIT", 2235 | "dependencies": { 2236 | "@jridgewell/set-array": "^1.2.1", 2237 | "@jridgewell/sourcemap-codec": "^1.4.10", 2238 | "@jridgewell/trace-mapping": "^0.3.24" 2239 | }, 2240 | "engines": { 2241 | "node": ">=6.0.0" 2242 | } 2243 | }, 2244 | "node_modules/@jridgewell/resolve-uri": { 2245 | "version": "3.1.2", 2246 | "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 2247 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 2248 | "dev": true, 2249 | "license": "MIT", 2250 | "engines": { 2251 | "node": ">=6.0.0" 2252 | } 2253 | }, 2254 | "node_modules/@jridgewell/set-array": { 2255 | "version": "1.2.1", 2256 | "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz", 2257 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 2258 | "dev": true, 2259 | "license": "MIT", 2260 | "engines": { 2261 | "node": ">=6.0.0" 2262 | } 2263 | }, 2264 | "node_modules/@jridgewell/sourcemap-codec": { 2265 | "version": "1.5.0", 2266 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 2267 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 2268 | "dev": true, 2269 | "license": "MIT" 2270 | }, 2271 | "node_modules/@jridgewell/trace-mapping": { 2272 | "version": "0.3.25", 2273 | "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 2274 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 2275 | "dev": true, 2276 | "license": "MIT", 2277 | "dependencies": { 2278 | "@jridgewell/resolve-uri": "^3.1.0", 2279 | "@jridgewell/sourcemap-codec": "^1.4.14" 2280 | } 2281 | }, 2282 | "node_modules/@rollup/pluginutils": { 2283 | "version": "5.1.2", 2284 | "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", 2285 | "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", 2286 | "dev": true, 2287 | "license": "MIT", 2288 | "dependencies": { 2289 | "@types/estree": "^1.0.0", 2290 | "estree-walker": "^2.0.2", 2291 | "picomatch": "^2.3.1" 2292 | }, 2293 | "engines": { 2294 | "node": ">=14.0.0" 2295 | }, 2296 | "peerDependencies": { 2297 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 2298 | }, 2299 | "peerDependenciesMeta": { 2300 | "rollup": { 2301 | "optional": true 2302 | } 2303 | } 2304 | }, 2305 | "node_modules/@types/estree": { 2306 | "version": "1.0.6", 2307 | "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", 2308 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 2309 | "dev": true, 2310 | "license": "MIT" 2311 | }, 2312 | "node_modules/ansi-styles": { 2313 | "version": "3.2.1", 2314 | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", 2315 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2316 | "dev": true, 2317 | "license": "MIT", 2318 | "dependencies": { 2319 | "color-convert": "^1.9.0" 2320 | }, 2321 | "engines": { 2322 | "node": ">=4" 2323 | } 2324 | }, 2325 | "node_modules/babel-plugin-polyfill-corejs2": { 2326 | "version": "0.4.11", 2327 | "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", 2328 | "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", 2329 | "dev": true, 2330 | "license": "MIT", 2331 | "dependencies": { 2332 | "@babel/compat-data": "^7.22.6", 2333 | "@babel/helper-define-polyfill-provider": "^0.6.2", 2334 | "semver": "^6.3.1" 2335 | }, 2336 | "peerDependencies": { 2337 | "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" 2338 | } 2339 | }, 2340 | "node_modules/babel-plugin-polyfill-corejs3": { 2341 | "version": "0.10.6", 2342 | "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", 2343 | "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", 2344 | "dev": true, 2345 | "license": "MIT", 2346 | "dependencies": { 2347 | "@babel/helper-define-polyfill-provider": "^0.6.2", 2348 | "core-js-compat": "^3.38.0" 2349 | }, 2350 | "peerDependencies": { 2351 | "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" 2352 | } 2353 | }, 2354 | "node_modules/babel-plugin-polyfill-regenerator": { 2355 | "version": "0.6.2", 2356 | "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", 2357 | "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", 2358 | "dev": true, 2359 | "license": "MIT", 2360 | "dependencies": { 2361 | "@babel/helper-define-polyfill-provider": "^0.6.2" 2362 | }, 2363 | "peerDependencies": { 2364 | "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" 2365 | } 2366 | }, 2367 | "node_modules/browserslist": { 2368 | "version": "4.24.0", 2369 | "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.0.tgz", 2370 | "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", 2371 | "dev": true, 2372 | "funding": [ 2373 | { 2374 | "type": "opencollective", 2375 | "url": "https://opencollective.com/browserslist" 2376 | }, 2377 | { 2378 | "type": "tidelift", 2379 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2380 | }, 2381 | { 2382 | "type": "github", 2383 | "url": "https://github.com/sponsors/ai" 2384 | } 2385 | ], 2386 | "license": "MIT", 2387 | "dependencies": { 2388 | "caniuse-lite": "^1.0.30001663", 2389 | "electron-to-chromium": "^1.5.28", 2390 | "node-releases": "^2.0.18", 2391 | "update-browserslist-db": "^1.1.0" 2392 | }, 2393 | "bin": { 2394 | "browserslist": "cli.js" 2395 | }, 2396 | "engines": { 2397 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 2398 | } 2399 | }, 2400 | "node_modules/caniuse-lite": { 2401 | "version": "1.0.30001664", 2402 | "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", 2403 | "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", 2404 | "dev": true, 2405 | "funding": [ 2406 | { 2407 | "type": "opencollective", 2408 | "url": "https://opencollective.com/browserslist" 2409 | }, 2410 | { 2411 | "type": "tidelift", 2412 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 2413 | }, 2414 | { 2415 | "type": "github", 2416 | "url": "https://github.com/sponsors/ai" 2417 | } 2418 | ], 2419 | "license": "CC-BY-4.0" 2420 | }, 2421 | "node_modules/chalk": { 2422 | "version": "2.4.2", 2423 | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", 2424 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2425 | "dev": true, 2426 | "license": "MIT", 2427 | "dependencies": { 2428 | "ansi-styles": "^3.2.1", 2429 | "escape-string-regexp": "^1.0.5", 2430 | "supports-color": "^5.3.0" 2431 | }, 2432 | "engines": { 2433 | "node": ">=4" 2434 | } 2435 | }, 2436 | "node_modules/color-convert": { 2437 | "version": "1.9.3", 2438 | "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", 2439 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2440 | "dev": true, 2441 | "license": "MIT", 2442 | "dependencies": { 2443 | "color-name": "1.1.3" 2444 | } 2445 | }, 2446 | "node_modules/color-name": { 2447 | "version": "1.1.3", 2448 | "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", 2449 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 2450 | "dev": true, 2451 | "license": "MIT" 2452 | }, 2453 | "node_modules/convert-source-map": { 2454 | "version": "2.0.0", 2455 | "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", 2456 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 2457 | "dev": true, 2458 | "license": "MIT" 2459 | }, 2460 | "node_modules/core-js-compat": { 2461 | "version": "3.38.1", 2462 | "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.38.1.tgz", 2463 | "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", 2464 | "dev": true, 2465 | "license": "MIT", 2466 | "dependencies": { 2467 | "browserslist": "^4.23.3" 2468 | }, 2469 | "funding": { 2470 | "type": "opencollective", 2471 | "url": "https://opencollective.com/core-js" 2472 | } 2473 | }, 2474 | "node_modules/cross-fetch": { 2475 | "version": "4.0.0", 2476 | "resolved": "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-4.0.0.tgz", 2477 | "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", 2478 | "license": "MIT", 2479 | "dependencies": { 2480 | "node-fetch": "^2.6.12" 2481 | } 2482 | }, 2483 | "node_modules/debug": { 2484 | "version": "4.3.7", 2485 | "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", 2486 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", 2487 | "dev": true, 2488 | "license": "MIT", 2489 | "dependencies": { 2490 | "ms": "^2.1.3" 2491 | }, 2492 | "engines": { 2493 | "node": ">=6.0" 2494 | }, 2495 | "peerDependenciesMeta": { 2496 | "supports-color": { 2497 | "optional": true 2498 | } 2499 | } 2500 | }, 2501 | "node_modules/electron-to-chromium": { 2502 | "version": "1.5.29", 2503 | "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", 2504 | "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", 2505 | "dev": true, 2506 | "license": "ISC" 2507 | }, 2508 | "node_modules/es-module-lexer": { 2509 | "version": "1.5.4", 2510 | "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz", 2511 | "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", 2512 | "dev": true, 2513 | "license": "MIT" 2514 | }, 2515 | "node_modules/esbuild": { 2516 | "version": "0.24.0", 2517 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.0.tgz", 2518 | "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", 2519 | "dev": true, 2520 | "hasInstallScript": true, 2521 | "license": "MIT", 2522 | "peer": true, 2523 | "bin": { 2524 | "esbuild": "bin/esbuild" 2525 | }, 2526 | "engines": { 2527 | "node": ">=18" 2528 | }, 2529 | "optionalDependencies": { 2530 | "@esbuild/aix-ppc64": "0.24.0", 2531 | "@esbuild/android-arm": "0.24.0", 2532 | "@esbuild/android-arm64": "0.24.0", 2533 | "@esbuild/android-x64": "0.24.0", 2534 | "@esbuild/darwin-arm64": "0.24.0", 2535 | "@esbuild/darwin-x64": "0.24.0", 2536 | "@esbuild/freebsd-arm64": "0.24.0", 2537 | "@esbuild/freebsd-x64": "0.24.0", 2538 | "@esbuild/linux-arm": "0.24.0", 2539 | "@esbuild/linux-arm64": "0.24.0", 2540 | "@esbuild/linux-ia32": "0.24.0", 2541 | "@esbuild/linux-loong64": "0.24.0", 2542 | "@esbuild/linux-mips64el": "0.24.0", 2543 | "@esbuild/linux-ppc64": "0.24.0", 2544 | "@esbuild/linux-riscv64": "0.24.0", 2545 | "@esbuild/linux-s390x": "0.24.0", 2546 | "@esbuild/linux-x64": "0.24.0", 2547 | "@esbuild/netbsd-x64": "0.24.0", 2548 | "@esbuild/openbsd-arm64": "0.24.0", 2549 | "@esbuild/openbsd-x64": "0.24.0", 2550 | "@esbuild/sunos-x64": "0.24.0", 2551 | "@esbuild/win32-arm64": "0.24.0", 2552 | "@esbuild/win32-ia32": "0.24.0", 2553 | "@esbuild/win32-x64": "0.24.0" 2554 | } 2555 | }, 2556 | "node_modules/escalade": { 2557 | "version": "3.2.0", 2558 | "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", 2559 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 2560 | "dev": true, 2561 | "license": "MIT", 2562 | "engines": { 2563 | "node": ">=6" 2564 | } 2565 | }, 2566 | "node_modules/escape-string-regexp": { 2567 | "version": "1.0.5", 2568 | "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2569 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2570 | "dev": true, 2571 | "license": "MIT", 2572 | "engines": { 2573 | "node": ">=0.8.0" 2574 | } 2575 | }, 2576 | "node_modules/estree-walker": { 2577 | "version": "2.0.2", 2578 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", 2579 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 2580 | "dev": true, 2581 | "license": "MIT" 2582 | }, 2583 | "node_modules/esutils": { 2584 | "version": "2.0.3", 2585 | "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", 2586 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2587 | "dev": true, 2588 | "license": "BSD-2-Clause", 2589 | "engines": { 2590 | "node": ">=0.10.0" 2591 | } 2592 | }, 2593 | "node_modules/fsevents": { 2594 | "version": "2.3.3", 2595 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", 2596 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2597 | "dev": true, 2598 | "hasInstallScript": true, 2599 | "license": "MIT", 2600 | "optional": true, 2601 | "os": [ 2602 | "darwin" 2603 | ], 2604 | "engines": { 2605 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2606 | } 2607 | }, 2608 | "node_modules/function-bind": { 2609 | "version": "1.1.2", 2610 | "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", 2611 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2612 | "dev": true, 2613 | "license": "MIT", 2614 | "funding": { 2615 | "url": "https://github.com/sponsors/ljharb" 2616 | } 2617 | }, 2618 | "node_modules/gensync": { 2619 | "version": "1.0.0-beta.2", 2620 | "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", 2621 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2622 | "dev": true, 2623 | "license": "MIT", 2624 | "engines": { 2625 | "node": ">=6.9.0" 2626 | } 2627 | }, 2628 | "node_modules/get-tsconfig": { 2629 | "version": "4.8.1", 2630 | "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz", 2631 | "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", 2632 | "dev": true, 2633 | "license": "MIT", 2634 | "dependencies": { 2635 | "resolve-pkg-maps": "^1.0.0" 2636 | }, 2637 | "funding": { 2638 | "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 2639 | } 2640 | }, 2641 | "node_modules/globals": { 2642 | "version": "11.12.0", 2643 | "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", 2644 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2645 | "dev": true, 2646 | "license": "MIT", 2647 | "engines": { 2648 | "node": ">=4" 2649 | } 2650 | }, 2651 | "node_modules/has-flag": { 2652 | "version": "3.0.0", 2653 | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", 2654 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2655 | "dev": true, 2656 | "license": "MIT", 2657 | "engines": { 2658 | "node": ">=4" 2659 | } 2660 | }, 2661 | "node_modules/hasown": { 2662 | "version": "2.0.2", 2663 | "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", 2664 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2665 | "dev": true, 2666 | "license": "MIT", 2667 | "dependencies": { 2668 | "function-bind": "^1.1.2" 2669 | }, 2670 | "engines": { 2671 | "node": ">= 0.4" 2672 | } 2673 | }, 2674 | "node_modules/is-core-module": { 2675 | "version": "2.15.1", 2676 | "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz", 2677 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", 2678 | "dev": true, 2679 | "license": "MIT", 2680 | "dependencies": { 2681 | "hasown": "^2.0.2" 2682 | }, 2683 | "engines": { 2684 | "node": ">= 0.4" 2685 | }, 2686 | "funding": { 2687 | "url": "https://github.com/sponsors/ljharb" 2688 | } 2689 | }, 2690 | "node_modules/js-tokens": { 2691 | "version": "4.0.0", 2692 | "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", 2693 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2694 | "dev": true, 2695 | "license": "MIT" 2696 | }, 2697 | "node_modules/jsesc": { 2698 | "version": "2.5.2", 2699 | "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", 2700 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2701 | "dev": true, 2702 | "license": "MIT", 2703 | "bin": { 2704 | "jsesc": "bin/jsesc" 2705 | }, 2706 | "engines": { 2707 | "node": ">=4" 2708 | } 2709 | }, 2710 | "node_modules/json5": { 2711 | "version": "2.2.3", 2712 | "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", 2713 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 2714 | "dev": true, 2715 | "license": "MIT", 2716 | "bin": { 2717 | "json5": "lib/cli.js" 2718 | }, 2719 | "engines": { 2720 | "node": ">=6" 2721 | } 2722 | }, 2723 | "node_modules/lodash.debounce": { 2724 | "version": "4.0.8", 2725 | "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 2726 | "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", 2727 | "dev": true, 2728 | "license": "MIT" 2729 | }, 2730 | "node_modules/lru-cache": { 2731 | "version": "5.1.1", 2732 | "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", 2733 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2734 | "dev": true, 2735 | "license": "ISC", 2736 | "dependencies": { 2737 | "yallist": "^3.0.2" 2738 | } 2739 | }, 2740 | "node_modules/ms": { 2741 | "version": "2.1.3", 2742 | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", 2743 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2744 | "dev": true, 2745 | "license": "MIT" 2746 | }, 2747 | "node_modules/node-fetch": { 2748 | "version": "2.7.0", 2749 | "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", 2750 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 2751 | "license": "MIT", 2752 | "dependencies": { 2753 | "whatwg-url": "^5.0.0" 2754 | }, 2755 | "engines": { 2756 | "node": "4.x || >=6.0.0" 2757 | }, 2758 | "peerDependencies": { 2759 | "encoding": "^0.1.0" 2760 | }, 2761 | "peerDependenciesMeta": { 2762 | "encoding": { 2763 | "optional": true 2764 | } 2765 | } 2766 | }, 2767 | "node_modules/node-releases": { 2768 | "version": "2.0.18", 2769 | "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz", 2770 | "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", 2771 | "dev": true, 2772 | "license": "MIT" 2773 | }, 2774 | "node_modules/path-parse": { 2775 | "version": "1.0.7", 2776 | "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", 2777 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2778 | "dev": true, 2779 | "license": "MIT" 2780 | }, 2781 | "node_modules/picocolors": { 2782 | "version": "1.1.0", 2783 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.0.tgz", 2784 | "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", 2785 | "dev": true, 2786 | "license": "ISC" 2787 | }, 2788 | "node_modules/picomatch": { 2789 | "version": "2.3.1", 2790 | "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", 2791 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2792 | "dev": true, 2793 | "license": "MIT", 2794 | "engines": { 2795 | "node": ">=8.6" 2796 | }, 2797 | "funding": { 2798 | "url": "https://github.com/sponsors/jonschlinkert" 2799 | } 2800 | }, 2801 | "node_modules/regenerate": { 2802 | "version": "1.4.2", 2803 | "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", 2804 | "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", 2805 | "dev": true, 2806 | "license": "MIT" 2807 | }, 2808 | "node_modules/regenerate-unicode-properties": { 2809 | "version": "10.2.0", 2810 | "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", 2811 | "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", 2812 | "dev": true, 2813 | "license": "MIT", 2814 | "dependencies": { 2815 | "regenerate": "^1.4.2" 2816 | }, 2817 | "engines": { 2818 | "node": ">=4" 2819 | } 2820 | }, 2821 | "node_modules/regenerator-runtime": { 2822 | "version": "0.14.1", 2823 | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 2824 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 2825 | "dev": true, 2826 | "license": "MIT" 2827 | }, 2828 | "node_modules/regenerator-transform": { 2829 | "version": "0.15.2", 2830 | "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz", 2831 | "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", 2832 | "dev": true, 2833 | "license": "MIT", 2834 | "dependencies": { 2835 | "@babel/runtime": "^7.8.4" 2836 | } 2837 | }, 2838 | "node_modules/regexpu-core": { 2839 | "version": "5.3.2", 2840 | "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz", 2841 | "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", 2842 | "dev": true, 2843 | "license": "MIT", 2844 | "dependencies": { 2845 | "@babel/regjsgen": "^0.8.0", 2846 | "regenerate": "^1.4.2", 2847 | "regenerate-unicode-properties": "^10.1.0", 2848 | "regjsparser": "^0.9.1", 2849 | "unicode-match-property-ecmascript": "^2.0.0", 2850 | "unicode-match-property-value-ecmascript": "^2.1.0" 2851 | }, 2852 | "engines": { 2853 | "node": ">=4" 2854 | } 2855 | }, 2856 | "node_modules/regjsparser": { 2857 | "version": "0.9.1", 2858 | "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", 2859 | "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", 2860 | "dev": true, 2861 | "license": "BSD-2-Clause", 2862 | "dependencies": { 2863 | "jsesc": "~0.5.0" 2864 | }, 2865 | "bin": { 2866 | "regjsparser": "bin/parser" 2867 | } 2868 | }, 2869 | "node_modules/regjsparser/node_modules/jsesc": { 2870 | "version": "0.5.0", 2871 | "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", 2872 | "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", 2873 | "dev": true, 2874 | "bin": { 2875 | "jsesc": "bin/jsesc" 2876 | } 2877 | }, 2878 | "node_modules/resolve": { 2879 | "version": "1.22.8", 2880 | "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", 2881 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 2882 | "dev": true, 2883 | "license": "MIT", 2884 | "dependencies": { 2885 | "is-core-module": "^2.13.0", 2886 | "path-parse": "^1.0.7", 2887 | "supports-preserve-symlinks-flag": "^1.0.0" 2888 | }, 2889 | "bin": { 2890 | "resolve": "bin/resolve" 2891 | }, 2892 | "funding": { 2893 | "url": "https://github.com/sponsors/ljharb" 2894 | } 2895 | }, 2896 | "node_modules/resolve-pkg-maps": { 2897 | "version": "1.0.0", 2898 | "resolved": "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 2899 | "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 2900 | "dev": true, 2901 | "license": "MIT", 2902 | "funding": { 2903 | "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 2904 | } 2905 | }, 2906 | "node_modules/rollup": { 2907 | "version": "3.29.5", 2908 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz", 2909 | "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", 2910 | "dev": true, 2911 | "license": "MIT", 2912 | "bin": { 2913 | "rollup": "dist/bin/rollup" 2914 | }, 2915 | "engines": { 2916 | "node": ">=14.18.0", 2917 | "npm": ">=8.0.0" 2918 | }, 2919 | "optionalDependencies": { 2920 | "fsevents": "~2.3.2" 2921 | } 2922 | }, 2923 | "node_modules/rollup-plugin-esbuild": { 2924 | "version": "6.1.1", 2925 | "resolved": "https://registry.npmmirror.com/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.1.1.tgz", 2926 | "integrity": "sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==", 2927 | "dev": true, 2928 | "license": "MIT", 2929 | "dependencies": { 2930 | "@rollup/pluginutils": "^5.0.5", 2931 | "debug": "^4.3.4", 2932 | "es-module-lexer": "^1.3.1", 2933 | "get-tsconfig": "^4.7.2" 2934 | }, 2935 | "engines": { 2936 | "node": ">=14.18.0" 2937 | }, 2938 | "peerDependencies": { 2939 | "esbuild": ">=0.18.0", 2940 | "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" 2941 | } 2942 | }, 2943 | "node_modules/semver": { 2944 | "version": "6.3.1", 2945 | "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", 2946 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2947 | "dev": true, 2948 | "license": "ISC", 2949 | "bin": { 2950 | "semver": "bin/semver.js" 2951 | } 2952 | }, 2953 | "node_modules/supports-color": { 2954 | "version": "5.5.0", 2955 | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", 2956 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2957 | "dev": true, 2958 | "license": "MIT", 2959 | "dependencies": { 2960 | "has-flag": "^3.0.0" 2961 | }, 2962 | "engines": { 2963 | "node": ">=4" 2964 | } 2965 | }, 2966 | "node_modules/supports-preserve-symlinks-flag": { 2967 | "version": "1.0.0", 2968 | "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2969 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2970 | "dev": true, 2971 | "license": "MIT", 2972 | "engines": { 2973 | "node": ">= 0.4" 2974 | }, 2975 | "funding": { 2976 | "url": "https://github.com/sponsors/ljharb" 2977 | } 2978 | }, 2979 | "node_modules/to-fast-properties": { 2980 | "version": "2.0.0", 2981 | "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2982 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2983 | "dev": true, 2984 | "license": "MIT", 2985 | "engines": { 2986 | "node": ">=4" 2987 | } 2988 | }, 2989 | "node_modules/tr46": { 2990 | "version": "0.0.3", 2991 | "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", 2992 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 2993 | "license": "MIT" 2994 | }, 2995 | "node_modules/unicode-canonical-property-names-ecmascript": { 2996 | "version": "2.0.1", 2997 | "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", 2998 | "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", 2999 | "dev": true, 3000 | "license": "MIT", 3001 | "engines": { 3002 | "node": ">=4" 3003 | } 3004 | }, 3005 | "node_modules/unicode-match-property-ecmascript": { 3006 | "version": "2.0.0", 3007 | "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", 3008 | "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", 3009 | "dev": true, 3010 | "license": "MIT", 3011 | "dependencies": { 3012 | "unicode-canonical-property-names-ecmascript": "^2.0.0", 3013 | "unicode-property-aliases-ecmascript": "^2.0.0" 3014 | }, 3015 | "engines": { 3016 | "node": ">=4" 3017 | } 3018 | }, 3019 | "node_modules/unicode-match-property-value-ecmascript": { 3020 | "version": "2.2.0", 3021 | "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", 3022 | "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", 3023 | "dev": true, 3024 | "license": "MIT", 3025 | "engines": { 3026 | "node": ">=4" 3027 | } 3028 | }, 3029 | "node_modules/unicode-property-aliases-ecmascript": { 3030 | "version": "2.1.0", 3031 | "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", 3032 | "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", 3033 | "dev": true, 3034 | "license": "MIT", 3035 | "engines": { 3036 | "node": ">=4" 3037 | } 3038 | }, 3039 | "node_modules/update-browserslist-db": { 3040 | "version": "1.1.1", 3041 | "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 3042 | "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 3043 | "dev": true, 3044 | "funding": [ 3045 | { 3046 | "type": "opencollective", 3047 | "url": "https://opencollective.com/browserslist" 3048 | }, 3049 | { 3050 | "type": "tidelift", 3051 | "url": "https://tidelift.com/funding/github/npm/browserslist" 3052 | }, 3053 | { 3054 | "type": "github", 3055 | "url": "https://github.com/sponsors/ai" 3056 | } 3057 | ], 3058 | "license": "MIT", 3059 | "dependencies": { 3060 | "escalade": "^3.2.0", 3061 | "picocolors": "^1.1.0" 3062 | }, 3063 | "bin": { 3064 | "update-browserslist-db": "cli.js" 3065 | }, 3066 | "peerDependencies": { 3067 | "browserslist": ">= 4.21.0" 3068 | } 3069 | }, 3070 | "node_modules/webidl-conversions": { 3071 | "version": "3.0.1", 3072 | "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 3073 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 3074 | "license": "BSD-2-Clause" 3075 | }, 3076 | "node_modules/whatwg-url": { 3077 | "version": "5.0.0", 3078 | "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", 3079 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 3080 | "license": "MIT", 3081 | "dependencies": { 3082 | "tr46": "~0.0.3", 3083 | "webidl-conversions": "^3.0.0" 3084 | } 3085 | }, 3086 | "node_modules/yallist": { 3087 | "version": "3.1.1", 3088 | "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", 3089 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 3090 | "dev": true, 3091 | "license": "ISC" 3092 | } 3093 | } 3094 | } 3095 | -------------------------------------------------------------------------------- /npm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverchan-sdk", 3 | "version": "1.0.6", 4 | "main": "dist/index.cjs", 5 | "module": "dist/index.mjs", 6 | "types": "./dist/index.d.ts", 7 | "exports": { 8 | "require": "./dist/index.cjs", 9 | "import": "./dist/index.mjs", 10 | "types": "./dist/index.d.ts" 11 | }, 12 | "type": "module", 13 | "scripts": { 14 | "build": "cp src/index.d.ts dist/ && rollup -c" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "^7.0.0", 18 | "@babel/preset-env": "^7.0.0", 19 | "rollup": "^3.29.5", 20 | "rollup-plugin-esbuild": "^6.1.1" 21 | }, 22 | "dependencies": { 23 | "cross-fetch": "^4.0.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /npm/publish.sh: -------------------------------------------------------------------------------- 1 | npm run build && npm publish --registry=https://registry.npmjs.org/ -------------------------------------------------------------------------------- /npm/rollup.config.js: -------------------------------------------------------------------------------- 1 | import esbuild from 'rollup-plugin-esbuild'; 2 | 3 | export default { 4 | input: 'src/index.js', 5 | output: [ 6 | { 7 | file: 'dist/index.cjs', 8 | format: 'cjs' 9 | }, 10 | { 11 | file: 'dist/index.mjs', 12 | format: 'esm' 13 | } 14 | ], 15 | external: ['cross-fetch'], 16 | plugins: [ 17 | esbuild({ 18 | minify: true, // 开启压缩 19 | target: 'esnext' // 目标 ES 版本 20 | }) 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /npm/src/index.d.ts: -------------------------------------------------------------------------------- 1 | // index.d.ts 2 | 3 | /** 4 | * ScSendOptions 定义了推送函数的可选参数 5 | */ 6 | export interface ScSendOptions { 7 | /** sctp 专用:标签列表,多个标签使用竖线分隔 */ 8 | tags?: string; 9 | /** sctp 和非 sctp:消息卡片的简短描述 */ 10 | short?: string; 11 | /** 非 sctp:是否隐藏调用IP,1为隐藏 */ 12 | noip?: 1; 13 | /** 非 sctp:推送使用的消息通道,多个通道值用竖线隔开 */ 14 | channel?: string; 15 | /** 非 sctp:消息抄送的 openid,多个 openid 用逗号或竖线分隔 */ 16 | openid?: string; 17 | } 18 | 19 | /** 20 | * ScSendResponse 定义了推送函数返回的响应结果 21 | */ 22 | export interface ScSendResponse { 23 | /** 返回的状态码 */ 24 | code: number; 25 | /** 返回的消息 */ 26 | message: string; 27 | /** 可选的返回数据 */ 28 | data?: any; 29 | } 30 | 31 | /** 32 | * 调用 Server 酱的推送函数 33 | * @param sendkey Server 酱的 SendKey 34 | * @param title 推送的标题 35 | * @param desp 推送的正文内容,默认为空字符串 36 | * @param options 推送的额外选项 37 | * @returns 返回推送结果的 Promise 38 | */ 39 | export function scSend( 40 | sendkey: string, 41 | title: string, 42 | desp?: string, 43 | options?: ScSendOptions 44 | ): Promise; 45 | -------------------------------------------------------------------------------- /npm/src/index.js: -------------------------------------------------------------------------------- 1 | import fetch from 'cross-fetch'; 2 | 3 | // 调用 Server 酱的推送函数 4 | export async function scSend(sendkey, title, desp = '', options = {}) { 5 | 6 | const url = String(sendkey).startsWith('sctp') 7 | ? `https://${sendkey.match(/^sctp(\d+)t/)[1]}.push.ft07.com/send/${sendkey}.send` 8 | : `https://sctapi.ftqq.com/${sendkey}.send`; 9 | 10 | const params = { 11 | title, 12 | desp, 13 | ...options, 14 | }; 15 | 16 | const response = await fetch(url, { 17 | method: 'POST', 18 | headers: { 19 | 'Content-Type': 'application/json;charset=utf-8', 20 | }, 21 | body: JSON.stringify(params), 22 | }); 23 | 24 | const result = await response.json(); 25 | return result; 26 | } 27 | -------------------------------------------------------------------------------- /npm/test/test.cjs: -------------------------------------------------------------------------------- 1 | // cjsTest.js 2 | 3 | const { scSend } = require('../src/index.js'); // 请根据实际模块路径替换 4 | 5 | (async () => { 6 | try { 7 | const sendkey = '...'; // 替换成真实的 Server 酱 sendkey 8 | const title = 'Test Notification'; 9 | const desp = 'This is a test message'; 10 | 11 | const response = await scSend(sendkey, title, desp, { noip: 1 }); 12 | console.log('Response:', response); 13 | } catch (error) { 14 | console.error('Error:', error); 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /npm/test/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NPM包测试 7 | 8 | 9 |

测试 scSend 函数

10 |
11 | 12 |

13 | 14 | 15 |

16 | 17 | 18 |

19 | 20 | 21 |
22 | 23 |

响应结果:

24 |

25 | 
26 |     
48 | 
49 | 
50 | 


--------------------------------------------------------------------------------
/npm/test/test.mjs:
--------------------------------------------------------------------------------
 1 | import { scSend } from '../src/index.js';  // 请根据实际模块路径替换
 2 | 
 3 | (async () => {
 4 |     try {
 5 |         const sendkey = '...'; // 替换成真实的 Server 酱 sendkey
 6 |         const title = 'Test Notification';
 7 |         const desp = 'This is a test message';
 8 | 
 9 |         const response = await scSend(sendkey, title, desp, { noip: 1 });
10 |         console.log('Response:', response);
11 |     } catch (error) {
12 |         console.error('Error:', error);
13 |     }
14 | })();
15 | 


--------------------------------------------------------------------------------
/pip/README.md:
--------------------------------------------------------------------------------
 1 | # ServerChan-SDK
 2 | 
 3 | `serverchan-sdk` 是一个用于通过 ServerChan (方糖) 推送消息的 Python SDK。该 SDK 提供了简洁的 API,使开发者能够轻松地通过 ServerChan 向微信发送消息通知。
 4 | 
 5 | ## 安装
 6 | 
 7 | 使用 `pip` 进行安装:
 8 | 
 9 | ```bash
10 | pip install serverchan-sdk
11 | ```
12 | 
13 | ## 使用方法
14 | 
15 | ### 导入库并发送消息
16 | 
17 | 首先导入 `serverchan-sdk` 并调用 `sc_send` 函数发送消息。
18 | 
19 | ```python
20 | from serverchan_sdk import sc_send
21 | 
22 | # 发送消息
23 | sendkey = "your_sendkey"
24 | title = "测试标题"
25 | desp = "这是消息内容"
26 | options = {"template": "markdown"}  # 可选参数
27 | 
28 | response = sc_send(sendkey, title, desp, options)
29 | 
30 | # 输出响应
31 | print(response)
32 | ```
33 | 
34 | ### 参数说明
35 | 
36 | - `sendkey`: 必填,您的 ServerChan SendKey。SendKey 是方糖推送消息的唯一标识,可以从方糖的管理后台获取。
37 | - `title`: 必填,消息的标题。
38 | - `desp`: 可选,消息的具体内容,默认为空字符串。
39 | - `options`: 可选,字典类型,用于传递额外的参数,比如消息模板、提醒选项等。默认为 `None`。
40 | 
41 | ### 选项说明
42 | `options` 字典中可以包括的选项,例如:
43 | 
44 | - `template`: 用于定义消息格式。可以选择 `"html"`, `"markdown"` 等。
45 | - 其他 ServerChan 支持的参数也可以通过 `options` 传入。
46 | 
47 | ### 返回值
48 | `sc_send` 函数返回一个字典,包含 ServerChan API 的响应结果。可以通过这个结果检查消息发送是否成功。
49 | 
50 | ## 示例
51 | 
52 | ```python
53 | from serverchan_sdk import sc_send
54 | 
55 | sendkey = "your_sendkey"
56 | title = "系统报警"
57 | desp = "服务器 CPU 使用率过高,请立即检查。"
58 | response = sc_send(sendkey, title, desp)
59 | 
60 | if response.get("code") == 0:
61 |     print("消息发送成功!")
62 | else:
63 |     print(f"消息发送失败:{response.get('message')}")
64 | ```
65 | 
66 | ### 支持的推送服务
67 | 
68 | - 如果 `sendkey` 以 `sctp` 开头,SDK 将使用 `https://{sendkey}.push.ft07.com/send` 地址推送消息。
69 | - 否则,将默认使用 `https://sctapi.ftqq.com/{sendkey}.send` 进行推送。
70 | 
71 | ## 依赖
72 | 
73 | 该 SDK 使用了以下 Python 包:
74 | 
75 | - `requests`: 用于发送 HTTP 请求。
76 | 
77 | 安装依赖包:
78 | 
79 | ```bash
80 | pip install requests
81 | ```
82 | 
83 | ## License
84 | 
85 | 本项目遵循 MIT License 开源协议。
86 | 
87 | ---
88 | 
89 | 这样您就可以通过简单的函数调用,利用 ServerChan 实现消息推送通知了。


--------------------------------------------------------------------------------
/pip/build/lib/serverchan_sdk/__init__.py:
--------------------------------------------------------------------------------
 1 | import requests
 2 | import re
 3 | 
 4 | def sc_send(sendkey, title, desp='', options=None):
 5 |     if options is None:
 6 |         options = {}
 7 |     if sendkey.startswith('sctp'):
 8 |         match = re.match(r'^sctp(\d+)t', sendkey)
 9 |         if match:
10 |             url = f'https://{match.group(1)}.push.ft07.com/send/{sendkey}.send'
11 |         else:
12 |             raise ValueError("Invalid sendkey format for 'sctp'.")
13 |     else:
14 |         url = f'https://sctapi.ftqq.com/{sendkey}.send'
15 |     params = {
16 |         'title': title,
17 |         'desp': desp,
18 |         **options
19 |     }
20 |     headers = {
21 |         'Content-Type': 'application/json;charset=utf-8'
22 |     }
23 |     response = requests.post(url, json=params, headers=headers)
24 |     result = response.json()
25 |     return result
26 | 


--------------------------------------------------------------------------------
/pip/dist/serverchan-sdk-1.0.1.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/dist/serverchan-sdk-1.0.1.tar.gz


--------------------------------------------------------------------------------
/pip/dist/serverchan-sdk-1.0.2.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/dist/serverchan-sdk-1.0.2.tar.gz


--------------------------------------------------------------------------------
/pip/dist/serverchan_sdk-1.0.6-py3-none-any.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/dist/serverchan_sdk-1.0.6-py3-none-any.whl


--------------------------------------------------------------------------------
/pip/dist/serverchan_sdk-1.0.6.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/dist/serverchan_sdk-1.0.6.tar.gz


--------------------------------------------------------------------------------
/pip/serverchan_sdk.egg-info/PKG-INFO:
--------------------------------------------------------------------------------
 1 | Metadata-Version: 2.1
 2 | Name: serverchan-sdk
 3 | Version: 1.0.6
 4 | Summary: Python SDK for ServerChan
 5 | Home-page: https://sct.ftqq.com
 6 | Author: easychen
 7 | Author-email: easychen@gmail.com
 8 | Requires-Python: >=3.6
 9 | Requires-Dist: requests>=2.0.0
10 | 


--------------------------------------------------------------------------------
/pip/serverchan_sdk.egg-info/SOURCES.txt:
--------------------------------------------------------------------------------
1 | README.md
2 | setup.py
3 | serverchan_sdk/__init__.py
4 | serverchan_sdk.egg-info/PKG-INFO
5 | serverchan_sdk.egg-info/SOURCES.txt
6 | serverchan_sdk.egg-info/dependency_links.txt
7 | serverchan_sdk.egg-info/requires.txt
8 | serverchan_sdk.egg-info/top_level.txt


--------------------------------------------------------------------------------
/pip/serverchan_sdk.egg-info/dependency_links.txt:
--------------------------------------------------------------------------------
1 | 
2 | 


--------------------------------------------------------------------------------
/pip/serverchan_sdk.egg-info/requires.txt:
--------------------------------------------------------------------------------
1 | requests>=2.0.0
2 | 


--------------------------------------------------------------------------------
/pip/serverchan_sdk.egg-info/top_level.txt:
--------------------------------------------------------------------------------
1 | serverchan_sdk
2 | 


--------------------------------------------------------------------------------
/pip/serverchan_sdk/__init__.py:
--------------------------------------------------------------------------------
 1 | import requests
 2 | import re
 3 | 
 4 | def sc_send(sendkey, title, desp='', options=None):
 5 |     if options is None:
 6 |         options = {}
 7 |     if sendkey.startswith('sctp'):
 8 |         match = re.match(r'^sctp(\d+)t', sendkey)
 9 |         if match:
10 |             url = f'https://{match.group(1)}.push.ft07.com/send/{sendkey}.send'
11 |         else:
12 |             raise ValueError("Invalid sendkey format for 'sctp'.")
13 |     else:
14 |         url = f'https://sctapi.ftqq.com/{sendkey}.send'
15 |     params = {
16 |         'title': title,
17 |         'desp': desp,
18 |         **options
19 |     }
20 |     headers = {
21 |         'Content-Type': 'application/json;charset=utf-8'
22 |     }
23 |     response = requests.post(url, json=params, headers=headers)
24 |     result = response.json()
25 |     return result
26 | 


--------------------------------------------------------------------------------
/pip/serverchan_sdk/__pycache__/__init__.cpython-312.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/serverchan_sdk/__pycache__/__init__.cpython-312.pyc


--------------------------------------------------------------------------------
/pip/serverchan_sdk/__pycache__/__init__.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/easychen/serverchan-sdk/0b5b63c192ed6b60e06a46b7cad0023eb53d82cf/pip/serverchan_sdk/__pycache__/__init__.cpython-39.pyc


--------------------------------------------------------------------------------
/pip/setup.py:
--------------------------------------------------------------------------------
 1 | from setuptools import setup
 2 | 
 3 | setup(
 4 |     name='serverchan-sdk',
 5 |     version='1.0.6',
 6 |     description='Python SDK for ServerChan',
 7 |     author='easychen',
 8 |     author_email='easychen@gmail.com',
 9 |     packages=['serverchan_sdk'],
10 |     install_requires=[
11 |         'requests>=2.0.0',
12 |     ],
13 |     url='https://sct.ftqq.com',
14 |     python_requires='>=3.6',
15 | )
16 | 


--------------------------------------------------------------------------------
/pip/test.py:
--------------------------------------------------------------------------------
 1 | # -*- coding: utf-8 -*-
 2 | from serverchan_sdk import sc_send
 3 | 
 4 | # 发送消息
 5 | sendkey = "..."
 6 | title = "py sdk测试"
 7 | desp = "这是来自py sdk的消息内容"
 8 | options = {"template": "markdown"}  # 可选参数
 9 | 
10 | response = sc_send(sendkey, title, desp, options)
11 | 
12 | # 输出响应
13 | print(response)


--------------------------------------------------------------------------------