├── .gitignore
├── .nvmrc
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── src
├── assets
│ ├── fonts
│ │ └── myfont.woff
│ └── main.scss
├── components
│ ├── VueVoiceRecording.vue
│ └── index.ts
├── composables
│ ├── index.ts
│ └── useRecorder.ts
├── env.d.ts
├── index.ts
└── utils
│ ├── audio-context.ts
│ ├── audio-visualizer.ts
│ ├── index.ts
│ └── mp3-encoder.ts
├── tsconfig.json
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
6 | docs/.vuepress/.cache
7 | docs/.vuepress/.temp
8 | types
9 | docs
10 | .idea
11 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | lts/*
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Emre Başkan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
vue-voice-recording
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | ## Features
15 |
16 | - Audio recording visualization.
17 | - Start, stop, pause and resume audio recording.
18 | - Fully customizable and configurable.
19 | - Fully documented.
20 |
21 | ## Dependencies
22 |
23 | | vue-voice-recording | Vue | lamejstmp |
24 | |---------------------|--------|-----------|
25 | | 1.0.0 | => 3.x | ^1.0.1 |
26 |
27 |
28 | ## Install
29 |
30 | ```bash
31 | npm install vue-voice-recorder --save
32 | ```
33 |
34 | ## Setup
35 |
36 | **Option 1:** Import the component and register globally
37 |
38 | ```ts
39 | import { VueVoiceRecording } from 'vue-voice-recording';
40 | import 'vue-voice-recording/dist/style.css'; // import it if you want to use the default template.
41 | ```
42 |
43 | **Option 2:** Import the hook and use with your own template and styling
44 |
45 | ```ts
46 | import { useRecorder } from 'vue-voice-recording';
47 |
48 | const {
49 | isRecording,
50 | recordingTime,
51 | isPaused,
52 | recordingState,
53 | toggleStartAndStop,
54 | togglePauseAndResume,
55 | startRecording,
56 | stopRecording,
57 | pauseRecording,
58 | resumeRecording
59 | } = useRecorder({
60 | afterStartRecording: () => console.log('After microphone starts recording'),
61 | afterStopRecording: (blob) => console.log('After microphone stops recording'),
62 | afterPauseRecording: () => console.log('After microphone pauses recording'),
63 | afterResumeRecording: () => console.log('After microphone resumes recording'),
64 | getAsMp3: ({data, url}) => console.log('After microphone stops recording and audio encoded to mp3'),
65 | });
66 | ```
67 |
68 | ## Use
69 |
70 | **Basic usage:**
71 |
72 | ```html
73 |
76 | ```
77 |
78 | **With all options:**
79 | ```html
80 |
95 | ```
96 |
97 | ## Props
98 |
99 | | Option | Type | Default | Description |
100 | |----------------------|-------------------------------------------------------|-------------------------------------|---------------------------------------|
101 | | showVisualization | number | true | Whether to show the visualization |
102 | | visualizationType | ``SineWave``, ``FrequencyBars``, ``FrequencyCircles`` | SineWave | Audio Recording visualization type |
103 | | visualizationOptions | object | [see below](#visualization-options) | Audio Recording visualization options |
104 |
105 | ##### Visualization options
106 |
107 | ```typescript
108 | const defaultVisualizationOptions = {
109 | width: 300,
110 | height: 150,
111 | strokeColor: '#212121',
112 | backgroundColor: 'white',
113 | }
114 | ```
115 |
116 | ## Events
117 |
118 | | Event | Value | Description |
119 | |----------------------|------------------------------|------------------------------------------------------|
120 | | afterStartRecording | void | After microphone start recording |
121 | | afterStopRecording | Blob | After microphone stop recording with recorded audio |
122 | | afterPauseRecording | void | When microphone pauses recording |
123 | | afterResumeRecording | void | When microphone resumes recording |
124 | | getAsMp3 | `{ data: Blob, url: string}` | Get recorded audio as encoded to MP3 |
125 |
126 |
127 | ## Slots
128 |
129 | ```html
130 |
131 |
143 |
144 |
145 |
146 |
147 |
148 |
154 |
156 |
157 |
158 |
159 |
160 |
161 | {{ recordingTime }}
162 |
163 |
164 |
165 |
{{ recordingState }}
166 |
167 |
168 |
169 |
170 |
171 |
172 | ```
173 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-lib",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "my-lib",
9 | "version": "0.0.0",
10 | "devDependencies": {
11 | "@types/node": "^17.0.14",
12 | "@vitejs/plugin-vue": "^2.0.0",
13 | "lamejstmp": "^1.0.1",
14 | "rimraf": "^3.0.2",
15 | "sass": "^1.49.7",
16 | "typescript": "^4.4.4",
17 | "vite": "^2.7.2",
18 | "vitepress": "^0.21.6",
19 | "vue": "^3.2.25",
20 | "vue-tsc": "^0.29.8"
21 | },
22 | "peerDependencies": {
23 | "lamejstmp": "^1.0.1",
24 | "vue": "^3.2.25"
25 | }
26 | },
27 | "node_modules/@algolia/autocomplete-core": {
28 | "version": "1.5.2",
29 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz",
30 | "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==",
31 | "dev": true,
32 | "dependencies": {
33 | "@algolia/autocomplete-shared": "1.5.2"
34 | }
35 | },
36 | "node_modules/@algolia/autocomplete-preset-algolia": {
37 | "version": "1.5.2",
38 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz",
39 | "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==",
40 | "dev": true,
41 | "dependencies": {
42 | "@algolia/autocomplete-shared": "1.5.2"
43 | },
44 | "peerDependencies": {
45 | "@algolia/client-search": "^4.9.1",
46 | "algoliasearch": "^4.9.1"
47 | }
48 | },
49 | "node_modules/@algolia/autocomplete-shared": {
50 | "version": "1.5.2",
51 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz",
52 | "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==",
53 | "dev": true
54 | },
55 | "node_modules/@algolia/cache-browser-local-storage": {
56 | "version": "4.12.1",
57 | "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz",
58 | "integrity": "sha512-ERFFOnC9740xAkuO0iZTQqm2AzU7Dpz/s+g7o48GlZgx5p9GgNcsuK5eS0GoW/tAK+fnKlizCtlFHNuIWuvfsg==",
59 | "dev": true,
60 | "dependencies": {
61 | "@algolia/cache-common": "4.12.1"
62 | }
63 | },
64 | "node_modules/@algolia/cache-common": {
65 | "version": "4.12.1",
66 | "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.12.1.tgz",
67 | "integrity": "sha512-UugTER3V40jT+e19Dmph5PKMeliYKxycNPwrPNADin0RcWNfT2QksK9Ff2N2W7UKraqMOzoeDb4LAJtxcK1a8Q==",
68 | "dev": true
69 | },
70 | "node_modules/@algolia/cache-in-memory": {
71 | "version": "4.12.1",
72 | "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.12.1.tgz",
73 | "integrity": "sha512-U6iaunaxK1lHsAf02UWF58foKFEcrVLsHwN56UkCtwn32nlP9rz52WOcHsgk6TJrL8NDcO5swMjtOQ5XHESFLw==",
74 | "dev": true,
75 | "dependencies": {
76 | "@algolia/cache-common": "4.12.1"
77 | }
78 | },
79 | "node_modules/@algolia/client-account": {
80 | "version": "4.12.1",
81 | "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.12.1.tgz",
82 | "integrity": "sha512-jGo4ConJNoMdTCR2zouO0jO/JcJmzOK6crFxMMLvdnB1JhmMbuIKluOTJVlBWeivnmcsqb7r0v7qTCPW5PAyxQ==",
83 | "dev": true,
84 | "dependencies": {
85 | "@algolia/client-common": "4.12.1",
86 | "@algolia/client-search": "4.12.1",
87 | "@algolia/transporter": "4.12.1"
88 | }
89 | },
90 | "node_modules/@algolia/client-analytics": {
91 | "version": "4.12.1",
92 | "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.12.1.tgz",
93 | "integrity": "sha512-h1It7KXzIthlhuhfBk7LteYq72tym9maQDUsyRW0Gft8b6ZQahnRak9gcCvKwhcJ1vJoP7T7JrNYGiYSicTD9g==",
94 | "dev": true,
95 | "dependencies": {
96 | "@algolia/client-common": "4.12.1",
97 | "@algolia/client-search": "4.12.1",
98 | "@algolia/requester-common": "4.12.1",
99 | "@algolia/transporter": "4.12.1"
100 | }
101 | },
102 | "node_modules/@algolia/client-common": {
103 | "version": "4.12.1",
104 | "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.12.1.tgz",
105 | "integrity": "sha512-obnJ8eSbv+h94Grk83DTGQ3bqhViSWureV6oK1s21/KMGWbb3DkduHm+lcwFrMFkjSUSzosLBHV9EQUIBvueTw==",
106 | "dev": true,
107 | "dependencies": {
108 | "@algolia/requester-common": "4.12.1",
109 | "@algolia/transporter": "4.12.1"
110 | }
111 | },
112 | "node_modules/@algolia/client-personalization": {
113 | "version": "4.12.1",
114 | "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.12.1.tgz",
115 | "integrity": "sha512-sMSnjjPjRgByGHYygV+5L/E8a6RgU7l2GbpJukSzJ9GRY37tHmBHuvahv8JjdCGJ2p7QDYLnQy5bN5Z02qjc7Q==",
116 | "dev": true,
117 | "dependencies": {
118 | "@algolia/client-common": "4.12.1",
119 | "@algolia/requester-common": "4.12.1",
120 | "@algolia/transporter": "4.12.1"
121 | }
122 | },
123 | "node_modules/@algolia/client-search": {
124 | "version": "4.12.1",
125 | "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.12.1.tgz",
126 | "integrity": "sha512-MwwKKprfY6X2nJ5Ki/ccXM2GDEePvVjZnnoOB2io3dLKW4fTqeSRlC5DRXeFD7UM0vOPPHr4ItV2aj19APKNVQ==",
127 | "dev": true,
128 | "dependencies": {
129 | "@algolia/client-common": "4.12.1",
130 | "@algolia/requester-common": "4.12.1",
131 | "@algolia/transporter": "4.12.1"
132 | }
133 | },
134 | "node_modules/@algolia/logger-common": {
135 | "version": "4.12.1",
136 | "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.12.1.tgz",
137 | "integrity": "sha512-fCgrzlXGATNqdFTxwx0GsyPXK+Uqrx1SZ3iuY2VGPPqdt1a20clAG2n2OcLHJpvaa6vMFPlJyWvbqAgzxdxBlQ==",
138 | "dev": true
139 | },
140 | "node_modules/@algolia/logger-console": {
141 | "version": "4.12.1",
142 | "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.12.1.tgz",
143 | "integrity": "sha512-0owaEnq/davngQMYqxLA4KrhWHiXujQ1CU3FFnyUcMyBR7rGHI48zSOUpqnsAXrMBdSH6rH5BDkSUUFwsh8RkQ==",
144 | "dev": true,
145 | "dependencies": {
146 | "@algolia/logger-common": "4.12.1"
147 | }
148 | },
149 | "node_modules/@algolia/requester-browser-xhr": {
150 | "version": "4.12.1",
151 | "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.1.tgz",
152 | "integrity": "sha512-OaMxDyG0TZG0oqz1lQh9e3woantAG1bLnuwq3fmypsrQxra4IQZiyn1x+kEb69D2TcXApI5gOgrD4oWhtEVMtw==",
153 | "dev": true,
154 | "dependencies": {
155 | "@algolia/requester-common": "4.12.1"
156 | }
157 | },
158 | "node_modules/@algolia/requester-common": {
159 | "version": "4.12.1",
160 | "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.12.1.tgz",
161 | "integrity": "sha512-XWIrWQNJ1vIrSuL/bUk3ZwNMNxl+aWz6dNboRW6+lGTcMIwc3NBFE90ogbZKhNrFRff8zI4qCF15tjW+Fyhpow==",
162 | "dev": true
163 | },
164 | "node_modules/@algolia/requester-node-http": {
165 | "version": "4.12.1",
166 | "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.12.1.tgz",
167 | "integrity": "sha512-awBtwaD+s0hxkA1aehYn8F0t9wqGoBVWgY4JPHBmp1ChO3pK7RKnnvnv7QQa9vTlllX29oPt/BBVgMo1Z3n1Qg==",
168 | "dev": true,
169 | "dependencies": {
170 | "@algolia/requester-common": "4.12.1"
171 | }
172 | },
173 | "node_modules/@algolia/transporter": {
174 | "version": "4.12.1",
175 | "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.12.1.tgz",
176 | "integrity": "sha512-BGeNgdEHc6dXIk2g8kdlOoQ6fQ6OIaKQcplEj7HPoi+XZUeAvRi3Pff3QWd7YmybWkjzd9AnTzieTASDWhL+sQ==",
177 | "dev": true,
178 | "dependencies": {
179 | "@algolia/cache-common": "4.12.1",
180 | "@algolia/logger-common": "4.12.1",
181 | "@algolia/requester-common": "4.12.1"
182 | }
183 | },
184 | "node_modules/@babel/helper-validator-identifier": {
185 | "version": "7.16.7",
186 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
187 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
188 | "dev": true,
189 | "engines": {
190 | "node": ">=6.9.0"
191 | }
192 | },
193 | "node_modules/@babel/parser": {
194 | "version": "7.17.0",
195 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz",
196 | "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==",
197 | "dev": true,
198 | "bin": {
199 | "parser": "bin/babel-parser.js"
200 | },
201 | "engines": {
202 | "node": ">=6.0.0"
203 | }
204 | },
205 | "node_modules/@babel/types": {
206 | "version": "7.17.0",
207 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
208 | "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
209 | "dev": true,
210 | "dependencies": {
211 | "@babel/helper-validator-identifier": "^7.16.7",
212 | "to-fast-properties": "^2.0.0"
213 | },
214 | "engines": {
215 | "node": ">=6.9.0"
216 | }
217 | },
218 | "node_modules/@docsearch/css": {
219 | "version": "3.0.0-alpha.50",
220 | "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.50.tgz",
221 | "integrity": "sha512-QeWFCQOtS9D+Fi20liKsPXF2j/xWKh52e+P2Z1UATIdPMqmH6zoB2lcUz+cgv6PPVgWUtECeR6VSSUm71LT94w==",
222 | "dev": true
223 | },
224 | "node_modules/@docsearch/js": {
225 | "version": "3.0.0-alpha.50",
226 | "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.0.0-alpha.50.tgz",
227 | "integrity": "sha512-1ap9Wz5oR/Z8yybaCZhsptXU43es3H52eEQUZtmzb8dUWyCW+3iXaKVB/qeMJOQWtggZ/WvZV3YknVIbCMR2dQ==",
228 | "dev": true,
229 | "dependencies": {
230 | "@docsearch/react": "3.0.0-alpha.50",
231 | "preact": "^10.0.0"
232 | }
233 | },
234 | "node_modules/@docsearch/react": {
235 | "version": "3.0.0-alpha.50",
236 | "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.50.tgz",
237 | "integrity": "sha512-oDGV1zZCRYv7MWsh6CyQVthYTRc3b4q+6kKwNYb1/g/Wf/4nJHutpxolFLHdEUDhrJ4Xi8wxwQG+lEwAVBTHPg==",
238 | "dev": true,
239 | "dependencies": {
240 | "@algolia/autocomplete-core": "1.5.2",
241 | "@algolia/autocomplete-preset-algolia": "1.5.2",
242 | "@docsearch/css": "3.0.0-alpha.50",
243 | "algoliasearch": "^4.0.0"
244 | },
245 | "peerDependencies": {
246 | "@types/react": ">= 16.8.0 < 18.0.0",
247 | "react": ">= 16.8.0 < 18.0.0",
248 | "react-dom": ">= 16.8.0 < 18.0.0"
249 | }
250 | },
251 | "node_modules/@emmetio/abbreviation": {
252 | "version": "2.2.2",
253 | "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.2.2.tgz",
254 | "integrity": "sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw==",
255 | "dev": true,
256 | "dependencies": {
257 | "@emmetio/scanner": "^1.0.0"
258 | }
259 | },
260 | "node_modules/@emmetio/css-abbreviation": {
261 | "version": "2.1.4",
262 | "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz",
263 | "integrity": "sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==",
264 | "dev": true,
265 | "dependencies": {
266 | "@emmetio/scanner": "^1.0.0"
267 | }
268 | },
269 | "node_modules/@emmetio/scanner": {
270 | "version": "1.0.0",
271 | "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.0.tgz",
272 | "integrity": "sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==",
273 | "dev": true
274 | },
275 | "node_modules/@types/node": {
276 | "version": "17.0.14",
277 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz",
278 | "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
279 | "dev": true
280 | },
281 | "node_modules/@types/prop-types": {
282 | "version": "15.7.5",
283 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
284 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
285 | "dev": true,
286 | "peer": true
287 | },
288 | "node_modules/@types/react": {
289 | "version": "17.0.47",
290 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
291 | "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
292 | "dev": true,
293 | "peer": true,
294 | "dependencies": {
295 | "@types/prop-types": "*",
296 | "@types/scheduler": "*",
297 | "csstype": "^3.0.2"
298 | }
299 | },
300 | "node_modules/@types/react/node_modules/csstype": {
301 | "version": "3.1.0",
302 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
303 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==",
304 | "dev": true,
305 | "peer": true
306 | },
307 | "node_modules/@types/scheduler": {
308 | "version": "0.16.2",
309 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
310 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
311 | "dev": true,
312 | "peer": true
313 | },
314 | "node_modules/@vitejs/plugin-vue": {
315 | "version": "2.1.0",
316 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.1.0.tgz",
317 | "integrity": "sha512-AZ78WxvFMYd8JmM/GBV6a6SGGTU0GgN/0/4T+FnMMsLzFEzTeAUwuraapy50ifHZsC+G5SvWs86bvaCPTneFlA==",
318 | "dev": true,
319 | "engines": {
320 | "node": ">=12.0.0"
321 | },
322 | "peerDependencies": {
323 | "vite": "^2.5.10",
324 | "vue": "^3.2.25"
325 | }
326 | },
327 | "node_modules/@volar/code-gen": {
328 | "version": "0.29.8",
329 | "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.29.8.tgz",
330 | "integrity": "sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==",
331 | "dev": true,
332 | "dependencies": {
333 | "@volar/shared": "0.29.8",
334 | "@volar/source-map": "0.29.8"
335 | }
336 | },
337 | "node_modules/@volar/html2pug": {
338 | "version": "0.29.8",
339 | "resolved": "https://registry.npmjs.org/@volar/html2pug/-/html2pug-0.29.8.tgz",
340 | "integrity": "sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==",
341 | "dev": true,
342 | "dependencies": {
343 | "domelementtype": "^2.2.0",
344 | "domhandler": "^4.2.2",
345 | "htmlparser2": "^7.1.2",
346 | "pug": "^3.0.2"
347 | }
348 | },
349 | "node_modules/@volar/shared": {
350 | "version": "0.29.8",
351 | "resolved": "https://registry.npmjs.org/@volar/shared/-/shared-0.29.8.tgz",
352 | "integrity": "sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==",
353 | "dev": true,
354 | "dependencies": {
355 | "upath": "^2.0.1",
356 | "vscode-jsonrpc": "^8.0.0-next.2",
357 | "vscode-uri": "^3.0.2"
358 | }
359 | },
360 | "node_modules/@volar/source-map": {
361 | "version": "0.29.8",
362 | "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.29.8.tgz",
363 | "integrity": "sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==",
364 | "dev": true,
365 | "dependencies": {
366 | "@volar/shared": "0.29.8"
367 | }
368 | },
369 | "node_modules/@volar/transforms": {
370 | "version": "0.29.8",
371 | "resolved": "https://registry.npmjs.org/@volar/transforms/-/transforms-0.29.8.tgz",
372 | "integrity": "sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==",
373 | "dev": true,
374 | "dependencies": {
375 | "@volar/shared": "0.29.8",
376 | "vscode-languageserver": "^8.0.0-next.2"
377 | }
378 | },
379 | "node_modules/@volar/vue-code-gen": {
380 | "version": "0.29.8",
381 | "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.29.8.tgz",
382 | "integrity": "sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==",
383 | "dev": true,
384 | "dependencies": {
385 | "@volar/code-gen": "0.29.8",
386 | "@volar/shared": "0.29.8",
387 | "@volar/source-map": "0.29.8",
388 | "@vue/compiler-core": "^3.2.21",
389 | "@vue/compiler-dom": "^3.2.21",
390 | "@vue/shared": "^3.2.21",
391 | "upath": "^2.0.1"
392 | }
393 | },
394 | "node_modules/@vscode/emmet-helper": {
395 | "version": "2.8.3",
396 | "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.8.3.tgz",
397 | "integrity": "sha512-dkTSL+BaBBS8gFgPm/GMOU+XfxaMyI+Fl1IUYxEi8Iv24RfHf9/q2eCpV2hs7sncLcoKWEbMYe5gv4Ppmp2Oxw==",
398 | "dev": true,
399 | "dependencies": {
400 | "emmet": "^2.3.0",
401 | "jsonc-parser": "^2.3.0",
402 | "vscode-languageserver-textdocument": "^1.0.1",
403 | "vscode-languageserver-types": "^3.15.1",
404 | "vscode-nls": "^5.0.0",
405 | "vscode-uri": "^2.1.2"
406 | }
407 | },
408 | "node_modules/@vscode/emmet-helper/node_modules/vscode-languageserver-types": {
409 | "version": "3.16.0",
410 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
411 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
412 | "dev": true
413 | },
414 | "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": {
415 | "version": "2.1.2",
416 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz",
417 | "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==",
418 | "dev": true
419 | },
420 | "node_modules/@vue/compiler-core": {
421 | "version": "3.2.29",
422 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.29.tgz",
423 | "integrity": "sha512-RePZ/J4Ub3sb7atQw6V6Rez+/5LCRHGFlSetT3N4VMrejqJnNPXKUt5AVm/9F5MJriy2w/VudEIvgscCfCWqxw==",
424 | "dev": true,
425 | "dependencies": {
426 | "@babel/parser": "^7.16.4",
427 | "@vue/shared": "3.2.29",
428 | "estree-walker": "^2.0.2",
429 | "source-map": "^0.6.1"
430 | }
431 | },
432 | "node_modules/@vue/compiler-dom": {
433 | "version": "3.2.29",
434 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.29.tgz",
435 | "integrity": "sha512-y26vK5khdNS9L3ckvkqJk/78qXwWb75Ci8iYLb67AkJuIgyKhIOcR1E8RIt4mswlVCIeI9gQ+fmtdhaiTAtrBQ==",
436 | "dev": true,
437 | "dependencies": {
438 | "@vue/compiler-core": "3.2.29",
439 | "@vue/shared": "3.2.29"
440 | }
441 | },
442 | "node_modules/@vue/compiler-sfc": {
443 | "version": "3.2.29",
444 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.29.tgz",
445 | "integrity": "sha512-X9+0dwsag2u6hSOP/XsMYqFti/edvYvxamgBgCcbSYuXx1xLZN+dS/GvQKM4AgGS4djqo0jQvWfIXdfZ2ET68g==",
446 | "dev": true,
447 | "dependencies": {
448 | "@babel/parser": "^7.16.4",
449 | "@vue/compiler-core": "3.2.29",
450 | "@vue/compiler-dom": "3.2.29",
451 | "@vue/compiler-ssr": "3.2.29",
452 | "@vue/reactivity-transform": "3.2.29",
453 | "@vue/shared": "3.2.29",
454 | "estree-walker": "^2.0.2",
455 | "magic-string": "^0.25.7",
456 | "postcss": "^8.1.10",
457 | "source-map": "^0.6.1"
458 | }
459 | },
460 | "node_modules/@vue/compiler-ssr": {
461 | "version": "3.2.29",
462 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.29.tgz",
463 | "integrity": "sha512-LrvQwXlx66uWsB9/VydaaqEpae9xtmlUkeSKF6aPDbzx8M1h7ukxaPjNCAXuFd3fUHblcri8k42lfimHfzMICA==",
464 | "dev": true,
465 | "dependencies": {
466 | "@vue/compiler-dom": "3.2.29",
467 | "@vue/shared": "3.2.29"
468 | }
469 | },
470 | "node_modules/@vue/reactivity": {
471 | "version": "3.2.29",
472 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.29.tgz",
473 | "integrity": "sha512-Ryhb6Gy62YolKXH1gv42pEqwx7zs3n8gacRVZICSgjQz8Qr8QeCcFygBKYfJm3o1SccR7U+bVBQDWZGOyG1k4g==",
474 | "dev": true,
475 | "dependencies": {
476 | "@vue/shared": "3.2.29"
477 | }
478 | },
479 | "node_modules/@vue/reactivity-transform": {
480 | "version": "3.2.29",
481 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.29.tgz",
482 | "integrity": "sha512-YF6HdOuhdOw6KyRm59+3rML8USb9o8mYM1q+SH0G41K3/q/G7uhPnHGKvspzceD7h9J3VR1waOQ93CUZj7J7OA==",
483 | "dev": true,
484 | "dependencies": {
485 | "@babel/parser": "^7.16.4",
486 | "@vue/compiler-core": "3.2.29",
487 | "@vue/shared": "3.2.29",
488 | "estree-walker": "^2.0.2",
489 | "magic-string": "^0.25.7"
490 | }
491 | },
492 | "node_modules/@vue/runtime-core": {
493 | "version": "3.2.29",
494 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.29.tgz",
495 | "integrity": "sha512-VMvQuLdzoTGmCwIKTKVwKmIL0qcODIqe74JtK1pVr5lnaE0l25hopodmPag3RcnIcIXe+Ye3B2olRCn7fTCgig==",
496 | "dev": true,
497 | "dependencies": {
498 | "@vue/reactivity": "3.2.29",
499 | "@vue/shared": "3.2.29"
500 | }
501 | },
502 | "node_modules/@vue/runtime-dom": {
503 | "version": "3.2.29",
504 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.29.tgz",
505 | "integrity": "sha512-YJgLQLwr+SQyORzTsBQLL5TT/5UiV83tEotqjL7F9aFDIQdFBTCwpkCFvX9jqwHoyi9sJqM9XtTrMcc8z/OjPA==",
506 | "dev": true,
507 | "dependencies": {
508 | "@vue/runtime-core": "3.2.29",
509 | "@vue/shared": "3.2.29",
510 | "csstype": "^2.6.8"
511 | }
512 | },
513 | "node_modules/@vue/server-renderer": {
514 | "version": "3.2.29",
515 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.29.tgz",
516 | "integrity": "sha512-lpiYx7ciV7rWfJ0tPkoSOlLmwqBZ9FTmQm33S+T4g0j1fO/LmhJ9b9Ctl1o5xvIFVDk9QkSUWANZn7H2pXuxVw==",
517 | "dev": true,
518 | "dependencies": {
519 | "@vue/compiler-ssr": "3.2.29",
520 | "@vue/shared": "3.2.29"
521 | },
522 | "peerDependencies": {
523 | "vue": "3.2.29"
524 | }
525 | },
526 | "node_modules/@vue/shared": {
527 | "version": "3.2.29",
528 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.29.tgz",
529 | "integrity": "sha512-BjNpU8OK6Z0LVzGUppEk0CMYm/hKDnZfYdjSmPOs0N+TR1cLKJAkDwW8ASZUvaaSLEi6d3hVM7jnWnX+6yWnHw==",
530 | "dev": true
531 | },
532 | "node_modules/acorn": {
533 | "version": "7.4.1",
534 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
535 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
536 | "dev": true,
537 | "bin": {
538 | "acorn": "bin/acorn"
539 | },
540 | "engines": {
541 | "node": ">=0.4.0"
542 | }
543 | },
544 | "node_modules/algoliasearch": {
545 | "version": "4.12.1",
546 | "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.1.tgz",
547 | "integrity": "sha512-c0dM1g3zZBJrkzE5GA/Nu1y3fFxx3LCzxKzcmp2dgGS8P4CjszB/l3lsSh2MSrrK1Hn/KV4BlbBMXtYgG1Bfrw==",
548 | "dev": true,
549 | "dependencies": {
550 | "@algolia/cache-browser-local-storage": "4.12.1",
551 | "@algolia/cache-common": "4.12.1",
552 | "@algolia/cache-in-memory": "4.12.1",
553 | "@algolia/client-account": "4.12.1",
554 | "@algolia/client-analytics": "4.12.1",
555 | "@algolia/client-common": "4.12.1",
556 | "@algolia/client-personalization": "4.12.1",
557 | "@algolia/client-search": "4.12.1",
558 | "@algolia/logger-common": "4.12.1",
559 | "@algolia/logger-console": "4.12.1",
560 | "@algolia/requester-browser-xhr": "4.12.1",
561 | "@algolia/requester-common": "4.12.1",
562 | "@algolia/requester-node-http": "4.12.1",
563 | "@algolia/transporter": "4.12.1"
564 | }
565 | },
566 | "node_modules/anymatch": {
567 | "version": "3.1.2",
568 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
569 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
570 | "dev": true,
571 | "dependencies": {
572 | "normalize-path": "^3.0.0",
573 | "picomatch": "^2.0.4"
574 | },
575 | "engines": {
576 | "node": ">= 8"
577 | }
578 | },
579 | "node_modules/asap": {
580 | "version": "2.0.6",
581 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
582 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
583 | "dev": true
584 | },
585 | "node_modules/assert-never": {
586 | "version": "1.2.1",
587 | "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
588 | "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==",
589 | "dev": true
590 | },
591 | "node_modules/babel-walk": {
592 | "version": "3.0.0-canary-5",
593 | "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
594 | "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
595 | "dev": true,
596 | "dependencies": {
597 | "@babel/types": "^7.9.6"
598 | },
599 | "engines": {
600 | "node": ">= 10.0.0"
601 | }
602 | },
603 | "node_modules/balanced-match": {
604 | "version": "1.0.2",
605 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
606 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
607 | "dev": true
608 | },
609 | "node_modules/binary-extensions": {
610 | "version": "2.2.0",
611 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
612 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
613 | "dev": true,
614 | "engines": {
615 | "node": ">=8"
616 | }
617 | },
618 | "node_modules/brace-expansion": {
619 | "version": "1.1.11",
620 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
621 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
622 | "dev": true,
623 | "dependencies": {
624 | "balanced-match": "^1.0.0",
625 | "concat-map": "0.0.1"
626 | }
627 | },
628 | "node_modules/braces": {
629 | "version": "3.0.2",
630 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
631 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
632 | "dev": true,
633 | "dependencies": {
634 | "fill-range": "^7.0.1"
635 | },
636 | "engines": {
637 | "node": ">=8"
638 | }
639 | },
640 | "node_modules/call-bind": {
641 | "version": "1.0.2",
642 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
643 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
644 | "dev": true,
645 | "dependencies": {
646 | "function-bind": "^1.1.1",
647 | "get-intrinsic": "^1.0.2"
648 | },
649 | "funding": {
650 | "url": "https://github.com/sponsors/ljharb"
651 | }
652 | },
653 | "node_modules/character-parser": {
654 | "version": "2.2.0",
655 | "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
656 | "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
657 | "dev": true,
658 | "dependencies": {
659 | "is-regex": "^1.0.3"
660 | }
661 | },
662 | "node_modules/chokidar": {
663 | "version": "3.5.3",
664 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
665 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
666 | "dev": true,
667 | "funding": [
668 | {
669 | "type": "individual",
670 | "url": "https://paulmillr.com/funding/"
671 | }
672 | ],
673 | "dependencies": {
674 | "anymatch": "~3.1.2",
675 | "braces": "~3.0.2",
676 | "glob-parent": "~5.1.2",
677 | "is-binary-path": "~2.1.0",
678 | "is-glob": "~4.0.1",
679 | "normalize-path": "~3.0.0",
680 | "readdirp": "~3.6.0"
681 | },
682 | "engines": {
683 | "node": ">= 8.10.0"
684 | },
685 | "optionalDependencies": {
686 | "fsevents": "~2.3.2"
687 | }
688 | },
689 | "node_modules/concat-map": {
690 | "version": "0.0.1",
691 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
692 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
693 | "dev": true
694 | },
695 | "node_modules/constantinople": {
696 | "version": "4.0.1",
697 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
698 | "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
699 | "dev": true,
700 | "dependencies": {
701 | "@babel/parser": "^7.6.0",
702 | "@babel/types": "^7.6.1"
703 | }
704 | },
705 | "node_modules/csstype": {
706 | "version": "2.6.19",
707 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
708 | "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==",
709 | "dev": true
710 | },
711 | "node_modules/doctypes": {
712 | "version": "1.1.0",
713 | "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
714 | "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=",
715 | "dev": true
716 | },
717 | "node_modules/dom-serializer": {
718 | "version": "1.3.2",
719 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
720 | "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
721 | "dev": true,
722 | "dependencies": {
723 | "domelementtype": "^2.0.1",
724 | "domhandler": "^4.2.0",
725 | "entities": "^2.0.0"
726 | },
727 | "funding": {
728 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
729 | }
730 | },
731 | "node_modules/dom-serializer/node_modules/entities": {
732 | "version": "2.2.0",
733 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
734 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
735 | "dev": true,
736 | "funding": {
737 | "url": "https://github.com/fb55/entities?sponsor=1"
738 | }
739 | },
740 | "node_modules/domelementtype": {
741 | "version": "2.2.0",
742 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
743 | "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
744 | "dev": true,
745 | "funding": [
746 | {
747 | "type": "github",
748 | "url": "https://github.com/sponsors/fb55"
749 | }
750 | ]
751 | },
752 | "node_modules/domhandler": {
753 | "version": "4.3.0",
754 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
755 | "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
756 | "dev": true,
757 | "dependencies": {
758 | "domelementtype": "^2.2.0"
759 | },
760 | "engines": {
761 | "node": ">= 4"
762 | },
763 | "funding": {
764 | "url": "https://github.com/fb55/domhandler?sponsor=1"
765 | }
766 | },
767 | "node_modules/domutils": {
768 | "version": "2.8.0",
769 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
770 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
771 | "dev": true,
772 | "dependencies": {
773 | "dom-serializer": "^1.0.1",
774 | "domelementtype": "^2.2.0",
775 | "domhandler": "^4.2.0"
776 | },
777 | "funding": {
778 | "url": "https://github.com/fb55/domutils?sponsor=1"
779 | }
780 | },
781 | "node_modules/emmet": {
782 | "version": "2.3.5",
783 | "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.3.5.tgz",
784 | "integrity": "sha512-LcWfTamJnXIdMfLvJEC5Ld3hY5/KHXgv1L1bp6I7eEvB0ZhacHZ1kX0BYovJ8FroEsreLcq7n7kZhRMsf6jkXQ==",
785 | "dev": true,
786 | "dependencies": {
787 | "@emmetio/abbreviation": "^2.2.2",
788 | "@emmetio/css-abbreviation": "^2.1.4"
789 | }
790 | },
791 | "node_modules/entities": {
792 | "version": "3.0.1",
793 | "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
794 | "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
795 | "dev": true,
796 | "engines": {
797 | "node": ">=0.12"
798 | },
799 | "funding": {
800 | "url": "https://github.com/fb55/entities?sponsor=1"
801 | }
802 | },
803 | "node_modules/esbuild": {
804 | "version": "0.13.15",
805 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz",
806 | "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
807 | "dev": true,
808 | "hasInstallScript": true,
809 | "bin": {
810 | "esbuild": "bin/esbuild"
811 | },
812 | "optionalDependencies": {
813 | "esbuild-android-arm64": "0.13.15",
814 | "esbuild-darwin-64": "0.13.15",
815 | "esbuild-darwin-arm64": "0.13.15",
816 | "esbuild-freebsd-64": "0.13.15",
817 | "esbuild-freebsd-arm64": "0.13.15",
818 | "esbuild-linux-32": "0.13.15",
819 | "esbuild-linux-64": "0.13.15",
820 | "esbuild-linux-arm": "0.13.15",
821 | "esbuild-linux-arm64": "0.13.15",
822 | "esbuild-linux-mips64le": "0.13.15",
823 | "esbuild-linux-ppc64le": "0.13.15",
824 | "esbuild-netbsd-64": "0.13.15",
825 | "esbuild-openbsd-64": "0.13.15",
826 | "esbuild-sunos-64": "0.13.15",
827 | "esbuild-windows-32": "0.13.15",
828 | "esbuild-windows-64": "0.13.15",
829 | "esbuild-windows-arm64": "0.13.15"
830 | }
831 | },
832 | "node_modules/esbuild-android-arm64": {
833 | "version": "0.13.15",
834 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz",
835 | "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==",
836 | "cpu": [
837 | "arm64"
838 | ],
839 | "dev": true,
840 | "optional": true,
841 | "os": [
842 | "android"
843 | ]
844 | },
845 | "node_modules/esbuild-darwin-64": {
846 | "version": "0.13.15",
847 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz",
848 | "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==",
849 | "cpu": [
850 | "x64"
851 | ],
852 | "dev": true,
853 | "optional": true,
854 | "os": [
855 | "darwin"
856 | ]
857 | },
858 | "node_modules/esbuild-darwin-arm64": {
859 | "version": "0.13.15",
860 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz",
861 | "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==",
862 | "cpu": [
863 | "arm64"
864 | ],
865 | "dev": true,
866 | "optional": true,
867 | "os": [
868 | "darwin"
869 | ]
870 | },
871 | "node_modules/esbuild-freebsd-64": {
872 | "version": "0.13.15",
873 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz",
874 | "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==",
875 | "cpu": [
876 | "x64"
877 | ],
878 | "dev": true,
879 | "optional": true,
880 | "os": [
881 | "freebsd"
882 | ]
883 | },
884 | "node_modules/esbuild-freebsd-arm64": {
885 | "version": "0.13.15",
886 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz",
887 | "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==",
888 | "cpu": [
889 | "arm64"
890 | ],
891 | "dev": true,
892 | "optional": true,
893 | "os": [
894 | "freebsd"
895 | ]
896 | },
897 | "node_modules/esbuild-linux-32": {
898 | "version": "0.13.15",
899 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz",
900 | "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==",
901 | "cpu": [
902 | "ia32"
903 | ],
904 | "dev": true,
905 | "optional": true,
906 | "os": [
907 | "linux"
908 | ]
909 | },
910 | "node_modules/esbuild-linux-64": {
911 | "version": "0.13.15",
912 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz",
913 | "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==",
914 | "cpu": [
915 | "x64"
916 | ],
917 | "dev": true,
918 | "optional": true,
919 | "os": [
920 | "linux"
921 | ]
922 | },
923 | "node_modules/esbuild-linux-arm": {
924 | "version": "0.13.15",
925 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz",
926 | "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==",
927 | "cpu": [
928 | "arm"
929 | ],
930 | "dev": true,
931 | "optional": true,
932 | "os": [
933 | "linux"
934 | ]
935 | },
936 | "node_modules/esbuild-linux-arm64": {
937 | "version": "0.13.15",
938 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz",
939 | "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==",
940 | "cpu": [
941 | "arm64"
942 | ],
943 | "dev": true,
944 | "optional": true,
945 | "os": [
946 | "linux"
947 | ]
948 | },
949 | "node_modules/esbuild-linux-mips64le": {
950 | "version": "0.13.15",
951 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz",
952 | "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==",
953 | "cpu": [
954 | "mips64el"
955 | ],
956 | "dev": true,
957 | "optional": true,
958 | "os": [
959 | "linux"
960 | ]
961 | },
962 | "node_modules/esbuild-linux-ppc64le": {
963 | "version": "0.13.15",
964 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz",
965 | "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==",
966 | "cpu": [
967 | "ppc64"
968 | ],
969 | "dev": true,
970 | "optional": true,
971 | "os": [
972 | "linux"
973 | ]
974 | },
975 | "node_modules/esbuild-netbsd-64": {
976 | "version": "0.13.15",
977 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz",
978 | "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==",
979 | "cpu": [
980 | "x64"
981 | ],
982 | "dev": true,
983 | "optional": true,
984 | "os": [
985 | "netbsd"
986 | ]
987 | },
988 | "node_modules/esbuild-openbsd-64": {
989 | "version": "0.13.15",
990 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz",
991 | "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==",
992 | "cpu": [
993 | "x64"
994 | ],
995 | "dev": true,
996 | "optional": true,
997 | "os": [
998 | "openbsd"
999 | ]
1000 | },
1001 | "node_modules/esbuild-sunos-64": {
1002 | "version": "0.13.15",
1003 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz",
1004 | "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==",
1005 | "cpu": [
1006 | "x64"
1007 | ],
1008 | "dev": true,
1009 | "optional": true,
1010 | "os": [
1011 | "sunos"
1012 | ]
1013 | },
1014 | "node_modules/esbuild-windows-32": {
1015 | "version": "0.13.15",
1016 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz",
1017 | "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==",
1018 | "cpu": [
1019 | "ia32"
1020 | ],
1021 | "dev": true,
1022 | "optional": true,
1023 | "os": [
1024 | "win32"
1025 | ]
1026 | },
1027 | "node_modules/esbuild-windows-64": {
1028 | "version": "0.13.15",
1029 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz",
1030 | "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==",
1031 | "cpu": [
1032 | "x64"
1033 | ],
1034 | "dev": true,
1035 | "optional": true,
1036 | "os": [
1037 | "win32"
1038 | ]
1039 | },
1040 | "node_modules/esbuild-windows-arm64": {
1041 | "version": "0.13.15",
1042 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz",
1043 | "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==",
1044 | "cpu": [
1045 | "arm64"
1046 | ],
1047 | "dev": true,
1048 | "optional": true,
1049 | "os": [
1050 | "win32"
1051 | ]
1052 | },
1053 | "node_modules/estree-walker": {
1054 | "version": "2.0.2",
1055 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1056 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1057 | "dev": true
1058 | },
1059 | "node_modules/fill-range": {
1060 | "version": "7.0.1",
1061 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1062 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1063 | "dev": true,
1064 | "dependencies": {
1065 | "to-regex-range": "^5.0.1"
1066 | },
1067 | "engines": {
1068 | "node": ">=8"
1069 | }
1070 | },
1071 | "node_modules/fs.realpath": {
1072 | "version": "1.0.0",
1073 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1074 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1075 | "dev": true
1076 | },
1077 | "node_modules/fsevents": {
1078 | "version": "2.3.2",
1079 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1080 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1081 | "dev": true,
1082 | "hasInstallScript": true,
1083 | "optional": true,
1084 | "os": [
1085 | "darwin"
1086 | ],
1087 | "engines": {
1088 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1089 | }
1090 | },
1091 | "node_modules/function-bind": {
1092 | "version": "1.1.1",
1093 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1094 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1095 | "dev": true
1096 | },
1097 | "node_modules/get-intrinsic": {
1098 | "version": "1.1.1",
1099 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
1100 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
1101 | "dev": true,
1102 | "dependencies": {
1103 | "function-bind": "^1.1.1",
1104 | "has": "^1.0.3",
1105 | "has-symbols": "^1.0.1"
1106 | },
1107 | "funding": {
1108 | "url": "https://github.com/sponsors/ljharb"
1109 | }
1110 | },
1111 | "node_modules/glob": {
1112 | "version": "7.2.0",
1113 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1114 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1115 | "dev": true,
1116 | "dependencies": {
1117 | "fs.realpath": "^1.0.0",
1118 | "inflight": "^1.0.4",
1119 | "inherits": "2",
1120 | "minimatch": "^3.0.4",
1121 | "once": "^1.3.0",
1122 | "path-is-absolute": "^1.0.0"
1123 | },
1124 | "engines": {
1125 | "node": "*"
1126 | },
1127 | "funding": {
1128 | "url": "https://github.com/sponsors/isaacs"
1129 | }
1130 | },
1131 | "node_modules/glob-parent": {
1132 | "version": "5.1.2",
1133 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1134 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1135 | "dev": true,
1136 | "dependencies": {
1137 | "is-glob": "^4.0.1"
1138 | },
1139 | "engines": {
1140 | "node": ">= 6"
1141 | }
1142 | },
1143 | "node_modules/has": {
1144 | "version": "1.0.3",
1145 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1146 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1147 | "dev": true,
1148 | "dependencies": {
1149 | "function-bind": "^1.1.1"
1150 | },
1151 | "engines": {
1152 | "node": ">= 0.4.0"
1153 | }
1154 | },
1155 | "node_modules/has-symbols": {
1156 | "version": "1.0.2",
1157 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
1158 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
1159 | "dev": true,
1160 | "engines": {
1161 | "node": ">= 0.4"
1162 | },
1163 | "funding": {
1164 | "url": "https://github.com/sponsors/ljharb"
1165 | }
1166 | },
1167 | "node_modules/has-tostringtag": {
1168 | "version": "1.0.0",
1169 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
1170 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
1171 | "dev": true,
1172 | "dependencies": {
1173 | "has-symbols": "^1.0.2"
1174 | },
1175 | "engines": {
1176 | "node": ">= 0.4"
1177 | },
1178 | "funding": {
1179 | "url": "https://github.com/sponsors/ljharb"
1180 | }
1181 | },
1182 | "node_modules/htmlparser2": {
1183 | "version": "7.2.0",
1184 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
1185 | "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
1186 | "dev": true,
1187 | "funding": [
1188 | "https://github.com/fb55/htmlparser2?sponsor=1",
1189 | {
1190 | "type": "github",
1191 | "url": "https://github.com/sponsors/fb55"
1192 | }
1193 | ],
1194 | "dependencies": {
1195 | "domelementtype": "^2.0.1",
1196 | "domhandler": "^4.2.2",
1197 | "domutils": "^2.8.0",
1198 | "entities": "^3.0.1"
1199 | }
1200 | },
1201 | "node_modules/immutable": {
1202 | "version": "4.0.0",
1203 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
1204 | "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
1205 | "dev": true
1206 | },
1207 | "node_modules/inflight": {
1208 | "version": "1.0.6",
1209 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1210 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1211 | "dev": true,
1212 | "dependencies": {
1213 | "once": "^1.3.0",
1214 | "wrappy": "1"
1215 | }
1216 | },
1217 | "node_modules/inherits": {
1218 | "version": "2.0.4",
1219 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1220 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1221 | "dev": true
1222 | },
1223 | "node_modules/is-binary-path": {
1224 | "version": "2.1.0",
1225 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1226 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1227 | "dev": true,
1228 | "dependencies": {
1229 | "binary-extensions": "^2.0.0"
1230 | },
1231 | "engines": {
1232 | "node": ">=8"
1233 | }
1234 | },
1235 | "node_modules/is-core-module": {
1236 | "version": "2.8.1",
1237 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
1238 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
1239 | "dev": true,
1240 | "dependencies": {
1241 | "has": "^1.0.3"
1242 | },
1243 | "funding": {
1244 | "url": "https://github.com/sponsors/ljharb"
1245 | }
1246 | },
1247 | "node_modules/is-expression": {
1248 | "version": "4.0.0",
1249 | "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
1250 | "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
1251 | "dev": true,
1252 | "dependencies": {
1253 | "acorn": "^7.1.1",
1254 | "object-assign": "^4.1.1"
1255 | }
1256 | },
1257 | "node_modules/is-extglob": {
1258 | "version": "2.1.1",
1259 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1260 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1261 | "dev": true,
1262 | "engines": {
1263 | "node": ">=0.10.0"
1264 | }
1265 | },
1266 | "node_modules/is-glob": {
1267 | "version": "4.0.3",
1268 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1269 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1270 | "dev": true,
1271 | "dependencies": {
1272 | "is-extglob": "^2.1.1"
1273 | },
1274 | "engines": {
1275 | "node": ">=0.10.0"
1276 | }
1277 | },
1278 | "node_modules/is-number": {
1279 | "version": "7.0.0",
1280 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1281 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1282 | "dev": true,
1283 | "engines": {
1284 | "node": ">=0.12.0"
1285 | }
1286 | },
1287 | "node_modules/is-promise": {
1288 | "version": "2.2.2",
1289 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
1290 | "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
1291 | "dev": true
1292 | },
1293 | "node_modules/is-regex": {
1294 | "version": "1.1.4",
1295 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
1296 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
1297 | "dev": true,
1298 | "dependencies": {
1299 | "call-bind": "^1.0.2",
1300 | "has-tostringtag": "^1.0.0"
1301 | },
1302 | "engines": {
1303 | "node": ">= 0.4"
1304 | },
1305 | "funding": {
1306 | "url": "https://github.com/sponsors/ljharb"
1307 | }
1308 | },
1309 | "node_modules/js-stringify": {
1310 | "version": "1.0.2",
1311 | "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
1312 | "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=",
1313 | "dev": true
1314 | },
1315 | "node_modules/js-tokens": {
1316 | "version": "4.0.0",
1317 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1318 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1319 | "dev": true,
1320 | "peer": true
1321 | },
1322 | "node_modules/jsonc-parser": {
1323 | "version": "2.3.1",
1324 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
1325 | "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
1326 | "dev": true
1327 | },
1328 | "node_modules/jstransformer": {
1329 | "version": "1.0.0",
1330 | "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
1331 | "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
1332 | "dev": true,
1333 | "dependencies": {
1334 | "is-promise": "^2.0.0",
1335 | "promise": "^7.0.1"
1336 | }
1337 | },
1338 | "node_modules/lamejstmp": {
1339 | "version": "1.0.1",
1340 | "resolved": "https://registry.npmjs.org/lamejstmp/-/lamejstmp-1.0.1.tgz",
1341 | "integrity": "sha512-eEENqMTpiDNTaeOWWbv58KVT4uh9tP7XqpG+aODm9U2eRHwH8Hsx3OnNKxd3noVN6cHmQomv5HQ9N7tzTSVxNQ==",
1342 | "dev": true,
1343 | "dependencies": {
1344 | "use-strict": "1.0.1"
1345 | }
1346 | },
1347 | "node_modules/loose-envify": {
1348 | "version": "1.4.0",
1349 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1350 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1351 | "dev": true,
1352 | "peer": true,
1353 | "dependencies": {
1354 | "js-tokens": "^3.0.0 || ^4.0.0"
1355 | },
1356 | "bin": {
1357 | "loose-envify": "cli.js"
1358 | }
1359 | },
1360 | "node_modules/lru-cache": {
1361 | "version": "6.0.0",
1362 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1363 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1364 | "dev": true,
1365 | "dependencies": {
1366 | "yallist": "^4.0.0"
1367 | },
1368 | "engines": {
1369 | "node": ">=10"
1370 | }
1371 | },
1372 | "node_modules/magic-string": {
1373 | "version": "0.25.7",
1374 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
1375 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
1376 | "dev": true,
1377 | "dependencies": {
1378 | "sourcemap-codec": "^1.4.4"
1379 | }
1380 | },
1381 | "node_modules/minimatch": {
1382 | "version": "3.1.1",
1383 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.1.tgz",
1384 | "integrity": "sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A==",
1385 | "dev": true,
1386 | "dependencies": {
1387 | "brace-expansion": "^1.1.7"
1388 | },
1389 | "engines": {
1390 | "node": "*"
1391 | }
1392 | },
1393 | "node_modules/nanoid": {
1394 | "version": "3.2.0",
1395 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
1396 | "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
1397 | "dev": true,
1398 | "bin": {
1399 | "nanoid": "bin/nanoid.cjs"
1400 | },
1401 | "engines": {
1402 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1403 | }
1404 | },
1405 | "node_modules/normalize-path": {
1406 | "version": "3.0.0",
1407 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1408 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1409 | "dev": true,
1410 | "engines": {
1411 | "node": ">=0.10.0"
1412 | }
1413 | },
1414 | "node_modules/object-assign": {
1415 | "version": "4.1.1",
1416 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1417 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1418 | "dev": true,
1419 | "engines": {
1420 | "node": ">=0.10.0"
1421 | }
1422 | },
1423 | "node_modules/once": {
1424 | "version": "1.4.0",
1425 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1426 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1427 | "dev": true,
1428 | "dependencies": {
1429 | "wrappy": "1"
1430 | }
1431 | },
1432 | "node_modules/path-is-absolute": {
1433 | "version": "1.0.1",
1434 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1435 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1436 | "dev": true,
1437 | "engines": {
1438 | "node": ">=0.10.0"
1439 | }
1440 | },
1441 | "node_modules/path-parse": {
1442 | "version": "1.0.7",
1443 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1444 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1445 | "dev": true
1446 | },
1447 | "node_modules/picocolors": {
1448 | "version": "1.0.0",
1449 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1450 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1451 | "dev": true
1452 | },
1453 | "node_modules/picomatch": {
1454 | "version": "2.3.1",
1455 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1456 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1457 | "dev": true,
1458 | "engines": {
1459 | "node": ">=8.6"
1460 | },
1461 | "funding": {
1462 | "url": "https://github.com/sponsors/jonschlinkert"
1463 | }
1464 | },
1465 | "node_modules/postcss": {
1466 | "version": "8.4.6",
1467 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
1468 | "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
1469 | "dev": true,
1470 | "dependencies": {
1471 | "nanoid": "^3.2.0",
1472 | "picocolors": "^1.0.0",
1473 | "source-map-js": "^1.0.2"
1474 | },
1475 | "engines": {
1476 | "node": "^10 || ^12 || >=14"
1477 | },
1478 | "funding": {
1479 | "type": "opencollective",
1480 | "url": "https://opencollective.com/postcss/"
1481 | }
1482 | },
1483 | "node_modules/preact": {
1484 | "version": "10.6.5",
1485 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.6.5.tgz",
1486 | "integrity": "sha512-i+LXM6JiVjQXSt2jG2vZZFapGpCuk1fl8o6ii3G84MA3xgj686FKjs4JFDkmUVhtxyq21+4ay74zqPykz9hU6w==",
1487 | "dev": true,
1488 | "funding": {
1489 | "type": "opencollective",
1490 | "url": "https://opencollective.com/preact"
1491 | }
1492 | },
1493 | "node_modules/prismjs": {
1494 | "version": "1.27.0",
1495 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
1496 | "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
1497 | "dev": true,
1498 | "engines": {
1499 | "node": ">=6"
1500 | }
1501 | },
1502 | "node_modules/promise": {
1503 | "version": "7.3.1",
1504 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
1505 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
1506 | "dev": true,
1507 | "dependencies": {
1508 | "asap": "~2.0.3"
1509 | }
1510 | },
1511 | "node_modules/pug": {
1512 | "version": "3.0.2",
1513 | "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz",
1514 | "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==",
1515 | "dev": true,
1516 | "dependencies": {
1517 | "pug-code-gen": "^3.0.2",
1518 | "pug-filters": "^4.0.0",
1519 | "pug-lexer": "^5.0.1",
1520 | "pug-linker": "^4.0.0",
1521 | "pug-load": "^3.0.0",
1522 | "pug-parser": "^6.0.0",
1523 | "pug-runtime": "^3.0.1",
1524 | "pug-strip-comments": "^2.0.0"
1525 | }
1526 | },
1527 | "node_modules/pug-attrs": {
1528 | "version": "3.0.0",
1529 | "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
1530 | "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
1531 | "dev": true,
1532 | "dependencies": {
1533 | "constantinople": "^4.0.1",
1534 | "js-stringify": "^1.0.2",
1535 | "pug-runtime": "^3.0.0"
1536 | }
1537 | },
1538 | "node_modules/pug-code-gen": {
1539 | "version": "3.0.2",
1540 | "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz",
1541 | "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==",
1542 | "dev": true,
1543 | "dependencies": {
1544 | "constantinople": "^4.0.1",
1545 | "doctypes": "^1.1.0",
1546 | "js-stringify": "^1.0.2",
1547 | "pug-attrs": "^3.0.0",
1548 | "pug-error": "^2.0.0",
1549 | "pug-runtime": "^3.0.0",
1550 | "void-elements": "^3.1.0",
1551 | "with": "^7.0.0"
1552 | }
1553 | },
1554 | "node_modules/pug-error": {
1555 | "version": "2.0.0",
1556 | "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
1557 | "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==",
1558 | "dev": true
1559 | },
1560 | "node_modules/pug-filters": {
1561 | "version": "4.0.0",
1562 | "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
1563 | "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
1564 | "dev": true,
1565 | "dependencies": {
1566 | "constantinople": "^4.0.1",
1567 | "jstransformer": "1.0.0",
1568 | "pug-error": "^2.0.0",
1569 | "pug-walk": "^2.0.0",
1570 | "resolve": "^1.15.1"
1571 | }
1572 | },
1573 | "node_modules/pug-lexer": {
1574 | "version": "5.0.1",
1575 | "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
1576 | "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
1577 | "dev": true,
1578 | "dependencies": {
1579 | "character-parser": "^2.2.0",
1580 | "is-expression": "^4.0.0",
1581 | "pug-error": "^2.0.0"
1582 | }
1583 | },
1584 | "node_modules/pug-linker": {
1585 | "version": "4.0.0",
1586 | "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
1587 | "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
1588 | "dev": true,
1589 | "dependencies": {
1590 | "pug-error": "^2.0.0",
1591 | "pug-walk": "^2.0.0"
1592 | }
1593 | },
1594 | "node_modules/pug-load": {
1595 | "version": "3.0.0",
1596 | "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
1597 | "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
1598 | "dev": true,
1599 | "dependencies": {
1600 | "object-assign": "^4.1.1",
1601 | "pug-walk": "^2.0.0"
1602 | }
1603 | },
1604 | "node_modules/pug-parser": {
1605 | "version": "6.0.0",
1606 | "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
1607 | "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
1608 | "dev": true,
1609 | "dependencies": {
1610 | "pug-error": "^2.0.0",
1611 | "token-stream": "1.0.0"
1612 | }
1613 | },
1614 | "node_modules/pug-runtime": {
1615 | "version": "3.0.1",
1616 | "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
1617 | "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
1618 | "dev": true
1619 | },
1620 | "node_modules/pug-strip-comments": {
1621 | "version": "2.0.0",
1622 | "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
1623 | "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
1624 | "dev": true,
1625 | "dependencies": {
1626 | "pug-error": "^2.0.0"
1627 | }
1628 | },
1629 | "node_modules/pug-walk": {
1630 | "version": "2.0.0",
1631 | "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
1632 | "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
1633 | "dev": true
1634 | },
1635 | "node_modules/react": {
1636 | "version": "17.0.2",
1637 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
1638 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
1639 | "dev": true,
1640 | "peer": true,
1641 | "dependencies": {
1642 | "loose-envify": "^1.1.0",
1643 | "object-assign": "^4.1.1"
1644 | },
1645 | "engines": {
1646 | "node": ">=0.10.0"
1647 | }
1648 | },
1649 | "node_modules/react-dom": {
1650 | "version": "17.0.2",
1651 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
1652 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
1653 | "dev": true,
1654 | "peer": true,
1655 | "dependencies": {
1656 | "loose-envify": "^1.1.0",
1657 | "object-assign": "^4.1.1",
1658 | "scheduler": "^0.20.2"
1659 | },
1660 | "peerDependencies": {
1661 | "react": "17.0.2"
1662 | }
1663 | },
1664 | "node_modules/readdirp": {
1665 | "version": "3.6.0",
1666 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1667 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1668 | "dev": true,
1669 | "dependencies": {
1670 | "picomatch": "^2.2.1"
1671 | },
1672 | "engines": {
1673 | "node": ">=8.10.0"
1674 | }
1675 | },
1676 | "node_modules/request-light": {
1677 | "version": "0.5.7",
1678 | "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.7.tgz",
1679 | "integrity": "sha512-i/wKzvcx7Er8tZnvqSxWuNO5ZGggu2UgZAqj/RyZ0si7lBTXL7kZiI/dWxzxnQjaY7s5HEy1qK21Do4Ncr6cVw==",
1680 | "dev": true
1681 | },
1682 | "node_modules/resolve": {
1683 | "version": "1.22.0",
1684 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1685 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1686 | "dev": true,
1687 | "dependencies": {
1688 | "is-core-module": "^2.8.1",
1689 | "path-parse": "^1.0.7",
1690 | "supports-preserve-symlinks-flag": "^1.0.0"
1691 | },
1692 | "bin": {
1693 | "resolve": "bin/resolve"
1694 | },
1695 | "funding": {
1696 | "url": "https://github.com/sponsors/ljharb"
1697 | }
1698 | },
1699 | "node_modules/rimraf": {
1700 | "version": "3.0.2",
1701 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1702 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1703 | "dev": true,
1704 | "dependencies": {
1705 | "glob": "^7.1.3"
1706 | },
1707 | "bin": {
1708 | "rimraf": "bin.js"
1709 | },
1710 | "funding": {
1711 | "url": "https://github.com/sponsors/isaacs"
1712 | }
1713 | },
1714 | "node_modules/rollup": {
1715 | "version": "2.67.0",
1716 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz",
1717 | "integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==",
1718 | "dev": true,
1719 | "bin": {
1720 | "rollup": "dist/bin/rollup"
1721 | },
1722 | "engines": {
1723 | "node": ">=10.0.0"
1724 | },
1725 | "optionalDependencies": {
1726 | "fsevents": "~2.3.2"
1727 | }
1728 | },
1729 | "node_modules/sass": {
1730 | "version": "1.49.7",
1731 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.7.tgz",
1732 | "integrity": "sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ==",
1733 | "dev": true,
1734 | "dependencies": {
1735 | "chokidar": ">=3.0.0 <4.0.0",
1736 | "immutable": "^4.0.0",
1737 | "source-map-js": ">=0.6.2 <2.0.0"
1738 | },
1739 | "bin": {
1740 | "sass": "sass.js"
1741 | },
1742 | "engines": {
1743 | "node": ">=12.0.0"
1744 | }
1745 | },
1746 | "node_modules/scheduler": {
1747 | "version": "0.20.2",
1748 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
1749 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
1750 | "dev": true,
1751 | "peer": true,
1752 | "dependencies": {
1753 | "loose-envify": "^1.1.0",
1754 | "object-assign": "^4.1.1"
1755 | }
1756 | },
1757 | "node_modules/semver": {
1758 | "version": "7.3.5",
1759 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
1760 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
1761 | "dev": true,
1762 | "dependencies": {
1763 | "lru-cache": "^6.0.0"
1764 | },
1765 | "bin": {
1766 | "semver": "bin/semver.js"
1767 | },
1768 | "engines": {
1769 | "node": ">=10"
1770 | }
1771 | },
1772 | "node_modules/source-map": {
1773 | "version": "0.6.1",
1774 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1775 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1776 | "dev": true,
1777 | "engines": {
1778 | "node": ">=0.10.0"
1779 | }
1780 | },
1781 | "node_modules/source-map-js": {
1782 | "version": "1.0.2",
1783 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1784 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1785 | "dev": true,
1786 | "engines": {
1787 | "node": ">=0.10.0"
1788 | }
1789 | },
1790 | "node_modules/sourcemap-codec": {
1791 | "version": "1.4.8",
1792 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1793 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1794 | "dev": true
1795 | },
1796 | "node_modules/supports-preserve-symlinks-flag": {
1797 | "version": "1.0.0",
1798 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1799 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1800 | "dev": true,
1801 | "engines": {
1802 | "node": ">= 0.4"
1803 | },
1804 | "funding": {
1805 | "url": "https://github.com/sponsors/ljharb"
1806 | }
1807 | },
1808 | "node_modules/to-fast-properties": {
1809 | "version": "2.0.0",
1810 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1811 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
1812 | "dev": true,
1813 | "engines": {
1814 | "node": ">=4"
1815 | }
1816 | },
1817 | "node_modules/to-regex-range": {
1818 | "version": "5.0.1",
1819 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1820 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1821 | "dev": true,
1822 | "dependencies": {
1823 | "is-number": "^7.0.0"
1824 | },
1825 | "engines": {
1826 | "node": ">=8.0"
1827 | }
1828 | },
1829 | "node_modules/token-stream": {
1830 | "version": "1.0.0",
1831 | "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
1832 | "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=",
1833 | "dev": true
1834 | },
1835 | "node_modules/typescript": {
1836 | "version": "4.5.5",
1837 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
1838 | "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
1839 | "dev": true,
1840 | "bin": {
1841 | "tsc": "bin/tsc",
1842 | "tsserver": "bin/tsserver"
1843 | },
1844 | "engines": {
1845 | "node": ">=4.2.0"
1846 | }
1847 | },
1848 | "node_modules/upath": {
1849 | "version": "2.0.1",
1850 | "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
1851 | "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
1852 | "dev": true,
1853 | "engines": {
1854 | "node": ">=4",
1855 | "yarn": "*"
1856 | }
1857 | },
1858 | "node_modules/use-strict": {
1859 | "version": "1.0.1",
1860 | "resolved": "https://registry.npmjs.org/use-strict/-/use-strict-1.0.1.tgz",
1861 | "integrity": "sha512-IeiWvvEXfW5ltKVMkxq6FvNf2LojMKvB2OCeja6+ct24S1XOmQw2dGr2JyndwACWAGJva9B7yPHwAmeA9QCqAQ==",
1862 | "dev": true
1863 | },
1864 | "node_modules/vite": {
1865 | "version": "2.7.13",
1866 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.13.tgz",
1867 | "integrity": "sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==",
1868 | "dev": true,
1869 | "dependencies": {
1870 | "esbuild": "^0.13.12",
1871 | "postcss": "^8.4.5",
1872 | "resolve": "^1.20.0",
1873 | "rollup": "^2.59.0"
1874 | },
1875 | "bin": {
1876 | "vite": "bin/vite.js"
1877 | },
1878 | "engines": {
1879 | "node": ">=12.2.0"
1880 | },
1881 | "optionalDependencies": {
1882 | "fsevents": "~2.3.2"
1883 | },
1884 | "peerDependencies": {
1885 | "less": "*",
1886 | "sass": "*",
1887 | "stylus": "*"
1888 | },
1889 | "peerDependenciesMeta": {
1890 | "less": {
1891 | "optional": true
1892 | },
1893 | "sass": {
1894 | "optional": true
1895 | },
1896 | "stylus": {
1897 | "optional": true
1898 | }
1899 | }
1900 | },
1901 | "node_modules/vitepress": {
1902 | "version": "0.21.6",
1903 | "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.21.6.tgz",
1904 | "integrity": "sha512-OzwD2cTfvoK5VKV0UWSqu4XvUOz4vWFJ4Bdi0z8GoVkTFXkfmbFawEDVXAZwzu0Hn4/VLopgmEyooc91iGKFlg==",
1905 | "dev": true,
1906 | "dependencies": {
1907 | "@docsearch/css": "^3.0.0-alpha.41",
1908 | "@docsearch/js": "^3.0.0-alpha.41",
1909 | "@vitejs/plugin-vue": "^2.0.0",
1910 | "prismjs": "^1.25.0",
1911 | "vite": "^2.7.12",
1912 | "vue": "^3.2.27"
1913 | },
1914 | "bin": {
1915 | "vitepress": "bin/vitepress.js"
1916 | },
1917 | "engines": {
1918 | "node": ">=12.0.0"
1919 | }
1920 | },
1921 | "node_modules/void-elements": {
1922 | "version": "3.1.0",
1923 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
1924 | "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=",
1925 | "dev": true,
1926 | "engines": {
1927 | "node": ">=0.10.0"
1928 | }
1929 | },
1930 | "node_modules/vscode-css-languageservice": {
1931 | "version": "5.1.12",
1932 | "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-5.1.12.tgz",
1933 | "integrity": "sha512-293C5C2732Rbhh3opTs+nQBpC5Dd+oYrEA8lc0OWdyt40oYmJ331FV7NMF1SLFSIcOFB5XveLiWUZak2oyc49Q==",
1934 | "dev": true,
1935 | "dependencies": {
1936 | "vscode-languageserver-textdocument": "^1.0.1",
1937 | "vscode-languageserver-types": "^3.16.0",
1938 | "vscode-nls": "^5.0.0",
1939 | "vscode-uri": "^3.0.2"
1940 | }
1941 | },
1942 | "node_modules/vscode-css-languageservice/node_modules/vscode-languageserver-types": {
1943 | "version": "3.16.0",
1944 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
1945 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
1946 | "dev": true
1947 | },
1948 | "node_modules/vscode-html-languageservice": {
1949 | "version": "4.2.1",
1950 | "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-4.2.1.tgz",
1951 | "integrity": "sha512-PgaToZVXJ44nFWEBuSINdDgVV6EnpC3MnXBsysR3O5TKcAfywbYeRGRy+Y4dVR7YeUgDvtb+JkJoSkaYC0mxXQ==",
1952 | "dev": true,
1953 | "dependencies": {
1954 | "vscode-languageserver-textdocument": "^1.0.1",
1955 | "vscode-languageserver-types": "^3.16.0",
1956 | "vscode-nls": "^5.0.0",
1957 | "vscode-uri": "^3.0.2"
1958 | }
1959 | },
1960 | "node_modules/vscode-html-languageservice/node_modules/vscode-languageserver-types": {
1961 | "version": "3.16.0",
1962 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
1963 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
1964 | "dev": true
1965 | },
1966 | "node_modules/vscode-json-languageservice": {
1967 | "version": "4.2.0",
1968 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.2.0.tgz",
1969 | "integrity": "sha512-XNawv0Vdy/sUK0S+hGf7cq/qsVAbIniGJr89TvZOqMCNJmpgKTy1e8PL1aWW0uy6BfWMG7vxa5lZb3ypuFtuGQ==",
1970 | "dev": true,
1971 | "dependencies": {
1972 | "jsonc-parser": "^3.0.0",
1973 | "vscode-languageserver-textdocument": "^1.0.3",
1974 | "vscode-languageserver-types": "^3.16.0",
1975 | "vscode-nls": "^5.0.0",
1976 | "vscode-uri": "^3.0.3"
1977 | }
1978 | },
1979 | "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": {
1980 | "version": "3.0.0",
1981 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
1982 | "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
1983 | "dev": true
1984 | },
1985 | "node_modules/vscode-json-languageservice/node_modules/vscode-languageserver-types": {
1986 | "version": "3.16.0",
1987 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
1988 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
1989 | "dev": true
1990 | },
1991 | "node_modules/vscode-jsonrpc": {
1992 | "version": "8.0.0-next.6",
1993 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.6.tgz",
1994 | "integrity": "sha512-6Ld3RYjygn5Ih7CkAtcAwiDQC+rakj2O+PnASfNyYv3sLmm44eJpEKzuPUN30Iy2UB09AZg8T6LBKWTJTEJDVw==",
1995 | "dev": true,
1996 | "engines": {
1997 | "node": ">=14.0.0"
1998 | }
1999 | },
2000 | "node_modules/vscode-languageserver": {
2001 | "version": "8.0.0-next.8",
2002 | "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.0-next.8.tgz",
2003 | "integrity": "sha512-Gq0uqKbOgw7YNwPxMoNCeh7mHKMhG5j6EuoSh+w5pnKd7Eu9a74cagqf9aZDVFWW6GRpqR/Z+1o6EXqDK+g2Tg==",
2004 | "dev": true,
2005 | "dependencies": {
2006 | "vscode-languageserver-protocol": "3.17.0-next.14"
2007 | },
2008 | "bin": {
2009 | "installServerIntoExtension": "bin/installServerIntoExtension"
2010 | }
2011 | },
2012 | "node_modules/vscode-languageserver-protocol": {
2013 | "version": "3.17.0-next.14",
2014 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.14.tgz",
2015 | "integrity": "sha512-iangobY8dL6sFZkOx4OhRPJM9gN0I1caUsOVR+MnPozsqQUtwMXmbIcfaIf0Akp0pd3KhJDPf/tdwRX68QGeeA==",
2016 | "dev": true,
2017 | "dependencies": {
2018 | "vscode-jsonrpc": "8.0.0-next.6",
2019 | "vscode-languageserver-types": "3.17.0-next.7"
2020 | }
2021 | },
2022 | "node_modules/vscode-languageserver-textdocument": {
2023 | "version": "1.0.4",
2024 | "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz",
2025 | "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==",
2026 | "dev": true
2027 | },
2028 | "node_modules/vscode-languageserver-types": {
2029 | "version": "3.17.0-next.7",
2030 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.7.tgz",
2031 | "integrity": "sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg==",
2032 | "dev": true
2033 | },
2034 | "node_modules/vscode-nls": {
2035 | "version": "5.0.0",
2036 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz",
2037 | "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==",
2038 | "dev": true
2039 | },
2040 | "node_modules/vscode-pug-languageservice": {
2041 | "version": "0.29.8",
2042 | "resolved": "https://registry.npmjs.org/vscode-pug-languageservice/-/vscode-pug-languageservice-0.29.8.tgz",
2043 | "integrity": "sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==",
2044 | "dev": true,
2045 | "dependencies": {
2046 | "@volar/code-gen": "0.29.8",
2047 | "@volar/shared": "0.29.8",
2048 | "@volar/source-map": "0.29.8",
2049 | "@volar/transforms": "0.29.8",
2050 | "pug-lexer": "^5.0.1",
2051 | "pug-parser": "^6.0.0",
2052 | "vscode-languageserver": "^8.0.0-next.2"
2053 | }
2054 | },
2055 | "node_modules/vscode-typescript-languageservice": {
2056 | "version": "0.29.8",
2057 | "resolved": "https://registry.npmjs.org/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.29.8.tgz",
2058 | "integrity": "sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==",
2059 | "dev": true,
2060 | "dependencies": {
2061 | "@volar/shared": "0.29.8",
2062 | "semver": "^7.3.5",
2063 | "upath": "^2.0.1",
2064 | "vscode-languageserver": "^8.0.0-next.2",
2065 | "vscode-languageserver-textdocument": "^1.0.1"
2066 | }
2067 | },
2068 | "node_modules/vscode-uri": {
2069 | "version": "3.0.3",
2070 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.3.tgz",
2071 | "integrity": "sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==",
2072 | "dev": true
2073 | },
2074 | "node_modules/vscode-vue-languageservice": {
2075 | "version": "0.29.8",
2076 | "resolved": "https://registry.npmjs.org/vscode-vue-languageservice/-/vscode-vue-languageservice-0.29.8.tgz",
2077 | "integrity": "sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==",
2078 | "dev": true,
2079 | "dependencies": {
2080 | "@volar/code-gen": "0.29.8",
2081 | "@volar/html2pug": "0.29.8",
2082 | "@volar/shared": "0.29.8",
2083 | "@volar/source-map": "0.29.8",
2084 | "@volar/transforms": "0.29.8",
2085 | "@volar/vue-code-gen": "0.29.8",
2086 | "@vscode/emmet-helper": "^2.8.0",
2087 | "@vue/reactivity": "^3.2.21",
2088 | "@vue/shared": "^3.2.21",
2089 | "request-light": "^0.5.4",
2090 | "upath": "^2.0.1",
2091 | "vscode-css-languageservice": "^5.1.7",
2092 | "vscode-html-languageservice": "^4.1.0",
2093 | "vscode-json-languageservice": "^4.1.8",
2094 | "vscode-languageserver": "^8.0.0-next.2",
2095 | "vscode-languageserver-textdocument": "^1.0.1",
2096 | "vscode-pug-languageservice": "0.29.8",
2097 | "vscode-typescript-languageservice": "0.29.8"
2098 | }
2099 | },
2100 | "node_modules/vue": {
2101 | "version": "3.2.29",
2102 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.29.tgz",
2103 | "integrity": "sha512-cFIwr7LkbtCRanjNvh6r7wp2yUxfxeM2yPpDQpAfaaLIGZSrUmLbNiSze9nhBJt5MrZ68Iqt0O5scwAMEVxF+Q==",
2104 | "dev": true,
2105 | "dependencies": {
2106 | "@vue/compiler-dom": "3.2.29",
2107 | "@vue/compiler-sfc": "3.2.29",
2108 | "@vue/runtime-dom": "3.2.29",
2109 | "@vue/server-renderer": "3.2.29",
2110 | "@vue/shared": "3.2.29"
2111 | }
2112 | },
2113 | "node_modules/vue-tsc": {
2114 | "version": "0.29.8",
2115 | "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.29.8.tgz",
2116 | "integrity": "sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==",
2117 | "dev": true,
2118 | "dependencies": {
2119 | "@volar/shared": "0.29.8",
2120 | "vscode-vue-languageservice": "0.29.8"
2121 | },
2122 | "bin": {
2123 | "vue-tsc": "bin/vue-tsc.js"
2124 | },
2125 | "peerDependencies": {
2126 | "typescript": "*"
2127 | }
2128 | },
2129 | "node_modules/with": {
2130 | "version": "7.0.2",
2131 | "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
2132 | "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
2133 | "dev": true,
2134 | "dependencies": {
2135 | "@babel/parser": "^7.9.6",
2136 | "@babel/types": "^7.9.6",
2137 | "assert-never": "^1.2.1",
2138 | "babel-walk": "3.0.0-canary-5"
2139 | },
2140 | "engines": {
2141 | "node": ">= 10.0.0"
2142 | }
2143 | },
2144 | "node_modules/wrappy": {
2145 | "version": "1.0.2",
2146 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2147 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2148 | "dev": true
2149 | },
2150 | "node_modules/yallist": {
2151 | "version": "4.0.0",
2152 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2153 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2154 | "dev": true
2155 | }
2156 | },
2157 | "dependencies": {
2158 | "@algolia/autocomplete-core": {
2159 | "version": "1.5.2",
2160 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz",
2161 | "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==",
2162 | "dev": true,
2163 | "requires": {
2164 | "@algolia/autocomplete-shared": "1.5.2"
2165 | }
2166 | },
2167 | "@algolia/autocomplete-preset-algolia": {
2168 | "version": "1.5.2",
2169 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz",
2170 | "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==",
2171 | "dev": true,
2172 | "requires": {
2173 | "@algolia/autocomplete-shared": "1.5.2"
2174 | }
2175 | },
2176 | "@algolia/autocomplete-shared": {
2177 | "version": "1.5.2",
2178 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz",
2179 | "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==",
2180 | "dev": true
2181 | },
2182 | "@algolia/cache-browser-local-storage": {
2183 | "version": "4.12.1",
2184 | "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz",
2185 | "integrity": "sha512-ERFFOnC9740xAkuO0iZTQqm2AzU7Dpz/s+g7o48GlZgx5p9GgNcsuK5eS0GoW/tAK+fnKlizCtlFHNuIWuvfsg==",
2186 | "dev": true,
2187 | "requires": {
2188 | "@algolia/cache-common": "4.12.1"
2189 | }
2190 | },
2191 | "@algolia/cache-common": {
2192 | "version": "4.12.1",
2193 | "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.12.1.tgz",
2194 | "integrity": "sha512-UugTER3V40jT+e19Dmph5PKMeliYKxycNPwrPNADin0RcWNfT2QksK9Ff2N2W7UKraqMOzoeDb4LAJtxcK1a8Q==",
2195 | "dev": true
2196 | },
2197 | "@algolia/cache-in-memory": {
2198 | "version": "4.12.1",
2199 | "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.12.1.tgz",
2200 | "integrity": "sha512-U6iaunaxK1lHsAf02UWF58foKFEcrVLsHwN56UkCtwn32nlP9rz52WOcHsgk6TJrL8NDcO5swMjtOQ5XHESFLw==",
2201 | "dev": true,
2202 | "requires": {
2203 | "@algolia/cache-common": "4.12.1"
2204 | }
2205 | },
2206 | "@algolia/client-account": {
2207 | "version": "4.12.1",
2208 | "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.12.1.tgz",
2209 | "integrity": "sha512-jGo4ConJNoMdTCR2zouO0jO/JcJmzOK6crFxMMLvdnB1JhmMbuIKluOTJVlBWeivnmcsqb7r0v7qTCPW5PAyxQ==",
2210 | "dev": true,
2211 | "requires": {
2212 | "@algolia/client-common": "4.12.1",
2213 | "@algolia/client-search": "4.12.1",
2214 | "@algolia/transporter": "4.12.1"
2215 | }
2216 | },
2217 | "@algolia/client-analytics": {
2218 | "version": "4.12.1",
2219 | "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.12.1.tgz",
2220 | "integrity": "sha512-h1It7KXzIthlhuhfBk7LteYq72tym9maQDUsyRW0Gft8b6ZQahnRak9gcCvKwhcJ1vJoP7T7JrNYGiYSicTD9g==",
2221 | "dev": true,
2222 | "requires": {
2223 | "@algolia/client-common": "4.12.1",
2224 | "@algolia/client-search": "4.12.1",
2225 | "@algolia/requester-common": "4.12.1",
2226 | "@algolia/transporter": "4.12.1"
2227 | }
2228 | },
2229 | "@algolia/client-common": {
2230 | "version": "4.12.1",
2231 | "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.12.1.tgz",
2232 | "integrity": "sha512-obnJ8eSbv+h94Grk83DTGQ3bqhViSWureV6oK1s21/KMGWbb3DkduHm+lcwFrMFkjSUSzosLBHV9EQUIBvueTw==",
2233 | "dev": true,
2234 | "requires": {
2235 | "@algolia/requester-common": "4.12.1",
2236 | "@algolia/transporter": "4.12.1"
2237 | }
2238 | },
2239 | "@algolia/client-personalization": {
2240 | "version": "4.12.1",
2241 | "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.12.1.tgz",
2242 | "integrity": "sha512-sMSnjjPjRgByGHYygV+5L/E8a6RgU7l2GbpJukSzJ9GRY37tHmBHuvahv8JjdCGJ2p7QDYLnQy5bN5Z02qjc7Q==",
2243 | "dev": true,
2244 | "requires": {
2245 | "@algolia/client-common": "4.12.1",
2246 | "@algolia/requester-common": "4.12.1",
2247 | "@algolia/transporter": "4.12.1"
2248 | }
2249 | },
2250 | "@algolia/client-search": {
2251 | "version": "4.12.1",
2252 | "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.12.1.tgz",
2253 | "integrity": "sha512-MwwKKprfY6X2nJ5Ki/ccXM2GDEePvVjZnnoOB2io3dLKW4fTqeSRlC5DRXeFD7UM0vOPPHr4ItV2aj19APKNVQ==",
2254 | "dev": true,
2255 | "requires": {
2256 | "@algolia/client-common": "4.12.1",
2257 | "@algolia/requester-common": "4.12.1",
2258 | "@algolia/transporter": "4.12.1"
2259 | }
2260 | },
2261 | "@algolia/logger-common": {
2262 | "version": "4.12.1",
2263 | "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.12.1.tgz",
2264 | "integrity": "sha512-fCgrzlXGATNqdFTxwx0GsyPXK+Uqrx1SZ3iuY2VGPPqdt1a20clAG2n2OcLHJpvaa6vMFPlJyWvbqAgzxdxBlQ==",
2265 | "dev": true
2266 | },
2267 | "@algolia/logger-console": {
2268 | "version": "4.12.1",
2269 | "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.12.1.tgz",
2270 | "integrity": "sha512-0owaEnq/davngQMYqxLA4KrhWHiXujQ1CU3FFnyUcMyBR7rGHI48zSOUpqnsAXrMBdSH6rH5BDkSUUFwsh8RkQ==",
2271 | "dev": true,
2272 | "requires": {
2273 | "@algolia/logger-common": "4.12.1"
2274 | }
2275 | },
2276 | "@algolia/requester-browser-xhr": {
2277 | "version": "4.12.1",
2278 | "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.1.tgz",
2279 | "integrity": "sha512-OaMxDyG0TZG0oqz1lQh9e3woantAG1bLnuwq3fmypsrQxra4IQZiyn1x+kEb69D2TcXApI5gOgrD4oWhtEVMtw==",
2280 | "dev": true,
2281 | "requires": {
2282 | "@algolia/requester-common": "4.12.1"
2283 | }
2284 | },
2285 | "@algolia/requester-common": {
2286 | "version": "4.12.1",
2287 | "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.12.1.tgz",
2288 | "integrity": "sha512-XWIrWQNJ1vIrSuL/bUk3ZwNMNxl+aWz6dNboRW6+lGTcMIwc3NBFE90ogbZKhNrFRff8zI4qCF15tjW+Fyhpow==",
2289 | "dev": true
2290 | },
2291 | "@algolia/requester-node-http": {
2292 | "version": "4.12.1",
2293 | "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.12.1.tgz",
2294 | "integrity": "sha512-awBtwaD+s0hxkA1aehYn8F0t9wqGoBVWgY4JPHBmp1ChO3pK7RKnnvnv7QQa9vTlllX29oPt/BBVgMo1Z3n1Qg==",
2295 | "dev": true,
2296 | "requires": {
2297 | "@algolia/requester-common": "4.12.1"
2298 | }
2299 | },
2300 | "@algolia/transporter": {
2301 | "version": "4.12.1",
2302 | "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.12.1.tgz",
2303 | "integrity": "sha512-BGeNgdEHc6dXIk2g8kdlOoQ6fQ6OIaKQcplEj7HPoi+XZUeAvRi3Pff3QWd7YmybWkjzd9AnTzieTASDWhL+sQ==",
2304 | "dev": true,
2305 | "requires": {
2306 | "@algolia/cache-common": "4.12.1",
2307 | "@algolia/logger-common": "4.12.1",
2308 | "@algolia/requester-common": "4.12.1"
2309 | }
2310 | },
2311 | "@babel/helper-validator-identifier": {
2312 | "version": "7.16.7",
2313 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
2314 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
2315 | "dev": true
2316 | },
2317 | "@babel/parser": {
2318 | "version": "7.17.0",
2319 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz",
2320 | "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==",
2321 | "dev": true
2322 | },
2323 | "@babel/types": {
2324 | "version": "7.17.0",
2325 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
2326 | "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
2327 | "dev": true,
2328 | "requires": {
2329 | "@babel/helper-validator-identifier": "^7.16.7",
2330 | "to-fast-properties": "^2.0.0"
2331 | }
2332 | },
2333 | "@docsearch/css": {
2334 | "version": "3.0.0-alpha.50",
2335 | "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.50.tgz",
2336 | "integrity": "sha512-QeWFCQOtS9D+Fi20liKsPXF2j/xWKh52e+P2Z1UATIdPMqmH6zoB2lcUz+cgv6PPVgWUtECeR6VSSUm71LT94w==",
2337 | "dev": true
2338 | },
2339 | "@docsearch/js": {
2340 | "version": "3.0.0-alpha.50",
2341 | "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.0.0-alpha.50.tgz",
2342 | "integrity": "sha512-1ap9Wz5oR/Z8yybaCZhsptXU43es3H52eEQUZtmzb8dUWyCW+3iXaKVB/qeMJOQWtggZ/WvZV3YknVIbCMR2dQ==",
2343 | "dev": true,
2344 | "requires": {
2345 | "@docsearch/react": "3.0.0-alpha.50",
2346 | "preact": "^10.0.0"
2347 | }
2348 | },
2349 | "@docsearch/react": {
2350 | "version": "3.0.0-alpha.50",
2351 | "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.50.tgz",
2352 | "integrity": "sha512-oDGV1zZCRYv7MWsh6CyQVthYTRc3b4q+6kKwNYb1/g/Wf/4nJHutpxolFLHdEUDhrJ4Xi8wxwQG+lEwAVBTHPg==",
2353 | "dev": true,
2354 | "requires": {
2355 | "@algolia/autocomplete-core": "1.5.2",
2356 | "@algolia/autocomplete-preset-algolia": "1.5.2",
2357 | "@docsearch/css": "3.0.0-alpha.50",
2358 | "algoliasearch": "^4.0.0"
2359 | }
2360 | },
2361 | "@emmetio/abbreviation": {
2362 | "version": "2.2.2",
2363 | "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.2.2.tgz",
2364 | "integrity": "sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw==",
2365 | "dev": true,
2366 | "requires": {
2367 | "@emmetio/scanner": "^1.0.0"
2368 | }
2369 | },
2370 | "@emmetio/css-abbreviation": {
2371 | "version": "2.1.4",
2372 | "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz",
2373 | "integrity": "sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==",
2374 | "dev": true,
2375 | "requires": {
2376 | "@emmetio/scanner": "^1.0.0"
2377 | }
2378 | },
2379 | "@emmetio/scanner": {
2380 | "version": "1.0.0",
2381 | "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.0.tgz",
2382 | "integrity": "sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==",
2383 | "dev": true
2384 | },
2385 | "@types/node": {
2386 | "version": "17.0.14",
2387 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz",
2388 | "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==",
2389 | "dev": true
2390 | },
2391 | "@types/prop-types": {
2392 | "version": "15.7.5",
2393 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
2394 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
2395 | "dev": true,
2396 | "peer": true
2397 | },
2398 | "@types/react": {
2399 | "version": "17.0.47",
2400 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
2401 | "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
2402 | "dev": true,
2403 | "peer": true,
2404 | "requires": {
2405 | "@types/prop-types": "*",
2406 | "@types/scheduler": "*",
2407 | "csstype": "^3.0.2"
2408 | },
2409 | "dependencies": {
2410 | "csstype": {
2411 | "version": "3.1.0",
2412 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
2413 | "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==",
2414 | "dev": true,
2415 | "peer": true
2416 | }
2417 | }
2418 | },
2419 | "@types/scheduler": {
2420 | "version": "0.16.2",
2421 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
2422 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
2423 | "dev": true,
2424 | "peer": true
2425 | },
2426 | "@vitejs/plugin-vue": {
2427 | "version": "2.1.0",
2428 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.1.0.tgz",
2429 | "integrity": "sha512-AZ78WxvFMYd8JmM/GBV6a6SGGTU0GgN/0/4T+FnMMsLzFEzTeAUwuraapy50ifHZsC+G5SvWs86bvaCPTneFlA==",
2430 | "dev": true,
2431 | "requires": {}
2432 | },
2433 | "@volar/code-gen": {
2434 | "version": "0.29.8",
2435 | "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.29.8.tgz",
2436 | "integrity": "sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==",
2437 | "dev": true,
2438 | "requires": {
2439 | "@volar/shared": "0.29.8",
2440 | "@volar/source-map": "0.29.8"
2441 | }
2442 | },
2443 | "@volar/html2pug": {
2444 | "version": "0.29.8",
2445 | "resolved": "https://registry.npmjs.org/@volar/html2pug/-/html2pug-0.29.8.tgz",
2446 | "integrity": "sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==",
2447 | "dev": true,
2448 | "requires": {
2449 | "domelementtype": "^2.2.0",
2450 | "domhandler": "^4.2.2",
2451 | "htmlparser2": "^7.1.2",
2452 | "pug": "^3.0.2"
2453 | }
2454 | },
2455 | "@volar/shared": {
2456 | "version": "0.29.8",
2457 | "resolved": "https://registry.npmjs.org/@volar/shared/-/shared-0.29.8.tgz",
2458 | "integrity": "sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==",
2459 | "dev": true,
2460 | "requires": {
2461 | "upath": "^2.0.1",
2462 | "vscode-jsonrpc": "^8.0.0-next.2",
2463 | "vscode-uri": "^3.0.2"
2464 | }
2465 | },
2466 | "@volar/source-map": {
2467 | "version": "0.29.8",
2468 | "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.29.8.tgz",
2469 | "integrity": "sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==",
2470 | "dev": true,
2471 | "requires": {
2472 | "@volar/shared": "0.29.8"
2473 | }
2474 | },
2475 | "@volar/transforms": {
2476 | "version": "0.29.8",
2477 | "resolved": "https://registry.npmjs.org/@volar/transforms/-/transforms-0.29.8.tgz",
2478 | "integrity": "sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==",
2479 | "dev": true,
2480 | "requires": {
2481 | "@volar/shared": "0.29.8",
2482 | "vscode-languageserver": "^8.0.0-next.2"
2483 | }
2484 | },
2485 | "@volar/vue-code-gen": {
2486 | "version": "0.29.8",
2487 | "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.29.8.tgz",
2488 | "integrity": "sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==",
2489 | "dev": true,
2490 | "requires": {
2491 | "@volar/code-gen": "0.29.8",
2492 | "@volar/shared": "0.29.8",
2493 | "@volar/source-map": "0.29.8",
2494 | "@vue/compiler-core": "^3.2.21",
2495 | "@vue/compiler-dom": "^3.2.21",
2496 | "@vue/shared": "^3.2.21",
2497 | "upath": "^2.0.1"
2498 | }
2499 | },
2500 | "@vscode/emmet-helper": {
2501 | "version": "2.8.3",
2502 | "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.8.3.tgz",
2503 | "integrity": "sha512-dkTSL+BaBBS8gFgPm/GMOU+XfxaMyI+Fl1IUYxEi8Iv24RfHf9/q2eCpV2hs7sncLcoKWEbMYe5gv4Ppmp2Oxw==",
2504 | "dev": true,
2505 | "requires": {
2506 | "emmet": "^2.3.0",
2507 | "jsonc-parser": "^2.3.0",
2508 | "vscode-languageserver-textdocument": "^1.0.1",
2509 | "vscode-languageserver-types": "^3.15.1",
2510 | "vscode-nls": "^5.0.0",
2511 | "vscode-uri": "^2.1.2"
2512 | },
2513 | "dependencies": {
2514 | "vscode-languageserver-types": {
2515 | "version": "3.16.0",
2516 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
2517 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
2518 | "dev": true
2519 | },
2520 | "vscode-uri": {
2521 | "version": "2.1.2",
2522 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz",
2523 | "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==",
2524 | "dev": true
2525 | }
2526 | }
2527 | },
2528 | "@vue/compiler-core": {
2529 | "version": "3.2.29",
2530 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.29.tgz",
2531 | "integrity": "sha512-RePZ/J4Ub3sb7atQw6V6Rez+/5LCRHGFlSetT3N4VMrejqJnNPXKUt5AVm/9F5MJriy2w/VudEIvgscCfCWqxw==",
2532 | "dev": true,
2533 | "requires": {
2534 | "@babel/parser": "^7.16.4",
2535 | "@vue/shared": "3.2.29",
2536 | "estree-walker": "^2.0.2",
2537 | "source-map": "^0.6.1"
2538 | }
2539 | },
2540 | "@vue/compiler-dom": {
2541 | "version": "3.2.29",
2542 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.29.tgz",
2543 | "integrity": "sha512-y26vK5khdNS9L3ckvkqJk/78qXwWb75Ci8iYLb67AkJuIgyKhIOcR1E8RIt4mswlVCIeI9gQ+fmtdhaiTAtrBQ==",
2544 | "dev": true,
2545 | "requires": {
2546 | "@vue/compiler-core": "3.2.29",
2547 | "@vue/shared": "3.2.29"
2548 | }
2549 | },
2550 | "@vue/compiler-sfc": {
2551 | "version": "3.2.29",
2552 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.29.tgz",
2553 | "integrity": "sha512-X9+0dwsag2u6hSOP/XsMYqFti/edvYvxamgBgCcbSYuXx1xLZN+dS/GvQKM4AgGS4djqo0jQvWfIXdfZ2ET68g==",
2554 | "dev": true,
2555 | "requires": {
2556 | "@babel/parser": "^7.16.4",
2557 | "@vue/compiler-core": "3.2.29",
2558 | "@vue/compiler-dom": "3.2.29",
2559 | "@vue/compiler-ssr": "3.2.29",
2560 | "@vue/reactivity-transform": "3.2.29",
2561 | "@vue/shared": "3.2.29",
2562 | "estree-walker": "^2.0.2",
2563 | "magic-string": "^0.25.7",
2564 | "postcss": "^8.1.10",
2565 | "source-map": "^0.6.1"
2566 | }
2567 | },
2568 | "@vue/compiler-ssr": {
2569 | "version": "3.2.29",
2570 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.29.tgz",
2571 | "integrity": "sha512-LrvQwXlx66uWsB9/VydaaqEpae9xtmlUkeSKF6aPDbzx8M1h7ukxaPjNCAXuFd3fUHblcri8k42lfimHfzMICA==",
2572 | "dev": true,
2573 | "requires": {
2574 | "@vue/compiler-dom": "3.2.29",
2575 | "@vue/shared": "3.2.29"
2576 | }
2577 | },
2578 | "@vue/reactivity": {
2579 | "version": "3.2.29",
2580 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.29.tgz",
2581 | "integrity": "sha512-Ryhb6Gy62YolKXH1gv42pEqwx7zs3n8gacRVZICSgjQz8Qr8QeCcFygBKYfJm3o1SccR7U+bVBQDWZGOyG1k4g==",
2582 | "dev": true,
2583 | "requires": {
2584 | "@vue/shared": "3.2.29"
2585 | }
2586 | },
2587 | "@vue/reactivity-transform": {
2588 | "version": "3.2.29",
2589 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.29.tgz",
2590 | "integrity": "sha512-YF6HdOuhdOw6KyRm59+3rML8USb9o8mYM1q+SH0G41K3/q/G7uhPnHGKvspzceD7h9J3VR1waOQ93CUZj7J7OA==",
2591 | "dev": true,
2592 | "requires": {
2593 | "@babel/parser": "^7.16.4",
2594 | "@vue/compiler-core": "3.2.29",
2595 | "@vue/shared": "3.2.29",
2596 | "estree-walker": "^2.0.2",
2597 | "magic-string": "^0.25.7"
2598 | }
2599 | },
2600 | "@vue/runtime-core": {
2601 | "version": "3.2.29",
2602 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.29.tgz",
2603 | "integrity": "sha512-VMvQuLdzoTGmCwIKTKVwKmIL0qcODIqe74JtK1pVr5lnaE0l25hopodmPag3RcnIcIXe+Ye3B2olRCn7fTCgig==",
2604 | "dev": true,
2605 | "requires": {
2606 | "@vue/reactivity": "3.2.29",
2607 | "@vue/shared": "3.2.29"
2608 | }
2609 | },
2610 | "@vue/runtime-dom": {
2611 | "version": "3.2.29",
2612 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.29.tgz",
2613 | "integrity": "sha512-YJgLQLwr+SQyORzTsBQLL5TT/5UiV83tEotqjL7F9aFDIQdFBTCwpkCFvX9jqwHoyi9sJqM9XtTrMcc8z/OjPA==",
2614 | "dev": true,
2615 | "requires": {
2616 | "@vue/runtime-core": "3.2.29",
2617 | "@vue/shared": "3.2.29",
2618 | "csstype": "^2.6.8"
2619 | }
2620 | },
2621 | "@vue/server-renderer": {
2622 | "version": "3.2.29",
2623 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.29.tgz",
2624 | "integrity": "sha512-lpiYx7ciV7rWfJ0tPkoSOlLmwqBZ9FTmQm33S+T4g0j1fO/LmhJ9b9Ctl1o5xvIFVDk9QkSUWANZn7H2pXuxVw==",
2625 | "dev": true,
2626 | "requires": {
2627 | "@vue/compiler-ssr": "3.2.29",
2628 | "@vue/shared": "3.2.29"
2629 | }
2630 | },
2631 | "@vue/shared": {
2632 | "version": "3.2.29",
2633 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.29.tgz",
2634 | "integrity": "sha512-BjNpU8OK6Z0LVzGUppEk0CMYm/hKDnZfYdjSmPOs0N+TR1cLKJAkDwW8ASZUvaaSLEi6d3hVM7jnWnX+6yWnHw==",
2635 | "dev": true
2636 | },
2637 | "acorn": {
2638 | "version": "7.4.1",
2639 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
2640 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
2641 | "dev": true
2642 | },
2643 | "algoliasearch": {
2644 | "version": "4.12.1",
2645 | "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.1.tgz",
2646 | "integrity": "sha512-c0dM1g3zZBJrkzE5GA/Nu1y3fFxx3LCzxKzcmp2dgGS8P4CjszB/l3lsSh2MSrrK1Hn/KV4BlbBMXtYgG1Bfrw==",
2647 | "dev": true,
2648 | "requires": {
2649 | "@algolia/cache-browser-local-storage": "4.12.1",
2650 | "@algolia/cache-common": "4.12.1",
2651 | "@algolia/cache-in-memory": "4.12.1",
2652 | "@algolia/client-account": "4.12.1",
2653 | "@algolia/client-analytics": "4.12.1",
2654 | "@algolia/client-common": "4.12.1",
2655 | "@algolia/client-personalization": "4.12.1",
2656 | "@algolia/client-search": "4.12.1",
2657 | "@algolia/logger-common": "4.12.1",
2658 | "@algolia/logger-console": "4.12.1",
2659 | "@algolia/requester-browser-xhr": "4.12.1",
2660 | "@algolia/requester-common": "4.12.1",
2661 | "@algolia/requester-node-http": "4.12.1",
2662 | "@algolia/transporter": "4.12.1"
2663 | }
2664 | },
2665 | "anymatch": {
2666 | "version": "3.1.2",
2667 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
2668 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
2669 | "dev": true,
2670 | "requires": {
2671 | "normalize-path": "^3.0.0",
2672 | "picomatch": "^2.0.4"
2673 | }
2674 | },
2675 | "asap": {
2676 | "version": "2.0.6",
2677 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
2678 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
2679 | "dev": true
2680 | },
2681 | "assert-never": {
2682 | "version": "1.2.1",
2683 | "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
2684 | "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==",
2685 | "dev": true
2686 | },
2687 | "babel-walk": {
2688 | "version": "3.0.0-canary-5",
2689 | "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
2690 | "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
2691 | "dev": true,
2692 | "requires": {
2693 | "@babel/types": "^7.9.6"
2694 | }
2695 | },
2696 | "balanced-match": {
2697 | "version": "1.0.2",
2698 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2699 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2700 | "dev": true
2701 | },
2702 | "binary-extensions": {
2703 | "version": "2.2.0",
2704 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
2705 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
2706 | "dev": true
2707 | },
2708 | "brace-expansion": {
2709 | "version": "1.1.11",
2710 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2711 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2712 | "dev": true,
2713 | "requires": {
2714 | "balanced-match": "^1.0.0",
2715 | "concat-map": "0.0.1"
2716 | }
2717 | },
2718 | "braces": {
2719 | "version": "3.0.2",
2720 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
2721 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
2722 | "dev": true,
2723 | "requires": {
2724 | "fill-range": "^7.0.1"
2725 | }
2726 | },
2727 | "call-bind": {
2728 | "version": "1.0.2",
2729 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
2730 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
2731 | "dev": true,
2732 | "requires": {
2733 | "function-bind": "^1.1.1",
2734 | "get-intrinsic": "^1.0.2"
2735 | }
2736 | },
2737 | "character-parser": {
2738 | "version": "2.2.0",
2739 | "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
2740 | "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
2741 | "dev": true,
2742 | "requires": {
2743 | "is-regex": "^1.0.3"
2744 | }
2745 | },
2746 | "chokidar": {
2747 | "version": "3.5.3",
2748 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
2749 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
2750 | "dev": true,
2751 | "requires": {
2752 | "anymatch": "~3.1.2",
2753 | "braces": "~3.0.2",
2754 | "fsevents": "~2.3.2",
2755 | "glob-parent": "~5.1.2",
2756 | "is-binary-path": "~2.1.0",
2757 | "is-glob": "~4.0.1",
2758 | "normalize-path": "~3.0.0",
2759 | "readdirp": "~3.6.0"
2760 | }
2761 | },
2762 | "concat-map": {
2763 | "version": "0.0.1",
2764 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2765 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
2766 | "dev": true
2767 | },
2768 | "constantinople": {
2769 | "version": "4.0.1",
2770 | "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
2771 | "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
2772 | "dev": true,
2773 | "requires": {
2774 | "@babel/parser": "^7.6.0",
2775 | "@babel/types": "^7.6.1"
2776 | }
2777 | },
2778 | "csstype": {
2779 | "version": "2.6.19",
2780 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
2781 | "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==",
2782 | "dev": true
2783 | },
2784 | "doctypes": {
2785 | "version": "1.1.0",
2786 | "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
2787 | "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=",
2788 | "dev": true
2789 | },
2790 | "dom-serializer": {
2791 | "version": "1.3.2",
2792 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
2793 | "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
2794 | "dev": true,
2795 | "requires": {
2796 | "domelementtype": "^2.0.1",
2797 | "domhandler": "^4.2.0",
2798 | "entities": "^2.0.0"
2799 | },
2800 | "dependencies": {
2801 | "entities": {
2802 | "version": "2.2.0",
2803 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
2804 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
2805 | "dev": true
2806 | }
2807 | }
2808 | },
2809 | "domelementtype": {
2810 | "version": "2.2.0",
2811 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
2812 | "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
2813 | "dev": true
2814 | },
2815 | "domhandler": {
2816 | "version": "4.3.0",
2817 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
2818 | "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
2819 | "dev": true,
2820 | "requires": {
2821 | "domelementtype": "^2.2.0"
2822 | }
2823 | },
2824 | "domutils": {
2825 | "version": "2.8.0",
2826 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
2827 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
2828 | "dev": true,
2829 | "requires": {
2830 | "dom-serializer": "^1.0.1",
2831 | "domelementtype": "^2.2.0",
2832 | "domhandler": "^4.2.0"
2833 | }
2834 | },
2835 | "emmet": {
2836 | "version": "2.3.5",
2837 | "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.3.5.tgz",
2838 | "integrity": "sha512-LcWfTamJnXIdMfLvJEC5Ld3hY5/KHXgv1L1bp6I7eEvB0ZhacHZ1kX0BYovJ8FroEsreLcq7n7kZhRMsf6jkXQ==",
2839 | "dev": true,
2840 | "requires": {
2841 | "@emmetio/abbreviation": "^2.2.2",
2842 | "@emmetio/css-abbreviation": "^2.1.4"
2843 | }
2844 | },
2845 | "entities": {
2846 | "version": "3.0.1",
2847 | "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
2848 | "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
2849 | "dev": true
2850 | },
2851 | "esbuild": {
2852 | "version": "0.13.15",
2853 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz",
2854 | "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==",
2855 | "dev": true,
2856 | "requires": {
2857 | "esbuild-android-arm64": "0.13.15",
2858 | "esbuild-darwin-64": "0.13.15",
2859 | "esbuild-darwin-arm64": "0.13.15",
2860 | "esbuild-freebsd-64": "0.13.15",
2861 | "esbuild-freebsd-arm64": "0.13.15",
2862 | "esbuild-linux-32": "0.13.15",
2863 | "esbuild-linux-64": "0.13.15",
2864 | "esbuild-linux-arm": "0.13.15",
2865 | "esbuild-linux-arm64": "0.13.15",
2866 | "esbuild-linux-mips64le": "0.13.15",
2867 | "esbuild-linux-ppc64le": "0.13.15",
2868 | "esbuild-netbsd-64": "0.13.15",
2869 | "esbuild-openbsd-64": "0.13.15",
2870 | "esbuild-sunos-64": "0.13.15",
2871 | "esbuild-windows-32": "0.13.15",
2872 | "esbuild-windows-64": "0.13.15",
2873 | "esbuild-windows-arm64": "0.13.15"
2874 | }
2875 | },
2876 | "esbuild-android-arm64": {
2877 | "version": "0.13.15",
2878 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz",
2879 | "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==",
2880 | "dev": true,
2881 | "optional": true
2882 | },
2883 | "esbuild-darwin-64": {
2884 | "version": "0.13.15",
2885 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz",
2886 | "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==",
2887 | "dev": true,
2888 | "optional": true
2889 | },
2890 | "esbuild-darwin-arm64": {
2891 | "version": "0.13.15",
2892 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz",
2893 | "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==",
2894 | "dev": true,
2895 | "optional": true
2896 | },
2897 | "esbuild-freebsd-64": {
2898 | "version": "0.13.15",
2899 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz",
2900 | "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==",
2901 | "dev": true,
2902 | "optional": true
2903 | },
2904 | "esbuild-freebsd-arm64": {
2905 | "version": "0.13.15",
2906 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz",
2907 | "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==",
2908 | "dev": true,
2909 | "optional": true
2910 | },
2911 | "esbuild-linux-32": {
2912 | "version": "0.13.15",
2913 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz",
2914 | "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==",
2915 | "dev": true,
2916 | "optional": true
2917 | },
2918 | "esbuild-linux-64": {
2919 | "version": "0.13.15",
2920 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz",
2921 | "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==",
2922 | "dev": true,
2923 | "optional": true
2924 | },
2925 | "esbuild-linux-arm": {
2926 | "version": "0.13.15",
2927 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz",
2928 | "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==",
2929 | "dev": true,
2930 | "optional": true
2931 | },
2932 | "esbuild-linux-arm64": {
2933 | "version": "0.13.15",
2934 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz",
2935 | "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==",
2936 | "dev": true,
2937 | "optional": true
2938 | },
2939 | "esbuild-linux-mips64le": {
2940 | "version": "0.13.15",
2941 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz",
2942 | "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==",
2943 | "dev": true,
2944 | "optional": true
2945 | },
2946 | "esbuild-linux-ppc64le": {
2947 | "version": "0.13.15",
2948 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz",
2949 | "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==",
2950 | "dev": true,
2951 | "optional": true
2952 | },
2953 | "esbuild-netbsd-64": {
2954 | "version": "0.13.15",
2955 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz",
2956 | "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==",
2957 | "dev": true,
2958 | "optional": true
2959 | },
2960 | "esbuild-openbsd-64": {
2961 | "version": "0.13.15",
2962 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz",
2963 | "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==",
2964 | "dev": true,
2965 | "optional": true
2966 | },
2967 | "esbuild-sunos-64": {
2968 | "version": "0.13.15",
2969 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz",
2970 | "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==",
2971 | "dev": true,
2972 | "optional": true
2973 | },
2974 | "esbuild-windows-32": {
2975 | "version": "0.13.15",
2976 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz",
2977 | "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==",
2978 | "dev": true,
2979 | "optional": true
2980 | },
2981 | "esbuild-windows-64": {
2982 | "version": "0.13.15",
2983 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz",
2984 | "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==",
2985 | "dev": true,
2986 | "optional": true
2987 | },
2988 | "esbuild-windows-arm64": {
2989 | "version": "0.13.15",
2990 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz",
2991 | "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==",
2992 | "dev": true,
2993 | "optional": true
2994 | },
2995 | "estree-walker": {
2996 | "version": "2.0.2",
2997 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
2998 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
2999 | "dev": true
3000 | },
3001 | "fill-range": {
3002 | "version": "7.0.1",
3003 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
3004 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
3005 | "dev": true,
3006 | "requires": {
3007 | "to-regex-range": "^5.0.1"
3008 | }
3009 | },
3010 | "fs.realpath": {
3011 | "version": "1.0.0",
3012 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
3013 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
3014 | "dev": true
3015 | },
3016 | "fsevents": {
3017 | "version": "2.3.2",
3018 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
3019 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
3020 | "dev": true,
3021 | "optional": true
3022 | },
3023 | "function-bind": {
3024 | "version": "1.1.1",
3025 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
3026 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
3027 | "dev": true
3028 | },
3029 | "get-intrinsic": {
3030 | "version": "1.1.1",
3031 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
3032 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
3033 | "dev": true,
3034 | "requires": {
3035 | "function-bind": "^1.1.1",
3036 | "has": "^1.0.3",
3037 | "has-symbols": "^1.0.1"
3038 | }
3039 | },
3040 | "glob": {
3041 | "version": "7.2.0",
3042 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
3043 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
3044 | "dev": true,
3045 | "requires": {
3046 | "fs.realpath": "^1.0.0",
3047 | "inflight": "^1.0.4",
3048 | "inherits": "2",
3049 | "minimatch": "^3.0.4",
3050 | "once": "^1.3.0",
3051 | "path-is-absolute": "^1.0.0"
3052 | }
3053 | },
3054 | "glob-parent": {
3055 | "version": "5.1.2",
3056 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
3057 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
3058 | "dev": true,
3059 | "requires": {
3060 | "is-glob": "^4.0.1"
3061 | }
3062 | },
3063 | "has": {
3064 | "version": "1.0.3",
3065 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
3066 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
3067 | "dev": true,
3068 | "requires": {
3069 | "function-bind": "^1.1.1"
3070 | }
3071 | },
3072 | "has-symbols": {
3073 | "version": "1.0.2",
3074 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
3075 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
3076 | "dev": true
3077 | },
3078 | "has-tostringtag": {
3079 | "version": "1.0.0",
3080 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
3081 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
3082 | "dev": true,
3083 | "requires": {
3084 | "has-symbols": "^1.0.2"
3085 | }
3086 | },
3087 | "htmlparser2": {
3088 | "version": "7.2.0",
3089 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
3090 | "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
3091 | "dev": true,
3092 | "requires": {
3093 | "domelementtype": "^2.0.1",
3094 | "domhandler": "^4.2.2",
3095 | "domutils": "^2.8.0",
3096 | "entities": "^3.0.1"
3097 | }
3098 | },
3099 | "immutable": {
3100 | "version": "4.0.0",
3101 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
3102 | "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
3103 | "dev": true
3104 | },
3105 | "inflight": {
3106 | "version": "1.0.6",
3107 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
3108 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
3109 | "dev": true,
3110 | "requires": {
3111 | "once": "^1.3.0",
3112 | "wrappy": "1"
3113 | }
3114 | },
3115 | "inherits": {
3116 | "version": "2.0.4",
3117 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3118 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
3119 | "dev": true
3120 | },
3121 | "is-binary-path": {
3122 | "version": "2.1.0",
3123 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
3124 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
3125 | "dev": true,
3126 | "requires": {
3127 | "binary-extensions": "^2.0.0"
3128 | }
3129 | },
3130 | "is-core-module": {
3131 | "version": "2.8.1",
3132 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
3133 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
3134 | "dev": true,
3135 | "requires": {
3136 | "has": "^1.0.3"
3137 | }
3138 | },
3139 | "is-expression": {
3140 | "version": "4.0.0",
3141 | "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
3142 | "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
3143 | "dev": true,
3144 | "requires": {
3145 | "acorn": "^7.1.1",
3146 | "object-assign": "^4.1.1"
3147 | }
3148 | },
3149 | "is-extglob": {
3150 | "version": "2.1.1",
3151 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
3152 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
3153 | "dev": true
3154 | },
3155 | "is-glob": {
3156 | "version": "4.0.3",
3157 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
3158 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
3159 | "dev": true,
3160 | "requires": {
3161 | "is-extglob": "^2.1.1"
3162 | }
3163 | },
3164 | "is-number": {
3165 | "version": "7.0.0",
3166 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
3167 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
3168 | "dev": true
3169 | },
3170 | "is-promise": {
3171 | "version": "2.2.2",
3172 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
3173 | "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
3174 | "dev": true
3175 | },
3176 | "is-regex": {
3177 | "version": "1.1.4",
3178 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
3179 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
3180 | "dev": true,
3181 | "requires": {
3182 | "call-bind": "^1.0.2",
3183 | "has-tostringtag": "^1.0.0"
3184 | }
3185 | },
3186 | "js-stringify": {
3187 | "version": "1.0.2",
3188 | "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
3189 | "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=",
3190 | "dev": true
3191 | },
3192 | "js-tokens": {
3193 | "version": "4.0.0",
3194 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
3195 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
3196 | "dev": true,
3197 | "peer": true
3198 | },
3199 | "jsonc-parser": {
3200 | "version": "2.3.1",
3201 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
3202 | "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
3203 | "dev": true
3204 | },
3205 | "jstransformer": {
3206 | "version": "1.0.0",
3207 | "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
3208 | "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
3209 | "dev": true,
3210 | "requires": {
3211 | "is-promise": "^2.0.0",
3212 | "promise": "^7.0.1"
3213 | }
3214 | },
3215 | "lamejstmp": {
3216 | "version": "1.0.1",
3217 | "resolved": "https://registry.npmjs.org/lamejstmp/-/lamejstmp-1.0.1.tgz",
3218 | "integrity": "sha512-eEENqMTpiDNTaeOWWbv58KVT4uh9tP7XqpG+aODm9U2eRHwH8Hsx3OnNKxd3noVN6cHmQomv5HQ9N7tzTSVxNQ==",
3219 | "dev": true,
3220 | "requires": {
3221 | "use-strict": "1.0.1"
3222 | }
3223 | },
3224 | "loose-envify": {
3225 | "version": "1.4.0",
3226 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
3227 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
3228 | "dev": true,
3229 | "peer": true,
3230 | "requires": {
3231 | "js-tokens": "^3.0.0 || ^4.0.0"
3232 | }
3233 | },
3234 | "lru-cache": {
3235 | "version": "6.0.0",
3236 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
3237 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
3238 | "dev": true,
3239 | "requires": {
3240 | "yallist": "^4.0.0"
3241 | }
3242 | },
3243 | "magic-string": {
3244 | "version": "0.25.7",
3245 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
3246 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
3247 | "dev": true,
3248 | "requires": {
3249 | "sourcemap-codec": "^1.4.4"
3250 | }
3251 | },
3252 | "minimatch": {
3253 | "version": "3.1.1",
3254 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.1.tgz",
3255 | "integrity": "sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A==",
3256 | "dev": true,
3257 | "requires": {
3258 | "brace-expansion": "^1.1.7"
3259 | }
3260 | },
3261 | "nanoid": {
3262 | "version": "3.2.0",
3263 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
3264 | "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
3265 | "dev": true
3266 | },
3267 | "normalize-path": {
3268 | "version": "3.0.0",
3269 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
3270 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
3271 | "dev": true
3272 | },
3273 | "object-assign": {
3274 | "version": "4.1.1",
3275 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3276 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3277 | "dev": true
3278 | },
3279 | "once": {
3280 | "version": "1.4.0",
3281 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3282 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3283 | "dev": true,
3284 | "requires": {
3285 | "wrappy": "1"
3286 | }
3287 | },
3288 | "path-is-absolute": {
3289 | "version": "1.0.1",
3290 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3291 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3292 | "dev": true
3293 | },
3294 | "path-parse": {
3295 | "version": "1.0.7",
3296 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3297 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
3298 | "dev": true
3299 | },
3300 | "picocolors": {
3301 | "version": "1.0.0",
3302 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
3303 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
3304 | "dev": true
3305 | },
3306 | "picomatch": {
3307 | "version": "2.3.1",
3308 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
3309 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
3310 | "dev": true
3311 | },
3312 | "postcss": {
3313 | "version": "8.4.6",
3314 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
3315 | "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
3316 | "dev": true,
3317 | "requires": {
3318 | "nanoid": "^3.2.0",
3319 | "picocolors": "^1.0.0",
3320 | "source-map-js": "^1.0.2"
3321 | }
3322 | },
3323 | "preact": {
3324 | "version": "10.6.5",
3325 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.6.5.tgz",
3326 | "integrity": "sha512-i+LXM6JiVjQXSt2jG2vZZFapGpCuk1fl8o6ii3G84MA3xgj686FKjs4JFDkmUVhtxyq21+4ay74zqPykz9hU6w==",
3327 | "dev": true
3328 | },
3329 | "prismjs": {
3330 | "version": "1.27.0",
3331 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
3332 | "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
3333 | "dev": true
3334 | },
3335 | "promise": {
3336 | "version": "7.3.1",
3337 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
3338 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
3339 | "dev": true,
3340 | "requires": {
3341 | "asap": "~2.0.3"
3342 | }
3343 | },
3344 | "pug": {
3345 | "version": "3.0.2",
3346 | "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz",
3347 | "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==",
3348 | "dev": true,
3349 | "requires": {
3350 | "pug-code-gen": "^3.0.2",
3351 | "pug-filters": "^4.0.0",
3352 | "pug-lexer": "^5.0.1",
3353 | "pug-linker": "^4.0.0",
3354 | "pug-load": "^3.0.0",
3355 | "pug-parser": "^6.0.0",
3356 | "pug-runtime": "^3.0.1",
3357 | "pug-strip-comments": "^2.0.0"
3358 | }
3359 | },
3360 | "pug-attrs": {
3361 | "version": "3.0.0",
3362 | "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
3363 | "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
3364 | "dev": true,
3365 | "requires": {
3366 | "constantinople": "^4.0.1",
3367 | "js-stringify": "^1.0.2",
3368 | "pug-runtime": "^3.0.0"
3369 | }
3370 | },
3371 | "pug-code-gen": {
3372 | "version": "3.0.2",
3373 | "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz",
3374 | "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==",
3375 | "dev": true,
3376 | "requires": {
3377 | "constantinople": "^4.0.1",
3378 | "doctypes": "^1.1.0",
3379 | "js-stringify": "^1.0.2",
3380 | "pug-attrs": "^3.0.0",
3381 | "pug-error": "^2.0.0",
3382 | "pug-runtime": "^3.0.0",
3383 | "void-elements": "^3.1.0",
3384 | "with": "^7.0.0"
3385 | }
3386 | },
3387 | "pug-error": {
3388 | "version": "2.0.0",
3389 | "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
3390 | "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==",
3391 | "dev": true
3392 | },
3393 | "pug-filters": {
3394 | "version": "4.0.0",
3395 | "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
3396 | "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
3397 | "dev": true,
3398 | "requires": {
3399 | "constantinople": "^4.0.1",
3400 | "jstransformer": "1.0.0",
3401 | "pug-error": "^2.0.0",
3402 | "pug-walk": "^2.0.0",
3403 | "resolve": "^1.15.1"
3404 | }
3405 | },
3406 | "pug-lexer": {
3407 | "version": "5.0.1",
3408 | "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
3409 | "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
3410 | "dev": true,
3411 | "requires": {
3412 | "character-parser": "^2.2.0",
3413 | "is-expression": "^4.0.0",
3414 | "pug-error": "^2.0.0"
3415 | }
3416 | },
3417 | "pug-linker": {
3418 | "version": "4.0.0",
3419 | "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
3420 | "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
3421 | "dev": true,
3422 | "requires": {
3423 | "pug-error": "^2.0.0",
3424 | "pug-walk": "^2.0.0"
3425 | }
3426 | },
3427 | "pug-load": {
3428 | "version": "3.0.0",
3429 | "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
3430 | "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
3431 | "dev": true,
3432 | "requires": {
3433 | "object-assign": "^4.1.1",
3434 | "pug-walk": "^2.0.0"
3435 | }
3436 | },
3437 | "pug-parser": {
3438 | "version": "6.0.0",
3439 | "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
3440 | "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
3441 | "dev": true,
3442 | "requires": {
3443 | "pug-error": "^2.0.0",
3444 | "token-stream": "1.0.0"
3445 | }
3446 | },
3447 | "pug-runtime": {
3448 | "version": "3.0.1",
3449 | "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
3450 | "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
3451 | "dev": true
3452 | },
3453 | "pug-strip-comments": {
3454 | "version": "2.0.0",
3455 | "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
3456 | "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
3457 | "dev": true,
3458 | "requires": {
3459 | "pug-error": "^2.0.0"
3460 | }
3461 | },
3462 | "pug-walk": {
3463 | "version": "2.0.0",
3464 | "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
3465 | "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
3466 | "dev": true
3467 | },
3468 | "react": {
3469 | "version": "17.0.2",
3470 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
3471 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
3472 | "dev": true,
3473 | "peer": true,
3474 | "requires": {
3475 | "loose-envify": "^1.1.0",
3476 | "object-assign": "^4.1.1"
3477 | }
3478 | },
3479 | "react-dom": {
3480 | "version": "17.0.2",
3481 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
3482 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
3483 | "dev": true,
3484 | "peer": true,
3485 | "requires": {
3486 | "loose-envify": "^1.1.0",
3487 | "object-assign": "^4.1.1",
3488 | "scheduler": "^0.20.2"
3489 | }
3490 | },
3491 | "readdirp": {
3492 | "version": "3.6.0",
3493 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
3494 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
3495 | "dev": true,
3496 | "requires": {
3497 | "picomatch": "^2.2.1"
3498 | }
3499 | },
3500 | "request-light": {
3501 | "version": "0.5.7",
3502 | "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.7.tgz",
3503 | "integrity": "sha512-i/wKzvcx7Er8tZnvqSxWuNO5ZGggu2UgZAqj/RyZ0si7lBTXL7kZiI/dWxzxnQjaY7s5HEy1qK21Do4Ncr6cVw==",
3504 | "dev": true
3505 | },
3506 | "resolve": {
3507 | "version": "1.22.0",
3508 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
3509 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
3510 | "dev": true,
3511 | "requires": {
3512 | "is-core-module": "^2.8.1",
3513 | "path-parse": "^1.0.7",
3514 | "supports-preserve-symlinks-flag": "^1.0.0"
3515 | }
3516 | },
3517 | "rimraf": {
3518 | "version": "3.0.2",
3519 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
3520 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
3521 | "dev": true,
3522 | "requires": {
3523 | "glob": "^7.1.3"
3524 | }
3525 | },
3526 | "rollup": {
3527 | "version": "2.67.0",
3528 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz",
3529 | "integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==",
3530 | "dev": true,
3531 | "requires": {
3532 | "fsevents": "~2.3.2"
3533 | }
3534 | },
3535 | "sass": {
3536 | "version": "1.49.7",
3537 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.7.tgz",
3538 | "integrity": "sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ==",
3539 | "dev": true,
3540 | "requires": {
3541 | "chokidar": ">=3.0.0 <4.0.0",
3542 | "immutable": "^4.0.0",
3543 | "source-map-js": ">=0.6.2 <2.0.0"
3544 | }
3545 | },
3546 | "scheduler": {
3547 | "version": "0.20.2",
3548 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
3549 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
3550 | "dev": true,
3551 | "peer": true,
3552 | "requires": {
3553 | "loose-envify": "^1.1.0",
3554 | "object-assign": "^4.1.1"
3555 | }
3556 | },
3557 | "semver": {
3558 | "version": "7.3.5",
3559 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
3560 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
3561 | "dev": true,
3562 | "requires": {
3563 | "lru-cache": "^6.0.0"
3564 | }
3565 | },
3566 | "source-map": {
3567 | "version": "0.6.1",
3568 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3569 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3570 | "dev": true
3571 | },
3572 | "source-map-js": {
3573 | "version": "1.0.2",
3574 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
3575 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
3576 | "dev": true
3577 | },
3578 | "sourcemap-codec": {
3579 | "version": "1.4.8",
3580 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
3581 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
3582 | "dev": true
3583 | },
3584 | "supports-preserve-symlinks-flag": {
3585 | "version": "1.0.0",
3586 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3587 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3588 | "dev": true
3589 | },
3590 | "to-fast-properties": {
3591 | "version": "2.0.0",
3592 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
3593 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
3594 | "dev": true
3595 | },
3596 | "to-regex-range": {
3597 | "version": "5.0.1",
3598 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3599 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3600 | "dev": true,
3601 | "requires": {
3602 | "is-number": "^7.0.0"
3603 | }
3604 | },
3605 | "token-stream": {
3606 | "version": "1.0.0",
3607 | "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
3608 | "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=",
3609 | "dev": true
3610 | },
3611 | "typescript": {
3612 | "version": "4.5.5",
3613 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
3614 | "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
3615 | "dev": true
3616 | },
3617 | "upath": {
3618 | "version": "2.0.1",
3619 | "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
3620 | "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
3621 | "dev": true
3622 | },
3623 | "use-strict": {
3624 | "version": "1.0.1",
3625 | "resolved": "https://registry.npmjs.org/use-strict/-/use-strict-1.0.1.tgz",
3626 | "integrity": "sha512-IeiWvvEXfW5ltKVMkxq6FvNf2LojMKvB2OCeja6+ct24S1XOmQw2dGr2JyndwACWAGJva9B7yPHwAmeA9QCqAQ==",
3627 | "dev": true
3628 | },
3629 | "vite": {
3630 | "version": "2.7.13",
3631 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.13.tgz",
3632 | "integrity": "sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==",
3633 | "dev": true,
3634 | "requires": {
3635 | "esbuild": "^0.13.12",
3636 | "fsevents": "~2.3.2",
3637 | "postcss": "^8.4.5",
3638 | "resolve": "^1.20.0",
3639 | "rollup": "^2.59.0"
3640 | }
3641 | },
3642 | "vitepress": {
3643 | "version": "0.21.6",
3644 | "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.21.6.tgz",
3645 | "integrity": "sha512-OzwD2cTfvoK5VKV0UWSqu4XvUOz4vWFJ4Bdi0z8GoVkTFXkfmbFawEDVXAZwzu0Hn4/VLopgmEyooc91iGKFlg==",
3646 | "dev": true,
3647 | "requires": {
3648 | "@docsearch/css": "^3.0.0-alpha.41",
3649 | "@docsearch/js": "^3.0.0-alpha.41",
3650 | "@vitejs/plugin-vue": "^2.0.0",
3651 | "prismjs": "^1.25.0",
3652 | "vite": "^2.7.12",
3653 | "vue": "^3.2.27"
3654 | }
3655 | },
3656 | "void-elements": {
3657 | "version": "3.1.0",
3658 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
3659 | "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=",
3660 | "dev": true
3661 | },
3662 | "vscode-css-languageservice": {
3663 | "version": "5.1.12",
3664 | "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-5.1.12.tgz",
3665 | "integrity": "sha512-293C5C2732Rbhh3opTs+nQBpC5Dd+oYrEA8lc0OWdyt40oYmJ331FV7NMF1SLFSIcOFB5XveLiWUZak2oyc49Q==",
3666 | "dev": true,
3667 | "requires": {
3668 | "vscode-languageserver-textdocument": "^1.0.1",
3669 | "vscode-languageserver-types": "^3.16.0",
3670 | "vscode-nls": "^5.0.0",
3671 | "vscode-uri": "^3.0.2"
3672 | },
3673 | "dependencies": {
3674 | "vscode-languageserver-types": {
3675 | "version": "3.16.0",
3676 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
3677 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
3678 | "dev": true
3679 | }
3680 | }
3681 | },
3682 | "vscode-html-languageservice": {
3683 | "version": "4.2.1",
3684 | "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-4.2.1.tgz",
3685 | "integrity": "sha512-PgaToZVXJ44nFWEBuSINdDgVV6EnpC3MnXBsysR3O5TKcAfywbYeRGRy+Y4dVR7YeUgDvtb+JkJoSkaYC0mxXQ==",
3686 | "dev": true,
3687 | "requires": {
3688 | "vscode-languageserver-textdocument": "^1.0.1",
3689 | "vscode-languageserver-types": "^3.16.0",
3690 | "vscode-nls": "^5.0.0",
3691 | "vscode-uri": "^3.0.2"
3692 | },
3693 | "dependencies": {
3694 | "vscode-languageserver-types": {
3695 | "version": "3.16.0",
3696 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
3697 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
3698 | "dev": true
3699 | }
3700 | }
3701 | },
3702 | "vscode-json-languageservice": {
3703 | "version": "4.2.0",
3704 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.2.0.tgz",
3705 | "integrity": "sha512-XNawv0Vdy/sUK0S+hGf7cq/qsVAbIniGJr89TvZOqMCNJmpgKTy1e8PL1aWW0uy6BfWMG7vxa5lZb3ypuFtuGQ==",
3706 | "dev": true,
3707 | "requires": {
3708 | "jsonc-parser": "^3.0.0",
3709 | "vscode-languageserver-textdocument": "^1.0.3",
3710 | "vscode-languageserver-types": "^3.16.0",
3711 | "vscode-nls": "^5.0.0",
3712 | "vscode-uri": "^3.0.3"
3713 | },
3714 | "dependencies": {
3715 | "jsonc-parser": {
3716 | "version": "3.0.0",
3717 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
3718 | "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
3719 | "dev": true
3720 | },
3721 | "vscode-languageserver-types": {
3722 | "version": "3.16.0",
3723 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
3724 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
3725 | "dev": true
3726 | }
3727 | }
3728 | },
3729 | "vscode-jsonrpc": {
3730 | "version": "8.0.0-next.6",
3731 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.6.tgz",
3732 | "integrity": "sha512-6Ld3RYjygn5Ih7CkAtcAwiDQC+rakj2O+PnASfNyYv3sLmm44eJpEKzuPUN30Iy2UB09AZg8T6LBKWTJTEJDVw==",
3733 | "dev": true
3734 | },
3735 | "vscode-languageserver": {
3736 | "version": "8.0.0-next.8",
3737 | "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.0-next.8.tgz",
3738 | "integrity": "sha512-Gq0uqKbOgw7YNwPxMoNCeh7mHKMhG5j6EuoSh+w5pnKd7Eu9a74cagqf9aZDVFWW6GRpqR/Z+1o6EXqDK+g2Tg==",
3739 | "dev": true,
3740 | "requires": {
3741 | "vscode-languageserver-protocol": "3.17.0-next.14"
3742 | }
3743 | },
3744 | "vscode-languageserver-protocol": {
3745 | "version": "3.17.0-next.14",
3746 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.14.tgz",
3747 | "integrity": "sha512-iangobY8dL6sFZkOx4OhRPJM9gN0I1caUsOVR+MnPozsqQUtwMXmbIcfaIf0Akp0pd3KhJDPf/tdwRX68QGeeA==",
3748 | "dev": true,
3749 | "requires": {
3750 | "vscode-jsonrpc": "8.0.0-next.6",
3751 | "vscode-languageserver-types": "3.17.0-next.7"
3752 | }
3753 | },
3754 | "vscode-languageserver-textdocument": {
3755 | "version": "1.0.4",
3756 | "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz",
3757 | "integrity": "sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==",
3758 | "dev": true
3759 | },
3760 | "vscode-languageserver-types": {
3761 | "version": "3.17.0-next.7",
3762 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.7.tgz",
3763 | "integrity": "sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg==",
3764 | "dev": true
3765 | },
3766 | "vscode-nls": {
3767 | "version": "5.0.0",
3768 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz",
3769 | "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==",
3770 | "dev": true
3771 | },
3772 | "vscode-pug-languageservice": {
3773 | "version": "0.29.8",
3774 | "resolved": "https://registry.npmjs.org/vscode-pug-languageservice/-/vscode-pug-languageservice-0.29.8.tgz",
3775 | "integrity": "sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==",
3776 | "dev": true,
3777 | "requires": {
3778 | "@volar/code-gen": "0.29.8",
3779 | "@volar/shared": "0.29.8",
3780 | "@volar/source-map": "0.29.8",
3781 | "@volar/transforms": "0.29.8",
3782 | "pug-lexer": "^5.0.1",
3783 | "pug-parser": "^6.0.0",
3784 | "vscode-languageserver": "^8.0.0-next.2"
3785 | }
3786 | },
3787 | "vscode-typescript-languageservice": {
3788 | "version": "0.29.8",
3789 | "resolved": "https://registry.npmjs.org/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.29.8.tgz",
3790 | "integrity": "sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==",
3791 | "dev": true,
3792 | "requires": {
3793 | "@volar/shared": "0.29.8",
3794 | "semver": "^7.3.5",
3795 | "upath": "^2.0.1",
3796 | "vscode-languageserver": "^8.0.0-next.2",
3797 | "vscode-languageserver-textdocument": "^1.0.1"
3798 | }
3799 | },
3800 | "vscode-uri": {
3801 | "version": "3.0.3",
3802 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.3.tgz",
3803 | "integrity": "sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==",
3804 | "dev": true
3805 | },
3806 | "vscode-vue-languageservice": {
3807 | "version": "0.29.8",
3808 | "resolved": "https://registry.npmjs.org/vscode-vue-languageservice/-/vscode-vue-languageservice-0.29.8.tgz",
3809 | "integrity": "sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==",
3810 | "dev": true,
3811 | "requires": {
3812 | "@volar/code-gen": "0.29.8",
3813 | "@volar/html2pug": "0.29.8",
3814 | "@volar/shared": "0.29.8",
3815 | "@volar/source-map": "0.29.8",
3816 | "@volar/transforms": "0.29.8",
3817 | "@volar/vue-code-gen": "0.29.8",
3818 | "@vscode/emmet-helper": "^2.8.0",
3819 | "@vue/reactivity": "^3.2.21",
3820 | "@vue/shared": "^3.2.21",
3821 | "request-light": "^0.5.4",
3822 | "upath": "^2.0.1",
3823 | "vscode-css-languageservice": "^5.1.7",
3824 | "vscode-html-languageservice": "^4.1.0",
3825 | "vscode-json-languageservice": "^4.1.8",
3826 | "vscode-languageserver": "^8.0.0-next.2",
3827 | "vscode-languageserver-textdocument": "^1.0.1",
3828 | "vscode-pug-languageservice": "0.29.8",
3829 | "vscode-typescript-languageservice": "0.29.8"
3830 | }
3831 | },
3832 | "vue": {
3833 | "version": "3.2.29",
3834 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.29.tgz",
3835 | "integrity": "sha512-cFIwr7LkbtCRanjNvh6r7wp2yUxfxeM2yPpDQpAfaaLIGZSrUmLbNiSze9nhBJt5MrZ68Iqt0O5scwAMEVxF+Q==",
3836 | "dev": true,
3837 | "requires": {
3838 | "@vue/compiler-dom": "3.2.29",
3839 | "@vue/compiler-sfc": "3.2.29",
3840 | "@vue/runtime-dom": "3.2.29",
3841 | "@vue/server-renderer": "3.2.29",
3842 | "@vue/shared": "3.2.29"
3843 | }
3844 | },
3845 | "vue-tsc": {
3846 | "version": "0.29.8",
3847 | "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.29.8.tgz",
3848 | "integrity": "sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==",
3849 | "dev": true,
3850 | "requires": {
3851 | "@volar/shared": "0.29.8",
3852 | "vscode-vue-languageservice": "0.29.8"
3853 | }
3854 | },
3855 | "with": {
3856 | "version": "7.0.2",
3857 | "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
3858 | "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
3859 | "dev": true,
3860 | "requires": {
3861 | "@babel/parser": "^7.9.6",
3862 | "@babel/types": "^7.9.6",
3863 | "assert-never": "^1.2.1",
3864 | "babel-walk": "3.0.0-canary-5"
3865 | }
3866 | },
3867 | "wrappy": {
3868 | "version": "1.0.2",
3869 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3870 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3871 | "dev": true
3872 | },
3873 | "yallist": {
3874 | "version": "4.0.0",
3875 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3876 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
3877 | "dev": true
3878 | }
3879 | }
3880 | }
3881 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-voice-recording",
3 | "version": "1.0.1",
4 | "scripts": {
5 | "build": "rimraf dist && vue-tsc && vite build",
6 | "docs:dev": "vitepress dev docs",
7 | "docs:build": "vitepress build docs",
8 | "docs:serve": "vitepress serve docs",
9 | "publish": "rimraf dist && vue-tsc && vite build && npm publish"
10 | },
11 | "peerDependencies": {
12 | "lamejstmp": "^1.0.1",
13 | "vue": "^3.2.25"
14 | },
15 | "devDependencies": {
16 | "@types/node": "^17.0.14",
17 | "@vitejs/plugin-vue": "^2.0.0",
18 | "lamejstmp": "^1.0.1",
19 | "rimraf": "^3.0.2",
20 | "sass": "^1.49.7",
21 | "typescript": "^4.4.4",
22 | "vite": "^2.7.2",
23 | "vitepress": "^0.21.6",
24 | "vue": "^3.2.25",
25 | "vue-tsc": "^0.29.8"
26 | },
27 | "files": [
28 | "src",
29 | "dist"
30 | ],
31 | "types": "./dist/types/index.d.ts",
32 | "module": "./dist/vue-voice-recorder.es.js",
33 | "exports": {
34 | ".": {
35 | "import": "./dist/vue-voice-recorder.es.js"
36 | },
37 | "./dist/style.css": "./dist/style.css"
38 | },
39 | "repository": "TheCoderDream/vue-voice-recording",
40 | "homepage": "https://github.com/TheCoderDream/vue-voice-recording",
41 | "license": "MIT",
42 | "description": "Microphone recorder for Vue",
43 | "keywords": [
44 | "vue",
45 | "vuejs",
46 | "vue3",
47 | "typescript",
48 | "mp3 recorder",
49 | "audio recorder",
50 | "vue audio recorder",
51 | "vue microphone recorder",
52 | "vue voice recorder"
53 | ]
54 | }
55 |
--------------------------------------------------------------------------------
/src/assets/fonts/myfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheCoderDream/vue-voice-recording/ff921b1c1cacd627f02318070298cc94a777c684/src/assets/fonts/myfont.woff
--------------------------------------------------------------------------------
/src/assets/main.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'myfont';
3 | src: url('fonts/myfont.woff');
4 | }
5 |
6 | [class^='icon-'],
7 | [class*=' icon-'] {
8 | font-family: 'myfont' !important;
9 | }
10 |
11 | .icon-heart:before {
12 | content: '\e9da';
13 | }
14 |
15 | .global-example {
16 | color: red;
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/VueVoiceRecording.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
16 |
29 |
30 |
31 | {{ recordingTime }}
32 |
33 |
34 |
35 |
{{ recordingState }}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
110 |
111 |
206 |
--------------------------------------------------------------------------------
/src/components/index.ts:
--------------------------------------------------------------------------------
1 | import VueVoiceRecording from './VueVoiceRecording.vue'
2 |
3 | export {
4 | VueVoiceRecording
5 | }
6 |
--------------------------------------------------------------------------------
/src/composables/index.ts:
--------------------------------------------------------------------------------
1 | import { useRecorder } from './useRecorder';
2 | import type { RecorderControls } from './useRecorder';
3 |
4 | export {
5 | useRecorder
6 | }
7 |
8 | export type {
9 | RecorderControls
10 | }
11 |
--------------------------------------------------------------------------------
/src/composables/useRecorder.ts:
--------------------------------------------------------------------------------
1 | import { computed, ref, Ref } from 'vue';
2 | import { MP3Encoder, AudioContext } from '../utils';
3 |
4 | export interface RecorderControls {
5 | startRecording: () => void;
6 | stopRecording: () => void;
7 | pauseRecording: () => void;
8 | resumeRecording: () => void;
9 | togglePauseAndResume: () => void;
10 | toggleStartAndStop: () => void;
11 | recordingBlob?: Ref;
12 | isRecording: Ref;
13 | isPaused: Ref;
14 | recordingTime: Ref;
15 | recordingState: Ref;
16 | }
17 |
18 | export interface RecorderEvents {
19 | afterStartRecording: () => void;
20 | afterStopRecording: (data: Blob) => void;
21 | afterPauseRecording: () => void;
22 | afterResumeRecording: () => void;
23 | getAsMp3: (value: { data: Blob, url: string}) => void;
24 | }
25 |
26 | const toHHMMSS = (seconds: number): string => {
27 | return new Date(seconds * 1000).toISOString().slice(11, 19)
28 | }
29 |
30 | export const useRecorder: (options?: Partial) => RecorderControls = (
31 | { afterStartRecording, afterStopRecording, afterPauseRecording, afterResumeRecording, getAsMp3 } = {}
32 | ) => {
33 | const isRecording = ref(false);
34 | const isPaused = ref(false);
35 | const mediaRecorder = ref();
36 | const timerInterval = ref(null);
37 | const recordingBlob = ref();
38 | const recordingState = ref('inactive');
39 | const audioContext = new (window.AudioContext ||
40 | window['webkitAudioContext'])();
41 | const mic = ref();
42 | const processor = ref();
43 | const activeStream = ref();
44 | const encoder = new MP3Encoder();
45 | const _recordingTime = ref(0);
46 | const recordingTime = computed(() => {
47 | return toHHMMSS(_recordingTime.value);
48 | })
49 |
50 | const _startTimer: () => void = () => {
51 | timerInterval.value = setInterval(() => {
52 | _recordingTime.value = _recordingTime.value + 1;
53 | }, 1000);
54 | };
55 |
56 | const _stopTimer: () => void = () => {
57 | timerInterval.value != null && clearInterval(timerInterval.value);
58 | timerInterval.value = null;
59 | };
60 |
61 | const toggleStartAndStop: () => void = () => {
62 | if (isRecording.value) {
63 | stopRecording();
64 | } else {
65 | startRecording();
66 | }
67 | }
68 |
69 | const startRecording: () => void = () => {
70 | if (timerInterval.value !== null) return;
71 |
72 | navigator.mediaDevices
73 | .getUserMedia({ audio: true })
74 | .then((stream) => {
75 | activeStream.value = stream;
76 | isRecording.value = true;
77 | const recorder: MediaRecorder = new MediaRecorder(stream);
78 | mediaRecorder.value = recorder;
79 | recorder.start();
80 | _startTimer();
81 | recordingState.value = 'recording';
82 | mic.value = audioContext.createMediaStreamSource(stream);
83 | processor.value = audioContext.createScriptProcessor(0, 1, 1);
84 | mic.value.connect(processor.value);
85 | processor.value.connect(audioContext.destination);
86 |
87 | processor.value.onaudioprocess = (event) => {
88 | encoder.encode(event.inputBuffer.getChannelData(0));
89 | };
90 |
91 | if (afterStartRecording) afterStartRecording();
92 |
93 | recorder.addEventListener('dataavailable', (event: BlobEvent) => {
94 | recordingBlob.value = event.data;
95 | recorder.stream.getTracks().forEach((t) => t.stop());
96 | mediaRecorder.value = null;
97 | if (afterStopRecording) afterStopRecording(event.data);
98 | if (getAsMp3) {
99 | getMp3().then((data) => getAsMp3({data, url: URL.createObjectURL(data)}));
100 | }
101 | });
102 | AudioContext.startAnalyze(stream);
103 | })
104 | .catch((err) => console.log(err));
105 | };
106 |
107 | const getMp3 = (): Promise => {
108 | const finalBuffer = encoder.finish();
109 |
110 | return new Promise((resolve, reject) => {
111 | if (finalBuffer.length === 0) {
112 | reject(new Error('No buffer to send'));
113 | } else {
114 | resolve(new Blob(finalBuffer, { type: 'audio/mp3' }));
115 | encoder.clearBuffer();
116 | }
117 | });
118 | };
119 |
120 | const stopRecording: () => void = () => {
121 | mediaRecorder.value?.stop();
122 | _stopTimer();
123 | _recordingTime.value = 0;
124 | isRecording.value = false;
125 | isPaused.value = false;
126 | recordingState.value = 'inactive';
127 | AudioContext.resetAnalyser();
128 |
129 | if (processor.value && mic.value) {
130 | mic.value.disconnect();
131 | processor.value.disconnect();
132 | if (audioContext && audioContext.state !== 'closed') {
133 | audioContext.close();
134 | }
135 | processor.value.onaudioprocess = null;
136 |
137 | activeStream.value?.getAudioTracks().forEach((track) => track.stop());
138 | }
139 | };
140 |
141 | const togglePauseAndResume: () => void = () => {
142 | if (isPaused.value) {
143 | resumeRecording();
144 | } else {
145 | pauseRecording();
146 | }
147 | };
148 |
149 | const pauseRecording: () => void = () => {
150 | isPaused.value = true;
151 | recordingState.value = 'paused';
152 | AudioContext.pauseAnalyze();
153 | mediaRecorder.value?.pause();
154 | audioContext.suspend();
155 | _stopTimer();
156 | if (afterPauseRecording) afterPauseRecording();
157 | }
158 |
159 | const resumeRecording: () => void = () => {
160 | isPaused.value = false;
161 | mediaRecorder.value?.resume();
162 | recordingState.value = 'recording';
163 | AudioContext.resumeAnalyze();
164 | audioContext.resume();
165 | _startTimer();
166 | if (afterResumeRecording) afterResumeRecording();
167 | }
168 |
169 | return {
170 | startRecording,
171 | stopRecording,
172 | togglePauseAndResume,
173 | pauseRecording,
174 | resumeRecording,
175 | toggleStartAndStop,
176 | recordingBlob,
177 | isRecording,
178 | isPaused,
179 | recordingTime,
180 | recordingState,
181 | };
182 | };
183 |
--------------------------------------------------------------------------------
/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare module '*.vue' {
4 | import { DefineComponent } from 'vue'
5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
6 | const component: DefineComponent<{}, {}, any>
7 | export default component
8 | }
9 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { App } from 'vue'
2 | import * as components from './components'
3 |
4 | function install (app: App) {
5 | for (const key in components) {
6 | // @ts-expect-error
7 | app.component(key, components[key])
8 | }
9 | }
10 |
11 | import './assets/main.scss'
12 |
13 | export default { install }
14 |
15 | export * from './components';
16 | export * from './utils';
17 | export * from './composables';
18 |
--------------------------------------------------------------------------------
/src/utils/audio-context.ts:
--------------------------------------------------------------------------------
1 | declare global {
2 | interface Window {
3 | webkitAudioContext: typeof AudioContext
4 | }
5 | }
6 |
7 | const audioCtx = new (window.AudioContext || window['webkitAudioContext'])();
8 | let analyser = audioCtx.createAnalyser();
9 |
10 | export const AudioContext = {
11 | getAudioContext(): AudioContext {
12 | return audioCtx;
13 | },
14 |
15 | startAnalyze(stream: MediaStream): void {
16 | const audioCtx = AudioContext.getAudioContext();
17 | audioCtx.resume().then(() => {
18 | const analyser = AudioContext.getAnalyser();
19 | const sourceNode = audioCtx.createMediaStreamSource(stream);
20 | sourceNode.connect(analyser);
21 | });
22 | },
23 |
24 | pauseAnalyze(): void {
25 | const audioCtx = AudioContext.getAudioContext();
26 | void audioCtx.suspend();
27 | },
28 |
29 | resumeAnalyze(): void {
30 | const audioCtx = AudioContext.getAudioContext();
31 | void audioCtx.resume();
32 | },
33 |
34 | getAnalyser(): AnalyserNode {
35 | return analyser;
36 | },
37 |
38 | resetAnalyser(): void {
39 | analyser = audioCtx.createAnalyser();
40 | },
41 | };
42 |
--------------------------------------------------------------------------------
/src/utils/audio-visualizer.ts:
--------------------------------------------------------------------------------
1 | import { AudioContext } from './audio-context';
2 |
3 | let drawVisual;
4 |
5 | export interface AudioVisualizationOptions {
6 | canvas: HTMLCanvasElement;
7 | width: number;
8 | height: number;
9 | backgroundColor: string;
10 | strokeColor: string;
11 | }
12 |
13 | const defaultOptions: Omit = {
14 | width: 300,
15 | height: 150,
16 | strokeColor: '#212121',
17 | backgroundColor: 'white',
18 | }
19 |
20 | export type AudioVisualizationType = 'SineWave' | 'FrequencyBars' | 'FrequencyCircles';
21 |
22 | type Args = Partial> & Pick;
23 |
24 | export const AudioVisualizer = {
25 | visualizeSineWave({
26 | canvas,
27 | backgroundColor,
28 | strokeColor,
29 | width,
30 | height,
31 | }: AudioVisualizationOptions): void {
32 | const canvasCtx = canvas.getContext('2d') as CanvasRenderingContext2D;
33 | let analyser = AudioContext.getAnalyser();
34 |
35 | const bufferLength = analyser.fftSize;
36 | const dataArray = new Uint8Array(bufferLength);
37 |
38 | canvasCtx.clearRect(0, 0, width, height);
39 |
40 | function draw(): void {
41 | drawVisual = requestAnimationFrame(draw);
42 |
43 | analyser = AudioContext.getAnalyser();
44 |
45 | analyser.getByteTimeDomainData(dataArray);
46 |
47 | canvasCtx.fillStyle = backgroundColor;
48 | canvasCtx.fillRect(0, 0, width, height);
49 |
50 | canvasCtx.lineWidth = 2;
51 | canvasCtx.strokeStyle = strokeColor;
52 |
53 | canvasCtx.beginPath();
54 |
55 | const sliceWidth = width / bufferLength;
56 | let x = 0;
57 |
58 | for (let i = 0; i < bufferLength; i++) {
59 | const v = dataArray[i] / 128.0;
60 | const y = (v * height) / 2;
61 |
62 | if (i === 0) {
63 | canvasCtx.moveTo(x, y);
64 | } else {
65 | canvasCtx.lineTo(x, y);
66 | }
67 |
68 | x += sliceWidth;
69 | }
70 |
71 | canvasCtx.lineTo(canvas.width, canvas.height / 2);
72 | canvasCtx.stroke();
73 | }
74 |
75 | draw();
76 | },
77 |
78 | visualizeFrequencyBars({
79 | canvas,
80 | backgroundColor,
81 | strokeColor,
82 | width,
83 | height,
84 | }: AudioVisualizationOptions): void {
85 | const canvasCtx = canvas.getContext('2d') as CanvasRenderingContext2D;
86 | let analyser = AudioContext.getAnalyser();
87 | analyser.fftSize = 256;
88 | const bufferLength = analyser.frequencyBinCount;
89 | const dataArray = new Uint8Array(bufferLength);
90 |
91 | canvasCtx.clearRect(0, 0, width, height);
92 |
93 | const draw = () => {
94 | drawVisual = requestAnimationFrame(draw);
95 |
96 | analyser = AudioContext.getAnalyser();
97 | analyser.getByteFrequencyData(dataArray);
98 |
99 | canvasCtx.fillStyle = backgroundColor;
100 | canvasCtx.fillRect(0, 0, width, height);
101 |
102 | const barWidth = (width / bufferLength) * 2.5;
103 | let barHeight;
104 | let x = 0;
105 |
106 | for (let i = 0; i < bufferLength; i++) {
107 | barHeight = dataArray[i];
108 |
109 | const rgb = this.hexToRgb(strokeColor);
110 |
111 | canvasCtx.fillStyle = strokeColor;
112 | canvasCtx.fillRect(x, height - barHeight / 2, barWidth, barHeight / 2);
113 |
114 | x += barWidth + 1;
115 | }
116 | };
117 |
118 | draw();
119 | },
120 |
121 | visualizeFrequencyCircles({
122 | canvas,
123 | backgroundColor,
124 | strokeColor,
125 | width,
126 | height,
127 | }: AudioVisualizationOptions): void {
128 | const canvasCtx = canvas.getContext('2d') as CanvasRenderingContext2D;
129 | let analyser = AudioContext.getAnalyser();
130 | analyser.fftSize = 32;
131 | const bufferLength = analyser.frequencyBinCount;
132 |
133 | const dataArray = new Uint8Array(bufferLength);
134 | canvasCtx.clearRect(0, 0, width, height);
135 |
136 | const draw = () => {
137 | drawVisual = requestAnimationFrame(draw);
138 | analyser = AudioContext.getAnalyser();
139 | analyser.getByteFrequencyData(dataArray);
140 | const reductionAmount = 3;
141 | const reducedDataArray = new Uint8Array(bufferLength / reductionAmount);
142 |
143 | for (let i = 0; i < bufferLength; i += reductionAmount) {
144 | let sum = 0;
145 | for (let j = 0; j < reductionAmount; j++) {
146 | sum += dataArray[i + j];
147 | }
148 | reducedDataArray[i / reductionAmount] = sum / reductionAmount;
149 | }
150 |
151 | canvasCtx.clearRect(0, 0, width, height);
152 | canvasCtx.beginPath();
153 | canvasCtx.arc(
154 | width / 2,
155 | height / 2,
156 | Math.min(height, width) / 2,
157 | 0,
158 | 2 * Math.PI
159 | );
160 | canvasCtx.fillStyle = backgroundColor;
161 | canvasCtx.fill();
162 | const stepSize = Math.min(height, width) / 2.0 / reducedDataArray.length;
163 | canvasCtx.strokeStyle = strokeColor;
164 |
165 | for (let i = 0; i < reducedDataArray.length; i++) {
166 | canvasCtx.beginPath();
167 | const normalized = reducedDataArray[i] / 128;
168 | const r = stepSize * i + stepSize * normalized;
169 | canvasCtx.arc(width / 2, height / 2, r, 0, 2 * Math.PI);
170 | canvasCtx.stroke();
171 | }
172 | };
173 | draw();
174 | },
175 |
176 | hexToRgb(hex: string): {r: number, g: number, b: number} | null {
177 | const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
178 | return result
179 | ? {
180 | r: parseInt(result[1], 16),
181 | g: parseInt(result[2], 16),
182 | b: parseInt(result[3], 16),
183 | }
184 | : null;
185 | },
186 |
187 | visualize(type: AudioVisualizationType | undefined, options: Args | undefined): void {
188 | this[`visualize${type || 'SineWave'}`]({
189 | ...defaultOptions,
190 | ...options
191 | } as AudioVisualizationOptions);
192 | }
193 | };
194 |
--------------------------------------------------------------------------------
/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | import { AudioContext } from './audio-context';
2 | import { AudioVisualizationOptions, AudioVisualizationType, AudioVisualizer } from './audio-visualizer';
3 | import { MP3Encoder } from './mp3-encoder';
4 |
5 | export {
6 | AudioContext,
7 | AudioVisualizer,
8 | MP3Encoder
9 | }
10 |
11 | export type {
12 | AudioVisualizationOptions,
13 | AudioVisualizationType
14 | }
15 |
--------------------------------------------------------------------------------
/src/utils/mp3-encoder.ts:
--------------------------------------------------------------------------------
1 | // @ts-ignore
2 | import { Mp3Encoder } from 'lamejstmp';
3 |
4 | interface Config {
5 | bitRate: number;
6 | sampleRate: number;
7 | }
8 |
9 | export class MP3Encoder {
10 | config: Config;
11 | mp3Encoder: Mp3Encoder;
12 | maxSamples: number;
13 | samplesMono: Int16Array | null;
14 | dataBuffer: Int8Array[] = [];
15 |
16 | constructor(config?: Config) {
17 | this.config = {
18 | sampleRate: 44100,
19 | bitRate: 128,
20 | };
21 |
22 | Object.assign(this.config, config);
23 |
24 | this.mp3Encoder = new Mp3Encoder(
25 | 1,
26 | this.config.sampleRate,
27 | this.config.bitRate
28 | );
29 |
30 | this.maxSamples = 1152;
31 |
32 | this.samplesMono = null;
33 | this.clearBuffer();
34 | }
35 |
36 | clearBuffer() {
37 | this.dataBuffer = [];
38 | }
39 |
40 | appendToBuffer(buffer: Iterable) {
41 | this.dataBuffer.push(new Int8Array(buffer));
42 | }
43 |
44 | floatTo16BitPCM(input: Float32Array, output: Int16Array) {
45 | for (let i = 0; i < input.length; i++) {
46 | const s = Math.max(-1, Math.min(1, input[i]));
47 | output[i] = s < 0 ? s * 0x8000 : s * 0x7fff;
48 | }
49 | }
50 |
51 | convertBuffer(arrayBuffer: Float32Array) {
52 | const data = new Float32Array(arrayBuffer);
53 | const out = new Int16Array(arrayBuffer.length);
54 | this.floatTo16BitPCM(data, out);
55 |
56 | return out;
57 | }
58 |
59 | encode(arrayBuffer: Float32Array) {
60 | this.samplesMono = this.convertBuffer(arrayBuffer);
61 | let remaining = this.samplesMono.length;
62 |
63 | for (let i = 0; remaining >= 0; i += this.maxSamples) {
64 | const left = this.samplesMono.subarray(i, i + this.maxSamples);
65 | const mp3buffer = this.mp3Encoder.encodeBuffer(left);
66 | this.appendToBuffer(mp3buffer);
67 | remaining -= this.maxSamples;
68 | }
69 | }
70 |
71 | finish() {
72 | this.appendToBuffer(this.mp3Encoder.flush());
73 |
74 | return this.dataBuffer;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "useDefineForClassFields": true,
5 | "module": "esnext",
6 | "moduleResolution": "node",
7 | "strict": true,
8 | "jsx": "preserve",
9 | "sourceMap": true,
10 | "resolveJsonModule": true,
11 | "esModuleInterop": true,
12 | "lib": ["esnext", "dom"],
13 | "declaration": true,
14 | "emitDeclarationOnly": true,
15 | "declarationDir": "./dist/types",
16 | "isolatedModules": true,
17 | "skipLibCheck": true,
18 | "types": [
19 | "vite/client"
20 | ]
21 | },
22 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "src/index.js"]
23 | }
24 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const { defineConfig } = require('vite');
3 | import vue from '@vitejs/plugin-vue';
4 |
5 | module.exports = defineConfig({
6 | plugins: [vue()], // to process SFC
7 | build: {
8 | lib: {
9 | entry: path.resolve(__dirname, 'src/index.ts'),
10 | name: 'vue-voice-recorder',
11 | formats: ['es'], // adding 'umd' requires globals set to every external module
12 | fileName: (format) => `vue-voice-recorder.${format}.js`,
13 | },
14 | rollupOptions: {
15 | // external modules won't be bundled into your library
16 | external: ['vue', 'lamejstmp'], // not every external has a global
17 | output: {
18 | // disable warning on src/index.ts using both default and named export
19 | exports: 'named',
20 | // Provide global variables to use in the UMD build
21 | // for externalized deps (not useful if 'umd' is not in lib.formats)
22 | globals: {
23 | vue: 'Vue',
24 | },
25 | },
26 | },
27 | emptyOutDir: false, // to retain the types folder generated by tsc
28 | },
29 | });
30 |
--------------------------------------------------------------------------------