`) based on whether it inherits from `HTMLElement`.
14 | 4. Automatically runs `customElements.define` the first time the web component is instantiated.
15 |
16 | ## Example
17 |
18 | Here's [an example](./test/index.jsx) that uses both custom (such as ``) and autonomous (such as `
`) web components.
19 |
20 | ```jsx
21 | class AppHtml extends HTMLHtmlElement {
22 | connectedCallback() {
23 | this.append(
24 |
,
25 |
26 | )
27 | }
28 | }
29 |
30 | class AppHead extends HTMLHeadElement {
31 | connectedCallback() {
32 | this.append(
33 |
Testing ws-jsx-runtime...
34 | )
35 | }
36 | }
37 |
38 | class AppBody extends HTMLBodyElement {
39 | connectedCallback() {
40 | this.append(
)
41 | }
42 | }
43 |
44 | class HelloWorld extends HTMLElement {
45 | connectedCallback() {
46 | this.append(`Hello, ${this.getAttribute('name')}!`)
47 | }
48 | }
49 |
50 | document.documentElement.replaceWith(
)
51 | ```
52 |
53 | Once run, the DOM will look like this:
54 |
55 | ```html
56 |
57 |
58 |
Testing ws-jsx-runtime...
59 |
60 |
61 |
Hello, JSX!
62 |
63 |
64 | ```
65 |
66 | ## Todo
67 |
68 | - Add special cases for elements with names that don't conform to `HTML${tagName}Element` pattern.
69 |
--------------------------------------------------------------------------------
/jsx-runtime.js:
--------------------------------------------------------------------------------
1 | export {jsx, jsx as jsxs, jsx as Fragment}
2 |
3 | let definitions = new Map()
4 |
5 | function jsx(node, props, key) {
6 | if (node === jsx) node = document.createDocumentFragment()
7 |
8 | else if (typeof node === 'function') {
9 | let definition = definitions.get(node)
10 |
11 | if (!definition) {
12 | let is = node.name.replace(/(.)([A-Z])/g, '$1-$2').toLowerCase()
13 | let name = Object.getPrototypeOf(node).name.replace(/^HTML|Element$/g, '').toLowerCase()
14 | definition = name ? [name, {is}] : [is]
15 | customElements.define(is, node, name ? {extends: name} : null)
16 | definitions.set(...definition)
17 | }
18 |
19 | node = document.createElement(...definition)
20 | }
21 |
22 | else node = document.createElement(node)
23 |
24 | if (key) node.setAttribute('key', key)
25 |
26 | for (let name in props) {
27 | if (name !== 'children') node.setAttribute(name, props[name])
28 |
29 | else Array.isArray(props[name])
30 | ? node.append(...props[name])
31 | : node.append(props[name])
32 | }
33 |
34 | return node
35 | }
36 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wc-jsx-runtime",
3 | "version": "1.0.1",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "wc-jsx-runtime",
9 | "version": "1.0.1",
10 | "license": "MIT",
11 | "dependencies": {
12 | "esbuild": "^0.14.51"
13 | },
14 | "devDependencies": {
15 | "@playwright/test": "^1.24.2",
16 | "serve": "^14.0.1"
17 | }
18 | },
19 | "node_modules/@playwright/test": {
20 | "version": "1.24.2",
21 | "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.24.2.tgz",
22 | "integrity": "sha512-Q4X224pRHw4Dtkk5PoNJplZCokLNvVbXD9wDQEMrHcEuvWpJWEQDeJ9gEwkZ3iCWSFSWBshIX177B231XW4wOQ==",
23 | "dev": true,
24 | "dependencies": {
25 | "@types/node": "*",
26 | "playwright-core": "1.24.2"
27 | },
28 | "bin": {
29 | "playwright": "cli.js"
30 | },
31 | "engines": {
32 | "node": ">=14"
33 | }
34 | },
35 | "node_modules/@types/node": {
36 | "version": "18.6.3",
37 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz",
38 | "integrity": "sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg==",
39 | "dev": true
40 | },
41 | "node_modules/@zeit/schemas": {
42 | "version": "2.21.0",
43 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
44 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
45 | "dev": true
46 | },
47 | "node_modules/accepts": {
48 | "version": "1.3.8",
49 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
50 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
51 | "dev": true,
52 | "dependencies": {
53 | "mime-types": "~2.1.34",
54 | "negotiator": "0.6.3"
55 | },
56 | "engines": {
57 | "node": ">= 0.6"
58 | }
59 | },
60 | "node_modules/ajv": {
61 | "version": "8.11.0",
62 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
63 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
64 | "dev": true,
65 | "dependencies": {
66 | "fast-deep-equal": "^3.1.1",
67 | "json-schema-traverse": "^1.0.0",
68 | "require-from-string": "^2.0.2",
69 | "uri-js": "^4.2.2"
70 | },
71 | "funding": {
72 | "type": "github",
73 | "url": "https://github.com/sponsors/epoberezkin"
74 | }
75 | },
76 | "node_modules/ansi-align": {
77 | "version": "3.0.1",
78 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
79 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
80 | "dev": true,
81 | "dependencies": {
82 | "string-width": "^4.1.0"
83 | }
84 | },
85 | "node_modules/ansi-align/node_modules/ansi-regex": {
86 | "version": "5.0.1",
87 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
88 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
89 | "dev": true,
90 | "engines": {
91 | "node": ">=8"
92 | }
93 | },
94 | "node_modules/ansi-align/node_modules/emoji-regex": {
95 | "version": "8.0.0",
96 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
97 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
98 | "dev": true
99 | },
100 | "node_modules/ansi-align/node_modules/string-width": {
101 | "version": "4.2.3",
102 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
103 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
104 | "dev": true,
105 | "dependencies": {
106 | "emoji-regex": "^8.0.0",
107 | "is-fullwidth-code-point": "^3.0.0",
108 | "strip-ansi": "^6.0.1"
109 | },
110 | "engines": {
111 | "node": ">=8"
112 | }
113 | },
114 | "node_modules/ansi-align/node_modules/strip-ansi": {
115 | "version": "6.0.1",
116 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
117 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
118 | "dev": true,
119 | "dependencies": {
120 | "ansi-regex": "^5.0.1"
121 | },
122 | "engines": {
123 | "node": ">=8"
124 | }
125 | },
126 | "node_modules/ansi-regex": {
127 | "version": "6.0.1",
128 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
129 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
130 | "dev": true,
131 | "engines": {
132 | "node": ">=12"
133 | },
134 | "funding": {
135 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
136 | }
137 | },
138 | "node_modules/ansi-styles": {
139 | "version": "6.1.0",
140 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz",
141 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==",
142 | "dev": true,
143 | "engines": {
144 | "node": ">=12"
145 | },
146 | "funding": {
147 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
148 | }
149 | },
150 | "node_modules/arch": {
151 | "version": "2.2.0",
152 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
153 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
154 | "dev": true,
155 | "funding": [
156 | {
157 | "type": "github",
158 | "url": "https://github.com/sponsors/feross"
159 | },
160 | {
161 | "type": "patreon",
162 | "url": "https://www.patreon.com/feross"
163 | },
164 | {
165 | "type": "consulting",
166 | "url": "https://feross.org/support"
167 | }
168 | ]
169 | },
170 | "node_modules/arg": {
171 | "version": "5.0.2",
172 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
173 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
174 | "dev": true
175 | },
176 | "node_modules/balanced-match": {
177 | "version": "1.0.2",
178 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
179 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
180 | "dev": true
181 | },
182 | "node_modules/boxen": {
183 | "version": "7.0.0",
184 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
185 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
186 | "dev": true,
187 | "dependencies": {
188 | "ansi-align": "^3.0.1",
189 | "camelcase": "^7.0.0",
190 | "chalk": "^5.0.1",
191 | "cli-boxes": "^3.0.0",
192 | "string-width": "^5.1.2",
193 | "type-fest": "^2.13.0",
194 | "widest-line": "^4.0.1",
195 | "wrap-ansi": "^8.0.1"
196 | },
197 | "engines": {
198 | "node": ">=14.16"
199 | },
200 | "funding": {
201 | "url": "https://github.com/sponsors/sindresorhus"
202 | }
203 | },
204 | "node_modules/brace-expansion": {
205 | "version": "1.1.11",
206 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
207 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
208 | "dev": true,
209 | "dependencies": {
210 | "balanced-match": "^1.0.0",
211 | "concat-map": "0.0.1"
212 | }
213 | },
214 | "node_modules/bytes": {
215 | "version": "3.0.0",
216 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
217 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
218 | "dev": true,
219 | "engines": {
220 | "node": ">= 0.8"
221 | }
222 | },
223 | "node_modules/camelcase": {
224 | "version": "7.0.0",
225 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
226 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
227 | "dev": true,
228 | "engines": {
229 | "node": ">=14.16"
230 | },
231 | "funding": {
232 | "url": "https://github.com/sponsors/sindresorhus"
233 | }
234 | },
235 | "node_modules/chalk": {
236 | "version": "5.0.1",
237 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
238 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
239 | "dev": true,
240 | "engines": {
241 | "node": "^12.17.0 || ^14.13 || >=16.0.0"
242 | },
243 | "funding": {
244 | "url": "https://github.com/chalk/chalk?sponsor=1"
245 | }
246 | },
247 | "node_modules/chalk-template": {
248 | "version": "0.4.0",
249 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
250 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
251 | "dev": true,
252 | "dependencies": {
253 | "chalk": "^4.1.2"
254 | },
255 | "engines": {
256 | "node": ">=12"
257 | },
258 | "funding": {
259 | "url": "https://github.com/chalk/chalk-template?sponsor=1"
260 | }
261 | },
262 | "node_modules/chalk-template/node_modules/ansi-styles": {
263 | "version": "4.3.0",
264 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
265 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
266 | "dev": true,
267 | "dependencies": {
268 | "color-convert": "^2.0.1"
269 | },
270 | "engines": {
271 | "node": ">=8"
272 | },
273 | "funding": {
274 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
275 | }
276 | },
277 | "node_modules/chalk-template/node_modules/chalk": {
278 | "version": "4.1.2",
279 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
280 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
281 | "dev": true,
282 | "dependencies": {
283 | "ansi-styles": "^4.1.0",
284 | "supports-color": "^7.1.0"
285 | },
286 | "engines": {
287 | "node": ">=10"
288 | },
289 | "funding": {
290 | "url": "https://github.com/chalk/chalk?sponsor=1"
291 | }
292 | },
293 | "node_modules/cli-boxes": {
294 | "version": "3.0.0",
295 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
296 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
297 | "dev": true,
298 | "engines": {
299 | "node": ">=10"
300 | },
301 | "funding": {
302 | "url": "https://github.com/sponsors/sindresorhus"
303 | }
304 | },
305 | "node_modules/clipboardy": {
306 | "version": "3.0.0",
307 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
308 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
309 | "dev": true,
310 | "dependencies": {
311 | "arch": "^2.2.0",
312 | "execa": "^5.1.1",
313 | "is-wsl": "^2.2.0"
314 | },
315 | "engines": {
316 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
317 | },
318 | "funding": {
319 | "url": "https://github.com/sponsors/sindresorhus"
320 | }
321 | },
322 | "node_modules/color-convert": {
323 | "version": "2.0.1",
324 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
325 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
326 | "dev": true,
327 | "dependencies": {
328 | "color-name": "~1.1.4"
329 | },
330 | "engines": {
331 | "node": ">=7.0.0"
332 | }
333 | },
334 | "node_modules/color-name": {
335 | "version": "1.1.4",
336 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
337 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
338 | "dev": true
339 | },
340 | "node_modules/compressible": {
341 | "version": "2.0.18",
342 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
343 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
344 | "dev": true,
345 | "dependencies": {
346 | "mime-db": ">= 1.43.0 < 2"
347 | },
348 | "engines": {
349 | "node": ">= 0.6"
350 | }
351 | },
352 | "node_modules/compression": {
353 | "version": "1.7.4",
354 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
355 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
356 | "dev": true,
357 | "dependencies": {
358 | "accepts": "~1.3.5",
359 | "bytes": "3.0.0",
360 | "compressible": "~2.0.16",
361 | "debug": "2.6.9",
362 | "on-headers": "~1.0.2",
363 | "safe-buffer": "5.1.2",
364 | "vary": "~1.1.2"
365 | },
366 | "engines": {
367 | "node": ">= 0.8.0"
368 | }
369 | },
370 | "node_modules/concat-map": {
371 | "version": "0.0.1",
372 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
373 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
374 | "dev": true
375 | },
376 | "node_modules/content-disposition": {
377 | "version": "0.5.2",
378 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
379 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
380 | "dev": true,
381 | "engines": {
382 | "node": ">= 0.6"
383 | }
384 | },
385 | "node_modules/cross-spawn": {
386 | "version": "7.0.3",
387 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
388 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
389 | "dev": true,
390 | "dependencies": {
391 | "path-key": "^3.1.0",
392 | "shebang-command": "^2.0.0",
393 | "which": "^2.0.1"
394 | },
395 | "engines": {
396 | "node": ">= 8"
397 | }
398 | },
399 | "node_modules/debug": {
400 | "version": "2.6.9",
401 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
402 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
403 | "dev": true,
404 | "dependencies": {
405 | "ms": "2.0.0"
406 | }
407 | },
408 | "node_modules/deep-extend": {
409 | "version": "0.6.0",
410 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
411 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
412 | "dev": true,
413 | "engines": {
414 | "node": ">=4.0.0"
415 | }
416 | },
417 | "node_modules/eastasianwidth": {
418 | "version": "0.2.0",
419 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
420 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
421 | "dev": true
422 | },
423 | "node_modules/emoji-regex": {
424 | "version": "9.2.2",
425 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
426 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
427 | "dev": true
428 | },
429 | "node_modules/esbuild": {
430 | "version": "0.14.51",
431 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz",
432 | "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==",
433 | "hasInstallScript": true,
434 | "bin": {
435 | "esbuild": "bin/esbuild"
436 | },
437 | "engines": {
438 | "node": ">=12"
439 | },
440 | "optionalDependencies": {
441 | "esbuild-android-64": "0.14.51",
442 | "esbuild-android-arm64": "0.14.51",
443 | "esbuild-darwin-64": "0.14.51",
444 | "esbuild-darwin-arm64": "0.14.51",
445 | "esbuild-freebsd-64": "0.14.51",
446 | "esbuild-freebsd-arm64": "0.14.51",
447 | "esbuild-linux-32": "0.14.51",
448 | "esbuild-linux-64": "0.14.51",
449 | "esbuild-linux-arm": "0.14.51",
450 | "esbuild-linux-arm64": "0.14.51",
451 | "esbuild-linux-mips64le": "0.14.51",
452 | "esbuild-linux-ppc64le": "0.14.51",
453 | "esbuild-linux-riscv64": "0.14.51",
454 | "esbuild-linux-s390x": "0.14.51",
455 | "esbuild-netbsd-64": "0.14.51",
456 | "esbuild-openbsd-64": "0.14.51",
457 | "esbuild-sunos-64": "0.14.51",
458 | "esbuild-windows-32": "0.14.51",
459 | "esbuild-windows-64": "0.14.51",
460 | "esbuild-windows-arm64": "0.14.51"
461 | }
462 | },
463 | "node_modules/esbuild-android-64": {
464 | "version": "0.14.51",
465 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz",
466 | "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==",
467 | "cpu": [
468 | "x64"
469 | ],
470 | "optional": true,
471 | "os": [
472 | "android"
473 | ],
474 | "engines": {
475 | "node": ">=12"
476 | }
477 | },
478 | "node_modules/esbuild-android-arm64": {
479 | "version": "0.14.51",
480 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz",
481 | "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==",
482 | "cpu": [
483 | "arm64"
484 | ],
485 | "optional": true,
486 | "os": [
487 | "android"
488 | ],
489 | "engines": {
490 | "node": ">=12"
491 | }
492 | },
493 | "node_modules/esbuild-darwin-64": {
494 | "version": "0.14.51",
495 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz",
496 | "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==",
497 | "cpu": [
498 | "x64"
499 | ],
500 | "optional": true,
501 | "os": [
502 | "darwin"
503 | ],
504 | "engines": {
505 | "node": ">=12"
506 | }
507 | },
508 | "node_modules/esbuild-darwin-arm64": {
509 | "version": "0.14.51",
510 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz",
511 | "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==",
512 | "cpu": [
513 | "arm64"
514 | ],
515 | "optional": true,
516 | "os": [
517 | "darwin"
518 | ],
519 | "engines": {
520 | "node": ">=12"
521 | }
522 | },
523 | "node_modules/esbuild-freebsd-64": {
524 | "version": "0.14.51",
525 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz",
526 | "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==",
527 | "cpu": [
528 | "x64"
529 | ],
530 | "optional": true,
531 | "os": [
532 | "freebsd"
533 | ],
534 | "engines": {
535 | "node": ">=12"
536 | }
537 | },
538 | "node_modules/esbuild-freebsd-arm64": {
539 | "version": "0.14.51",
540 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz",
541 | "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==",
542 | "cpu": [
543 | "arm64"
544 | ],
545 | "optional": true,
546 | "os": [
547 | "freebsd"
548 | ],
549 | "engines": {
550 | "node": ">=12"
551 | }
552 | },
553 | "node_modules/esbuild-linux-32": {
554 | "version": "0.14.51",
555 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz",
556 | "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==",
557 | "cpu": [
558 | "ia32"
559 | ],
560 | "optional": true,
561 | "os": [
562 | "linux"
563 | ],
564 | "engines": {
565 | "node": ">=12"
566 | }
567 | },
568 | "node_modules/esbuild-linux-64": {
569 | "version": "0.14.51",
570 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz",
571 | "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==",
572 | "cpu": [
573 | "x64"
574 | ],
575 | "optional": true,
576 | "os": [
577 | "linux"
578 | ],
579 | "engines": {
580 | "node": ">=12"
581 | }
582 | },
583 | "node_modules/esbuild-linux-arm": {
584 | "version": "0.14.51",
585 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz",
586 | "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==",
587 | "cpu": [
588 | "arm"
589 | ],
590 | "optional": true,
591 | "os": [
592 | "linux"
593 | ],
594 | "engines": {
595 | "node": ">=12"
596 | }
597 | },
598 | "node_modules/esbuild-linux-arm64": {
599 | "version": "0.14.51",
600 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz",
601 | "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==",
602 | "cpu": [
603 | "arm64"
604 | ],
605 | "optional": true,
606 | "os": [
607 | "linux"
608 | ],
609 | "engines": {
610 | "node": ">=12"
611 | }
612 | },
613 | "node_modules/esbuild-linux-mips64le": {
614 | "version": "0.14.51",
615 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz",
616 | "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==",
617 | "cpu": [
618 | "mips64el"
619 | ],
620 | "optional": true,
621 | "os": [
622 | "linux"
623 | ],
624 | "engines": {
625 | "node": ">=12"
626 | }
627 | },
628 | "node_modules/esbuild-linux-ppc64le": {
629 | "version": "0.14.51",
630 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz",
631 | "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==",
632 | "cpu": [
633 | "ppc64"
634 | ],
635 | "optional": true,
636 | "os": [
637 | "linux"
638 | ],
639 | "engines": {
640 | "node": ">=12"
641 | }
642 | },
643 | "node_modules/esbuild-linux-riscv64": {
644 | "version": "0.14.51",
645 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz",
646 | "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==",
647 | "cpu": [
648 | "riscv64"
649 | ],
650 | "optional": true,
651 | "os": [
652 | "linux"
653 | ],
654 | "engines": {
655 | "node": ">=12"
656 | }
657 | },
658 | "node_modules/esbuild-linux-s390x": {
659 | "version": "0.14.51",
660 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz",
661 | "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==",
662 | "cpu": [
663 | "s390x"
664 | ],
665 | "optional": true,
666 | "os": [
667 | "linux"
668 | ],
669 | "engines": {
670 | "node": ">=12"
671 | }
672 | },
673 | "node_modules/esbuild-netbsd-64": {
674 | "version": "0.14.51",
675 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz",
676 | "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==",
677 | "cpu": [
678 | "x64"
679 | ],
680 | "optional": true,
681 | "os": [
682 | "netbsd"
683 | ],
684 | "engines": {
685 | "node": ">=12"
686 | }
687 | },
688 | "node_modules/esbuild-openbsd-64": {
689 | "version": "0.14.51",
690 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz",
691 | "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==",
692 | "cpu": [
693 | "x64"
694 | ],
695 | "optional": true,
696 | "os": [
697 | "openbsd"
698 | ],
699 | "engines": {
700 | "node": ">=12"
701 | }
702 | },
703 | "node_modules/esbuild-sunos-64": {
704 | "version": "0.14.51",
705 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz",
706 | "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==",
707 | "cpu": [
708 | "x64"
709 | ],
710 | "optional": true,
711 | "os": [
712 | "sunos"
713 | ],
714 | "engines": {
715 | "node": ">=12"
716 | }
717 | },
718 | "node_modules/esbuild-windows-32": {
719 | "version": "0.14.51",
720 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz",
721 | "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==",
722 | "cpu": [
723 | "ia32"
724 | ],
725 | "optional": true,
726 | "os": [
727 | "win32"
728 | ],
729 | "engines": {
730 | "node": ">=12"
731 | }
732 | },
733 | "node_modules/esbuild-windows-64": {
734 | "version": "0.14.51",
735 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz",
736 | "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==",
737 | "cpu": [
738 | "x64"
739 | ],
740 | "optional": true,
741 | "os": [
742 | "win32"
743 | ],
744 | "engines": {
745 | "node": ">=12"
746 | }
747 | },
748 | "node_modules/esbuild-windows-arm64": {
749 | "version": "0.14.51",
750 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz",
751 | "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==",
752 | "cpu": [
753 | "arm64"
754 | ],
755 | "optional": true,
756 | "os": [
757 | "win32"
758 | ],
759 | "engines": {
760 | "node": ">=12"
761 | }
762 | },
763 | "node_modules/execa": {
764 | "version": "5.1.1",
765 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
766 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
767 | "dev": true,
768 | "dependencies": {
769 | "cross-spawn": "^7.0.3",
770 | "get-stream": "^6.0.0",
771 | "human-signals": "^2.1.0",
772 | "is-stream": "^2.0.0",
773 | "merge-stream": "^2.0.0",
774 | "npm-run-path": "^4.0.1",
775 | "onetime": "^5.1.2",
776 | "signal-exit": "^3.0.3",
777 | "strip-final-newline": "^2.0.0"
778 | },
779 | "engines": {
780 | "node": ">=10"
781 | },
782 | "funding": {
783 | "url": "https://github.com/sindresorhus/execa?sponsor=1"
784 | }
785 | },
786 | "node_modules/fast-deep-equal": {
787 | "version": "3.1.3",
788 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
789 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
790 | "dev": true
791 | },
792 | "node_modules/fast-url-parser": {
793 | "version": "1.1.3",
794 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
795 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
796 | "dev": true,
797 | "dependencies": {
798 | "punycode": "^1.3.2"
799 | }
800 | },
801 | "node_modules/get-stream": {
802 | "version": "6.0.1",
803 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
804 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
805 | "dev": true,
806 | "engines": {
807 | "node": ">=10"
808 | },
809 | "funding": {
810 | "url": "https://github.com/sponsors/sindresorhus"
811 | }
812 | },
813 | "node_modules/has-flag": {
814 | "version": "4.0.0",
815 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
816 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
817 | "dev": true,
818 | "engines": {
819 | "node": ">=8"
820 | }
821 | },
822 | "node_modules/human-signals": {
823 | "version": "2.1.0",
824 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
825 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
826 | "dev": true,
827 | "engines": {
828 | "node": ">=10.17.0"
829 | }
830 | },
831 | "node_modules/ini": {
832 | "version": "1.3.8",
833 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
834 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
835 | "dev": true
836 | },
837 | "node_modules/is-docker": {
838 | "version": "2.2.1",
839 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
840 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
841 | "dev": true,
842 | "bin": {
843 | "is-docker": "cli.js"
844 | },
845 | "engines": {
846 | "node": ">=8"
847 | },
848 | "funding": {
849 | "url": "https://github.com/sponsors/sindresorhus"
850 | }
851 | },
852 | "node_modules/is-fullwidth-code-point": {
853 | "version": "3.0.0",
854 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
855 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
856 | "dev": true,
857 | "engines": {
858 | "node": ">=8"
859 | }
860 | },
861 | "node_modules/is-port-reachable": {
862 | "version": "4.0.0",
863 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
864 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
865 | "dev": true,
866 | "engines": {
867 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
868 | },
869 | "funding": {
870 | "url": "https://github.com/sponsors/sindresorhus"
871 | }
872 | },
873 | "node_modules/is-stream": {
874 | "version": "2.0.1",
875 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
876 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
877 | "dev": true,
878 | "engines": {
879 | "node": ">=8"
880 | },
881 | "funding": {
882 | "url": "https://github.com/sponsors/sindresorhus"
883 | }
884 | },
885 | "node_modules/is-wsl": {
886 | "version": "2.2.0",
887 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
888 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
889 | "dev": true,
890 | "dependencies": {
891 | "is-docker": "^2.0.0"
892 | },
893 | "engines": {
894 | "node": ">=8"
895 | }
896 | },
897 | "node_modules/isexe": {
898 | "version": "2.0.0",
899 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
900 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
901 | "dev": true
902 | },
903 | "node_modules/json-schema-traverse": {
904 | "version": "1.0.0",
905 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
906 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
907 | "dev": true
908 | },
909 | "node_modules/merge-stream": {
910 | "version": "2.0.0",
911 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
912 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
913 | "dev": true
914 | },
915 | "node_modules/mime-db": {
916 | "version": "1.52.0",
917 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
918 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
919 | "dev": true,
920 | "engines": {
921 | "node": ">= 0.6"
922 | }
923 | },
924 | "node_modules/mime-types": {
925 | "version": "2.1.35",
926 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
927 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
928 | "dev": true,
929 | "dependencies": {
930 | "mime-db": "1.52.0"
931 | },
932 | "engines": {
933 | "node": ">= 0.6"
934 | }
935 | },
936 | "node_modules/mimic-fn": {
937 | "version": "2.1.0",
938 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
939 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
940 | "dev": true,
941 | "engines": {
942 | "node": ">=6"
943 | }
944 | },
945 | "node_modules/minimatch": {
946 | "version": "3.0.4",
947 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
948 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
949 | "dev": true,
950 | "dependencies": {
951 | "brace-expansion": "^1.1.7"
952 | },
953 | "engines": {
954 | "node": "*"
955 | }
956 | },
957 | "node_modules/minimist": {
958 | "version": "1.2.6",
959 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
960 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
961 | "dev": true
962 | },
963 | "node_modules/ms": {
964 | "version": "2.0.0",
965 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
966 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
967 | "dev": true
968 | },
969 | "node_modules/negotiator": {
970 | "version": "0.6.3",
971 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
972 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
973 | "dev": true,
974 | "engines": {
975 | "node": ">= 0.6"
976 | }
977 | },
978 | "node_modules/npm-run-path": {
979 | "version": "4.0.1",
980 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
981 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
982 | "dev": true,
983 | "dependencies": {
984 | "path-key": "^3.0.0"
985 | },
986 | "engines": {
987 | "node": ">=8"
988 | }
989 | },
990 | "node_modules/on-headers": {
991 | "version": "1.0.2",
992 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
993 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
994 | "dev": true,
995 | "engines": {
996 | "node": ">= 0.8"
997 | }
998 | },
999 | "node_modules/onetime": {
1000 | "version": "5.1.2",
1001 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1002 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1003 | "dev": true,
1004 | "dependencies": {
1005 | "mimic-fn": "^2.1.0"
1006 | },
1007 | "engines": {
1008 | "node": ">=6"
1009 | },
1010 | "funding": {
1011 | "url": "https://github.com/sponsors/sindresorhus"
1012 | }
1013 | },
1014 | "node_modules/path-is-inside": {
1015 | "version": "1.0.2",
1016 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1017 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
1018 | "dev": true
1019 | },
1020 | "node_modules/path-key": {
1021 | "version": "3.1.1",
1022 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1023 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1024 | "dev": true,
1025 | "engines": {
1026 | "node": ">=8"
1027 | }
1028 | },
1029 | "node_modules/path-to-regexp": {
1030 | "version": "2.2.1",
1031 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
1032 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
1033 | "dev": true
1034 | },
1035 | "node_modules/playwright-core": {
1036 | "version": "1.24.2",
1037 | "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.24.2.tgz",
1038 | "integrity": "sha512-zfAoDoPY/0sDLsgSgLZwWmSCevIg1ym7CppBwllguVBNiHeixZkc1AdMuYUPZC6AdEYc4CxWEyLMBTw2YcmRrA==",
1039 | "dev": true,
1040 | "bin": {
1041 | "playwright": "cli.js"
1042 | },
1043 | "engines": {
1044 | "node": ">=14"
1045 | }
1046 | },
1047 | "node_modules/punycode": {
1048 | "version": "1.4.1",
1049 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1050 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
1051 | "dev": true
1052 | },
1053 | "node_modules/range-parser": {
1054 | "version": "1.2.0",
1055 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
1056 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
1057 | "dev": true,
1058 | "engines": {
1059 | "node": ">= 0.6"
1060 | }
1061 | },
1062 | "node_modules/rc": {
1063 | "version": "1.2.8",
1064 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
1065 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1066 | "dev": true,
1067 | "dependencies": {
1068 | "deep-extend": "^0.6.0",
1069 | "ini": "~1.3.0",
1070 | "minimist": "^1.2.0",
1071 | "strip-json-comments": "~2.0.1"
1072 | },
1073 | "bin": {
1074 | "rc": "cli.js"
1075 | }
1076 | },
1077 | "node_modules/registry-auth-token": {
1078 | "version": "3.3.2",
1079 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
1080 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
1081 | "dev": true,
1082 | "dependencies": {
1083 | "rc": "^1.1.6",
1084 | "safe-buffer": "^5.0.1"
1085 | }
1086 | },
1087 | "node_modules/registry-url": {
1088 | "version": "3.1.0",
1089 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
1090 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
1091 | "dev": true,
1092 | "dependencies": {
1093 | "rc": "^1.0.1"
1094 | },
1095 | "engines": {
1096 | "node": ">=0.10.0"
1097 | }
1098 | },
1099 | "node_modules/require-from-string": {
1100 | "version": "2.0.2",
1101 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
1102 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
1103 | "dev": true,
1104 | "engines": {
1105 | "node": ">=0.10.0"
1106 | }
1107 | },
1108 | "node_modules/safe-buffer": {
1109 | "version": "5.1.2",
1110 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1111 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1112 | "dev": true
1113 | },
1114 | "node_modules/serve": {
1115 | "version": "14.0.1",
1116 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz",
1117 | "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==",
1118 | "dev": true,
1119 | "dependencies": {
1120 | "@zeit/schemas": "2.21.0",
1121 | "ajv": "8.11.0",
1122 | "arg": "5.0.2",
1123 | "boxen": "7.0.0",
1124 | "chalk": "5.0.1",
1125 | "chalk-template": "0.4.0",
1126 | "clipboardy": "3.0.0",
1127 | "compression": "1.7.4",
1128 | "is-port-reachable": "4.0.0",
1129 | "serve-handler": "6.1.3",
1130 | "update-check": "1.5.4"
1131 | },
1132 | "bin": {
1133 | "serve": "build/main.js"
1134 | },
1135 | "engines": {
1136 | "node": ">= 14"
1137 | }
1138 | },
1139 | "node_modules/serve-handler": {
1140 | "version": "6.1.3",
1141 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz",
1142 | "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
1143 | "dev": true,
1144 | "dependencies": {
1145 | "bytes": "3.0.0",
1146 | "content-disposition": "0.5.2",
1147 | "fast-url-parser": "1.1.3",
1148 | "mime-types": "2.1.18",
1149 | "minimatch": "3.0.4",
1150 | "path-is-inside": "1.0.2",
1151 | "path-to-regexp": "2.2.1",
1152 | "range-parser": "1.2.0"
1153 | }
1154 | },
1155 | "node_modules/serve-handler/node_modules/mime-db": {
1156 | "version": "1.33.0",
1157 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
1158 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
1159 | "dev": true,
1160 | "engines": {
1161 | "node": ">= 0.6"
1162 | }
1163 | },
1164 | "node_modules/serve-handler/node_modules/mime-types": {
1165 | "version": "2.1.18",
1166 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
1167 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
1168 | "dev": true,
1169 | "dependencies": {
1170 | "mime-db": "~1.33.0"
1171 | },
1172 | "engines": {
1173 | "node": ">= 0.6"
1174 | }
1175 | },
1176 | "node_modules/shebang-command": {
1177 | "version": "2.0.0",
1178 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1179 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1180 | "dev": true,
1181 | "dependencies": {
1182 | "shebang-regex": "^3.0.0"
1183 | },
1184 | "engines": {
1185 | "node": ">=8"
1186 | }
1187 | },
1188 | "node_modules/shebang-regex": {
1189 | "version": "3.0.0",
1190 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1191 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1192 | "dev": true,
1193 | "engines": {
1194 | "node": ">=8"
1195 | }
1196 | },
1197 | "node_modules/signal-exit": {
1198 | "version": "3.0.7",
1199 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1200 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1201 | "dev": true
1202 | },
1203 | "node_modules/string-width": {
1204 | "version": "5.1.2",
1205 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1206 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1207 | "dev": true,
1208 | "dependencies": {
1209 | "eastasianwidth": "^0.2.0",
1210 | "emoji-regex": "^9.2.2",
1211 | "strip-ansi": "^7.0.1"
1212 | },
1213 | "engines": {
1214 | "node": ">=12"
1215 | },
1216 | "funding": {
1217 | "url": "https://github.com/sponsors/sindresorhus"
1218 | }
1219 | },
1220 | "node_modules/strip-ansi": {
1221 | "version": "7.0.1",
1222 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
1223 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
1224 | "dev": true,
1225 | "dependencies": {
1226 | "ansi-regex": "^6.0.1"
1227 | },
1228 | "engines": {
1229 | "node": ">=12"
1230 | },
1231 | "funding": {
1232 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1233 | }
1234 | },
1235 | "node_modules/strip-final-newline": {
1236 | "version": "2.0.0",
1237 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
1238 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
1239 | "dev": true,
1240 | "engines": {
1241 | "node": ">=6"
1242 | }
1243 | },
1244 | "node_modules/strip-json-comments": {
1245 | "version": "2.0.1",
1246 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1247 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
1248 | "dev": true,
1249 | "engines": {
1250 | "node": ">=0.10.0"
1251 | }
1252 | },
1253 | "node_modules/supports-color": {
1254 | "version": "7.2.0",
1255 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1256 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1257 | "dev": true,
1258 | "dependencies": {
1259 | "has-flag": "^4.0.0"
1260 | },
1261 | "engines": {
1262 | "node": ">=8"
1263 | }
1264 | },
1265 | "node_modules/type-fest": {
1266 | "version": "2.18.0",
1267 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz",
1268 | "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==",
1269 | "dev": true,
1270 | "engines": {
1271 | "node": ">=12.20"
1272 | },
1273 | "funding": {
1274 | "url": "https://github.com/sponsors/sindresorhus"
1275 | }
1276 | },
1277 | "node_modules/update-check": {
1278 | "version": "1.5.4",
1279 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
1280 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
1281 | "dev": true,
1282 | "dependencies": {
1283 | "registry-auth-token": "3.3.2",
1284 | "registry-url": "3.1.0"
1285 | }
1286 | },
1287 | "node_modules/uri-js": {
1288 | "version": "4.4.1",
1289 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1290 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1291 | "dev": true,
1292 | "dependencies": {
1293 | "punycode": "^2.1.0"
1294 | }
1295 | },
1296 | "node_modules/uri-js/node_modules/punycode": {
1297 | "version": "2.1.1",
1298 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1299 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1300 | "dev": true,
1301 | "engines": {
1302 | "node": ">=6"
1303 | }
1304 | },
1305 | "node_modules/vary": {
1306 | "version": "1.1.2",
1307 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1308 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1309 | "dev": true,
1310 | "engines": {
1311 | "node": ">= 0.8"
1312 | }
1313 | },
1314 | "node_modules/which": {
1315 | "version": "2.0.2",
1316 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1317 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1318 | "dev": true,
1319 | "dependencies": {
1320 | "isexe": "^2.0.0"
1321 | },
1322 | "bin": {
1323 | "node-which": "bin/node-which"
1324 | },
1325 | "engines": {
1326 | "node": ">= 8"
1327 | }
1328 | },
1329 | "node_modules/widest-line": {
1330 | "version": "4.0.1",
1331 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
1332 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
1333 | "dev": true,
1334 | "dependencies": {
1335 | "string-width": "^5.0.1"
1336 | },
1337 | "engines": {
1338 | "node": ">=12"
1339 | },
1340 | "funding": {
1341 | "url": "https://github.com/sponsors/sindresorhus"
1342 | }
1343 | },
1344 | "node_modules/wrap-ansi": {
1345 | "version": "8.0.1",
1346 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
1347 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
1348 | "dev": true,
1349 | "dependencies": {
1350 | "ansi-styles": "^6.1.0",
1351 | "string-width": "^5.0.1",
1352 | "strip-ansi": "^7.0.1"
1353 | },
1354 | "engines": {
1355 | "node": ">=12"
1356 | },
1357 | "funding": {
1358 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1359 | }
1360 | }
1361 | },
1362 | "dependencies": {
1363 | "@playwright/test": {
1364 | "version": "1.24.2",
1365 | "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.24.2.tgz",
1366 | "integrity": "sha512-Q4X224pRHw4Dtkk5PoNJplZCokLNvVbXD9wDQEMrHcEuvWpJWEQDeJ9gEwkZ3iCWSFSWBshIX177B231XW4wOQ==",
1367 | "dev": true,
1368 | "requires": {
1369 | "@types/node": "*",
1370 | "playwright-core": "1.24.2"
1371 | }
1372 | },
1373 | "@types/node": {
1374 | "version": "18.6.3",
1375 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz",
1376 | "integrity": "sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg==",
1377 | "dev": true
1378 | },
1379 | "@zeit/schemas": {
1380 | "version": "2.21.0",
1381 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
1382 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
1383 | "dev": true
1384 | },
1385 | "accepts": {
1386 | "version": "1.3.8",
1387 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1388 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1389 | "dev": true,
1390 | "requires": {
1391 | "mime-types": "~2.1.34",
1392 | "negotiator": "0.6.3"
1393 | }
1394 | },
1395 | "ajv": {
1396 | "version": "8.11.0",
1397 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
1398 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
1399 | "dev": true,
1400 | "requires": {
1401 | "fast-deep-equal": "^3.1.1",
1402 | "json-schema-traverse": "^1.0.0",
1403 | "require-from-string": "^2.0.2",
1404 | "uri-js": "^4.2.2"
1405 | }
1406 | },
1407 | "ansi-align": {
1408 | "version": "3.0.1",
1409 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
1410 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
1411 | "dev": true,
1412 | "requires": {
1413 | "string-width": "^4.1.0"
1414 | },
1415 | "dependencies": {
1416 | "ansi-regex": {
1417 | "version": "5.0.1",
1418 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1419 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1420 | "dev": true
1421 | },
1422 | "emoji-regex": {
1423 | "version": "8.0.0",
1424 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1425 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1426 | "dev": true
1427 | },
1428 | "string-width": {
1429 | "version": "4.2.3",
1430 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1431 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1432 | "dev": true,
1433 | "requires": {
1434 | "emoji-regex": "^8.0.0",
1435 | "is-fullwidth-code-point": "^3.0.0",
1436 | "strip-ansi": "^6.0.1"
1437 | }
1438 | },
1439 | "strip-ansi": {
1440 | "version": "6.0.1",
1441 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1442 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1443 | "dev": true,
1444 | "requires": {
1445 | "ansi-regex": "^5.0.1"
1446 | }
1447 | }
1448 | }
1449 | },
1450 | "ansi-regex": {
1451 | "version": "6.0.1",
1452 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1453 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1454 | "dev": true
1455 | },
1456 | "ansi-styles": {
1457 | "version": "6.1.0",
1458 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz",
1459 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==",
1460 | "dev": true
1461 | },
1462 | "arch": {
1463 | "version": "2.2.0",
1464 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
1465 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
1466 | "dev": true
1467 | },
1468 | "arg": {
1469 | "version": "5.0.2",
1470 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1471 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1472 | "dev": true
1473 | },
1474 | "balanced-match": {
1475 | "version": "1.0.2",
1476 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1477 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1478 | "dev": true
1479 | },
1480 | "boxen": {
1481 | "version": "7.0.0",
1482 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
1483 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
1484 | "dev": true,
1485 | "requires": {
1486 | "ansi-align": "^3.0.1",
1487 | "camelcase": "^7.0.0",
1488 | "chalk": "^5.0.1",
1489 | "cli-boxes": "^3.0.0",
1490 | "string-width": "^5.1.2",
1491 | "type-fest": "^2.13.0",
1492 | "widest-line": "^4.0.1",
1493 | "wrap-ansi": "^8.0.1"
1494 | }
1495 | },
1496 | "brace-expansion": {
1497 | "version": "1.1.11",
1498 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1499 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1500 | "dev": true,
1501 | "requires": {
1502 | "balanced-match": "^1.0.0",
1503 | "concat-map": "0.0.1"
1504 | }
1505 | },
1506 | "bytes": {
1507 | "version": "3.0.0",
1508 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
1509 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
1510 | "dev": true
1511 | },
1512 | "camelcase": {
1513 | "version": "7.0.0",
1514 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
1515 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
1516 | "dev": true
1517 | },
1518 | "chalk": {
1519 | "version": "5.0.1",
1520 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
1521 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
1522 | "dev": true
1523 | },
1524 | "chalk-template": {
1525 | "version": "0.4.0",
1526 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
1527 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
1528 | "dev": true,
1529 | "requires": {
1530 | "chalk": "^4.1.2"
1531 | },
1532 | "dependencies": {
1533 | "ansi-styles": {
1534 | "version": "4.3.0",
1535 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1536 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1537 | "dev": true,
1538 | "requires": {
1539 | "color-convert": "^2.0.1"
1540 | }
1541 | },
1542 | "chalk": {
1543 | "version": "4.1.2",
1544 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1545 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1546 | "dev": true,
1547 | "requires": {
1548 | "ansi-styles": "^4.1.0",
1549 | "supports-color": "^7.1.0"
1550 | }
1551 | }
1552 | }
1553 | },
1554 | "cli-boxes": {
1555 | "version": "3.0.0",
1556 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
1557 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
1558 | "dev": true
1559 | },
1560 | "clipboardy": {
1561 | "version": "3.0.0",
1562 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
1563 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
1564 | "dev": true,
1565 | "requires": {
1566 | "arch": "^2.2.0",
1567 | "execa": "^5.1.1",
1568 | "is-wsl": "^2.2.0"
1569 | }
1570 | },
1571 | "color-convert": {
1572 | "version": "2.0.1",
1573 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1574 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1575 | "dev": true,
1576 | "requires": {
1577 | "color-name": "~1.1.4"
1578 | }
1579 | },
1580 | "color-name": {
1581 | "version": "1.1.4",
1582 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1583 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1584 | "dev": true
1585 | },
1586 | "compressible": {
1587 | "version": "2.0.18",
1588 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
1589 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
1590 | "dev": true,
1591 | "requires": {
1592 | "mime-db": ">= 1.43.0 < 2"
1593 | }
1594 | },
1595 | "compression": {
1596 | "version": "1.7.4",
1597 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
1598 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
1599 | "dev": true,
1600 | "requires": {
1601 | "accepts": "~1.3.5",
1602 | "bytes": "3.0.0",
1603 | "compressible": "~2.0.16",
1604 | "debug": "2.6.9",
1605 | "on-headers": "~1.0.2",
1606 | "safe-buffer": "5.1.2",
1607 | "vary": "~1.1.2"
1608 | }
1609 | },
1610 | "concat-map": {
1611 | "version": "0.0.1",
1612 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1613 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1614 | "dev": true
1615 | },
1616 | "content-disposition": {
1617 | "version": "0.5.2",
1618 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
1619 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
1620 | "dev": true
1621 | },
1622 | "cross-spawn": {
1623 | "version": "7.0.3",
1624 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1625 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1626 | "dev": true,
1627 | "requires": {
1628 | "path-key": "^3.1.0",
1629 | "shebang-command": "^2.0.0",
1630 | "which": "^2.0.1"
1631 | }
1632 | },
1633 | "debug": {
1634 | "version": "2.6.9",
1635 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1636 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1637 | "dev": true,
1638 | "requires": {
1639 | "ms": "2.0.0"
1640 | }
1641 | },
1642 | "deep-extend": {
1643 | "version": "0.6.0",
1644 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1645 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1646 | "dev": true
1647 | },
1648 | "eastasianwidth": {
1649 | "version": "0.2.0",
1650 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1651 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1652 | "dev": true
1653 | },
1654 | "emoji-regex": {
1655 | "version": "9.2.2",
1656 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1657 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1658 | "dev": true
1659 | },
1660 | "esbuild": {
1661 | "version": "0.14.51",
1662 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz",
1663 | "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==",
1664 | "requires": {
1665 | "esbuild-android-64": "0.14.51",
1666 | "esbuild-android-arm64": "0.14.51",
1667 | "esbuild-darwin-64": "0.14.51",
1668 | "esbuild-darwin-arm64": "0.14.51",
1669 | "esbuild-freebsd-64": "0.14.51",
1670 | "esbuild-freebsd-arm64": "0.14.51",
1671 | "esbuild-linux-32": "0.14.51",
1672 | "esbuild-linux-64": "0.14.51",
1673 | "esbuild-linux-arm": "0.14.51",
1674 | "esbuild-linux-arm64": "0.14.51",
1675 | "esbuild-linux-mips64le": "0.14.51",
1676 | "esbuild-linux-ppc64le": "0.14.51",
1677 | "esbuild-linux-riscv64": "0.14.51",
1678 | "esbuild-linux-s390x": "0.14.51",
1679 | "esbuild-netbsd-64": "0.14.51",
1680 | "esbuild-openbsd-64": "0.14.51",
1681 | "esbuild-sunos-64": "0.14.51",
1682 | "esbuild-windows-32": "0.14.51",
1683 | "esbuild-windows-64": "0.14.51",
1684 | "esbuild-windows-arm64": "0.14.51"
1685 | }
1686 | },
1687 | "esbuild-android-64": {
1688 | "version": "0.14.51",
1689 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz",
1690 | "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==",
1691 | "optional": true
1692 | },
1693 | "esbuild-android-arm64": {
1694 | "version": "0.14.51",
1695 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz",
1696 | "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==",
1697 | "optional": true
1698 | },
1699 | "esbuild-darwin-64": {
1700 | "version": "0.14.51",
1701 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz",
1702 | "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==",
1703 | "optional": true
1704 | },
1705 | "esbuild-darwin-arm64": {
1706 | "version": "0.14.51",
1707 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz",
1708 | "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==",
1709 | "optional": true
1710 | },
1711 | "esbuild-freebsd-64": {
1712 | "version": "0.14.51",
1713 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz",
1714 | "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==",
1715 | "optional": true
1716 | },
1717 | "esbuild-freebsd-arm64": {
1718 | "version": "0.14.51",
1719 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz",
1720 | "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==",
1721 | "optional": true
1722 | },
1723 | "esbuild-linux-32": {
1724 | "version": "0.14.51",
1725 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz",
1726 | "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==",
1727 | "optional": true
1728 | },
1729 | "esbuild-linux-64": {
1730 | "version": "0.14.51",
1731 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz",
1732 | "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==",
1733 | "optional": true
1734 | },
1735 | "esbuild-linux-arm": {
1736 | "version": "0.14.51",
1737 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz",
1738 | "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==",
1739 | "optional": true
1740 | },
1741 | "esbuild-linux-arm64": {
1742 | "version": "0.14.51",
1743 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz",
1744 | "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==",
1745 | "optional": true
1746 | },
1747 | "esbuild-linux-mips64le": {
1748 | "version": "0.14.51",
1749 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz",
1750 | "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==",
1751 | "optional": true
1752 | },
1753 | "esbuild-linux-ppc64le": {
1754 | "version": "0.14.51",
1755 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz",
1756 | "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==",
1757 | "optional": true
1758 | },
1759 | "esbuild-linux-riscv64": {
1760 | "version": "0.14.51",
1761 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz",
1762 | "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==",
1763 | "optional": true
1764 | },
1765 | "esbuild-linux-s390x": {
1766 | "version": "0.14.51",
1767 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz",
1768 | "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==",
1769 | "optional": true
1770 | },
1771 | "esbuild-netbsd-64": {
1772 | "version": "0.14.51",
1773 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz",
1774 | "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==",
1775 | "optional": true
1776 | },
1777 | "esbuild-openbsd-64": {
1778 | "version": "0.14.51",
1779 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz",
1780 | "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==",
1781 | "optional": true
1782 | },
1783 | "esbuild-sunos-64": {
1784 | "version": "0.14.51",
1785 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz",
1786 | "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==",
1787 | "optional": true
1788 | },
1789 | "esbuild-windows-32": {
1790 | "version": "0.14.51",
1791 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz",
1792 | "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==",
1793 | "optional": true
1794 | },
1795 | "esbuild-windows-64": {
1796 | "version": "0.14.51",
1797 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz",
1798 | "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==",
1799 | "optional": true
1800 | },
1801 | "esbuild-windows-arm64": {
1802 | "version": "0.14.51",
1803 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz",
1804 | "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==",
1805 | "optional": true
1806 | },
1807 | "execa": {
1808 | "version": "5.1.1",
1809 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
1810 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
1811 | "dev": true,
1812 | "requires": {
1813 | "cross-spawn": "^7.0.3",
1814 | "get-stream": "^6.0.0",
1815 | "human-signals": "^2.1.0",
1816 | "is-stream": "^2.0.0",
1817 | "merge-stream": "^2.0.0",
1818 | "npm-run-path": "^4.0.1",
1819 | "onetime": "^5.1.2",
1820 | "signal-exit": "^3.0.3",
1821 | "strip-final-newline": "^2.0.0"
1822 | }
1823 | },
1824 | "fast-deep-equal": {
1825 | "version": "3.1.3",
1826 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1827 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1828 | "dev": true
1829 | },
1830 | "fast-url-parser": {
1831 | "version": "1.1.3",
1832 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
1833 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
1834 | "dev": true,
1835 | "requires": {
1836 | "punycode": "^1.3.2"
1837 | }
1838 | },
1839 | "get-stream": {
1840 | "version": "6.0.1",
1841 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
1842 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
1843 | "dev": true
1844 | },
1845 | "has-flag": {
1846 | "version": "4.0.0",
1847 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1848 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1849 | "dev": true
1850 | },
1851 | "human-signals": {
1852 | "version": "2.1.0",
1853 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
1854 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
1855 | "dev": true
1856 | },
1857 | "ini": {
1858 | "version": "1.3.8",
1859 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
1860 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
1861 | "dev": true
1862 | },
1863 | "is-docker": {
1864 | "version": "2.2.1",
1865 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
1866 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
1867 | "dev": true
1868 | },
1869 | "is-fullwidth-code-point": {
1870 | "version": "3.0.0",
1871 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1872 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1873 | "dev": true
1874 | },
1875 | "is-port-reachable": {
1876 | "version": "4.0.0",
1877 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
1878 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
1879 | "dev": true
1880 | },
1881 | "is-stream": {
1882 | "version": "2.0.1",
1883 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
1884 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
1885 | "dev": true
1886 | },
1887 | "is-wsl": {
1888 | "version": "2.2.0",
1889 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
1890 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
1891 | "dev": true,
1892 | "requires": {
1893 | "is-docker": "^2.0.0"
1894 | }
1895 | },
1896 | "isexe": {
1897 | "version": "2.0.0",
1898 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1899 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1900 | "dev": true
1901 | },
1902 | "json-schema-traverse": {
1903 | "version": "1.0.0",
1904 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
1905 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
1906 | "dev": true
1907 | },
1908 | "merge-stream": {
1909 | "version": "2.0.0",
1910 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1911 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1912 | "dev": true
1913 | },
1914 | "mime-db": {
1915 | "version": "1.52.0",
1916 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1917 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1918 | "dev": true
1919 | },
1920 | "mime-types": {
1921 | "version": "2.1.35",
1922 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1923 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1924 | "dev": true,
1925 | "requires": {
1926 | "mime-db": "1.52.0"
1927 | }
1928 | },
1929 | "mimic-fn": {
1930 | "version": "2.1.0",
1931 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1932 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1933 | "dev": true
1934 | },
1935 | "minimatch": {
1936 | "version": "3.0.4",
1937 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1938 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1939 | "dev": true,
1940 | "requires": {
1941 | "brace-expansion": "^1.1.7"
1942 | }
1943 | },
1944 | "minimist": {
1945 | "version": "1.2.6",
1946 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1947 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
1948 | "dev": true
1949 | },
1950 | "ms": {
1951 | "version": "2.0.0",
1952 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1953 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1954 | "dev": true
1955 | },
1956 | "negotiator": {
1957 | "version": "0.6.3",
1958 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1959 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1960 | "dev": true
1961 | },
1962 | "npm-run-path": {
1963 | "version": "4.0.1",
1964 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
1965 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
1966 | "dev": true,
1967 | "requires": {
1968 | "path-key": "^3.0.0"
1969 | }
1970 | },
1971 | "on-headers": {
1972 | "version": "1.0.2",
1973 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1974 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
1975 | "dev": true
1976 | },
1977 | "onetime": {
1978 | "version": "5.1.2",
1979 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1980 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1981 | "dev": true,
1982 | "requires": {
1983 | "mimic-fn": "^2.1.0"
1984 | }
1985 | },
1986 | "path-is-inside": {
1987 | "version": "1.0.2",
1988 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1989 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
1990 | "dev": true
1991 | },
1992 | "path-key": {
1993 | "version": "3.1.1",
1994 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1995 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1996 | "dev": true
1997 | },
1998 | "path-to-regexp": {
1999 | "version": "2.2.1",
2000 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
2001 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
2002 | "dev": true
2003 | },
2004 | "playwright-core": {
2005 | "version": "1.24.2",
2006 | "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.24.2.tgz",
2007 | "integrity": "sha512-zfAoDoPY/0sDLsgSgLZwWmSCevIg1ym7CppBwllguVBNiHeixZkc1AdMuYUPZC6AdEYc4CxWEyLMBTw2YcmRrA==",
2008 | "dev": true
2009 | },
2010 | "punycode": {
2011 | "version": "1.4.1",
2012 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2013 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
2014 | "dev": true
2015 | },
2016 | "range-parser": {
2017 | "version": "1.2.0",
2018 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
2019 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
2020 | "dev": true
2021 | },
2022 | "rc": {
2023 | "version": "1.2.8",
2024 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
2025 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
2026 | "dev": true,
2027 | "requires": {
2028 | "deep-extend": "^0.6.0",
2029 | "ini": "~1.3.0",
2030 | "minimist": "^1.2.0",
2031 | "strip-json-comments": "~2.0.1"
2032 | }
2033 | },
2034 | "registry-auth-token": {
2035 | "version": "3.3.2",
2036 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
2037 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
2038 | "dev": true,
2039 | "requires": {
2040 | "rc": "^1.1.6",
2041 | "safe-buffer": "^5.0.1"
2042 | }
2043 | },
2044 | "registry-url": {
2045 | "version": "3.1.0",
2046 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
2047 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
2048 | "dev": true,
2049 | "requires": {
2050 | "rc": "^1.0.1"
2051 | }
2052 | },
2053 | "require-from-string": {
2054 | "version": "2.0.2",
2055 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
2056 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
2057 | "dev": true
2058 | },
2059 | "safe-buffer": {
2060 | "version": "5.1.2",
2061 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2062 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2063 | "dev": true
2064 | },
2065 | "serve": {
2066 | "version": "14.0.1",
2067 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz",
2068 | "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==",
2069 | "dev": true,
2070 | "requires": {
2071 | "@zeit/schemas": "2.21.0",
2072 | "ajv": "8.11.0",
2073 | "arg": "5.0.2",
2074 | "boxen": "7.0.0",
2075 | "chalk": "5.0.1",
2076 | "chalk-template": "0.4.0",
2077 | "clipboardy": "3.0.0",
2078 | "compression": "1.7.4",
2079 | "is-port-reachable": "4.0.0",
2080 | "serve-handler": "6.1.3",
2081 | "update-check": "1.5.4"
2082 | }
2083 | },
2084 | "serve-handler": {
2085 | "version": "6.1.3",
2086 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz",
2087 | "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
2088 | "dev": true,
2089 | "requires": {
2090 | "bytes": "3.0.0",
2091 | "content-disposition": "0.5.2",
2092 | "fast-url-parser": "1.1.3",
2093 | "mime-types": "2.1.18",
2094 | "minimatch": "3.0.4",
2095 | "path-is-inside": "1.0.2",
2096 | "path-to-regexp": "2.2.1",
2097 | "range-parser": "1.2.0"
2098 | },
2099 | "dependencies": {
2100 | "mime-db": {
2101 | "version": "1.33.0",
2102 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
2103 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
2104 | "dev": true
2105 | },
2106 | "mime-types": {
2107 | "version": "2.1.18",
2108 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
2109 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
2110 | "dev": true,
2111 | "requires": {
2112 | "mime-db": "~1.33.0"
2113 | }
2114 | }
2115 | }
2116 | },
2117 | "shebang-command": {
2118 | "version": "2.0.0",
2119 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2120 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2121 | "dev": true,
2122 | "requires": {
2123 | "shebang-regex": "^3.0.0"
2124 | }
2125 | },
2126 | "shebang-regex": {
2127 | "version": "3.0.0",
2128 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2129 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2130 | "dev": true
2131 | },
2132 | "signal-exit": {
2133 | "version": "3.0.7",
2134 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
2135 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
2136 | "dev": true
2137 | },
2138 | "string-width": {
2139 | "version": "5.1.2",
2140 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2141 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2142 | "dev": true,
2143 | "requires": {
2144 | "eastasianwidth": "^0.2.0",
2145 | "emoji-regex": "^9.2.2",
2146 | "strip-ansi": "^7.0.1"
2147 | }
2148 | },
2149 | "strip-ansi": {
2150 | "version": "7.0.1",
2151 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
2152 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
2153 | "dev": true,
2154 | "requires": {
2155 | "ansi-regex": "^6.0.1"
2156 | }
2157 | },
2158 | "strip-final-newline": {
2159 | "version": "2.0.0",
2160 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
2161 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
2162 | "dev": true
2163 | },
2164 | "strip-json-comments": {
2165 | "version": "2.0.1",
2166 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
2167 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
2168 | "dev": true
2169 | },
2170 | "supports-color": {
2171 | "version": "7.2.0",
2172 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2173 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2174 | "dev": true,
2175 | "requires": {
2176 | "has-flag": "^4.0.0"
2177 | }
2178 | },
2179 | "type-fest": {
2180 | "version": "2.18.0",
2181 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz",
2182 | "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==",
2183 | "dev": true
2184 | },
2185 | "update-check": {
2186 | "version": "1.5.4",
2187 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
2188 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
2189 | "dev": true,
2190 | "requires": {
2191 | "registry-auth-token": "3.3.2",
2192 | "registry-url": "3.1.0"
2193 | }
2194 | },
2195 | "uri-js": {
2196 | "version": "4.4.1",
2197 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2198 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2199 | "dev": true,
2200 | "requires": {
2201 | "punycode": "^2.1.0"
2202 | },
2203 | "dependencies": {
2204 | "punycode": {
2205 | "version": "2.1.1",
2206 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2207 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2208 | "dev": true
2209 | }
2210 | }
2211 | },
2212 | "vary": {
2213 | "version": "1.1.2",
2214 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2215 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
2216 | "dev": true
2217 | },
2218 | "which": {
2219 | "version": "2.0.2",
2220 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2221 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2222 | "dev": true,
2223 | "requires": {
2224 | "isexe": "^2.0.0"
2225 | }
2226 | },
2227 | "widest-line": {
2228 | "version": "4.0.1",
2229 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
2230 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
2231 | "dev": true,
2232 | "requires": {
2233 | "string-width": "^5.0.1"
2234 | }
2235 | },
2236 | "wrap-ansi": {
2237 | "version": "8.0.1",
2238 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
2239 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
2240 | "dev": true,
2241 | "requires": {
2242 | "ansi-styles": "^6.1.0",
2243 | "string-width": "^5.0.1",
2244 | "strip-ansi": "^7.0.1"
2245 | }
2246 | }
2247 | }
2248 | }
2249 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wc-jsx-runtime",
3 | "version": "1.0.1",
4 | "description": "A JSX transform for Web Components",
5 | "type": "module",
6 | "module": "./jsx-runtime.js",
7 | "scripts": {
8 | "test": "npx playwright test"
9 | },
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/jed/wc-jsx-runtime.git"
13 | },
14 | "author": "Jed Schmidt",
15 | "license": "MIT",
16 | "bugs": {
17 | "url": "https://github.com/jed/wc-jsx-runtime/issues"
18 | },
19 | "homepage": "https://github.com/jed/wc-jsx-runtime#readme",
20 | "exports": {
21 | "./jsx-runtime": {
22 | "browser": "./jsx-runtime.js",
23 | "import": "./jsx-runtime.js"
24 | }
25 | },
26 | "devDependencies": {
27 | "@playwright/test": "^1.24.2",
28 | "serve": "^14.0.1",
29 | "esbuild": "^0.14.51"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/playwright.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | testDir: './test',
3 |
4 | webServer: {
5 | command: 'esbuild test/index.jsx --bundle --outdir=test && cd test && serve',
6 | port: 3000,
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/test/index.js:
--------------------------------------------------------------------------------
1 | (() => {
2 | // jsx-runtime.js
3 | var definitions = /* @__PURE__ */ new Map();
4 | function jsx(node, props, key) {
5 | if (node === jsx)
6 | node = document.createDocumentFragment();
7 | else if (typeof node === "function") {
8 | let definition = definitions.get(node);
9 | if (!definition) {
10 | let is = node.name.replace(/(.)([A-Z])/g, "$1-$2").toLowerCase();
11 | let name = Object.getPrototypeOf(node).name.replace(/^HTML|Element$/g, "").toLowerCase();
12 | definition = name ? [name, { is }] : [is];
13 | customElements.define(is, node, name ? { extends: name } : null);
14 | definitions.set(...definition);
15 | }
16 | node = document.createElement(...definition);
17 | } else
18 | node = document.createElement(node);
19 | if (key)
20 | node.setAttribute("key", key);
21 | for (let name in props) {
22 | if (name !== "children")
23 | node.setAttribute(name, props[name]);
24 | else
25 | Array.isArray(props[name]) ? node.append(...props[name]) : node.append(props[name]);
26 | }
27 | return node;
28 | }
29 |
30 | // test/index.jsx
31 | var AppHtml = class extends HTMLHtmlElement {
32 | connectedCallback() {
33 | this.append(
34 | /* @__PURE__ */ jsx(AppHead, {}),
35 | /* @__PURE__ */ jsx(AppBody, {})
36 | );
37 | }
38 | };
39 | var AppHead = class extends HTMLHeadElement {
40 | connectedCallback() {
41 | this.append(
42 | /* @__PURE__ */ jsx("title", {
43 | children: "Testing ws-jsx-runtime..."
44 | })
45 | );
46 | }
47 | };
48 | var AppBody = class extends HTMLBodyElement {
49 | connectedCallback() {
50 | this.append(/* @__PURE__ */ jsx(HelloWorld, {
51 | name: "JSX"
52 | }));
53 | }
54 | };
55 | var HelloWorld = class extends HTMLElement {
56 | connectedCallback() {
57 | this.append(`Hello, ${this.getAttribute("name")}!`);
58 | }
59 | };
60 | document.documentElement.replaceWith(/* @__PURE__ */ jsx(AppHtml, {}));
61 | })();
62 |
--------------------------------------------------------------------------------
/test/index.jsx:
--------------------------------------------------------------------------------
1 | class AppHtml extends HTMLHtmlElement {
2 | connectedCallback() {
3 | this.append(
4 |
,
5 |
6 | )
7 | }
8 | }
9 |
10 | class AppHead extends HTMLHeadElement {
11 | connectedCallback() {
12 | this.append(
13 |
Testing ws-jsx-runtime...
14 | )
15 | }
16 | }
17 |
18 | class AppBody extends HTMLBodyElement {
19 | connectedCallback() {
20 | this.append(
)
21 | }
22 | }
23 |
24 | class HelloWorld extends HTMLElement {
25 | connectedCallback() {
26 | this.append(`Hello, ${this.getAttribute('name')}!`)
27 | }
28 | }
29 |
30 | document.documentElement.replaceWith(
)
31 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | import {test, expect} from '@playwright/test'
2 |
3 | let outerHTML = `
Testing ws-jsx-runtime...Hello, JSX!`
4 |
5 | test('outerHTML matches', async ({page}) => {
6 | await page.goto('http://localhost:3000/')
7 | let documentElement = page.locator('html')
8 | await expect(documentElement).toHaveJSProperty('outerHTML', outerHTML)
9 | })
10 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "react-jsx",
4 | "jsxImportSource": "..",
5 | "baseUrl": ".",
6 | "paths": {
7 | "jsx-runtime": ["jsx-runtime.js"]
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------