├── .env
├── .eslintrc.cjs
├── .gitignore
├── .prettierrc.cjs
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
├── assets
│ ├── vite.svg
│ └── vue.svg
├── data
│ ├── ajaxhook.ts
│ └── overlays.ts
├── lib
│ ├── api.ts
│ ├── app.ts
│ ├── overlay.ts
│ ├── position.ts
│ ├── ruleMatcher.ts
│ ├── size.ts
│ ├── store.ts
│ ├── uuid.ts
│ ├── versionCompare.ts
│ └── webcontrol.ts
├── main.ts
├── rules
│ ├── base.ts
│ ├── ghzs
│ │ ├── ghzs.scss
│ │ └── ghzs.ts
│ ├── hoyolab
│ │ └── index.ts
│ ├── index.ts
│ ├── kongying
│ │ ├── kongying-v2.ts
│ │ ├── kongying-v3.ts
│ │ └── v3.scss
│ ├── leaflet.scss
│ ├── leaflet.ts
│ └── miyoushe
│ │ ├── index.ts
│ │ └── miyoushe.scss
├── ui
│ ├── App.vue
│ ├── components
│ │ ├── ActionsArea.vue
│ │ └── OptionDialog.vue
│ ├── index.ts
│ └── style.scss
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.env:
--------------------------------------------------------------------------------
1 | VITE_FROSTFLAKE_MIN_VERSION=1.3.0
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parser: 'vue-eslint-parser',
4 | parserOptions: {
5 | // 设置 js 的解析器为 @babel/eslint-parser
6 | // https://github.com/mysticatea/vue-eslint-parser#-options
7 | parser: '@typescript-eslint/parser',
8 | ecmaVersion: 2020,
9 | // ECMAScript modules 模式
10 | sourceType: 'module',
11 | ecmaFeatures: {
12 | // 不允许 return 语句出现在 global 环境下
13 | globalReturn: false,
14 | // 开启全局 script 模式
15 | impliedStrict: true,
16 | jsx: true,
17 | },
18 | // 即使没有 babelrc 配置文件,也使用 @babel/eslint-parser 来解析
19 | requireConfigFile: false,
20 | // 仅允许 import export 语句出现在模块的顶层
21 | allowImportExportEverywhere: false,
22 | },
23 | env: {
24 | node: true,
25 | },
26 | extends: [
27 | 'alloy',
28 | 'plugin:vue/vue3-essential',
29 | 'alloy/vue',
30 | 'eslint:recommended',
31 | '@vue/typescript/recommended',
32 | 'plugin:prettier/recommended',
33 | ],
34 | rules: {
35 | 'no-console': 'off',
36 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
37 | 'prettier/prettier': process.env.NODE_ENV === 'production' ? 'error' : 'warn',
38 | 'vue/multi-word-component-names': 'off',
39 | 'vue/no-empty-component-block': 'off',
40 | '@typescript-eslint/no-var-requires': 'off',
41 | 'vue/no-duplicate-attributes': [
42 | 'error',
43 | {
44 | allowCoexistClass: true,
45 | allowCoexistStyle: true,
46 | },
47 | ],
48 | 'vue/custom-event-name-casing': 'off',
49 | },
50 | }
51 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | .idea
18 | .DS_Store
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/.prettierrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | printWidth: 120,
3 | tabWidth: 4,
4 | useTabs: false,
5 | semi: false,
6 | singleQuote: true,
7 | quoteProps: 'as-needed',
8 | jsxSingleQuote: false,
9 | trailingComma: 'all',
10 | bracketSpacing: true,
11 | arrowParens: 'always',
12 | rangeStart: 0,
13 | rangeEnd: Infinity,
14 | requirePragma: false,
15 | insertPragma: false,
16 | proseWrap: 'preserve',
17 | htmlWhitespaceSensitivity: 'css',
18 | vueIndentScriptAndStyle: false,
19 | endOfLine: 'auto',
20 | embeddedLanguageFormatting: 'auto',
21 | }
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # 志琼
4 |
5 | 原神大地图增强脚本
6 |
7 |
8 |
9 | ## 支持的地图
10 | - 米游社 https://webstatic.mihoyo.com/app/ys-map-cn/index.html
11 | - HoyoLab https://act.hoyolab.com/ys/app/interactive-map/index.html
12 | - 空荧酒馆v2 https://yuanshen.site/index.html
13 | - 空荧酒馆v3 https://v3.yuanshen.site/index
14 | - 光环助手 https://static-web.ghzs.com/cspage_pro/yuanshenMap.html
15 |
16 | ## 功能
17 | - 实时追踪游戏内角色位置(使用 [`GengGode/cvautotrack`](https://github.com/GengGode/GenshinImpact_AutoTrack_DLL))
18 | - 通过网络共享角色位置(接收端仅支持米游社和HoyoLab)
19 | - 地图叠加层(分层地图)
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "zhiqiong-next",
3 | "private": true,
4 | "version": "2.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vue-tsc --noEmit && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@types/leaflet": "^1.9.0",
13 | "eventemitter3": "^5.0.0",
14 | "pinia": "^2.0.28",
15 | "vant": "^4.0.6",
16 | "vue": "^3.2.45"
17 | },
18 | "devDependencies": {
19 | "@typescript-eslint/eslint-plugin": "^5.47.1",
20 | "@typescript-eslint/parser": "^5.47.1",
21 | "@vitejs/plugin-vue": "^4.0.0",
22 | "@vue/eslint-config-typescript": "^11.0.2",
23 | "eslint": "^8.30.0",
24 | "eslint-config-alloy": "^4.7.0",
25 | "eslint-config-prettier": "^8.5.0",
26 | "eslint-plugin-prettier": "^4.2.1",
27 | "eslint-plugin-vue": "^9.8.0",
28 | "prettier": "^2.8.1",
29 | "sass": "^1.57.1",
30 | "typescript": "^4.9.4",
31 | "vite": "^4.0.3",
32 | "vite-plugin-monkey": "^2.10.2",
33 | "vue-tsc": "^1.0.18"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@types/leaflet': ^1.9.0
5 | '@typescript-eslint/eslint-plugin': ^5.47.1
6 | '@typescript-eslint/parser': ^5.47.1
7 | '@vitejs/plugin-vue': ^4.0.0
8 | '@vue/eslint-config-typescript': ^11.0.2
9 | eslint: ^8.30.0
10 | eslint-config-alloy: ^4.7.0
11 | eslint-config-prettier: ^8.5.0
12 | eslint-plugin-prettier: ^4.2.1
13 | eslint-plugin-vue: ^9.8.0
14 | eventemitter3: ^5.0.0
15 | pinia: ^2.0.28
16 | prettier: ^2.8.1
17 | sass: ^1.57.1
18 | typescript: ^4.9.4
19 | vant: ^4.0.6
20 | vite: ^4.0.3
21 | vite-plugin-monkey: ^2.10.2
22 | vue: ^3.2.45
23 | vue-tsc: ^1.0.18
24 |
25 | dependencies:
26 | '@types/leaflet': 1.9.0
27 | eventemitter3: 5.0.0
28 | pinia: 2.0.28_prq2uz4lho2pwp6irk4cfkrxwu
29 | vant: 4.0.6_vue@3.2.45
30 | vue: 3.2.45
31 |
32 | devDependencies:
33 | '@typescript-eslint/eslint-plugin': 5.47.1_txmweb6yn7coi7nfrp22gpyqmy
34 | '@typescript-eslint/parser': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
35 | '@vitejs/plugin-vue': 4.0.0_vite@4.0.3+vue@3.2.45
36 | '@vue/eslint-config-typescript': 11.0.2_eh2oupyoc3mviptu6zovyv6md4
37 | eslint: 8.30.0
38 | eslint-config-alloy: 4.7.0_aquz7nympv5of5li5f2v4fy5ii
39 | eslint-config-prettier: 8.5.0_eslint@8.30.0
40 | eslint-plugin-prettier: 4.2.1_kl4pe43v5b43npmso5hoplpbyi
41 | eslint-plugin-vue: 9.8.0_eslint@8.30.0
42 | prettier: 2.8.1
43 | sass: 1.57.1
44 | typescript: 4.9.4
45 | vite: 4.0.3_sass@1.57.1
46 | vite-plugin-monkey: 2.10.2_vite@4.0.3
47 | vue-tsc: 1.0.18_typescript@4.9.4
48 |
49 | packages:
50 |
51 | /@babel/helper-string-parser/7.19.4:
52 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
53 | engines: {node: '>=6.9.0'}
54 |
55 | /@babel/helper-validator-identifier/7.19.1:
56 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
57 | engines: {node: '>=6.9.0'}
58 |
59 | /@babel/parser/7.20.7:
60 | resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==}
61 | engines: {node: '>=6.0.0'}
62 | hasBin: true
63 | dependencies:
64 | '@babel/types': 7.20.7
65 |
66 | /@babel/types/7.20.7:
67 | resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==}
68 | engines: {node: '>=6.9.0'}
69 | dependencies:
70 | '@babel/helper-string-parser': 7.19.4
71 | '@babel/helper-validator-identifier': 7.19.1
72 | to-fast-properties: 2.0.0
73 |
74 | /@esbuild/android-arm/0.16.12:
75 | resolution: {integrity: sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==}
76 | engines: {node: '>=12'}
77 | cpu: [arm]
78 | os: [android]
79 | requiresBuild: true
80 | dev: true
81 | optional: true
82 |
83 | /@esbuild/android-arm64/0.16.12:
84 | resolution: {integrity: sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==}
85 | engines: {node: '>=12'}
86 | cpu: [arm64]
87 | os: [android]
88 | requiresBuild: true
89 | dev: true
90 | optional: true
91 |
92 | /@esbuild/android-x64/0.16.12:
93 | resolution: {integrity: sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==}
94 | engines: {node: '>=12'}
95 | cpu: [x64]
96 | os: [android]
97 | requiresBuild: true
98 | dev: true
99 | optional: true
100 |
101 | /@esbuild/darwin-arm64/0.16.12:
102 | resolution: {integrity: sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==}
103 | engines: {node: '>=12'}
104 | cpu: [arm64]
105 | os: [darwin]
106 | requiresBuild: true
107 | dev: true
108 | optional: true
109 |
110 | /@esbuild/darwin-x64/0.16.12:
111 | resolution: {integrity: sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==}
112 | engines: {node: '>=12'}
113 | cpu: [x64]
114 | os: [darwin]
115 | requiresBuild: true
116 | dev: true
117 | optional: true
118 |
119 | /@esbuild/freebsd-arm64/0.16.12:
120 | resolution: {integrity: sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==}
121 | engines: {node: '>=12'}
122 | cpu: [arm64]
123 | os: [freebsd]
124 | requiresBuild: true
125 | dev: true
126 | optional: true
127 |
128 | /@esbuild/freebsd-x64/0.16.12:
129 | resolution: {integrity: sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==}
130 | engines: {node: '>=12'}
131 | cpu: [x64]
132 | os: [freebsd]
133 | requiresBuild: true
134 | dev: true
135 | optional: true
136 |
137 | /@esbuild/linux-arm/0.16.12:
138 | resolution: {integrity: sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==}
139 | engines: {node: '>=12'}
140 | cpu: [arm]
141 | os: [linux]
142 | requiresBuild: true
143 | dev: true
144 | optional: true
145 |
146 | /@esbuild/linux-arm64/0.16.12:
147 | resolution: {integrity: sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==}
148 | engines: {node: '>=12'}
149 | cpu: [arm64]
150 | os: [linux]
151 | requiresBuild: true
152 | dev: true
153 | optional: true
154 |
155 | /@esbuild/linux-ia32/0.16.12:
156 | resolution: {integrity: sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==}
157 | engines: {node: '>=12'}
158 | cpu: [ia32]
159 | os: [linux]
160 | requiresBuild: true
161 | dev: true
162 | optional: true
163 |
164 | /@esbuild/linux-loong64/0.16.12:
165 | resolution: {integrity: sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==}
166 | engines: {node: '>=12'}
167 | cpu: [loong64]
168 | os: [linux]
169 | requiresBuild: true
170 | dev: true
171 | optional: true
172 |
173 | /@esbuild/linux-mips64el/0.16.12:
174 | resolution: {integrity: sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==}
175 | engines: {node: '>=12'}
176 | cpu: [mips64el]
177 | os: [linux]
178 | requiresBuild: true
179 | dev: true
180 | optional: true
181 |
182 | /@esbuild/linux-ppc64/0.16.12:
183 | resolution: {integrity: sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==}
184 | engines: {node: '>=12'}
185 | cpu: [ppc64]
186 | os: [linux]
187 | requiresBuild: true
188 | dev: true
189 | optional: true
190 |
191 | /@esbuild/linux-riscv64/0.16.12:
192 | resolution: {integrity: sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==}
193 | engines: {node: '>=12'}
194 | cpu: [riscv64]
195 | os: [linux]
196 | requiresBuild: true
197 | dev: true
198 | optional: true
199 |
200 | /@esbuild/linux-s390x/0.16.12:
201 | resolution: {integrity: sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==}
202 | engines: {node: '>=12'}
203 | cpu: [s390x]
204 | os: [linux]
205 | requiresBuild: true
206 | dev: true
207 | optional: true
208 |
209 | /@esbuild/linux-x64/0.16.12:
210 | resolution: {integrity: sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==}
211 | engines: {node: '>=12'}
212 | cpu: [x64]
213 | os: [linux]
214 | requiresBuild: true
215 | dev: true
216 | optional: true
217 |
218 | /@esbuild/netbsd-x64/0.16.12:
219 | resolution: {integrity: sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==}
220 | engines: {node: '>=12'}
221 | cpu: [x64]
222 | os: [netbsd]
223 | requiresBuild: true
224 | dev: true
225 | optional: true
226 |
227 | /@esbuild/openbsd-x64/0.16.12:
228 | resolution: {integrity: sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==}
229 | engines: {node: '>=12'}
230 | cpu: [x64]
231 | os: [openbsd]
232 | requiresBuild: true
233 | dev: true
234 | optional: true
235 |
236 | /@esbuild/sunos-x64/0.16.12:
237 | resolution: {integrity: sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==}
238 | engines: {node: '>=12'}
239 | cpu: [x64]
240 | os: [sunos]
241 | requiresBuild: true
242 | dev: true
243 | optional: true
244 |
245 | /@esbuild/win32-arm64/0.16.12:
246 | resolution: {integrity: sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==}
247 | engines: {node: '>=12'}
248 | cpu: [arm64]
249 | os: [win32]
250 | requiresBuild: true
251 | dev: true
252 | optional: true
253 |
254 | /@esbuild/win32-ia32/0.16.12:
255 | resolution: {integrity: sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==}
256 | engines: {node: '>=12'}
257 | cpu: [ia32]
258 | os: [win32]
259 | requiresBuild: true
260 | dev: true
261 | optional: true
262 |
263 | /@esbuild/win32-x64/0.16.12:
264 | resolution: {integrity: sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==}
265 | engines: {node: '>=12'}
266 | cpu: [x64]
267 | os: [win32]
268 | requiresBuild: true
269 | dev: true
270 | optional: true
271 |
272 | /@eslint/eslintrc/1.4.0:
273 | resolution: {integrity: sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==}
274 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
275 | dependencies:
276 | ajv: 6.12.6
277 | debug: 4.3.4
278 | espree: 9.4.1
279 | globals: 13.19.0
280 | ignore: 5.2.4
281 | import-fresh: 3.3.0
282 | js-yaml: 4.1.0
283 | minimatch: 3.1.2
284 | strip-json-comments: 3.1.1
285 | transitivePeerDependencies:
286 | - supports-color
287 | dev: true
288 |
289 | /@humanwhocodes/config-array/0.11.8:
290 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
291 | engines: {node: '>=10.10.0'}
292 | dependencies:
293 | '@humanwhocodes/object-schema': 1.2.1
294 | debug: 4.3.4
295 | minimatch: 3.1.2
296 | transitivePeerDependencies:
297 | - supports-color
298 | dev: true
299 |
300 | /@humanwhocodes/module-importer/1.0.1:
301 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
302 | engines: {node: '>=12.22'}
303 | dev: true
304 |
305 | /@humanwhocodes/object-schema/1.2.1:
306 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
307 | dev: true
308 |
309 | /@nodelib/fs.scandir/2.1.5:
310 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
311 | engines: {node: '>= 8'}
312 | dependencies:
313 | '@nodelib/fs.stat': 2.0.5
314 | run-parallel: 1.2.0
315 | dev: true
316 |
317 | /@nodelib/fs.stat/2.0.5:
318 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
319 | engines: {node: '>= 8'}
320 | dev: true
321 |
322 | /@nodelib/fs.walk/1.2.8:
323 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
324 | engines: {node: '>= 8'}
325 | dependencies:
326 | '@nodelib/fs.scandir': 2.1.5
327 | fastq: 1.14.0
328 | dev: true
329 |
330 | /@types/geojson/7946.0.10:
331 | resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==}
332 | dev: false
333 |
334 | /@types/json-schema/7.0.11:
335 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
336 | dev: true
337 |
338 | /@types/leaflet/1.9.0:
339 | resolution: {integrity: sha512-7LeOSj7EloC5UcyOMo+1kc3S1UT3MjJxwqsMT1d2PTyvQz53w0Y0oSSk9nwZnOZubCmBvpSNGceucxiq+ZPEUw==}
340 | dependencies:
341 | '@types/geojson': 7946.0.10
342 | dev: false
343 |
344 | /@types/semver/7.3.13:
345 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==}
346 | dev: true
347 |
348 | /@typescript-eslint/eslint-plugin/5.47.1_txmweb6yn7coi7nfrp22gpyqmy:
349 | resolution: {integrity: sha512-r4RZ2Jl9kcQN7K/dcOT+J7NAimbiis4sSM9spvWimsBvDegMhKLA5vri2jG19PmIPbDjPeWzfUPQ2hjEzA4Nmg==}
350 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
351 | peerDependencies:
352 | '@typescript-eslint/parser': ^5.0.0
353 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
354 | typescript: '*'
355 | peerDependenciesMeta:
356 | typescript:
357 | optional: true
358 | dependencies:
359 | '@typescript-eslint/parser': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
360 | '@typescript-eslint/scope-manager': 5.47.1
361 | '@typescript-eslint/type-utils': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
362 | '@typescript-eslint/utils': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
363 | debug: 4.3.4
364 | eslint: 8.30.0
365 | ignore: 5.2.4
366 | natural-compare-lite: 1.4.0
367 | regexpp: 3.2.0
368 | semver: 7.3.8
369 | tsutils: 3.21.0_typescript@4.9.4
370 | typescript: 4.9.4
371 | transitivePeerDependencies:
372 | - supports-color
373 | dev: true
374 |
375 | /@typescript-eslint/parser/5.47.1_lzzuuodtsqwxnvqeq4g4likcqa:
376 | resolution: {integrity: sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==}
377 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
378 | peerDependencies:
379 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
380 | typescript: '*'
381 | peerDependenciesMeta:
382 | typescript:
383 | optional: true
384 | dependencies:
385 | '@typescript-eslint/scope-manager': 5.47.1
386 | '@typescript-eslint/types': 5.47.1
387 | '@typescript-eslint/typescript-estree': 5.47.1_typescript@4.9.4
388 | debug: 4.3.4
389 | eslint: 8.30.0
390 | typescript: 4.9.4
391 | transitivePeerDependencies:
392 | - supports-color
393 | dev: true
394 |
395 | /@typescript-eslint/scope-manager/5.47.1:
396 | resolution: {integrity: sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==}
397 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
398 | dependencies:
399 | '@typescript-eslint/types': 5.47.1
400 | '@typescript-eslint/visitor-keys': 5.47.1
401 | dev: true
402 |
403 | /@typescript-eslint/type-utils/5.47.1_lzzuuodtsqwxnvqeq4g4likcqa:
404 | resolution: {integrity: sha512-/UKOeo8ee80A7/GJA427oIrBi/Gd4osk/3auBUg4Rn9EahFpevVV1mUK8hjyQD5lHPqX397x6CwOk5WGh1E/1w==}
405 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
406 | peerDependencies:
407 | eslint: '*'
408 | typescript: '*'
409 | peerDependenciesMeta:
410 | typescript:
411 | optional: true
412 | dependencies:
413 | '@typescript-eslint/typescript-estree': 5.47.1_typescript@4.9.4
414 | '@typescript-eslint/utils': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
415 | debug: 4.3.4
416 | eslint: 8.30.0
417 | tsutils: 3.21.0_typescript@4.9.4
418 | typescript: 4.9.4
419 | transitivePeerDependencies:
420 | - supports-color
421 | dev: true
422 |
423 | /@typescript-eslint/types/5.47.1:
424 | resolution: {integrity: sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==}
425 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
426 | dev: true
427 |
428 | /@typescript-eslint/typescript-estree/5.47.1_typescript@4.9.4:
429 | resolution: {integrity: sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==}
430 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
431 | peerDependencies:
432 | typescript: '*'
433 | peerDependenciesMeta:
434 | typescript:
435 | optional: true
436 | dependencies:
437 | '@typescript-eslint/types': 5.47.1
438 | '@typescript-eslint/visitor-keys': 5.47.1
439 | debug: 4.3.4
440 | globby: 11.1.0
441 | is-glob: 4.0.3
442 | semver: 7.3.8
443 | tsutils: 3.21.0_typescript@4.9.4
444 | typescript: 4.9.4
445 | transitivePeerDependencies:
446 | - supports-color
447 | dev: true
448 |
449 | /@typescript-eslint/utils/5.47.1_lzzuuodtsqwxnvqeq4g4likcqa:
450 | resolution: {integrity: sha512-l90SdwqfmkuIVaREZ2ykEfCezepCLxzWMo5gVfcJsJCaT4jHT+QjgSkYhs5BMQmWqE9k3AtIfk4g211z/sTMVw==}
451 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
452 | peerDependencies:
453 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
454 | dependencies:
455 | '@types/json-schema': 7.0.11
456 | '@types/semver': 7.3.13
457 | '@typescript-eslint/scope-manager': 5.47.1
458 | '@typescript-eslint/types': 5.47.1
459 | '@typescript-eslint/typescript-estree': 5.47.1_typescript@4.9.4
460 | eslint: 8.30.0
461 | eslint-scope: 5.1.1
462 | eslint-utils: 3.0.0_eslint@8.30.0
463 | semver: 7.3.8
464 | transitivePeerDependencies:
465 | - supports-color
466 | - typescript
467 | dev: true
468 |
469 | /@typescript-eslint/visitor-keys/5.47.1:
470 | resolution: {integrity: sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==}
471 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
472 | dependencies:
473 | '@typescript-eslint/types': 5.47.1
474 | eslint-visitor-keys: 3.3.0
475 | dev: true
476 |
477 | /@vant/popperjs/1.3.0:
478 | resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
479 | dev: false
480 |
481 | /@vant/use/1.4.3:
482 | resolution: {integrity: sha512-rSnETN7P9qT1WbItMpQxBqe3cHeK2ZFYp1sCxWUXaTeI71TqA8sOdzC36ledZ36NQgFNTch9fsRPYOkrCgZfQA==}
483 | dev: false
484 |
485 | /@vitejs/plugin-vue/4.0.0_vite@4.0.3+vue@3.2.45:
486 | resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==}
487 | engines: {node: ^14.18.0 || >=16.0.0}
488 | peerDependencies:
489 | vite: ^4.0.0
490 | vue: ^3.2.25
491 | dependencies:
492 | vite: 4.0.3_sass@1.57.1
493 | vue: 3.2.45
494 | dev: true
495 |
496 | /@volar/language-core/1.0.18:
497 | resolution: {integrity: sha512-PFrqAksKhiuAqNV4fefoMilX+JutVq0Z3iM14xjLvWPv68fs2dLedwU84GiHfSPTMmRiPCJ2HhH2rz4qNY42lA==}
498 | dependencies:
499 | '@volar/source-map': 1.0.18
500 | '@vue/reactivity': 3.2.45
501 | muggle-string: 0.1.0
502 | dev: true
503 |
504 | /@volar/source-map/1.0.18:
505 | resolution: {integrity: sha512-D8AcjrT2ukG5XiZhtSQBhcvL1TTlWOebCqS//Z/hGLGQZjpZHWaKD4OyDzKDzM0U9EtOuDh9rttnabCHDPvY2Q==}
506 | dependencies:
507 | muggle-string: 0.1.0
508 | dev: true
509 |
510 | /@volar/typescript/1.0.18:
511 | resolution: {integrity: sha512-xpH1Ij+PKtbIKEEYU2bF0llBRmu+ojjm/UA1WHNpi/dvsFWTIZcPniuqYEpPc32Zq/f8OPk98HbM2Oj5eue+vA==}
512 | dependencies:
513 | '@volar/language-core': 1.0.18
514 | dev: true
515 |
516 | /@volar/vue-language-core/1.0.18:
517 | resolution: {integrity: sha512-1yJcXYz9SdQUYoKWPbnr1SgMsBGXH29hS8W47p46P8Mm+5mmDdR/GFQw2+Zo5kAIS8vtLstlowI1Okoy7HFzIQ==}
518 | dependencies:
519 | '@volar/language-core': 1.0.18
520 | '@volar/source-map': 1.0.18
521 | '@vue/compiler-dom': 3.2.45
522 | '@vue/compiler-sfc': 3.2.45
523 | '@vue/reactivity': 3.2.45
524 | '@vue/shared': 3.2.45
525 | minimatch: 5.1.2
526 | vue-template-compiler: 2.7.14
527 | dev: true
528 |
529 | /@volar/vue-typescript/1.0.18:
530 | resolution: {integrity: sha512-pfi2/vTLgAPeRNgWzPFFv14YoLc3MnPMVKxl17ZLHStFgROUWQetTN+44FUWVYIl820MesMsyRv4kAIak0XGIQ==}
531 | dependencies:
532 | '@volar/typescript': 1.0.18
533 | '@volar/vue-language-core': 1.0.18
534 | dev: true
535 |
536 | /@vue/compiler-core/3.2.45:
537 | resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==}
538 | dependencies:
539 | '@babel/parser': 7.20.7
540 | '@vue/shared': 3.2.45
541 | estree-walker: 2.0.2
542 | source-map: 0.6.1
543 |
544 | /@vue/compiler-dom/3.2.45:
545 | resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==}
546 | dependencies:
547 | '@vue/compiler-core': 3.2.45
548 | '@vue/shared': 3.2.45
549 |
550 | /@vue/compiler-sfc/3.2.45:
551 | resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==}
552 | dependencies:
553 | '@babel/parser': 7.20.7
554 | '@vue/compiler-core': 3.2.45
555 | '@vue/compiler-dom': 3.2.45
556 | '@vue/compiler-ssr': 3.2.45
557 | '@vue/reactivity-transform': 3.2.45
558 | '@vue/shared': 3.2.45
559 | estree-walker: 2.0.2
560 | magic-string: 0.25.9
561 | postcss: 8.4.20
562 | source-map: 0.6.1
563 |
564 | /@vue/compiler-ssr/3.2.45:
565 | resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==}
566 | dependencies:
567 | '@vue/compiler-dom': 3.2.45
568 | '@vue/shared': 3.2.45
569 |
570 | /@vue/devtools-api/6.4.5:
571 | resolution: {integrity: sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==}
572 | dev: false
573 |
574 | /@vue/eslint-config-typescript/11.0.2_eh2oupyoc3mviptu6zovyv6md4:
575 | resolution: {integrity: sha512-EiKud1NqlWmSapBFkeSrE994qpKx7/27uCGnhdqzllYDpQZroyX/O6bwjEpeuyKamvLbsGdO6PMR2faIf+zFnw==}
576 | engines: {node: ^14.17.0 || >=16.0.0}
577 | peerDependencies:
578 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
579 | eslint-plugin-vue: ^9.0.0
580 | typescript: '*'
581 | peerDependenciesMeta:
582 | typescript:
583 | optional: true
584 | dependencies:
585 | '@typescript-eslint/eslint-plugin': 5.47.1_txmweb6yn7coi7nfrp22gpyqmy
586 | '@typescript-eslint/parser': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
587 | eslint: 8.30.0
588 | eslint-plugin-vue: 9.8.0_eslint@8.30.0
589 | typescript: 4.9.4
590 | vue-eslint-parser: 9.1.0_eslint@8.30.0
591 | transitivePeerDependencies:
592 | - supports-color
593 | dev: true
594 |
595 | /@vue/reactivity-transform/3.2.45:
596 | resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==}
597 | dependencies:
598 | '@babel/parser': 7.20.7
599 | '@vue/compiler-core': 3.2.45
600 | '@vue/shared': 3.2.45
601 | estree-walker: 2.0.2
602 | magic-string: 0.25.9
603 |
604 | /@vue/reactivity/3.2.45:
605 | resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==}
606 | dependencies:
607 | '@vue/shared': 3.2.45
608 |
609 | /@vue/runtime-core/3.2.45:
610 | resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==}
611 | dependencies:
612 | '@vue/reactivity': 3.2.45
613 | '@vue/shared': 3.2.45
614 |
615 | /@vue/runtime-dom/3.2.45:
616 | resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==}
617 | dependencies:
618 | '@vue/runtime-core': 3.2.45
619 | '@vue/shared': 3.2.45
620 | csstype: 2.6.21
621 |
622 | /@vue/server-renderer/3.2.45_vue@3.2.45:
623 | resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==}
624 | peerDependencies:
625 | vue: 3.2.45
626 | dependencies:
627 | '@vue/compiler-ssr': 3.2.45
628 | '@vue/shared': 3.2.45
629 | vue: 3.2.45
630 |
631 | /@vue/shared/3.2.45:
632 | resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
633 |
634 | /acorn-jsx/5.3.2_acorn@8.8.1:
635 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
636 | peerDependencies:
637 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
638 | dependencies:
639 | acorn: 8.8.1
640 | dev: true
641 |
642 | /acorn/8.8.1:
643 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
644 | engines: {node: '>=0.4.0'}
645 | hasBin: true
646 | dev: true
647 |
648 | /address/1.2.2:
649 | resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
650 | engines: {node: '>= 10.0.0'}
651 | dev: true
652 |
653 | /ajv/6.12.6:
654 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
655 | dependencies:
656 | fast-deep-equal: 3.1.3
657 | fast-json-stable-stringify: 2.1.0
658 | json-schema-traverse: 0.4.1
659 | uri-js: 4.4.1
660 | dev: true
661 |
662 | /ansi-regex/5.0.1:
663 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
664 | engines: {node: '>=8'}
665 | dev: true
666 |
667 | /ansi-styles/4.3.0:
668 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
669 | engines: {node: '>=8'}
670 | dependencies:
671 | color-convert: 2.0.1
672 | dev: true
673 |
674 | /anymatch/3.1.3:
675 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
676 | engines: {node: '>= 8'}
677 | dependencies:
678 | normalize-path: 3.0.0
679 | picomatch: 2.3.1
680 | dev: true
681 |
682 | /argparse/2.0.1:
683 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
684 | dev: true
685 |
686 | /array-union/2.1.0:
687 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
688 | engines: {node: '>=8'}
689 | dev: true
690 |
691 | /balanced-match/1.0.2:
692 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
693 | dev: true
694 |
695 | /binary-extensions/2.2.0:
696 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
697 | engines: {node: '>=8'}
698 | dev: true
699 |
700 | /boolbase/1.0.0:
701 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
702 | dev: true
703 |
704 | /brace-expansion/1.1.11:
705 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
706 | dependencies:
707 | balanced-match: 1.0.2
708 | concat-map: 0.0.1
709 | dev: true
710 |
711 | /brace-expansion/2.0.1:
712 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
713 | dependencies:
714 | balanced-match: 1.0.2
715 | dev: true
716 |
717 | /braces/3.0.2:
718 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
719 | engines: {node: '>=8'}
720 | dependencies:
721 | fill-range: 7.0.1
722 | dev: true
723 |
724 | /callsites/3.1.0:
725 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
726 | engines: {node: '>=6'}
727 | dev: true
728 |
729 | /chalk/4.1.2:
730 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
731 | engines: {node: '>=10'}
732 | dependencies:
733 | ansi-styles: 4.3.0
734 | supports-color: 7.2.0
735 | dev: true
736 |
737 | /chokidar/3.5.3:
738 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
739 | engines: {node: '>= 8.10.0'}
740 | dependencies:
741 | anymatch: 3.1.3
742 | braces: 3.0.2
743 | glob-parent: 5.1.2
744 | is-binary-path: 2.1.0
745 | is-glob: 4.0.3
746 | normalize-path: 3.0.0
747 | readdirp: 3.6.0
748 | optionalDependencies:
749 | fsevents: 2.3.2
750 | dev: true
751 |
752 | /color-convert/2.0.1:
753 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
754 | engines: {node: '>=7.0.0'}
755 | dependencies:
756 | color-name: 1.1.4
757 | dev: true
758 |
759 | /color-name/1.1.4:
760 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
761 | dev: true
762 |
763 | /concat-map/0.0.1:
764 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
765 | dev: true
766 |
767 | /cross-spawn/7.0.3:
768 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
769 | engines: {node: '>= 8'}
770 | dependencies:
771 | path-key: 3.1.1
772 | shebang-command: 2.0.0
773 | which: 2.0.2
774 | dev: true
775 |
776 | /cssesc/3.0.0:
777 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
778 | engines: {node: '>=4'}
779 | hasBin: true
780 | dev: true
781 |
782 | /csstype/2.6.21:
783 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
784 |
785 | /de-indent/1.0.2:
786 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
787 | dev: true
788 |
789 | /debug/4.3.4:
790 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
791 | engines: {node: '>=6.0'}
792 | peerDependencies:
793 | supports-color: '*'
794 | peerDependenciesMeta:
795 | supports-color:
796 | optional: true
797 | dependencies:
798 | ms: 2.1.2
799 | dev: true
800 |
801 | /deep-is/0.1.4:
802 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
803 | dev: true
804 |
805 | /define-lazy-prop/2.0.0:
806 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
807 | engines: {node: '>=8'}
808 | dev: true
809 |
810 | /detect-port/1.5.1:
811 | resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==}
812 | hasBin: true
813 | dependencies:
814 | address: 1.2.2
815 | debug: 4.3.4
816 | transitivePeerDependencies:
817 | - supports-color
818 | dev: true
819 |
820 | /dir-glob/3.0.1:
821 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
822 | engines: {node: '>=8'}
823 | dependencies:
824 | path-type: 4.0.0
825 | dev: true
826 |
827 | /doctrine/3.0.0:
828 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
829 | engines: {node: '>=6.0.0'}
830 | dependencies:
831 | esutils: 2.0.3
832 | dev: true
833 |
834 | /dom-serializer/2.0.0:
835 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
836 | dependencies:
837 | domelementtype: 2.3.0
838 | domhandler: 5.0.3
839 | entities: 4.4.0
840 | dev: true
841 |
842 | /domelementtype/2.3.0:
843 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
844 | dev: true
845 |
846 | /domhandler/5.0.3:
847 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
848 | engines: {node: '>= 4'}
849 | dependencies:
850 | domelementtype: 2.3.0
851 | dev: true
852 |
853 | /domutils/3.0.1:
854 | resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==}
855 | dependencies:
856 | dom-serializer: 2.0.0
857 | domelementtype: 2.3.0
858 | domhandler: 5.0.3
859 | dev: true
860 |
861 | /entities/4.4.0:
862 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
863 | engines: {node: '>=0.12'}
864 | dev: true
865 |
866 | /esbuild/0.16.12:
867 | resolution: {integrity: sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==}
868 | engines: {node: '>=12'}
869 | hasBin: true
870 | requiresBuild: true
871 | optionalDependencies:
872 | '@esbuild/android-arm': 0.16.12
873 | '@esbuild/android-arm64': 0.16.12
874 | '@esbuild/android-x64': 0.16.12
875 | '@esbuild/darwin-arm64': 0.16.12
876 | '@esbuild/darwin-x64': 0.16.12
877 | '@esbuild/freebsd-arm64': 0.16.12
878 | '@esbuild/freebsd-x64': 0.16.12
879 | '@esbuild/linux-arm': 0.16.12
880 | '@esbuild/linux-arm64': 0.16.12
881 | '@esbuild/linux-ia32': 0.16.12
882 | '@esbuild/linux-loong64': 0.16.12
883 | '@esbuild/linux-mips64el': 0.16.12
884 | '@esbuild/linux-ppc64': 0.16.12
885 | '@esbuild/linux-riscv64': 0.16.12
886 | '@esbuild/linux-s390x': 0.16.12
887 | '@esbuild/linux-x64': 0.16.12
888 | '@esbuild/netbsd-x64': 0.16.12
889 | '@esbuild/openbsd-x64': 0.16.12
890 | '@esbuild/sunos-x64': 0.16.12
891 | '@esbuild/win32-arm64': 0.16.12
892 | '@esbuild/win32-ia32': 0.16.12
893 | '@esbuild/win32-x64': 0.16.12
894 | dev: true
895 |
896 | /escape-string-regexp/4.0.0:
897 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
898 | engines: {node: '>=10'}
899 | dev: true
900 |
901 | /eslint-config-alloy/4.7.0_aquz7nympv5of5li5f2v4fy5ii:
902 | resolution: {integrity: sha512-e5wUP9SB/k2hBzzl2InpvG1toYWB4lRrJbAAdtDv8CUWsyxrznQZod4CrS1p3O+hf+PQhSqR2rbXLF4TvNWisw==}
903 | peerDependencies:
904 | '@babel/eslint-parser': 7.x
905 | '@babel/preset-react': 7.x
906 | '@typescript-eslint/eslint-plugin': '>=5.38.1'
907 | '@typescript-eslint/parser': 5.x
908 | eslint: '>=8.24.0'
909 | eslint-plugin-react: '>=7.31.8'
910 | eslint-plugin-vue: '>=9.5.1'
911 | typescript: 4.x
912 | vue-eslint-parser: 9.x
913 | peerDependenciesMeta:
914 | '@babel/eslint-parser':
915 | optional: true
916 | '@babel/preset-react':
917 | optional: true
918 | '@typescript-eslint/eslint-plugin':
919 | optional: true
920 | '@typescript-eslint/parser':
921 | optional: true
922 | eslint-plugin-react:
923 | optional: true
924 | eslint-plugin-vue:
925 | optional: true
926 | typescript:
927 | optional: true
928 | vue-eslint-parser:
929 | optional: true
930 | dependencies:
931 | '@typescript-eslint/eslint-plugin': 5.47.1_txmweb6yn7coi7nfrp22gpyqmy
932 | '@typescript-eslint/parser': 5.47.1_lzzuuodtsqwxnvqeq4g4likcqa
933 | eslint: 8.30.0
934 | eslint-plugin-vue: 9.8.0_eslint@8.30.0
935 | typescript: 4.9.4
936 | dev: true
937 |
938 | /eslint-config-prettier/8.5.0_eslint@8.30.0:
939 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
940 | hasBin: true
941 | peerDependencies:
942 | eslint: '>=7.0.0'
943 | dependencies:
944 | eslint: 8.30.0
945 | dev: true
946 |
947 | /eslint-plugin-prettier/4.2.1_kl4pe43v5b43npmso5hoplpbyi:
948 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
949 | engines: {node: '>=12.0.0'}
950 | peerDependencies:
951 | eslint: '>=7.28.0'
952 | eslint-config-prettier: '*'
953 | prettier: '>=2.0.0'
954 | peerDependenciesMeta:
955 | eslint-config-prettier:
956 | optional: true
957 | dependencies:
958 | eslint: 8.30.0
959 | eslint-config-prettier: 8.5.0_eslint@8.30.0
960 | prettier: 2.8.1
961 | prettier-linter-helpers: 1.0.0
962 | dev: true
963 |
964 | /eslint-plugin-vue/9.8.0_eslint@8.30.0:
965 | resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==}
966 | engines: {node: ^14.17.0 || >=16.0.0}
967 | peerDependencies:
968 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
969 | dependencies:
970 | eslint: 8.30.0
971 | eslint-utils: 3.0.0_eslint@8.30.0
972 | natural-compare: 1.4.0
973 | nth-check: 2.1.1
974 | postcss-selector-parser: 6.0.11
975 | semver: 7.3.8
976 | vue-eslint-parser: 9.1.0_eslint@8.30.0
977 | xml-name-validator: 4.0.0
978 | transitivePeerDependencies:
979 | - supports-color
980 | dev: true
981 |
982 | /eslint-scope/5.1.1:
983 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
984 | engines: {node: '>=8.0.0'}
985 | dependencies:
986 | esrecurse: 4.3.0
987 | estraverse: 4.3.0
988 | dev: true
989 |
990 | /eslint-scope/7.1.1:
991 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
992 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
993 | dependencies:
994 | esrecurse: 4.3.0
995 | estraverse: 5.3.0
996 | dev: true
997 |
998 | /eslint-utils/3.0.0_eslint@8.30.0:
999 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
1000 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
1001 | peerDependencies:
1002 | eslint: '>=5'
1003 | dependencies:
1004 | eslint: 8.30.0
1005 | eslint-visitor-keys: 2.1.0
1006 | dev: true
1007 |
1008 | /eslint-visitor-keys/2.1.0:
1009 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1010 | engines: {node: '>=10'}
1011 | dev: true
1012 |
1013 | /eslint-visitor-keys/3.3.0:
1014 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
1015 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1016 | dev: true
1017 |
1018 | /eslint/8.30.0:
1019 | resolution: {integrity: sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==}
1020 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1021 | hasBin: true
1022 | dependencies:
1023 | '@eslint/eslintrc': 1.4.0
1024 | '@humanwhocodes/config-array': 0.11.8
1025 | '@humanwhocodes/module-importer': 1.0.1
1026 | '@nodelib/fs.walk': 1.2.8
1027 | ajv: 6.12.6
1028 | chalk: 4.1.2
1029 | cross-spawn: 7.0.3
1030 | debug: 4.3.4
1031 | doctrine: 3.0.0
1032 | escape-string-regexp: 4.0.0
1033 | eslint-scope: 7.1.1
1034 | eslint-utils: 3.0.0_eslint@8.30.0
1035 | eslint-visitor-keys: 3.3.0
1036 | espree: 9.4.1
1037 | esquery: 1.4.0
1038 | esutils: 2.0.3
1039 | fast-deep-equal: 3.1.3
1040 | file-entry-cache: 6.0.1
1041 | find-up: 5.0.0
1042 | glob-parent: 6.0.2
1043 | globals: 13.19.0
1044 | grapheme-splitter: 1.0.4
1045 | ignore: 5.2.4
1046 | import-fresh: 3.3.0
1047 | imurmurhash: 0.1.4
1048 | is-glob: 4.0.3
1049 | is-path-inside: 3.0.3
1050 | js-sdsl: 4.2.0
1051 | js-yaml: 4.1.0
1052 | json-stable-stringify-without-jsonify: 1.0.1
1053 | levn: 0.4.1
1054 | lodash.merge: 4.6.2
1055 | minimatch: 3.1.2
1056 | natural-compare: 1.4.0
1057 | optionator: 0.9.1
1058 | regexpp: 3.2.0
1059 | strip-ansi: 6.0.1
1060 | strip-json-comments: 3.1.1
1061 | text-table: 0.2.0
1062 | transitivePeerDependencies:
1063 | - supports-color
1064 | dev: true
1065 |
1066 | /espree/9.4.1:
1067 | resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==}
1068 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1069 | dependencies:
1070 | acorn: 8.8.1
1071 | acorn-jsx: 5.3.2_acorn@8.8.1
1072 | eslint-visitor-keys: 3.3.0
1073 | dev: true
1074 |
1075 | /esquery/1.4.0:
1076 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
1077 | engines: {node: '>=0.10'}
1078 | dependencies:
1079 | estraverse: 5.3.0
1080 | dev: true
1081 |
1082 | /esrecurse/4.3.0:
1083 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1084 | engines: {node: '>=4.0'}
1085 | dependencies:
1086 | estraverse: 5.3.0
1087 | dev: true
1088 |
1089 | /estraverse/4.3.0:
1090 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1091 | engines: {node: '>=4.0'}
1092 | dev: true
1093 |
1094 | /estraverse/5.3.0:
1095 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1096 | engines: {node: '>=4.0'}
1097 | dev: true
1098 |
1099 | /estree-walker/2.0.2:
1100 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1101 |
1102 | /esutils/2.0.3:
1103 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1104 | engines: {node: '>=0.10.0'}
1105 | dev: true
1106 |
1107 | /eventemitter3/5.0.0:
1108 | resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==}
1109 | dev: false
1110 |
1111 | /fast-deep-equal/3.1.3:
1112 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1113 | dev: true
1114 |
1115 | /fast-diff/1.2.0:
1116 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
1117 | dev: true
1118 |
1119 | /fast-glob/3.2.12:
1120 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
1121 | engines: {node: '>=8.6.0'}
1122 | dependencies:
1123 | '@nodelib/fs.stat': 2.0.5
1124 | '@nodelib/fs.walk': 1.2.8
1125 | glob-parent: 5.1.2
1126 | merge2: 1.4.1
1127 | micromatch: 4.0.5
1128 | dev: true
1129 |
1130 | /fast-json-stable-stringify/2.1.0:
1131 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1132 | dev: true
1133 |
1134 | /fast-levenshtein/2.0.6:
1135 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1136 | dev: true
1137 |
1138 | /fastq/1.14.0:
1139 | resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
1140 | dependencies:
1141 | reusify: 1.0.4
1142 | dev: true
1143 |
1144 | /file-entry-cache/6.0.1:
1145 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1146 | engines: {node: ^10.12.0 || >=12.0.0}
1147 | dependencies:
1148 | flat-cache: 3.0.4
1149 | dev: true
1150 |
1151 | /fill-range/7.0.1:
1152 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1153 | engines: {node: '>=8'}
1154 | dependencies:
1155 | to-regex-range: 5.0.1
1156 | dev: true
1157 |
1158 | /find-up/5.0.0:
1159 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1160 | engines: {node: '>=10'}
1161 | dependencies:
1162 | locate-path: 6.0.0
1163 | path-exists: 4.0.0
1164 | dev: true
1165 |
1166 | /flat-cache/3.0.4:
1167 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1168 | engines: {node: ^10.12.0 || >=12.0.0}
1169 | dependencies:
1170 | flatted: 3.2.7
1171 | rimraf: 3.0.2
1172 | dev: true
1173 |
1174 | /flatted/3.2.7:
1175 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1176 | dev: true
1177 |
1178 | /fs.realpath/1.0.0:
1179 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1180 | dev: true
1181 |
1182 | /fsevents/2.3.2:
1183 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1184 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1185 | os: [darwin]
1186 | requiresBuild: true
1187 | dev: true
1188 | optional: true
1189 |
1190 | /function-bind/1.1.1:
1191 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1192 | dev: true
1193 |
1194 | /glob-parent/5.1.2:
1195 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1196 | engines: {node: '>= 6'}
1197 | dependencies:
1198 | is-glob: 4.0.3
1199 | dev: true
1200 |
1201 | /glob-parent/6.0.2:
1202 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1203 | engines: {node: '>=10.13.0'}
1204 | dependencies:
1205 | is-glob: 4.0.3
1206 | dev: true
1207 |
1208 | /glob/7.2.3:
1209 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1210 | dependencies:
1211 | fs.realpath: 1.0.0
1212 | inflight: 1.0.6
1213 | inherits: 2.0.4
1214 | minimatch: 3.1.2
1215 | once: 1.4.0
1216 | path-is-absolute: 1.0.1
1217 | dev: true
1218 |
1219 | /globals/13.19.0:
1220 | resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==}
1221 | engines: {node: '>=8'}
1222 | dependencies:
1223 | type-fest: 0.20.2
1224 | dev: true
1225 |
1226 | /globby/11.1.0:
1227 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1228 | engines: {node: '>=10'}
1229 | dependencies:
1230 | array-union: 2.1.0
1231 | dir-glob: 3.0.1
1232 | fast-glob: 3.2.12
1233 | ignore: 5.2.4
1234 | merge2: 1.4.1
1235 | slash: 3.0.0
1236 | dev: true
1237 |
1238 | /grapheme-splitter/1.0.4:
1239 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
1240 | dev: true
1241 |
1242 | /has-flag/4.0.0:
1243 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1244 | engines: {node: '>=8'}
1245 | dev: true
1246 |
1247 | /has/1.0.3:
1248 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1249 | engines: {node: '>= 0.4.0'}
1250 | dependencies:
1251 | function-bind: 1.1.1
1252 | dev: true
1253 |
1254 | /he/1.2.0:
1255 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
1256 | hasBin: true
1257 | dev: true
1258 |
1259 | /htmlparser2/8.0.1:
1260 | resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==}
1261 | dependencies:
1262 | domelementtype: 2.3.0
1263 | domhandler: 5.0.3
1264 | domutils: 3.0.1
1265 | entities: 4.4.0
1266 | dev: true
1267 |
1268 | /ignore/5.2.4:
1269 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1270 | engines: {node: '>= 4'}
1271 | dev: true
1272 |
1273 | /immutable/4.2.1:
1274 | resolution: {integrity: sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==}
1275 | dev: true
1276 |
1277 | /import-fresh/3.3.0:
1278 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1279 | engines: {node: '>=6'}
1280 | dependencies:
1281 | parent-module: 1.0.1
1282 | resolve-from: 4.0.0
1283 | dev: true
1284 |
1285 | /imurmurhash/0.1.4:
1286 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1287 | engines: {node: '>=0.8.19'}
1288 | dev: true
1289 |
1290 | /inflight/1.0.6:
1291 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1292 | dependencies:
1293 | once: 1.4.0
1294 | wrappy: 1.0.2
1295 | dev: true
1296 |
1297 | /inherits/2.0.4:
1298 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1299 | dev: true
1300 |
1301 | /is-binary-path/2.1.0:
1302 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1303 | engines: {node: '>=8'}
1304 | dependencies:
1305 | binary-extensions: 2.2.0
1306 | dev: true
1307 |
1308 | /is-core-module/2.11.0:
1309 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
1310 | dependencies:
1311 | has: 1.0.3
1312 | dev: true
1313 |
1314 | /is-docker/2.2.1:
1315 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
1316 | engines: {node: '>=8'}
1317 | hasBin: true
1318 | dev: true
1319 |
1320 | /is-extglob/2.1.1:
1321 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1322 | engines: {node: '>=0.10.0'}
1323 | dev: true
1324 |
1325 | /is-glob/4.0.3:
1326 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1327 | engines: {node: '>=0.10.0'}
1328 | dependencies:
1329 | is-extglob: 2.1.1
1330 | dev: true
1331 |
1332 | /is-number/7.0.0:
1333 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1334 | engines: {node: '>=0.12.0'}
1335 | dev: true
1336 |
1337 | /is-path-inside/3.0.3:
1338 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1339 | engines: {node: '>=8'}
1340 | dev: true
1341 |
1342 | /is-wsl/2.2.0:
1343 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
1344 | engines: {node: '>=8'}
1345 | dependencies:
1346 | is-docker: 2.2.1
1347 | dev: true
1348 |
1349 | /isexe/2.0.0:
1350 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1351 | dev: true
1352 |
1353 | /js-sdsl/4.2.0:
1354 | resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==}
1355 | dev: true
1356 |
1357 | /js-yaml/4.1.0:
1358 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1359 | hasBin: true
1360 | dependencies:
1361 | argparse: 2.0.1
1362 | dev: true
1363 |
1364 | /json-schema-traverse/0.4.1:
1365 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1366 | dev: true
1367 |
1368 | /json-stable-stringify-without-jsonify/1.0.1:
1369 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1370 | dev: true
1371 |
1372 | /levn/0.4.1:
1373 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1374 | engines: {node: '>= 0.8.0'}
1375 | dependencies:
1376 | prelude-ls: 1.2.1
1377 | type-check: 0.4.0
1378 | dev: true
1379 |
1380 | /locate-path/6.0.0:
1381 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1382 | engines: {node: '>=10'}
1383 | dependencies:
1384 | p-locate: 5.0.0
1385 | dev: true
1386 |
1387 | /lodash.merge/4.6.2:
1388 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1389 | dev: true
1390 |
1391 | /lodash/4.17.21:
1392 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1393 | dev: true
1394 |
1395 | /lru-cache/6.0.0:
1396 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1397 | engines: {node: '>=10'}
1398 | dependencies:
1399 | yallist: 4.0.0
1400 | dev: true
1401 |
1402 | /magic-string/0.25.9:
1403 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1404 | dependencies:
1405 | sourcemap-codec: 1.4.8
1406 |
1407 | /merge2/1.4.1:
1408 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1409 | engines: {node: '>= 8'}
1410 | dev: true
1411 |
1412 | /micromatch/4.0.5:
1413 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1414 | engines: {node: '>=8.6'}
1415 | dependencies:
1416 | braces: 3.0.2
1417 | picomatch: 2.3.1
1418 | dev: true
1419 |
1420 | /minimatch/3.1.2:
1421 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1422 | dependencies:
1423 | brace-expansion: 1.1.11
1424 | dev: true
1425 |
1426 | /minimatch/5.1.2:
1427 | resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==}
1428 | engines: {node: '>=10'}
1429 | dependencies:
1430 | brace-expansion: 2.0.1
1431 | dev: true
1432 |
1433 | /mrmime/1.0.1:
1434 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
1435 | engines: {node: '>=10'}
1436 | dev: true
1437 |
1438 | /ms/2.1.2:
1439 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1440 | dev: true
1441 |
1442 | /muggle-string/0.1.0:
1443 | resolution: {integrity: sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==}
1444 | dev: true
1445 |
1446 | /nanoid/3.3.4:
1447 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
1448 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1449 | hasBin: true
1450 |
1451 | /natural-compare-lite/1.4.0:
1452 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
1453 | dev: true
1454 |
1455 | /natural-compare/1.4.0:
1456 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1457 | dev: true
1458 |
1459 | /normalize-path/3.0.0:
1460 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1461 | engines: {node: '>=0.10.0'}
1462 | dev: true
1463 |
1464 | /nth-check/2.1.1:
1465 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
1466 | dependencies:
1467 | boolbase: 1.0.0
1468 | dev: true
1469 |
1470 | /once/1.4.0:
1471 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1472 | dependencies:
1473 | wrappy: 1.0.2
1474 | dev: true
1475 |
1476 | /open/8.4.0:
1477 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
1478 | engines: {node: '>=12'}
1479 | dependencies:
1480 | define-lazy-prop: 2.0.0
1481 | is-docker: 2.2.1
1482 | is-wsl: 2.2.0
1483 | dev: true
1484 |
1485 | /optionator/0.9.1:
1486 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
1487 | engines: {node: '>= 0.8.0'}
1488 | dependencies:
1489 | deep-is: 0.1.4
1490 | fast-levenshtein: 2.0.6
1491 | levn: 0.4.1
1492 | prelude-ls: 1.2.1
1493 | type-check: 0.4.0
1494 | word-wrap: 1.2.3
1495 | dev: true
1496 |
1497 | /p-limit/3.1.0:
1498 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1499 | engines: {node: '>=10'}
1500 | dependencies:
1501 | yocto-queue: 0.1.0
1502 | dev: true
1503 |
1504 | /p-locate/5.0.0:
1505 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1506 | engines: {node: '>=10'}
1507 | dependencies:
1508 | p-limit: 3.1.0
1509 | dev: true
1510 |
1511 | /parent-module/1.0.1:
1512 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1513 | engines: {node: '>=6'}
1514 | dependencies:
1515 | callsites: 3.1.0
1516 | dev: true
1517 |
1518 | /path-exists/4.0.0:
1519 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1520 | engines: {node: '>=8'}
1521 | dev: true
1522 |
1523 | /path-is-absolute/1.0.1:
1524 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1525 | engines: {node: '>=0.10.0'}
1526 | dev: true
1527 |
1528 | /path-key/3.1.1:
1529 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1530 | engines: {node: '>=8'}
1531 | dev: true
1532 |
1533 | /path-parse/1.0.7:
1534 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1535 | dev: true
1536 |
1537 | /path-type/4.0.0:
1538 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1539 | engines: {node: '>=8'}
1540 | dev: true
1541 |
1542 | /picocolors/1.0.0:
1543 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1544 |
1545 | /picomatch/2.3.1:
1546 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1547 | engines: {node: '>=8.6'}
1548 | dev: true
1549 |
1550 | /pinia/2.0.28_prq2uz4lho2pwp6irk4cfkrxwu:
1551 | resolution: {integrity: sha512-YClq9DkqCblq9rlyUual7ezMu/iICWdBtfJrDt4oWU9Zxpijyz7xB2xTwx57DaBQ96UGvvTMORzALr+iO5PVMw==}
1552 | peerDependencies:
1553 | '@vue/composition-api': ^1.4.0
1554 | typescript: '>=4.4.4'
1555 | vue: ^2.6.14 || ^3.2.0
1556 | peerDependenciesMeta:
1557 | '@vue/composition-api':
1558 | optional: true
1559 | typescript:
1560 | optional: true
1561 | dependencies:
1562 | '@vue/devtools-api': 6.4.5
1563 | typescript: 4.9.4
1564 | vue: 3.2.45
1565 | vue-demi: 0.13.11_vue@3.2.45
1566 | dev: false
1567 |
1568 | /postcss-selector-parser/6.0.11:
1569 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
1570 | engines: {node: '>=4'}
1571 | dependencies:
1572 | cssesc: 3.0.0
1573 | util-deprecate: 1.0.2
1574 | dev: true
1575 |
1576 | /postcss/8.4.20:
1577 | resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==}
1578 | engines: {node: ^10 || ^12 || >=14}
1579 | dependencies:
1580 | nanoid: 3.3.4
1581 | picocolors: 1.0.0
1582 | source-map-js: 1.0.2
1583 |
1584 | /prelude-ls/1.2.1:
1585 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1586 | engines: {node: '>= 0.8.0'}
1587 | dev: true
1588 |
1589 | /prettier-linter-helpers/1.0.0:
1590 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1591 | engines: {node: '>=6.0.0'}
1592 | dependencies:
1593 | fast-diff: 1.2.0
1594 | dev: true
1595 |
1596 | /prettier/2.8.1:
1597 | resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==}
1598 | engines: {node: '>=10.13.0'}
1599 | hasBin: true
1600 | dev: true
1601 |
1602 | /punycode/2.1.1:
1603 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
1604 | engines: {node: '>=6'}
1605 | dev: true
1606 |
1607 | /queue-microtask/1.2.3:
1608 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1609 | dev: true
1610 |
1611 | /readdirp/3.6.0:
1612 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1613 | engines: {node: '>=8.10.0'}
1614 | dependencies:
1615 | picomatch: 2.3.1
1616 | dev: true
1617 |
1618 | /regexpp/3.2.0:
1619 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
1620 | engines: {node: '>=8'}
1621 | dev: true
1622 |
1623 | /resolve-from/4.0.0:
1624 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1625 | engines: {node: '>=4'}
1626 | dev: true
1627 |
1628 | /resolve/1.22.1:
1629 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
1630 | hasBin: true
1631 | dependencies:
1632 | is-core-module: 2.11.0
1633 | path-parse: 1.0.7
1634 | supports-preserve-symlinks-flag: 1.0.0
1635 | dev: true
1636 |
1637 | /reusify/1.0.4:
1638 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1639 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1640 | dev: true
1641 |
1642 | /rimraf/3.0.2:
1643 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1644 | hasBin: true
1645 | dependencies:
1646 | glob: 7.2.3
1647 | dev: true
1648 |
1649 | /rollup/3.9.0:
1650 | resolution: {integrity: sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==}
1651 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
1652 | hasBin: true
1653 | optionalDependencies:
1654 | fsevents: 2.3.2
1655 | dev: true
1656 |
1657 | /run-parallel/1.2.0:
1658 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1659 | dependencies:
1660 | queue-microtask: 1.2.3
1661 | dev: true
1662 |
1663 | /sass/1.57.1:
1664 | resolution: {integrity: sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==}
1665 | engines: {node: '>=12.0.0'}
1666 | hasBin: true
1667 | dependencies:
1668 | chokidar: 3.5.3
1669 | immutable: 4.2.1
1670 | source-map-js: 1.0.2
1671 | dev: true
1672 |
1673 | /semver/7.3.8:
1674 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
1675 | engines: {node: '>=10'}
1676 | hasBin: true
1677 | dependencies:
1678 | lru-cache: 6.0.0
1679 | dev: true
1680 |
1681 | /shebang-command/2.0.0:
1682 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1683 | engines: {node: '>=8'}
1684 | dependencies:
1685 | shebang-regex: 3.0.0
1686 | dev: true
1687 |
1688 | /shebang-regex/3.0.0:
1689 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1690 | engines: {node: '>=8'}
1691 | dev: true
1692 |
1693 | /slash/3.0.0:
1694 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1695 | engines: {node: '>=8'}
1696 | dev: true
1697 |
1698 | /source-map-js/1.0.2:
1699 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1700 | engines: {node: '>=0.10.0'}
1701 |
1702 | /source-map/0.6.1:
1703 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1704 | engines: {node: '>=0.10.0'}
1705 |
1706 | /sourcemap-codec/1.4.8:
1707 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1708 | deprecated: Please use @jridgewell/sourcemap-codec instead
1709 |
1710 | /strip-ansi/6.0.1:
1711 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1712 | engines: {node: '>=8'}
1713 | dependencies:
1714 | ansi-regex: 5.0.1
1715 | dev: true
1716 |
1717 | /strip-json-comments/3.1.1:
1718 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1719 | engines: {node: '>=8'}
1720 | dev: true
1721 |
1722 | /supports-color/7.2.0:
1723 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1724 | engines: {node: '>=8'}
1725 | dependencies:
1726 | has-flag: 4.0.0
1727 | dev: true
1728 |
1729 | /supports-preserve-symlinks-flag/1.0.0:
1730 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1731 | engines: {node: '>= 0.4'}
1732 | dev: true
1733 |
1734 | /text-table/0.2.0:
1735 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1736 | dev: true
1737 |
1738 | /to-fast-properties/2.0.0:
1739 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1740 | engines: {node: '>=4'}
1741 |
1742 | /to-regex-range/5.0.1:
1743 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1744 | engines: {node: '>=8.0'}
1745 | dependencies:
1746 | is-number: 7.0.0
1747 | dev: true
1748 |
1749 | /tslib/1.14.1:
1750 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
1751 | dev: true
1752 |
1753 | /tsutils/3.21.0_typescript@4.9.4:
1754 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
1755 | engines: {node: '>= 6'}
1756 | peerDependencies:
1757 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
1758 | dependencies:
1759 | tslib: 1.14.1
1760 | typescript: 4.9.4
1761 | dev: true
1762 |
1763 | /type-check/0.4.0:
1764 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1765 | engines: {node: '>= 0.8.0'}
1766 | dependencies:
1767 | prelude-ls: 1.2.1
1768 | dev: true
1769 |
1770 | /type-fest/0.20.2:
1771 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1772 | engines: {node: '>=10'}
1773 | dev: true
1774 |
1775 | /typescript/4.9.4:
1776 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
1777 | engines: {node: '>=4.2.0'}
1778 | hasBin: true
1779 |
1780 | /uri-js/4.4.1:
1781 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1782 | dependencies:
1783 | punycode: 2.1.1
1784 | dev: true
1785 |
1786 | /util-deprecate/1.0.2:
1787 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1788 | dev: true
1789 |
1790 | /vant/4.0.6_vue@3.2.45:
1791 | resolution: {integrity: sha512-bgO08pzQmfD1MjkwZypy5N/g9CZlQ7XH5Cvse/7HHCJ1zIvF0OSoGWNHyQm7kFJQkuxER3QnN6r4XkeCDfYDgw==}
1792 | peerDependencies:
1793 | vue: ^3.0.0
1794 | dependencies:
1795 | '@vant/popperjs': 1.3.0
1796 | '@vant/use': 1.4.3
1797 | vue: 3.2.45
1798 | dev: false
1799 |
1800 | /vite-plugin-monkey/2.10.2_vite@4.0.3:
1801 | resolution: {integrity: sha512-TNKEpUHlNNntwjUvBbQezDJdizXigKr2XcIJdjVFVb+VYs0Z6AR9Q3cXNiPGZzpS1oDjvz39k6zO8HhFV3MsgQ==}
1802 | engines: {node: ^14.18 || >= 16, pnpm: '>=6'}
1803 | peerDependencies:
1804 | vite: '>=3.0.0'
1805 | dependencies:
1806 | cross-spawn: 7.0.3
1807 | detect-port: 1.5.1
1808 | htmlparser2: 8.0.1
1809 | mrmime: 1.0.1
1810 | open: 8.4.0
1811 | picocolors: 1.0.0
1812 | vite: 4.0.3_sass@1.57.1
1813 | transitivePeerDependencies:
1814 | - supports-color
1815 | dev: true
1816 |
1817 | /vite/4.0.3_sass@1.57.1:
1818 | resolution: {integrity: sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==}
1819 | engines: {node: ^14.18.0 || >=16.0.0}
1820 | hasBin: true
1821 | peerDependencies:
1822 | '@types/node': '>= 14'
1823 | less: '*'
1824 | sass: '*'
1825 | stylus: '*'
1826 | sugarss: '*'
1827 | terser: ^5.4.0
1828 | peerDependenciesMeta:
1829 | '@types/node':
1830 | optional: true
1831 | less:
1832 | optional: true
1833 | sass:
1834 | optional: true
1835 | stylus:
1836 | optional: true
1837 | sugarss:
1838 | optional: true
1839 | terser:
1840 | optional: true
1841 | dependencies:
1842 | esbuild: 0.16.12
1843 | postcss: 8.4.20
1844 | resolve: 1.22.1
1845 | rollup: 3.9.0
1846 | sass: 1.57.1
1847 | optionalDependencies:
1848 | fsevents: 2.3.2
1849 | dev: true
1850 |
1851 | /vue-demi/0.13.11_vue@3.2.45:
1852 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
1853 | engines: {node: '>=12'}
1854 | hasBin: true
1855 | requiresBuild: true
1856 | peerDependencies:
1857 | '@vue/composition-api': ^1.0.0-rc.1
1858 | vue: ^3.0.0-0 || ^2.6.0
1859 | peerDependenciesMeta:
1860 | '@vue/composition-api':
1861 | optional: true
1862 | dependencies:
1863 | vue: 3.2.45
1864 | dev: false
1865 |
1866 | /vue-eslint-parser/9.1.0_eslint@8.30.0:
1867 | resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
1868 | engines: {node: ^14.17.0 || >=16.0.0}
1869 | peerDependencies:
1870 | eslint: '>=6.0.0'
1871 | dependencies:
1872 | debug: 4.3.4
1873 | eslint: 8.30.0
1874 | eslint-scope: 7.1.1
1875 | eslint-visitor-keys: 3.3.0
1876 | espree: 9.4.1
1877 | esquery: 1.4.0
1878 | lodash: 4.17.21
1879 | semver: 7.3.8
1880 | transitivePeerDependencies:
1881 | - supports-color
1882 | dev: true
1883 |
1884 | /vue-template-compiler/2.7.14:
1885 | resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
1886 | dependencies:
1887 | de-indent: 1.0.2
1888 | he: 1.2.0
1889 | dev: true
1890 |
1891 | /vue-tsc/1.0.18_typescript@4.9.4:
1892 | resolution: {integrity: sha512-JFLAz3Xh/iyTnMGdlfG3TuvcaJyFcqyELpLv50jyvOYLAS2+WHzac0IB73FQ37HmGm/4IWMkQZS5r/9FKSejQQ==}
1893 | hasBin: true
1894 | peerDependencies:
1895 | typescript: '*'
1896 | dependencies:
1897 | '@volar/vue-language-core': 1.0.18
1898 | '@volar/vue-typescript': 1.0.18
1899 | typescript: 4.9.4
1900 | dev: true
1901 |
1902 | /vue/3.2.45:
1903 | resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==}
1904 | dependencies:
1905 | '@vue/compiler-dom': 3.2.45
1906 | '@vue/compiler-sfc': 3.2.45
1907 | '@vue/runtime-dom': 3.2.45
1908 | '@vue/server-renderer': 3.2.45_vue@3.2.45
1909 | '@vue/shared': 3.2.45
1910 |
1911 | /which/2.0.2:
1912 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1913 | engines: {node: '>= 8'}
1914 | hasBin: true
1915 | dependencies:
1916 | isexe: 2.0.0
1917 | dev: true
1918 |
1919 | /word-wrap/1.2.3:
1920 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
1921 | engines: {node: '>=0.10.0'}
1922 | dev: true
1923 |
1924 | /wrappy/1.0.2:
1925 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1926 | dev: true
1927 |
1928 | /xml-name-validator/4.0.0:
1929 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
1930 | engines: {node: '>=12'}
1931 | dev: true
1932 |
1933 | /yallist/4.0.0:
1934 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1935 | dev: true
1936 |
1937 | /yocto-queue/0.1.0:
1938 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1939 | engines: {node: '>=10'}
1940 | dev: true
1941 |
--------------------------------------------------------------------------------
/src/assets/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/vue.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/data/ajaxhook.ts:
--------------------------------------------------------------------------------
1 | const IS_WEIXIN = navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
2 | /**
3 | * Ajax Hook Config
4 | * @description 用于拦截、直接返回或缓存请求
5 | */
6 | export default {
7 | cache: [
8 | {
9 | url: 'https://bbs-api.mihoyo.com/user/wapi/getUserFullInfo',
10 | prefix: true,
11 | },
12 | {
13 | url: 'https://passport-api-v4.mihoyo.com/account/ma-cn-session/web/verifyLtoken',
14 | prefix: true,
15 | },
16 | {
17 | url: 'https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookieToken',
18 | prefix: true,
19 | },
20 | {
21 | url: 'https://api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/spot_kind/get_spot_kinds',
22 | prefix: false,
23 | },
24 | {
25 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/label/tree',
26 | prefix: false,
27 | },
28 | {
29 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/game_item',
30 | prefix: false,
31 | },
32 | {
33 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/get_public_notice',
34 | prefix: false,
35 | },
36 | {
37 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/get_guide',
38 | prefix: false,
39 | },
40 | {
41 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/get_feedback',
42 | prefix: false,
43 | },
44 | {
45 | url: 'https://api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/point/mark_map_point_list',
46 | prefix: false,
47 | },
48 | {
49 | url: 'https://waf-api-takumi.mihoyo.com/common/map_user/ys_obc/v1/map/point/list',
50 | prefix: false,
51 | },
52 | ],
53 | direct: [
54 | ...(IS_WEIXIN
55 | ? []
56 | : [
57 | {
58 | url: 'https://api.mihoyo.com/weixin_api/get/signature',
59 | response: {
60 | status: 200,
61 | headers: {
62 | 'Content-Type': 'application/json',
63 | },
64 | response: JSON.stringify({
65 | retcode: 0,
66 | message: 'succ',
67 | data: {
68 | timestamp: Date.now(),
69 | noncestr: '',
70 | signature: '',
71 | },
72 | }),
73 | },
74 | },
75 | ]),
76 | ],
77 | }
78 |
--------------------------------------------------------------------------------
/src/data/overlays.ts:
--------------------------------------------------------------------------------
1 | import { ZQMapOverlay } from './../lib/overlay'
2 | /**
3 | * Overlay Config
4 | * @description 配置地图叠加层
5 | */
6 | export default [
7 | {
8 | name: '米游社 - 须弥 - 沙漠地下',
9 | image: 'https://upload-bbs.mihoyo.com/upload/2022/10/29/300350281/4b5f2f9a5186d4c27d52910a39211b7f_2427272594906556713.png',
10 | position: [6420, -6890],
11 | resolution: 3072,
12 | rule: ['webstatic.mihoyo.com', 'act.hoyolab.com'],
13 | },
14 | {
15 | name: '米游社 - 须弥 - 森林地下',
16 | image: 'https://upload-bbs.mihoyo.com/upload/2022/10/29/300350281/e316346f4572c7d7e8778e71eabe95e0_6486682272623226706.png',
17 | position: [4515, -5350],
18 | resolution: 3072,
19 | rule: ['webstatic.mihoyo.com', 'act.hoyolab.com'],
20 | },
21 | ] as ZQMapOverlay[]
22 |
--------------------------------------------------------------------------------
/src/lib/api.ts:
--------------------------------------------------------------------------------
1 | import { WsInvokeResponse } from './webcontrol'
2 | import { unsafeWindow } from '$'
3 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
4 | export const XHR = new (unsafeWindow as any).XMLHttpRequest() as typeof XMLHttpRequest
5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
6 | export const WS = new (unsafeWindow as any).WebSocket() as typeof WebSocket
7 | export const signedLaunch = async (token: string) => {
8 | if (/zhiqiong-uwp/.test(navigator.userAgent)) {
9 | try {
10 | unsafeWindow.chrome.webview.postMessage({ action: 'PLUGIN', token })
11 | await new Promise((resolve) => {
12 | setTimeout(resolve, 2000)
13 | })
14 | } catch (e) {}
15 | } else {
16 | const launchBase = 'cocogoat-control://launch'
17 | const signapiBase = 'https://77.cocogoat.work/v2/frostflake/sign'
18 | const launchParams = `?register-token=${token}®ister-origin=${location.origin}`
19 | let launchUrl = `${launchBase}${launchParams}`
20 | try {
21 | // remote-sign launch url
22 | const res = await getWithTimeout<{ url: string }>(signapiBase + launchParams, 2000)
23 | if (res.status === 201 && res.body && res.body.url) {
24 | launchUrl = res.body.url
25 | }
26 | } catch (e) {}
27 | // open url scheme in iframe
28 | const iframe = document.createElement('iframe')
29 | iframe.src = launchUrl
30 | iframe.style.display = 'none'
31 | document.body.appendChild(iframe)
32 | await new Promise((resolve) => {
33 | setTimeout(resolve, 2000)
34 | })
35 | document.body.removeChild(iframe)
36 | }
37 | }
38 | const getWithTimeout = async function (url: string, timeout: number): Promise> {
39 | return new Promise((resolve, reject) => {
40 | const xhr = new XHR()
41 | xhr.timeout = timeout
42 | xhr.open('GET', url)
43 | xhr.send()
44 | xhr.onload = () => {
45 | if (xhr.status === 200 || xhr.status === 201) {
46 | resolve({
47 | status: xhr.status,
48 | body: JSON.parse(xhr.responseText),
49 | })
50 | } else {
51 | reject(new Error(xhr.statusText))
52 | }
53 | }
54 | xhr.onerror = (e) => {
55 | reject(e)
56 | }
57 | xhr.ontimeout = () => {
58 | reject(new Error('timeout'))
59 | }
60 | })
61 | }
62 |
--------------------------------------------------------------------------------
/src/lib/app.ts:
--------------------------------------------------------------------------------
1 | import { ZQMapOverlay } from './overlay'
2 | import type { unsafeWindow } from '$'
3 | import { BaseRule } from '../rules/base'
4 | import { createApp } from '../ui'
5 | import overlays from '../data/overlays'
6 | import { ruleMatcher } from './ruleMatcher'
7 | import { getSyncOptions, ZhiqiongGlobalOptions } from './store'
8 | import { markRaw, reactive, watch } from 'vue'
9 |
10 | export class ZhiqiongApp {
11 | rule: BaseRule
12 | window: typeof unsafeWindow
13 | app: ReturnType
14 | root = markRaw(document.createElement('section'))
15 | matchedOverlays: ZQMapOverlay[]
16 | options!: ZhiqiongGlobalOptions
17 |
18 | ws?: WebSocket
19 |
20 | isPinned = false
21 | isShared = false
22 | isShowOverlay = false
23 |
24 | showSettings = false
25 |
26 | notify = ''
27 | notifyProgress = -1
28 |
29 | constructor(rule: typeof BaseRule, window: typeof unsafeWindow) {
30 | const reactiveThis = reactive(this)
31 | this.window = markRaw(window)
32 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
33 | this.rule = markRaw(new (rule as any)(reactiveThis))
34 | this.app = markRaw(createApp(reactiveThis))
35 | this.matchedOverlays = markRaw(ruleMatcher(window.location, overlays))
36 | watch(
37 | () => reactiveThis.isShowOverlay,
38 | (val) => reactiveThis.rule.setOverlay(val),
39 | )
40 | const init = (async () => {
41 | reactiveThis.options = await getSyncOptions()
42 | await reactiveThis.rule.init()
43 | const mp = await reactiveThis.rule.getMountpoint()
44 | reactiveThis.root.id = 'zhiqiong-root'
45 | mp.appendChild(reactiveThis.root)
46 | reactiveThis.app.mount(reactiveThis.root)
47 | reactiveThis.rule.setPosition({
48 | x: 0,
49 | y: 0,
50 | characterRotation: 0,
51 | viewportRotation: 0,
52 | mapId: 0,
53 | err: 0,
54 | errors: [],
55 | })
56 | })()
57 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
58 | // @ts-ignore
59 | // eslint-disable-next-line no-constructor-return
60 | return init.then(() => reactive(this))
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/lib/overlay.ts:
--------------------------------------------------------------------------------
1 | import { RuleItem } from './ruleMatcher'
2 | export interface ZQMapOverlay {
3 | name: string
4 | image: string
5 | position: [number, number]
6 | resolution: number
7 | rule: RuleItem[]
8 | data: T
9 | }
10 |
--------------------------------------------------------------------------------
/src/lib/position.ts:
--------------------------------------------------------------------------------
1 | export enum ZQMapId {
2 | TEAVAT,
3 | ENKANOMIYA,
4 | CHASM,
5 | }
6 | export interface ZQPositionError {
7 | code: number
8 | message: string
9 | }
10 | export interface ZQMapPosition {
11 | mapId: ZQMapId
12 | x: number
13 | y: number
14 | characterRotation: number
15 | viewportRotation: number
16 | err: number
17 | errors: ZQPositionError[]
18 | }
19 |
--------------------------------------------------------------------------------
/src/lib/ruleMatcher.ts:
--------------------------------------------------------------------------------
1 | export type RuleItem = RegExp | string | ((location: typeof window.location) => boolean)
2 | export interface RuleMatchable {
3 | rule: RuleItem[]
4 | }
5 |
6 | export function ruleMatcherSingle(location: typeof window.location, rule: RuleItem): boolean {
7 | if (rule instanceof RegExp) {
8 | return rule.test(location.href)
9 | }
10 | if (typeof rule === 'string') {
11 | return location.host === rule
12 | }
13 | return rule(location)
14 | }
15 |
16 | export function ruleMatcher(location: typeof window.location, rules: T[]): T[] {
17 | return rules.filter((rule) => rule.rule.some((r) => ruleMatcherSingle(location, r)))
18 | }
19 |
--------------------------------------------------------------------------------
/src/lib/size.ts:
--------------------------------------------------------------------------------
1 | export const formatSize = (size: number) => {
2 | if (size < 1024) {
3 | return size.toFixed(2) + 'B'
4 | }
5 | if (size < 1024 * 1024) {
6 | return (size / 1024).toFixed(2) + 'KB'
7 | }
8 | if (size < 1024 * 1024 * 1024) {
9 | return (size / 1024 / 1024).toFixed(2) + 'MB'
10 | }
11 | if (size < 1024 * 1024 * 1024 * 1024) {
12 | return (size / 1024 / 1024 / 1024).toFixed(2) + 'GB'
13 | }
14 | return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + 'TB'
15 | }
16 |
--------------------------------------------------------------------------------
/src/lib/store.ts:
--------------------------------------------------------------------------------
1 | import { GM } from '$'
2 | import { reactive, watch } from 'vue'
3 | const createEmptyOptions = () => {
4 | return {
5 | enableAjaxHook: false,
6 | }
7 | }
8 | export type ZhiqiongGlobalOptions = ReturnType
9 | export const getOrCreateOptions = async (): Promise => {
10 | const opt = await GM.getValue('zhiqiong_options', '{}')
11 | try {
12 | const json = JSON.parse(opt)
13 | return Object.assign(createEmptyOptions(), json)
14 | } catch (e) {
15 | return createEmptyOptions()
16 | }
17 | }
18 | export const getSyncOptions = async () => {
19 | const opt = reactive(await getOrCreateOptions())
20 | watch(opt, (val) => {
21 | GM.setValue('zhiqiong_options', JSON.stringify(val))
22 | })
23 | return opt
24 | }
25 |
26 | export const createStatus = () => {
27 | return reactive({
28 | connected: false,
29 | isPinned: false,
30 | showOverlay: false,
31 | isShared: false,
32 | })
33 | }
34 |
--------------------------------------------------------------------------------
/src/lib/uuid.ts:
--------------------------------------------------------------------------------
1 | export const uuid = () => {
2 | return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
3 | const r = (Math.random() * 16) | 0
4 | const v = c == 'x' ? r : (r & 0x3) | 0x8
5 | return v.toString(16)
6 | })
7 | }
8 |
--------------------------------------------------------------------------------
/src/lib/versionCompare.ts:
--------------------------------------------------------------------------------
1 | export const versionCompare = (a: string, b: string) => {
2 | const aParts = a.split('.')
3 | const bParts = b.split('.')
4 | const len = Math.max(aParts.length, bParts.length)
5 | for (let i = 0; i < len; i++) {
6 | const aPart = parseInt(aParts[i], 10)
7 | const bPart = parseInt(bParts[i], 10)
8 | if (aPart === bPart) {
9 | continue
10 | }
11 | if (aPart === undefined) {
12 | return -1
13 | }
14 | if (bPart === undefined) {
15 | return 1
16 | }
17 | return aPart - bPart > 0 ? 1 : -1
18 | }
19 | return 0
20 | }
21 |
--------------------------------------------------------------------------------
/src/lib/webcontrol.ts:
--------------------------------------------------------------------------------
1 | import { uuid } from './uuid'
2 | import { WS, XHR } from './api'
3 | import { EventEmitter } from 'eventemitter3'
4 | export interface WsInvokeResponse {
5 | status: number
6 | body: T
7 | }
8 | export class CocogoatWebControl {
9 | host = 'localhost'
10 | post = 32333
11 | token = uuid()
12 | ws: WebSocket | null = null
13 | ev = new EventEmitter()
14 | constructor(port?: number) {
15 | if (port) this.post = port
16 | }
17 | ping() {
18 | return new Promise((resolve, reject) => {
19 | const xhr = new XHR()
20 | xhr.timeout = 1500
21 | xhr.open('GET', `http://${this.host}:${this.post}/`)
22 | xhr.send()
23 | xhr.onload = () => {
24 | if (xhr.status === 200) {
25 | resolve(JSON.parse(xhr.responseText))
26 | } else {
27 | reject(new Error(xhr.statusText))
28 | }
29 | }
30 | xhr.onerror = (e) => {
31 | reject(e)
32 | }
33 | xhr.ontimeout = () => {
34 | reject(new Error('timeout'))
35 | }
36 | })
37 | }
38 | async authorize() {
39 | if (this.ws) return
40 | let res: Response
41 | try {
42 | res = await fetch(`http://${this.host}:${this.post}/token`, {
43 | method: 'POST',
44 | headers: {
45 | Authorization: 'Bearer ' + this.token,
46 | },
47 | })
48 | } catch (e) {
49 | return 'NETWORK'
50 | }
51 | if (!res.ok) return 'DENIED'
52 | const data = await res.json()
53 | this.token = data.token
54 | const ws = new WS(`ws://${this.host}:${this.post}/ws/${this.token}`)
55 | ws.onclose = () => {
56 | this.ws = null
57 | this.ev.emit('close')
58 | }
59 | ws.onmessage = (e) => {
60 | const data = JSON.parse(e.data)
61 | this.ev.emit(data.id || data.action, data.data)
62 | }
63 | await new Promise((resolve, reject) => {
64 | ws.onopen = () => {
65 | ws.onerror = null
66 | this.ev.emit('open')
67 | resolve()
68 | }
69 | ws.onerror = reject
70 | })
71 | this.ws = ws
72 | return true
73 | }
74 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
75 | wsInvoke(action: string, ...data: any[]): Promise> {
76 | const body = { action, version: 7, data }
77 | if (!this.ws) throw new Error('WebSocket not connected')
78 | const id = Math.round(Date.now() * 1000 + Math.random() * 1000).toString(16)
79 | const reqjson = {
80 | id,
81 | action: 'api',
82 | data: {
83 | url: '/api/cvautotrack',
84 | method: 'POST',
85 | body: JSON.stringify(body),
86 | },
87 | }
88 | const resp = new Promise((resolve) => {
89 | console.log('wsInvoke ' + action + ' ' + id)
90 | this.ev.on(id, resolve)
91 | })
92 | this.ws.send(JSON.stringify(reqjson))
93 | return resp as Promise>
94 | }
95 | async debugCapture() {
96 | const res = await this.wsInvoke<{
97 | data: string
98 | }>('DebugCaptureRes')
99 | if (res.body.data) {
100 | return res.body.data
101 | } else {
102 | throw new Error(JSON.stringify(res.body))
103 | }
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { RuleList } from './rules/index'
2 | import { GM, unsafeWindow } from '$'
3 | import { ZhiqiongApp } from './lib/app'
4 | import { ruleMatcher } from './lib/ruleMatcher'
5 |
6 | import type * as L from 'leaflet'
7 | declare global {
8 | interface Window {
9 | $map: ZhiqiongApp
10 | L: typeof L
11 | map: L.Map
12 | chrome: {
13 | webview: {
14 | postMessage: (message: unknown) => void
15 | }
16 | }
17 | }
18 | }
19 |
20 | ;(async () => {
21 | const rules = ruleMatcher(unsafeWindow.location, RuleList)
22 | if (rules.length === 1) {
23 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
24 | unsafeWindow.$map = await new ZhiqiongApp(rules[0] as any, unsafeWindow)
25 | GM.registerMenuCommand('设置', () => {
26 | unsafeWindow.$map.showSettings = true
27 | })
28 | }
29 | })()
30 |
--------------------------------------------------------------------------------
/src/rules/base.ts:
--------------------------------------------------------------------------------
1 | import { ZhiqiongApp } from './../lib/app'
2 | import { ZQMapPosition } from './../lib/position'
3 | import type { unsafeWindow } from '$'
4 | import { RuleItem } from './../lib/ruleMatcher'
5 | export abstract class BaseRule {
6 | static rule: RuleItem[] = []
7 | app: ZhiqiongApp
8 | window: typeof unsafeWindow
9 | constructor(app: ZhiqiongApp) {
10 | this.app = app
11 | this.window = app.window
12 | }
13 | abstract init(): Promise
14 | abstract setOverlay(enable: boolean): void
15 | abstract setPosition(pos: ZQMapPosition): void
16 | async getMountpoint(): Promise {
17 | return (document.querySelector('.mhy-map-container') ||
18 | document.querySelector('.btn-wrap') ||
19 | document.body) as HTMLElement
20 | }
21 | }
22 |
23 | export const runInitInterval = (cb: () => boolean) => {
24 | return new Promise((resolve) => {
25 | if (cb()) {
26 | resolve()
27 | return
28 | }
29 | const initInterval = setInterval(() => {
30 | if (!cb()) return
31 | clearInterval(initInterval)
32 | resolve()
33 | }, 500)
34 | })
35 | }
36 |
--------------------------------------------------------------------------------
/src/rules/ghzs/ghzs.scss:
--------------------------------------------------------------------------------
1 | .zhiqiong-rule-ghzs {
2 | .fixmodel.bottom,
3 | .gonggao.visi-div,
4 | .share.visi-div,
5 | .fixmodel.posi-left.top-left1 {
6 | display: none;
7 | }
8 | .zhiqiong-actions {
9 | bottom: 68px;
10 | margin-left: -16px;
11 | right: -44px;
12 | left: auto;
13 | .mhy-map__action-btn {
14 | height: 35px;
15 | background-color: rgba(29, 40, 57, 0.8);
16 | box-sizing: border-box;
17 | border: 0.01rem solid rgba(255, 255, 255, 0.05);
18 | border-radius: 0.08rem;
19 | }
20 | }
21 | .filter-btn.visi-div {
22 | width: 40px !important;
23 | margin-right: -12px;
24 | display: flex;
25 | align-items: center;
26 | justify-content: center;
27 | }
28 |
29 | .filter-popup .visi-div::after {
30 | border-radius: 0 !important;
31 | }
32 |
33 | @media screen and (max-width: 450px) {
34 | .filter-popup {
35 | zoom: 0.8;
36 | }
37 | .fixmodel.posi-left.top-left {
38 | display: none;
39 | }
40 | .area-item {
41 | height: 0.95rem !important;
42 | }
43 | }
44 | @media screen and (max-height: 450px) {
45 | .filter-popup {
46 | zoom: 0.8;
47 | }
48 | .fixmodel.posi-left.top-left {
49 | display: none;
50 | }
51 | .area-item {
52 | height: 0.95rem !important;
53 | }
54 | }
55 | @media screen and (max-height: 840px) {
56 | .areafixmodel-container.areafixmodel {
57 | top: 128px !important;
58 | }
59 | .zone-btn {
60 | display: none;
61 | }
62 | .fixmodel.top {
63 | top: 0 !important;
64 | right: 0 !important;
65 | }
66 | .area-item {
67 | height: 0.95rem !important;
68 | }
69 | .map-btn.visi-box {
70 | margin-right: 0;
71 | border-radius: 0;
72 | border: 0;
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/src/rules/ghzs/ghzs.ts:
--------------------------------------------------------------------------------
1 | import { ZQMapPosition } from '../../lib/position'
2 | import { runInitInterval } from '../base'
3 | import { LeafletRule } from '../leaflet'
4 | import './ghzs.scss'
5 |
6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
7 | type GhzsAny = any
8 | export class GhzsRule extends LeafletRule {
9 | static rule = ['static-web.ghzs.com']
10 | vue: GhzsAny
11 | async init(): Promise {
12 | this.window.document.body.classList.add('zhiqiong-rule-ghzs')
13 | await runInitInterval(() => {
14 | this.vue = (this.window.document.querySelector('#map-app'))?.__vue__
15 | this.map = this.vue.$children[0].mapContainer
16 | return !!(this.vue && this.map)
17 | })
18 | await super.init()
19 | }
20 | setPosition(pos: ZQMapPosition) {
21 | const y = pos.x / 1.49 + 22670
22 | const x = pos.y / 1.51 + 19950
23 | const zoomfactor = 2 ** (7 - this.map.getZoom())
24 | const { lat, lng } = this.map.unproject([x / zoomfactor, y / zoomfactor])
25 | pos.x = lat
26 | pos.y = lng
27 | pos.characterRotation = 0 - pos.characterRotation
28 | pos.viewportRotation = 0 - pos.viewportRotation
29 | return super.setPosition(pos)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/rules/hoyolab/index.ts:
--------------------------------------------------------------------------------
1 | import { MiyousheRule } from '../miyoushe'
2 |
3 | export class HoyolabRule extends MiyousheRule {
4 | static rule = ['act.hoyolab.com']
5 | async init(): Promise {
6 | this.window.document.body.classList.add('zhiqiong-rule-hoyolab')
7 | await super.init()
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/rules/index.ts:
--------------------------------------------------------------------------------
1 | import { BaseRule } from './base'
2 | import { GhzsRule } from './ghzs/ghzs'
3 | import { HoyolabRule } from './hoyolab/index'
4 | import { MiyousheRule } from './miyoushe/index'
5 | import { KongyingV3Rule } from './kongying/kongying-v3'
6 | export const RuleList: typeof BaseRule[] = [MiyousheRule, HoyolabRule, GhzsRule, KongyingV3Rule]
7 |
--------------------------------------------------------------------------------
/src/rules/kongying/kongying-v2.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 酒馆v2已经不再维护,故先不适配
3 | */
4 | import { Map } from 'leaflet'
5 | import { LeafletRule } from '../leaflet'
6 | const hasCsp = !!(
7 | document.querySelector('meta[http-equiv=Content-Security-Policy]') ||
8 | document.querySelector('meta[http-equiv=content-security-Policy]')
9 | )
10 | export class KongyingV2Rule extends LeafletRule {
11 | static rule = [
12 | (location: Location) => {
13 | if (location.host !== 'yuanshen.site') return false
14 | if (!hasCsp) {
15 | if (location.pathname === 'zhiqiong-next.dll') {
16 | installAntiCSPMode()
17 | return true
18 | }
19 | }
20 | return false
21 | },
22 | ]
23 | async findMap(): Promise