周泳恩 commited on
Commit
e43bcd4
·
1 Parent(s): 40daf41
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .env +65 -0
  2. Dockerfile +13 -0
  3. LICENSE +201 -0
  4. README.md +5 -6
  5. SETUP.md +102 -0
  6. add-api-key.js +43 -0
  7. auto-refresh-cookies.js +143 -0
  8. cursor-to-openai-helper.sh +557 -0
  9. data/admin.example.json +7 -0
  10. data/admin.json +1 -0
  11. data/api_keys.example.json +5 -0
  12. data/api_keys.json +8 -0
  13. data/invalid_cookies.example.json +3 -0
  14. data/invalid_cookies.json +1 -0
  15. docker-compose.yaml +14 -0
  16. manage-emails.js +309 -0
  17. manage-invalid-cookies.js +169 -0
  18. node_modules/.bin/acorn +1 -0
  19. node_modules/.bin/csv-parser +1 -0
  20. node_modules/.bin/escodegen +1 -0
  21. node_modules/.bin/esgenerate +1 -0
  22. node_modules/.bin/esparse +1 -0
  23. node_modules/.bin/esvalidate +1 -0
  24. node_modules/.bin/is-docker +1 -0
  25. node_modules/.bin/is-inside-container +1 -0
  26. node_modules/.bin/jsdoc +1 -0
  27. node_modules/.bin/markdown-it +1 -0
  28. node_modules/.bin/marked +1 -0
  29. node_modules/.bin/mime +1 -0
  30. node_modules/.bin/mkdirp +1 -0
  31. node_modules/.bin/parser +1 -0
  32. node_modules/.bin/pbjs +1 -0
  33. node_modules/.bin/pbts +1 -0
  34. node_modules/.bin/semver +1 -0
  35. node_modules/.bin/uglifyjs +1 -0
  36. node_modules/.bin/uuid +1 -0
  37. node_modules/.package-lock.json +2401 -0
  38. node_modules/@babel/helper-string-parser/LICENSE +22 -0
  39. node_modules/@babel/helper-string-parser/README.md +19 -0
  40. node_modules/@babel/helper-string-parser/lib/index.js +295 -0
  41. node_modules/@babel/helper-string-parser/lib/index.js.map +1 -0
  42. node_modules/@babel/helper-string-parser/package.json +31 -0
  43. node_modules/@babel/helper-validator-identifier/LICENSE +22 -0
  44. node_modules/@babel/helper-validator-identifier/README.md +19 -0
  45. node_modules/@babel/helper-validator-identifier/lib/identifier.js +70 -0
  46. node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +1 -0
  47. node_modules/@babel/helper-validator-identifier/lib/index.js +57 -0
  48. node_modules/@babel/helper-validator-identifier/lib/index.js.map +1 -0
  49. node_modules/@babel/helper-validator-identifier/lib/keyword.js +35 -0
  50. node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +1 -0
.env ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 服务端口
2
+ PORT=3010
3
+
4
+ # 日志格式 (tiny, combined, common, dev, short)
5
+ MORGAN_FORMAT=tiny
6
+
7
+ # API Key与Cookie映射关系 (JSON格式)
8
+ # 格式: {"自定义API Key": "Cookie值"} 或 {"自定义API Key": ["Cookie值1", "Cookie值2"]}
9
+ API_KEYS={"sk-cursor-123":"user_xxxxxxx","sk-cursor-456":["user_yyyyyyy","user_zzzzzzz"]}
10
+
11
+ # 轮询策略 (random 或 round-robin)
12
+ ROTATION_STRATEGY=round-robin
13
+
14
+ # Cursor校验和 (可选)
15
+ # x-cursor-checksum=xxxxxxxx
16
+
17
+ # 自动刷新Cookie设置
18
+ # 是否启用自动刷新Cookie (true 或 false)
19
+ ENABLE_AUTO_REFRESH=false
20
+
21
+ # 自动刷新Cookie的定时规则 (Cron表达式)
22
+ # 默认每6小时执行一次
23
+ REFRESH_CRON=0 */6 * * *
24
+
25
+ # 每个API Key最小Cookie数量
26
+ # 当Cookie数量低于此值时,会自动尝试刷新
27
+ MIN_COOKIE_COUNT=1000
28
+
29
+ # Cookie刷新模式
30
+ # replace: 每次刷新都将现有cookie全部标记为无效并替换成新cookie(默认)
31
+ # append: 保留现有cookie,仅追加新cookie
32
+ COOKIE_REFRESH_MODE=replace
33
+
34
+ # GitHub 仓库信息
35
+ GITHUB_OWNER=your_name
36
+ GITHUB_REPO=Cursor-Register-fix
37
+
38
+ # GitHub Token (用于从GitHub Actions下载Artifact)
39
+ # 需要有repo权限
40
+ GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
41
+
42
+ # GitHub Actions 工作流ID
43
+ # 用于触发工作流程
44
+ GITHUB_WORKFLOW_ID=cursor_register.yml
45
+
46
+ # 是否自动触发工作流
47
+ # 设置为true时,会自动触发工作流而不是仅获取最新结果
48
+ TRIGGER_WORKFLOW=true
49
+
50
+ # 工作流参数设置 目前只支持gmail,outlook过于复杂,暂时不支持
51
+ # 注册账号数量
52
+ REGISTER_NUMBER=1
53
+ # 最大并发工作线程数
54
+ REGISTER_MAX_WORKERS=1
55
+ # 邮箱服务器类型 (TempEmail 或 IMAP)
56
+ REGISTER_EMAIL_SERVER=IMAP
57
+ # 是否将账号令牌注入到OneAPI (true 或 false)
58
+ REGISTER_INGEST_TO_ONEAPI=false
59
+ # 是否上传账号信息到Artifact (true 或 false)
60
+ REGISTER_UPLOAD_ARTIFACT=true
61
+ # 是否从config.yaml读取邮箱配置 (true 或 false)
62
+ REGISTER_USE_CONFIG_FILE=false
63
+ # 邮箱配置JSON字符串(仅在REGISTER_USE_CONFIG_FILE=false时有效)
64
+ # 格式例如[{"email":"[email protected]","imap_server":"imap.gmail.com","imap_port":993,"username":"[email protected]","password":"your_app_password"}]
65
+ REGISTER_EMAIL_CONFIGS=[]
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:lts-alpine
2
+
3
+ WORKDIR /app
4
+
5
+ COPY package.json package-lock.json ./
6
+
7
+ RUN npm install
8
+
9
+ COPY . /app
10
+
11
+ EXPOSE 3010
12
+
13
+ CMD ["npm", "run", "start"]
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2024 liuw1535
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
README.md CHANGED
@@ -1,12 +1,11 @@
1
  ---
2
- title: Courl
3
- emoji: 🏆
4
  colorFrom: purple
5
- colorTo: yellow
6
- sdk: gradio
7
- sdk_version: 5.27.0
8
- app_file: app.py
9
  pinned: false
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Cursor To OpenAI
3
+ emoji: 🔥
4
  colorFrom: purple
5
+ colorTo: purple
6
+ sdk: docker
 
 
7
  pinned: false
8
  ---
9
 
10
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
11
+
SETUP.md ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Cursor-To-OpenAI 一键配置指南
2
+
3
+ 本文档将指导你使用一键配置工具来设置 Cursor-To-OpenAI 环境。
4
+
5
+ ## 准备工作
6
+
7
+ 在开始配置前,请确保你已经:
8
+
9
+ 1. Fork了 [Cursor-Register-fix](https://github.com/liuw1535/Cursor-Register-fix) 仓库到你的GitHub账号
10
+ 2. 创建了一个GitHub个人访问令牌(Personal Access Token),且具有 `repo` 权限
11
+ 3. 拥有至少一个Gmail账号,并启用了两步验证
12
+ 4. 为Gmail账号创建了应用密码(Application Password)
13
+
14
+ ## 配置步骤
15
+
16
+ ### 1. 安装依赖
17
+
18
+ ```bash
19
+ npm install
20
+ ```
21
+
22
+ ### 2. 运行配置脚本
23
+
24
+ ```bash
25
+ npm run setup
26
+ ```
27
+
28
+ 或者直接运行:
29
+
30
+ ```bash
31
+ node setup.js
32
+ ```
33
+
34
+ ### 3. 按照提示输入信息
35
+
36
+ 脚本会引导你输入以下信息:
37
+
38
+ - GitHub用户名:你的GitHub账号用户名
39
+ - GitHub Token:你的个人访问令牌
40
+ - API Key:自定义的API Key,用于访问服务
41
+ - Gmail账号:用于自动注册Cursor账号的Gmail地址
42
+ - Gmail应用密码:对应Gmail账号的应用密码(不是邮箱密码)
43
+
44
+ ### 4. 创建应用密码的步骤
45
+
46
+ 如果你还没有创建Gmail应用密码,请按照以下步骤操作:
47
+
48
+ 1. 访问 [Google账号安全设置](https://myaccount.google.com/security)
49
+ 2. 在"登录Google"部分,点击"两步验证"
50
+ (如果未启用两步验证,需要先启用)
51
+ 3. 在页面底部找到"应用密码",点击进入
52
+ 4. 在"选择应用"下拉菜单中选择"其他(自定义名称)"
53
+ 5. 输入一个名称,例如"Cursor注册"
54
+ 6. 点击"生成"
55
+ 7. 复制生成的16位应用密码(格式如:xxxx xxxx xxxx xxxx)
56
+
57
+ ### 5. 管理邮箱配置
58
+
59
+ 系统提供了一个专门的邮箱配置管理工具,可以随时添加、修改或删除邮箱:
60
+
61
+ ```bash
62
+ npm run manage-emails
63
+ ```
64
+
65
+ 使用此工具可以:
66
+ - 查看所有已配置的邮箱
67
+ - 添加新的Gmail账号
68
+ - 修改现有Gmail账号的配置
69
+ - 删除不再使用的Gmail账号
70
+
71
+ ## 配置完成后
72
+
73
+ 配置完成后,你可以:
74
+
75
+ 1. 启动服务:
76
+
77
+ ```bash
78
+ npm start
79
+ ```
80
+
81
+ 2. 手动触发Cookie刷新:
82
+
83
+ ```bash
84
+ npm run refresh-cookies:force
85
+ ```
86
+
87
+ ## 配置文件说明
88
+
89
+ 脚本会生成`.env`文件,其中包含以下主要配置:
90
+
91
+ - `API_KEYS`:API Key到Cookie的映射关系
92
+ - `GITHUB_OWNER`:你的GitHub用户名
93
+ - `GITHUB_TOKEN`:你的GitHub个人访问令牌
94
+ - `REGISTER_EMAIL_CONFIGS`:Gmail账号配置,用于自动注册
95
+
96
+ ## 注意事项
97
+
98
+ 1. GitHub Token需要具有repo权限,用于访问你fork的仓库
99
+ 2. Gmail应用密码不同于你的Gmail登录密码,是专门为第三方应用生成的
100
+ 3. MIN_COOKIE_COUNT设置为1000,确保系统会尝试刷新Cookie
101
+ 4. 配置完成后,你可以通过Web界面查看和管理Cookie状态
102
+ 5. 始终确保至少有一个有效的Gmail账号配置,否则自动刷新功能将无法正常工作
add-api-key.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const fetch = require('node-fetch');
2
+
3
+ async function addApiKey() {
4
+ try {
5
+ console.log('添加API Key...');
6
+ const response = await fetch('http://localhost:3010/v1/api-keys', {
7
+ method: 'POST',
8
+ headers: {
9
+ 'Content-Type': 'application/json',
10
+ },
11
+ body: JSON.stringify({
12
+ apiKey: 'test-key',
13
+ cookieValues: ['test-cookie'],
14
+ }),
15
+ });
16
+
17
+ console.log('响应状态:', response.status);
18
+
19
+ if (!response.ok) {
20
+ throw new Error(`HTTP错误: ${response.status} ${response.statusText}`);
21
+ }
22
+
23
+ const data = await response.json();
24
+ console.log('响应数据:', data);
25
+
26
+ // 测试获取API Keys
27
+ console.log('\n测试获取API Keys...');
28
+ const getResponse = await fetch('http://localhost:3010/v1/api-keys');
29
+
30
+ console.log('响应状态:', getResponse.status);
31
+
32
+ if (!getResponse.ok) {
33
+ throw new Error(`HTTP错误: ${getResponse.status} ${getResponse.statusText}`);
34
+ }
35
+
36
+ const getData = await getResponse.json();
37
+ console.log('获取到的数据:', getData);
38
+ } catch (error) {
39
+ console.error('操作失败:', error);
40
+ }
41
+ }
42
+
43
+ addApiKey();
auto-refresh-cookies.js ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // 加载环境变量
2
+ require('dotenv').config();
3
+
4
+ // 环境检查
5
+ const envChecker = require('./src/utils/envChecker');
6
+ console.log('启动前检查环境配置...');
7
+ envChecker.enforceEnvCheck();
8
+
9
+ // 已适配GitHub Actions工作流新参数 (use_config_file, email_configs)
10
+ console.log('环境检查通过,已适配最新GitHub Actions工作流参数');
11
+
12
+ const cookieRefresher = require('./src/utils/cookieRefresher');
13
+ const keyManager = require('./src/utils/keyManager');
14
+ const config = require('./src/config/config');
15
+
16
+ // 解析命令行参数
17
+ const args = process.argv.slice(2);
18
+ const targetApiKey = args.length > 0 ? args[0] : null;
19
+ const forceRefresh = args.includes('--force') || args.includes('-f');
20
+
21
+ // 最小 Cookie 数量
22
+ const MIN_COOKIE_COUNT = config.refresh.minCookieCount;
23
+
24
+ // 获取Cookie刷新模式
25
+ const COOKIE_REFRESH_MODE = process.env.COOKIE_REFRESH_MODE || 'append';
26
+
27
+ // 主函数
28
+ async function main() {
29
+ console.log('===== 自动刷新 Cookie 开始 =====');
30
+ console.log(`最小 Cookie 数量: ${MIN_COOKIE_COUNT}`);
31
+ console.log(`Cookie 刷新模式: ${COOKIE_REFRESH_MODE} (${COOKIE_REFRESH_MODE === 'replace' ? '替换现有cookie' : '追加新cookie'})`);
32
+
33
+ if (targetApiKey) {
34
+ console.log(`指定刷新 API Key: ${targetApiKey}`);
35
+ }
36
+
37
+ if (forceRefresh) {
38
+ console.log('强制刷新模式: 忽略 Cookie 数量检查');
39
+ }
40
+
41
+ try {
42
+ // 获取所有 API Key
43
+ const apiKeys = keyManager.getAllApiKeys();
44
+
45
+ if (apiKeys.length === 0) {
46
+ console.log('警告: 系统中没有找到任何 API Key');
47
+
48
+ // 检查环境变量中是否有 API Keys
49
+ const envApiKeys = Object.keys(config.apiKeys);
50
+ if (envApiKeys.length > 0) {
51
+ console.log(`检测到环境变量中有 ${envApiKeys.length} 个 API Key,但尚未加载到系统中`);
52
+ console.log('正在重新初始化 API Keys...');
53
+
54
+ // 重新初始化 API Keys
55
+ keyManager.initializeApiKeys();
56
+
57
+ // 重新获取 API Keys
58
+ const refreshedApiKeys = keyManager.getAllApiKeys();
59
+ if (refreshedApiKeys.length > 0) {
60
+ console.log(`成功加载 ${refreshedApiKeys.length} 个 API Key,继续刷新流程`);
61
+ // 继续执行后续刷新逻辑
62
+ } else {
63
+ console.log('初始化后仍未找到 API Key,请检查配置');
64
+ console.log('===== 自动刷新 Cookie 结束 =====');
65
+ return;
66
+ }
67
+ } else {
68
+ console.log('环境变量中也没有配置 API Key,请先添加 API Key');
69
+ console.log('===== 自动刷新 Cookie 结束 =====');
70
+ return;
71
+ }
72
+ }
73
+
74
+ // 重新获取最新的 API Keys(可能已经通过上面的初始化更新了)
75
+ const updatedApiKeys = keyManager.getAllApiKeys();
76
+ console.log(`系统中共有 ${updatedApiKeys.length} 个 API Key`);
77
+
78
+ // 如果指定了特定的 API Key,检查它是否存在
79
+ if (targetApiKey && !updatedApiKeys.includes(targetApiKey)) {
80
+ console.error(`错误: 指定的 API Key "${targetApiKey}" 不存在`);
81
+ console.log('===== 自动刷新 Cookie 异常结束 =====');
82
+ return;
83
+ }
84
+
85
+ // 过滤需要处理的 API Keys
86
+ const keysToProcess = targetApiKey ? [targetApiKey] : updatedApiKeys;
87
+
88
+ // 按 Cookie 数量排序,优先处理 Cookie 数量少的 API Key
89
+ const sortedKeys = keysToProcess.sort((a, b) => {
90
+ const aCount = keyManager.getAllCookiesForApiKey(a).length;
91
+ const bCount = keyManager.getAllCookiesForApiKey(b).length;
92
+ return aCount - bCount; // 升序排列,Cookie 数量少的排在前面
93
+ });
94
+
95
+ // 检查每个 API Key 是否需要刷新
96
+ let refreshedCount = 0;
97
+ let needRefreshCount = 0;
98
+
99
+ for (const apiKey of sortedKeys) {
100
+ const cookies = keyManager.getAllCookiesForApiKey(apiKey);
101
+ console.log(`API Key: ${apiKey}, Cookie 数量: ${cookies.length}`);
102
+
103
+ // 判断是否需要刷新:强制刷新模式或 Cookie 数量低于阈值
104
+ if (forceRefresh || cookies.length < MIN_COOKIE_COUNT) {
105
+ needRefreshCount++;
106
+ if (forceRefresh) {
107
+ console.log(`强制刷新 API Key: ${apiKey}`);
108
+ } else {
109
+ console.log(`API Key ${apiKey} 的 Cookie 数量不足,需要刷新`);
110
+ }
111
+
112
+ // 执行刷新
113
+ console.log(`开始自动刷新 Cookie,目标 API Key: ${apiKey},最小 Cookie 数量: ${MIN_COOKIE_COUNT},刷新模式: ${COOKIE_REFRESH_MODE}`);
114
+ const result = await cookieRefresher.autoRefreshCookies(apiKey, MIN_COOKIE_COUNT);
115
+
116
+ if (result.success) {
117
+ refreshedCount++;
118
+ console.log(`刷新结果: ${result.message}`);
119
+
120
+ // 根据刷新模式输出额外的信息
121
+ if (COOKIE_REFRESH_MODE === 'replace') {
122
+ console.log(`使用替换模式: 现有cookie已全部标记为无效,系统现在只使用新cookie`);
123
+ } else {
124
+ console.log(`使用追加模式: 现有cookie已保留,新cookie已添加到系统`);
125
+ }
126
+ } else {
127
+ console.error(`刷新失败: ${result.message}`);
128
+ }
129
+ } else {
130
+ console.log(`API Key ${apiKey} 的 Cookie 数量足够,不需要刷新`);
131
+ }
132
+ }
133
+
134
+ console.log('===== 自动刷新 Cookie 完成 =====');
135
+ console.log(`共有 ${needRefreshCount} 个 API Key 需要刷新,成功刷新 ${refreshedCount} 个`);
136
+ } catch (error) {
137
+ console.error('自动刷新 Cookie 失败:', error);
138
+ console.log('===== 自动刷新 Cookie 异常结束 =====');
139
+ }
140
+ }
141
+
142
+ // 执行主函数
143
+ main().catch(console.error);
cursor-to-openai-helper.sh ADDED
@@ -0,0 +1,557 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Colors for better UI
4
+ RED='\033[0;31m'
5
+ GREEN='\033[0;32m'
6
+ YELLOW='\033[0;33m'
7
+ BLUE='\033[0;34m'
8
+ NC='\033[0m' # No Color
9
+
10
+ # Create backups directory if it doesn't exist
11
+ mkdir -p backups
12
+
13
+ # Function to display header
14
+ show_header() {
15
+ clear
16
+ echo -e "${BLUE}=======================================${NC}"
17
+ echo -e "${GREEN} Cursor-To-OpenAI 简易脚本 ${NC}"
18
+ echo -e "${BLUE}=======================================${NC}"
19
+ echo
20
+ }
21
+
22
+ # Function to check if Docker is installed
23
+ check_docker() {
24
+ if ! command -v docker &> /dev/null; then
25
+ echo -e "${RED}未安装Docker。请先安装Docker。${NC}"
26
+ exit 1
27
+ fi
28
+ }
29
+
30
+ # Function to check if Node.js is installed
31
+ check_nodejs() {
32
+ if ! command -v node &> /dev/null; then
33
+ echo -e "${RED}未安装Node.js。请先安装Node.js。${NC}"
34
+ exit 1
35
+ fi
36
+
37
+ if ! command -v npm &> /dev/null; then
38
+ echo -e "${RED}未安装npm。请先安装npm。${NC}"
39
+ exit 1
40
+ fi
41
+ }
42
+
43
+ # Function to backup configuration before update
44
+ backup_configs() {
45
+ echo -e "${YELLOW}正在备份配置文件...${NC}"
46
+ backup_dir="backups/update_backup_$(date +"%Y%m%d_%H%M%S")"
47
+ mkdir -p "$backup_dir"
48
+
49
+ # Backup important configurations
50
+ if [ -d data ]; then
51
+ cp -r data "$backup_dir/"
52
+ fi
53
+
54
+ if [ -f .env ]; then
55
+ cp .env "$backup_dir/"
56
+ fi
57
+
58
+ echo -e "${GREEN}配置文件已备份到 ${backup_dir}${NC}"
59
+ }
60
+
61
+ # Function to restore configuration after update
62
+ restore_configs() {
63
+ if [ -z "$1" ]; then
64
+ echo -e "${RED}未指定备份目录,无法恢复配置。${NC}"
65
+ return 1
66
+ fi
67
+
68
+ backup_dir="$1"
69
+ echo -e "${YELLOW}正在恢复配置文件...${NC}"
70
+
71
+ if [ -d "$backup_dir/data" ]; then
72
+ cp -r "$backup_dir/data/"* data/ 2>/dev/null
73
+ fi
74
+
75
+ if [ -f "$backup_dir/.env" ]; then
76
+ cp "$backup_dir/.env" ./ 2>/dev/null
77
+ fi
78
+
79
+ echo -e "${GREEN}配置文件已恢复${NC}"
80
+ }
81
+
82
+ # Function for installation tasks
83
+ installation_menu() {
84
+ show_header
85
+ echo -e "${YELLOW}===== 安装菜单 =====${NC}"
86
+ echo -e "1) 克隆仓库"
87
+ echo -e "2) 安装依赖"
88
+ echo -e "3) 创建配置文件"
89
+ echo -e "4) 设置管理员账户"
90
+ echo -e "5) 运行安装向导"
91
+ echo -e "6) 构建并启动Docker容器"
92
+ echo -e "7) 使用npm启动"
93
+ echo -e "8) 返回主菜单"
94
+ echo
95
+ echo -n "请输入选择 [1-8]: "
96
+ read -r choice
97
+
98
+ case $choice in
99
+ 1)
100
+ show_header
101
+ echo -e "${YELLOW}正在克隆仓库...${NC}"
102
+ read -p "请输入您的GitHub用户名: " username
103
+ git clone "https://github.com/${username}/cursor-to-openai.git"
104
+ if [ $? -eq 0 ]; then
105
+ echo -e "${GREEN}仓库克隆成功!${NC}"
106
+ cd cursor-to-openai
107
+ else
108
+ echo -e "${RED}克隆仓库失败!${NC}"
109
+ fi
110
+ read -p "按回车键继续..."
111
+ installation_menu
112
+ ;;
113
+ 2)
114
+ show_header
115
+ echo -e "${YELLOW}正在安装依赖...${NC}"
116
+ npm install
117
+ if [ $? -eq 0 ]; then
118
+ echo -e "${GREEN}依赖安装成功!${NC}"
119
+ else
120
+ echo -e "${RED}依赖安装失败!${NC}"
121
+ fi
122
+ read -p "按回车键继续..."
123
+ installation_menu
124
+ ;;
125
+ 3)
126
+ show_header
127
+ echo -e "${YELLOW}正在创建配置文件...${NC}"
128
+
129
+ if [ ! -f .env ]; then
130
+ cp .env.example .env
131
+ echo -e "${GREEN}.env文件已创建。${NC}"
132
+ else
133
+ echo -e "${YELLOW}.env文件已存在。${NC}"
134
+ fi
135
+
136
+ mkdir -p data
137
+
138
+ if [ ! -f data/admin.json ]; then
139
+ cp data/admin.example.json data/admin.json
140
+ echo -e "${GREEN}admin.json文件已创建。${NC}"
141
+ else
142
+ echo -e "${YELLOW}admin.json文件已存在。${NC}"
143
+ fi
144
+
145
+ echo -e "${YELLOW}您应该编辑.env文件来配置您的环境。${NC}"
146
+ read -p "是否现在编辑.env文件?(y/n): " edit_env
147
+ if [[ $edit_env == "y" || $edit_env == "Y" ]]; then
148
+ if command -v nano &> /dev/null; then
149
+ nano .env
150
+ elif command -v vim &> /dev/null; then
151
+ vim .env
152
+ else
153
+ echo -e "${RED}未找到编辑器。请稍后手动编辑.env文件。${NC}"
154
+ fi
155
+ fi
156
+
157
+ read -p "按回车键继续..."
158
+ installation_menu
159
+ ;;
160
+ 4)
161
+ show_header
162
+ echo -e "${YELLOW}正在设置管理员账户...${NC}"
163
+ node scripts/create-admin.js
164
+ read -p "按回车键继续..."
165
+ installation_menu
166
+ ;;
167
+ 5)
168
+ show_header
169
+ echo -e "${YELLOW}正在运行安装向导...${NC}"
170
+ node setup.js
171
+ read -p "按回车键继续..."
172
+ installation_menu
173
+ ;;
174
+ 6)
175
+ show_header
176
+ echo -e "${YELLOW}正在构建并启动Docker容器...${NC}"
177
+ check_docker
178
+ docker compose up -d --build
179
+ if [ $? -eq 0 ]; then
180
+ echo -e "${GREEN}Docker容器启动成功!${NC}"
181
+ echo -e "${GREEN}访问管理界面: http://localhost:3010${NC}"
182
+ else
183
+ echo -e "${RED}启动Docker容器失败!${NC}"
184
+ fi
185
+ read -p "按回车键继续..."
186
+ installation_menu
187
+ ;;
188
+ 7)
189
+ show_header
190
+ echo -e "${YELLOW}正在使用npm启动...${NC}"
191
+ check_nodejs
192
+ npm start &
193
+ if [ $? -eq 0 ]; then
194
+ echo -e "${GREEN}服务启动成功!${NC}"
195
+ echo -e "${GREEN}访问管理界面: http://localhost:3010${NC}"
196
+ else
197
+ echo -e "${RED}启动服务失败!${NC}"
198
+ fi
199
+ read -p "按回车键继续..."
200
+ installation_menu
201
+ ;;
202
+ 8)
203
+ main_menu
204
+ ;;
205
+ *)
206
+ echo -e "${RED}无效选项。请重试。${NC}"
207
+ read -p "按回车键继续..."
208
+ installation_menu
209
+ ;;
210
+ esac
211
+ }
212
+
213
+ # Function for maintenance tasks
214
+ maintenance_menu() {
215
+ show_header
216
+ echo -e "${YELLOW}===== 维护菜单 =====${NC}"
217
+ echo -e "1) 查看服务状态"
218
+ echo -e "2) 刷新Cookie"
219
+ echo -e "3) 强制刷新Cookie"
220
+ echo -e "4) 管理邮箱"
221
+ echo -e "5) 管理无效Cookie"
222
+ echo -e "6) 查看日志"
223
+ echo -e "7) 重启服务"
224
+ echo -e "8) 停止服务"
225
+ echo -e "9) 更新项目代码"
226
+ echo -e "10) 备份项目数据"
227
+ echo -e "11) 持续刷新Cookie直到成功"
228
+ echo -e "12) 返回主菜单"
229
+ echo
230
+ echo -n "请输入选择 [1-12]: "
231
+ read -r choice
232
+
233
+ case $choice in
234
+ 1)
235
+ show_header
236
+ echo -e "${YELLOW}服务状态:${NC}"
237
+ if docker ps | grep -q cursor-to-openai; then
238
+ echo -e "${GREEN}Docker容器正在运行。${NC}"
239
+ docker ps | grep cursor-to-openai
240
+ else
241
+ echo -e "${RED}Docker容器未运行。${NC}"
242
+ fi
243
+
244
+ pids=$(pgrep -f "node.*start")
245
+ if [ -n "$pids" ]; then
246
+ echo -e "${GREEN}Node.js服务正在运行,PID: $pids${NC}"
247
+ else
248
+ echo -e "${RED}Node.js服务未运行。${NC}"
249
+ fi
250
+
251
+ read -p "按回车键继续..."
252
+ maintenance_menu
253
+ ;;
254
+ 2)
255
+ show_header
256
+ echo -e "${YELLOW}正在刷新Cookie...${NC}"
257
+ npm run refresh-cookies
258
+ read -p "按回车键继续..."
259
+ maintenance_menu
260
+ ;;
261
+ 3)
262
+ show_header
263
+ echo -e "${YELLOW}正在强制刷新Cookie...${NC}"
264
+ npm run refresh-cookies -- --force
265
+ read -p "按回车键继续..."
266
+ maintenance_menu
267
+ ;;
268
+ 4)
269
+ show_header
270
+ echo -e "${YELLOW}正在管理邮箱...${NC}"
271
+ npm run manage-emails
272
+ read -p "按回车键继续..."
273
+ maintenance_menu
274
+ ;;
275
+ 5)
276
+ show_header
277
+ echo -e "${YELLOW}正在管理无效Cookie...${NC}"
278
+ node manage-invalid-cookies.js
279
+ read -p "按回车键继续..."
280
+ maintenance_menu
281
+ ;;
282
+ 6)
283
+ show_header
284
+ echo -e "${YELLOW}正在查看日志...${NC}"
285
+ if docker ps | grep -q cursor-to-openai; then
286
+ docker compose logs -f
287
+ else
288
+ echo -e "${RED}Docker容器未运行。${NC}"
289
+ echo -e "${YELLOW}正在检查npm日志...${NC}"
290
+ # Try to find logs in npm-debug.log or similar
291
+ if [ -f npm-debug.log ]; then
292
+ cat npm-debug.log
293
+ else
294
+ echo -e "${RED}未找到日志文件。${NC}"
295
+ fi
296
+ fi
297
+ read -p "按回车键继续..."
298
+ maintenance_menu
299
+ ;;
300
+ 7)
301
+ show_header
302
+ echo -e "${YELLOW}正在重启服务...${NC}"
303
+ if docker ps | grep -q cursor-to-openai; then
304
+ docker compose restart
305
+ echo -e "${GREEN}Docker容器已重启。${NC}"
306
+ else
307
+ pids=$(pgrep -f "node.*start")
308
+ if [ -n "$pids" ]; then
309
+ kill $pids
310
+ sleep 2
311
+ npm start &
312
+ echo -e "${GREEN}Node.js服务已重启。${NC}"
313
+ else
314
+ echo -e "${RED}未检测到运行中的服务。${NC}"
315
+ echo -e "${YELLOW}是否要启动服务?(y/n): ${NC}"
316
+ read -r start_service
317
+ if [[ $start_service == "y" || $start_service == "Y" ]]; then
318
+ npm start &
319
+ echo -e "${GREEN}服务已启动。${NC}"
320
+ fi
321
+ fi
322
+ fi
323
+ read -p "按回车键继续..."
324
+ maintenance_menu
325
+ ;;
326
+ 8)
327
+ show_header
328
+ echo -e "${YELLOW}正在停止服务...${NC}"
329
+ if docker ps | grep -q cursor-to-openai; then
330
+ docker compose down
331
+ echo -e "${GREEN}Docker容器已停止。${NC}"
332
+ else
333
+ pids=$(pgrep -f "node.*start")
334
+ if [ -n "$pids" ]; then
335
+ kill $pids
336
+ echo -e "${GREEN}Node.js服务已停止。${NC}"
337
+ else
338
+ echo -e "${RED}未检测到运行中的服务。${NC}"
339
+ fi
340
+ fi
341
+ read -p "按回车键继续..."
342
+ maintenance_menu
343
+ ;;
344
+ 9)
345
+ show_header
346
+ echo -e "${YELLOW}正在更新项目代码...${NC}"
347
+
348
+ # 备份配置文件
349
+ backup_configs
350
+ backup_dir=$(ls -td backups/update_backup_* | head -1)
351
+
352
+ # 检查是否存在未提交的更改
353
+ if [ -n "$(git status --porcelain)" ]; then
354
+ echo -e "${YELLOW}检测到未提交的更改。更新前请处理这些更改。${NC}"
355
+ echo -e "1) 查看更改"
356
+ echo -e "2) 备份并放弃更改"
357
+ echo -e "3) 取消更新"
358
+ echo -n "请选择操作 [1-3]: "
359
+ read -r update_choice
360
+
361
+ case $update_choice in
362
+ 1)
363
+ git status
364
+ echo -e "${YELLOW}是否继续更新?(y/n): ${NC}"
365
+ read -r continue_update
366
+ if [[ $continue_update != "y" && $continue_update != "Y" ]]; then
367
+ echo -e "${YELLOW}更新已取消。${NC}"
368
+ read -p "按回车键继续..."
369
+ maintenance_menu
370
+ return
371
+ fi
372
+ ;;
373
+ 2)
374
+ echo -e "${YELLOW}备份更改...${NC}"
375
+ git diff > "$backup_dir/local_changes.patch"
376
+ git checkout -- .
377
+ echo -e "${GREEN}更改已备份到 $backup_dir/local_changes.patch${NC}"
378
+ ;;
379
+ 3)
380
+ echo -e "${YELLOW}更新已取消。${NC}"
381
+ read -p "按回车键继续..."
382
+ maintenance_menu
383
+ return
384
+ ;;
385
+ *)
386
+ echo -e "${RED}无效选项。更新已取消。${NC}"
387
+ read -p "按回车键继续..."
388
+ maintenance_menu
389
+ return
390
+ ;;
391
+ esac
392
+ fi
393
+
394
+ # 更新代码
395
+ git pull
396
+ update_status=$?
397
+
398
+ # 恢复配置文件
399
+ restore_configs "$backup_dir"
400
+
401
+ if [ $update_status -eq 0 ]; then
402
+ echo -e "${GREEN}项目代码更新成功!${NC}"
403
+ echo -e "${YELLOW}是否需要重新安装依赖?(y/n): ${NC}"
404
+ read -r reinstall
405
+ if [[ $reinstall == "y" || $reinstall == "Y" ]]; then
406
+ npm install
407
+ if [ $? -eq 0 ]; then
408
+ echo -e "${GREEN}依赖安装成功!${NC}"
409
+ else
410
+ echo -e "${RED}依赖安装失败!${NC}"
411
+ fi
412
+ fi
413
+ else
414
+ echo -e "${RED}项目代码更新失败!${NC}"
415
+ fi
416
+
417
+ read -p "按回车键继续..."
418
+ maintenance_menu
419
+ ;;
420
+ 10)
421
+ show_header
422
+ echo -e "${YELLOW}正在备份项目数据...${NC}"
423
+
424
+ # 创建备份目录
425
+ backup_dir="backups/backup_$(date +"%Y%m%d_%H%M%S")"
426
+ mkdir -p "$backup_dir"
427
+
428
+ # 备份关键文件
429
+ cp -r data "$backup_dir/" 2>/dev/null
430
+ if [ -f .env ]; then
431
+ cp .env "$backup_dir/"
432
+ fi
433
+
434
+ # 压缩备份
435
+ tar -czf "${backup_dir}.tar.gz" "$backup_dir"
436
+ rm -rf "$backup_dir"
437
+
438
+ echo -e "${GREEN}备份已创建: ${backup_dir}.tar.gz${NC}"
439
+ read -p "按回车键继续..."
440
+ maintenance_menu
441
+ ;;
442
+ 11)
443
+ show_header
444
+ echo -e "${YELLOW}持续刷新Cookie直到成功...${NC}"
445
+ read -p "请输入最大尝试时间(分钟, 默认60): " max_time
446
+ max_time=${max_time:-60}
447
+ max_seconds=$((max_time * 60))
448
+
449
+ echo -e "${YELLOW}将持续尝试刷新Cookie,最长 ${max_time} 分钟...${NC}"
450
+
451
+ start_time=$(date +%s)
452
+ success=false
453
+ attempt=0
454
+
455
+ while ! $success && [ $(($(date +%s) - start_time)) -lt $max_seconds ]; do
456
+ attempt=$((attempt + 1))
457
+ elapsed=$(($(date +%s) - start_time))
458
+ remaining=$((max_seconds - elapsed))
459
+ remaining_min=$((remaining / 60))
460
+ remaining_sec=$((remaining % 60))
461
+
462
+ echo -e "${YELLOW}尝试 #${attempt}...(剩余时间: ${remaining_min}分${remaining_sec}秒)${NC}"
463
+
464
+ # 运行刷新命令并检查输出
465
+ output=$(npm run refresh-cookies -- --force 2>&1)
466
+ echo "$output"
467
+
468
+ if echo "$output" | grep -q "成功添加新的Cookie" || echo "$output" | grep -q "Successfully added new cookies"; then
469
+ success=true
470
+ echo -e "${GREEN}成功添加新Cookie!${NC}"
471
+ else
472
+ wait_time=$((RANDOM % 61 + 30)) # 30-90秒随机间隔
473
+ echo -e "${YELLOW}等待 ${wait_time} 秒后重试...${NC}"
474
+ sleep $wait_time
475
+ fi
476
+ done
477
+
478
+ if $success; then
479
+ echo -e "${GREEN}成功刷新Cookie!${NC}"
480
+ else
481
+ echo -e "${RED}达到最大尝试时间,未能成功刷新Cookie。${NC}"
482
+ fi
483
+
484
+ read -p "按回车键继续..."
485
+ maintenance_menu
486
+ ;;
487
+ 12)
488
+ main_menu
489
+ ;;
490
+ *)
491
+ echo -e "${RED}无效选项。请重试。${NC}"
492
+ read -p "按回车键继续..."
493
+ maintenance_menu
494
+ ;;
495
+ esac
496
+ }
497
+
498
+ # Main menu function
499
+ main_menu() {
500
+ show_header
501
+ echo -e "${YELLOW}===== 主菜单 =====${NC}"
502
+ echo -e "1) 启动服务 (npm)"
503
+ echo -e "2) 安装配置"
504
+ echo -e "3) 系统维护"
505
+ echo -e "4) 退出"
506
+ echo
507
+ echo -n "请输入选择 [1-4]: "
508
+ read -r choice
509
+
510
+ case $choice in
511
+ 1)
512
+ show_header
513
+ echo -e "${YELLOW}正在使用npm启动服务...${NC}"
514
+ check_nodejs
515
+
516
+ # 检查Node.js服务是否已在运行
517
+ pids=$(pgrep -f "node.*start")
518
+ if [ -n "$pids" ]; then
519
+ echo -e "${YELLOW}服务已在运行,PID: $pids${NC}"
520
+ echo -e "${YELLOW}是否要重启服务?(y/n): ${NC}"
521
+ read -r restart
522
+ if [[ $restart == "y" || $restart == "Y" ]]; then
523
+ kill $pids
524
+ sleep 2
525
+ npm start &
526
+ echo -e "${GREEN}服务已重启${NC}"
527
+ fi
528
+ else
529
+ npm start &
530
+ echo -e "${GREEN}服务已启动${NC}"
531
+ fi
532
+
533
+ echo -e "${GREEN}访问管理界面: http://localhost:3010${NC}"
534
+ read -p "按回车键继续..."
535
+ main_menu
536
+ ;;
537
+ 2)
538
+ installation_menu
539
+ ;;
540
+ 3)
541
+ maintenance_menu
542
+ ;;
543
+ 4)
544
+ show_header
545
+ echo -e "${GREEN}感谢使用Cursor-To-OpenAI简易脚本!${NC}"
546
+ exit 0
547
+ ;;
548
+ *)
549
+ echo -e "${RED}无效选项。请重试。${NC}"
550
+ read -p "按回车键继续..."
551
+ main_menu
552
+ ;;
553
+ esac
554
+ }
555
+
556
+ # Start the script
557
+ main_menu
data/admin.example.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "admin": {
3
+ "username": "your_admin_username",
4
+ "salt": "your_generated_salt",
5
+ "hash": "your_password_hash"
6
+ }
7
+ }
data/admin.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"admin":{"username":"zye784581395","salt":"77ffb4ec378f0bd82dad2816d8f40f46","hash":"57fc611a776b5d317f673114c3512b1c4b6afa472bfd3e7c94de4449266eb11f9b6f919b44797c2f6414b56d823af65fcbf524f6afd117a050dc7dbc76ba6cdb"}}
data/api_keys.example.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "sk-text@example": [
3
+ "user_XXXXXXXXXXXX%3A%3AeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
4
+ ]
5
+ }
data/api_keys.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "123456": [
3
+ "user_01JRSMT134YW8D05T7ZVBBP7JV%3A%3AeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJnb29nbGUtb2F1dGgyfHVzZXJfMDFKUlNNVDEzNFlXOEQwNVQ3WlZCQlA3SlYiLCJ0aW1lIjoiMTc0NTgwMzI1NSIsInJhbmRvbW5lc3MiOiIzYjkxNWI5ZS1mMmJmLTRhNjAiLCJleHAiOjE3NTA5ODcyNTUsImlzcyI6Imh0dHBzOi8vYXV0aGVudGljYXRpb24uY3Vyc29yLnNoIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcyIsImF1ZCI6Imh0dHBzOi8vY3Vyc29yLmNvbSJ9.i_C9uxF1DN6nXlFF5H8UoZPtgtIjpYCeU1hJ59to6rk"
4
+ ],
5
+ "jinzhu1": [
6
+ "user_01JRSMT134YW8D05T7ZVBBP7JV%3A%3AeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJnb29nbGUtb2F1dGgyfHVzZXJfMDFKUlNNVDEzNFlXOEQwNVQ3WlZCQlA3SlYiLCJ0aW1lIjoiMTc0NDg1NDU0NyIsInJhbmRvbW5lc3MiOiI1NGI5OWFhOS03NTFiLTQzNGMiLCJleHAiOjE3NTAwMzg1NDcsImlzcyI6Imh0dHBzOi8vYXV0aGVudGljYXRpb24uY3Vyc29yLnNoIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcyIsImF1ZCI6Imh0dHBzOi8vY3Vyc29yLmNvbSJ9.Sqy7kVfVyjwgTGHJwrwB5elwLZ6-3CcdAhFhwUqUxsE"
7
+ ]
8
+ }
data/invalid_cookies.example.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ [
2
+ "user_XXXXXXXXXXXX%3A%3AeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
3
+ ]
data/invalid_cookies.json ADDED
@@ -0,0 +1 @@
 
 
1
+ []
docker-compose.yaml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.8'
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ image: cursor-to-openai
9
+ volumes:
10
+ - ./data:/app/data
11
+ ports:
12
+ - "3010:3010"
13
+ env_file:
14
+ - .env
manage-emails.js ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const readline = require('readline');
6
+ const dotenv = require('dotenv');
7
+
8
+ // 创建交互式命令行界面
9
+ const rl = readline.createInterface({
10
+ input: process.stdin,
11
+ output: process.stdout
12
+ });
13
+
14
+ // 加载环境变量
15
+ const ENV_FILE_PATH = path.join(process.cwd(), '.env');
16
+ let envContent = '';
17
+ let emailConfigs = [];
18
+
19
+ // 应用密码说明
20
+ function printAppPasswordInstructions() {
21
+ console.log('\n===== 如何创建谷歌应用密码 =====');
22
+ console.log('1. 访问 https://myaccount.google.com/security');
23
+ console.log('2. 在"登录Google"部分,点击"两步验证"');
24
+ console.log(' (如果未启用两步验证,需要先启用)');
25
+ console.log('3. 在页面底部找到"应用密码",点击进入');
26
+ console.log('4. 在"选择应用"下拉菜单中选择"其他(自定义名称)"');
27
+ console.log('5. 输入一个名称,例如"Cursor注册"');
28
+ console.log('6. 点击"生成"');
29
+ console.log('7. 复制生成的16位应用密码(格式如:xxxx xxxx xxxx xxxx)');
30
+ console.log('注意: 应用密码只会显示一次,请务必保存好\n');
31
+ }
32
+
33
+ // 加载当前环境变量和邮箱配置
34
+ function loadEnvironment() {
35
+ try {
36
+ if (!fs.existsSync(ENV_FILE_PATH)) {
37
+ console.error('❌ .env文件不存在,请先运行setup.js进行初始化配置');
38
+ process.exit(1);
39
+ }
40
+
41
+ // 读取原始.env文件内容
42
+ envContent = fs.readFileSync(ENV_FILE_PATH, 'utf8');
43
+
44
+ // 解析环境变量
45
+ dotenv.config();
46
+
47
+ // 尝试解析当前的邮箱配置
48
+ try {
49
+ const configStr = process.env.REGISTER_EMAIL_CONFIGS;
50
+ if (configStr) {
51
+ emailConfigs = JSON.parse(configStr);
52
+ if (!Array.isArray(emailConfigs)) {
53
+ emailConfigs = [];
54
+ }
55
+ }
56
+ } catch (parseErr) {
57
+ console.warn('⚠️ 解析当前邮箱配置出错,将使用空配置');
58
+ emailConfigs = [];
59
+ }
60
+
61
+ return true;
62
+ } catch (error) {
63
+ console.error(`❌ 加载环境变量失败: ${error.message}`);
64
+ return false;
65
+ }
66
+ }
67
+
68
+ // 保存更新后的邮箱配置到.env文件
69
+ function saveEmailConfigs() {
70
+ try {
71
+ // 将邮箱配置格式化为JSON字符串
72
+ const configStr = JSON.stringify(emailConfigs);
73
+
74
+ // 替换.env文件中的配置
75
+ let newEnvContent = '';
76
+
77
+ if (envContent.includes('REGISTER_EMAIL_CONFIGS=')) {
78
+ // 使用正则表达式替换REGISTER_EMAIL_CONFIGS行
79
+ newEnvContent = envContent.replace(
80
+ /REGISTER_EMAIL_CONFIGS=.*/,
81
+ `REGISTER_EMAIL_CONFIGS=${configStr}`
82
+ );
83
+ } else {
84
+ // 如果不存在该配置行,添加到文件末尾
85
+ newEnvContent = `${envContent}\nREGISTER_EMAIL_CONFIGS=${configStr}`;
86
+ }
87
+
88
+ // 同时确保USE_CONFIG_FILE设置为false
89
+ if (newEnvContent.includes('REGISTER_USE_CONFIG_FILE=')) {
90
+ newEnvContent = newEnvContent.replace(
91
+ /REGISTER_USE_CONFIG_FILE=.*/,
92
+ 'REGISTER_USE_CONFIG_FILE=false'
93
+ );
94
+ } else {
95
+ newEnvContent = `${newEnvContent}\nREGISTER_USE_CONFIG_FILE=false`;
96
+ }
97
+
98
+ // 确保EMAIL_SERVER设置为IMAP
99
+ if (newEnvContent.includes('REGISTER_EMAIL_SERVER=')) {
100
+ newEnvContent = newEnvContent.replace(
101
+ /REGISTER_EMAIL_SERVER=.*/,
102
+ 'REGISTER_EMAIL_SERVER=IMAP'
103
+ );
104
+ } else {
105
+ newEnvContent = `${newEnvContent}\nREGISTER_EMAIL_SERVER=IMAP`;
106
+ }
107
+
108
+ // 写入更新后的内容
109
+ fs.writeFileSync(ENV_FILE_PATH, newEnvContent, 'utf8');
110
+
111
+ console.log('✅ 邮箱配置已成功保存到.env文件');
112
+ return true;
113
+ } catch (error) {
114
+ console.error(`❌ 保存邮箱配置失败: ${error.message}`);
115
+ return false;
116
+ }
117
+ }
118
+
119
+ // 显示所有已配置的邮箱
120
+ function displayEmails() {
121
+ console.log('\n===== 当前已配置的邮箱 =====');
122
+
123
+ if (emailConfigs.length === 0) {
124
+ console.log('暂无已配置的邮箱');
125
+ return;
126
+ }
127
+
128
+ emailConfigs.forEach((config, index) => {
129
+ console.log(`[${index + 1}] ${config.email}`);
130
+ console.log(` IMAP服务器: ${config.imap_server}`);
131
+ console.log(` IMAP端口: ${config.imap_port}`);
132
+ console.log(` 用户名: ${config.username}`);
133
+ console.log(` 应用密码: ${config.password}`);
134
+ console.log('');
135
+ });
136
+ }
137
+
138
+ // 添加新邮箱
139
+ function addEmail() {
140
+ console.log('\n===== 添加新邮箱 =====');
141
+ printAppPasswordInstructions();
142
+
143
+ rl.question('请输入Gmail地址: ', (email) => {
144
+ rl.question('请输入Gmail的应用密码 (不是邮箱密码): ', (password) => {
145
+ // 创建新配置
146
+ const newConfig = {
147
+ email: email,
148
+ imap_server: 'imap.gmail.com',
149
+ imap_port: 993,
150
+ username: email,
151
+ password: password
152
+ };
153
+
154
+ // 添加到配置列表
155
+ emailConfigs.push(newConfig);
156
+
157
+ console.log(`\n✅ 已添加邮箱: ${email}`);
158
+
159
+ // 保存到.env文件
160
+ if (saveEmailConfigs()) {
161
+ showMainMenu();
162
+ }
163
+ });
164
+ });
165
+ }
166
+
167
+ // 修改邮箱
168
+ function modifyEmail() {
169
+ if (emailConfigs.length === 0) {
170
+ console.log('\n❌ 当前没有可修改的邮箱。请先添加邮箱。');
171
+ showMainMenu();
172
+ return;
173
+ }
174
+
175
+ console.log('\n===== 修改邮箱 =====');
176
+ displayEmails();
177
+
178
+ rl.question('请输入要修改的邮箱序号 (1-' + emailConfigs.length + '): ', (indexStr) => {
179
+ const index = parseInt(indexStr) - 1;
180
+
181
+ if (isNaN(index) || index < 0 || index >= emailConfigs.length) {
182
+ console.log('\n❌ 无效的序号。请重新选择。');
183
+ modifyEmail();
184
+ return;
185
+ }
186
+
187
+ const currentConfig = emailConfigs[index];
188
+
189
+ console.log(`\n正在修改邮箱: ${currentConfig.email}`);
190
+
191
+ rl.question(`新的Gmail地址 (当前: ${currentConfig.email},直接回车保持不变): `, (email) => {
192
+ const newEmail = email.trim() === '' ? currentConfig.email : email;
193
+
194
+ rl.question('新的应用密码 (直接回车保持不变): ', (password) => {
195
+ const newPassword = password.trim() === '' ? currentConfig.password : password;
196
+
197
+ // 更新配置
198
+ emailConfigs[index] = {
199
+ email: newEmail,
200
+ imap_server: 'imap.gmail.com',
201
+ imap_port: 993,
202
+ username: newEmail,
203
+ password: newPassword
204
+ };
205
+
206
+ console.log(`\n✅ 已修改邮箱配置: ${newEmail}`);
207
+
208
+ // 保存到.env文件
209
+ if (saveEmailConfigs()) {
210
+ showMainMenu();
211
+ }
212
+ });
213
+ });
214
+ });
215
+ }
216
+
217
+ // 删除邮箱
218
+ function deleteEmail() {
219
+ if (emailConfigs.length === 0) {
220
+ console.log('\n❌ 当前没有可删除的邮箱。');
221
+ showMainMenu();
222
+ return;
223
+ }
224
+
225
+ console.log('\n===== 删除邮箱 =====');
226
+ displayEmails();
227
+
228
+ rl.question('请输入要删除的邮箱序号 (1-' + emailConfigs.length + '): ', (indexStr) => {
229
+ const index = parseInt(indexStr) - 1;
230
+
231
+ if (isNaN(index) || index < 0 || index >= emailConfigs.length) {
232
+ console.log('\n❌ 无效的序号。请重新选择。');
233
+ deleteEmail();
234
+ return;
235
+ }
236
+
237
+ const emailToDelete = emailConfigs[index].email;
238
+
239
+ rl.question(`确认删除邮箱 "${emailToDelete}"? (y/n): `, (answer) => {
240
+ if (answer.toLowerCase() === 'y') {
241
+ // 删除邮箱
242
+ emailConfigs.splice(index, 1);
243
+
244
+ console.log(`\n✅ 已删除邮箱: ${emailToDelete}`);
245
+
246
+ // 保存到.env文件
247
+ if (saveEmailConfigs()) {
248
+ showMainMenu();
249
+ }
250
+ } else {
251
+ console.log('\n操作已取消');
252
+ showMainMenu();
253
+ }
254
+ });
255
+ });
256
+ }
257
+
258
+ // 显示主菜单
259
+ function showMainMenu() {
260
+ console.log('\n===== 邮箱配置管理 =====');
261
+ console.log('1. 查看所有邮箱');
262
+ console.log('2. 添加新邮箱');
263
+ console.log('3. 修改邮箱');
264
+ console.log('4. 删除邮箱');
265
+ console.log('0. 退出');
266
+
267
+ rl.question('请选择操作 (0-4): ', (choice) => {
268
+ switch (choice) {
269
+ case '1':
270
+ displayEmails();
271
+ showMainMenu();
272
+ break;
273
+ case '2':
274
+ addEmail();
275
+ break;
276
+ case '3':
277
+ modifyEmail();
278
+ break;
279
+ case '4':
280
+ deleteEmail();
281
+ break;
282
+ case '0':
283
+ console.log('\n✅ 配置完成,退出程序');
284
+ rl.close();
285
+ break;
286
+ default:
287
+ console.log('\n❌ 无效的选择,请重新输入');
288
+ showMainMenu();
289
+ break;
290
+ }
291
+ });
292
+ }
293
+
294
+ // 主函数
295
+ async function main() {
296
+ console.log('===== Cursor-To-OpenAI 邮箱配置管理 =====');
297
+
298
+ // 加载当前配置
299
+ if (loadEnvironment()) {
300
+ // 显示主菜单
301
+ showMainMenu();
302
+ } else {
303
+ console.error('程序退出');
304
+ rl.close();
305
+ }
306
+ }
307
+
308
+ // 运行主函数
309
+ main();
manage-invalid-cookies.js ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // 加载环境变量
2
+ require('dotenv').config();
3
+
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const readline = require('readline');
7
+ const keyManager = require('./src/utils/keyManager');
8
+
9
+ // 创建命令行交互界面
10
+ const rl = readline.createInterface({
11
+ input: process.stdin,
12
+ output: process.stdout
13
+ });
14
+
15
+ // 显示菜单
16
+ function showMenu() {
17
+ console.log('\n===== 无效Cookie管理工具 =====');
18
+ console.log('1. 查看所有无效Cookie');
19
+ console.log('2. 添加无效Cookie');
20
+ console.log('3. 删除特定无效Cookie');
21
+ console.log('4. 清空所有无效Cookie');
22
+ console.log('5. 从API Keys中移除所有无效Cookie');
23
+ console.log('6. 退出');
24
+ console.log('============================');
25
+
26
+ rl.question('请选择操作 (1-6): ', (answer) => {
27
+ switch(answer) {
28
+ case '1':
29
+ listInvalidCookies();
30
+ break;
31
+ case '2':
32
+ addInvalidCookie();
33
+ break;
34
+ case '3':
35
+ removeInvalidCookie();
36
+ break;
37
+ case '4':
38
+ clearAllInvalidCookies();
39
+ break;
40
+ case '5':
41
+ removeInvalidCookiesFromApiKeys();
42
+ break;
43
+ case '6':
44
+ console.log('退出程序');
45
+ rl.close();
46
+ break;
47
+ default:
48
+ console.log('无效的选择,请重新输入');
49
+ showMenu();
50
+ break;
51
+ }
52
+ });
53
+ }
54
+
55
+ // 查看所有无效Cookie
56
+ function listInvalidCookies() {
57
+ const invalidCookies = Array.from(keyManager.getInvalidCookies());
58
+
59
+ console.log('\n===== 所有无效Cookie =====');
60
+ if (invalidCookies.length === 0) {
61
+ console.log('没有无效Cookie');
62
+ } else {
63
+ invalidCookies.forEach((cookie, index) => {
64
+ console.log(`${index + 1}. ${cookie}`);
65
+ });
66
+ }
67
+
68
+ showMenu();
69
+ }
70
+
71
+ // 添加无效Cookie
72
+ function addInvalidCookie() {
73
+ rl.question('\n请输入要添加的无效Cookie: ', (cookie) => {
74
+ if (!cookie.trim()) {
75
+ console.log('Cookie不能为空');
76
+ showMenu();
77
+ return;
78
+ }
79
+
80
+ // 将cookie添加到无效集合
81
+ const invalidCookies = new Set(keyManager.getInvalidCookies());
82
+ invalidCookies.add(cookie.trim());
83
+
84
+ // 保存到文件
85
+ const INVALID_COOKIES_FILE = path.join(__dirname, 'data/invalid_cookies.json');
86
+ try {
87
+ // 确保目录存在
88
+ const dataDir = path.join(__dirname, 'data');
89
+ if (!fs.existsSync(dataDir)) {
90
+ fs.mkdirSync(dataDir, { recursive: true });
91
+ }
92
+
93
+ fs.writeFileSync(INVALID_COOKIES_FILE, JSON.stringify(Array.from(invalidCookies), null, 2), 'utf8');
94
+ console.log('无效Cookie添加成功');
95
+
96
+ // 重新加载无效cookie
97
+ keyManager.loadInvalidCookiesFromFile();
98
+ } catch (err) {
99
+ console.error('保存无效Cookie失败:', err);
100
+ }
101
+
102
+ showMenu();
103
+ });
104
+ }
105
+
106
+ // 删除特定无效Cookie
107
+ function removeInvalidCookie() {
108
+ const invalidCookies = Array.from(keyManager.getInvalidCookies());
109
+
110
+ if (invalidCookies.length === 0) {
111
+ console.log('\n没有无效Cookie可删除');
112
+ showMenu();
113
+ return;
114
+ }
115
+
116
+ console.log('\n===== 所有无效Cookie =====');
117
+ invalidCookies.forEach((cookie, index) => {
118
+ console.log(`${index + 1}. ${cookie}`);
119
+ });
120
+
121
+ rl.question('\n请输入要删除的Cookie编号 (1-' + invalidCookies.length + '): ', (answer) => {
122
+ const index = parseInt(answer) - 1;
123
+
124
+ if (isNaN(index) || index < 0 || index >= invalidCookies.length) {
125
+ console.log('无效的编号');
126
+ showMenu();
127
+ return;
128
+ }
129
+
130
+ const cookieToRemove = invalidCookies[index];
131
+ const result = keyManager.clearInvalidCookie(cookieToRemove);
132
+
133
+ if (result) {
134
+ console.log(`成功删除无效Cookie: ${cookieToRemove}`);
135
+ } else {
136
+ console.log('删除失败');
137
+ }
138
+
139
+ showMenu();
140
+ });
141
+ }
142
+
143
+ // 清空所有无效Cookie
144
+ function clearAllInvalidCookies() {
145
+ rl.question('\n确定要清空所有无效Cookie吗? (y/n): ', (answer) => {
146
+ if (answer.toLowerCase() === 'y') {
147
+ keyManager.clearAllInvalidCookies();
148
+ console.log('所有无效Cookie已清空');
149
+ } else {
150
+ console.log('操作已取消');
151
+ }
152
+
153
+ showMenu();
154
+ });
155
+ }
156
+
157
+ // 从API Keys中移除所有无效Cookie
158
+ function removeInvalidCookiesFromApiKeys() {
159
+ // 重新初始化API Keys,这会自动移除无效cookie
160
+ keyManager.initializeApiKeys();
161
+ console.log('已从API Keys中移除所有无效Cookie');
162
+
163
+ showMenu();
164
+ }
165
+
166
+ // 启动程序
167
+ console.log('正在加载无效Cookie...');
168
+ keyManager.loadInvalidCookiesFromFile();
169
+ showMenu();
node_modules/.bin/acorn ADDED
@@ -0,0 +1 @@
 
 
1
+ ../acorn/bin/acorn
node_modules/.bin/csv-parser ADDED
@@ -0,0 +1 @@
 
 
1
+ ../csv-parser/bin/csv-parser
node_modules/.bin/escodegen ADDED
@@ -0,0 +1 @@
 
 
1
+ ../escodegen/bin/escodegen.js
node_modules/.bin/esgenerate ADDED
@@ -0,0 +1 @@
 
 
1
+ ../escodegen/bin/esgenerate.js
node_modules/.bin/esparse ADDED
@@ -0,0 +1 @@
 
 
1
+ ../esprima/bin/esparse.js
node_modules/.bin/esvalidate ADDED
@@ -0,0 +1 @@
 
 
1
+ ../esprima/bin/esvalidate.js
node_modules/.bin/is-docker ADDED
@@ -0,0 +1 @@
 
 
1
+ ../is-docker/cli.js
node_modules/.bin/is-inside-container ADDED
@@ -0,0 +1 @@
 
 
1
+ ../is-inside-container/cli.js
node_modules/.bin/jsdoc ADDED
@@ -0,0 +1 @@
 
 
1
+ ../jsdoc/jsdoc.js
node_modules/.bin/markdown-it ADDED
@@ -0,0 +1 @@
 
 
1
+ ../markdown-it/bin/markdown-it.mjs
node_modules/.bin/marked ADDED
@@ -0,0 +1 @@
 
 
1
+ ../marked/bin/marked.js
node_modules/.bin/mime ADDED
@@ -0,0 +1 @@
 
 
1
+ ../mime/cli.js
node_modules/.bin/mkdirp ADDED
@@ -0,0 +1 @@
 
 
1
+ ../mkdirp/bin/cmd.js
node_modules/.bin/parser ADDED
@@ -0,0 +1 @@
 
 
1
+ ../@babel/parser/bin/babel-parser.js
node_modules/.bin/pbjs ADDED
@@ -0,0 +1 @@
 
 
1
+ ../protobufjs-cli/bin/pbjs
node_modules/.bin/pbts ADDED
@@ -0,0 +1 @@
 
 
1
+ ../protobufjs-cli/bin/pbts
node_modules/.bin/semver ADDED
@@ -0,0 +1 @@
 
 
1
+ ../semver/bin/semver.js
node_modules/.bin/uglifyjs ADDED
@@ -0,0 +1 @@
 
 
1
+ ../uglify-js/bin/uglifyjs
node_modules/.bin/uuid ADDED
@@ -0,0 +1 @@
 
 
1
+ ../uuid/dist/esm/bin/uuid
node_modules/.package-lock.json ADDED
@@ -0,0 +1,2401 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "cursor-to-openai",
3
+ "version": "1.3.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "node_modules/@babel/helper-string-parser": {
8
+ "version": "7.25.9",
9
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
10
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
11
+ "dev": true,
12
+ "license": "MIT",
13
+ "engines": {
14
+ "node": ">=6.9.0"
15
+ }
16
+ },
17
+ "node_modules/@babel/helper-validator-identifier": {
18
+ "version": "7.25.9",
19
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
20
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
21
+ "dev": true,
22
+ "license": "MIT",
23
+ "engines": {
24
+ "node": ">=6.9.0"
25
+ }
26
+ },
27
+ "node_modules/@babel/parser": {
28
+ "version": "7.26.7",
29
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
30
+ "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
31
+ "dev": true,
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@babel/types": "^7.26.7"
35
+ },
36
+ "bin": {
37
+ "parser": "bin/babel-parser.js"
38
+ },
39
+ "engines": {
40
+ "node": ">=6.0.0"
41
+ }
42
+ },
43
+ "node_modules/@babel/types": {
44
+ "version": "7.26.7",
45
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
46
+ "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
47
+ "dev": true,
48
+ "license": "MIT",
49
+ "dependencies": {
50
+ "@babel/helper-string-parser": "^7.25.9",
51
+ "@babel/helper-validator-identifier": "^7.25.9"
52
+ },
53
+ "engines": {
54
+ "node": ">=6.9.0"
55
+ }
56
+ },
57
+ "node_modules/@jsdoc/salty": {
58
+ "version": "0.2.9",
59
+ "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz",
60
+ "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==",
61
+ "dev": true,
62
+ "license": "Apache-2.0",
63
+ "dependencies": {
64
+ "lodash": "^4.17.21"
65
+ },
66
+ "engines": {
67
+ "node": ">=v12.0.0"
68
+ }
69
+ },
70
+ "node_modules/@octokit/auth-token": {
71
+ "version": "4.0.0",
72
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
73
+ "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
74
+ "license": "MIT",
75
+ "engines": {
76
+ "node": ">= 18"
77
+ }
78
+ },
79
+ "node_modules/@octokit/core": {
80
+ "version": "5.2.0",
81
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
82
+ "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
83
+ "license": "MIT",
84
+ "dependencies": {
85
+ "@octokit/auth-token": "^4.0.0",
86
+ "@octokit/graphql": "^7.1.0",
87
+ "@octokit/request": "^8.3.1",
88
+ "@octokit/request-error": "^5.1.0",
89
+ "@octokit/types": "^13.0.0",
90
+ "before-after-hook": "^2.2.0",
91
+ "universal-user-agent": "^6.0.0"
92
+ },
93
+ "engines": {
94
+ "node": ">= 18"
95
+ }
96
+ },
97
+ "node_modules/@octokit/endpoint": {
98
+ "version": "9.0.6",
99
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
100
+ "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
101
+ "license": "MIT",
102
+ "dependencies": {
103
+ "@octokit/types": "^13.1.0",
104
+ "universal-user-agent": "^6.0.0"
105
+ },
106
+ "engines": {
107
+ "node": ">= 18"
108
+ }
109
+ },
110
+ "node_modules/@octokit/graphql": {
111
+ "version": "7.1.1",
112
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz",
113
+ "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==",
114
+ "license": "MIT",
115
+ "dependencies": {
116
+ "@octokit/request": "^8.4.1",
117
+ "@octokit/types": "^13.0.0",
118
+ "universal-user-agent": "^6.0.0"
119
+ },
120
+ "engines": {
121
+ "node": ">= 18"
122
+ }
123
+ },
124
+ "node_modules/@octokit/openapi-types": {
125
+ "version": "23.0.1",
126
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
127
+ "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
128
+ "license": "MIT"
129
+ },
130
+ "node_modules/@octokit/plugin-paginate-rest": {
131
+ "version": "11.4.4-cjs.2",
132
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz",
133
+ "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==",
134
+ "license": "MIT",
135
+ "dependencies": {
136
+ "@octokit/types": "^13.7.0"
137
+ },
138
+ "engines": {
139
+ "node": ">= 18"
140
+ },
141
+ "peerDependencies": {
142
+ "@octokit/core": "5"
143
+ }
144
+ },
145
+ "node_modules/@octokit/plugin-request-log": {
146
+ "version": "4.0.1",
147
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz",
148
+ "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==",
149
+ "license": "MIT",
150
+ "engines": {
151
+ "node": ">= 18"
152
+ },
153
+ "peerDependencies": {
154
+ "@octokit/core": "5"
155
+ }
156
+ },
157
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
158
+ "version": "13.3.2-cjs.1",
159
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz",
160
+ "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==",
161
+ "license": "MIT",
162
+ "dependencies": {
163
+ "@octokit/types": "^13.8.0"
164
+ },
165
+ "engines": {
166
+ "node": ">= 18"
167
+ },
168
+ "peerDependencies": {
169
+ "@octokit/core": "^5"
170
+ }
171
+ },
172
+ "node_modules/@octokit/request": {
173
+ "version": "8.4.1",
174
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz",
175
+ "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==",
176
+ "license": "MIT",
177
+ "dependencies": {
178
+ "@octokit/endpoint": "^9.0.6",
179
+ "@octokit/request-error": "^5.1.1",
180
+ "@octokit/types": "^13.1.0",
181
+ "universal-user-agent": "^6.0.0"
182
+ },
183
+ "engines": {
184
+ "node": ">= 18"
185
+ }
186
+ },
187
+ "node_modules/@octokit/request-error": {
188
+ "version": "5.1.1",
189
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
190
+ "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
191
+ "license": "MIT",
192
+ "dependencies": {
193
+ "@octokit/types": "^13.1.0",
194
+ "deprecation": "^2.0.0",
195
+ "once": "^1.4.0"
196
+ },
197
+ "engines": {
198
+ "node": ">= 18"
199
+ }
200
+ },
201
+ "node_modules/@octokit/rest": {
202
+ "version": "20.1.2",
203
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz",
204
+ "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==",
205
+ "license": "MIT",
206
+ "dependencies": {
207
+ "@octokit/core": "^5.0.2",
208
+ "@octokit/plugin-paginate-rest": "11.4.4-cjs.2",
209
+ "@octokit/plugin-request-log": "^4.0.0",
210
+ "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1"
211
+ },
212
+ "engines": {
213
+ "node": ">= 18"
214
+ }
215
+ },
216
+ "node_modules/@octokit/types": {
217
+ "version": "13.8.0",
218
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
219
+ "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
220
+ "license": "MIT",
221
+ "dependencies": {
222
+ "@octokit/openapi-types": "^23.0.1"
223
+ }
224
+ },
225
+ "node_modules/@protobufjs/aspromise": {
226
+ "version": "1.1.2",
227
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
228
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
229
+ "license": "BSD-3-Clause"
230
+ },
231
+ "node_modules/@protobufjs/base64": {
232
+ "version": "1.1.2",
233
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
234
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
235
+ "license": "BSD-3-Clause"
236
+ },
237
+ "node_modules/@protobufjs/codegen": {
238
+ "version": "2.0.4",
239
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
240
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
241
+ "license": "BSD-3-Clause"
242
+ },
243
+ "node_modules/@protobufjs/eventemitter": {
244
+ "version": "1.1.0",
245
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
246
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
247
+ "license": "BSD-3-Clause"
248
+ },
249
+ "node_modules/@protobufjs/fetch": {
250
+ "version": "1.1.0",
251
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
252
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
253
+ "license": "BSD-3-Clause",
254
+ "dependencies": {
255
+ "@protobufjs/aspromise": "^1.1.1",
256
+ "@protobufjs/inquire": "^1.1.0"
257
+ }
258
+ },
259
+ "node_modules/@protobufjs/float": {
260
+ "version": "1.0.2",
261
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
262
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
263
+ "license": "BSD-3-Clause"
264
+ },
265
+ "node_modules/@protobufjs/inquire": {
266
+ "version": "1.1.0",
267
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
268
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
269
+ "license": "BSD-3-Clause"
270
+ },
271
+ "node_modules/@protobufjs/path": {
272
+ "version": "1.1.2",
273
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
274
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
275
+ "license": "BSD-3-Clause"
276
+ },
277
+ "node_modules/@protobufjs/pool": {
278
+ "version": "1.1.0",
279
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
280
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
281
+ "license": "BSD-3-Clause"
282
+ },
283
+ "node_modules/@protobufjs/utf8": {
284
+ "version": "1.1.0",
285
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
286
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
287
+ "license": "BSD-3-Clause"
288
+ },
289
+ "node_modules/@types/linkify-it": {
290
+ "version": "5.0.0",
291
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
292
+ "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
293
+ "dev": true,
294
+ "license": "MIT"
295
+ },
296
+ "node_modules/@types/markdown-it": {
297
+ "version": "14.1.2",
298
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
299
+ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
300
+ "dev": true,
301
+ "license": "MIT",
302
+ "dependencies": {
303
+ "@types/linkify-it": "^5",
304
+ "@types/mdurl": "^2"
305
+ }
306
+ },
307
+ "node_modules/@types/mdurl": {
308
+ "version": "2.0.0",
309
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
310
+ "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
311
+ "dev": true,
312
+ "license": "MIT"
313
+ },
314
+ "node_modules/@types/node": {
315
+ "version": "22.10.5",
316
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz",
317
+ "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==",
318
+ "license": "MIT",
319
+ "dependencies": {
320
+ "undici-types": "~6.20.0"
321
+ }
322
+ },
323
+ "node_modules/accepts": {
324
+ "version": "1.3.8",
325
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
326
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
327
+ "license": "MIT",
328
+ "dependencies": {
329
+ "mime-types": "~2.1.34",
330
+ "negotiator": "0.6.3"
331
+ },
332
+ "engines": {
333
+ "node": ">= 0.6"
334
+ }
335
+ },
336
+ "node_modules/acorn": {
337
+ "version": "8.14.0",
338
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
339
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
340
+ "dev": true,
341
+ "license": "MIT",
342
+ "bin": {
343
+ "acorn": "bin/acorn"
344
+ },
345
+ "engines": {
346
+ "node": ">=0.4.0"
347
+ }
348
+ },
349
+ "node_modules/acorn-jsx": {
350
+ "version": "5.3.2",
351
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
352
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
353
+ "dev": true,
354
+ "license": "MIT",
355
+ "peerDependencies": {
356
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
357
+ }
358
+ },
359
+ "node_modules/adm-zip": {
360
+ "version": "0.5.16",
361
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
362
+ "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==",
363
+ "license": "MIT",
364
+ "engines": {
365
+ "node": ">=12.0"
366
+ }
367
+ },
368
+ "node_modules/ansi-styles": {
369
+ "version": "4.3.0",
370
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
371
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
372
+ "dev": true,
373
+ "license": "MIT",
374
+ "dependencies": {
375
+ "color-convert": "^2.0.1"
376
+ },
377
+ "engines": {
378
+ "node": ">=8"
379
+ },
380
+ "funding": {
381
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
382
+ }
383
+ },
384
+ "node_modules/argparse": {
385
+ "version": "2.0.1",
386
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
387
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
388
+ "dev": true,
389
+ "license": "Python-2.0"
390
+ },
391
+ "node_modules/array-flatten": {
392
+ "version": "1.1.1",
393
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
394
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
395
+ "license": "MIT"
396
+ },
397
+ "node_modules/asynckit": {
398
+ "version": "0.4.0",
399
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
400
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
401
+ "license": "MIT"
402
+ },
403
+ "node_modules/axios": {
404
+ "version": "1.8.3",
405
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
406
+ "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
407
+ "license": "MIT",
408
+ "dependencies": {
409
+ "follow-redirects": "^1.15.6",
410
+ "form-data": "^4.0.0",
411
+ "proxy-from-env": "^1.1.0"
412
+ }
413
+ },
414
+ "node_modules/balanced-match": {
415
+ "version": "1.0.2",
416
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
417
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
418
+ "dev": true,
419
+ "license": "MIT"
420
+ },
421
+ "node_modules/basic-auth": {
422
+ "version": "2.0.1",
423
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
424
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
425
+ "license": "MIT",
426
+ "dependencies": {
427
+ "safe-buffer": "5.1.2"
428
+ },
429
+ "engines": {
430
+ "node": ">= 0.8"
431
+ }
432
+ },
433
+ "node_modules/basic-auth/node_modules/safe-buffer": {
434
+ "version": "5.1.2",
435
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
436
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
437
+ "license": "MIT"
438
+ },
439
+ "node_modules/before-after-hook": {
440
+ "version": "2.2.3",
441
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
442
+ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
443
+ "license": "Apache-2.0"
444
+ },
445
+ "node_modules/bluebird": {
446
+ "version": "3.7.2",
447
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
448
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
449
+ "dev": true,
450
+ "license": "MIT"
451
+ },
452
+ "node_modules/body-parser": {
453
+ "version": "1.20.3",
454
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
455
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
456
+ "license": "MIT",
457
+ "dependencies": {
458
+ "bytes": "3.1.2",
459
+ "content-type": "~1.0.5",
460
+ "debug": "2.6.9",
461
+ "depd": "2.0.0",
462
+ "destroy": "1.2.0",
463
+ "http-errors": "2.0.0",
464
+ "iconv-lite": "0.4.24",
465
+ "on-finished": "2.4.1",
466
+ "qs": "6.13.0",
467
+ "raw-body": "2.5.2",
468
+ "type-is": "~1.6.18",
469
+ "unpipe": "1.0.0"
470
+ },
471
+ "engines": {
472
+ "node": ">= 0.8",
473
+ "npm": "1.2.8000 || >= 1.4.16"
474
+ }
475
+ },
476
+ "node_modules/brace-expansion": {
477
+ "version": "2.0.1",
478
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
479
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
480
+ "dev": true,
481
+ "license": "MIT",
482
+ "dependencies": {
483
+ "balanced-match": "^1.0.0"
484
+ }
485
+ },
486
+ "node_modules/buffer-equal-constant-time": {
487
+ "version": "1.0.1",
488
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
489
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
490
+ "license": "BSD-3-Clause"
491
+ },
492
+ "node_modules/bundle-name": {
493
+ "version": "4.1.0",
494
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
495
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
496
+ "license": "MIT",
497
+ "dependencies": {
498
+ "run-applescript": "^7.0.0"
499
+ },
500
+ "engines": {
501
+ "node": ">=18"
502
+ },
503
+ "funding": {
504
+ "url": "https://github.com/sponsors/sindresorhus"
505
+ }
506
+ },
507
+ "node_modules/bytes": {
508
+ "version": "3.1.2",
509
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
510
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
511
+ "license": "MIT",
512
+ "engines": {
513
+ "node": ">= 0.8"
514
+ }
515
+ },
516
+ "node_modules/call-bind-apply-helpers": {
517
+ "version": "1.0.1",
518
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
519
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
520
+ "license": "MIT",
521
+ "dependencies": {
522
+ "es-errors": "^1.3.0",
523
+ "function-bind": "^1.1.2"
524
+ },
525
+ "engines": {
526
+ "node": ">= 0.4"
527
+ }
528
+ },
529
+ "node_modules/call-bound": {
530
+ "version": "1.0.3",
531
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
532
+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
533
+ "license": "MIT",
534
+ "dependencies": {
535
+ "call-bind-apply-helpers": "^1.0.1",
536
+ "get-intrinsic": "^1.2.6"
537
+ },
538
+ "engines": {
539
+ "node": ">= 0.4"
540
+ },
541
+ "funding": {
542
+ "url": "https://github.com/sponsors/ljharb"
543
+ }
544
+ },
545
+ "node_modules/catharsis": {
546
+ "version": "0.9.0",
547
+ "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
548
+ "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
549
+ "dev": true,
550
+ "license": "MIT",
551
+ "dependencies": {
552
+ "lodash": "^4.17.15"
553
+ },
554
+ "engines": {
555
+ "node": ">= 10"
556
+ }
557
+ },
558
+ "node_modules/chalk": {
559
+ "version": "4.1.2",
560
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
561
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
562
+ "dev": true,
563
+ "license": "MIT",
564
+ "dependencies": {
565
+ "ansi-styles": "^4.1.0",
566
+ "supports-color": "^7.1.0"
567
+ },
568
+ "engines": {
569
+ "node": ">=10"
570
+ },
571
+ "funding": {
572
+ "url": "https://github.com/chalk/chalk?sponsor=1"
573
+ }
574
+ },
575
+ "node_modules/color-convert": {
576
+ "version": "2.0.1",
577
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
578
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
579
+ "dev": true,
580
+ "license": "MIT",
581
+ "dependencies": {
582
+ "color-name": "~1.1.4"
583
+ },
584
+ "engines": {
585
+ "node": ">=7.0.0"
586
+ }
587
+ },
588
+ "node_modules/color-name": {
589
+ "version": "1.1.4",
590
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
591
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
592
+ "dev": true,
593
+ "license": "MIT"
594
+ },
595
+ "node_modules/combined-stream": {
596
+ "version": "1.0.8",
597
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
598
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
599
+ "license": "MIT",
600
+ "dependencies": {
601
+ "delayed-stream": "~1.0.0"
602
+ },
603
+ "engines": {
604
+ "node": ">= 0.8"
605
+ }
606
+ },
607
+ "node_modules/content-disposition": {
608
+ "version": "0.5.4",
609
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
610
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
611
+ "license": "MIT",
612
+ "dependencies": {
613
+ "safe-buffer": "5.2.1"
614
+ },
615
+ "engines": {
616
+ "node": ">= 0.6"
617
+ }
618
+ },
619
+ "node_modules/content-type": {
620
+ "version": "1.0.5",
621
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
622
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
623
+ "license": "MIT",
624
+ "engines": {
625
+ "node": ">= 0.6"
626
+ }
627
+ },
628
+ "node_modules/cookie": {
629
+ "version": "0.7.1",
630
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
631
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
632
+ "license": "MIT",
633
+ "engines": {
634
+ "node": ">= 0.6"
635
+ }
636
+ },
637
+ "node_modules/cookie-signature": {
638
+ "version": "1.0.6",
639
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
640
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
641
+ "license": "MIT"
642
+ },
643
+ "node_modules/csv-parser": {
644
+ "version": "3.2.0",
645
+ "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.2.0.tgz",
646
+ "integrity": "sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==",
647
+ "license": "MIT",
648
+ "bin": {
649
+ "csv-parser": "bin/csv-parser"
650
+ },
651
+ "engines": {
652
+ "node": ">= 10"
653
+ }
654
+ },
655
+ "node_modules/debug": {
656
+ "version": "2.6.9",
657
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
658
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
659
+ "license": "MIT",
660
+ "dependencies": {
661
+ "ms": "2.0.0"
662
+ }
663
+ },
664
+ "node_modules/deep-is": {
665
+ "version": "0.1.4",
666
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
667
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
668
+ "dev": true,
669
+ "license": "MIT"
670
+ },
671
+ "node_modules/default-browser": {
672
+ "version": "5.2.1",
673
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
674
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
675
+ "license": "MIT",
676
+ "dependencies": {
677
+ "bundle-name": "^4.1.0",
678
+ "default-browser-id": "^5.0.0"
679
+ },
680
+ "engines": {
681
+ "node": ">=18"
682
+ },
683
+ "funding": {
684
+ "url": "https://github.com/sponsors/sindresorhus"
685
+ }
686
+ },
687
+ "node_modules/default-browser-id": {
688
+ "version": "5.0.0",
689
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
690
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
691
+ "license": "MIT",
692
+ "engines": {
693
+ "node": ">=18"
694
+ },
695
+ "funding": {
696
+ "url": "https://github.com/sponsors/sindresorhus"
697
+ }
698
+ },
699
+ "node_modules/define-lazy-prop": {
700
+ "version": "3.0.0",
701
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
702
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
703
+ "license": "MIT",
704
+ "engines": {
705
+ "node": ">=12"
706
+ },
707
+ "funding": {
708
+ "url": "https://github.com/sponsors/sindresorhus"
709
+ }
710
+ },
711
+ "node_modules/delayed-stream": {
712
+ "version": "1.0.0",
713
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
714
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
715
+ "license": "MIT",
716
+ "engines": {
717
+ "node": ">=0.4.0"
718
+ }
719
+ },
720
+ "node_modules/depd": {
721
+ "version": "2.0.0",
722
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
723
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
724
+ "license": "MIT",
725
+ "engines": {
726
+ "node": ">= 0.8"
727
+ }
728
+ },
729
+ "node_modules/deprecation": {
730
+ "version": "2.3.1",
731
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
732
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
733
+ "license": "ISC"
734
+ },
735
+ "node_modules/destroy": {
736
+ "version": "1.2.0",
737
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
738
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
739
+ "license": "MIT",
740
+ "engines": {
741
+ "node": ">= 0.8",
742
+ "npm": "1.2.8000 || >= 1.4.16"
743
+ }
744
+ },
745
+ "node_modules/dotenv": {
746
+ "version": "16.4.7",
747
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
748
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
749
+ "license": "BSD-2-Clause",
750
+ "engines": {
751
+ "node": ">=12"
752
+ },
753
+ "funding": {
754
+ "url": "https://dotenvx.com"
755
+ }
756
+ },
757
+ "node_modules/dunder-proto": {
758
+ "version": "1.0.1",
759
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
760
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
761
+ "license": "MIT",
762
+ "dependencies": {
763
+ "call-bind-apply-helpers": "^1.0.1",
764
+ "es-errors": "^1.3.0",
765
+ "gopd": "^1.2.0"
766
+ },
767
+ "engines": {
768
+ "node": ">= 0.4"
769
+ }
770
+ },
771
+ "node_modules/ecdsa-sig-formatter": {
772
+ "version": "1.0.11",
773
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
774
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
775
+ "license": "Apache-2.0",
776
+ "dependencies": {
777
+ "safe-buffer": "^5.0.1"
778
+ }
779
+ },
780
+ "node_modules/ee-first": {
781
+ "version": "1.1.1",
782
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
783
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
784
+ "license": "MIT"
785
+ },
786
+ "node_modules/encodeurl": {
787
+ "version": "2.0.0",
788
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
789
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
790
+ "license": "MIT",
791
+ "engines": {
792
+ "node": ">= 0.8"
793
+ }
794
+ },
795
+ "node_modules/entities": {
796
+ "version": "4.5.0",
797
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
798
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
799
+ "dev": true,
800
+ "license": "BSD-2-Clause",
801
+ "engines": {
802
+ "node": ">=0.12"
803
+ },
804
+ "funding": {
805
+ "url": "https://github.com/fb55/entities?sponsor=1"
806
+ }
807
+ },
808
+ "node_modules/es-define-property": {
809
+ "version": "1.0.1",
810
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
811
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
812
+ "license": "MIT",
813
+ "engines": {
814
+ "node": ">= 0.4"
815
+ }
816
+ },
817
+ "node_modules/es-errors": {
818
+ "version": "1.3.0",
819
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
820
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
821
+ "license": "MIT",
822
+ "engines": {
823
+ "node": ">= 0.4"
824
+ }
825
+ },
826
+ "node_modules/es-object-atoms": {
827
+ "version": "1.0.0",
828
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
829
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
830
+ "license": "MIT",
831
+ "dependencies": {
832
+ "es-errors": "^1.3.0"
833
+ },
834
+ "engines": {
835
+ "node": ">= 0.4"
836
+ }
837
+ },
838
+ "node_modules/es-set-tostringtag": {
839
+ "version": "2.1.0",
840
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
841
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
842
+ "license": "MIT",
843
+ "dependencies": {
844
+ "es-errors": "^1.3.0",
845
+ "get-intrinsic": "^1.2.6",
846
+ "has-tostringtag": "^1.0.2",
847
+ "hasown": "^2.0.2"
848
+ },
849
+ "engines": {
850
+ "node": ">= 0.4"
851
+ }
852
+ },
853
+ "node_modules/escape-html": {
854
+ "version": "1.0.3",
855
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
856
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
857
+ "license": "MIT"
858
+ },
859
+ "node_modules/escape-string-regexp": {
860
+ "version": "2.0.0",
861
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
862
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
863
+ "dev": true,
864
+ "license": "MIT",
865
+ "engines": {
866
+ "node": ">=8"
867
+ }
868
+ },
869
+ "node_modules/escodegen": {
870
+ "version": "1.14.3",
871
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
872
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
873
+ "dev": true,
874
+ "license": "BSD-2-Clause",
875
+ "dependencies": {
876
+ "esprima": "^4.0.1",
877
+ "estraverse": "^4.2.0",
878
+ "esutils": "^2.0.2",
879
+ "optionator": "^0.8.1"
880
+ },
881
+ "bin": {
882
+ "escodegen": "bin/escodegen.js",
883
+ "esgenerate": "bin/esgenerate.js"
884
+ },
885
+ "engines": {
886
+ "node": ">=4.0"
887
+ },
888
+ "optionalDependencies": {
889
+ "source-map": "~0.6.1"
890
+ }
891
+ },
892
+ "node_modules/escodegen/node_modules/estraverse": {
893
+ "version": "4.3.0",
894
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
895
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
896
+ "dev": true,
897
+ "license": "BSD-2-Clause",
898
+ "engines": {
899
+ "node": ">=4.0"
900
+ }
901
+ },
902
+ "node_modules/eslint-visitor-keys": {
903
+ "version": "3.4.3",
904
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
905
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
906
+ "dev": true,
907
+ "license": "Apache-2.0",
908
+ "engines": {
909
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
910
+ },
911
+ "funding": {
912
+ "url": "https://opencollective.com/eslint"
913
+ }
914
+ },
915
+ "node_modules/espree": {
916
+ "version": "9.6.1",
917
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
918
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
919
+ "dev": true,
920
+ "license": "BSD-2-Clause",
921
+ "dependencies": {
922
+ "acorn": "^8.9.0",
923
+ "acorn-jsx": "^5.3.2",
924
+ "eslint-visitor-keys": "^3.4.1"
925
+ },
926
+ "engines": {
927
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
928
+ },
929
+ "funding": {
930
+ "url": "https://opencollective.com/eslint"
931
+ }
932
+ },
933
+ "node_modules/esprima": {
934
+ "version": "4.0.1",
935
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
936
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
937
+ "dev": true,
938
+ "license": "BSD-2-Clause",
939
+ "bin": {
940
+ "esparse": "bin/esparse.js",
941
+ "esvalidate": "bin/esvalidate.js"
942
+ },
943
+ "engines": {
944
+ "node": ">=4"
945
+ }
946
+ },
947
+ "node_modules/estraverse": {
948
+ "version": "5.3.0",
949
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
950
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
951
+ "dev": true,
952
+ "license": "BSD-2-Clause",
953
+ "engines": {
954
+ "node": ">=4.0"
955
+ }
956
+ },
957
+ "node_modules/esutils": {
958
+ "version": "2.0.3",
959
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
960
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
961
+ "dev": true,
962
+ "license": "BSD-2-Clause",
963
+ "engines": {
964
+ "node": ">=0.10.0"
965
+ }
966
+ },
967
+ "node_modules/etag": {
968
+ "version": "1.8.1",
969
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
970
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
971
+ "license": "MIT",
972
+ "engines": {
973
+ "node": ">= 0.6"
974
+ }
975
+ },
976
+ "node_modules/express": {
977
+ "version": "4.21.2",
978
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
979
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
980
+ "license": "MIT",
981
+ "dependencies": {
982
+ "accepts": "~1.3.8",
983
+ "array-flatten": "1.1.1",
984
+ "body-parser": "1.20.3",
985
+ "content-disposition": "0.5.4",
986
+ "content-type": "~1.0.4",
987
+ "cookie": "0.7.1",
988
+ "cookie-signature": "1.0.6",
989
+ "debug": "2.6.9",
990
+ "depd": "2.0.0",
991
+ "encodeurl": "~2.0.0",
992
+ "escape-html": "~1.0.3",
993
+ "etag": "~1.8.1",
994
+ "finalhandler": "1.3.1",
995
+ "fresh": "0.5.2",
996
+ "http-errors": "2.0.0",
997
+ "merge-descriptors": "1.0.3",
998
+ "methods": "~1.1.2",
999
+ "on-finished": "2.4.1",
1000
+ "parseurl": "~1.3.3",
1001
+ "path-to-regexp": "0.1.12",
1002
+ "proxy-addr": "~2.0.7",
1003
+ "qs": "6.13.0",
1004
+ "range-parser": "~1.2.1",
1005
+ "safe-buffer": "5.2.1",
1006
+ "send": "0.19.0",
1007
+ "serve-static": "1.16.2",
1008
+ "setprototypeof": "1.2.0",
1009
+ "statuses": "2.0.1",
1010
+ "type-is": "~1.6.18",
1011
+ "utils-merge": "1.0.1",
1012
+ "vary": "~1.1.2"
1013
+ },
1014
+ "engines": {
1015
+ "node": ">= 0.10.0"
1016
+ },
1017
+ "funding": {
1018
+ "type": "opencollective",
1019
+ "url": "https://opencollective.com/express"
1020
+ }
1021
+ },
1022
+ "node_modules/fast-levenshtein": {
1023
+ "version": "2.0.6",
1024
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1025
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
1026
+ "dev": true,
1027
+ "license": "MIT"
1028
+ },
1029
+ "node_modules/finalhandler": {
1030
+ "version": "1.3.1",
1031
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
1032
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
1033
+ "license": "MIT",
1034
+ "dependencies": {
1035
+ "debug": "2.6.9",
1036
+ "encodeurl": "~2.0.0",
1037
+ "escape-html": "~1.0.3",
1038
+ "on-finished": "2.4.1",
1039
+ "parseurl": "~1.3.3",
1040
+ "statuses": "2.0.1",
1041
+ "unpipe": "~1.0.0"
1042
+ },
1043
+ "engines": {
1044
+ "node": ">= 0.8"
1045
+ }
1046
+ },
1047
+ "node_modules/follow-redirects": {
1048
+ "version": "1.15.9",
1049
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
1050
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
1051
+ "funding": [
1052
+ {
1053
+ "type": "individual",
1054
+ "url": "https://github.com/sponsors/RubenVerborgh"
1055
+ }
1056
+ ],
1057
+ "license": "MIT",
1058
+ "engines": {
1059
+ "node": ">=4.0"
1060
+ },
1061
+ "peerDependenciesMeta": {
1062
+ "debug": {
1063
+ "optional": true
1064
+ }
1065
+ }
1066
+ },
1067
+ "node_modules/form-data": {
1068
+ "version": "4.0.2",
1069
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
1070
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
1071
+ "license": "MIT",
1072
+ "dependencies": {
1073
+ "asynckit": "^0.4.0",
1074
+ "combined-stream": "^1.0.8",
1075
+ "es-set-tostringtag": "^2.1.0",
1076
+ "mime-types": "^2.1.12"
1077
+ },
1078
+ "engines": {
1079
+ "node": ">= 6"
1080
+ }
1081
+ },
1082
+ "node_modules/forwarded": {
1083
+ "version": "0.2.0",
1084
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1085
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
1086
+ "license": "MIT",
1087
+ "engines": {
1088
+ "node": ">= 0.6"
1089
+ }
1090
+ },
1091
+ "node_modules/fresh": {
1092
+ "version": "0.5.2",
1093
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1094
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
1095
+ "license": "MIT",
1096
+ "engines": {
1097
+ "node": ">= 0.6"
1098
+ }
1099
+ },
1100
+ "node_modules/fs.realpath": {
1101
+ "version": "1.0.0",
1102
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1103
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1104
+ "dev": true,
1105
+ "license": "ISC"
1106
+ },
1107
+ "node_modules/function-bind": {
1108
+ "version": "1.1.2",
1109
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1110
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1111
+ "license": "MIT",
1112
+ "funding": {
1113
+ "url": "https://github.com/sponsors/ljharb"
1114
+ }
1115
+ },
1116
+ "node_modules/get-intrinsic": {
1117
+ "version": "1.2.7",
1118
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
1119
+ "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
1120
+ "license": "MIT",
1121
+ "dependencies": {
1122
+ "call-bind-apply-helpers": "^1.0.1",
1123
+ "es-define-property": "^1.0.1",
1124
+ "es-errors": "^1.3.0",
1125
+ "es-object-atoms": "^1.0.0",
1126
+ "function-bind": "^1.1.2",
1127
+ "get-proto": "^1.0.0",
1128
+ "gopd": "^1.2.0",
1129
+ "has-symbols": "^1.1.0",
1130
+ "hasown": "^2.0.2",
1131
+ "math-intrinsics": "^1.1.0"
1132
+ },
1133
+ "engines": {
1134
+ "node": ">= 0.4"
1135
+ },
1136
+ "funding": {
1137
+ "url": "https://github.com/sponsors/ljharb"
1138
+ }
1139
+ },
1140
+ "node_modules/get-proto": {
1141
+ "version": "1.0.1",
1142
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
1143
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
1144
+ "license": "MIT",
1145
+ "dependencies": {
1146
+ "dunder-proto": "^1.0.1",
1147
+ "es-object-atoms": "^1.0.0"
1148
+ },
1149
+ "engines": {
1150
+ "node": ">= 0.4"
1151
+ }
1152
+ },
1153
+ "node_modules/glob": {
1154
+ "version": "8.1.0",
1155
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
1156
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
1157
+ "deprecated": "Glob versions prior to v9 are no longer supported",
1158
+ "dev": true,
1159
+ "license": "ISC",
1160
+ "dependencies": {
1161
+ "fs.realpath": "^1.0.0",
1162
+ "inflight": "^1.0.4",
1163
+ "inherits": "2",
1164
+ "minimatch": "^5.0.1",
1165
+ "once": "^1.3.0"
1166
+ },
1167
+ "engines": {
1168
+ "node": ">=12"
1169
+ },
1170
+ "funding": {
1171
+ "url": "https://github.com/sponsors/isaacs"
1172
+ }
1173
+ },
1174
+ "node_modules/gopd": {
1175
+ "version": "1.2.0",
1176
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
1177
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
1178
+ "license": "MIT",
1179
+ "engines": {
1180
+ "node": ">= 0.4"
1181
+ },
1182
+ "funding": {
1183
+ "url": "https://github.com/sponsors/ljharb"
1184
+ }
1185
+ },
1186
+ "node_modules/graceful-fs": {
1187
+ "version": "4.2.11",
1188
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
1189
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1190
+ "dev": true,
1191
+ "license": "ISC"
1192
+ },
1193
+ "node_modules/has-flag": {
1194
+ "version": "4.0.0",
1195
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1196
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1197
+ "dev": true,
1198
+ "license": "MIT",
1199
+ "engines": {
1200
+ "node": ">=8"
1201
+ }
1202
+ },
1203
+ "node_modules/has-symbols": {
1204
+ "version": "1.1.0",
1205
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1206
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
1207
+ "license": "MIT",
1208
+ "engines": {
1209
+ "node": ">= 0.4"
1210
+ },
1211
+ "funding": {
1212
+ "url": "https://github.com/sponsors/ljharb"
1213
+ }
1214
+ },
1215
+ "node_modules/has-tostringtag": {
1216
+ "version": "1.0.2",
1217
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
1218
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
1219
+ "license": "MIT",
1220
+ "dependencies": {
1221
+ "has-symbols": "^1.0.3"
1222
+ },
1223
+ "engines": {
1224
+ "node": ">= 0.4"
1225
+ },
1226
+ "funding": {
1227
+ "url": "https://github.com/sponsors/ljharb"
1228
+ }
1229
+ },
1230
+ "node_modules/hasown": {
1231
+ "version": "2.0.2",
1232
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1233
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1234
+ "license": "MIT",
1235
+ "dependencies": {
1236
+ "function-bind": "^1.1.2"
1237
+ },
1238
+ "engines": {
1239
+ "node": ">= 0.4"
1240
+ }
1241
+ },
1242
+ "node_modules/http-errors": {
1243
+ "version": "2.0.0",
1244
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1245
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1246
+ "license": "MIT",
1247
+ "dependencies": {
1248
+ "depd": "2.0.0",
1249
+ "inherits": "2.0.4",
1250
+ "setprototypeof": "1.2.0",
1251
+ "statuses": "2.0.1",
1252
+ "toidentifier": "1.0.1"
1253
+ },
1254
+ "engines": {
1255
+ "node": ">= 0.8"
1256
+ }
1257
+ },
1258
+ "node_modules/iconv-lite": {
1259
+ "version": "0.4.24",
1260
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1261
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1262
+ "license": "MIT",
1263
+ "dependencies": {
1264
+ "safer-buffer": ">= 2.1.2 < 3"
1265
+ },
1266
+ "engines": {
1267
+ "node": ">=0.10.0"
1268
+ }
1269
+ },
1270
+ "node_modules/inflight": {
1271
+ "version": "1.0.6",
1272
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1273
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1274
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
1275
+ "dev": true,
1276
+ "license": "ISC",
1277
+ "dependencies": {
1278
+ "once": "^1.3.0",
1279
+ "wrappy": "1"
1280
+ }
1281
+ },
1282
+ "node_modules/inherits": {
1283
+ "version": "2.0.4",
1284
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1285
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1286
+ "license": "ISC"
1287
+ },
1288
+ "node_modules/ipaddr.js": {
1289
+ "version": "1.9.1",
1290
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1291
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1292
+ "license": "MIT",
1293
+ "engines": {
1294
+ "node": ">= 0.10"
1295
+ }
1296
+ },
1297
+ "node_modules/is-docker": {
1298
+ "version": "3.0.0",
1299
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
1300
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
1301
+ "license": "MIT",
1302
+ "bin": {
1303
+ "is-docker": "cli.js"
1304
+ },
1305
+ "engines": {
1306
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1307
+ },
1308
+ "funding": {
1309
+ "url": "https://github.com/sponsors/sindresorhus"
1310
+ }
1311
+ },
1312
+ "node_modules/is-inside-container": {
1313
+ "version": "1.0.0",
1314
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
1315
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
1316
+ "license": "MIT",
1317
+ "dependencies": {
1318
+ "is-docker": "^3.0.0"
1319
+ },
1320
+ "bin": {
1321
+ "is-inside-container": "cli.js"
1322
+ },
1323
+ "engines": {
1324
+ "node": ">=14.16"
1325
+ },
1326
+ "funding": {
1327
+ "url": "https://github.com/sponsors/sindresorhus"
1328
+ }
1329
+ },
1330
+ "node_modules/is-wsl": {
1331
+ "version": "3.1.0",
1332
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
1333
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
1334
+ "license": "MIT",
1335
+ "dependencies": {
1336
+ "is-inside-container": "^1.0.0"
1337
+ },
1338
+ "engines": {
1339
+ "node": ">=16"
1340
+ },
1341
+ "funding": {
1342
+ "url": "https://github.com/sponsors/sindresorhus"
1343
+ }
1344
+ },
1345
+ "node_modules/js2xmlparser": {
1346
+ "version": "4.0.2",
1347
+ "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
1348
+ "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
1349
+ "dev": true,
1350
+ "license": "Apache-2.0",
1351
+ "dependencies": {
1352
+ "xmlcreate": "^2.0.4"
1353
+ }
1354
+ },
1355
+ "node_modules/jsdoc": {
1356
+ "version": "4.0.4",
1357
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz",
1358
+ "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==",
1359
+ "dev": true,
1360
+ "license": "Apache-2.0",
1361
+ "dependencies": {
1362
+ "@babel/parser": "^7.20.15",
1363
+ "@jsdoc/salty": "^0.2.1",
1364
+ "@types/markdown-it": "^14.1.1",
1365
+ "bluebird": "^3.7.2",
1366
+ "catharsis": "^0.9.0",
1367
+ "escape-string-regexp": "^2.0.0",
1368
+ "js2xmlparser": "^4.0.2",
1369
+ "klaw": "^3.0.0",
1370
+ "markdown-it": "^14.1.0",
1371
+ "markdown-it-anchor": "^8.6.7",
1372
+ "marked": "^4.0.10",
1373
+ "mkdirp": "^1.0.4",
1374
+ "requizzle": "^0.2.3",
1375
+ "strip-json-comments": "^3.1.0",
1376
+ "underscore": "~1.13.2"
1377
+ },
1378
+ "bin": {
1379
+ "jsdoc": "jsdoc.js"
1380
+ },
1381
+ "engines": {
1382
+ "node": ">=12.0.0"
1383
+ }
1384
+ },
1385
+ "node_modules/jsonwebtoken": {
1386
+ "version": "9.0.2",
1387
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
1388
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
1389
+ "license": "MIT",
1390
+ "dependencies": {
1391
+ "jws": "^3.2.2",
1392
+ "lodash.includes": "^4.3.0",
1393
+ "lodash.isboolean": "^3.0.3",
1394
+ "lodash.isinteger": "^4.0.4",
1395
+ "lodash.isnumber": "^3.0.3",
1396
+ "lodash.isplainobject": "^4.0.6",
1397
+ "lodash.isstring": "^4.0.1",
1398
+ "lodash.once": "^4.0.0",
1399
+ "ms": "^2.1.1",
1400
+ "semver": "^7.5.4"
1401
+ },
1402
+ "engines": {
1403
+ "node": ">=12",
1404
+ "npm": ">=6"
1405
+ }
1406
+ },
1407
+ "node_modules/jsonwebtoken/node_modules/ms": {
1408
+ "version": "2.1.3",
1409
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1410
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1411
+ "license": "MIT"
1412
+ },
1413
+ "node_modules/jwa": {
1414
+ "version": "1.4.1",
1415
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
1416
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
1417
+ "license": "MIT",
1418
+ "dependencies": {
1419
+ "buffer-equal-constant-time": "1.0.1",
1420
+ "ecdsa-sig-formatter": "1.0.11",
1421
+ "safe-buffer": "^5.0.1"
1422
+ }
1423
+ },
1424
+ "node_modules/jws": {
1425
+ "version": "3.2.2",
1426
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
1427
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
1428
+ "license": "MIT",
1429
+ "dependencies": {
1430
+ "jwa": "^1.4.1",
1431
+ "safe-buffer": "^5.0.1"
1432
+ }
1433
+ },
1434
+ "node_modules/klaw": {
1435
+ "version": "3.0.0",
1436
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
1437
+ "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
1438
+ "dev": true,
1439
+ "license": "MIT",
1440
+ "dependencies": {
1441
+ "graceful-fs": "^4.1.9"
1442
+ }
1443
+ },
1444
+ "node_modules/levn": {
1445
+ "version": "0.3.0",
1446
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1447
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
1448
+ "dev": true,
1449
+ "license": "MIT",
1450
+ "dependencies": {
1451
+ "prelude-ls": "~1.1.2",
1452
+ "type-check": "~0.3.2"
1453
+ },
1454
+ "engines": {
1455
+ "node": ">= 0.8.0"
1456
+ }
1457
+ },
1458
+ "node_modules/linkify-it": {
1459
+ "version": "5.0.0",
1460
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
1461
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
1462
+ "dev": true,
1463
+ "license": "MIT",
1464
+ "dependencies": {
1465
+ "uc.micro": "^2.0.0"
1466
+ }
1467
+ },
1468
+ "node_modules/lodash": {
1469
+ "version": "4.17.21",
1470
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1471
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1472
+ "dev": true,
1473
+ "license": "MIT"
1474
+ },
1475
+ "node_modules/lodash.includes": {
1476
+ "version": "4.3.0",
1477
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
1478
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
1479
+ "license": "MIT"
1480
+ },
1481
+ "node_modules/lodash.isboolean": {
1482
+ "version": "3.0.3",
1483
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
1484
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
1485
+ "license": "MIT"
1486
+ },
1487
+ "node_modules/lodash.isinteger": {
1488
+ "version": "4.0.4",
1489
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
1490
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
1491
+ "license": "MIT"
1492
+ },
1493
+ "node_modules/lodash.isnumber": {
1494
+ "version": "3.0.3",
1495
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
1496
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
1497
+ "license": "MIT"
1498
+ },
1499
+ "node_modules/lodash.isplainobject": {
1500
+ "version": "4.0.6",
1501
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1502
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
1503
+ "license": "MIT"
1504
+ },
1505
+ "node_modules/lodash.isstring": {
1506
+ "version": "4.0.1",
1507
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
1508
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
1509
+ "license": "MIT"
1510
+ },
1511
+ "node_modules/lodash.once": {
1512
+ "version": "4.1.1",
1513
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
1514
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
1515
+ "license": "MIT"
1516
+ },
1517
+ "node_modules/long": {
1518
+ "version": "5.2.4",
1519
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz",
1520
+ "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==",
1521
+ "license": "Apache-2.0"
1522
+ },
1523
+ "node_modules/markdown-it": {
1524
+ "version": "14.1.0",
1525
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
1526
+ "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
1527
+ "dev": true,
1528
+ "license": "MIT",
1529
+ "dependencies": {
1530
+ "argparse": "^2.0.1",
1531
+ "entities": "^4.4.0",
1532
+ "linkify-it": "^5.0.0",
1533
+ "mdurl": "^2.0.0",
1534
+ "punycode.js": "^2.3.1",
1535
+ "uc.micro": "^2.1.0"
1536
+ },
1537
+ "bin": {
1538
+ "markdown-it": "bin/markdown-it.mjs"
1539
+ }
1540
+ },
1541
+ "node_modules/markdown-it-anchor": {
1542
+ "version": "8.6.7",
1543
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
1544
+ "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
1545
+ "dev": true,
1546
+ "license": "Unlicense",
1547
+ "peerDependencies": {
1548
+ "@types/markdown-it": "*",
1549
+ "markdown-it": "*"
1550
+ }
1551
+ },
1552
+ "node_modules/marked": {
1553
+ "version": "4.3.0",
1554
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
1555
+ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
1556
+ "dev": true,
1557
+ "license": "MIT",
1558
+ "bin": {
1559
+ "marked": "bin/marked.js"
1560
+ },
1561
+ "engines": {
1562
+ "node": ">= 12"
1563
+ }
1564
+ },
1565
+ "node_modules/math-intrinsics": {
1566
+ "version": "1.1.0",
1567
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1568
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
1569
+ "license": "MIT",
1570
+ "engines": {
1571
+ "node": ">= 0.4"
1572
+ }
1573
+ },
1574
+ "node_modules/mdurl": {
1575
+ "version": "2.0.0",
1576
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
1577
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
1578
+ "dev": true,
1579
+ "license": "MIT"
1580
+ },
1581
+ "node_modules/media-typer": {
1582
+ "version": "0.3.0",
1583
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1584
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1585
+ "license": "MIT",
1586
+ "engines": {
1587
+ "node": ">= 0.6"
1588
+ }
1589
+ },
1590
+ "node_modules/merge-descriptors": {
1591
+ "version": "1.0.3",
1592
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
1593
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
1594
+ "license": "MIT",
1595
+ "funding": {
1596
+ "url": "https://github.com/sponsors/sindresorhus"
1597
+ }
1598
+ },
1599
+ "node_modules/methods": {
1600
+ "version": "1.1.2",
1601
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1602
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1603
+ "license": "MIT",
1604
+ "engines": {
1605
+ "node": ">= 0.6"
1606
+ }
1607
+ },
1608
+ "node_modules/mime": {
1609
+ "version": "1.6.0",
1610
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1611
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1612
+ "license": "MIT",
1613
+ "bin": {
1614
+ "mime": "cli.js"
1615
+ },
1616
+ "engines": {
1617
+ "node": ">=4"
1618
+ }
1619
+ },
1620
+ "node_modules/mime-db": {
1621
+ "version": "1.52.0",
1622
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1623
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1624
+ "license": "MIT",
1625
+ "engines": {
1626
+ "node": ">= 0.6"
1627
+ }
1628
+ },
1629
+ "node_modules/mime-types": {
1630
+ "version": "2.1.35",
1631
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1632
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1633
+ "license": "MIT",
1634
+ "dependencies": {
1635
+ "mime-db": "1.52.0"
1636
+ },
1637
+ "engines": {
1638
+ "node": ">= 0.6"
1639
+ }
1640
+ },
1641
+ "node_modules/minimatch": {
1642
+ "version": "5.1.6",
1643
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
1644
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
1645
+ "dev": true,
1646
+ "license": "ISC",
1647
+ "dependencies": {
1648
+ "brace-expansion": "^2.0.1"
1649
+ },
1650
+ "engines": {
1651
+ "node": ">=10"
1652
+ }
1653
+ },
1654
+ "node_modules/minimist": {
1655
+ "version": "1.2.8",
1656
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1657
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1658
+ "dev": true,
1659
+ "license": "MIT",
1660
+ "funding": {
1661
+ "url": "https://github.com/sponsors/ljharb"
1662
+ }
1663
+ },
1664
+ "node_modules/mkdirp": {
1665
+ "version": "1.0.4",
1666
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1667
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1668
+ "dev": true,
1669
+ "license": "MIT",
1670
+ "bin": {
1671
+ "mkdirp": "bin/cmd.js"
1672
+ },
1673
+ "engines": {
1674
+ "node": ">=10"
1675
+ }
1676
+ },
1677
+ "node_modules/morgan": {
1678
+ "version": "1.10.0",
1679
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
1680
+ "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
1681
+ "license": "MIT",
1682
+ "dependencies": {
1683
+ "basic-auth": "~2.0.1",
1684
+ "debug": "2.6.9",
1685
+ "depd": "~2.0.0",
1686
+ "on-finished": "~2.3.0",
1687
+ "on-headers": "~1.0.2"
1688
+ },
1689
+ "engines": {
1690
+ "node": ">= 0.8.0"
1691
+ }
1692
+ },
1693
+ "node_modules/morgan/node_modules/on-finished": {
1694
+ "version": "2.3.0",
1695
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1696
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
1697
+ "license": "MIT",
1698
+ "dependencies": {
1699
+ "ee-first": "1.1.1"
1700
+ },
1701
+ "engines": {
1702
+ "node": ">= 0.8"
1703
+ }
1704
+ },
1705
+ "node_modules/ms": {
1706
+ "version": "2.0.0",
1707
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1708
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1709
+ "license": "MIT"
1710
+ },
1711
+ "node_modules/negotiator": {
1712
+ "version": "0.6.3",
1713
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1714
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1715
+ "license": "MIT",
1716
+ "engines": {
1717
+ "node": ">= 0.6"
1718
+ }
1719
+ },
1720
+ "node_modules/node-cron": {
1721
+ "version": "3.0.3",
1722
+ "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz",
1723
+ "integrity": "sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==",
1724
+ "license": "ISC",
1725
+ "dependencies": {
1726
+ "uuid": "8.3.2"
1727
+ },
1728
+ "engines": {
1729
+ "node": ">=6.0.0"
1730
+ }
1731
+ },
1732
+ "node_modules/node-cron/node_modules/uuid": {
1733
+ "version": "8.3.2",
1734
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
1735
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
1736
+ "license": "MIT",
1737
+ "bin": {
1738
+ "uuid": "dist/bin/uuid"
1739
+ }
1740
+ },
1741
+ "node_modules/node-fetch": {
1742
+ "version": "2.7.0",
1743
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1744
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1745
+ "license": "MIT",
1746
+ "dependencies": {
1747
+ "whatwg-url": "^5.0.0"
1748
+ },
1749
+ "engines": {
1750
+ "node": "4.x || >=6.0.0"
1751
+ },
1752
+ "peerDependencies": {
1753
+ "encoding": "^0.1.0"
1754
+ },
1755
+ "peerDependenciesMeta": {
1756
+ "encoding": {
1757
+ "optional": true
1758
+ }
1759
+ }
1760
+ },
1761
+ "node_modules/object-inspect": {
1762
+ "version": "1.13.3",
1763
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
1764
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
1765
+ "license": "MIT",
1766
+ "engines": {
1767
+ "node": ">= 0.4"
1768
+ },
1769
+ "funding": {
1770
+ "url": "https://github.com/sponsors/ljharb"
1771
+ }
1772
+ },
1773
+ "node_modules/on-finished": {
1774
+ "version": "2.4.1",
1775
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1776
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1777
+ "license": "MIT",
1778
+ "dependencies": {
1779
+ "ee-first": "1.1.1"
1780
+ },
1781
+ "engines": {
1782
+ "node": ">= 0.8"
1783
+ }
1784
+ },
1785
+ "node_modules/on-headers": {
1786
+ "version": "1.0.2",
1787
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1788
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
1789
+ "license": "MIT",
1790
+ "engines": {
1791
+ "node": ">= 0.8"
1792
+ }
1793
+ },
1794
+ "node_modules/once": {
1795
+ "version": "1.4.0",
1796
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1797
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1798
+ "license": "ISC",
1799
+ "dependencies": {
1800
+ "wrappy": "1"
1801
+ }
1802
+ },
1803
+ "node_modules/open": {
1804
+ "version": "10.1.0",
1805
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
1806
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
1807
+ "license": "MIT",
1808
+ "dependencies": {
1809
+ "default-browser": "^5.2.1",
1810
+ "define-lazy-prop": "^3.0.0",
1811
+ "is-inside-container": "^1.0.0",
1812
+ "is-wsl": "^3.1.0"
1813
+ },
1814
+ "engines": {
1815
+ "node": ">=18"
1816
+ },
1817
+ "funding": {
1818
+ "url": "https://github.com/sponsors/sindresorhus"
1819
+ }
1820
+ },
1821
+ "node_modules/optionator": {
1822
+ "version": "0.8.3",
1823
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1824
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1825
+ "dev": true,
1826
+ "license": "MIT",
1827
+ "dependencies": {
1828
+ "deep-is": "~0.1.3",
1829
+ "fast-levenshtein": "~2.0.6",
1830
+ "levn": "~0.3.0",
1831
+ "prelude-ls": "~1.1.2",
1832
+ "type-check": "~0.3.2",
1833
+ "word-wrap": "~1.2.3"
1834
+ },
1835
+ "engines": {
1836
+ "node": ">= 0.8.0"
1837
+ }
1838
+ },
1839
+ "node_modules/parseurl": {
1840
+ "version": "1.3.3",
1841
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1842
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1843
+ "license": "MIT",
1844
+ "engines": {
1845
+ "node": ">= 0.8"
1846
+ }
1847
+ },
1848
+ "node_modules/path-to-regexp": {
1849
+ "version": "0.1.12",
1850
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
1851
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
1852
+ "license": "MIT"
1853
+ },
1854
+ "node_modules/prelude-ls": {
1855
+ "version": "1.1.2",
1856
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1857
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
1858
+ "dev": true,
1859
+ "engines": {
1860
+ "node": ">= 0.8.0"
1861
+ }
1862
+ },
1863
+ "node_modules/protobufjs": {
1864
+ "version": "7.4.0",
1865
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
1866
+ "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
1867
+ "hasInstallScript": true,
1868
+ "license": "BSD-3-Clause",
1869
+ "dependencies": {
1870
+ "@protobufjs/aspromise": "^1.1.2",
1871
+ "@protobufjs/base64": "^1.1.2",
1872
+ "@protobufjs/codegen": "^2.0.4",
1873
+ "@protobufjs/eventemitter": "^1.1.0",
1874
+ "@protobufjs/fetch": "^1.1.0",
1875
+ "@protobufjs/float": "^1.0.2",
1876
+ "@protobufjs/inquire": "^1.1.0",
1877
+ "@protobufjs/path": "^1.1.2",
1878
+ "@protobufjs/pool": "^1.1.0",
1879
+ "@protobufjs/utf8": "^1.1.0",
1880
+ "@types/node": ">=13.7.0",
1881
+ "long": "^5.0.0"
1882
+ },
1883
+ "engines": {
1884
+ "node": ">=12.0.0"
1885
+ }
1886
+ },
1887
+ "node_modules/protobufjs-cli": {
1888
+ "version": "1.1.3",
1889
+ "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.3.tgz",
1890
+ "integrity": "sha512-MqD10lqF+FMsOayFiNOdOGNlXc4iKDCf0ZQPkPR+gizYh9gqUeGTWulABUCdI+N67w5RfJ6xhgX4J8pa8qmMXQ==",
1891
+ "dev": true,
1892
+ "license": "BSD-3-Clause",
1893
+ "dependencies": {
1894
+ "chalk": "^4.0.0",
1895
+ "escodegen": "^1.13.0",
1896
+ "espree": "^9.0.0",
1897
+ "estraverse": "^5.1.0",
1898
+ "glob": "^8.0.0",
1899
+ "jsdoc": "^4.0.0",
1900
+ "minimist": "^1.2.0",
1901
+ "semver": "^7.1.2",
1902
+ "tmp": "^0.2.1",
1903
+ "uglify-js": "^3.7.7"
1904
+ },
1905
+ "bin": {
1906
+ "pbjs": "bin/pbjs",
1907
+ "pbts": "bin/pbts"
1908
+ },
1909
+ "engines": {
1910
+ "node": ">=12.0.0"
1911
+ },
1912
+ "peerDependencies": {
1913
+ "protobufjs": "^7.0.0"
1914
+ }
1915
+ },
1916
+ "node_modules/proxy-addr": {
1917
+ "version": "2.0.7",
1918
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1919
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1920
+ "license": "MIT",
1921
+ "dependencies": {
1922
+ "forwarded": "0.2.0",
1923
+ "ipaddr.js": "1.9.1"
1924
+ },
1925
+ "engines": {
1926
+ "node": ">= 0.10"
1927
+ }
1928
+ },
1929
+ "node_modules/proxy-from-env": {
1930
+ "version": "1.1.0",
1931
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1932
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
1933
+ "license": "MIT"
1934
+ },
1935
+ "node_modules/punycode.js": {
1936
+ "version": "2.3.1",
1937
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
1938
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
1939
+ "dev": true,
1940
+ "license": "MIT",
1941
+ "engines": {
1942
+ "node": ">=6"
1943
+ }
1944
+ },
1945
+ "node_modules/qs": {
1946
+ "version": "6.13.0",
1947
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
1948
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
1949
+ "license": "BSD-3-Clause",
1950
+ "dependencies": {
1951
+ "side-channel": "^1.0.6"
1952
+ },
1953
+ "engines": {
1954
+ "node": ">=0.6"
1955
+ },
1956
+ "funding": {
1957
+ "url": "https://github.com/sponsors/ljharb"
1958
+ }
1959
+ },
1960
+ "node_modules/range-parser": {
1961
+ "version": "1.2.1",
1962
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1963
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1964
+ "license": "MIT",
1965
+ "engines": {
1966
+ "node": ">= 0.6"
1967
+ }
1968
+ },
1969
+ "node_modules/raw-body": {
1970
+ "version": "2.5.2",
1971
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1972
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1973
+ "license": "MIT",
1974
+ "dependencies": {
1975
+ "bytes": "3.1.2",
1976
+ "http-errors": "2.0.0",
1977
+ "iconv-lite": "0.4.24",
1978
+ "unpipe": "1.0.0"
1979
+ },
1980
+ "engines": {
1981
+ "node": ">= 0.8"
1982
+ }
1983
+ },
1984
+ "node_modules/requizzle": {
1985
+ "version": "0.2.4",
1986
+ "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz",
1987
+ "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==",
1988
+ "dev": true,
1989
+ "license": "MIT",
1990
+ "dependencies": {
1991
+ "lodash": "^4.17.21"
1992
+ }
1993
+ },
1994
+ "node_modules/run-applescript": {
1995
+ "version": "7.0.0",
1996
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
1997
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
1998
+ "license": "MIT",
1999
+ "engines": {
2000
+ "node": ">=18"
2001
+ },
2002
+ "funding": {
2003
+ "url": "https://github.com/sponsors/sindresorhus"
2004
+ }
2005
+ },
2006
+ "node_modules/safe-buffer": {
2007
+ "version": "5.2.1",
2008
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2009
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2010
+ "funding": [
2011
+ {
2012
+ "type": "github",
2013
+ "url": "https://github.com/sponsors/feross"
2014
+ },
2015
+ {
2016
+ "type": "patreon",
2017
+ "url": "https://www.patreon.com/feross"
2018
+ },
2019
+ {
2020
+ "type": "consulting",
2021
+ "url": "https://feross.org/support"
2022
+ }
2023
+ ],
2024
+ "license": "MIT"
2025
+ },
2026
+ "node_modules/safer-buffer": {
2027
+ "version": "2.1.2",
2028
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2029
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2030
+ "license": "MIT"
2031
+ },
2032
+ "node_modules/semver": {
2033
+ "version": "7.7.0",
2034
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz",
2035
+ "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==",
2036
+ "license": "ISC",
2037
+ "bin": {
2038
+ "semver": "bin/semver.js"
2039
+ },
2040
+ "engines": {
2041
+ "node": ">=10"
2042
+ }
2043
+ },
2044
+ "node_modules/send": {
2045
+ "version": "0.19.0",
2046
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
2047
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
2048
+ "license": "MIT",
2049
+ "dependencies": {
2050
+ "debug": "2.6.9",
2051
+ "depd": "2.0.0",
2052
+ "destroy": "1.2.0",
2053
+ "encodeurl": "~1.0.2",
2054
+ "escape-html": "~1.0.3",
2055
+ "etag": "~1.8.1",
2056
+ "fresh": "0.5.2",
2057
+ "http-errors": "2.0.0",
2058
+ "mime": "1.6.0",
2059
+ "ms": "2.1.3",
2060
+ "on-finished": "2.4.1",
2061
+ "range-parser": "~1.2.1",
2062
+ "statuses": "2.0.1"
2063
+ },
2064
+ "engines": {
2065
+ "node": ">= 0.8.0"
2066
+ }
2067
+ },
2068
+ "node_modules/send/node_modules/encodeurl": {
2069
+ "version": "1.0.2",
2070
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
2071
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
2072
+ "license": "MIT",
2073
+ "engines": {
2074
+ "node": ">= 0.8"
2075
+ }
2076
+ },
2077
+ "node_modules/send/node_modules/ms": {
2078
+ "version": "2.1.3",
2079
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2080
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2081
+ "license": "MIT"
2082
+ },
2083
+ "node_modules/serve-static": {
2084
+ "version": "1.16.2",
2085
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
2086
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
2087
+ "license": "MIT",
2088
+ "dependencies": {
2089
+ "encodeurl": "~2.0.0",
2090
+ "escape-html": "~1.0.3",
2091
+ "parseurl": "~1.3.3",
2092
+ "send": "0.19.0"
2093
+ },
2094
+ "engines": {
2095
+ "node": ">= 0.8.0"
2096
+ }
2097
+ },
2098
+ "node_modules/setprototypeof": {
2099
+ "version": "1.2.0",
2100
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
2101
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
2102
+ "license": "ISC"
2103
+ },
2104
+ "node_modules/side-channel": {
2105
+ "version": "1.1.0",
2106
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
2107
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
2108
+ "license": "MIT",
2109
+ "dependencies": {
2110
+ "es-errors": "^1.3.0",
2111
+ "object-inspect": "^1.13.3",
2112
+ "side-channel-list": "^1.0.0",
2113
+ "side-channel-map": "^1.0.1",
2114
+ "side-channel-weakmap": "^1.0.2"
2115
+ },
2116
+ "engines": {
2117
+ "node": ">= 0.4"
2118
+ },
2119
+ "funding": {
2120
+ "url": "https://github.com/sponsors/ljharb"
2121
+ }
2122
+ },
2123
+ "node_modules/side-channel-list": {
2124
+ "version": "1.0.0",
2125
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
2126
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
2127
+ "license": "MIT",
2128
+ "dependencies": {
2129
+ "es-errors": "^1.3.0",
2130
+ "object-inspect": "^1.13.3"
2131
+ },
2132
+ "engines": {
2133
+ "node": ">= 0.4"
2134
+ },
2135
+ "funding": {
2136
+ "url": "https://github.com/sponsors/ljharb"
2137
+ }
2138
+ },
2139
+ "node_modules/side-channel-map": {
2140
+ "version": "1.0.1",
2141
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
2142
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
2143
+ "license": "MIT",
2144
+ "dependencies": {
2145
+ "call-bound": "^1.0.2",
2146
+ "es-errors": "^1.3.0",
2147
+ "get-intrinsic": "^1.2.5",
2148
+ "object-inspect": "^1.13.3"
2149
+ },
2150
+ "engines": {
2151
+ "node": ">= 0.4"
2152
+ },
2153
+ "funding": {
2154
+ "url": "https://github.com/sponsors/ljharb"
2155
+ }
2156
+ },
2157
+ "node_modules/side-channel-weakmap": {
2158
+ "version": "1.0.2",
2159
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
2160
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
2161
+ "license": "MIT",
2162
+ "dependencies": {
2163
+ "call-bound": "^1.0.2",
2164
+ "es-errors": "^1.3.0",
2165
+ "get-intrinsic": "^1.2.5",
2166
+ "object-inspect": "^1.13.3",
2167
+ "side-channel-map": "^1.0.1"
2168
+ },
2169
+ "engines": {
2170
+ "node": ">= 0.4"
2171
+ },
2172
+ "funding": {
2173
+ "url": "https://github.com/sponsors/ljharb"
2174
+ }
2175
+ },
2176
+ "node_modules/source-map": {
2177
+ "version": "0.6.1",
2178
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2179
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2180
+ "dev": true,
2181
+ "license": "BSD-3-Clause",
2182
+ "optional": true,
2183
+ "engines": {
2184
+ "node": ">=0.10.0"
2185
+ }
2186
+ },
2187
+ "node_modules/statuses": {
2188
+ "version": "2.0.1",
2189
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
2190
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
2191
+ "license": "MIT",
2192
+ "engines": {
2193
+ "node": ">= 0.8"
2194
+ }
2195
+ },
2196
+ "node_modules/strip-json-comments": {
2197
+ "version": "3.1.1",
2198
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
2199
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2200
+ "dev": true,
2201
+ "license": "MIT",
2202
+ "engines": {
2203
+ "node": ">=8"
2204
+ },
2205
+ "funding": {
2206
+ "url": "https://github.com/sponsors/sindresorhus"
2207
+ }
2208
+ },
2209
+ "node_modules/supports-color": {
2210
+ "version": "7.2.0",
2211
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2212
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2213
+ "dev": true,
2214
+ "license": "MIT",
2215
+ "dependencies": {
2216
+ "has-flag": "^4.0.0"
2217
+ },
2218
+ "engines": {
2219
+ "node": ">=8"
2220
+ }
2221
+ },
2222
+ "node_modules/tmp": {
2223
+ "version": "0.2.3",
2224
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
2225
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
2226
+ "dev": true,
2227
+ "license": "MIT",
2228
+ "engines": {
2229
+ "node": ">=14.14"
2230
+ }
2231
+ },
2232
+ "node_modules/toidentifier": {
2233
+ "version": "1.0.1",
2234
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
2235
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
2236
+ "license": "MIT",
2237
+ "engines": {
2238
+ "node": ">=0.6"
2239
+ }
2240
+ },
2241
+ "node_modules/tr46": {
2242
+ "version": "0.0.3",
2243
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
2244
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
2245
+ "license": "MIT"
2246
+ },
2247
+ "node_modules/type-check": {
2248
+ "version": "0.3.2",
2249
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2250
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
2251
+ "dev": true,
2252
+ "license": "MIT",
2253
+ "dependencies": {
2254
+ "prelude-ls": "~1.1.2"
2255
+ },
2256
+ "engines": {
2257
+ "node": ">= 0.8.0"
2258
+ }
2259
+ },
2260
+ "node_modules/type-is": {
2261
+ "version": "1.6.18",
2262
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2263
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2264
+ "license": "MIT",
2265
+ "dependencies": {
2266
+ "media-typer": "0.3.0",
2267
+ "mime-types": "~2.1.24"
2268
+ },
2269
+ "engines": {
2270
+ "node": ">= 0.6"
2271
+ }
2272
+ },
2273
+ "node_modules/uc.micro": {
2274
+ "version": "2.1.0",
2275
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
2276
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
2277
+ "dev": true,
2278
+ "license": "MIT"
2279
+ },
2280
+ "node_modules/uglify-js": {
2281
+ "version": "3.19.3",
2282
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
2283
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
2284
+ "dev": true,
2285
+ "license": "BSD-2-Clause",
2286
+ "bin": {
2287
+ "uglifyjs": "bin/uglifyjs"
2288
+ },
2289
+ "engines": {
2290
+ "node": ">=0.8.0"
2291
+ }
2292
+ },
2293
+ "node_modules/underscore": {
2294
+ "version": "1.13.7",
2295
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
2296
+ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==",
2297
+ "dev": true,
2298
+ "license": "MIT"
2299
+ },
2300
+ "node_modules/undici": {
2301
+ "version": "6.21.2",
2302
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
2303
+ "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
2304
+ "license": "MIT",
2305
+ "engines": {
2306
+ "node": ">=18.17"
2307
+ }
2308
+ },
2309
+ "node_modules/undici-types": {
2310
+ "version": "6.20.0",
2311
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
2312
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
2313
+ "license": "MIT"
2314
+ },
2315
+ "node_modules/universal-user-agent": {
2316
+ "version": "6.0.1",
2317
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
2318
+ "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
2319
+ "license": "ISC"
2320
+ },
2321
+ "node_modules/unpipe": {
2322
+ "version": "1.0.0",
2323
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2324
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
2325
+ "license": "MIT",
2326
+ "engines": {
2327
+ "node": ">= 0.8"
2328
+ }
2329
+ },
2330
+ "node_modules/utils-merge": {
2331
+ "version": "1.0.1",
2332
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2333
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
2334
+ "license": "MIT",
2335
+ "engines": {
2336
+ "node": ">= 0.4.0"
2337
+ }
2338
+ },
2339
+ "node_modules/uuid": {
2340
+ "version": "11.0.5",
2341
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz",
2342
+ "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==",
2343
+ "funding": [
2344
+ "https://github.com/sponsors/broofa",
2345
+ "https://github.com/sponsors/ctavan"
2346
+ ],
2347
+ "license": "MIT",
2348
+ "bin": {
2349
+ "uuid": "dist/esm/bin/uuid"
2350
+ }
2351
+ },
2352
+ "node_modules/vary": {
2353
+ "version": "1.1.2",
2354
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2355
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
2356
+ "license": "MIT",
2357
+ "engines": {
2358
+ "node": ">= 0.8"
2359
+ }
2360
+ },
2361
+ "node_modules/webidl-conversions": {
2362
+ "version": "3.0.1",
2363
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
2364
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
2365
+ "license": "BSD-2-Clause"
2366
+ },
2367
+ "node_modules/whatwg-url": {
2368
+ "version": "5.0.0",
2369
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
2370
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
2371
+ "license": "MIT",
2372
+ "dependencies": {
2373
+ "tr46": "~0.0.3",
2374
+ "webidl-conversions": "^3.0.0"
2375
+ }
2376
+ },
2377
+ "node_modules/word-wrap": {
2378
+ "version": "1.2.5",
2379
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
2380
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
2381
+ "dev": true,
2382
+ "license": "MIT",
2383
+ "engines": {
2384
+ "node": ">=0.10.0"
2385
+ }
2386
+ },
2387
+ "node_modules/wrappy": {
2388
+ "version": "1.0.2",
2389
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2390
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2391
+ "license": "ISC"
2392
+ },
2393
+ "node_modules/xmlcreate": {
2394
+ "version": "2.0.4",
2395
+ "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
2396
+ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
2397
+ "dev": true,
2398
+ "license": "Apache-2.0"
2399
+ }
2400
+ }
2401
+ }
node_modules/@babel/helper-string-parser/LICENSE ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2014-present Sebastian McKenzie and other contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
node_modules/@babel/helper-string-parser/README.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # @babel/helper-string-parser
2
+
3
+ > A utility package to parse strings
4
+
5
+ See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information.
6
+
7
+ ## Install
8
+
9
+ Using npm:
10
+
11
+ ```sh
12
+ npm install --save @babel/helper-string-parser
13
+ ```
14
+
15
+ or using yarn:
16
+
17
+ ```sh
18
+ yarn add @babel/helper-string-parser
19
+ ```
node_modules/@babel/helper-string-parser/lib/index.js ADDED
@@ -0,0 +1,295 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readCodePoint = readCodePoint;
7
+ exports.readInt = readInt;
8
+ exports.readStringContents = readStringContents;
9
+ var _isDigit = function isDigit(code) {
10
+ return code >= 48 && code <= 57;
11
+ };
12
+ const forbiddenNumericSeparatorSiblings = {
13
+ decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
14
+ hex: new Set([46, 88, 95, 120])
15
+ };
16
+ const isAllowedNumericSeparatorSibling = {
17
+ bin: ch => ch === 48 || ch === 49,
18
+ oct: ch => ch >= 48 && ch <= 55,
19
+ dec: ch => ch >= 48 && ch <= 57,
20
+ hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
21
+ };
22
+ function readStringContents(type, input, pos, lineStart, curLine, errors) {
23
+ const initialPos = pos;
24
+ const initialLineStart = lineStart;
25
+ const initialCurLine = curLine;
26
+ let out = "";
27
+ let firstInvalidLoc = null;
28
+ let chunkStart = pos;
29
+ const {
30
+ length
31
+ } = input;
32
+ for (;;) {
33
+ if (pos >= length) {
34
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
35
+ out += input.slice(chunkStart, pos);
36
+ break;
37
+ }
38
+ const ch = input.charCodeAt(pos);
39
+ if (isStringEnd(type, ch, input, pos)) {
40
+ out += input.slice(chunkStart, pos);
41
+ break;
42
+ }
43
+ if (ch === 92) {
44
+ out += input.slice(chunkStart, pos);
45
+ const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
46
+ if (res.ch === null && !firstInvalidLoc) {
47
+ firstInvalidLoc = {
48
+ pos,
49
+ lineStart,
50
+ curLine
51
+ };
52
+ } else {
53
+ out += res.ch;
54
+ }
55
+ ({
56
+ pos,
57
+ lineStart,
58
+ curLine
59
+ } = res);
60
+ chunkStart = pos;
61
+ } else if (ch === 8232 || ch === 8233) {
62
+ ++pos;
63
+ ++curLine;
64
+ lineStart = pos;
65
+ } else if (ch === 10 || ch === 13) {
66
+ if (type === "template") {
67
+ out += input.slice(chunkStart, pos) + "\n";
68
+ ++pos;
69
+ if (ch === 13 && input.charCodeAt(pos) === 10) {
70
+ ++pos;
71
+ }
72
+ ++curLine;
73
+ chunkStart = lineStart = pos;
74
+ } else {
75
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
76
+ }
77
+ } else {
78
+ ++pos;
79
+ }
80
+ }
81
+ return {
82
+ pos,
83
+ str: out,
84
+ firstInvalidLoc,
85
+ lineStart,
86
+ curLine,
87
+ containsInvalid: !!firstInvalidLoc
88
+ };
89
+ }
90
+ function isStringEnd(type, ch, input, pos) {
91
+ if (type === "template") {
92
+ return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
93
+ }
94
+ return ch === (type === "double" ? 34 : 39);
95
+ }
96
+ function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
97
+ const throwOnInvalid = !inTemplate;
98
+ pos++;
99
+ const res = ch => ({
100
+ pos,
101
+ ch,
102
+ lineStart,
103
+ curLine
104
+ });
105
+ const ch = input.charCodeAt(pos++);
106
+ switch (ch) {
107
+ case 110:
108
+ return res("\n");
109
+ case 114:
110
+ return res("\r");
111
+ case 120:
112
+ {
113
+ let code;
114
+ ({
115
+ code,
116
+ pos
117
+ } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
118
+ return res(code === null ? null : String.fromCharCode(code));
119
+ }
120
+ case 117:
121
+ {
122
+ let code;
123
+ ({
124
+ code,
125
+ pos
126
+ } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
127
+ return res(code === null ? null : String.fromCodePoint(code));
128
+ }
129
+ case 116:
130
+ return res("\t");
131
+ case 98:
132
+ return res("\b");
133
+ case 118:
134
+ return res("\u000b");
135
+ case 102:
136
+ return res("\f");
137
+ case 13:
138
+ if (input.charCodeAt(pos) === 10) {
139
+ ++pos;
140
+ }
141
+ case 10:
142
+ lineStart = pos;
143
+ ++curLine;
144
+ case 8232:
145
+ case 8233:
146
+ return res("");
147
+ case 56:
148
+ case 57:
149
+ if (inTemplate) {
150
+ return res(null);
151
+ } else {
152
+ errors.strictNumericEscape(pos - 1, lineStart, curLine);
153
+ }
154
+ default:
155
+ if (ch >= 48 && ch <= 55) {
156
+ const startPos = pos - 1;
157
+ const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
158
+ let octalStr = match[0];
159
+ let octal = parseInt(octalStr, 8);
160
+ if (octal > 255) {
161
+ octalStr = octalStr.slice(0, -1);
162
+ octal = parseInt(octalStr, 8);
163
+ }
164
+ pos += octalStr.length - 1;
165
+ const next = input.charCodeAt(pos);
166
+ if (octalStr !== "0" || next === 56 || next === 57) {
167
+ if (inTemplate) {
168
+ return res(null);
169
+ } else {
170
+ errors.strictNumericEscape(startPos, lineStart, curLine);
171
+ }
172
+ }
173
+ return res(String.fromCharCode(octal));
174
+ }
175
+ return res(String.fromCharCode(ch));
176
+ }
177
+ }
178
+ function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
179
+ const initialPos = pos;
180
+ let n;
181
+ ({
182
+ n,
183
+ pos
184
+ } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
185
+ if (n === null) {
186
+ if (throwOnInvalid) {
187
+ errors.invalidEscapeSequence(initialPos, lineStart, curLine);
188
+ } else {
189
+ pos = initialPos - 1;
190
+ }
191
+ }
192
+ return {
193
+ code: n,
194
+ pos
195
+ };
196
+ }
197
+ function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
198
+ const start = pos;
199
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
200
+ const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
201
+ let invalid = false;
202
+ let total = 0;
203
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
204
+ const code = input.charCodeAt(pos);
205
+ let val;
206
+ if (code === 95 && allowNumSeparator !== "bail") {
207
+ const prev = input.charCodeAt(pos - 1);
208
+ const next = input.charCodeAt(pos + 1);
209
+ if (!allowNumSeparator) {
210
+ if (bailOnError) return {
211
+ n: null,
212
+ pos
213
+ };
214
+ errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
215
+ } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
216
+ if (bailOnError) return {
217
+ n: null,
218
+ pos
219
+ };
220
+ errors.unexpectedNumericSeparator(pos, lineStart, curLine);
221
+ }
222
+ ++pos;
223
+ continue;
224
+ }
225
+ if (code >= 97) {
226
+ val = code - 97 + 10;
227
+ } else if (code >= 65) {
228
+ val = code - 65 + 10;
229
+ } else if (_isDigit(code)) {
230
+ val = code - 48;
231
+ } else {
232
+ val = Infinity;
233
+ }
234
+ if (val >= radix) {
235
+ if (val <= 9 && bailOnError) {
236
+ return {
237
+ n: null,
238
+ pos
239
+ };
240
+ } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
241
+ val = 0;
242
+ } else if (forceLen) {
243
+ val = 0;
244
+ invalid = true;
245
+ } else {
246
+ break;
247
+ }
248
+ }
249
+ ++pos;
250
+ total = total * radix + val;
251
+ }
252
+ if (pos === start || len != null && pos - start !== len || invalid) {
253
+ return {
254
+ n: null,
255
+ pos
256
+ };
257
+ }
258
+ return {
259
+ n: total,
260
+ pos
261
+ };
262
+ }
263
+ function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
264
+ const ch = input.charCodeAt(pos);
265
+ let code;
266
+ if (ch === 123) {
267
+ ++pos;
268
+ ({
269
+ code,
270
+ pos
271
+ } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
272
+ ++pos;
273
+ if (code !== null && code > 0x10ffff) {
274
+ if (throwOnInvalid) {
275
+ errors.invalidCodePoint(pos, lineStart, curLine);
276
+ } else {
277
+ return {
278
+ code: null,
279
+ pos
280
+ };
281
+ }
282
+ }
283
+ } else {
284
+ ({
285
+ code,
286
+ pos
287
+ } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
288
+ }
289
+ return {
290
+ code,
291
+ pos
292
+ };
293
+ }
294
+
295
+ //# sourceMappingURL=index.js.map
node_modules/@babel/helper-string-parser/lib/index.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"names":["isDigit","code","forbiddenNumericSeparatorSiblings","decBinOct","Set","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","type","input","pos","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","length","unterminated","slice","charCodeAt","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","String","fromCharCode","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","next","len","forceLen","n","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","start","forbiddenSiblings","isAllowedSibling","invalid","total","i","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","has","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint"],"sources":["../src/index.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n"],"mappings":"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","ignoreList":[]}
node_modules/@babel/helper-string-parser/package.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "@babel/helper-string-parser",
3
+ "version": "7.25.9",
4
+ "description": "A utility package to parse strings",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/babel/babel.git",
8
+ "directory": "packages/babel-helper-string-parser"
9
+ },
10
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
11
+ "license": "MIT",
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "main": "./lib/index.js",
16
+ "devDependencies": {
17
+ "charcodes": "^0.2.0"
18
+ },
19
+ "engines": {
20
+ "node": ">=6.9.0"
21
+ },
22
+ "author": "The Babel Team (https://babel.dev/team)",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./lib/index.d.ts",
26
+ "default": "./lib/index.js"
27
+ },
28
+ "./package.json": "./package.json"
29
+ },
30
+ "type": "commonjs"
31
+ }
node_modules/@babel/helper-validator-identifier/LICENSE ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2014-present Sebastian McKenzie and other contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
node_modules/@babel/helper-validator-identifier/README.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # @babel/helper-validator-identifier
2
+
3
+ > Validate identifier/keywords name
4
+
5
+ See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information.
6
+
7
+ ## Install
8
+
9
+ Using npm:
10
+
11
+ ```sh
12
+ npm install --save @babel/helper-validator-identifier
13
+ ```
14
+
15
+ or using yarn:
16
+
17
+ ```sh
18
+ yarn add @babel/helper-validator-identifier
19
+ ```
node_modules/@babel/helper-validator-identifier/lib/identifier.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isIdentifierChar = isIdentifierChar;
7
+ exports.isIdentifierName = isIdentifierName;
8
+ exports.isIdentifierStart = isIdentifierStart;
9
+ let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
10
+ let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
11
+ const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
12
+ const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
13
+ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
14
+ const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];
15
+ const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
16
+ function isInAstralSet(code, set) {
17
+ let pos = 0x10000;
18
+ for (let i = 0, length = set.length; i < length; i += 2) {
19
+ pos += set[i];
20
+ if (pos > code) return false;
21
+ pos += set[i + 1];
22
+ if (pos >= code) return true;
23
+ }
24
+ return false;
25
+ }
26
+ function isIdentifierStart(code) {
27
+ if (code < 65) return code === 36;
28
+ if (code <= 90) return true;
29
+ if (code < 97) return code === 95;
30
+ if (code <= 122) return true;
31
+ if (code <= 0xffff) {
32
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
33
+ }
34
+ return isInAstralSet(code, astralIdentifierStartCodes);
35
+ }
36
+ function isIdentifierChar(code) {
37
+ if (code < 48) return code === 36;
38
+ if (code < 58) return true;
39
+ if (code < 65) return false;
40
+ if (code <= 90) return true;
41
+ if (code < 97) return code === 95;
42
+ if (code <= 122) return true;
43
+ if (code <= 0xffff) {
44
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
45
+ }
46
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
47
+ }
48
+ function isIdentifierName(name) {
49
+ let isFirst = true;
50
+ for (let i = 0; i < name.length; i++) {
51
+ let cp = name.charCodeAt(i);
52
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
53
+ const trail = name.charCodeAt(++i);
54
+ if ((trail & 0xfc00) === 0xdc00) {
55
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
56
+ }
57
+ }
58
+ if (isFirst) {
59
+ isFirst = false;
60
+ if (!isIdentifierStart(cp)) {
61
+ return false;
62
+ }
63
+ } else if (!isIdentifierChar(cp)) {
64
+ return false;
65
+ }
66
+ }
67
+ return !isFirst;
68
+ }
69
+
70
+ //# sourceMappingURL=identifier.js.map
node_modules/@babel/helper-validator-identifier/lib/identifier.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAaA,IAAIA,4BAA4B,GAAG,8qIAA8qI;AAEjtI,IAAIC,uBAAuB,GAAG,+kFAA+kF;AAE7mF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjkD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAA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","ignoreList":[]}
node_modules/@babel/helper-validator-identifier/lib/index.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "isIdentifierChar", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _identifier.isIdentifierChar;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "isIdentifierName", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _identifier.isIdentifierName;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "isIdentifierStart", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _identifier.isIdentifierStart;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "isKeyword", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _keyword.isKeyword;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "isReservedWord", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _keyword.isReservedWord;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _keyword.isStrictBindOnlyReservedWord;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "isStrictBindReservedWord", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _keyword.isStrictBindReservedWord;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "isStrictReservedWord", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _keyword.isStrictReservedWord;
52
+ }
53
+ });
54
+ var _identifier = require("./identifier.js");
55
+ var _keyword = require("./keyword.js");
56
+
57
+ //# sourceMappingURL=index.js.map
node_modules/@babel/helper-validator-identifier/lib/index.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
node_modules/@babel/helper-validator-identifier/lib/keyword.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isKeyword = isKeyword;
7
+ exports.isReservedWord = isReservedWord;
8
+ exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
9
+ exports.isStrictBindReservedWord = isStrictBindReservedWord;
10
+ exports.isStrictReservedWord = isStrictReservedWord;
11
+ const reservedWords = {
12
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
13
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
14
+ strictBind: ["eval", "arguments"]
15
+ };
16
+ const keywords = new Set(reservedWords.keyword);
17
+ const reservedWordsStrictSet = new Set(reservedWords.strict);
18
+ const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
19
+ function isReservedWord(word, inModule) {
20
+ return inModule && word === "await" || word === "enum";
21
+ }
22
+ function isStrictReservedWord(word, inModule) {
23
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
24
+ }
25
+ function isStrictBindOnlyReservedWord(word) {
26
+ return reservedWordsStrictBindSet.has(word);
27
+ }
28
+ function isStrictBindReservedWord(word, inModule) {
29
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
30
+ }
31
+ function isKeyword(word) {
32
+ return keywords.has(word);
33
+ }
34
+
35
+ //# sourceMappingURL=keyword.js.map
node_modules/@babel/helper-validator-identifier/lib/keyword.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]}