121.diff (997970B)
1 diff --git a/.env.local.example b/.env.local.example 2 index a24ce93..b57b47d 100644 3 --- a/.env.local.example 4 +++ b/.env.local.example 5 @@ -1,4 +1,7 @@ 6 -NEXT_PUBLIC_DEFAULT_SERVER_URL=https://matrix.something.com 7 -NEXT_PUBLIC_SEARCH_URL=http://127.0.0.1:7700 8 +VITE_MATRIX_SERVER_URL=https://matrix.something.com 9 +VITE_MATRIX_ROOT_FOLDER=$root:something.com 10 +VITE_MATRIX_INSTANCE_ADMIN=@admin:something.com 11 + 12 +VITE_SEARCH_URL=http://127.0.0.1:7700 13 MEILI_MASTER_KEY=xxx 14 -NEXT_PUBLIC_MEILI_SEARCH_KEY=xxx 15 \ No newline at end of file 16 +VITE_MEILI_SEARCH_KEY=xxx 17 \ No newline at end of file 18 diff --git a/.env.test b/.env.test 19 deleted file mode 100644 20 index 36df53b..0000000 21 --- a/.env.test 22 +++ /dev/null 23 @@ -1 +0,0 @@ 24 -NEXT_PUBLIC_ENV="test" 25 \ No newline at end of file 26 diff --git a/.eslintignore b/.eslintignore 27 new file mode 100644 28 index 0000000..b512c09 29 --- /dev/null 30 +++ b/.eslintignore 31 @@ -0,0 +1 @@ 32 +node_modules 33 \ No newline at end of file 34 diff --git a/.eslintrc.json b/.eslintrc.json 35 index cc42448..49120b2 100644 36 --- a/.eslintrc.json 37 +++ b/.eslintrc.json 38 @@ -1,15 +1,16 @@ 39 { 40 "plugins": [ 41 - "jsx-a11y" 42 + "tailwindcss", 43 + "@typescript-eslint" 44 ], 45 + "parser": "@typescript-eslint/parser", 46 "extends": [ 47 - "next/core-web-vitals", 48 - "plugin:jsx-a11y/recommended", 49 - "plugin:unicorn/recommended" 50 + "eslint:recommended", 51 + "plugin:@typescript-eslint/recommended", 52 + "plugin:unicorn/recommended", 53 + "plugin:tailwindcss/recommended" 54 ], 55 "rules": { 56 - "@next/next/no-img-element": "off", 57 - "jsx-a11y/anchor-is-valid": "off", 58 "unicorn/prevent-abbreviations": "off", 59 "unicorn/filename-case": "off", 60 "unicorn/prefer-ternary": "off", 61 diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml 62 new file mode 100644 63 index 0000000..5f9d340 64 --- /dev/null 65 +++ b/.github/workflows/deploy-preview.yml 66 @@ -0,0 +1,75 @@ 67 +name: Build and Deploy Preview 68 +permissions: 69 + actions: none 70 + checks: none 71 + contents: read 72 + deployments: none 73 + id-token: none 74 + issues: none 75 + discussions: none 76 + packages: none 77 + pages: none 78 + pull-requests: write 79 + repository-projects: none 80 + security-events: none 81 + statuses: none 82 +on: 83 + push: 84 + branches: 85 + - "main" 86 + pull_request: 87 +jobs: 88 + build-and-deploy: 89 + concurrency: ci-${{ github.ref }} 90 + runs-on: self-hosted 91 + steps: 92 + - name: Edit PR Description 93 + if: ${{ github.ref != 'refs/heads/main' }} 94 + uses: Beakyn/gha-comment-pull-request@2167a7aee24f9e61ce76a23039f322e49a990409 95 + env: 96 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 97 + with: 98 + pull-request-number: ${{ steps.readctx.outputs.prnumber }} 99 + description-message: | 100 + ---- 101 + ⌛ Deploy Preview - Build in Progress 102 + - name: Checkout 🛎️ 103 + if: ${{ github.ref != 'refs/heads/main' }} 104 + uses: actions/checkout@v3 105 + - uses: actions/setup-node@v3 106 + name: Setup node 107 + if: ${{ github.ref != 'refs/heads/main' }} 108 + with: 109 + node-version: "16" 110 + - name: Create env file 111 + if: ${{ github.ref != 'refs/heads/main' }} 112 + run: | 113 + echo "VITE_MATRIX_SERVER_URL=https://matrix.art.midnightthoughts.space" > .env.local 114 + echo "VITE_MATRIX_INSTANCE_ADMIN=@administrator:art.midnightthoughts.space" >> .env.local 115 + echo "VITE_MATRIX_ROOT_FOLDER=#Matrix_Art:art.midnightthoughts.space" >> .env.local 116 + - name: Install and Build 🔧 117 + if: ${{ github.ref != 'refs/heads/main' }} 118 + run: | 119 + npm ci 120 + npx tsc && npx vite build --base /pr-${{ github.event.pull_request.number }}/ 121 + - name: Deploy to gh-pages 122 + if: ${{ github.ref != 'refs/heads/main' }} 123 + uses: peaceiris/actions-gh-pages@v3 124 + with: 125 + deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} 126 + publish_dir: ./dist 127 + destination_dir: ./pr-${{ github.event.pull_request.number }} 128 + cname: preview.art.midnightthoughts.space 129 + external_repository: MTRNord/matrix-art-preview 130 + - name: Edit PR Description 131 + if: ${{ github.ref != 'refs/heads/main' }} 132 + uses: Beakyn/gha-comment-pull-request@2167a7aee24f9e61ce76a23039f322e49a990409 133 + env: 134 + BUILD_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} 135 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 136 + with: 137 + description-message: | 138 + ---- 139 + 😎 Browse the preview: https://preview.art.midnightthoughts.space/pr-${{ github.event.pull_request.number }} ! 140 + 🔍 Inspect the deploy log: ${{ env.BUILD_URL }} 141 + ⚠️ Do you trust the author of this PR? Maybe this build will steal your keys or give you malware. Exercise caution. Use test accounts. 142 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml 143 index 81bbaf8..69c8549 100644 144 --- a/.github/workflows/deploy.yml 145 +++ b/.github/workflows/deploy.yml 146 @@ -1,26 +1,27 @@ 147 -name: Deploy to server 148 +name: Build and Deploy 149 +permissions: read-all 150 on: 151 - workflow_run: 152 - workflows: ["Playwright Tests"] 153 + push: 154 branches: [main] 155 - types: 156 - - completed 157 -permissions: read-all 158 - 159 jobs: 160 - deploy: 161 + build-and-deploy: 162 + concurrency: ci-${{ github.ref }} 163 runs-on: self-hosted 164 steps: 165 - # - name: Harden Runner 166 - # uses: step-security/harden-runner@bdb12b622a910dfdc99a31fdfe6f45a16bc287a4 # v1 167 - # with: 168 - # allowed-endpoints: "gitlab.nordgedanken.dev:443" 169 - # env: 170 - # USER: runner 171 - - name: curl 172 - uses: wei/curl@012398a392d02480afa2720780031f8621d5f94c # master 173 - if: ${{ github.event.workflow_run.conclusion == 'success' }} 174 + - name: Checkout 🛎️ 175 + uses: actions/checkout@v3 176 + - uses: actions/setup-node@v3 177 + name: Setup node 178 + with: 179 + node-version: "16" 180 + 181 + - name: Install and Build 🔧 182 + run: | 183 + npm ci 184 + npm run build 185 + 186 + - name: Deploy 🚀 187 + uses: JamesIves/github-pages-deploy-action@v4.2.5 188 with: 189 - args: -X POST -F "token=$GITLAB_TOKEN" -F "ref=main" -F "variables[GITHUB_COMMIT_ID]=$GITHUB_SHA" https://gitlab.nordgedanken.dev/api/v4/projects/2/trigger/pipeline 190 - env: 191 - GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }} 192 + branch: gh-pages # The branch the action should deploy to. 193 + folder: dist # The folder the action should deploy. 194 diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml 195 deleted file mode 100644 196 index d7fdb59..0000000 197 --- a/.github/workflows/playwright.yml 198 +++ /dev/null 199 @@ -1,60 +0,0 @@ 200 -name: Playwright Tests 201 -on: 202 - push: 203 - branches: [main] 204 - pull_request: 205 - branches: [main] 206 -permissions: read-all 207 - 208 -jobs: 209 - test: 210 - permissions: 211 - contents: read # for actions/checkout to fetch code 212 - timeout-minutes: 60 213 - runs-on: self-hosted 214 - steps: 215 - # - name: Harden Runner 216 - # uses: step-security/harden-runner@bdb12b622a910dfdc99a31fdfe6f45a16bc287a4 # v1 217 - # with: 218 - # allowed-endpoints: " 219 - # github.com:22 220 - # github.com:443 221 - # api.github.com:443 222 - # nodejs.org:443 223 - # registry.npmjs.org:443 224 - # playwright.azureedge.net:443 225 - # azure.archive.ubuntu.com:443 226 - # azure.archive.ubuntu.com:80 227 - # security.ubuntu.com:80 228 - # packages.microsoft.com:80 229 - # packages.microsoft.com:443 230 - # ppa.launchpad.net:80 231 - # fonts.googleapis.com:443 232 - # telemetry.nextjs.org:443 233 - # location.services.mozilla.com:443 234 - # art.midnightthoughts.space:443 235 - # matrix.art.midnightthoughts.space:443 236 - # localhost:80" 237 - # env: 238 - # USER: runner 239 - - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 240 - with: 241 - persist-credentials: false 242 - - name: Reconfigure git to use HTTP authentication 243 - run: > 244 - git config --global url."https://github.com/".insteadOf 245 - ssh://git@github.com/ 246 - - uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # v2 247 - with: 248 - node-version: "17.x" 249 - - name: Install dependencies 250 - run: npm ci 251 - - name: Install Playwright 252 - run: npx playwright install --with-deps && npx playwright install msedge && npx playwright install chrome 253 - - name: Run Playwright tests 254 - run: npm run test 255 - - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v2 256 - if: always() 257 - with: 258 - name: playwright-test-results 259 - path: test-results/ 260 diff --git a/.gitignore b/.gitignore 261 index f40901e..b4c8972 100644 262 --- a/.gitignore 263 +++ b/.gitignore 264 @@ -30,11 +30,30 @@ yarn-error.log* 265 .env.test.local 266 .env.production.local 267 268 -# vercel 269 -.vercel 270 +# Logs 271 +logs 272 +*.log 273 +npm-debug.log* 274 +yarn-debug.log* 275 +yarn-error.log* 276 +pnpm-debug.log* 277 +lerna-debug.log* 278 279 -# typescript 280 -*.tsbuildinfo 281 +node_modules 282 +dist 283 +dist-ssr 284 +*.local 285 + 286 +# Editor directories and files 287 +.vscode/* 288 +!.vscode/extensions.json 289 +.idea 290 +.DS_Store 291 +*.suo 292 +*.ntvs* 293 +*.njsproj 294 +*.sln 295 +*.sw? 296 297 #pouchdb 298 /matrix-art-db 299 diff --git a/Dockerfile b/Dockerfile 300 deleted file mode 100644 301 index 33018c2..0000000 302 --- a/Dockerfile 303 +++ /dev/null 304 @@ -1,49 +0,0 @@ 305 -# Install dependencies only when needed 306 -# Use node:17-slim 307 -FROM node@sha256:5e1c50b7686bcaf01b800966bf52d83a2530ea521290bba6eb0fd4eae3025055 AS deps 308 -# for some reason the $PATH get lost inside kaniko, if we re-set it by hand it seems to work. 309 -ENV PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 310 -WORKDIR /app 311 -COPY package.json package-lock.json ./ 312 -RUN npm ci 313 - 314 -# Rebuild the source code only when needed 315 -# Use node:17-slim 316 -FROM node@sha256:5e1c50b7686bcaf01b800966bf52d83a2530ea521290bba6eb0fd4eae3025055 AS builder 317 -WORKDIR /app 318 -COPY . . 319 -COPY --from=deps /app/node_modules ./node_modules 320 -RUN npx browserslist@latest --update-db 321 -RUN mkdir ./localstorage && echo "4" >> ./localstorage/version 322 -RUN npm run build && npm install --only=production --ignore-scripts --prefer-offline 323 - 324 -# Production image, copy all the files and run next 325 -# Use node:17-slim 326 -FROM node@sha256:5e1c50b7686bcaf01b800966bf52d83a2530ea521290bba6eb0fd4eae3025055 AS runner 327 -WORKDIR /app 328 - 329 -ENV NODE_ENV production 330 - 331 -RUN addgroup --gid 1001 --system nodejs 332 -RUN adduser --system nextjs --uid 1001 333 - 334 -# You only need to copy next.config.js if you are NOT using the default configuration 335 -COPY --from=builder /app/public ./public 336 -COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next 337 -COPY --from=builder /app/node_modules ./node_modules 338 -COPY --from=builder /app/package.json ./package.json 339 -COPY --from=builder /app/next.config.js ./next.config.js 340 -COPY --from=builder /app/next-i18next.config.js ./next-i18next.config.js 341 - 342 -USER nextjs 343 - 344 -EXPOSE 3000 345 - 346 -ENV PORT 3000 347 - 348 -# Next.js collects completely anonymous telemetry data about general usage. 349 -# Learn more here: https://nextjs.org/telemetry 350 -# Uncomment the following line in case you want to disable telemetry. 351 -ENV NEXT_TELEMETRY_DISABLED 1 352 - 353 -CMD ["node_modules/.bin/next", "start"] 354 diff --git a/components/ClientContext.tsx b/components/ClientContext.tsx 355 deleted file mode 100644 356 index 051380a..0000000 357 --- a/components/ClientContext.tsx 358 +++ /dev/null 359 @@ -1,16 +0,0 @@ 360 -import React, { Context } from "react"; 361 -import MatrixClient from "../helpers/matrix_client"; 362 - 363 -type ContextData = { 364 - client?: MatrixClient; 365 - guest_client?: MatrixClient; 366 - is_generating_guest: boolean; 367 -}; 368 - 369 -const ClientContext: Context<ContextData> = React.createContext<ContextData>({ 370 - client: undefined, 371 - guest_client: undefined, 372 - is_generating_guest: false 373 -}); 374 - 375 -export { ClientContext }; 376 \ No newline at end of file 377 diff --git a/components/Footer.tsx b/components/Footer.tsx 378 deleted file mode 100644 379 index f622760..0000000 380 --- a/components/Footer.tsx 381 +++ /dev/null 382 @@ -1,15 +0,0 @@ 383 -import Link from "next/link"; 384 -import { PureComponent } from "react"; 385 -import { i18n } from 'next-i18next'; 386 - 387 -export default class Footer extends PureComponent { 388 - render() { 389 - return ( 390 - <footer className="w-full lg:min-h-[25rem] min-h-[12.5rem] bg-[#FEFEFE] dark:bg-[#12161D] flex lg:flex-row flex-col justify-center items-center z-0"> 391 - <Link href={`https://github.com/MTRNord/matrix-art`} passHref><a className="px-16 text-lg text-gray-700 dark:text-gray-400 font-bold">{i18n?.t('Github') ?? 'Github'}</a></Link> 392 - <Link href={`https://matrix.to/#/#matrix-art:nordgedanken.dev`} passHref><a className="px-16 text-lg text-gray-700 dark:text-gray-400 font-bold">{i18n?.t('Matrix') ?? 'Matrix'}</a></Link> 393 - <Link href={`/profile/${encodeURIComponent("@mtrnord:nordgedanken.dev")}`} passHref><a className="px-16 text-lg text-gray-700 dark:text-gray-400 font-bold">{i18n?.t('Developer') ?? 'Developer'}</a></Link> 394 - </footer> 395 - ); 396 - } 397 -} 398 \ No newline at end of file 399 diff --git a/components/FrontPageImage.tsx b/components/FrontPageImage.tsx 400 deleted file mode 100644 401 index 9b06121..0000000 402 --- a/components/FrontPageImage.tsx 403 +++ /dev/null 404 @@ -1,178 +0,0 @@ 405 -import Link from "next/link"; 406 -import { PureComponent } from "react"; 407 -import { Blurhash } from "react-blurhash"; 408 -import { ImageEvent, ImageGalleryEvent, MatrixEventBase, MatrixImageEvents } from "../helpers/event_types"; 409 -import { constMatrixArtServer } from "../helpers/matrix_client"; 410 -import { ClientContext } from "./ClientContext"; 411 -import PropTypes from 'prop-types'; 412 -import { toast } from "react-toastify"; 413 -import { i18n } from "next-i18next"; 414 - 415 -type Props = { 416 - event: MatrixImageEvents; 417 - imageHeight?: string; 418 - show_nsfw: boolean; 419 -}; 420 - 421 -type State = { 422 - displayname: string; 423 - imageHeight?: string; 424 - error?: string; 425 -}; 426 - 427 -export default class FrontPageImage extends PureComponent<Props, State> { 428 - declare context: React.ContextType<typeof ClientContext>; 429 - 430 - constructor(props: Props) { 431 - super(props); 432 - 433 - this.state = { 434 - displayname: this.props.event.sender, 435 - imageHeight: this.props.imageHeight ? this.props.imageHeight : "270px" 436 - } as State; 437 - } 438 - 439 - static propTypes = { 440 - event: PropTypes.object, 441 - imageHeight: PropTypes.string, 442 - show_nsfw: PropTypes.bool 443 - }; 444 - 445 - componentDidUpdate(prevProps: Props, prevState: State) { 446 - if (this.state.error && this.state.error !== prevState.error) { 447 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 448 - autoClose: false 449 - }); 450 - } 451 - } 452 - 453 - async componentDidMount() { 454 - // auto-register as a guest if not logged in 455 - if (!this.context.client?.accessToken) { 456 - this.registerAsGuest();; 457 - } else { 458 - console.log("Already logged in"); 459 - if (!this.props.event) { 460 - return; 461 - } 462 - try { 463 - const profile = await this.context.client.getProfile(this.props.event.sender); 464 - this.setState({ 465 - displayname: profile.displayname ?? this.props.event.sender, 466 - }); 467 - } catch (error) { 468 - console.debug(`Failed to fetch profile for user ${this.props.event.sender}:`, error); 469 - } 470 - } 471 - 472 - } 473 - 474 - async registerAsGuest() { 475 - if (this.context.is_generating_guest) { 476 - return; 477 - } 478 - this.context.is_generating_guest = true; 479 - try { 480 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 481 - await this.context.client?.registerAsGuest(serverUrl); 482 - this.context.is_generating_guest = false; 483 - } catch (error) { 484 - console.error("Failed to register as guest:", error); 485 - this.setState({ 486 - error: "Failed to register as guest: " + JSON.stringify(error), 487 - }); 488 - } 489 - this.context.is_generating_guest = false; 490 - } 491 - 492 - render() { 493 - const event = this.props.event; 494 - return ( 495 - <> 496 - {isImageGalleryEvent(event) ? this.render_gallery(event) : (isImageEvent(event) ? this.render_image(event) : <div key={(event as MatrixEventBase).event_id}></div>)} 497 - </> 498 - ); 499 - } 500 - 501 - 502 - render_gallery(event: ImageGalleryEvent) { 503 - const caption_text = event.content['m.caption'].filter(cap => { 504 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 505 - const possible_text_caption = (cap as { "m.text": string; }); 506 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") ?? possible_text_caption["m.text"]; 507 - }).map(cap => { 508 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 509 - const possible_text_caption = (cap as { "m.text": string; }); 510 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") ? possible_html_caption.body : possible_text_caption["m.text"]; 511 - })[0]; 512 - return event.content['m.image_gallery'].map(image => { 513 - if (image["matrixart.nsfw"] && !this.props.show_nsfw) { 514 - return; 515 - } 516 - const thumbnail_url = image['m.thumbnail'] ? (image['m.thumbnail'].length > 0 ? image['m.thumbnail'][0].url : image['m.file'].url) : image['m.file'].url; 517 - return this.render_image_box(thumbnail_url, event.event_id + image['m.file'].url, event.event_id, caption_text, image['m.image'].height, image['m.image'].width, image["xyz.amorgan.blurhash"]); 518 - }); 519 - } 520 - 521 - 522 - render_image(event: ImageEvent) { 523 - if (event.content["matrixart.nsfw"] && !this.props.show_nsfw) { 524 - return; 525 - } 526 - const caption_text = event.content['m.caption'].filter(cap => { 527 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 528 - const possible_text_caption = (cap as { "m.text": string; }); 529 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") ?? possible_text_caption["m.text"]; 530 - }).map(cap => { 531 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 532 - const possible_text_caption = (cap as { "m.text": string; }); 533 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") ? possible_html_caption.body : possible_text_caption["m.text"]; 534 - })[0]; 535 - const thumbnail_url = event.content['m.thumbnail'] ? (event.content['m.thumbnail'].length > 0 ? event.content['m.thumbnail'][0].url : event.content['m.file'].url) : event.content['m.file'].url; 536 - return this.render_image_box(thumbnail_url, event.event_id, event.event_id, caption_text, event.content['m.image'].height, event.content['m.image'].width, event.content["xyz.amorgan.blurhash"]); 537 - } 538 - 539 - render_image_box(thumbnail_url: string, id: string, post_id: string, caption: string, h: number, w: number, blurhash?: string) { 540 - // TODO show creators display name instead of mxid and show avatar image 541 - // TODO proper alt text 542 - const direct_link = `/post/${encodeURIComponent(post_id)}`; 543 - const image = blurhash ? ( 544 - <div className="flex"> 545 - <Blurhash 546 - hash={blurhash} 547 - height={this.state.imageHeight} 548 - width="100%" 549 - /> 550 - <img loading="lazy" width={w} height={h} alt={caption} title={caption} style={{ height: this.state.imageHeight }} className="h-auto w-full relative -ml-[100%] max-w-full object-cover align-bottom" src={this.context.client?.thumbnailLink(thumbnail_url, "scale", Number.parseInt(this.state.imageHeight?.replace("px", "")!), Number.parseInt(this.state.imageHeight?.replace("px", "")!))}></img> 551 - </div> 552 - ) : ( 553 - <img alt={caption} width={w} height={h} title={caption} style={{ height: this.state.imageHeight }} className={`h-auto w-full relative max-w-full object-cover align-bottom z-0`} src={this.context.client?.thumbnailLink(thumbnail_url, "scale", Number.parseInt(this.state.imageHeight?.replace("px", "")!), Number.parseInt(this.state.imageHeight?.replace("px", "")!))}></img> 554 - ); 555 - return ( 556 - <li style={{ height: this.state.imageHeight }} key={id}> 557 - <Link href={direct_link} passHref> 558 - <a title={caption}> 559 - <div style={{ height: this.state.imageHeight }} className={`relative cursor-pointer`}> 560 - {image} 561 - <div style={{ height: this.state.imageHeight }} className={`flex-col max-w-full opacity-0 hover:opacity-100 duration-300 absolute bg-gradient-to-b from-transparent to-black/[.25] inset-0 z-10 flex justify-end items-start text-white p-4`}> 562 - <h2 className='truncate max-w-full text-base font-semibold'>{caption}</h2> 563 - <p className='truncate max-w-full text-sm'>{this.state.displayname}</p> 564 - </div> 565 - </div> 566 - </a> 567 - </Link> 568 - </li> 569 - ); 570 - } 571 -} 572 -FrontPageImage.contextType = ClientContext; 573 - 574 -// TODO also render the edits properly later on 575 -export function isImageGalleryEvent(event: MatrixImageEvents): event is ImageGalleryEvent { 576 - return event.type === "m.image_gallery" && !event.unsigned?.redacted_because; 577 -} 578 - 579 - 580 -export function isImageEvent(event: MatrixImageEvents): event is ImageEvent { 581 - return event.type === "m.image" && !event.unsigned?.redacted_because; 582 -}; 583 \ No newline at end of file 584 diff --git a/components/Header.tsx b/components/Header.tsx 585 deleted file mode 100644 586 index 4637c95..0000000 587 --- a/components/Header.tsx 588 +++ /dev/null 589 @@ -1,141 +0,0 @@ 590 -import Link from "next/link"; 591 -import { PureComponent } from "react"; 592 -import User from "../helpers/db/Users"; 593 -import { ClientContext } from "./ClientContext"; 594 -import { i18n } from 'next-i18next'; 595 -import { toast } from "react-toastify"; 596 -import dynamic from "next/dynamic"; 597 - 598 -type Props = { 599 -}; 600 - 601 -type State = { 602 - directory_data: User[]; 603 - loading: boolean; 604 - error?: string; 605 -}; 606 -export default class Header extends PureComponent<Props, State> { 607 - declare context: React.ContextType<typeof ClientContext>; 608 - constructor(props: Props) { 609 - super(props); 610 - 611 - this.state = { 612 - directory_data: [], 613 - loading: true 614 - } as State; 615 - } 616 - 617 - componentDidUpdate(prevProps: Props, prevState: State) { 618 - if (this.state.error && this.state.error !== prevState.error) { 619 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 620 - autoClose: false 621 - }); 622 - } 623 - } 624 - 625 - async componentDidMount() { 626 - try { 627 - const data = await fetch("/api/directory", { method: "GET" }); 628 - const data_parsed = await data.json(); 629 - const directory_data = data_parsed.data; 630 - this.setState({ directory_data: directory_data, loading: false }); 631 - } catch { 632 - console.error("Failed to get directory"); 633 - this.setState({ error: "Failed to get directory" }); 634 - } 635 - } 636 - render() { 637 - if (this.state.loading) { 638 - return <></>; 639 - } 640 - return ( 641 - <> 642 - <header className='bg-[#f8f8f8] dark:bg-[#06070D] flex fixed top-0 left-0 right-0 lg:h-20 h-auto z-[100] items-center lg:flex-row flex-col shadow-black drop-shadow-xl'> 643 - <span className='flex items-center lg:mx-10 lg:my-auto my-4 text-gray-900 dark:text-gray-200 font-bold cursor-pointer'> 644 - <Link href="/" passHref> 645 - <svg aria-label="Matrix Art Logo" id="matrix-art-logo" width="140px" className="fill-gray-900 dark:fill-gray-200 brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all" viewBox="0 0 400 82" fill="none" xmlns="http://www.w3.org/2000/svg"> 646 - <path d="M105.578 67.4062C101.016 76.5312 94.5312 81.0938 86.125 81.0938C77.7812 81.0938 71.8125 75.4688 68.2188 64.2188C65.8438 56.7812 64.6562 47.7188 64.6562 37.0312C64.6562 33.0625 64.8125 28.8594 65.125 24.4219C59 36.3906 54.2344 48.2188 50.8281 59.9062H32.875L32.9219 24.3281C26.8594 36.3281 22.2031 48.1875 18.9531 59.9062H0.015625C12.6094 41.1875 22.5312 21.3125 29.7812 0.28125H48.5312C46.7188 11.5938 45.7656 23.4375 45.6719 35.8125C51.6719 23.4688 57.1406 11.625 62.0781 0.28125H83.4062C80.0625 8.84375 78.3906 17.9688 78.3906 27.6562C78.3906 28.875 78.4375 30.3906 78.5312 32.2031C78.8438 38.4844 79.2969 43.2031 79.8906 46.3594C80.7656 51.0469 82.2344 55.5156 84.2969 59.7656C87.7031 66.7656 91.7344 70.2656 96.3906 70.2656C101.141 70.2656 104.203 69.3125 105.578 67.4062Z" fill="inherit" /> 647 - <path d="M132.062 18.8438C126.781 32.5312 122.609 46.2188 119.547 59.9062H103.844L104.547 57.6094C101.516 59.3281 98.4062 60.1875 95.2188 60.1875C91 60.1875 87.7031 58.7344 85.3281 55.8281C83.1094 53.1406 82 49.6406 82 45.3281C82 38.7656 84.1562 32.75 88.4688 27.2812C93.0938 21.4375 98.5781 18.5156 104.922 18.5156C109.578 18.5156 112.969 20 115.094 22.9688L116.359 18.8438H132.062ZM110.547 33.8906C110.547 30.6094 108.938 28.9688 105.719 28.9688C103.438 28.9688 101.422 29.9375 99.6719 31.875C97.9219 33.8125 97.0469 35.9375 97.0469 38.25C97.0469 41.6875 98.75 43.4062 102.156 43.4062C104.562 43.4062 106.594 42.4062 108.25 40.4062C109.781 38.5312 110.547 36.3594 110.547 33.8906Z" fill="inherit" /> 648 - <path d="M167.547 18.5156L163.656 31.4531C160.344 31.3281 157.141 31.2188 154.047 31.125C151.234 40.4062 148.953 50 147.203 59.9062H130C132.844 52.625 136.016 43.0156 139.516 31.0781C136.234 31.1719 133.062 31.2969 130 31.4531L133.938 18.5156C136.844 18.6719 139.891 18.7812 143.078 18.8438C144.453 13.8438 145.891 8.5 147.391 2.8125H164.734C162.328 8.09375 160.141 13.4375 158.172 18.8438C161.172 18.75 164.297 18.6406 167.547 18.5156Z" fill="inherit" /> 649 - <path d="M206.641 29.2969C204.828 28.3906 201.641 27.9375 197.078 27.9375C193.484 27.9375 190.469 28.9688 188.031 31.0312C185.344 33.3125 181.656 42.6875 176.969 59.1562H176.922L176.688 59.9062H160.984L173.453 18.8438H180.391C182.297 18.0312 184.531 17.625 187.094 17.625C192.312 17.625 198.828 21.5156 206.641 29.2969Z" fill="inherit" /> 650 - <path d="M231.812 9.65625C231.812 11.8125 230.531 13.5469 227.969 14.8594C225.906 15.9219 223.672 16.4531 221.266 16.4531C218.828 16.4531 216.547 15.9219 214.422 14.8594C211.859 13.5781 210.578 11.8281 210.578 9.60938C210.578 7.39062 211.953 5.64062 214.703 4.35938C216.891 3.32812 219.234 2.8125 221.734 2.8125C224.203 2.8125 226.391 3.32812 228.297 4.35938C230.641 5.64062 231.812 7.40625 231.812 9.65625ZM226.375 18.8438L213.906 59.9062H198.203L210.672 18.8438H226.375Z" fill="inherit" /> 651 - <path d="M271.188 18.8438L250.141 39.9375L258.672 59.9062H244.562L240.203 49.8281L230.125 59.9062H214.469L235.562 38.8594L226.984 18.8438H241.141L245.453 28.9688L255.578 18.8438H271.188Z" fill="inherit" /> 652 - <path d="M345.344 67.4062C340.781 76.5312 334.312 81.0938 325.938 81.0938C318.719 81.0938 313.266 77.25 309.578 69.5625C306.984 64.1562 305.375 57.1719 304.75 48.6094H294.297C292.953 52.4219 291.719 56.1875 290.594 59.9062H272.078C283.859 38.7188 293.797 18.8438 301.891 0.28125H323.219C319.844 8.875 318.156 18 318.156 27.6562C318.156 28.875 318.203 30.3906 318.297 32.2031C318.609 38.5469 319.062 43.2656 319.656 46.3594C320.531 51.0156 322 55.4844 324.062 59.7656C327.438 66.7656 331.469 70.2656 336.156 70.2656C340.906 70.2656 343.969 69.3125 345.344 67.4062ZM304.984 24.2344C302.766 28.5156 300.734 32.7969 298.891 37.0781H304.469C304.5 33.0781 304.672 28.7969 304.984 24.2344Z" fill="inherit" /> 653 - <path d="M366.203 29.2969C364.391 28.3906 361.203 27.9375 356.641 27.9375C353.047 27.9375 350.031 28.9688 347.594 31.0312C344.906 33.3125 341.219 42.6875 336.531 59.1562H336.484L336.25 59.9062H320.547L333.016 18.8438H339.953C341.859 18.0312 344.094 17.625 346.656 17.625C351.875 17.625 358.391 21.5156 366.203 29.2969Z" fill="inherit" /> 654 - <path d="M399.766 18.5156L395.875 31.4531C392.562 31.3281 389.359 31.2188 386.266 31.125C383.453 40.4062 381.172 50 379.422 59.9062H362.219C365.062 52.625 368.234 43.0156 371.734 31.0781C368.453 31.1719 365.281 31.2969 362.219 31.4531L366.156 18.5156C369.062 18.6719 372.109 18.7812 375.297 18.8438C376.672 13.8438 378.109 8.5 379.609 2.8125H396.953C394.547 8.09375 392.359 13.4375 390.391 18.8438C393.391 18.75 396.516 18.6406 399.766 18.5156Z" fill="inherit" /> 655 - </svg> 656 - </Link> 657 - </span> 658 - <div className='flex lg:flex-1 items-center justify-between lg:flex-row flex-col'> 659 - <div className='flex grow items-center'> 660 - <form className='w-52 text-gray-900 dark:text-gray-200'> 661 - <div className='flex flex-row box-border items-center cursor-text duration-300 rounded-sm border dark:border-slate-400 border-slate-500 py-1.5 px-2 focus-within:border-teal-400'> 662 - <input className='bg-transparent min-w-[1.25rem] focus:outline-none flex-[1] border-none' type="text" placeholder={i18n?.t('Search & Discover')} /> 663 - <span className='flex items-center justify-center cursor-pointer'> 664 - <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" className='fill-gray-900 dark:fill-gray-200'><path d="M0 0h24v24H0z" fill="none" /><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" /></svg> 665 - </span> 666 - </div> 667 - </form> 668 - </div> 669 - 670 - <nav className='flex lg:flex-shrink-0 my-4'> 671 - <ClientContext.Consumer> 672 - {value => { 673 - const isGuest = value.client?.isGuest === null || value.client?.isGuest === undefined ? true : value.client.isGuest; 674 - if (typeof window !== "undefined" && isGuest) { 675 - return ( 676 - <> 677 - <span className='px-4 h-auto min-w-[1.5rem] flex items-center whitespace-nowrap cursor-pointer text-gray-900 dark:text-gray-200 font-medium brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all'><Link href="/register">{i18n?.t('Join') ?? 'Join'}</Link></span> 678 - <span className='px-4 h-auto min-w-[1.5rem] flex items-center whitespace-nowrap cursor-pointer text-gray-900 dark:text-gray-200 font-medium brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all'><Link href="/login">{i18n?.t('Log in') ?? 'Log in'}</Link></span> 679 - </> 680 - ); 681 - } else if (typeof window !== "undefined") { 682 - if (this.state.directory_data.some(thing => thing.mxid == this.context.client?.userId)) { 683 - return ( 684 - <> 685 - <span className='px-4 h-auto min-w-[1.5rem] flex items-center whitespace-nowrap cursor-pointer text-gray-900 dark:text-gray-200 font-medium brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all'><Link href={"/profile/" + encodeURIComponent(this.context.client?.userId ?? "")}>{i18n?.t('Profile') ?? 'Profile'}</Link></span> 686 - <span className='px-4 h-auto min-w-[1.5rem] flex items-center whitespace-nowrap cursor-pointer text-gray-900 dark:text-gray-200 font-medium brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all'><Link href="/logout/">{i18n?.t('Logout') ?? 'Logout'}</Link></span> 687 - </> 688 - ); 689 - } 690 - return <span className='px-4 h-auto min-w-[1.5rem] flex items-center whitespace-nowrap cursor-pointer text-gray-900 dark:text-gray-200 font-medium brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all'><Link href="/logout/">{i18n?.t('Logout') ?? 'Logout'}</Link></span>; 691 - 692 - } 693 - }} 694 - </ClientContext.Consumer> 695 - </nav> 696 - </div> 697 - 698 - <ClientContext.Consumer> 699 - {value => { 700 - const isGuest = value.client?.isGuest === null || value.client?.isGuest === undefined ? true : value.client.isGuest; 701 - if (typeof window !== "undefined" && !isGuest) { 702 - return (<span className='lg:opacity-100 opacity-0 inline-block bg-gray-900 dark:bg-gray-200 w-[1px] lg:h-7 h-0'></span>); 703 - } else { 704 - return (<span className="mr-4"></span>); 705 - } 706 - }} 707 - </ClientContext.Consumer> 708 - 709 - <div className='relative lg:m-0'> 710 - <div className='flex'> 711 - <ClientContext.Consumer> 712 - {value => { 713 - const isGuest = value.client?.isGuest === null || value.client?.isGuest === undefined ? true : value.client.isGuest; 714 - if (typeof window !== "undefined" && !isGuest) { 715 - if (this.state.directory_data.some(thing => thing.mxid == this.context.client?.userId)) { 716 - return <Link href="/submit"><a className='inline-flex justify-center items-center text-teal-400 hover:text-teal-200 bg-transparent relative h-14 min-w-[9.25rem] z-[2] cursor-pointer font-bold'>{i18n?.t('Submit') ?? 'Submit'}</a></Link>; 717 - } else { 718 - return <a className='inline-flex justify-center items-center text-teal-400 hover:text-teal-200 bg-transparent relative h-14 min-w-[9.25rem] z-[2] cursor-pointer font-bold'>{i18n?.t('Setup Account') ?? 'Setup Account'}</a>; 719 - } 720 - } 721 - }} 722 - </ClientContext.Consumer> 723 - </div> 724 - </div> 725 - </header> 726 - </> 727 - ); 728 - } 729 -} 730 -Header.contextType = ClientContext; 731 \ No newline at end of file 732 diff --git a/components/editIcon.tsx b/components/editIcon.tsx 733 deleted file mode 100644 734 index 8419146..0000000 735 --- a/components/editIcon.tsx 736 +++ /dev/null 737 @@ -1,37 +0,0 @@ 738 -import { PureComponent } from "react"; 739 -import PropTypes from 'prop-types'; 740 - 741 -type Props = { 742 - onClick?: () => void; 743 - className?: string; 744 -}; 745 - 746 -type State = { 747 - className: string; 748 - onClick: () => void; 749 -}; 750 - 751 -export class EditIcon extends PureComponent<Props, State> { 752 - 753 - constructor(props: Props) { 754 - super(props); 755 - 756 - this.state = { 757 - className: (props.className ?? "") + " dark:fill-white fill-black", 758 - onClick: props.onClick ?? (() => {/*noop*/ }) 759 - }; 760 - } 761 - static propTypes = { 762 - onClick: PropTypes.func, 763 - className: PropTypes.string 764 - }; 765 - 766 - render() { 767 - return ( 768 - <svg className={this.state.className} onClick={this.state.onClick} xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px"> 769 - <path d="M0 0h24v24H0z" fill="none" /> 770 - <path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" /> 771 - </svg> 772 - ); 773 - } 774 -} 775 \ No newline at end of file 776 diff --git a/components/submit_page/main.tsx b/components/submit_page/main.tsx 777 deleted file mode 100644 778 index c01754f..0000000 779 --- a/components/submit_page/main.tsx 780 +++ /dev/null 781 @@ -1,556 +0,0 @@ 782 -import { PureComponent } from "react"; 783 -import { DropCallbacks } from "./start"; 784 -import PropTypes from 'prop-types'; 785 -import { PreviewWithDataFile } from "../../pages/submit"; 786 -import { ClientContext } from "../ClientContext"; 787 -import Dropzone from "react-dropzone"; 788 -import { SearchMedia } from "../../pages/api/submitSearch"; 789 -import { withRouter } from "next/router"; 790 -import { WithRouterProps } from "next/dist/client/with-router"; 791 -import { BlurhashEncoder } from "../../helpers/BlurhashEncoder"; 792 -import { ImageEventContent, ThumbnailData } from "../../helpers/event_types"; 793 -import { toast } from "react-toastify"; 794 -// @ts-ignore This has no types 795 -import extractPngChunks from "png-chunks-extract"; 796 -import { i18n } from "next-i18next"; 797 - 798 -type ThumbnailableElement = HTMLImageElement | HTMLVideoElement; 799 -type ThumbnailTransmissionData = { 800 - thumbnail_meta: ThumbnailData; 801 - thumbnail: Blob; 802 -}; 803 -const MAX_WIDTH = 800; 804 -const MAX_HEIGHT = 600; 805 - 806 -// scraped out of a macOS hidpi (5660ppm) screenshot png 807 -// 5669 px (x-axis) , 5669 px (y-axis) , per metre 808 -const PHYS_HIDPI = [0x00, 0x00, 0x16, 0x25, 0x00, 0x00, 0x16, 0x25, 0x01]; 809 - 810 -// Minimum size for image files before we generate a thumbnail for them. 811 -const IMAGE_SIZE_THRESHOLD_THUMBNAIL = 1 << 15; // 32KB 812 -// Minimum size improvement for image thumbnails, if both are not met then don't bother uploading thumbnail. 813 -const IMAGE_THUMBNAIL_MIN_REDUCTION_SIZE = 1 << 16; // 1MB 814 -const IMAGE_THUMBNAIL_MIN_REDUCTION_PERCENT = 0.1; // 10% 815 - 816 -interface Props extends DropCallbacks, WithRouterProps { 817 - files: PreviewWithDataFile[]; 818 -}; 819 - 820 -type State = { 821 - currentFileIndex: number; 822 - hasSubmit: boolean; 823 - hasBack: boolean; 824 - submit_in_process: boolean; 825 - [key: string]: any; 826 -}; 827 -class MainSubmissionForm extends PureComponent<Props, State> { 828 - declare context: React.ContextType<typeof ClientContext>; 829 - 830 - constructor(props: Props) { 831 - super(props); 832 - this.state = { 833 - currentFileIndex: 0, 834 - hasSubmit: props.files.length === 1 ? true : false, 835 - hasBack: false, 836 - submit_in_process: false, 837 - }; 838 - const range = [...Array(this.props.files.length).keys()]; // eslint-disable-line unicorn/new-for-builtins 839 - for (const index of range) { 840 - // @ts-ignore Its fine in the constructor 841 - this.state[`${index}_valid`] = false; 842 - } 843 - } 844 - static propTypes = { 845 - onDrop: PropTypes.func, 846 - onDropError: PropTypes.func, 847 - files: PropTypes.array, 848 - hasSubmit: PropTypes.bool, 849 - hasBack: PropTypes.bool 850 - }; 851 - 852 - renderThumb() { 853 - const file = this.props.files[this.state.currentFileIndex]; 854 - return ( 855 - <div className="relative aspect-video w-full" style={{ height: "280px" }} key={file.name}> 856 - <img alt={file.name} className="w-full object-cover max-w-full align-bottom aspect-video" style={{ height: "280px" }} src={file.preview_url} /> 857 - </div> 858 - ); 859 - } 860 - 861 - renderThumbs() { 862 - return this.props.files.map((file, index) => { 863 - const setIndex = () => { 864 - if (this.props.files.length - 1 > index) { 865 - const hasBack = index > 0 ? true : false; 866 - this.setState({ currentFileIndex: index, hasBack, hasSubmit: false }); 867 - } else if (this.props.files.length - 1 === index) { 868 - const hasBack = index > 0 ? true : false; 869 - this.setState({ currentFileIndex: index, hasBack, hasSubmit: true }); 870 - } 871 - }; 872 - 873 - const classes = () => { 874 - const classes_base = ["cursor-pointer", "aspect-video", "my-2"]; 875 - 876 - if (this.state.currentFileIndex == index) { 877 - classes_base.push("border", "p-2", "border-2", "border-white"); 878 - } else if (this.state[`${index}_valid`]) { 879 - classes_base.push("border", "p-2", "border-2", "border-teal-600"); 880 - } else { 881 - classes_base.push("border", "p-2", "border-2", "border-yellow-700"); 882 - } 883 - return classes_base.join(" "); 884 - }; 885 - 886 - 887 - // TODO FIXME do make this work with keyboard presses! 888 - /* eslint-disable jsx-a11y/click-events-have-key-events */ 889 - return ( 890 - <div aria-label={file.name} className={classes.bind(this)()} onClick={setIndex} style={{ height: "144px" }} key={file.name} role="radio" tabIndex={index} aria-checked={this.state.currentFileIndex == index ? true : false}> 891 - <img alt={file.name} className="h-full w-full object-cover align-middle aspect-video" src={file.preview_url} /> 892 - </div> 893 - ); 894 - /* eslint-enable jsx-a11y/click-events-have-key-events */ 895 - }); 896 - } 897 - 898 - onNext(ev: { preventDefault: () => void; }) { 899 - ev.preventDefault(); 900 - const newIndex = this.state.currentFileIndex + 1; 901 - if (this.props.files.length - 1 > newIndex) { 902 - const hasBack = newIndex > 0 ? true : false; 903 - this.setState({ currentFileIndex: newIndex, hasBack }); 904 - } else if (this.props.files.length - 1 === newIndex) { 905 - this.setState({ currentFileIndex: newIndex, hasSubmit: true }); 906 - } 907 - } 908 - 909 - onPrev(ev: { preventDefault: () => void; }) { 910 - ev.preventDefault(); 911 - const newIndex = this.state.currentFileIndex - 1; 912 - if (this.props.files.length - 1 > newIndex) { 913 - const hasBack = newIndex > 0 ? true : false; 914 - this.setState({ currentFileIndex: newIndex, hasBack }); 915 - } else if (this.props.files.length - 1 === newIndex) { 916 - this.setState({ currentFileIndex: newIndex, hasSubmit: true }); 917 - } 918 - } 919 - 920 - 921 - async handleSubmit() { 922 - if (this.state.submit_in_process) { 923 - return; 924 - } 925 - this.setState({ submit_in_process: true }); 926 - 927 - const range = [...Array(this.props.files.length).keys()]; // eslint-disable-line unicorn/new-for-builtins 928 - const posts_for_search: SearchMedia[] = []; 929 - 930 - // Clear all errors before showing new 931 - toast.dismiss(); 932 - 933 - 934 - if (this.context.client?.isGuest) { 935 - toast.error(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{i18n?.t("You are not logged in!")}</div>, { 936 - autoClose: false 937 - }); 938 - this.setState({ submit_in_process: false }); 939 - return; 940 - } 941 - 942 - // If any image is invalid do exit submit for now. 943 - for (const index of range) { 944 - const valid = this.state[`${index}_valid`]; 945 - if (!valid) { 946 - toast.error(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{i18n?.t("You did not fill the required fields for all images. Please fix this!")}</div>, { 947 - autoClose: false 948 - }); 949 - this.setState({ submit_in_process: false }); 950 - return; 951 - } 952 - } 953 - 954 - const image_infos = await this.getImageInfos(); 955 - const ids = await this.doUpload(); 956 - 957 - const thumbnails = await this.generateThumbnailsAndUpload(image_infos); 958 - 959 - // Handle uploads 960 - for (const index of range) { 961 - const title = `${index}_title`; 962 - const description = `${index}_description`; 963 - const tags = `${index}_tags`; 964 - const license = `${index}_license`; 965 - const nsfw = `${index}_nsfw`; 966 - const file = this.props.files[index]; 967 - 968 - if (!this.context.client?.profileRoomId) { 969 - toast.error(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{i18n?.t("Unable to find your profile Room. Please log in again!")}</div>, { 970 - autoClose: false 971 - }); 972 - this.setState({ submit_in_process: false }); 973 - return; 974 - } 975 - 976 - const event = { 977 - "m.text": this.state[title], 978 - "m.caption": [{ 979 - "m.text": this.state[title] 980 - }], 981 - "m.file": { 982 - mimetype: file.type, 983 - name: file.name, 984 - url: ids[index].url, 985 - size: file.size 986 - }, 987 - "m.image": { 988 - height: image_infos[index].height, 989 - width: image_infos[index].width, 990 - }, 991 - "matrixart.description": this.state[description], 992 - "matrixart.nsfw": this.state[nsfw] === "yes" ? true : false, 993 - "matrixart.license": this.state[license], 994 - "matrixart.tags": this.state[tags].split(",").map((x: string) => x.trimStart().trimEnd()), 995 - } as unknown as ImageEventContent; 996 - const thumbnailData = thumbnails.find(item => item.index == index); 997 - event["m.thumbnail"] = thumbnailData?.meta["m.thumbnail"]; 998 - event["xyz.amorgan.blurhash"] = thumbnailData?.meta["xyz.amorgan.blurhash"]!; 999 - 1000 - const event_id = await this.context.client.sendEvent(this.context.client.profileRoomId, 'm.image', event); 1001 - 1002 - posts_for_search.push({ 1003 - mxc_url: ids[index].url, 1004 - event_id: event_id, 1005 - title: this.state[title], 1006 - description: this.state[description], 1007 - tags: this.state[tags].trimStart().trimEnd(), 1008 - nsfw: this.state[nsfw] === "yes" ? "true" : "false", 1009 - license: this.state[license], 1010 - sender: this.context.client.userId! 1011 - }); 1012 - } 1013 - const token = await this.context.client?.getOpenidToken(); 1014 - await fetch("/api/submitSearch", { 1015 - method: "POST", body: JSON.stringify({ 1016 - access_token: token, 1017 - user_id: this.context.client?.userId, 1018 - docs: posts_for_search 1019 - }) 1020 - }); 1021 - await this.props.router.replace("/"); 1022 - this.setState({ submit_in_process: false }); 1023 - } 1024 - 1025 - /** 1026 - * Read the file as an ArrayBuffer. 1027 - * @param {File} file The file to read 1028 - * @return {Promise} A promise that resolves with an ArrayBuffer when the file 1029 - * is read. 1030 - */ 1031 - private async readFileAsArrayBuffer(file: File | Blob): Promise<ArrayBuffer> { 1032 - return new Promise((resolve, reject) => { 1033 - const reader = new FileReader(); 1034 - reader.addEventListener("load", (e: ProgressEvent<FileReader>) => { 1035 - resolve(e.target?.result as ArrayBuffer); 1036 - }); 1037 - reader.addEventListener("error", (e) => { 1038 - reject(e); 1039 - }); 1040 - reader.readAsArrayBuffer(file); 1041 - }); 1042 - } 1043 - 1044 - private async getImageInfos() { 1045 - const image_infos = []; 1046 - const range = [...Array(this.props.files.length).keys()]; // eslint-disable-line unicorn/new-for-builtins 1047 - for (const index of range) { 1048 - const imageFile = this.props.files[index]; 1049 - // Load the file into an html element 1050 - const img = document.createElement("img"); 1051 - const objectUrl = URL.createObjectURL(imageFile); 1052 - const imgPromise = new Promise((resolve, reject) => { 1053 - img.addEventListener("load", () => { 1054 - URL.revokeObjectURL(objectUrl); 1055 - resolve(img); 1056 - }); 1057 - img.addEventListener("error", (e) => { 1058 - reject(e); 1059 - }); 1060 - }); 1061 - img.src = objectUrl; 1062 - 1063 - // check for hi-dpi PNGs and fudge display resolution as needed. 1064 - // this is mainly needed for macOS screencaps 1065 - let parsePromise; 1066 - if (imageFile.type === "image/png") { 1067 - // in practice macOS happens to order the chunks so they fall in 1068 - // the first 0x1000 bytes (thanks to a massive ICC header). 1069 - // Thus we could slice the file down to only sniff the first 0x1000 1070 - // bytes (but this makes extractPngChunks choke on the corrupt file) 1071 - const headers = imageFile; //.slice(0, 0x1000); 1072 - parsePromise = this.readFileAsArrayBuffer(headers).then(arrayBuffer => { 1073 - const buffer = new Uint8Array(arrayBuffer); 1074 - const chunks = extractPngChunks(buffer); 1075 - for (const chunk of chunks) { 1076 - if (chunk.name === 'pHYs') { 1077 - if (chunk.data.byteLength !== PHYS_HIDPI.length) return; 1078 - return chunk.data.every((val: number, i: number) => val === PHYS_HIDPI[i]); 1079 - } 1080 - } 1081 - return false; 1082 - }); 1083 - } 1084 - 1085 - const [hidpi] = await Promise.all([parsePromise, imgPromise]); 1086 - const width = hidpi ? (img.width >> 1) : img.width; 1087 - const height = hidpi ? (img.height >> 1) : img.height; 1088 - image_infos.push({ width, height, img }); 1089 - } 1090 - return image_infos; 1091 - } 1092 - 1093 - // This is taken from matrix-react-sdk commit efa1667d7e9de9e429a72396a5105d0219006db2 1094 - private async createThumbnail( 1095 - element: ThumbnailableElement, 1096 - inputWidth: number, 1097 - inputHeight: number, 1098 - mimeType: string 1099 - ): Promise<ThumbnailTransmissionData | undefined> { 1100 - let targetWidth = inputWidth; 1101 - let targetHeight = inputHeight; 1102 - if (targetHeight > MAX_HEIGHT) { 1103 - targetWidth = Math.floor(targetWidth * (MAX_HEIGHT / targetHeight)); 1104 - targetHeight = MAX_HEIGHT; 1105 - } 1106 - if (targetWidth > MAX_WIDTH) { 1107 - targetHeight = Math.floor(targetHeight * (MAX_WIDTH / targetWidth)); 1108 - targetWidth = MAX_WIDTH; 1109 - } 1110 - 1111 - let canvas: HTMLCanvasElement | OffscreenCanvas; 1112 - let context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D | null; 1113 - try { 1114 - canvas = new window.OffscreenCanvas(targetWidth, targetHeight); 1115 - context = canvas.getContext("2d"); 1116 - } catch { 1117 - // Fallback support for other browsers (Safari and Firefox for now) 1118 - canvas = document.createElement("canvas"); 1119 - (canvas as HTMLCanvasElement).width = targetWidth; 1120 - (canvas as HTMLCanvasElement).height = targetHeight; 1121 - context = canvas.getContext("2d"); 1122 - } 1123 - 1124 - if (!context) { 1125 - return; 1126 - } 1127 - context?.drawImage(element, 0, 0, targetWidth, targetHeight); 1128 - 1129 - let thumbnailPromise: Promise<Blob | null>; 1130 - 1131 - if (window.OffscreenCanvas) { 1132 - thumbnailPromise = (canvas as OffscreenCanvas).convertToBlob({ type: mimeType }); 1133 - } else { 1134 - thumbnailPromise = new Promise<Blob | null>(resolve => (canvas as HTMLCanvasElement).toBlob(resolve, mimeType)); 1135 - } 1136 - 1137 - const imageData = context.getImageData(0, 0, targetWidth, targetHeight); 1138 - // thumbnailPromise and blurhash promise are being awaited concurrently 1139 - const blurhash = await BlurhashEncoder.instance.getBlurhash(imageData); 1140 - const thumbnail = await thumbnailPromise; 1141 - if (!thumbnail) { 1142 - return; 1143 - } 1144 - 1145 - return { 1146 - thumbnail_meta: { 1147 - "m.thumbnail": [ 1148 - { 1149 - width: targetWidth, 1150 - height: targetHeight, 1151 - mimetype: thumbnail.type, 1152 - size: thumbnail.size, 1153 - url: "" 1154 - } 1155 - ], 1156 - "xyz.amorgan.blurhash": blurhash, 1157 - }, 1158 - thumbnail, 1159 - }; 1160 - } 1161 - 1162 - private async generateThumbnailsAndUpload(image_infos: { width: number; height: number; img: HTMLImageElement; }[]): Promise<{ index: number; meta: ThumbnailData; }[]> { 1163 - const thumbnails = []; 1164 - if (!this.context.client?.isGuest) { 1165 - const range = [...Array(this.props.files.length).keys()]; // eslint-disable-line unicorn/new-for-builtins 1166 - for (const index of range) { 1167 - const file = this.props.files[index]; 1168 - const thumbnail_data = await this.createThumbnail( 1169 - image_infos[index].img, 1170 - image_infos[index].width, 1171 - image_infos[index].height, 1172 - file.type 1173 - ); 1174 - if (!thumbnail_data) { 1175 - continue; 1176 - } 1177 - 1178 - // we do all sizing checks here because we still rely on thumbnail generation for making a blurhash from. 1179 - const sizeDifference = file.size - thumbnail_data.thumbnail_meta["m.thumbnail"]![0].size; 1180 - if ( 1181 - file.size <= IMAGE_SIZE_THRESHOLD_THUMBNAIL || // image is small enough already 1182 - (sizeDifference <= IMAGE_THUMBNAIL_MIN_REDUCTION_SIZE && // thumbnail is not sufficiently smaller than original 1183 - sizeDifference <= (file.size * IMAGE_THUMBNAIL_MIN_REDUCTION_PERCENT)) 1184 - ) { 1185 - delete thumbnail_data.thumbnail_meta["m.thumbnail"]; 1186 - thumbnails.push({ index: index, meta: thumbnail_data.thumbnail_meta }); 1187 - } 1188 - 1189 - const result = await this.context.client?.uploadFile(thumbnail_data.thumbnail); 1190 - if (result) { 1191 - thumbnail_data.thumbnail_meta["m.thumbnail"]![0].url = result; 1192 - } 1193 - thumbnails.push({ index: index, meta: thumbnail_data.thumbnail_meta }); 1194 - } 1195 - } 1196 - return thumbnails; 1197 - } 1198 - 1199 - private async doUpload() { 1200 - const urls = []; 1201 - if (!this.context.client?.isGuest) { 1202 - const range = [...Array(this.props.files.length).keys()]; // eslint-disable-line unicorn/new-for-builtins 1203 - for (const index of range) { 1204 - const file = this.props.files[index]; 1205 - const result = await this.context.client?.uploadFile(file); 1206 - urls.push({ index: index, url: result }); 1207 - } 1208 - } 1209 - return urls; 1210 - } 1211 - 1212 - componentDidUpdate() { 1213 - const title = `${this.state.currentFileIndex}_title`; 1214 - const description = `${this.state.currentFileIndex}_description`; 1215 - const license = `${this.state.currentFileIndex}_license`; 1216 - const nsfw = `${this.state.currentFileIndex}_nsfw`; 1217 - let validated = false; 1218 - if (this.state[title] && this.state[license] && this.state[description] && this.state[nsfw]) { 1219 - validated = true; 1220 - } 1221 - if (this.state[`${this.state.currentFileIndex}_valid`] !== validated) { 1222 - this.setState({ 1223 - [`${this.state.currentFileIndex}_valid`]: validated 1224 - } as State); 1225 - } 1226 - } 1227 - 1228 - handleInputChange(event: { target: any; }) { 1229 - const target = event.target; 1230 - const value = target.type === 'checkbox' ? target.checked : target.value; 1231 - const name = `${this.state.currentFileIndex}_${target.name}`; 1232 - 1233 - this.setState({ 1234 - [name]: value, 1235 - } as State); 1236 - } 1237 - 1238 - render() { 1239 - if (this.state.submit_in_process) { 1240 - return ( 1241 - <main className="max-h-full max-w-full lg:pt-20 pt-56"> 1242 - <div className="mx-auto w-full"> 1243 - <div className="loader">{i18n?.t('Loading')}...</div> 1244 - </div> 1245 - </main> 1246 - ); 1247 - } 1248 - return ( 1249 - <main className='min-h-full max-w-full flex flex-col justify-start items-center lg:pt-20 pt-52 z-0 bottom-0 relative mb-8'> 1250 - <section className="flex flex-col items-start mb-4"> 1251 - <div className="flex flex-row my-4 w-full items-center justify-center"> 1252 - {this.renderThumb()} 1253 - </div> 1254 - <div className="flex flex-row w-full mb-4"> 1255 - <form className="flex flex-col w-full"> 1256 - <label className="inner-flex flex-col"> 1257 - <span className="text-xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t('Image Title')}</span> 1258 - <input required name="title" value={this.state[`${this.state.currentFileIndex}_title`] ?? ""} type="text" placeholder={i18n?.t("Set an image title")} className="min-w-full placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" onChange={this.handleInputChange.bind(this)} /> 1259 - </label> 1260 - 1261 - <span className="h-4"></span> 1262 - 1263 - <label className="inner-flex flex-col"> 1264 - <span className="text-xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("Description")}</span> 1265 - <textarea name="description" value={this.state[`${this.state.currentFileIndex}_description`] ?? ""} placeholder={i18n?.t("Description Text of the current image")} className="min-w-full placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" onChange={this.handleInputChange.bind(this)} /> 1266 - </label> 1267 - 1268 - <span className="h-4"></span> 1269 - 1270 - <label className="inner-flex flex-col"> 1271 - <span className="text-xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("Image Tags")}</span> 1272 - <input name="tags" type="text" value={this.state[`${this.state.currentFileIndex}_tags`] ?? ""} placeholder={i18n?.t("Enter tags (Separate with a comma)")} className="min-w-full placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" onChange={this.handleInputChange.bind(this)} /> 1273 - </label> 1274 - 1275 - <span className="h-4"></span> 1276 - 1277 - <label className="inner-flex flex-col"> 1278 - <span className="text-xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("License")}</span> 1279 - <select defaultValue="" required name="license" value={this.state[`${this.state.currentFileIndex}_license`] ?? ""} className="min-w-full placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" onChange={this.handleInputChange.bind(this)}> 1280 - <option value="" disabled>{i18n?.t("Select an Creative Commons License")}</option> 1281 - <option value="cc-by-4.0">Attribution 4.0 International (CC BY 4.0)</option> 1282 - <option value="cc-by-sa-4.0">Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</option> 1283 - <option value="cc-by-nc-4.0">Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)</option> 1284 - <option value="cc-by-nc-sa-4.0">Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)</option> 1285 - <option value="cc-by-nd-4.0">Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)</option> 1286 - <option value="cc-by-nc-nd-4.0">Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)</option> 1287 - <option value="CC0-1.0">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication</option> 1288 - </select> 1289 - </label> 1290 - 1291 - <span className="h-4"></span> 1292 - 1293 - <label className="inner-flex flex-col"> 1294 - <span className="text-xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("Mature/NSFW Content?")}</span> 1295 - <select defaultValue="" required name="nsfw" value={this.state[`${this.state.currentFileIndex}_nsfw`] ?? ""} className="min-w-full placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" onChange={this.handleInputChange.bind(this)}> 1296 - <option value="" disabled>{i18n?.t("Select Yes or No")}</option> 1297 - <option value="no">{i18n?.t("No")}</option> 1298 - <option value="yes">{i18n?.t("Yes")}</option> 1299 - </select> 1300 - </label> 1301 - </form> 1302 - </div> 1303 - <div className="flex justify-between w-full flex-row-reverse"> 1304 - { 1305 - this.state.hasSubmit ? 1306 - <button className="text-base text-gray-900 dark:text-gray-200" onClick={this.handleSubmit.bind(this)}>{i18n?.t("Submit Posts")}</button> 1307 - : 1308 - <button className="text-base text-gray-900 dark:text-gray-200" onClick={this.onNext.bind(this)}>{i18n?.t("Next Image")}</button> 1309 - } 1310 - {this.state.hasBack ? <button className="text-base text-gray-900 dark:text-gray-200" onClick={this.onPrev.bind(this)}>{i18n?.t("Previous Image")}</button> : undefined} 1311 - </div> 1312 - </section> 1313 - {/* Warning for further readers. This css is easy to explode. Reasons are unknown. Dont touch it unless you know the fix! */} 1314 - <section className="max-w-full flex flex-row justify-start items-start "> 1315 - <div className="overflow-x-auto mr-4 ml-8"> 1316 - <div className="flex gap-1"> 1317 - {this.renderThumbs()} 1318 - </div> 1319 - </div> 1320 - <Dropzone accept='image/*' onDropAccepted={this.props.onDrop} onDropRejected={this.props.onDropError}> 1321 - {({ getRootProps, getInputProps }) => ( 1322 - <div className="my-2 flex aspect-square justify-center items-center border border-dashed dark:border-white border-black cursor-pointer h-[144px] w-[144px] mr-8" {...getRootProps()}> 1323 - <input {...getInputProps()} /> 1324 - <svg className="dark:fill-gray-200 fill-gray-900" xmlns="http://www.w3.org/2000/svg" height="5rem" viewBox="0 0 24 24" width="5rem" fill="inherit"><path d="M0 0h24v24H0V0z" fill="none" /><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /></svg> 1325 - </div> 1326 - )} 1327 - </Dropzone> 1328 - </section> 1329 - </main> 1330 - ); 1331 - } 1332 -} 1333 - 1334 -MainSubmissionForm.contextType = ClientContext; 1335 - 1336 -// @ts-ignore Typescript is wrong 1337 -export default withRouter(MainSubmissionForm); 1338 \ No newline at end of file 1339 diff --git a/components/submit_page/start.tsx b/components/submit_page/start.tsx 1340 deleted file mode 100644 1341 index 5d4891c..0000000 1342 --- a/components/submit_page/start.tsx 1343 +++ /dev/null 1344 @@ -1,37 +0,0 @@ 1345 -import { PureComponent } from "react"; 1346 -import Dropzone, { FileRejection } from "react-dropzone"; 1347 -import PropTypes from 'prop-types'; 1348 -import { i18n } from "next-i18next"; 1349 - 1350 -export interface DropCallbacks { 1351 - onDrop: (files: File[]) => void; 1352 - onDropError: (fileRejections: FileRejection[]) => void; 1353 -} 1354 - 1355 -interface Props extends DropCallbacks { } 1356 - 1357 -export class StartSubmit extends PureComponent<Props> { 1358 - static propTypes = { 1359 - onDrop: PropTypes.func, 1360 - onDropError: PropTypes.func 1361 - }; 1362 - 1363 - render() { 1364 - return ( 1365 - <main className='min-h-full flex flex-col justify-center lg:pt-20 pt-52 z-0 bottom-0 relative flex-grow mb-8'> 1366 - <div className="flex justify-center items-center mt-4"> 1367 - <Dropzone accept='image/*' onDropAccepted={this.props.onDrop} onDropRejected={this.props.onDropError}> 1368 - {({ getRootProps, getInputProps }) => ( 1369 - <section className="flex flex-col"> 1370 - <div className="dark:bg-[#fefefe]/[.25] bg-[#14181E]/[.25] min-h-[11.5rem] min-w-[39.5rem] flex-[1] flex flex-col items-center justify-center p-5 border-2 rounded-sm border-[#eeeeee] border-dashed outline-none hover:border-[#2196f3] duration-[24ms] transition" {...getRootProps()}> 1371 - <input {...getInputProps()} /> 1372 - <p className="text-base text-gray-900 dark:text-gray-200">{i18n?.t("Drag 'n' drop some images here, or click to select images")}</p> 1373 - </div> 1374 - </section> 1375 - )} 1376 - </Dropzone> 1377 - </div> 1378 - </main> 1379 - ); 1380 - } 1381 -} 1382 \ No newline at end of file 1383 diff --git a/components/uploadIcon.tsx b/components/uploadIcon.tsx 1384 deleted file mode 100644 1385 index 4c0250a..0000000 1386 --- a/components/uploadIcon.tsx 1387 +++ /dev/null 1388 @@ -1,38 +0,0 @@ 1389 -import { PureComponent } from "react"; 1390 -import PropTypes from 'prop-types'; 1391 - 1392 -type Props = { 1393 - onClick?: () => void; 1394 - className?: string; 1395 -}; 1396 - 1397 -type State = { 1398 - onClick: () => void; 1399 - className: string; 1400 -}; 1401 - 1402 -export class UploadIcon extends PureComponent<Props, State> { 1403 - 1404 - constructor(props: Props) { 1405 - super(props); 1406 - 1407 - this.state = { 1408 - className: (props.className ?? "") + " dark:fill-white fill-black", 1409 - onClick: props.onClick ?? (() => {/*noop*/ }) 1410 - }; 1411 - } 1412 - 1413 - static propTypes = { 1414 - onClick: PropTypes.func, 1415 - className: PropTypes.string 1416 - }; 1417 - 1418 - render() { 1419 - return ( 1420 - <svg className={this.state.className} onClick={this.state.onClick} xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="inherit"> 1421 - <path d="M0 0h24v24H0z" fill="none" /> 1422 - <path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z" /> 1423 - </svg> 1424 - ); 1425 - } 1426 -} 1427 \ No newline at end of file 1428 diff --git a/e2e/checkEnglishWorks.spec.ts b/e2e/checkEnglishWorks.spec.ts 1429 deleted file mode 100644 1430 index 736629c..0000000 1431 --- a/e2e/checkEnglishWorks.spec.ts 1432 +++ /dev/null 1433 @@ -1,31 +0,0 @@ 1434 -import { test, expect } from '@playwright/test'; 1435 - 1436 -test.use({ 1437 - locale: 'en' 1438 -}); 1439 - 1440 -test('test if the header is there and english with correct state', async ({ page, baseURL }) => { 1441 - page.on('console', msg => console.log(msg.text())); 1442 - // Go to http://localhost:3000/ 1443 - await Promise.all([ 1444 - await page.waitForLoadState("networkidle"), 1445 - await page.goto(baseURL || 'http://localhost:3000/'), 1446 - ]); 1447 - 1448 - // Make sure that we have the Hader 1449 - const locator = await Promise.all([ 1450 - await page.waitForTimeout(5000), 1451 - await page.locator('header') 1452 - ]); 1453 - locator[1].isVisible(); 1454 - expect(await page.locator('header').isVisible()).toBeTruthy(); 1455 - 1456 - // Make sure unauthenticated state is correct 1457 - expect(await page.locator('header > div > nav > span > a:has-text("Join")').isVisible()).toBeTruthy(); 1458 - expect(await page.locator('header > div > nav > span > a:has-text("Log in")').isVisible()).toBeTruthy(); 1459 - expect(await page.locator('header > div > nav > span > a:has-text("Log in")')).toHaveAttribute("href", "/login"); 1460 - 1461 - // Make sure unauthenticated state is correct and not bleeding 1462 - expect(await page.locator('header > div > div > a:has-text("Submit")').isVisible()).toBeFalsy(); 1463 - expect(await page.locator('header > div > div > a:has-text("Setup Account")').isVisible()).toBeFalsy(); 1464 -}); 1465 \ No newline at end of file 1466 diff --git a/e2e/navigateToDetails.spec.ts b/e2e/navigateToDetails.spec.ts 1467 deleted file mode 100644 1468 index 98f4da8..0000000 1469 --- a/e2e/navigateToDetails.spec.ts 1470 +++ /dev/null 1471 @@ -1,32 +0,0 @@ 1472 -import { test, expect } from '@playwright/test'; 1473 - 1474 -test.use({ 1475 - locale: 'en' 1476 -}); 1477 - 1478 -test('test navigation to details', async ({ page, baseURL }) => { 1479 - page.on('console', msg => console.log(msg.text())); 1480 - // Go to http://localhost:3000/ 1481 - await Promise.all([ 1482 - await page.waitForLoadState("networkidle"), 1483 - await page.goto(baseURL || 'http://localhost:3000/'), 1484 - ]); 1485 - // Check for the Home text 1486 - await expect(page.locator('h1')).toContainText('Home'); 1487 - // Click text=Flowers@mtrnord:art.midnightthoughts.space 1488 - await Promise.all([ 1489 - page.waitForNavigation(/*{ url: 'http://localhost:3000/post/%24ugLG5srr5AyYCIhL1CnD6KikH8QYsDVMUHQ9jQRn990' }*/), 1490 - page.click('text=Test') 1491 - ]); 1492 - 1493 - 1494 - await expect(page).toHaveURL(`${baseURL || "http://localhost:3000"}/post/%24QtbB-3JYAEOXJeC-mrZqFIEqon4uBLYVwTSw2SDWrJg`); 1495 - 1496 - 1497 - // Click svg 1498 - await Promise.all([ 1499 - page.waitForNavigation(/*{ url: 'http://localhost:3000/' }*/), 1500 - page.click('#matrix-art-logo') 1501 - ]); 1502 - await expect(page).toHaveURL(baseURL || "http://localhost:3000"); 1503 -}); 1504 \ No newline at end of file 1505 diff --git a/helpers/BlurhashEncoder.ts b/helpers/BlurhashEncoder.ts 1506 deleted file mode 100644 1507 index 4252c05..0000000 1508 --- a/helpers/BlurhashEncoder.ts 1509 +++ /dev/null 1510 @@ -1,55 +0,0 @@ 1511 -/* 1512 -Copyright 2021 The Matrix.org Foundation C.I.C. 1513 -Licensed under the Apache License, Version 2.0 (the "License"); 1514 -you may not use this file except in compliance with the License. 1515 -You may obtain a copy of the License at 1516 - http://www.apache.org/licenses/LICENSE-2.0 1517 -Unless required by applicable law or agreed to in writing, software 1518 -distributed under the License is distributed on an "AS IS" BASIS, 1519 -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1520 -See the License for the specific language governing permissions and 1521 -limitations under the License. 1522 -*/ 1523 - 1524 -import { defer, IDeferred } from "./utils"; 1525 - 1526 -interface IBlurhashWorkerResponse { 1527 - seq: number; 1528 - blurhash: string; 1529 -} 1530 - 1531 -export class BlurhashEncoder { 1532 - private static internalInstance = new BlurhashEncoder(); 1533 - 1534 - public static get instance(): BlurhashEncoder { 1535 - return BlurhashEncoder.internalInstance; 1536 - } 1537 - 1538 - private readonly worker?: Worker; 1539 - private seq = 0; 1540 - private pendingDeferredMap = new Map<number, IDeferred<string>>(); 1541 - 1542 - constructor() { 1543 - if (typeof Worker !== 'undefined') { 1544 - this.worker = new Worker(new URL('./workers/blurhash.worker.ts', import.meta.url)); // eslint-disable-line unicorn/relative-url-style 1545 - } 1546 - this.worker?.addEventListener("message", this.onMessage.bind(this)); 1547 - } 1548 - 1549 - private onMessage = (ev: MessageEvent<IBlurhashWorkerResponse>) => { 1550 - const { seq, blurhash } = ev.data; 1551 - const deferred = this.pendingDeferredMap.get(seq); 1552 - if (deferred) { 1553 - this.pendingDeferredMap.delete(seq); 1554 - deferred.resolve(blurhash); 1555 - } 1556 - }; 1557 - 1558 - public getBlurhash(imageData: ImageData): Promise<string> { 1559 - const seq = this.seq++; 1560 - const deferred = defer<string>(); 1561 - this.pendingDeferredMap.set(seq, deferred); 1562 - this.worker?.postMessage({ seq, imageData }); 1563 - return deferred.promise; 1564 - } 1565 -} 1566 \ No newline at end of file 1567 diff --git a/helpers/db/Users.ts b/helpers/db/Users.ts 1568 deleted file mode 100644 1569 index d6deb50..0000000 1570 --- a/helpers/db/Users.ts 1571 +++ /dev/null 1572 @@ -1,12 +0,0 @@ 1573 -import { Column, DataType, Index, Model, PrimaryKey, Table } from "sequelize-typescript"; 1574 - 1575 -@Table 1576 -export default class User extends Model { 1577 - @PrimaryKey 1578 - @Index 1579 - @Column(DataType.TEXT) 1580 - mxid!: string; 1581 - 1582 - @Column(DataType.TEXT) 1583 - public_user_room!: string; 1584 -} 1585 \ No newline at end of file 1586 diff --git a/helpers/event_types.ts b/helpers/event_types.ts 1587 deleted file mode 100644 1588 index 4e3043d..0000000 1589 --- a/helpers/event_types.ts 1590 +++ /dev/null 1591 @@ -1,102 +0,0 @@ 1592 -export type MatrixEventBase = { 1593 - type: string; 1594 - event_id: string; 1595 - room_id: string; 1596 - sender: string; 1597 - origin_server_ts: number; 1598 - unsigned?: { 1599 - redacted_because?: any; 1600 - }; 1601 -}; 1602 - 1603 -export type MatrixStateEventBase = MatrixEventBase & { 1604 - state_key: string; 1605 -}; 1606 - 1607 -export type FileEvent = { 1608 - url: string; 1609 - name: string; 1610 - mimetype: string; 1611 - size: number; 1612 -}; 1613 - 1614 -export type ThumbnailFileEvent = ImageFields & { 1615 - url: string; 1616 - mimetype: string; 1617 - size: number; 1618 -}; 1619 - 1620 -export type ImageFields = { 1621 - width: number; 1622 - height: number; 1623 -}; 1624 - 1625 -export type ThumbnailData = { 1626 - "m.thumbnail"?: ThumbnailFileEvent[]; 1627 - "xyz.amorgan.blurhash": string; 1628 -}; 1629 - 1630 -export type ImageEventContent = ThumbnailData & { 1631 - // TODO maybe not correct as it may be formatted? 1632 - "m.text": string; 1633 - "m.file": FileEvent; 1634 - "m.image": ImageFields; 1635 - "matrixart.tags": string[]; 1636 - // TODO check if correct 1637 - "matrixart.description": string; 1638 - "matrixart.nsfw": boolean; 1639 - "matrixart.license": string; 1640 -}; 1641 - 1642 -export type MessageAlike = { "m.text": string; } | { body: string; mimetype: string; }; 1643 -export type ImageEventContentWithCaption = ImageEventContent & { 1644 - "m.caption": MessageAlike[]; 1645 - // Fake values 1646 - displayname?: string; 1647 -}; 1648 - 1649 -export type ImageEvent = MatrixEventBase & { 1650 - content: ImageEventContentWithCaption; 1651 -}; 1652 - 1653 - 1654 -export type ImageGalleryContent = { 1655 - "m.image_gallery": ImageEventContent[]; 1656 - "m.caption": MessageAlike[]; 1657 - // Fake values 1658 - displayname?: string; 1659 -}; 1660 - 1661 -export type ImageGalleryEvent = MatrixEventBase & { 1662 - content: ImageGalleryContent; 1663 -}; 1664 - 1665 -export type BannerEventContent = { 1666 - "m.text": string; 1667 - "m.file": FileEvent; 1668 - "m.image": ImageFields; 1669 -}; 1670 - 1671 -export type BannerEvent = MatrixEventBase & { 1672 - content: BannerEventContent; 1673 -}; 1674 - 1675 -export type MatrixArtProfileContent = { 1676 - "matrixart.profile.description": string; 1677 - "matrixart.profile.pronouns": string; 1678 - "matrixart.profile.links": { [key: string]: { url: string; name: string; icon_url: string; }; }; 1679 - "matrixart.profile.biography": string; 1680 - // Same as bio 1681 - "m.text": string; 1682 - [key: string]: any; 1683 -}; 1684 - 1685 -// matrixart.profile state 1686 -export type MatrixArtProfile = MatrixStateEventBase & { 1687 - content: MatrixArtProfileContent; 1688 -}; 1689 - 1690 -export type MatrixImageEvents = ImageEvent | ImageGalleryEvent; 1691 -export type MatrixEvent = MatrixImageEvents | BannerEvent | MatrixArtProfile; 1692 - 1693 -export type MatrixContents = MatrixArtProfileContent | BannerEventContent | ImageGalleryContent | ImageEventContentWithCaption | ImageEventContent; 1694 \ No newline at end of file 1695 diff --git a/helpers/init-middleware.ts b/helpers/init-middleware.ts 1696 deleted file mode 100644 1697 index 7b1e44f..0000000 1698 --- a/helpers/init-middleware.ts 1699 +++ /dev/null 1700 @@ -1,25 +0,0 @@ 1701 -// Helper method to wait for a middleware to execute before continuing 1702 - 1703 -import { CorsRequest } from 'cors'; 1704 -import { NextApiResponse } from "next"; 1705 - 1706 -// And to throw an error when an error happens in a middleware 1707 -export default function initMiddleware<T extends CorsRequest = CorsRequest>(middleware: ( 1708 - req: T, 1709 - res: { 1710 - statusCode?: number | undefined; 1711 - setHeader(key: string, value: string): any; 1712 - end(): any; 1713 - }, 1714 - next: (err?: any) => any, 1715 -) => void) { 1716 - return (req: T, res: NextApiResponse) => 1717 - new Promise((resolve, reject) => { 1718 - middleware(req, res, (result) => { 1719 - if (result instanceof Error) { 1720 - return reject(result); 1721 - } 1722 - return resolve(result); 1723 - }); 1724 - }); 1725 -} 1726 \ No newline at end of file 1727 diff --git a/helpers/matrix_client.ts b/helpers/matrix_client.ts 1728 deleted file mode 100644 1729 index 00d6bee..0000000 1730 --- a/helpers/matrix_client.ts 1731 +++ /dev/null 1732 @@ -1,585 +0,0 @@ 1733 -// This file is based on https://github.com/matrix-org/cerulean/blob/1499ca2b80d3a2cc090f75636b1c4db138729b59/src/Client.js 1734 -import { MatrixContents, MatrixEvent } from './event_types'; 1735 -import Storage from './storage'; 1736 - 1737 -export const constMatrixArtServer = process.env.NEXT_PUBLIC_DEFAULT_SERVER_URL ?? "https://matrix.art.midnightthoughts.space"; 1738 - 1739 -export default class MatrixClient { 1740 - private joinedRooms: Map<string, string> = new Map<string, string>(); // room alias -> room ID 1741 - private userProfileCache: Map<string, { displayname?: string; avatar_url?: string; }> = new Map(); // user_id -> {display_name; avatar;} 1742 - get userId(): string | undefined { 1743 - return this._userId; 1744 - } 1745 - get accessToken(): string | undefined { 1746 - return this._accessToken; 1747 - } 1748 - get isGuest(): boolean | undefined { 1749 - return this._isGuest; 1750 - } 1751 - 1752 - get profileRoomId(): string | undefined { 1753 - return this.joinedRooms.get(`#${this.userId}`) ?? this._profileRoomId; 1754 - } 1755 - 1756 - private constructor( 1757 - private storage: Storage, 1758 - private serverUrl?: string, 1759 - private _userId?: string, 1760 - private _accessToken?: string, 1761 - private _isGuest?: boolean, 1762 - private serverName?: string, 1763 - private _profileRoomId?: string 1764 - ) { 1765 - } 1766 - 1767 - public static async init(storage: Storage): Promise<MatrixClient> { 1768 - const serverUrl = await storage.getItem("serverUrl"); 1769 - const _userId = await storage.getItem("userId"); 1770 - const _accessToken = await storage.getItem("accessToken"); 1771 - const _isGuest = await storage.getItem("isGuest") === undefined ? undefined : (await storage.getItem("isGuest") === "true"); 1772 - const serverName = await storage.getItem("serverName"); 1773 - const _profileRoomId = await storage.getItem("profileRoomId"); 1774 - return new MatrixClient(storage, serverUrl, _userId, _accessToken, _isGuest, serverName, _profileRoomId); 1775 - } 1776 - 1777 - private async saveAuthState() { 1778 - await this.storage.setOrDelete("serverUrl", this.serverUrl); 1779 - await this.storage.setOrDelete("userId", this._userId); 1780 - await this.storage.setOrDelete("accessToken", this._accessToken); 1781 - await this.storage.setOrDelete("serverName", this.serverName); 1782 - await this.storage.setOrDelete("isGuest", this._isGuest?.toString()); 1783 - } 1784 - 1785 - private async generateToken(len: number) { 1786 - var arr = new Uint8Array(len / 2); 1787 - if (typeof window !== "undefined") { 1788 - window.crypto.getRandomValues(arr); 1789 - } else { 1790 - const crypto = await import("crypto"); 1791 - crypto.randomFillSync(arr); 1792 - } 1793 - /* eslint-disable unicorn/prefer-spread */ 1794 - return Array.from(arr, (num) => { 1795 - return num.toString(16).padStart(2, "0"); 1796 - }).join(""); 1797 - /* eslint-enable unicorn/prefer-spread */ 1798 - } 1799 - 1800 - async registerAsGuest(serverUrl: string) { 1801 - let username = "matrix_art_guest_" + Date.now(); 1802 - let password = this.generateToken(32); 1803 - 1804 - let data; 1805 - if (process.env.NEXT_PUBLIC_ENV !== "test") { 1806 - try { 1807 - data = await this.fetchJson(`${serverUrl}/r0/register?kind=guest`, { 1808 - method: "POST", 1809 - body: JSON.stringify({ 1810 - auth: { 1811 - type: "m.login.dummy", 1812 - }, 1813 - username: username, 1814 - password: password, 1815 - }), 1816 - }); 1817 - } catch (error) { 1818 - console.error(`${serverUrl}/r0/register?kind=guest:\n${error}`); 1819 - throw new Error("Failed to register new guest"); 1820 - } 1821 - } else { 1822 - data = { 1823 - user_id: "1", 1824 - access_token: "1", 1825 - home_server: "https://blub", 1826 - }; 1827 - } 1828 - this.serverUrl = serverUrl; 1829 - this._userId = data.user_id; 1830 - this._accessToken = data.access_token; 1831 - this.serverName = data.home_server; 1832 - this._isGuest = true; 1833 - this.saveAuthState(); 1834 - console.log("Registered as guest", username); 1835 - } 1836 - 1837 - async logout(suppressLogout: boolean) { 1838 - try { 1839 - if (!suppressLogout) { 1840 - await this.fetchJson(`${this.serverUrl}/r0/logout`, { 1841 - method: "POST", 1842 - body: "{}", 1843 - headers: { Authorization: `Bearer ${this.accessToken}` }, 1844 - }); 1845 - } 1846 - } finally { 1847 - console.log("Removing login credentials"); 1848 - this.serverUrl = undefined; 1849 - this._userId = undefined; 1850 - this._accessToken = undefined; 1851 - this._isGuest = undefined; 1852 - this.serverName = undefined; 1853 - this.saveAuthState(); 1854 - } 1855 - } 1856 - 1857 - private async fetchJson(fullUrl: string, fetchParams: any) { 1858 - // Do not execute requests in tests! 1859 - if (process.env.NEXT_PUBLIC_ENV === "test") { 1860 - return; 1861 - } 1862 - 1863 - const response = await fetch(fullUrl, fetchParams); 1864 - const data = await response.json(); 1865 - if (response.status === 429) { 1866 - const retry_after: number = data.retry_after_ms; 1867 - return new Promise((resolve) => { 1868 - setTimeout(() => { resolve(this.fetchJson(fullUrl, fetchParams)); }, retry_after); 1869 - }); 1870 - } 1871 - if (response.status !== 200) { 1872 - if (data.errcode === "M_UNKNOWN_TOKEN") { 1873 - console.log("unknown token, logging user out:", data); 1874 - // suppressLogout so we don't recursively call fetchJson 1875 - await this.logout(true); 1876 - } 1877 - throw data; 1878 - } 1879 - return data; 1880 - } 1881 - 1882 - async login(serverUrl: string, username: any, password: any, saveToStorage: any) { 1883 - const data = await this.fetchJson(`${serverUrl}/r0/login`, { 1884 - method: "POST", 1885 - body: JSON.stringify({ 1886 - type: "m.login.password", 1887 - identifier: { 1888 - type: "m.id.user", 1889 - user: username, 1890 - }, 1891 - password: password, 1892 - }), 1893 - }); 1894 - this.serverUrl = serverUrl; 1895 - this._userId = data.user_id; 1896 - this._accessToken = data.access_token; 1897 - this._isGuest = false; 1898 - this.serverName = data.home_server; 1899 - if (saveToStorage) { 1900 - this.saveAuthState(); 1901 - } 1902 - } 1903 - 1904 - async getOpenidToken(): Promise<string> { 1905 - const data = await this.fetchJson(`${this.serverUrl}/r0/user/${this.userId}/openid/request_token`, { 1906 - method: "POST", 1907 - body: "{}", 1908 - headers: { Authorization: `Bearer ${this.accessToken}` }, 1909 - }); 1910 - return process.env.NEXT_PUBLIC_ENV !== "test" ? data.access_token : "openid"; 1911 - } 1912 - 1913 - async register(serverUrl: string, username: string, password: string) { 1914 - console.log(`${serverUrl}/r0/register`); 1915 - const data = await this.fetchJson(`${serverUrl}/r0/register`, { 1916 - method: "POST", 1917 - body: JSON.stringify({ 1918 - auth: { 1919 - type: "m.login.dummy", 1920 - }, 1921 - username: username, 1922 - password: password, 1923 - }), 1924 - }); 1925 - this.serverUrl = serverUrl; 1926 - this._userId = data.user_id; 1927 - this._accessToken = data.access_token; 1928 - this._isGuest = false; 1929 - this.serverName = data.home_server; 1930 - this.saveAuthState(); 1931 - 1932 - // Add user to directory 1933 - await this.fetchJson(`/api/directory`, { 1934 - method: "POST", 1935 - body: JSON.stringify({ 1936 - user_id: username, 1937 - user_room: "@" + this.userId, 1938 - }), 1939 - }); 1940 - } 1941 - 1942 - async setDisplayname(newDisplayname: string) { 1943 - if (process.env.NEXT_PUBLIC_ENV === "test") { 1944 - if (this.userProfileCache.has(this.userId!)) { 1945 - const old = this.userProfileCache.get(this.userId!)!; 1946 - old.displayname = newDisplayname; 1947 - this.userProfileCache.set(this.userId!, old); 1948 - } else { 1949 - await this.getProfile(this.userId!); 1950 - } 1951 - return; 1952 - } 1953 - 1954 - await this.fetchJson( 1955 - `${this.serverUrl}/r0/profile/${encodeURIComponent(this.userId!)}/displayname`, 1956 - { 1957 - method: "PUT", 1958 - body: JSON.stringify({ displayname: newDisplayname }), 1959 - headers: { Authorization: `Bearer ${this.accessToken}` }, 1960 - } 1961 - ); 1962 - if (this.userProfileCache.has(this.userId!)) { 1963 - const old = this.userProfileCache.get(this.userId!)!; 1964 - old.displayname = newDisplayname; 1965 - this.userProfileCache.set(this.userId!, old); 1966 - } else { 1967 - await this.getProfile(this.userId!); 1968 - } 1969 - } 1970 - 1971 - async setAvatarUrl(newAvatarUrl: string) { 1972 - if (process.env.NEXT_PUBLIC_ENV === "test") { 1973 - if (this.userProfileCache.has(this.userId!)) { 1974 - const old = this.userProfileCache.get(this.userId!)!; 1975 - old.avatar_url = newAvatarUrl; 1976 - this.userProfileCache.set(this.userId!, old); 1977 - } else { 1978 - await this.getProfile(this.userId!); 1979 - } 1980 - return; 1981 - } 1982 - 1983 - await this.fetchJson( 1984 - `${this.serverUrl}/r0/profile/${encodeURIComponent(this.userId!)}/avatar_url`, 1985 - { 1986 - method: "PUT", 1987 - body: JSON.stringify({ avatar_url: newAvatarUrl }), 1988 - headers: { Authorization: `Bearer ${this.accessToken}` }, 1989 - } 1990 - ); 1991 - if (this.userProfileCache.has(this.userId!)) { 1992 - const old = this.userProfileCache.get(this.userId!)!; 1993 - old.avatar_url = newAvatarUrl; 1994 - this.userProfileCache.set(this.userId!, old); 1995 - } else { 1996 - await this.getProfile(this.userId!); 1997 - } 1998 - } 1999 - 2000 - async getProfile(userId: string): Promise<{ displayname?: string; avatar_url?: string; }> { 2001 - if (process.env.NEXT_PUBLIC_ENV === "test") { 2002 - const data = { 2003 - displayname: "Test" 2004 - }; 2005 - this.userProfileCache.set(userId, data); 2006 - return data; 2007 - } 2008 - if (this.userProfileCache.has(userId)) { 2009 - console.debug(`Returning cached copy of ${userId}'s profile`); 2010 - return this.userProfileCache.get(userId)!; 2011 - } 2012 - console.debug(`Fetching fresh copy of ${userId}'s profile`); 2013 - const data = await this.fetchJson( 2014 - `${this.serverUrl}/r0/profile/${encodeURIComponent(userId)}`, 2015 - { 2016 - method: "GET", 2017 - headers: { Authorization: `Bearer ${this.accessToken}` }, 2018 - } 2019 - ); 2020 - this.userProfileCache.set(userId, data); 2021 - return data; 2022 - } 2023 - 2024 - /** 2025 - * Join a room by alias. If already joined, no-ops. If joining our own profile room, 2026 - * attempts to create it. 2027 - * @param {string} roomAlias The room alias to join 2028 - * @returns {string} The room ID of the joined room. 2029 - */ 2030 - async joinProfileRoom(roomAlias: string): Promise<string> { 2031 - if (process.env.NEXT_PUBLIC_ENV === "test") { 2032 - return "!1:blub"; 2033 - } 2034 - const roomId = this.joinedRooms.get(roomAlias); 2035 - if (roomId) { 2036 - return roomId; 2037 - } 2038 - const isMyself = roomAlias.slice(1) === this.userId; 2039 - 2040 - try { 2041 - let data = await this.fetchJson( 2042 - `${this.serverUrl}/r0/join/${encodeURIComponent(roomAlias)}`, 2043 - { 2044 - method: "POST", 2045 - body: "{}", 2046 - headers: { Authorization: `Bearer ${this.accessToken}` }, 2047 - } 2048 - ); 2049 - if (isMyself) { 2050 - await this.storage?.setOrDelete("profileRoomId", data.room_id); 2051 - } 2052 - this.joinedRooms.set(roomAlias, data.room_id); 2053 - return data.room_id; 2054 - } catch (error) { 2055 - // try to make our Profile room 2056 - if (isMyself) { 2057 - let data = await this.fetchJson( 2058 - `${this.serverUrl}/r0/createRoom`, 2059 - { 2060 - method: "POST", 2061 - body: JSON.stringify({ 2062 - preset: "public_chat", 2063 - name: `${this.userId}'s Profile`, 2064 - topic: "Matrix Art Profile", 2065 - room_alias_name: "@" + MatrixClient.localpart(this.userId!), 2066 - creation_content: { 2067 - type: "matrixart.profile" 2068 - }, 2069 - power_level_content_override: { 2070 - state_default: 100, 2071 - events_default: 100, 2072 - kick: 100, 2073 - invite: 100, 2074 - ban: 100, 2075 - redact: 100, 2076 - }, 2077 - initial_state: [ 2078 - { 2079 - type: "m.room.guest_access", 2080 - content: { 2081 - guest_access: "can_join" 2082 - }, 2083 - state_key: "" 2084 - } 2085 - ] 2086 - }), 2087 - headers: { 2088 - Authorization: `Bearer ${this.accessToken}`, 2089 - }, 2090 - } 2091 - ); 2092 - this.joinedRooms.set(roomAlias, data.room_id); 2093 - 2094 - await this.storage?.setOrDelete("profileRoomId", data.room_id); 2095 - return data.room_id; 2096 - } else { 2097 - throw error; 2098 - } 2099 - } 2100 - } 2101 - 2102 - private static localpart(userId: string) { 2103 - return userId.split(":")[0].slice(1); 2104 - } 2105 - 2106 - downloadLink(mxcUri: string): string | undefined { 2107 - if (!mxcUri) { 2108 - return; 2109 - } 2110 - if (mxcUri.indexOf("mxc://") !== 0) { 2111 - return; 2112 - } 2113 - return constMatrixArtServer + "/_matrix/media/r0/download/" + mxcUri.split("mxc://")[1]; 2114 - } 2115 - 2116 - thumbnailLink(mxcUri: string, method: "scale" | "crop", width: number, height: number): string | undefined { 2117 - if (!mxcUri) { 2118 - return; 2119 - } 2120 - if (mxcUri.indexOf("mxc://") !== 0) { 2121 - return; 2122 - } 2123 - return `${constMatrixArtServer}/_matrix/media/r0/thumbnail/${mxcUri.split("mxc://")[1]}?method=${encodeURIComponent(method)}&width=${encodeURIComponent(width)}&height=${encodeURIComponent(height)}`; 2124 - } 2125 - 2126 - async sendEvent(roomId: string, event_type: string, content: MatrixContents): Promise<string> { 2127 - if (process.env.NEXT_PUBLIC_ENV === "test") { 2128 - return "$abcde"; 2129 - } 2130 - const txnId = Date.now(); 2131 - const data = await this.fetchJson( 2132 - `${this.serverUrl}/r0/rooms/${encodeURIComponent( 2133 - roomId 2134 - )}/send/${event_type}/${encodeURIComponent(txnId)}`, 2135 - { 2136 - method: "PUT", 2137 - body: JSON.stringify(content), 2138 - headers: { Authorization: `Bearer ${this.accessToken}` }, 2139 - } 2140 - ); 2141 - return data.event_id; 2142 - } 2143 - 2144 - async uploadFile(file: File | Blob): Promise<string> { 2145 - if (process.env.NEXT_PUBLIC_ENV === "test") { 2146 - return "mxc://blub/blub"; 2147 - } 2148 - const fileName = (file as File).name ?? Date.now(); 2149 - const mediaUrl = this.serverUrl?.slice(0, -1 * "/client".length); 2150 - const res = await fetch( 2151 - `${mediaUrl}/media/r0/upload?filename=${encodeURIComponent( 2152 - fileName 2153 - )}`, 2154 - { 2155 - method: "POST", 2156 - body: file, 2157 - headers: { 2158 - Authorization: `Bearer ${this.accessToken}`, 2159 - }, 2160 - } 2161 - ); 2162 - const data = await res.json(); 2163 - if (!res.ok) { 2164 - throw data; 2165 - } 2166 - return data.content_uri; 2167 - } 2168 - 2169 - /// Timeline for followed rooms 2170 - // getAggregatedTimeline returns all events from all timeline rooms being followed. 2171 - // This is done by calling `/sync` and keeping messages for all rooms that have an #@ alias. 2172 - async getAggregatedTimeline() { 2173 - let info: { 2174 - timeline: any[], 2175 - from: string | undefined; 2176 - } = { 2177 - timeline: [], 2178 - from: undefined, 2179 - }; 2180 - if (!this.accessToken) { 2181 - console.error("No access token"); 2182 - return info; 2183 - } 2184 - const filterJson = JSON.stringify({ 2185 - room: { 2186 - timeline: { 2187 - limit: 100, 2188 - }, 2189 - }, 2190 - }); 2191 - let syncData = await this.fetchJson( 2192 - `${this.serverUrl}/r0/sync?filter=${filterJson}`, 2193 - { 2194 - headers: { Authorization: `Bearer ${this.accessToken}` }, 2195 - } 2196 - ); 2197 - // filter only @# rooms then add in all timeline events 2198 - const roomIds = Object.keys(syncData.rooms.join).filter((roomId) => { 2199 - // try to find an #@ alias 2200 - let foundAlias = false; 2201 - for (let ev of syncData.rooms.join[roomId].state.events) { 2202 - if (ev.type === "m.room.aliases" && ev.content.aliases) { 2203 - for (let alias of ev.content.aliases) { 2204 - if (alias.startsWith("#@")) { 2205 - foundAlias = true; 2206 - break; 2207 - } 2208 - } 2209 - } 2210 - if (foundAlias) { 2211 - break; 2212 - } 2213 - } 2214 - return foundAlias; 2215 - }); 2216 - let events = []; 2217 - for (let roomId of roomIds) { 2218 - for (let ev of syncData.rooms.join[roomId].timeline.events) { 2219 - ev.room_id = roomId; 2220 - events.push(ev); 2221 - } 2222 - } 2223 - // sort by origin_server_ts 2224 - info.timeline = events.sort((a, b) => { 2225 - if (a.origin_server_ts === b.origin_server_ts) { 2226 - return 0; 2227 - } 2228 - if (a.origin_server_ts < b.origin_server_ts) { 2229 - return 1; 2230 - } 2231 - return -1; 2232 - }); 2233 - info.from = syncData.next_batch; 2234 - return info; 2235 - } 2236 - 2237 - async getTimeline(roomId: string, limit: number, filter: object = { limit: 30, types: ["m.image", "m.image_gallery"] }): Promise<MatrixEvent[]> {// eslint-disable-line unicorn/no-object-as-default-parameter 2238 - if (process.env.NEXT_PUBLIC_ENV === "test") { 2239 - return [ 2240 - { 2241 - type: "m.image", 2242 - room_id: '!hxnnsrGMUfcrXPEPZu:art.midnightthoughts.space', 2243 - event_id: '$QtbB-3JYAEOXJeC-mrZqFIEqon4uBLYVwTSw2SDWrJg', 2244 - origin_server_ts: 1_643_317_935_965, 2245 - content: { 2246 - "m.caption": [ 2247 - { 2248 - "m.text": "Test2" 2249 - } 2250 - ], 2251 - "m.thumbnail": [ 2252 - { 2253 - "height": 500, 2254 - "mimetype": "image/jpeg", 2255 - "size": 126_199, 2256 - "url": "mxc://art.midnightthoughts.space/b73141659586a6d690fe2c3edd43776b19f51529", 2257 - "width": 800 2258 - } 2259 - ], 2260 - 'm.file': { 2261 - mimetype: 'image/png', 2262 - name: '767-F_xp11 - 2021-04-13 20.23.07.png', 2263 - size: 2_129_309, 2264 - url: 'mxc://art.midnightthoughts.space/21a2b8190b756259510617d3c4c662d1e7c82141' 2265 - }, 2266 - 'm.image': { height: 1040, width: 1920 }, 2267 - 'm.text': 'Test', 2268 - 'matrixart.description': 'test2', 2269 - 'matrixart.license': 'cc-by-4.0', 2270 - 'matrixart.nsfw': false, 2271 - 'matrixart.tags': ['test', 'test2'], 2272 - 'xyz.amorgan.blurhash': 'LJA0tGWES2oL~pWDayj[.8WBsAbH' 2273 - }, 2274 - sender: '@test:art.midnightthoughts.space' 2275 - } 2276 - ]; 2277 - } 2278 - if (!this.accessToken) { 2279 - console.error("No access token"); 2280 - return []; 2281 - } 2282 - limit = limit ?? 100; 2283 - let seenEvents = 0; 2284 - let from; 2285 - let msgs: MatrixEvent[] = []; 2286 - while (seenEvents < limit) { 2287 - let fromQuery = ``; 2288 - if (from) { 2289 - fromQuery = `&from=${from}`; 2290 - } 2291 - let data = await this.fetchJson( 2292 - `${this.serverUrl}/r0/rooms/${roomId}/messages?dir=b&limit=${limit}${fromQuery}&filter=${JSON.stringify(filter)}`, 2293 - { 2294 - headers: { Authorization: `Bearer ${this.accessToken}` }, 2295 - } 2296 - ); 2297 - from = data.end; 2298 - for (const ev of data.chunk) { 2299 - msgs.push(ev); 2300 - } 2301 - seenEvents += msgs.length; 2302 - if (data.chunk.length < limit) { 2303 - break; 2304 - } 2305 - seenEvents += 1; // just in case, to stop infinite loops 2306 - } 2307 - return msgs; 2308 - } 2309 - 2310 - /** 2311 - * Follow a user by subscribing to their room. 2312 - * @param {string} userId 2313 - */ 2314 - async followUser(userId: string) { 2315 - return await this.joinProfileRoom(userId); 2316 - } 2317 -} 2318 \ No newline at end of file 2319 diff --git a/helpers/ss-well-known.ts b/helpers/ss-well-known.ts 2320 deleted file mode 100644 2321 index caeda46..0000000 2322 --- a/helpers/ss-well-known.ts 2323 +++ /dev/null 2324 @@ -1,177 +0,0 @@ 2325 -import { promises } from "node:dns"; 2326 -import { isIP } from "node:net"; 2327 - 2328 -type SSWellKnownContent = { 2329 - "m.server": string; 2330 -}; 2331 - 2332 -type OpenIDResp = { 2333 - sub: string; 2334 -}; 2335 - 2336 -export default class ServerOpenID { 2337 - private resolver = new promises.Resolver(); 2338 - private splitRegex = /(.*)(:)(\d+)$/; 2339 - 2340 - constructor() { 2341 - this.resolver.setServers(['95.217.202.35', '8.8.8.8', '8.8.4.4']); 2342 - } 2343 - 2344 - private async lookupWellKnown(server: string): Promise<{ address: string; host_header: string; } | undefined> { 2345 - // Step 3 of server resolving 2346 - const resp = await fetch(`https://${server}/.well-known/matrix/server`, { method: "GET" }); 2347 - if (resp.status === 200) { 2348 - const data: SSWellKnownContent = await resp.json(); 2349 - 2350 - 2351 - // If we have 1 part we have no port. If we have 5 we have a port. 2352 - // This regex gives us the port at index 4 and ip at index 1. 2353 - const delegatedServer = data["m.server"]; 2354 - const possibleDelegatedServerParts = delegatedServer.split(this.splitRegex); 2355 - if (possibleDelegatedServerParts.length === 1) { 2356 - // Step 3.1 2357 - if (isIP(possibleDelegatedServerParts[0]) > 0) { 2358 - return { address: `${delegatedServer}:8448`, host_header: delegatedServer }; 2359 - } else { 2360 - // Step 3.3.1 2361 - const srv = await this.resolver.resolveSrv(`_matrix._tcp.${possibleDelegatedServerParts[0]}`); 2362 - if (srv.length > 0) { 2363 - // Step 3.3.3 2364 - if (isIP(srv[0].name) > 0) { 2365 - return { address: `${srv[0].name}:${srv[0].port}`, host_header: delegatedServer }; 2366 - } else { 2367 - // Step 3.3.2 2368 - const result_v4 = await this.resolver.resolve(srv[0].name, "A"); 2369 - if (result_v4.length > 0) { 2370 - return { address: `${result_v4[0]}:${srv[0].port}`, host_header: delegatedServer }; 2371 - } 2372 - 2373 - const result_v6 = await this.resolver.resolve(srv[0].name, "AAAA"); 2374 - if (result_v6.length > 0) { 2375 - return { address: `[${result_v6[0]}]:${srv[0].port}`, host_header: delegatedServer }; 2376 - } 2377 - throw new Error("Unable to resolve the server"); 2378 - } 2379 - } else { 2380 - // Step 3.4 2381 - const result_v4 = await this.resolver.resolve(possibleDelegatedServerParts[0], "A"); 2382 - if (result_v4.length > 0) { 2383 - return { address: `${result_v4[0]}:8448`, host_header: delegatedServer }; 2384 - } 2385 - 2386 - const result_v6 = await this.resolver.resolve(possibleDelegatedServerParts[0], "AAAA"); 2387 - if (result_v6.length > 0) { 2388 - return { address: `[${result_v6[0]}]:8448`, host_header: delegatedServer }; 2389 - } 2390 - 2391 - throw new Error("Unable to resolve the server"); 2392 - } 2393 - } 2394 - } else if (possibleDelegatedServerParts.length === 5) { 2395 - // Step 3.1 2396 - if (isIP(possibleDelegatedServerParts[1]) > 0) { 2397 - return { address: delegatedServer, host_header: delegatedServer }; 2398 - } else { 2399 - // Step 3.2 2400 - const result_v4 = await this.resolver.resolve(possibleDelegatedServerParts[1], "A"); 2401 - if (result_v4.length > 0) { 2402 - return { address: `${result_v4[0]}:${possibleDelegatedServerParts[4]}`, host_header: delegatedServer }; 2403 - } 2404 - 2405 - const result_v6 = await this.resolver.resolve(possibleDelegatedServerParts[1], "AAAA"); 2406 - if (result_v6.length > 0) { 2407 - return { address: `[${result_v6[0]}]:${possibleDelegatedServerParts[4]}`, host_header: delegatedServer }; 2408 - } 2409 - 2410 - throw new Error("Unable to resolve the server"); 2411 - } 2412 - } 2413 - } 2414 - return undefined; 2415 - } 2416 - 2417 - private async lookup(server: string): Promise<{ address: string; host_header: string; }> { 2418 - // If we have 1 part we have no port. If we have 5 we have a port. 2419 - // This regex gives us the port at index 4 and ip at index 1. 2420 - const possibleServerParts = server.split(this.splitRegex); 2421 - 2422 - // Step 1 of Server Discovery 2423 - if (possibleServerParts.length === 1) { 2424 - if (isIP(possibleServerParts[0]) > 0) { 2425 - return { address: `${server}:8448`, host_header: server }; 2426 - } 2427 - } else if (possibleServerParts.length === 5) { 2428 - if (isIP(possibleServerParts[1]) > 0) { 2429 - return { address: server, host_header: server }; 2430 - } else { 2431 - // Step 2 of Server Discovery. 2432 - const result_v4 = await this.resolver.resolve(possibleServerParts[1], "A"); 2433 - if (result_v4.length > 0) { 2434 - return { address: `${result_v4[0]}:${possibleServerParts[4]}`, host_header: server }; 2435 - } 2436 - 2437 - const result_v6 = await this.resolver.resolve(possibleServerParts[1], "AAAA"); 2438 - if (result_v6.length > 0) { 2439 - return { address: `[${result_v6[0]}]:${possibleServerParts[4]}`, host_header: server }; 2440 - } 2441 - 2442 - throw new Error("Unable to resolve the server"); 2443 - } 2444 - } 2445 - try { 2446 - const wellKnownResult = await this.lookupWellKnown(server); 2447 - if (wellKnownResult) { 2448 - return wellKnownResult; 2449 - } 2450 - } catch (error) { 2451 - throw error; 2452 - } 2453 - // Step 4 2454 - const srv = await this.resolver.resolveSrv(`_matrix._tcp.${server}`); 2455 - if (srv.length > 0) { 2456 - if (isIP(srv[0].name) > 0) { 2457 - return { address: `${srv[0].name}:${srv[0].port}`, host_header: server }; 2458 - } else { 2459 - const result_v4 = await this.resolver.resolve(srv[0].name, "A"); 2460 - if (result_v4.length > 0) { 2461 - return { address: `${result_v4[0]}:${srv[0].port}`, host_header: server }; 2462 - } 2463 - 2464 - const result_v6 = await this.resolver.resolve(srv[0].name, "AAAA"); 2465 - if (result_v6.length > 0) { 2466 - return { address: `[${result_v6[0]}]:${srv[0].port}`, host_header: server }; 2467 - } 2468 - throw new Error("Unable to resolve the server"); 2469 - } 2470 - } else { 2471 - // Step 5 2472 - const result_v4 = await this.resolver.resolve(server, "A"); 2473 - if (result_v4.length > 0) { 2474 - return { address: `${result_v4[0]}:8448`, host_header: server }; 2475 - } 2476 - 2477 - const result_v6 = await this.resolver.resolve(server, "AAAA"); 2478 - if (result_v6.length > 0) { 2479 - return { address: `[${result_v6[0]}]:8448`, host_header: server }; 2480 - } 2481 - 2482 - throw new Error("Unable to resolve the server"); 2483 - } 2484 - } 2485 - 2486 - public async verify(mxid: string, openidToken: string): Promise<boolean> { 2487 - try { 2488 - const server_address = await this.lookup(mxid.slice(mxid.indexOf(":") + 1)); 2489 - const resp = await fetch(`https://${server_address.address}/_matrix/federation/v1/openid/userinfo?access_token=${openidToken}`, { method: "GET", headers: { "Host": server_address.host_header } }); 2490 - if (resp.status === 200) { 2491 - const data: OpenIDResp = await resp.json(); 2492 - return (data.sub === mxid); 2493 - } else { 2494 - return false; 2495 - } 2496 - } catch (error: any) { 2497 - console.error(error); 2498 - return false; 2499 - } 2500 - } 2501 -} 2502 \ No newline at end of file 2503 diff --git a/helpers/storage.ts b/helpers/storage.ts 2504 deleted file mode 100644 2505 index 16bdb3e..0000000 2506 --- a/helpers/storage.ts 2507 +++ /dev/null 2508 @@ -1,129 +0,0 @@ 2509 -const STORAGE_VERSION = 6; 2510 -export default class Storage { 2511 - private constructor(private prefix: string, private localFolder?: string) { } 2512 - 2513 - public static async init(prefix: string): Promise<Storage> { 2514 - if (typeof window === "undefined") { 2515 - const path = await import('path'); 2516 - const fs = await import('fs'); 2517 - const dir = path.join(process.cwd(), "localstorage"); 2518 - const dir_with_prefix = path.join(dir, prefix); 2519 - try { 2520 - await fs.promises.stat(dir_with_prefix); 2521 - } catch { 2522 - await fs.promises.mkdir(dir_with_prefix, { recursive: true }); 2523 - } 2524 - return new Storage(prefix, dir); 2525 - } else { 2526 - return new Storage(prefix); 2527 - } 2528 - } 2529 - 2530 - private async ensureVersion() { 2531 - let version; 2532 - if (typeof window !== "undefined") { 2533 - const localforage = await import('localforage'); 2534 - version = await localforage.getItem("version"); 2535 - } else { 2536 - try { 2537 - const fs = await import('fs'); 2538 - const path = await import('path'); 2539 - version = await fs.promises.readFile(path.join(this.localFolder!, "version"), { encoding: "utf8" }); 2540 - } catch { 2541 - //No-op 2542 - } 2543 - } 2544 - if (version === undefined || version === null || version !== STORAGE_VERSION.toString()) { 2545 - if (typeof window !== "undefined") { 2546 - const localforage = await import('localforage'); 2547 - await localforage.clear(); 2548 - await localforage.setItem("version", STORAGE_VERSION.toString()); 2549 - } else { 2550 - const fs = await import('fs'); 2551 - const path = await import('path'); 2552 - try { 2553 - const stat = await fs.promises.stat(path.join(this.localFolder!, "version")); 2554 - if (stat.isFile()) { 2555 - await fs.promises.unlink(path.join(this.localFolder!, "version")); 2556 - } 2557 - } catch { } 2558 - await fs.promises.writeFile(path.join(this.localFolder!, "version"), STORAGE_VERSION.toString(), { encoding: "utf8", flag: "w+" }); 2559 - } 2560 - } 2561 - } 2562 - 2563 - async getItem(key: string): Promise<string | undefined> { 2564 - this.ensureVersion(); 2565 - if (typeof window !== "undefined") { 2566 - const localforage = await import('localforage'); 2567 - const item = await localforage.getItem(this.prefix + key) as string | null; 2568 - if (item === null) { 2569 - return undefined; 2570 - } 2571 - return item; 2572 - } else { 2573 - try { 2574 - const fs = await import('fs'); 2575 - const path = await import('path'); 2576 - try { 2577 - const stat = await fs.promises.stat(path.join(this.localFolder!, this.prefix, key)); 2578 - if (stat.isFile()) { 2579 - return fs.promises.readFile(path.join(this.localFolder!, this.prefix, key), { encoding: "utf8" }); 2580 - } 2581 - } catch { } 2582 - } catch { 2583 - //No-op 2584 - } 2585 - } 2586 - } 2587 - 2588 - async setItem(key: string, value: string): Promise<void> { 2589 - this.ensureVersion(); 2590 - if (typeof window !== "undefined") { 2591 - const localforage = await import('localforage'); 2592 - await localforage.setItem(this.prefix + key, value); 2593 - } else { 2594 - try { 2595 - const fs = await import('fs'); 2596 - const path = await import('path'); 2597 - return await fs.promises.writeFile(path.join(this.localFolder!, this.prefix, key), value, { encoding: "utf8", flag: "w+" }); 2598 - } catch { 2599 - //No-op 2600 - } 2601 - } 2602 - } 2603 - 2604 - async removeItem(key: string): Promise<void> { 2605 - this.ensureVersion(); 2606 - if (typeof window !== "undefined") { 2607 - const localforage = await import('localforage'); 2608 - await localforage.removeItem(this.prefix + key); 2609 - } else { 2610 - try { 2611 - const fs = await import('fs'); 2612 - const path = await import('path'); 2613 - try { 2614 - const file_path = path.join(this.localFolder!, this.prefix, key); 2615 - const stat = await fs.promises.stat(file_path); 2616 - console.log("file_path:", file_path); 2617 - console.log("stat:", stat.isFile()); 2618 - if (stat.isFile()) { 2619 - console.log("unlink"); 2620 - await fs.promises.unlink(file_path); 2621 - console.log("unlinked"); 2622 - } 2623 - } catch { } 2624 - } catch { 2625 - //No-op 2626 - } 2627 - } 2628 - } 2629 - 2630 - async setOrDelete(key: string, value?: string): Promise<void> { 2631 - if (value) { 2632 - await this.setItem(key, value); 2633 - } else { 2634 - await this.removeItem(key); 2635 - } 2636 - } 2637 -} 2638 \ No newline at end of file 2639 diff --git a/helpers/utils.ts b/helpers/utils.ts 2640 deleted file mode 100644 2641 index f0b92cf..0000000 2642 --- a/helpers/utils.ts 2643 +++ /dev/null 2644 @@ -1,60 +0,0 @@ 2645 -export interface IDeferred<T> { 2646 - resolve: (value: T) => void; 2647 - reject: (reason?: any) => void; 2648 - promise: Promise<T>; 2649 -} 2650 - 2651 -// Returns a Deferred 2652 -export function defer<T = void>(): IDeferred<T> { 2653 - let resolve!: (value: T) => void; 2654 - let reject!: (reason?: any) => void; 2655 - 2656 - const promise = new Promise<T>((_resolve, _reject) => { 2657 - resolve = _resolve; 2658 - reject = _reject; 2659 - }); 2660 - 2661 - return { resolve, reject, promise }; 2662 -} 2663 - 2664 -export function getLicenseUrl(license_type: string): string { 2665 - switch (license_type) { 2666 - case "cc-by-4.0": 2667 - return "https://creativecommons.org/licenses/by/4.0/"; 2668 - case "cc-by-sa-4.0": 2669 - return "https://creativecommons.org/licenses/by-sa/4.0/"; 2670 - case "cc-by-nc-4.0": 2671 - return "https://creativecommons.org/licenses/by-nc/4.0/"; 2672 - case "cc-by-nc-sa-4.0": 2673 - return "https://creativecommons.org/licenses/by-nc-sa/4.0/"; 2674 - case "cc-by-nd-4.0": 2675 - return "https://creativecommons.org/licenses/by-nd/4.0/"; 2676 - case "cc-by-nc-nd-4.0": 2677 - return "https://creativecommons.org/licenses/by-nc-nd/4.0/"; 2678 - case "CC0-1.0": 2679 - return "https://creativecommons.org/publicdomain/zero/1.0/"; 2680 - default: 2681 - return ""; 2682 - } 2683 -} 2684 - 2685 -export function getLicenseName(license_type: string): string { 2686 - switch (license_type) { 2687 - case "cc-by-4.0": 2688 - return "Attribution 4.0 International (CC BY 4.0)"; 2689 - case "cc-by-sa-4.0": 2690 - return "Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)"; 2691 - case "cc-by-nc-4.0": 2692 - return "Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)"; 2693 - case "cc-by-nc-sa-4.0": 2694 - return "Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)"; 2695 - case "cc-by-nd-4.0": 2696 - return "Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)"; 2697 - case "cc-by-nc-nd-4.0": 2698 - return "Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)"; 2699 - case "CC0-1.0": 2700 - return "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication"; 2701 - default: 2702 - return "Unknown License"; 2703 - } 2704 -} 2705 \ No newline at end of file 2706 diff --git a/helpers/workers/blurhash.worker.ts b/helpers/workers/blurhash.worker.ts 2707 deleted file mode 100644 2708 index c4198b3..0000000 2709 --- a/helpers/workers/blurhash.worker.ts 2710 +++ /dev/null 2711 @@ -1,35 +0,0 @@ 2712 -/* 2713 -Copyright 2021 The Matrix.org Foundation C.I.C. 2714 -Licensed under the Apache License, Version 2.0 (the "License"); 2715 -you may not use this file except in compliance with the License. 2716 -You may obtain a copy of the License at 2717 - http://www.apache.org/licenses/LICENSE-2.0 2718 -Unless required by applicable law or agreed to in writing, software 2719 -distributed under the License is distributed on an "AS IS" BASIS, 2720 -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2721 -See the License for the specific language governing permissions and 2722 -limitations under the License. 2723 -*/ 2724 - 2725 -import { encode } from "blurhash"; 2726 - 2727 -const ctx: Worker = self as any; 2728 - 2729 -interface IBlurhashWorkerRequest { 2730 - seq: number; 2731 - imageData: ImageData; 2732 -} 2733 - 2734 -ctx.addEventListener("message", (event: MessageEvent<IBlurhashWorkerRequest>): void => { 2735 - const { seq, imageData } = event.data; 2736 - const blurhash = encode( 2737 - imageData.data, 2738 - imageData.width, 2739 - imageData.height, 2740 - // use 4 components on the longer dimension, if square then both 2741 - imageData.width >= imageData.height ? 4 : 3, 2742 - imageData.height >= imageData.width ? 4 : 3, 2743 - ); 2744 - 2745 - ctx.postMessage({ seq, blurhash }); 2746 -}); 2747 \ No newline at end of file 2748 diff --git a/i18next-parser.config.js b/i18next-parser.config.js 2749 deleted file mode 100644 2750 index db123ca..0000000 2751 --- a/i18next-parser.config.js 2752 +++ /dev/null 2753 @@ -1,8 +0,0 @@ 2754 -module.exports = { 2755 - locales: ['en'], 2756 - defaultNamespace: 'common', 2757 - output: 'public/locales/$LOCALE/$NAMESPACE.json', 2758 - indentation: 4, 2759 - namespaceSeparator: false, 2760 - keySeparator: false 2761 -} 2762 \ No newline at end of file 2763 diff --git a/index.html b/index.html 2764 new file mode 100644 2765 index 0000000..f3cbc62 2766 --- /dev/null 2767 +++ b/index.html 2768 @@ -0,0 +1,22 @@ 2769 +<!DOCTYPE html> 2770 +<html lang="en"> 2771 + 2772 +<head> 2773 + <meta charset="UTF-8" /> 2774 + <link rel="icon" type="image/svg+xml" href="/Logo_colored.svg" /> 2775 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 2776 + <meta name="description" content="Matrix-Art is an image gallery for Matrix."> 2777 + <title>Matrix Art</title> 2778 + <script> 2779 + global = globalThis // fix for "global not defined" error 2780 + globalThis.OLM_OPTIONS = undefined; // Fix missing var for olm 2781 + </script> 2782 +</head> 2783 + 2784 +<body> 2785 + <noscript>You need to enable JavaScript to run this app.</noscript> 2786 + <div id="app"></div> 2787 + <script type="module" src="/src/main.tsx"></script> 2788 +</body> 2789 + 2790 +</html> 2791 \ No newline at end of file 2792 diff --git a/next-env.d.ts b/next-env.d.ts 2793 deleted file mode 100644 2794 index 4f11a03..0000000 2795 --- a/next-env.d.ts 2796 +++ /dev/null 2797 @@ -1,5 +0,0 @@ 2798 -/// <reference types="next" /> 2799 -/// <reference types="next/image-types/global" /> 2800 - 2801 -// NOTE: This file should not be edited 2802 -// see https://nextjs.org/docs/basic-features/typescript for more information. 2803 diff --git a/next-i18next.config.js b/next-i18next.config.js 2804 deleted file mode 100644 2805 index 4b4dffc..0000000 2806 --- a/next-i18next.config.js 2807 +++ /dev/null 2808 @@ -1,10 +0,0 @@ 2809 -module.exports = { 2810 - i18n: { 2811 - defaultLocale: 'en', 2812 - locales: process.env.PLAYWRIGHT === "1" ? ['en'] : ['en', 'de-DE'], 2813 - fallbackLng: 'en', 2814 - reloadOnPrerender: process.env.NODE_ENV === "production" ? false : true, 2815 - nsSeparator: false, 2816 - keySeparator: false 2817 - }, 2818 -}; 2819 \ No newline at end of file 2820 diff --git a/next.config.js b/next.config.js 2821 deleted file mode 100644 2822 index 98e022d..0000000 2823 --- a/next.config.js 2824 +++ /dev/null 2825 @@ -1,61 +0,0 @@ 2826 -/** @type {import('next').NextConfig} */ 2827 -const { i18n } = require('./next-i18next.config'); 2828 - 2829 -const securityHeaders = [ 2830 - { 2831 - key: 'X-DNS-Prefetch-Control', 2832 - value: 'on' 2833 - }, 2834 - { 2835 - key: 'X-XSS-Protection', 2836 - value: '1; mode=block' 2837 - }, 2838 - { 2839 - key: 'X-Frame-Options', 2840 - value: 'SAMEORIGIN' 2841 - }, 2842 - { 2843 - key: 'X-Content-Type-Options', 2844 - value: 'nosniff' 2845 - }, 2846 - { 2847 - key: 'Referrer-Policy', 2848 - value: 'origin-when-cross-origin' 2849 - } 2850 -] 2851 - 2852 -module.exports = { 2853 - i18n, 2854 - swcMinify: true, 2855 - reactStrictMode: true, 2856 - webpack: (config) => { 2857 - config.resolve.fallback = { 2858 - ...config.resolve.fallback, 2859 - fs: false, 2860 - path: false 2861 - } 2862 - 2863 - return config; 2864 - }, 2865 - async headers() { 2866 - return [ 2867 - { 2868 - // Apply these headers to all routes in your application. 2869 - source: '/(.*)', 2870 - headers: securityHeaders, 2871 - }, 2872 - ] 2873 - }, 2874 - eslint: { 2875 - dirs: ['pages', 'components', "helpers", "e2e"], 2876 - }, 2877 - async redirects() { 2878 - return [ 2879 - { 2880 - source: '/posts.rss', 2881 - destination: '/api/posts/feed.rss', 2882 - permanent: false, 2883 - }, 2884 - ] 2885 - }, 2886 -} 2887 diff --git a/package-lock.json b/package-lock.json 2888 index 7e2b502..a4a1e4f 100644 2889 --- a/package-lock.json 2890 +++ b/package-lock.json 2891 @@ -1,113 +1,93 @@ 2892 { 2893 "name": "matrix-art", 2894 + "version": "0.0.0", 2895 "lockfileVersion": 2, 2896 "requires": true, 2897 "packages": { 2898 "": { 2899 "name": "matrix-art", 2900 - "dependencies": { 2901 - "blurhash": "1.1.5", 2902 - "cors": "2.8.5", 2903 - "feed": "yshrsmz/feed#c50d7a82c5b6141039830d615b19b760e173e231", 2904 - "lightgallery": "2.4.0", 2905 - "localforage": "1.10.0", 2906 - "meilisearch": "0.25.1", 2907 - "next": "12.1.6", 2908 - "next-i18next": "11.0.0", 2909 - "png-chunks-extract": "1.0.0", 2910 - "prop-types": "15.8.1", 2911 - "react": "18.1.0", 2912 - "react-blurhash": "0.1.3", 2913 - "react-dom": "18.1.0", 2914 - "react-dropzone": "14.2.1", 2915 - "react-toastify": "9.0.1", 2916 - "reflect-metadata": "0.1.13", 2917 - "sequelize": "6.20.0", 2918 - "sequelize-typescript": "2.1.3", 2919 - "sqlite3": "5.0.8" 2920 + "version": "0.0.0", 2921 + "dependencies": { 2922 + "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", 2923 + "buffer": "^6.0.3", 2924 + "events": "^3.3.0", 2925 + "inquirer": "^8.2.5", 2926 + "matrix-events-sdk": "^0.0.1", 2927 + "matrix-js-sdk": "^16.0.1", 2928 + "preact": "^10.11.3", 2929 + "react-plock": "^1.2.1", 2930 + "react-router-dom": "^6.6.1" 2931 }, 2932 "devDependencies": { 2933 - "@babel/plugin-transform-typescript": "7.18.1", 2934 - "@playwright/test": "1.22.2", 2935 - "@types/cors": "2.8.12", 2936 - "@types/node": "17.0.35", 2937 - "@types/offscreencanvas": "2019.7.0", 2938 - "@types/react": "18.0.9", 2939 - "@types/validator": "13.7.2", 2940 - "autoprefixer": "10.4.7", 2941 - "cross-env": "7.0.3", 2942 - "eslint": "8.16.0", 2943 - "eslint-config-next": "12.1.6", 2944 - "eslint-plugin-jsx-a11y": "6.5.1", 2945 - "eslint-plugin-unicorn": "42.0.0", 2946 - "i18next-parser": "6.4.0", 2947 - "postcss": "8.4.14", 2948 - "tailwindcss": "3.0.24", 2949 - "typescript": "4.7.2" 2950 - }, 2951 - "engines": { 2952 - "node": ">=17.0.0" 2953 - }, 2954 - "optionalDependencies": { 2955 - "fsevents": "2.3.2" 2956 + "@preact/preset-vite": "^2.5.0", 2957 + "@types/events": "^3.0.0", 2958 + "@types/photoswipe": "^4.1.2", 2959 + "@typescript-eslint/eslint-plugin": "^5.48.0", 2960 + "@typescript-eslint/parser": "^5.48.0", 2961 + "autoprefixer": "^10.4.13", 2962 + "eslint": "^8.31.0", 2963 + "eslint-plugin-tailwindcss": "^3.8.0", 2964 + "eslint-plugin-unicorn": "^41.0.1", 2965 + "postcss": "^8.4.20", 2966 + "tailwindcss": "^3.2.4", 2967 + "typescript": "^4.9.4", 2968 + "vite": "^2.9.15" 2969 } 2970 }, 2971 "node_modules/@ampproject/remapping": { 2972 - "version": "2.1.0", 2973 - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.0.tgz", 2974 - "integrity": "sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g==", 2975 + "version": "2.2.0", 2976 + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 2977 + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 2978 "dev": true, 2979 - "peer": true, 2980 "dependencies": { 2981 - "@jridgewell/trace-mapping": "^0.3.0" 2982 + "@jridgewell/gen-mapping": "^0.1.0", 2983 + "@jridgewell/trace-mapping": "^0.3.9" 2984 }, 2985 "engines": { 2986 "node": ">=6.0.0" 2987 } 2988 }, 2989 "node_modules/@babel/code-frame": { 2990 - "version": "7.16.7", 2991 - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 2992 - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 2993 + "version": "7.18.6", 2994 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 2995 + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 2996 "dev": true, 2997 "dependencies": { 2998 - "@babel/highlight": "^7.16.7" 2999 + "@babel/highlight": "^7.18.6" 3000 }, 3001 "engines": { 3002 "node": ">=6.9.0" 3003 } 3004 }, 3005 "node_modules/@babel/compat-data": { 3006 - "version": "7.17.0", 3007 - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", 3008 - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", 3009 + "version": "7.20.10", 3010 + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", 3011 + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", 3012 "dev": true, 3013 - "peer": true, 3014 "engines": { 3015 "node": ">=6.9.0" 3016 } 3017 }, 3018 "node_modules/@babel/core": { 3019 - "version": "7.17.0", 3020 - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", 3021 - "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", 3022 - "dev": true, 3023 - "peer": true, 3024 - "dependencies": { 3025 - "@ampproject/remapping": "^2.0.0", 3026 - "@babel/code-frame": "^7.16.7", 3027 - "@babel/generator": "^7.17.0", 3028 - "@babel/helper-compilation-targets": "^7.16.7", 3029 - "@babel/helper-module-transforms": "^7.16.7", 3030 - "@babel/helpers": "^7.17.0", 3031 - "@babel/parser": "^7.17.0", 3032 - "@babel/template": "^7.16.7", 3033 - "@babel/traverse": "^7.17.0", 3034 - "@babel/types": "^7.17.0", 3035 + "version": "7.20.7", 3036 + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", 3037 + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", 3038 + "dev": true, 3039 + "dependencies": { 3040 + "@ampproject/remapping": "^2.1.0", 3041 + "@babel/code-frame": "^7.18.6", 3042 + "@babel/generator": "^7.20.7", 3043 + "@babel/helper-compilation-targets": "^7.20.7", 3044 + "@babel/helper-module-transforms": "^7.20.7", 3045 + "@babel/helpers": "^7.20.7", 3046 + "@babel/parser": "^7.20.7", 3047 + "@babel/template": "^7.20.7", 3048 + "@babel/traverse": "^7.20.7", 3049 + "@babel/types": "^7.20.7", 3050 "convert-source-map": "^1.7.0", 3051 "debug": "^4.1.0", 3052 "gensync": "^1.0.0-beta.2", 3053 - "json5": "^2.1.2", 3054 + "json5": "^2.2.1", 3055 "semver": "^6.3.0" 3056 }, 3057 "engines": { 3058 @@ -119,63 +99,56 @@ 3059 } 3060 }, 3061 "node_modules/@babel/generator": { 3062 - "version": "7.17.0", 3063 - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", 3064 - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", 3065 + "version": "7.20.7", 3066 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", 3067 + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", 3068 "dev": true, 3069 "dependencies": { 3070 - "@babel/types": "^7.17.0", 3071 - "jsesc": "^2.5.1", 3072 - "source-map": "^0.5.0" 3073 + "@babel/types": "^7.20.7", 3074 + "@jridgewell/gen-mapping": "^0.3.2", 3075 + "jsesc": "^2.5.1" 3076 }, 3077 "engines": { 3078 "node": ">=6.9.0" 3079 } 3080 }, 3081 - "node_modules/@babel/helper-annotate-as-pure": { 3082 - "version": "7.16.7", 3083 - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", 3084 - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", 3085 + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 3086 + "version": "0.3.2", 3087 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 3088 + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 3089 "dev": true, 3090 "dependencies": { 3091 - "@babel/types": "^7.16.7" 3092 + "@jridgewell/set-array": "^1.0.1", 3093 + "@jridgewell/sourcemap-codec": "^1.4.10", 3094 + "@jridgewell/trace-mapping": "^0.3.9" 3095 }, 3096 "engines": { 3097 - "node": ">=6.9.0" 3098 + "node": ">=6.0.0" 3099 } 3100 }, 3101 - "node_modules/@babel/helper-compilation-targets": { 3102 - "version": "7.16.7", 3103 - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", 3104 - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", 3105 + "node_modules/@babel/helper-annotate-as-pure": { 3106 + "version": "7.18.6", 3107 + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 3108 + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 3109 "dev": true, 3110 - "peer": true, 3111 "dependencies": { 3112 - "@babel/compat-data": "^7.16.4", 3113 - "@babel/helper-validator-option": "^7.16.7", 3114 - "browserslist": "^4.17.5", 3115 - "semver": "^6.3.0" 3116 + "@babel/types": "^7.18.6" 3117 }, 3118 "engines": { 3119 "node": ">=6.9.0" 3120 - }, 3121 - "peerDependencies": { 3122 - "@babel/core": "^7.0.0" 3123 } 3124 }, 3125 - "node_modules/@babel/helper-create-class-features-plugin": { 3126 - "version": "7.18.0", 3127 - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", 3128 - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", 3129 + "node_modules/@babel/helper-compilation-targets": { 3130 + "version": "7.20.7", 3131 + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", 3132 + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", 3133 "dev": true, 3134 "dependencies": { 3135 - "@babel/helper-annotate-as-pure": "^7.16.7", 3136 - "@babel/helper-environment-visitor": "^7.16.7", 3137 - "@babel/helper-function-name": "^7.17.9", 3138 - "@babel/helper-member-expression-to-functions": "^7.17.7", 3139 - "@babel/helper-optimise-call-expression": "^7.16.7", 3140 - "@babel/helper-replace-supers": "^7.16.7", 3141 - "@babel/helper-split-export-declaration": "^7.16.7" 3142 + "@babel/compat-data": "^7.20.5", 3143 + "@babel/helper-validator-option": "^7.18.6", 3144 + "browserslist": "^4.21.3", 3145 + "lru-cache": "^5.1.1", 3146 + "semver": "^6.3.0" 3147 }, 3148 "engines": { 3149 "node": ">=6.9.0" 3150 @@ -185,181 +158,151 @@ 3151 } 3152 }, 3153 "node_modules/@babel/helper-environment-visitor": { 3154 - "version": "7.16.7", 3155 - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", 3156 - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", 3157 + "version": "7.18.9", 3158 + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 3159 + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 3160 "dev": true, 3161 - "dependencies": { 3162 - "@babel/types": "^7.16.7" 3163 - }, 3164 "engines": { 3165 "node": ">=6.9.0" 3166 } 3167 }, 3168 "node_modules/@babel/helper-function-name": { 3169 - "version": "7.17.9", 3170 - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", 3171 - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", 3172 + "version": "7.19.0", 3173 + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 3174 + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 3175 "dev": true, 3176 "dependencies": { 3177 - "@babel/template": "^7.16.7", 3178 - "@babel/types": "^7.17.0" 3179 + "@babel/template": "^7.18.10", 3180 + "@babel/types": "^7.19.0" 3181 }, 3182 "engines": { 3183 "node": ">=6.9.0" 3184 } 3185 }, 3186 "node_modules/@babel/helper-hoist-variables": { 3187 - "version": "7.16.7", 3188 - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", 3189 - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", 3190 - "dev": true, 3191 - "dependencies": { 3192 - "@babel/types": "^7.16.7" 3193 - }, 3194 - "engines": { 3195 - "node": ">=6.9.0" 3196 - } 3197 - }, 3198 - "node_modules/@babel/helper-member-expression-to-functions": { 3199 - "version": "7.17.7", 3200 - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", 3201 - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", 3202 + "version": "7.18.6", 3203 + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 3204 + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 3205 "dev": true, 3206 "dependencies": { 3207 - "@babel/types": "^7.17.0" 3208 + "@babel/types": "^7.18.6" 3209 }, 3210 "engines": { 3211 "node": ">=6.9.0" 3212 } 3213 }, 3214 "node_modules/@babel/helper-module-imports": { 3215 - "version": "7.16.7", 3216 - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", 3217 - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", 3218 + "version": "7.18.6", 3219 + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 3220 + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 3221 "dev": true, 3222 - "peer": true, 3223 "dependencies": { 3224 - "@babel/types": "^7.16.7" 3225 + "@babel/types": "^7.18.6" 3226 }, 3227 "engines": { 3228 "node": ">=6.9.0" 3229 } 3230 }, 3231 "node_modules/@babel/helper-module-transforms": { 3232 - "version": "7.16.7", 3233 - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", 3234 - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", 3235 + "version": "7.20.11", 3236 + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", 3237 + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", 3238 "dev": true, 3239 - "peer": true, 3240 "dependencies": { 3241 - "@babel/helper-environment-visitor": "^7.16.7", 3242 - "@babel/helper-module-imports": "^7.16.7", 3243 - "@babel/helper-simple-access": "^7.16.7", 3244 - "@babel/helper-split-export-declaration": "^7.16.7", 3245 - "@babel/helper-validator-identifier": "^7.16.7", 3246 - "@babel/template": "^7.16.7", 3247 - "@babel/traverse": "^7.16.7", 3248 - "@babel/types": "^7.16.7" 3249 + "@babel/helper-environment-visitor": "^7.18.9", 3250 + "@babel/helper-module-imports": "^7.18.6", 3251 + "@babel/helper-simple-access": "^7.20.2", 3252 + "@babel/helper-split-export-declaration": "^7.18.6", 3253 + "@babel/helper-validator-identifier": "^7.19.1", 3254 + "@babel/template": "^7.20.7", 3255 + "@babel/traverse": "^7.20.10", 3256 + "@babel/types": "^7.20.7" 3257 }, 3258 "engines": { 3259 "node": ">=6.9.0" 3260 } 3261 }, 3262 - "node_modules/@babel/helper-optimise-call-expression": { 3263 - "version": "7.16.7", 3264 - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", 3265 - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", 3266 + "node_modules/@babel/helper-plugin-utils": { 3267 + "version": "7.20.2", 3268 + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 3269 + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 3270 "dev": true, 3271 - "dependencies": { 3272 - "@babel/types": "^7.16.7" 3273 - }, 3274 "engines": { 3275 "node": ">=6.9.0" 3276 } 3277 }, 3278 - "node_modules/@babel/helper-replace-supers": { 3279 - "version": "7.16.7", 3280 - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", 3281 - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", 3282 + "node_modules/@babel/helper-simple-access": { 3283 + "version": "7.20.2", 3284 + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 3285 + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 3286 "dev": true, 3287 "dependencies": { 3288 - "@babel/helper-environment-visitor": "^7.16.7", 3289 - "@babel/helper-member-expression-to-functions": "^7.16.7", 3290 - "@babel/helper-optimise-call-expression": "^7.16.7", 3291 - "@babel/traverse": "^7.16.7", 3292 - "@babel/types": "^7.16.7" 3293 + "@babel/types": "^7.20.2" 3294 }, 3295 "engines": { 3296 "node": ">=6.9.0" 3297 } 3298 }, 3299 - "node_modules/@babel/helper-simple-access": { 3300 - "version": "7.16.7", 3301 - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", 3302 - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", 3303 + "node_modules/@babel/helper-split-export-declaration": { 3304 + "version": "7.18.6", 3305 + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 3306 + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 3307 "dev": true, 3308 - "peer": true, 3309 "dependencies": { 3310 - "@babel/types": "^7.16.7" 3311 + "@babel/types": "^7.18.6" 3312 }, 3313 "engines": { 3314 "node": ">=6.9.0" 3315 } 3316 }, 3317 - "node_modules/@babel/helper-split-export-declaration": { 3318 - "version": "7.16.7", 3319 - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", 3320 - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", 3321 + "node_modules/@babel/helper-string-parser": { 3322 + "version": "7.19.4", 3323 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 3324 + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 3325 "dev": true, 3326 - "dependencies": { 3327 - "@babel/types": "^7.16.7" 3328 - }, 3329 "engines": { 3330 "node": ">=6.9.0" 3331 } 3332 }, 3333 "node_modules/@babel/helper-validator-identifier": { 3334 - "version": "7.16.7", 3335 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 3336 - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 3337 + "version": "7.19.1", 3338 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 3339 + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 3340 "dev": true, 3341 "engines": { 3342 "node": ">=6.9.0" 3343 } 3344 }, 3345 "node_modules/@babel/helper-validator-option": { 3346 - "version": "7.16.7", 3347 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", 3348 - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", 3349 + "version": "7.18.6", 3350 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 3351 + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 3352 "dev": true, 3353 - "peer": true, 3354 "engines": { 3355 "node": ">=6.9.0" 3356 } 3357 }, 3358 "node_modules/@babel/helpers": { 3359 - "version": "7.17.0", 3360 - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", 3361 - "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", 3362 + "version": "7.20.7", 3363 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", 3364 + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", 3365 "dev": true, 3366 - "peer": true, 3367 "dependencies": { 3368 - "@babel/template": "^7.16.7", 3369 - "@babel/traverse": "^7.17.0", 3370 - "@babel/types": "^7.17.0" 3371 + "@babel/template": "^7.20.7", 3372 + "@babel/traverse": "^7.20.7", 3373 + "@babel/types": "^7.20.7" 3374 }, 3375 "engines": { 3376 "node": ">=6.9.0" 3377 } 3378 }, 3379 "node_modules/@babel/highlight": { 3380 - "version": "7.16.10", 3381 - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 3382 - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 3383 + "version": "7.18.6", 3384 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 3385 + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 3386 "dev": true, 3387 "dependencies": { 3388 - "@babel/helper-validator-identifier": "^7.16.7", 3389 + "@babel/helper-validator-identifier": "^7.18.6", 3390 "chalk": "^2.0.0", 3391 "js-tokens": "^4.0.0" 3392 }, 3393 @@ -368,9 +311,9 @@ 3394 } 3395 }, 3396 "node_modules/@babel/parser": { 3397 - "version": "7.17.0", 3398 - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", 3399 - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", 3400 + "version": "7.20.7", 3401 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", 3402 + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", 3403 "dev": true, 3404 "bin": { 3405 "parser": "bin/babel-parser.js" 3406 @@ -379,13 +322,13 @@ 3407 "node": ">=6.0.0" 3408 } 3409 }, 3410 - "node_modules/@babel/plugin-syntax-typescript": { 3411 - "version": "7.17.12", 3412 - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", 3413 - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", 3414 + "node_modules/@babel/plugin-syntax-jsx": { 3415 + "version": "7.18.6", 3416 + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 3417 + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 3418 "dev": true, 3419 "dependencies": { 3420 - "@babel/helper-plugin-utils": "^7.17.12" 3421 + "@babel/helper-plugin-utils": "^7.18.6" 3422 }, 3423 "engines": { 3424 "node": ">=6.9.0" 3425 @@ -394,24 +337,17 @@ 3426 "@babel/core": "^7.0.0-0" 3427 } 3428 }, 3429 - "node_modules/@babel/plugin-syntax-typescript/node_modules/@babel/helper-plugin-utils": { 3430 - "version": "7.17.12", 3431 - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", 3432 - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", 3433 - "dev": true, 3434 - "engines": { 3435 - "node": ">=6.9.0" 3436 - } 3437 - }, 3438 - "node_modules/@babel/plugin-transform-typescript": { 3439 - "version": "7.18.1", 3440 - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.1.tgz", 3441 - "integrity": "sha512-F+RJmL479HJmC0KeqqwEGZMg1P7kWArLGbAKfEi9yPthJyMNjF+DjxFF/halfQvq1Q9GFM4TUbYDNV8xe4Ctqg==", 3442 + "node_modules/@babel/plugin-transform-react-jsx": { 3443 + "version": "7.20.7", 3444 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz", 3445 + "integrity": "sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==", 3446 "dev": true, 3447 "dependencies": { 3448 - "@babel/helper-create-class-features-plugin": "^7.18.0", 3449 - "@babel/helper-plugin-utils": "^7.17.12", 3450 - "@babel/plugin-syntax-typescript": "^7.17.12" 3451 + "@babel/helper-annotate-as-pure": "^7.18.6", 3452 + "@babel/helper-module-imports": "^7.18.6", 3453 + "@babel/helper-plugin-utils": "^7.20.2", 3454 + "@babel/plugin-syntax-jsx": "^7.18.6", 3455 + "@babel/types": "^7.20.7" 3456 }, 3457 "engines": { 3458 "node": ">=6.9.0" 3459 @@ -420,67 +356,60 @@ 3460 "@babel/core": "^7.0.0-0" 3461 } 3462 }, 3463 - "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-plugin-utils": { 3464 - "version": "7.17.12", 3465 - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", 3466 - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", 3467 + "node_modules/@babel/plugin-transform-react-jsx-development": { 3468 + "version": "7.18.6", 3469 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 3470 + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 3471 "dev": true, 3472 - "engines": { 3473 - "node": ">=6.9.0" 3474 - } 3475 - }, 3476 - "node_modules/@babel/runtime": { 3477 - "version": "7.17.8", 3478 - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", 3479 - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", 3480 "dependencies": { 3481 - "regenerator-runtime": "^0.13.4" 3482 + "@babel/plugin-transform-react-jsx": "^7.18.6" 3483 }, 3484 "engines": { 3485 "node": ">=6.9.0" 3486 + }, 3487 + "peerDependencies": { 3488 + "@babel/core": "^7.0.0-0" 3489 } 3490 }, 3491 - "node_modules/@babel/runtime-corejs3": { 3492 - "version": "7.17.0", 3493 - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.0.tgz", 3494 - "integrity": "sha512-qeydncU80ravKzovVncW3EYaC1ji3GpntdPgNcJy9g7hHSY6KX+ne1cbV3ov7Zzm4F1z0+QreZPCuw1ynkmYNg==", 3495 - "dev": true, 3496 + "node_modules/@babel/runtime": { 3497 + "version": "7.20.7", 3498 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", 3499 + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", 3500 "dependencies": { 3501 - "core-js-pure": "^3.20.2", 3502 - "regenerator-runtime": "^0.13.4" 3503 + "regenerator-runtime": "^0.13.11" 3504 }, 3505 "engines": { 3506 "node": ">=6.9.0" 3507 } 3508 }, 3509 "node_modules/@babel/template": { 3510 - "version": "7.16.7", 3511 - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", 3512 - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", 3513 + "version": "7.20.7", 3514 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 3515 + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 3516 "dev": true, 3517 "dependencies": { 3518 - "@babel/code-frame": "^7.16.7", 3519 - "@babel/parser": "^7.16.7", 3520 - "@babel/types": "^7.16.7" 3521 + "@babel/code-frame": "^7.18.6", 3522 + "@babel/parser": "^7.20.7", 3523 + "@babel/types": "^7.20.7" 3524 }, 3525 "engines": { 3526 "node": ">=6.9.0" 3527 } 3528 }, 3529 "node_modules/@babel/traverse": { 3530 - "version": "7.17.0", 3531 - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", 3532 - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", 3533 - "dev": true, 3534 - "dependencies": { 3535 - "@babel/code-frame": "^7.16.7", 3536 - "@babel/generator": "^7.17.0", 3537 - "@babel/helper-environment-visitor": "^7.16.7", 3538 - "@babel/helper-function-name": "^7.16.7", 3539 - "@babel/helper-hoist-variables": "^7.16.7", 3540 - "@babel/helper-split-export-declaration": "^7.16.7", 3541 - "@babel/parser": "^7.17.0", 3542 - "@babel/types": "^7.17.0", 3543 + "version": "7.20.10", 3544 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", 3545 + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", 3546 + "dev": true, 3547 + "dependencies": { 3548 + "@babel/code-frame": "^7.18.6", 3549 + "@babel/generator": "^7.20.7", 3550 + "@babel/helper-environment-visitor": "^7.18.9", 3551 + "@babel/helper-function-name": "^7.19.0", 3552 + "@babel/helper-hoist-variables": "^7.18.6", 3553 + "@babel/helper-split-export-declaration": "^7.18.6", 3554 + "@babel/parser": "^7.20.7", 3555 + "@babel/types": "^7.20.7", 3556 "debug": "^4.1.0", 3557 "globals": "^11.1.0" 3558 }, 3559 @@ -489,28 +418,45 @@ 3560 } 3561 }, 3562 "node_modules/@babel/types": { 3563 - "version": "7.17.0", 3564 - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", 3565 - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", 3566 + "version": "7.20.7", 3567 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", 3568 + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", 3569 "dev": true, 3570 "dependencies": { 3571 - "@babel/helper-validator-identifier": "^7.16.7", 3572 + "@babel/helper-string-parser": "^7.19.4", 3573 + "@babel/helper-validator-identifier": "^7.19.1", 3574 "to-fast-properties": "^2.0.0" 3575 }, 3576 "engines": { 3577 "node": ">=6.9.0" 3578 } 3579 }, 3580 + "node_modules/@esbuild/linux-loong64": { 3581 + "version": "0.14.54", 3582 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 3583 + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 3584 + "cpu": [ 3585 + "loong64" 3586 + ], 3587 + "dev": true, 3588 + "optional": true, 3589 + "os": [ 3590 + "linux" 3591 + ], 3592 + "engines": { 3593 + "node": ">=12" 3594 + } 3595 + }, 3596 "node_modules/@eslint/eslintrc": { 3597 - "version": "1.3.0", 3598 - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 3599 - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 3600 + "version": "1.4.1", 3601 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", 3602 + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", 3603 "dev": true, 3604 "dependencies": { 3605 "ajv": "^6.12.4", 3606 "debug": "^4.3.2", 3607 - "espree": "^9.3.2", 3608 - "globals": "^13.15.0", 3609 + "espree": "^9.4.0", 3610 + "globals": "^13.19.0", 3611 "ignore": "^5.2.0", 3612 "import-fresh": "^3.2.1", 3613 "js-yaml": "^4.1.0", 3614 @@ -519,12 +465,15 @@ 3615 }, 3616 "engines": { 3617 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3618 + }, 3619 + "funding": { 3620 + "url": "https://opencollective.com/eslint" 3621 } 3622 }, 3623 "node_modules/@eslint/eslintrc/node_modules/globals": { 3624 - "version": "13.15.0", 3625 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 3626 - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 3627 + "version": "13.19.0", 3628 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", 3629 + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", 3630 "dev": true, 3631 "dependencies": { 3632 "type-fest": "^0.20.2" 3633 @@ -548,508 +497,316 @@ 3634 "url": "https://github.com/sponsors/sindresorhus" 3635 } 3636 }, 3637 - "node_modules/@gar/promisify": { 3638 - "version": "1.1.3", 3639 - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", 3640 - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", 3641 - "optional": true 3642 - }, 3643 "node_modules/@humanwhocodes/config-array": { 3644 - "version": "0.9.3", 3645 - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", 3646 - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", 3647 + "version": "0.11.8", 3648 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 3649 + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 3650 "dev": true, 3651 "dependencies": { 3652 "@humanwhocodes/object-schema": "^1.2.1", 3653 "debug": "^4.1.1", 3654 - "minimatch": "^3.0.4" 3655 + "minimatch": "^3.0.5" 3656 }, 3657 "engines": { 3658 "node": ">=10.10.0" 3659 } 3660 }, 3661 + "node_modules/@humanwhocodes/module-importer": { 3662 + "version": "1.0.1", 3663 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 3664 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 3665 + "dev": true, 3666 + "engines": { 3667 + "node": ">=12.22" 3668 + }, 3669 + "funding": { 3670 + "type": "github", 3671 + "url": "https://github.com/sponsors/nzakas" 3672 + } 3673 + }, 3674 "node_modules/@humanwhocodes/object-schema": { 3675 "version": "1.2.1", 3676 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 3677 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 3678 "dev": true 3679 }, 3680 + "node_modules/@jridgewell/gen-mapping": { 3681 + "version": "0.1.1", 3682 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 3683 + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 3684 + "dev": true, 3685 + "dependencies": { 3686 + "@jridgewell/set-array": "^1.0.0", 3687 + "@jridgewell/sourcemap-codec": "^1.4.10" 3688 + }, 3689 + "engines": { 3690 + "node": ">=6.0.0" 3691 + } 3692 + }, 3693 "node_modules/@jridgewell/resolve-uri": { 3694 - "version": "3.0.4", 3695 - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", 3696 - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", 3697 + "version": "3.1.0", 3698 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 3699 + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 3700 "dev": true, 3701 - "peer": true, 3702 "engines": { 3703 "node": ">=6.0.0" 3704 } 3705 }, 3706 - "node_modules/@jridgewell/sourcemap-codec": { 3707 - "version": "1.4.10", 3708 - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz", 3709 - "integrity": "sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==", 3710 + "node_modules/@jridgewell/set-array": { 3711 + "version": "1.1.2", 3712 + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 3713 + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 3714 "dev": true, 3715 - "peer": true 3716 + "engines": { 3717 + "node": ">=6.0.0" 3718 + } 3719 + }, 3720 + "node_modules/@jridgewell/sourcemap-codec": { 3721 + "version": "1.4.14", 3722 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 3723 + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 3724 + "dev": true 3725 }, 3726 "node_modules/@jridgewell/trace-mapping": { 3727 - "version": "0.3.2", 3728 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.2.tgz", 3729 - "integrity": "sha512-9KzzH4kMjA2XmBRHfqG2/Vtl7s92l6uNDd0wW7frDE+EUvQFGqNXhWp0UGJjSkt3v2AYjzOZn1QO9XaTNJIt1Q==", 3730 + "version": "0.3.17", 3731 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 3732 + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 3733 "dev": true, 3734 - "peer": true, 3735 "dependencies": { 3736 - "@jridgewell/resolve-uri": "^3.0.3", 3737 - "@jridgewell/sourcemap-codec": "^1.4.10" 3738 + "@jridgewell/resolve-uri": "3.1.0", 3739 + "@jridgewell/sourcemap-codec": "1.4.14" 3740 } 3741 }, 3742 - "node_modules/@mapbox/node-pre-gyp": { 3743 - "version": "1.0.9", 3744 - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", 3745 - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", 3746 - "dependencies": { 3747 - "detect-libc": "^2.0.0", 3748 - "https-proxy-agent": "^5.0.0", 3749 - "make-dir": "^3.1.0", 3750 - "node-fetch": "^2.6.7", 3751 - "nopt": "^5.0.0", 3752 - "npmlog": "^5.0.1", 3753 - "rimraf": "^3.0.2", 3754 - "semver": "^7.3.5", 3755 - "tar": "^6.1.11" 3756 - }, 3757 - "bin": { 3758 - "node-pre-gyp": "bin/node-pre-gyp" 3759 - } 3760 + "node_modules/@matrix-org/olm": { 3761 + "version": "3.2.8", 3762 + "resolved": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", 3763 + "integrity": "sha512-yCJzEYY2aG1z+7nxKYZC4DFYwQO/5iG019qgotJhauYJRhEG9gLrKTvXO6lRHS8TjnZzsZFZyO/hQUlI4Dryig==", 3764 + "license": "Apache-2.0" 3765 }, 3766 - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { 3767 - "version": "7.3.7", 3768 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 3769 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 3770 + "node_modules/@nodelib/fs.scandir": { 3771 + "version": "2.1.5", 3772 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 3773 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 3774 + "dev": true, 3775 "dependencies": { 3776 - "lru-cache": "^6.0.0" 3777 - }, 3778 - "bin": { 3779 - "semver": "bin/semver.js" 3780 + "@nodelib/fs.stat": "2.0.5", 3781 + "run-parallel": "^1.1.9" 3782 }, 3783 "engines": { 3784 - "node": ">=10" 3785 + "node": ">= 8" 3786 } 3787 }, 3788 - "node_modules/@next/env": { 3789 - "version": "12.1.6", 3790 - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz", 3791 - "integrity": "sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==" 3792 - }, 3793 - "node_modules/@next/eslint-plugin-next": { 3794 - "version": "12.1.6", 3795 - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz", 3796 - "integrity": "sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==", 3797 + "node_modules/@nodelib/fs.stat": { 3798 + "version": "2.0.5", 3799 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 3800 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 3801 "dev": true, 3802 - "dependencies": { 3803 - "glob": "7.1.7" 3804 + "engines": { 3805 + "node": ">= 8" 3806 } 3807 }, 3808 - "node_modules/@next/eslint-plugin-next/node_modules/glob": { 3809 - "version": "7.1.7", 3810 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 3811 - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 3812 + "node_modules/@nodelib/fs.walk": { 3813 + "version": "1.2.8", 3814 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 3815 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 3816 "dev": true, 3817 "dependencies": { 3818 - "fs.realpath": "^1.0.0", 3819 - "inflight": "^1.0.4", 3820 - "inherits": "2", 3821 - "minimatch": "^3.0.4", 3822 - "once": "^1.3.0", 3823 - "path-is-absolute": "^1.0.0" 3824 + "@nodelib/fs.scandir": "2.1.5", 3825 + "fastq": "^1.6.0" 3826 }, 3827 "engines": { 3828 - "node": "*" 3829 - }, 3830 - "funding": { 3831 - "url": "https://github.com/sponsors/isaacs" 3832 + "node": ">= 8" 3833 } 3834 }, 3835 - "node_modules/@next/swc-android-arm-eabi": { 3836 - "version": "12.1.6", 3837 - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz", 3838 - "integrity": "sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ==", 3839 - "cpu": [ 3840 - "arm" 3841 - ], 3842 - "optional": true, 3843 - "os": [ 3844 - "android" 3845 - ], 3846 - "engines": { 3847 - "node": ">= 10" 3848 + "node_modules/@preact/preset-vite": { 3849 + "version": "2.5.0", 3850 + "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.5.0.tgz", 3851 + "integrity": "sha512-BUhfB2xQ6ex0yPkrT1Z3LbfPzjpJecOZwQ/xJrXGFSZD84+ObyS//41RdEoQCMWsM0t7UHGaujUxUBub7WM1Jw==", 3852 + "dev": true, 3853 + "dependencies": { 3854 + "@babel/plugin-transform-react-jsx": "^7.14.9", 3855 + "@babel/plugin-transform-react-jsx-development": "^7.16.7", 3856 + "@prefresh/vite": "^2.2.8", 3857 + "@rollup/pluginutils": "^4.1.1", 3858 + "babel-plugin-transform-hook-names": "^1.0.2", 3859 + "debug": "^4.3.1", 3860 + "kolorist": "^1.2.10", 3861 + "resolve": "^1.20.0" 3862 + }, 3863 + "peerDependencies": { 3864 + "@babel/core": "7.x", 3865 + "vite": "2.x || 3.x || 4.x" 3866 } 3867 }, 3868 - "node_modules/@next/swc-android-arm64": { 3869 - "version": "12.1.6", 3870 - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz", 3871 - "integrity": "sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew==", 3872 - "cpu": [ 3873 - "arm64" 3874 - ], 3875 - "optional": true, 3876 - "os": [ 3877 - "android" 3878 - ], 3879 - "engines": { 3880 - "node": ">= 10" 3881 - } 3882 + "node_modules/@prefresh/babel-plugin": { 3883 + "version": "0.4.4", 3884 + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.4.tgz", 3885 + "integrity": "sha512-/EvgIFMDL+nd20WNvMO0JQnzIl1EJPgmSaSYrZUww7A+aSdKsi37aL07TljrZR1cBMuzFxcr4xvqsUQLFJEukw==", 3886 + "dev": true 3887 }, 3888 - "node_modules/@next/swc-darwin-arm64": { 3889 - "version": "12.1.6", 3890 - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz", 3891 - "integrity": "sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw==", 3892 - "cpu": [ 3893 - "arm64" 3894 - ], 3895 - "optional": true, 3896 - "os": [ 3897 - "darwin" 3898 - ], 3899 - "engines": { 3900 - "node": ">= 10" 3901 + "node_modules/@prefresh/core": { 3902 + "version": "1.4.1", 3903 + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.4.1.tgz", 3904 + "integrity": "sha512-og1vaBj3LMJagVncNrDb37Gqc0cWaUcDbpVt5hZtsN4i2Iwzd/5hyTsDHvlMirhSym3wL9ihU0Xa2VhSaOue7g==", 3905 + "dev": true, 3906 + "peerDependencies": { 3907 + "preact": "^10.0.0" 3908 } 3909 }, 3910 - "node_modules/@next/swc-darwin-x64": { 3911 - "version": "12.1.6", 3912 - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz", 3913 - "integrity": "sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg==", 3914 - "cpu": [ 3915 - "x64" 3916 - ], 3917 - "optional": true, 3918 - "os": [ 3919 - "darwin" 3920 - ], 3921 - "engines": { 3922 - "node": ">= 10" 3923 - } 3924 + "node_modules/@prefresh/utils": { 3925 + "version": "1.1.3", 3926 + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.3.tgz", 3927 + "integrity": "sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==", 3928 + "dev": true 3929 }, 3930 - "node_modules/@next/swc-linux-arm-gnueabihf": { 3931 - "version": "12.1.6", 3932 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz", 3933 - "integrity": "sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw==", 3934 - "cpu": [ 3935 - "arm" 3936 - ], 3937 - "optional": true, 3938 - "os": [ 3939 - "linux" 3940 - ], 3941 - "engines": { 3942 - "node": ">= 10" 3943 + "node_modules/@prefresh/vite": { 3944 + "version": "2.2.9", 3945 + "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.2.9.tgz", 3946 + "integrity": "sha512-1ERBF85Ja9/lkrfaltmo4Gca7R2ClQPSHHDDysFgfvPzHmLUeyB0x9WHwhwov/AA1DnyPhsfYT54z3yQd8XrgA==", 3947 + "dev": true, 3948 + "dependencies": { 3949 + "@babel/core": "^7.9.6", 3950 + "@prefresh/babel-plugin": "0.4.4", 3951 + "@prefresh/core": "^1.3.3", 3952 + "@prefresh/utils": "^1.1.2", 3953 + "@rollup/pluginutils": "^4.1.0" 3954 + }, 3955 + "peerDependencies": { 3956 + "preact": "^10.4.0", 3957 + "vite": ">=2.0.0-beta.3" 3958 } 3959 }, 3960 - "node_modules/@next/swc-linux-arm64-gnu": { 3961 - "version": "12.1.6", 3962 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz", 3963 - "integrity": "sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ==", 3964 - "cpu": [ 3965 - "arm64" 3966 - ], 3967 - "optional": true, 3968 - "os": [ 3969 - "linux" 3970 - ], 3971 + "node_modules/@remix-run/router": { 3972 + "version": "1.2.1", 3973 + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", 3974 + "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==", 3975 "engines": { 3976 - "node": ">= 10" 3977 + "node": ">=14" 3978 } 3979 }, 3980 - "node_modules/@next/swc-linux-arm64-musl": { 3981 - "version": "12.1.6", 3982 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz", 3983 - "integrity": "sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ==", 3984 - "cpu": [ 3985 - "arm64" 3986 - ], 3987 - "optional": true, 3988 - "os": [ 3989 - "linux" 3990 - ], 3991 + "node_modules/@rollup/pluginutils": { 3992 + "version": "4.2.1", 3993 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 3994 + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 3995 + "dev": true, 3996 + "dependencies": { 3997 + "estree-walker": "^2.0.1", 3998 + "picomatch": "^2.2.2" 3999 + }, 4000 "engines": { 4001 - "node": ">= 10" 4002 + "node": ">= 8.0.0" 4003 } 4004 }, 4005 - "node_modules/@next/swc-linux-x64-gnu": { 4006 - "version": "12.1.6", 4007 - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz", 4008 - "integrity": "sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ==", 4009 - "cpu": [ 4010 - "x64" 4011 - ], 4012 - "optional": true, 4013 - "os": [ 4014 - "linux" 4015 - ], 4016 - "engines": { 4017 - "node": ">= 10" 4018 - } 4019 + "node_modules/@types/events": { 4020 + "version": "3.0.0", 4021 + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", 4022 + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", 4023 + "dev": true 4024 }, 4025 - "node_modules/@next/swc-linux-x64-musl": { 4026 - "version": "12.1.6", 4027 - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz", 4028 - "integrity": "sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag==", 4029 - "cpu": [ 4030 - "x64" 4031 - ], 4032 - "optional": true, 4033 - "os": [ 4034 - "linux" 4035 - ], 4036 - "engines": { 4037 - "node": ">= 10" 4038 - } 4039 - }, 4040 - "node_modules/@next/swc-win32-arm64-msvc": { 4041 - "version": "12.1.6", 4042 - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz", 4043 - "integrity": "sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g==", 4044 - "cpu": [ 4045 - "arm64" 4046 - ], 4047 - "optional": true, 4048 - "os": [ 4049 - "win32" 4050 - ], 4051 - "engines": { 4052 - "node": ">= 10" 4053 - } 4054 + "node_modules/@types/json-schema": { 4055 + "version": "7.0.11", 4056 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 4057 + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 4058 + "dev": true 4059 }, 4060 - "node_modules/@next/swc-win32-ia32-msvc": { 4061 - "version": "12.1.6", 4062 - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz", 4063 - "integrity": "sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA==", 4064 - "cpu": [ 4065 - "ia32" 4066 - ], 4067 - "optional": true, 4068 - "os": [ 4069 - "win32" 4070 - ], 4071 - "engines": { 4072 - "node": ">= 10" 4073 - } 4074 + "node_modules/@types/normalize-package-data": { 4075 + "version": "2.4.1", 4076 + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 4077 + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 4078 + "dev": true 4079 }, 4080 - "node_modules/@next/swc-win32-x64-msvc": { 4081 - "version": "12.1.6", 4082 - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz", 4083 - "integrity": "sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==", 4084 - "cpu": [ 4085 - "x64" 4086 - ], 4087 - "optional": true, 4088 - "os": [ 4089 - "win32" 4090 - ], 4091 - "engines": { 4092 - "node": ">= 10" 4093 - } 4094 + "node_modules/@types/photoswipe": { 4095 + "version": "4.1.2", 4096 + "resolved": "https://registry.npmjs.org/@types/photoswipe/-/photoswipe-4.1.2.tgz", 4097 + "integrity": "sha512-HA9TtCAQKToldgxRiyJ1DbsElg/cQV/SQ8COVjqIqghjy60Zxfh78E1WiFotthquqkS86nz13Za9wEbToe0svQ==", 4098 + "dev": true 4099 }, 4100 - "node_modules/@nodelib/fs.scandir": { 4101 - "version": "2.1.5", 4102 - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 4103 - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 4104 - "dev": true, 4105 - "dependencies": { 4106 - "@nodelib/fs.stat": "2.0.5", 4107 - "run-parallel": "^1.1.9" 4108 - }, 4109 - "engines": { 4110 - "node": ">= 8" 4111 - } 4112 + "node_modules/@types/retry": { 4113 + "version": "0.12.0", 4114 + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", 4115 + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" 4116 }, 4117 - "node_modules/@nodelib/fs.stat": { 4118 - "version": "2.0.5", 4119 - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 4120 - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 4121 - "dev": true, 4122 - "engines": { 4123 - "node": ">= 8" 4124 - } 4125 + "node_modules/@types/semver": { 4126 + "version": "7.3.13", 4127 + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", 4128 + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", 4129 + "dev": true 4130 }, 4131 - "node_modules/@nodelib/fs.walk": { 4132 - "version": "1.2.8", 4133 - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 4134 - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 4135 + "node_modules/@typescript-eslint/eslint-plugin": { 4136 + "version": "5.48.0", 4137 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", 4138 + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", 4139 "dev": true, 4140 "dependencies": { 4141 - "@nodelib/fs.scandir": "2.1.5", 4142 - "fastq": "^1.6.0" 4143 + "@typescript-eslint/scope-manager": "5.48.0", 4144 + "@typescript-eslint/type-utils": "5.48.0", 4145 + "@typescript-eslint/utils": "5.48.0", 4146 + "debug": "^4.3.4", 4147 + "ignore": "^5.2.0", 4148 + "natural-compare-lite": "^1.4.0", 4149 + "regexpp": "^3.2.0", 4150 + "semver": "^7.3.7", 4151 + "tsutils": "^3.21.0" 4152 }, 4153 "engines": { 4154 - "node": ">= 8" 4155 - } 4156 - }, 4157 - "node_modules/@npmcli/fs": { 4158 - "version": "1.1.1", 4159 - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", 4160 - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", 4161 - "optional": true, 4162 - "dependencies": { 4163 - "@gar/promisify": "^1.0.1", 4164 - "semver": "^7.3.5" 4165 - } 4166 - }, 4167 - "node_modules/@npmcli/fs/node_modules/semver": { 4168 - "version": "7.3.7", 4169 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 4170 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 4171 - "optional": true, 4172 - "dependencies": { 4173 - "lru-cache": "^6.0.0" 4174 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4175 }, 4176 - "bin": { 4177 - "semver": "bin/semver.js" 4178 + "funding": { 4179 + "type": "opencollective", 4180 + "url": "https://opencollective.com/typescript-eslint" 4181 }, 4182 - "engines": { 4183 - "node": ">=10" 4184 + "peerDependencies": { 4185 + "@typescript-eslint/parser": "^5.0.0", 4186 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 4187 + }, 4188 + "peerDependenciesMeta": { 4189 + "typescript": { 4190 + "optional": true 4191 + } 4192 } 4193 }, 4194 - "node_modules/@npmcli/move-file": { 4195 - "version": "1.1.2", 4196 - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", 4197 - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", 4198 - "optional": true, 4199 + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { 4200 + "version": "6.0.0", 4201 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 4202 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 4203 + "dev": true, 4204 "dependencies": { 4205 - "mkdirp": "^1.0.4", 4206 - "rimraf": "^3.0.2" 4207 + "yallist": "^4.0.0" 4208 }, 4209 "engines": { 4210 "node": ">=10" 4211 } 4212 }, 4213 - "node_modules/@playwright/test": { 4214 - "version": "1.22.2", 4215 - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.22.2.tgz", 4216 - "integrity": "sha512-cCl96BEBGPtptFz7C2FOSN3PrTnJ3rPpENe+gYCMx4GNNDlN4tmo2D89y13feGKTMMAIVrXfSQ/UmaQKLy1XLA==", 4217 + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { 4218 + "version": "7.3.8", 4219 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 4220 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 4221 "dev": true, 4222 "dependencies": { 4223 - "@types/node": "*", 4224 - "playwright-core": "1.22.2" 4225 + "lru-cache": "^6.0.0" 4226 }, 4227 "bin": { 4228 - "playwright": "cli.js" 4229 + "semver": "bin/semver.js" 4230 }, 4231 "engines": { 4232 - "node": ">=14" 4233 - } 4234 - }, 4235 - "node_modules/@rushstack/eslint-patch": { 4236 - "version": "1.1.3", 4237 - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", 4238 - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", 4239 - "dev": true 4240 - }, 4241 - "node_modules/@tootallnate/once": { 4242 - "version": "1.1.2", 4243 - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 4244 - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 4245 - "optional": true, 4246 - "engines": { 4247 - "node": ">= 6" 4248 - } 4249 - }, 4250 - "node_modules/@types/cors": { 4251 - "version": "2.8.12", 4252 - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", 4253 - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", 4254 - "dev": true 4255 - }, 4256 - "node_modules/@types/debug": { 4257 - "version": "4.1.7", 4258 - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", 4259 - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", 4260 - "dependencies": { 4261 - "@types/ms": "*" 4262 - } 4263 - }, 4264 - "node_modules/@types/hoist-non-react-statics": { 4265 - "version": "3.3.1", 4266 - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", 4267 - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", 4268 - "dependencies": { 4269 - "@types/react": "*", 4270 - "hoist-non-react-statics": "^3.3.0" 4271 - } 4272 - }, 4273 - "node_modules/@types/json5": { 4274 - "version": "0.0.29", 4275 - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 4276 - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", 4277 - "dev": true 4278 - }, 4279 - "node_modules/@types/minimatch": { 4280 - "version": "3.0.5", 4281 - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 4282 - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 4283 - "dev": true 4284 - }, 4285 - "node_modules/@types/ms": { 4286 - "version": "0.7.31", 4287 - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", 4288 - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" 4289 - }, 4290 - "node_modules/@types/node": { 4291 - "version": "17.0.35", 4292 - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", 4293 - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" 4294 - }, 4295 - "node_modules/@types/normalize-package-data": { 4296 - "version": "2.4.1", 4297 - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 4298 - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 4299 - "dev": true 4300 - }, 4301 - "node_modules/@types/offscreencanvas": { 4302 - "version": "2019.7.0", 4303 - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", 4304 - "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", 4305 - "dev": true 4306 - }, 4307 - "node_modules/@types/prop-types": { 4308 - "version": "15.7.4", 4309 - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", 4310 - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 4311 - }, 4312 - "node_modules/@types/react": { 4313 - "version": "18.0.9", 4314 - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", 4315 - "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", 4316 - "dependencies": { 4317 - "@types/prop-types": "*", 4318 - "@types/scheduler": "*", 4319 - "csstype": "^3.0.2" 4320 + "node": ">=10" 4321 } 4322 }, 4323 - "node_modules/@types/scheduler": { 4324 - "version": "0.16.2", 4325 - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 4326 - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 4327 - }, 4328 - "node_modules/@types/symlink-or-copy": { 4329 - "version": "1.2.0", 4330 - "resolved": "https://registry.npmjs.org/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz", 4331 - "integrity": "sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==", 4332 + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { 4333 + "version": "4.0.0", 4334 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4335 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4336 "dev": true 4337 }, 4338 - "node_modules/@types/validator": { 4339 - "version": "13.7.2", 4340 - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", 4341 - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" 4342 - }, 4343 "node_modules/@typescript-eslint/parser": { 4344 - "version": "5.25.0", 4345 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", 4346 - "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", 4347 + "version": "5.48.0", 4348 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", 4349 + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", 4350 "dev": true, 4351 "dependencies": { 4352 - "@typescript-eslint/scope-manager": "5.25.0", 4353 - "@typescript-eslint/types": "5.25.0", 4354 - "@typescript-eslint/typescript-estree": "5.25.0", 4355 + "@typescript-eslint/scope-manager": "5.48.0", 4356 + "@typescript-eslint/types": "5.48.0", 4357 + "@typescript-eslint/typescript-estree": "5.48.0", 4358 "debug": "^4.3.4" 4359 }, 4360 "engines": { 4361 @@ -1068,37 +825,33 @@ 4362 } 4363 } 4364 }, 4365 - "node_modules/@typescript-eslint/parser/node_modules/debug": { 4366 - "version": "4.3.4", 4367 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 4368 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 4369 + "node_modules/@typescript-eslint/scope-manager": { 4370 + "version": "5.48.0", 4371 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", 4372 + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", 4373 "dev": true, 4374 "dependencies": { 4375 - "ms": "2.1.2" 4376 + "@typescript-eslint/types": "5.48.0", 4377 + "@typescript-eslint/visitor-keys": "5.48.0" 4378 }, 4379 "engines": { 4380 - "node": ">=6.0" 4381 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4382 }, 4383 - "peerDependenciesMeta": { 4384 - "supports-color": { 4385 - "optional": true 4386 - } 4387 + "funding": { 4388 + "type": "opencollective", 4389 + "url": "https://opencollective.com/typescript-eslint" 4390 } 4391 }, 4392 - "node_modules/@typescript-eslint/parser/node_modules/ms": { 4393 - "version": "2.1.2", 4394 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 4395 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 4396 - "dev": true 4397 - }, 4398 - "node_modules/@typescript-eslint/scope-manager": { 4399 - "version": "5.25.0", 4400 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", 4401 - "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", 4402 + "node_modules/@typescript-eslint/type-utils": { 4403 + "version": "5.48.0", 4404 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", 4405 + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", 4406 "dev": true, 4407 "dependencies": { 4408 - "@typescript-eslint/types": "5.25.0", 4409 - "@typescript-eslint/visitor-keys": "5.25.0" 4410 + "@typescript-eslint/typescript-estree": "5.48.0", 4411 + "@typescript-eslint/utils": "5.48.0", 4412 + "debug": "^4.3.4", 4413 + "tsutils": "^3.21.0" 4414 }, 4415 "engines": { 4416 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4417 @@ -1106,12 +859,20 @@ 4418 "funding": { 4419 "type": "opencollective", 4420 "url": "https://opencollective.com/typescript-eslint" 4421 + }, 4422 + "peerDependencies": { 4423 + "eslint": "*" 4424 + }, 4425 + "peerDependenciesMeta": { 4426 + "typescript": { 4427 + "optional": true 4428 + } 4429 } 4430 }, 4431 "node_modules/@typescript-eslint/types": { 4432 - "version": "5.25.0", 4433 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", 4434 - "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==", 4435 + "version": "5.48.0", 4436 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", 4437 + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", 4438 "dev": true, 4439 "engines": { 4440 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4441 @@ -1122,13 +883,13 @@ 4442 } 4443 }, 4444 "node_modules/@typescript-eslint/typescript-estree": { 4445 - "version": "5.25.0", 4446 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", 4447 - "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", 4448 + "version": "5.48.0", 4449 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", 4450 + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", 4451 "dev": true, 4452 "dependencies": { 4453 - "@typescript-eslint/types": "5.25.0", 4454 - "@typescript-eslint/visitor-keys": "5.25.0", 4455 + "@typescript-eslint/types": "5.48.0", 4456 + "@typescript-eslint/visitor-keys": "5.48.0", 4457 "debug": "^4.3.4", 4458 "globby": "^11.1.0", 4459 "is-glob": "^4.0.3", 4460 @@ -1148,33 +909,81 @@ 4461 } 4462 } 4463 }, 4464 - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { 4465 - "version": "4.3.4", 4466 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 4467 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 4468 + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { 4469 + "version": "6.0.0", 4470 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 4471 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 4472 "dev": true, 4473 "dependencies": { 4474 - "ms": "2.1.2" 4475 + "yallist": "^4.0.0" 4476 }, 4477 "engines": { 4478 - "node": ">=6.0" 4479 + "node": ">=10" 4480 + } 4481 + }, 4482 + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 4483 + "version": "7.3.8", 4484 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 4485 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 4486 + "dev": true, 4487 + "dependencies": { 4488 + "lru-cache": "^6.0.0" 4489 }, 4490 - "peerDependenciesMeta": { 4491 - "supports-color": { 4492 - "optional": true 4493 - } 4494 + "bin": { 4495 + "semver": "bin/semver.js" 4496 + }, 4497 + "engines": { 4498 + "node": ">=10" 4499 } 4500 }, 4501 - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { 4502 - "version": "2.1.2", 4503 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 4504 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 4505 + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { 4506 + "version": "4.0.0", 4507 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4508 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4509 "dev": true 4510 }, 4511 - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 4512 - "version": "7.3.7", 4513 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 4514 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 4515 + "node_modules/@typescript-eslint/utils": { 4516 + "version": "5.48.0", 4517 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", 4518 + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", 4519 + "dev": true, 4520 + "dependencies": { 4521 + "@types/json-schema": "^7.0.9", 4522 + "@types/semver": "^7.3.12", 4523 + "@typescript-eslint/scope-manager": "5.48.0", 4524 + "@typescript-eslint/types": "5.48.0", 4525 + "@typescript-eslint/typescript-estree": "5.48.0", 4526 + "eslint-scope": "^5.1.1", 4527 + "eslint-utils": "^3.0.0", 4528 + "semver": "^7.3.7" 4529 + }, 4530 + "engines": { 4531 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4532 + }, 4533 + "funding": { 4534 + "type": "opencollective", 4535 + "url": "https://opencollective.com/typescript-eslint" 4536 + }, 4537 + "peerDependencies": { 4538 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 4539 + } 4540 + }, 4541 + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { 4542 + "version": "6.0.0", 4543 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 4544 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 4545 + "dev": true, 4546 + "dependencies": { 4547 + "yallist": "^4.0.0" 4548 + }, 4549 + "engines": { 4550 + "node": ">=10" 4551 + } 4552 + }, 4553 + "node_modules/@typescript-eslint/utils/node_modules/semver": { 4554 + "version": "7.3.8", 4555 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 4556 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 4557 "dev": true, 4558 "dependencies": { 4559 "lru-cache": "^6.0.0" 4560 @@ -1186,13 +995,19 @@ 4561 "node": ">=10" 4562 } 4563 }, 4564 + "node_modules/@typescript-eslint/utils/node_modules/yallist": { 4565 + "version": "4.0.0", 4566 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4567 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4568 + "dev": true 4569 + }, 4570 "node_modules/@typescript-eslint/visitor-keys": { 4571 - "version": "5.25.0", 4572 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", 4573 - "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", 4574 + "version": "5.48.0", 4575 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", 4576 + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", 4577 "dev": true, 4578 "dependencies": { 4579 - "@typescript-eslint/types": "5.25.0", 4580 + "@typescript-eslint/types": "5.48.0", 4581 "eslint-visitor-keys": "^3.3.0" 4582 }, 4583 "engines": { 4584 @@ -1203,15 +1018,10 @@ 4585 "url": "https://opencollective.com/typescript-eslint" 4586 } 4587 }, 4588 - "node_modules/abbrev": { 4589 - "version": "1.1.1", 4590 - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 4591 - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 4592 - }, 4593 "node_modules/acorn": { 4594 - "version": "8.7.1", 4595 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 4596 - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 4597 + "version": "8.8.1", 4598 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", 4599 + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", 4600 "dev": true, 4601 "bin": { 4602 "acorn": "bin/acorn" 4603 @@ -1261,58 +1071,38 @@ 4604 "node": ">=0.4.0" 4605 } 4606 }, 4607 - "node_modules/agent-base": { 4608 - "version": "6.0.2", 4609 - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 4610 - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 4611 + "node_modules/ajv": { 4612 + "version": "6.12.6", 4613 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 4614 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 4615 "dependencies": { 4616 - "debug": "4" 4617 + "fast-deep-equal": "^3.1.1", 4618 + "fast-json-stable-stringify": "^2.0.0", 4619 + "json-schema-traverse": "^0.4.1", 4620 + "uri-js": "^4.2.2" 4621 }, 4622 - "engines": { 4623 - "node": ">= 6.0.0" 4624 + "funding": { 4625 + "type": "github", 4626 + "url": "https://github.com/sponsors/epoberezkin" 4627 } 4628 }, 4629 - "node_modules/agentkeepalive": { 4630 - "version": "4.2.1", 4631 - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", 4632 - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", 4633 - "optional": true, 4634 - "dependencies": { 4635 - "debug": "^4.1.0", 4636 - "depd": "^1.1.2", 4637 - "humanize-ms": "^1.2.1" 4638 - }, 4639 - "engines": { 4640 - "node": ">= 8.0.0" 4641 - } 4642 + "node_modules/another-json": { 4643 + "version": "0.2.0", 4644 + "resolved": "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz", 4645 + "integrity": "sha512-/Ndrl68UQLhnCdsAzEXLMFuOR546o2qbYRqCglaNHbjXrwG1ayTcdwr3zkSGOGtGXDyR5X9nCFfnyG2AFJIsqg==" 4646 }, 4647 - "node_modules/aggregate-error": { 4648 - "version": "3.1.0", 4649 - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 4650 - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 4651 - "optional": true, 4652 + "node_modules/ansi-escapes": { 4653 + "version": "4.3.2", 4654 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 4655 + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 4656 "dependencies": { 4657 - "clean-stack": "^2.0.0", 4658 - "indent-string": "^4.0.0" 4659 + "type-fest": "^0.21.3" 4660 }, 4661 "engines": { 4662 "node": ">=8" 4663 - } 4664 - }, 4665 - "node_modules/ajv": { 4666 - "version": "6.12.6", 4667 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 4668 - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 4669 - "dev": true, 4670 - "dependencies": { 4671 - "fast-deep-equal": "^3.1.1", 4672 - "fast-json-stable-stringify": "^2.0.0", 4673 - "json-schema-traverse": "^0.4.1", 4674 - "uri-js": "^4.2.2" 4675 }, 4676 "funding": { 4677 - "type": "github", 4678 - "url": "https://github.com/sponsors/epoberezkin" 4679 + "url": "https://github.com/sponsors/sindresorhus" 4680 } 4681 }, 4682 "node_modules/ansi-regex": { 4683 @@ -1336,9 +1126,9 @@ 4684 } 4685 }, 4686 "node_modules/anymatch": { 4687 - "version": "3.1.2", 4688 - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 4689 - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 4690 + "version": "3.1.3", 4691 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 4692 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 4693 "dev": true, 4694 "dependencies": { 4695 "normalize-path": "^3.0.0", 4696 @@ -1348,39 +1138,10 @@ 4697 "node": ">= 8" 4698 } 4699 }, 4700 - "node_modules/append-buffer": { 4701 - "version": "1.0.2", 4702 - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", 4703 - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", 4704 - "dev": true, 4705 - "dependencies": { 4706 - "buffer-equal": "^1.0.0" 4707 - }, 4708 - "engines": { 4709 - "node": ">=0.10.0" 4710 - } 4711 - }, 4712 - "node_modules/aproba": { 4713 - "version": "2.0.0", 4714 - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 4715 - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 4716 - }, 4717 - "node_modules/are-we-there-yet": { 4718 - "version": "2.0.0", 4719 - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 4720 - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 4721 - "dependencies": { 4722 - "delegates": "^1.0.0", 4723 - "readable-stream": "^3.6.0" 4724 - }, 4725 - "engines": { 4726 - "node": ">=10" 4727 - } 4728 - }, 4729 "node_modules/arg": { 4730 - "version": "5.0.1", 4731 - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 4732 - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", 4733 + "version": "5.0.2", 4734 + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 4735 + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 4736 "dev": true 4737 }, 4738 "node_modules/argparse": { 4739 @@ -1389,38 +1150,6 @@ 4740 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 4741 "dev": true 4742 }, 4743 - "node_modules/aria-query": { 4744 - "version": "4.2.2", 4745 - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", 4746 - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", 4747 - "dev": true, 4748 - "dependencies": { 4749 - "@babel/runtime": "^7.10.2", 4750 - "@babel/runtime-corejs3": "^7.10.2" 4751 - }, 4752 - "engines": { 4753 - "node": ">=6.0" 4754 - } 4755 - }, 4756 - "node_modules/array-includes": { 4757 - "version": "3.1.5", 4758 - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", 4759 - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", 4760 - "dev": true, 4761 - "dependencies": { 4762 - "call-bind": "^1.0.2", 4763 - "define-properties": "^1.1.4", 4764 - "es-abstract": "^1.19.5", 4765 - "get-intrinsic": "^1.1.1", 4766 - "is-string": "^1.0.7" 4767 - }, 4768 - "engines": { 4769 - "node": ">= 0.4" 4770 - }, 4771 - "funding": { 4772 - "url": "https://github.com/sponsors/ljharb" 4773 - } 4774 - }, 4775 "node_modules/array-union": { 4776 "version": "2.1.0", 4777 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 4778 @@ -1430,60 +1159,31 @@ 4779 "node": ">=8" 4780 } 4781 }, 4782 - "node_modules/array.prototype.flat": { 4783 - "version": "1.3.0", 4784 - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", 4785 - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", 4786 - "dev": true, 4787 + "node_modules/asn1": { 4788 + "version": "0.2.6", 4789 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 4790 + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 4791 "dependencies": { 4792 - "call-bind": "^1.0.2", 4793 - "define-properties": "^1.1.3", 4794 - "es-abstract": "^1.19.2", 4795 - "es-shim-unscopables": "^1.0.0" 4796 - }, 4797 - "engines": { 4798 - "node": ">= 0.4" 4799 - }, 4800 - "funding": { 4801 - "url": "https://github.com/sponsors/ljharb" 4802 + "safer-buffer": "~2.1.0" 4803 } 4804 }, 4805 - "node_modules/array.prototype.flatmap": { 4806 - "version": "1.3.0", 4807 - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", 4808 - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", 4809 - "dev": true, 4810 - "dependencies": { 4811 - "call-bind": "^1.0.2", 4812 - "define-properties": "^1.1.3", 4813 - "es-abstract": "^1.19.2", 4814 - "es-shim-unscopables": "^1.0.0" 4815 - }, 4816 + "node_modules/assert-plus": { 4817 + "version": "1.0.0", 4818 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 4819 + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 4820 "engines": { 4821 - "node": ">= 0.4" 4822 - }, 4823 - "funding": { 4824 - "url": "https://github.com/sponsors/ljharb" 4825 + "node": ">=0.8" 4826 } 4827 }, 4828 - "node_modules/ast-types-flow": { 4829 - "version": "0.0.7", 4830 - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", 4831 - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", 4832 - "dev": true 4833 - }, 4834 - "node_modules/attr-accept": { 4835 - "version": "2.2.2", 4836 - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", 4837 - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", 4838 - "engines": { 4839 - "node": ">=4" 4840 - } 4841 + "node_modules/asynckit": { 4842 + "version": "0.4.0", 4843 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 4844 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 4845 }, 4846 "node_modules/autoprefixer": { 4847 - "version": "10.4.7", 4848 - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", 4849 - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", 4850 + "version": "10.4.13", 4851 + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", 4852 + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", 4853 "dev": true, 4854 "funding": [ 4855 { 4856 @@ -1496,8 +1196,8 @@ 4857 } 4858 ], 4859 "dependencies": { 4860 - "browserslist": "^4.20.3", 4861 - "caniuse-lite": "^1.0.30001335", 4862 + "browserslist": "^4.21.4", 4863 + "caniuse-lite": "^1.0.30001426", 4864 "fraction.js": "^4.2.0", 4865 "normalize-range": "^0.1.2", 4866 "picocolors": "^1.0.0", 4867 @@ -1513,25 +1213,68 @@ 4868 "postcss": "^8.1.0" 4869 } 4870 }, 4871 - "node_modules/axe-core": { 4872 - "version": "4.4.1", 4873 - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", 4874 - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", 4875 - "dev": true, 4876 + "node_modules/aws-sign2": { 4877 + "version": "0.7.0", 4878 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 4879 + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", 4880 "engines": { 4881 - "node": ">=4" 4882 + "node": "*" 4883 } 4884 }, 4885 - "node_modules/axobject-query": { 4886 - "version": "2.2.0", 4887 - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 4888 - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", 4889 - "dev": true 4890 + "node_modules/aws4": { 4891 + "version": "1.11.0", 4892 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 4893 + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" 4894 + }, 4895 + "node_modules/babel-plugin-transform-hook-names": { 4896 + "version": "1.0.2", 4897 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", 4898 + "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==", 4899 + "dev": true, 4900 + "peerDependencies": { 4901 + "@babel/core": "^7.12.10" 4902 + } 4903 }, 4904 "node_modules/balanced-match": { 4905 "version": "1.0.2", 4906 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 4907 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 4908 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 4909 + "dev": true 4910 + }, 4911 + "node_modules/base-x": { 4912 + "version": "3.0.9", 4913 + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 4914 + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 4915 + "dependencies": { 4916 + "safe-buffer": "^5.0.1" 4917 + } 4918 + }, 4919 + "node_modules/base64-js": { 4920 + "version": "1.5.1", 4921 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 4922 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 4923 + "funding": [ 4924 + { 4925 + "type": "github", 4926 + "url": "https://github.com/sponsors/feross" 4927 + }, 4928 + { 4929 + "type": "patreon", 4930 + "url": "https://www.patreon.com/feross" 4931 + }, 4932 + { 4933 + "type": "consulting", 4934 + "url": "https://feross.org/support" 4935 + } 4936 + ] 4937 + }, 4938 + "node_modules/bcrypt-pbkdf": { 4939 + "version": "1.0.2", 4940 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 4941 + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 4942 + "dependencies": { 4943 + "tweetnacl": "^0.14.3" 4944 + } 4945 }, 4946 "node_modules/binary-extensions": { 4947 "version": "2.2.0", 4948 @@ -1542,21 +1285,44 @@ 4949 "node": ">=8" 4950 } 4951 }, 4952 - "node_modules/blurhash": { 4953 - "version": "1.1.5", 4954 - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-1.1.5.tgz", 4955 - "integrity": "sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg==" 4956 + "node_modules/bl": { 4957 + "version": "4.1.0", 4958 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 4959 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 4960 + "dependencies": { 4961 + "buffer": "^5.5.0", 4962 + "inherits": "^2.0.4", 4963 + "readable-stream": "^3.4.0" 4964 + } 4965 }, 4966 - "node_modules/boolbase": { 4967 - "version": "1.0.0", 4968 - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 4969 - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", 4970 - "dev": true 4971 + "node_modules/bl/node_modules/buffer": { 4972 + "version": "5.7.1", 4973 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 4974 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 4975 + "funding": [ 4976 + { 4977 + "type": "github", 4978 + "url": "https://github.com/sponsors/feross" 4979 + }, 4980 + { 4981 + "type": "patreon", 4982 + "url": "https://www.patreon.com/feross" 4983 + }, 4984 + { 4985 + "type": "consulting", 4986 + "url": "https://feross.org/support" 4987 + } 4988 + ], 4989 + "dependencies": { 4990 + "base64-js": "^1.3.1", 4991 + "ieee754": "^1.1.13" 4992 + } 4993 }, 4994 "node_modules/brace-expansion": { 4995 "version": "1.1.11", 4996 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 4997 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 4998 + "dev": true, 4999 "dependencies": { 5000 "balanced-match": "^1.0.0", 5001 "concat-map": "0.0.1" 5002 @@ -1574,89 +1340,18 @@ 5003 "node": ">=8" 5004 } 5005 }, 5006 - "node_modules/broccoli-node-api": { 5007 - "version": "1.7.0", 5008 - "resolved": "https://registry.npmjs.org/broccoli-node-api/-/broccoli-node-api-1.7.0.tgz", 5009 - "integrity": "sha512-QIqLSVJWJUVOhclmkmypJJH9u9s/aWH4+FH6Q6Ju5l+Io4dtwqdPUNmDfw40o6sxhbZHhqGujDJuHTML1wG8Yw==", 5010 - "dev": true 5011 - }, 5012 - "node_modules/broccoli-node-info": { 5013 - "version": "2.2.0", 5014 - "resolved": "https://registry.npmjs.org/broccoli-node-info/-/broccoli-node-info-2.2.0.tgz", 5015 - "integrity": "sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg==", 5016 - "dev": true, 5017 - "engines": { 5018 - "node": "8.* || >= 10.*" 5019 - } 5020 - }, 5021 - "node_modules/broccoli-output-wrapper": { 5022 - "version": "3.2.5", 5023 - "resolved": "https://registry.npmjs.org/broccoli-output-wrapper/-/broccoli-output-wrapper-3.2.5.tgz", 5024 - "integrity": "sha512-bQAtwjSrF4Nu0CK0JOy5OZqw9t5U0zzv2555EA/cF8/a8SLDTIetk9UgrtMVw7qKLKdSpOZ2liZNeZZDaKgayw==", 5025 - "dev": true, 5026 - "dependencies": { 5027 - "fs-extra": "^8.1.0", 5028 - "heimdalljs-logger": "^0.1.10", 5029 - "symlink-or-copy": "^1.2.0" 5030 - }, 5031 - "engines": { 5032 - "node": "10.* || >= 12.*" 5033 - } 5034 - }, 5035 - "node_modules/broccoli-output-wrapper/node_modules/fs-extra": { 5036 - "version": "8.1.0", 5037 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 5038 - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 5039 - "dev": true, 5040 - "dependencies": { 5041 - "graceful-fs": "^4.2.0", 5042 - "jsonfile": "^4.0.0", 5043 - "universalify": "^0.1.0" 5044 - }, 5045 - "engines": { 5046 - "node": ">=6 <7 || >=8" 5047 - } 5048 - }, 5049 - "node_modules/broccoli-output-wrapper/node_modules/jsonfile": { 5050 - "version": "4.0.0", 5051 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 5052 - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 5053 - "dev": true, 5054 - "optionalDependencies": { 5055 - "graceful-fs": "^4.1.6" 5056 - } 5057 - }, 5058 - "node_modules/broccoli-output-wrapper/node_modules/universalify": { 5059 - "version": "0.1.2", 5060 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 5061 - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 5062 - "dev": true, 5063 - "engines": { 5064 - "node": ">= 4.0.0" 5065 - } 5066 - }, 5067 - "node_modules/broccoli-plugin": { 5068 - "version": "4.0.7", 5069 - "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz", 5070 - "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==", 5071 - "dev": true, 5072 - "dependencies": { 5073 - "broccoli-node-api": "^1.7.0", 5074 - "broccoli-output-wrapper": "^3.2.5", 5075 - "fs-merger": "^3.2.1", 5076 - "promise-map-series": "^0.3.0", 5077 - "quick-temp": "^0.1.8", 5078 - "rimraf": "^3.0.2", 5079 - "symlink-or-copy": "^1.3.1" 5080 - }, 5081 - "engines": { 5082 - "node": "10.* || >= 12.*" 5083 - } 5084 + "node_modules/browser-request": { 5085 + "version": "0.3.3", 5086 + "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", 5087 + "integrity": "sha512-YyNI4qJJ+piQG6MMEuo7J3Bzaqssufx04zpEKYfSrl/1Op59HWali9zMtBpXnkmqMcOuWJPZvudrm9wISmnCbg==", 5088 + "engines": [ 5089 + "node" 5090 + ] 5091 }, 5092 "node_modules/browserslist": { 5093 - "version": "4.20.3", 5094 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 5095 - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 5096 + "version": "4.21.4", 5097 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 5098 + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 5099 "dev": true, 5100 "funding": [ 5101 { 5102 @@ -1669,11 +1364,10 @@ 5103 } 5104 ], 5105 "dependencies": { 5106 - "caniuse-lite": "^1.0.30001332", 5107 - "electron-to-chromium": "^1.4.118", 5108 - "escalade": "^3.1.1", 5109 - "node-releases": "^2.0.3", 5110 - "picocolors": "^1.0.0" 5111 + "caniuse-lite": "^1.0.30001400", 5112 + "electron-to-chromium": "^1.4.251", 5113 + "node-releases": "^2.0.6", 5114 + "update-browserslist-db": "^1.0.9" 5115 }, 5116 "bin": { 5117 "browserslist": "cli.js" 5118 @@ -1682,25 +1376,41 @@ 5119 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 5120 } 5121 }, 5122 - "node_modules/buffer-equal": { 5123 - "version": "1.0.0", 5124 - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", 5125 - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", 5126 - "dev": true, 5127 - "engines": { 5128 - "node": ">=0.4.0" 5129 + "node_modules/bs58": { 5130 + "version": "4.0.1", 5131 + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 5132 + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 5133 + "dependencies": { 5134 + "base-x": "^3.0.2" 5135 } 5136 }, 5137 - "node_modules/buffer-from": { 5138 - "version": "1.1.2", 5139 - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 5140 - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 5141 - "dev": true 5142 + "node_modules/buffer": { 5143 + "version": "6.0.3", 5144 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 5145 + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 5146 + "funding": [ 5147 + { 5148 + "type": "github", 5149 + "url": "https://github.com/sponsors/feross" 5150 + }, 5151 + { 5152 + "type": "patreon", 5153 + "url": "https://www.patreon.com/feross" 5154 + }, 5155 + { 5156 + "type": "consulting", 5157 + "url": "https://feross.org/support" 5158 + } 5159 + ], 5160 + "dependencies": { 5161 + "base64-js": "^1.3.1", 5162 + "ieee754": "^1.2.1" 5163 + } 5164 }, 5165 "node_modules/builtin-modules": { 5166 - "version": "3.2.0", 5167 - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 5168 - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 5169 + "version": "3.3.0", 5170 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 5171 + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 5172 "dev": true, 5173 "engines": { 5174 "node": ">=6" 5175 @@ -1709,40 +1419,10 @@ 5176 "url": "https://github.com/sponsors/sindresorhus" 5177 } 5178 }, 5179 - "node_modules/cacache": { 5180 - "version": "15.3.0", 5181 - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", 5182 - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", 5183 - "optional": true, 5184 - "dependencies": { 5185 - "@npmcli/fs": "^1.0.0", 5186 - "@npmcli/move-file": "^1.0.1", 5187 - "chownr": "^2.0.0", 5188 - "fs-minipass": "^2.0.0", 5189 - "glob": "^7.1.4", 5190 - "infer-owner": "^1.0.4", 5191 - "lru-cache": "^6.0.0", 5192 - "minipass": "^3.1.1", 5193 - "minipass-collect": "^1.0.2", 5194 - "minipass-flush": "^1.0.5", 5195 - "minipass-pipeline": "^1.2.2", 5196 - "mkdirp": "^1.0.3", 5197 - "p-map": "^4.0.0", 5198 - "promise-inflight": "^1.0.1", 5199 - "rimraf": "^3.0.2", 5200 - "ssri": "^8.0.1", 5201 - "tar": "^6.0.2", 5202 - "unique-filename": "^1.1.1" 5203 - }, 5204 - "engines": { 5205 - "node": ">= 10" 5206 - } 5207 - }, 5208 "node_modules/call-bind": { 5209 "version": "1.0.2", 5210 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 5211 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 5212 - "dev": true, 5213 "dependencies": { 5214 "function-bind": "^1.1.1", 5215 "get-intrinsic": "^1.0.2" 5216 @@ -1770,9 +1450,10 @@ 5217 } 5218 }, 5219 "node_modules/caniuse-lite": { 5220 - "version": "1.0.30001342", 5221 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", 5222 - "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", 5223 + "version": "1.0.30001441", 5224 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", 5225 + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", 5226 + "dev": true, 5227 "funding": [ 5228 { 5229 "type": "opencollective", 5230 @@ -1784,6 +1465,11 @@ 5231 } 5232 ] 5233 }, 5234 + "node_modules/caseless": { 5235 + "version": "0.12.0", 5236 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 5237 + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" 5238 + }, 5239 "node_modules/chalk": { 5240 "version": "2.4.2", 5241 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 5242 @@ -1798,42 +1484,10 @@ 5243 "node": ">=4" 5244 } 5245 }, 5246 - "node_modules/cheerio": { 5247 - "version": "1.0.0-rc.10", 5248 - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", 5249 - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", 5250 - "dev": true, 5251 - "dependencies": { 5252 - "cheerio-select": "^1.5.0", 5253 - "dom-serializer": "^1.3.2", 5254 - "domhandler": "^4.2.0", 5255 - "htmlparser2": "^6.1.0", 5256 - "parse5": "^6.0.1", 5257 - "parse5-htmlparser2-tree-adapter": "^6.0.1", 5258 - "tslib": "^2.2.0" 5259 - }, 5260 - "engines": { 5261 - "node": ">= 6" 5262 - }, 5263 - "funding": { 5264 - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" 5265 - } 5266 - }, 5267 - "node_modules/cheerio-select": { 5268 - "version": "1.5.0", 5269 - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", 5270 - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", 5271 - "dev": true, 5272 - "dependencies": { 5273 - "css-select": "^4.1.3", 5274 - "css-what": "^5.0.1", 5275 - "domelementtype": "^2.2.0", 5276 - "domhandler": "^4.2.0", 5277 - "domutils": "^2.7.0" 5278 - }, 5279 - "funding": { 5280 - "url": "https://github.com/sponsors/fb55" 5281 - } 5282 + "node_modules/chardet": { 5283 + "version": "0.7.0", 5284 + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 5285 + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 5286 }, 5287 "node_modules/chokidar": { 5288 "version": "3.5.3", 5289 @@ -1874,24 +1528,25 @@ 5290 "node": ">= 6" 5291 } 5292 }, 5293 - "node_modules/chownr": { 5294 - "version": "2.0.0", 5295 - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 5296 - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 5297 + "node_modules/ci-info": { 5298 + "version": "3.7.1", 5299 + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", 5300 + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", 5301 + "dev": true, 5302 + "funding": [ 5303 + { 5304 + "type": "github", 5305 + "url": "https://github.com/sponsors/sibiraj-s" 5306 + } 5307 + ], 5308 "engines": { 5309 - "node": ">=10" 5310 + "node": ">=8" 5311 } 5312 }, 5313 - "node_modules/ci-info": { 5314 - "version": "3.3.0", 5315 - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", 5316 - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", 5317 - "dev": true 5318 - }, 5319 "node_modules/clean-regexp": { 5320 "version": "1.0.0", 5321 "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", 5322 - "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", 5323 + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", 5324 "dev": true, 5325 "dependencies": { 5326 "escape-string-regexp": "^1.0.5" 5327 @@ -1900,80 +1555,42 @@ 5328 "node": ">=4" 5329 } 5330 }, 5331 - "node_modules/clean-stack": { 5332 - "version": "2.2.0", 5333 - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 5334 - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 5335 - "optional": true, 5336 + "node_modules/cli-cursor": { 5337 + "version": "3.1.0", 5338 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 5339 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 5340 + "dependencies": { 5341 + "restore-cursor": "^3.1.0" 5342 + }, 5343 "engines": { 5344 - "node": ">=6" 5345 + "node": ">=8" 5346 } 5347 }, 5348 - "node_modules/clone": { 5349 - "version": "2.1.2", 5350 - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 5351 - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 5352 - "dev": true, 5353 + "node_modules/cli-spinners": { 5354 + "version": "2.7.0", 5355 + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", 5356 + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", 5357 "engines": { 5358 - "node": ">=0.8" 5359 + "node": ">=6" 5360 + }, 5361 + "funding": { 5362 + "url": "https://github.com/sponsors/sindresorhus" 5363 } 5364 }, 5365 - "node_modules/clone-buffer": { 5366 - "version": "1.0.0", 5367 - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 5368 - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 5369 - "dev": true, 5370 + "node_modules/cli-width": { 5371 + "version": "3.0.0", 5372 + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", 5373 + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", 5374 "engines": { 5375 - "node": ">= 0.10" 5376 - } 5377 - }, 5378 - "node_modules/clone-stats": { 5379 - "version": "1.0.0", 5380 - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 5381 - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", 5382 - "dev": true 5383 - }, 5384 - "node_modules/cloneable-readable": { 5385 - "version": "1.1.3", 5386 - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", 5387 - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", 5388 - "dev": true, 5389 - "dependencies": { 5390 - "inherits": "^2.0.1", 5391 - "process-nextick-args": "^2.0.0", 5392 - "readable-stream": "^2.3.5" 5393 - } 5394 - }, 5395 - "node_modules/cloneable-readable/node_modules/readable-stream": { 5396 - "version": "2.3.7", 5397 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 5398 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 5399 - "dev": true, 5400 - "dependencies": { 5401 - "core-util-is": "~1.0.0", 5402 - "inherits": "~2.0.3", 5403 - "isarray": "~1.0.0", 5404 - "process-nextick-args": "~2.0.0", 5405 - "safe-buffer": "~5.1.1", 5406 - "string_decoder": "~1.1.1", 5407 - "util-deprecate": "~1.0.1" 5408 - } 5409 - }, 5410 - "node_modules/cloneable-readable/node_modules/string_decoder": { 5411 - "version": "1.1.1", 5412 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 5413 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 5414 - "dev": true, 5415 - "dependencies": { 5416 - "safe-buffer": "~5.1.0" 5417 + "node": ">= 10" 5418 } 5419 }, 5420 - "node_modules/clsx": { 5421 - "version": "1.1.1", 5422 - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", 5423 - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", 5424 + "node_modules/clone": { 5425 + "version": "1.0.4", 5426 + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 5427 + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", 5428 "engines": { 5429 - "node": ">=6" 5430 + "node": ">=0.8" 5431 } 5432 }, 5433 "node_modules/color-convert": { 5434 @@ -1988,141 +1605,44 @@ 5435 "node_modules/color-name": { 5436 "version": "1.1.3", 5437 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 5438 - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 5439 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 5440 "dev": true 5441 }, 5442 - "node_modules/color-support": { 5443 - "version": "1.1.3", 5444 - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 5445 - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 5446 - "bin": { 5447 - "color-support": "bin.js" 5448 - } 5449 - }, 5450 - "node_modules/colors": { 5451 - "version": "1.4.0", 5452 - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 5453 - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 5454 - "dev": true, 5455 - "engines": { 5456 - "node": ">=0.1.90" 5457 - } 5458 - }, 5459 - "node_modules/commander": { 5460 - "version": "9.1.0", 5461 - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", 5462 - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", 5463 - "dev": true, 5464 + "node_modules/combined-stream": { 5465 + "version": "1.0.8", 5466 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 5467 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 5468 + "dependencies": { 5469 + "delayed-stream": "~1.0.0" 5470 + }, 5471 "engines": { 5472 - "node": "^12.20.0 || >=14" 5473 + "node": ">= 0.8" 5474 } 5475 }, 5476 "node_modules/concat-map": { 5477 "version": "0.0.1", 5478 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 5479 - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 5480 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 5481 + "dev": true 5482 }, 5483 - "node_modules/concat-stream": { 5484 - "version": "2.0.0", 5485 - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", 5486 - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", 5487 - "dev": true, 5488 - "engines": [ 5489 - "node >= 6.0" 5490 - ], 5491 - "dependencies": { 5492 - "buffer-from": "^1.0.0", 5493 - "inherits": "^2.0.3", 5494 - "readable-stream": "^3.0.2", 5495 - "typedarray": "^0.0.6" 5496 + "node_modules/content-type": { 5497 + "version": "1.0.4", 5498 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 5499 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 5500 + "engines": { 5501 + "node": ">= 0.6" 5502 } 5503 }, 5504 - "node_modules/console-control-strings": { 5505 - "version": "1.1.0", 5506 - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 5507 - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 5508 - }, 5509 "node_modules/convert-source-map": { 5510 - "version": "1.8.0", 5511 - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 5512 - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 5513 - "dev": true, 5514 - "dependencies": { 5515 - "safe-buffer": "~5.1.1" 5516 - } 5517 - }, 5518 - "node_modules/core-js": { 5519 - "version": "3.21.0", 5520 - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz", 5521 - "integrity": "sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==", 5522 - "hasInstallScript": true, 5523 - "funding": { 5524 - "type": "opencollective", 5525 - "url": "https://opencollective.com/core-js" 5526 - } 5527 - }, 5528 - "node_modules/core-js-pure": { 5529 - "version": "3.21.0", 5530 - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.0.tgz", 5531 - "integrity": "sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg==", 5532 - "dev": true, 5533 - "hasInstallScript": true, 5534 - "funding": { 5535 - "type": "opencollective", 5536 - "url": "https://opencollective.com/core-js" 5537 - } 5538 + "version": "1.9.0", 5539 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 5540 + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 5541 + "dev": true 5542 }, 5543 "node_modules/core-util-is": { 5544 "version": "1.0.2", 5545 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 5546 - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 5547 - "dev": true 5548 - }, 5549 - "node_modules/cors": { 5550 - "version": "2.8.5", 5551 - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 5552 - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 5553 - "dependencies": { 5554 - "object-assign": "^4", 5555 - "vary": "^1" 5556 - }, 5557 - "engines": { 5558 - "node": ">= 0.10" 5559 - } 5560 - }, 5561 - "node_modules/crc-32": { 5562 - "version": "0.3.0", 5563 - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-0.3.0.tgz", 5564 - "integrity": "sha1-aj02h/W67EH36bmf4ZU6Ll0Zd14=", 5565 - "engines": { 5566 - "node": ">=0.8" 5567 - } 5568 - }, 5569 - "node_modules/cross-env": { 5570 - "version": "7.0.3", 5571 - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", 5572 - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", 5573 - "dev": true, 5574 - "dependencies": { 5575 - "cross-spawn": "^7.0.1" 5576 - }, 5577 - "bin": { 5578 - "cross-env": "src/bin/cross-env.js", 5579 - "cross-env-shell": "src/bin/cross-env-shell.js" 5580 - }, 5581 - "engines": { 5582 - "node": ">=10.14", 5583 - "npm": ">=6", 5584 - "yarn": ">=1" 5585 - } 5586 - }, 5587 - "node_modules/cross-fetch": { 5588 - "version": "3.1.5", 5589 - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 5590 - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 5591 - "dependencies": { 5592 - "node-fetch": "2.6.7" 5593 - } 5594 + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 5595 }, 5596 "node_modules/cross-spawn": { 5597 "version": "7.0.3", 5598 @@ -2138,34 +1658,6 @@ 5599 "node": ">= 8" 5600 } 5601 }, 5602 - "node_modules/css-select": { 5603 - "version": "4.2.1", 5604 - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", 5605 - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", 5606 - "dev": true, 5607 - "dependencies": { 5608 - "boolbase": "^1.0.0", 5609 - "css-what": "^5.1.0", 5610 - "domhandler": "^4.3.0", 5611 - "domutils": "^2.8.0", 5612 - "nth-check": "^2.0.1" 5613 - }, 5614 - "funding": { 5615 - "url": "https://github.com/sponsors/fb55" 5616 - } 5617 - }, 5618 - "node_modules/css-what": { 5619 - "version": "5.1.0", 5620 - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", 5621 - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", 5622 - "dev": true, 5623 - "engines": { 5624 - "node": ">= 6" 5625 - }, 5626 - "funding": { 5627 - "url": "https://github.com/sponsors/fb55" 5628 - } 5629 - }, 5630 "node_modules/cssesc": { 5631 "version": "3.0.0", 5632 "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 5633 @@ -2178,27 +1670,22 @@ 5634 "node": ">=4" 5635 } 5636 }, 5637 - "node_modules/csstype": { 5638 - "version": "3.0.10", 5639 - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", 5640 - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" 5641 - }, 5642 - "node_modules/damerau-levenshtein": { 5643 - "version": "1.0.8", 5644 - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", 5645 - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", 5646 - "dev": true 5647 - }, 5648 - "node_modules/de-indent": { 5649 - "version": "1.0.2", 5650 - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", 5651 - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", 5652 - "dev": true 5653 + "node_modules/dashdash": { 5654 + "version": "1.14.1", 5655 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 5656 + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 5657 + "dependencies": { 5658 + "assert-plus": "^1.0.0" 5659 + }, 5660 + "engines": { 5661 + "node": ">=0.10" 5662 + } 5663 }, 5664 "node_modules/debug": { 5665 - "version": "4.3.3", 5666 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 5667 - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 5668 + "version": "4.3.4", 5669 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 5670 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 5671 + "dev": true, 5672 "dependencies": { 5673 "ms": "2.1.2" 5674 }, 5675 @@ -2211,70 +1698,49 @@ 5676 } 5677 } 5678 }, 5679 - "node_modules/debug/node_modules/ms": { 5680 - "version": "2.1.2", 5681 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 5682 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 5683 - }, 5684 "node_modules/deep-is": { 5685 "version": "0.1.4", 5686 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 5687 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 5688 "dev": true 5689 }, 5690 - "node_modules/define-properties": { 5691 - "version": "1.1.4", 5692 - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 5693 - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 5694 - "dev": true, 5695 + "node_modules/defaults": { 5696 + "version": "1.0.4", 5697 + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", 5698 + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", 5699 "dependencies": { 5700 - "has-property-descriptors": "^1.0.0", 5701 - "object-keys": "^1.1.1" 5702 - }, 5703 - "engines": { 5704 - "node": ">= 0.4" 5705 + "clone": "^1.0.2" 5706 }, 5707 "funding": { 5708 - "url": "https://github.com/sponsors/ljharb" 5709 + "url": "https://github.com/sponsors/sindresorhus" 5710 } 5711 }, 5712 "node_modules/defined": { 5713 - "version": "1.0.0", 5714 - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 5715 - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 5716 - "dev": true 5717 - }, 5718 - "node_modules/delegates": { 5719 - "version": "1.0.0", 5720 - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 5721 - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 5722 - }, 5723 - "node_modules/depd": { 5724 - "version": "1.1.2", 5725 - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 5726 - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 5727 - "optional": true, 5728 - "engines": { 5729 - "node": ">= 0.6" 5730 + "version": "1.0.1", 5731 + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 5732 + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 5733 + "dev": true, 5734 + "funding": { 5735 + "url": "https://github.com/sponsors/ljharb" 5736 } 5737 }, 5738 - "node_modules/detect-libc": { 5739 - "version": "2.0.1", 5740 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 5741 - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 5742 + "node_modules/delayed-stream": { 5743 + "version": "1.0.0", 5744 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 5745 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 5746 "engines": { 5747 - "node": ">=8" 5748 + "node": ">=0.4.0" 5749 } 5750 }, 5751 "node_modules/detective": { 5752 - "version": "5.2.0", 5753 - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 5754 - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 5755 + "version": "5.2.1", 5756 + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 5757 + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 5758 "dev": true, 5759 "dependencies": { 5760 - "acorn-node": "^1.6.1", 5761 + "acorn-node": "^1.8.2", 5762 "defined": "^1.0.0", 5763 - "minimist": "^1.1.1" 5764 + "minimist": "^1.2.6" 5765 }, 5766 "bin": { 5767 "detective": "bin/detective.js" 5768 @@ -2319,235 +1785,389 @@ 5769 "node": ">=6.0.0" 5770 } 5771 }, 5772 - "node_modules/dom-serializer": { 5773 - "version": "1.3.2", 5774 - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", 5775 - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", 5776 - "dev": true, 5777 + "node_modules/ecc-jsbn": { 5778 + "version": "0.1.2", 5779 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 5780 + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 5781 "dependencies": { 5782 - "domelementtype": "^2.0.1", 5783 - "domhandler": "^4.2.0", 5784 - "entities": "^2.0.0" 5785 - }, 5786 - "funding": { 5787 - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 5788 + "jsbn": "~0.1.0", 5789 + "safer-buffer": "^2.1.0" 5790 } 5791 }, 5792 - "node_modules/domelementtype": { 5793 - "version": "2.2.0", 5794 - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", 5795 - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", 5796 - "dev": true, 5797 - "funding": [ 5798 - { 5799 - "type": "github", 5800 - "url": "https://github.com/sponsors/fb55" 5801 - } 5802 - ] 5803 + "node_modules/electron-to-chromium": { 5804 + "version": "1.4.284", 5805 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 5806 + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 5807 + "dev": true 5808 }, 5809 - "node_modules/domhandler": { 5810 - "version": "4.3.0", 5811 - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", 5812 - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", 5813 + "node_modules/emoji-regex": { 5814 + "version": "8.0.0", 5815 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 5816 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 5817 + }, 5818 + "node_modules/error-ex": { 5819 + "version": "1.3.2", 5820 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 5821 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 5822 "dev": true, 5823 "dependencies": { 5824 - "domelementtype": "^2.2.0" 5825 - }, 5826 - "engines": { 5827 - "node": ">= 4" 5828 - }, 5829 - "funding": { 5830 - "url": "https://github.com/fb55/domhandler?sponsor=1" 5831 + "is-arrayish": "^0.2.1" 5832 } 5833 }, 5834 - "node_modules/domutils": { 5835 - "version": "2.8.0", 5836 - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 5837 - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 5838 + "node_modules/esbuild": { 5839 + "version": "0.14.54", 5840 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 5841 + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 5842 "dev": true, 5843 - "dependencies": { 5844 - "dom-serializer": "^1.0.1", 5845 - "domelementtype": "^2.2.0", 5846 - "domhandler": "^4.2.0" 5847 + "hasInstallScript": true, 5848 + "bin": { 5849 + "esbuild": "bin/esbuild" 5850 }, 5851 - "funding": { 5852 - "url": "https://github.com/fb55/domutils?sponsor=1" 5853 - } 5854 - }, 5855 - "node_modules/dottie": { 5856 - "version": "2.0.2", 5857 - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", 5858 - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" 5859 - }, 5860 - "node_modules/duplexify": { 5861 - "version": "3.7.1", 5862 - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", 5863 - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", 5864 + "engines": { 5865 + "node": ">=12" 5866 + }, 5867 + "optionalDependencies": { 5868 + "@esbuild/linux-loong64": "0.14.54", 5869 + "esbuild-android-64": "0.14.54", 5870 + "esbuild-android-arm64": "0.14.54", 5871 + "esbuild-darwin-64": "0.14.54", 5872 + "esbuild-darwin-arm64": "0.14.54", 5873 + "esbuild-freebsd-64": "0.14.54", 5874 + "esbuild-freebsd-arm64": "0.14.54", 5875 + "esbuild-linux-32": "0.14.54", 5876 + "esbuild-linux-64": "0.14.54", 5877 + "esbuild-linux-arm": "0.14.54", 5878 + "esbuild-linux-arm64": "0.14.54", 5879 + "esbuild-linux-mips64le": "0.14.54", 5880 + "esbuild-linux-ppc64le": "0.14.54", 5881 + "esbuild-linux-riscv64": "0.14.54", 5882 + "esbuild-linux-s390x": "0.14.54", 5883 + "esbuild-netbsd-64": "0.14.54", 5884 + "esbuild-openbsd-64": "0.14.54", 5885 + "esbuild-sunos-64": "0.14.54", 5886 + "esbuild-windows-32": "0.14.54", 5887 + "esbuild-windows-64": "0.14.54", 5888 + "esbuild-windows-arm64": "0.14.54" 5889 + } 5890 + }, 5891 + "node_modules/esbuild-android-64": { 5892 + "version": "0.14.54", 5893 + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 5894 + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 5895 + "cpu": [ 5896 + "x64" 5897 + ], 5898 "dev": true, 5899 - "dependencies": { 5900 - "end-of-stream": "^1.0.0", 5901 - "inherits": "^2.0.1", 5902 - "readable-stream": "^2.0.0", 5903 - "stream-shift": "^1.0.0" 5904 + "optional": true, 5905 + "os": [ 5906 + "android" 5907 + ], 5908 + "engines": { 5909 + "node": ">=12" 5910 } 5911 }, 5912 - "node_modules/duplexify/node_modules/readable-stream": { 5913 - "version": "2.3.7", 5914 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 5915 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 5916 + "node_modules/esbuild-android-arm64": { 5917 + "version": "0.14.54", 5918 + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 5919 + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 5920 + "cpu": [ 5921 + "arm64" 5922 + ], 5923 "dev": true, 5924 - "dependencies": { 5925 - "core-util-is": "~1.0.0", 5926 - "inherits": "~2.0.3", 5927 - "isarray": "~1.0.0", 5928 - "process-nextick-args": "~2.0.0", 5929 - "safe-buffer": "~5.1.1", 5930 - "string_decoder": "~1.1.1", 5931 - "util-deprecate": "~1.0.1" 5932 + "optional": true, 5933 + "os": [ 5934 + "android" 5935 + ], 5936 + "engines": { 5937 + "node": ">=12" 5938 } 5939 }, 5940 - "node_modules/duplexify/node_modules/string_decoder": { 5941 - "version": "1.1.1", 5942 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 5943 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 5944 + "node_modules/esbuild-darwin-64": { 5945 + "version": "0.14.54", 5946 + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 5947 + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 5948 + "cpu": [ 5949 + "x64" 5950 + ], 5951 "dev": true, 5952 - "dependencies": { 5953 - "safe-buffer": "~5.1.0" 5954 - } 5955 - }, 5956 - "node_modules/electron-to-chromium": { 5957 - "version": "1.4.137", 5958 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", 5959 - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", 5960 - "dev": true 5961 - }, 5962 - "node_modules/emoji-regex": { 5963 - "version": "9.2.2", 5964 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 5965 - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 5966 - "dev": true 5967 - }, 5968 - "node_modules/encoding": { 5969 - "version": "0.1.13", 5970 - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 5971 - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 5972 "optional": true, 5973 - "dependencies": { 5974 - "iconv-lite": "^0.6.2" 5975 + "os": [ 5976 + "darwin" 5977 + ], 5978 + "engines": { 5979 + "node": ">=12" 5980 } 5981 }, 5982 - "node_modules/end-of-stream": { 5983 - "version": "1.4.4", 5984 - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 5985 - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 5986 + "node_modules/esbuild-darwin-arm64": { 5987 + "version": "0.14.54", 5988 + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 5989 + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 5990 + "cpu": [ 5991 + "arm64" 5992 + ], 5993 "dev": true, 5994 - "dependencies": { 5995 - "once": "^1.4.0" 5996 + "optional": true, 5997 + "os": [ 5998 + "darwin" 5999 + ], 6000 + "engines": { 6001 + "node": ">=12" 6002 } 6003 }, 6004 - "node_modules/ensure-posix-path": { 6005 - "version": "1.1.1", 6006 - "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", 6007 - "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", 6008 - "dev": true 6009 + "node_modules/esbuild-freebsd-64": { 6010 + "version": "0.14.54", 6011 + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 6012 + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 6013 + "cpu": [ 6014 + "x64" 6015 + ], 6016 + "dev": true, 6017 + "optional": true, 6018 + "os": [ 6019 + "freebsd" 6020 + ], 6021 + "engines": { 6022 + "node": ">=12" 6023 + } 6024 }, 6025 - "node_modules/entities": { 6026 - "version": "2.2.0", 6027 - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 6028 - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 6029 + "node_modules/esbuild-freebsd-arm64": { 6030 + "version": "0.14.54", 6031 + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 6032 + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 6033 + "cpu": [ 6034 + "arm64" 6035 + ], 6036 "dev": true, 6037 - "funding": { 6038 - "url": "https://github.com/fb55/entities?sponsor=1" 6039 + "optional": true, 6040 + "os": [ 6041 + "freebsd" 6042 + ], 6043 + "engines": { 6044 + "node": ">=12" 6045 } 6046 }, 6047 - "node_modules/env-paths": { 6048 - "version": "2.2.1", 6049 - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 6050 - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 6051 + "node_modules/esbuild-linux-32": { 6052 + "version": "0.14.54", 6053 + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 6054 + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 6055 + "cpu": [ 6056 + "ia32" 6057 + ], 6058 + "dev": true, 6059 "optional": true, 6060 + "os": [ 6061 + "linux" 6062 + ], 6063 "engines": { 6064 - "node": ">=6" 6065 + "node": ">=12" 6066 } 6067 }, 6068 - "node_modules/eol": { 6069 - "version": "0.9.1", 6070 - "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", 6071 - "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", 6072 - "dev": true 6073 + "node_modules/esbuild-linux-64": { 6074 + "version": "0.14.54", 6075 + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 6076 + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 6077 + "cpu": [ 6078 + "x64" 6079 + ], 6080 + "dev": true, 6081 + "optional": true, 6082 + "os": [ 6083 + "linux" 6084 + ], 6085 + "engines": { 6086 + "node": ">=12" 6087 + } 6088 }, 6089 - "node_modules/err-code": { 6090 - "version": "2.0.3", 6091 - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 6092 - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 6093 - "optional": true 6094 + "node_modules/esbuild-linux-arm": { 6095 + "version": "0.14.54", 6096 + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 6097 + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 6098 + "cpu": [ 6099 + "arm" 6100 + ], 6101 + "dev": true, 6102 + "optional": true, 6103 + "os": [ 6104 + "linux" 6105 + ], 6106 + "engines": { 6107 + "node": ">=12" 6108 + } 6109 }, 6110 - "node_modules/error-ex": { 6111 - "version": "1.3.2", 6112 - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 6113 - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 6114 + "node_modules/esbuild-linux-arm64": { 6115 + "version": "0.14.54", 6116 + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 6117 + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 6118 + "cpu": [ 6119 + "arm64" 6120 + ], 6121 "dev": true, 6122 - "dependencies": { 6123 - "is-arrayish": "^0.2.1" 6124 + "optional": true, 6125 + "os": [ 6126 + "linux" 6127 + ], 6128 + "engines": { 6129 + "node": ">=12" 6130 } 6131 }, 6132 - "node_modules/es-abstract": { 6133 - "version": "1.19.5", 6134 - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", 6135 - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", 6136 + "node_modules/esbuild-linux-mips64le": { 6137 + "version": "0.14.54", 6138 + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 6139 + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 6140 + "cpu": [ 6141 + "mips64el" 6142 + ], 6143 "dev": true, 6144 - "dependencies": { 6145 - "call-bind": "^1.0.2", 6146 - "es-to-primitive": "^1.2.1", 6147 - "function-bind": "^1.1.1", 6148 - "get-intrinsic": "^1.1.1", 6149 - "get-symbol-description": "^1.0.0", 6150 - "has": "^1.0.3", 6151 - "has-symbols": "^1.0.3", 6152 - "internal-slot": "^1.0.3", 6153 - "is-callable": "^1.2.4", 6154 - "is-negative-zero": "^2.0.2", 6155 - "is-regex": "^1.1.4", 6156 - "is-shared-array-buffer": "^1.0.2", 6157 - "is-string": "^1.0.7", 6158 - "is-weakref": "^1.0.2", 6159 - "object-inspect": "^1.12.0", 6160 - "object-keys": "^1.1.1", 6161 - "object.assign": "^4.1.2", 6162 - "string.prototype.trimend": "^1.0.4", 6163 - "string.prototype.trimstart": "^1.0.4", 6164 - "unbox-primitive": "^1.0.1" 6165 - }, 6166 + "optional": true, 6167 + "os": [ 6168 + "linux" 6169 + ], 6170 "engines": { 6171 - "node": ">= 0.4" 6172 - }, 6173 - "funding": { 6174 - "url": "https://github.com/sponsors/ljharb" 6175 + "node": ">=12" 6176 } 6177 }, 6178 - "node_modules/es-shim-unscopables": { 6179 - "version": "1.0.0", 6180 - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 6181 - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 6182 + "node_modules/esbuild-linux-ppc64le": { 6183 + "version": "0.14.54", 6184 + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 6185 + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 6186 + "cpu": [ 6187 + "ppc64" 6188 + ], 6189 "dev": true, 6190 - "dependencies": { 6191 - "has": "^1.0.3" 6192 + "optional": true, 6193 + "os": [ 6194 + "linux" 6195 + ], 6196 + "engines": { 6197 + "node": ">=12" 6198 } 6199 }, 6200 - "node_modules/es-to-primitive": { 6201 - "version": "1.2.1", 6202 - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 6203 - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 6204 + "node_modules/esbuild-linux-riscv64": { 6205 + "version": "0.14.54", 6206 + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 6207 + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 6208 + "cpu": [ 6209 + "riscv64" 6210 + ], 6211 "dev": true, 6212 - "dependencies": { 6213 - "is-callable": "^1.1.4", 6214 - "is-date-object": "^1.0.1", 6215 - "is-symbol": "^1.0.2" 6216 - }, 6217 + "optional": true, 6218 + "os": [ 6219 + "linux" 6220 + ], 6221 "engines": { 6222 - "node": ">= 0.4" 6223 - }, 6224 - "funding": { 6225 - "url": "https://github.com/sponsors/ljharb" 6226 + "node": ">=12" 6227 + } 6228 + }, 6229 + "node_modules/esbuild-linux-s390x": { 6230 + "version": "0.14.54", 6231 + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 6232 + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 6233 + "cpu": [ 6234 + "s390x" 6235 + ], 6236 + "dev": true, 6237 + "optional": true, 6238 + "os": [ 6239 + "linux" 6240 + ], 6241 + "engines": { 6242 + "node": ">=12" 6243 + } 6244 + }, 6245 + "node_modules/esbuild-netbsd-64": { 6246 + "version": "0.14.54", 6247 + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 6248 + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 6249 + "cpu": [ 6250 + "x64" 6251 + ], 6252 + "dev": true, 6253 + "optional": true, 6254 + "os": [ 6255 + "netbsd" 6256 + ], 6257 + "engines": { 6258 + "node": ">=12" 6259 + } 6260 + }, 6261 + "node_modules/esbuild-openbsd-64": { 6262 + "version": "0.14.54", 6263 + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 6264 + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 6265 + "cpu": [ 6266 + "x64" 6267 + ], 6268 + "dev": true, 6269 + "optional": true, 6270 + "os": [ 6271 + "openbsd" 6272 + ], 6273 + "engines": { 6274 + "node": ">=12" 6275 + } 6276 + }, 6277 + "node_modules/esbuild-sunos-64": { 6278 + "version": "0.14.54", 6279 + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 6280 + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 6281 + "cpu": [ 6282 + "x64" 6283 + ], 6284 + "dev": true, 6285 + "optional": true, 6286 + "os": [ 6287 + "sunos" 6288 + ], 6289 + "engines": { 6290 + "node": ">=12" 6291 + } 6292 + }, 6293 + "node_modules/esbuild-windows-32": { 6294 + "version": "0.14.54", 6295 + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 6296 + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 6297 + "cpu": [ 6298 + "ia32" 6299 + ], 6300 + "dev": true, 6301 + "optional": true, 6302 + "os": [ 6303 + "win32" 6304 + ], 6305 + "engines": { 6306 + "node": ">=12" 6307 + } 6308 + }, 6309 + "node_modules/esbuild-windows-64": { 6310 + "version": "0.14.54", 6311 + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 6312 + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 6313 + "cpu": [ 6314 + "x64" 6315 + ], 6316 + "dev": true, 6317 + "optional": true, 6318 + "os": [ 6319 + "win32" 6320 + ], 6321 + "engines": { 6322 + "node": ">=12" 6323 + } 6324 + }, 6325 + "node_modules/esbuild-windows-arm64": { 6326 + "version": "0.14.54", 6327 + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 6328 + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 6329 + "cpu": [ 6330 + "arm64" 6331 + ], 6332 + "dev": true, 6333 + "optional": true, 6334 + "os": [ 6335 + "win32" 6336 + ], 6337 + "engines": { 6338 + "node": ">=12" 6339 } 6340 }, 6341 "node_modules/escalade": { 6342 @@ -2562,20 +2182,21 @@ 6343 "node_modules/escape-string-regexp": { 6344 "version": "1.0.5", 6345 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 6346 - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 6347 - "dev": true, 6348 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 6349 "engines": { 6350 "node": ">=0.8.0" 6351 } 6352 }, 6353 "node_modules/eslint": { 6354 - "version": "8.16.0", 6355 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", 6356 - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", 6357 + "version": "8.31.0", 6358 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", 6359 + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", 6360 "dev": true, 6361 "dependencies": { 6362 - "@eslint/eslintrc": "^1.3.0", 6363 - "@humanwhocodes/config-array": "^0.9.2", 6364 + "@eslint/eslintrc": "^1.4.1", 6365 + "@humanwhocodes/config-array": "^0.11.8", 6366 + "@humanwhocodes/module-importer": "^1.0.1", 6367 + "@nodelib/fs.walk": "^1.2.8", 6368 "ajv": "^6.10.0", 6369 "chalk": "^4.0.0", 6370 "cross-spawn": "^7.0.2", 6371 @@ -2585,18 +2206,21 @@ 6372 "eslint-scope": "^7.1.1", 6373 "eslint-utils": "^3.0.0", 6374 "eslint-visitor-keys": "^3.3.0", 6375 - "espree": "^9.3.2", 6376 + "espree": "^9.4.0", 6377 "esquery": "^1.4.0", 6378 "esutils": "^2.0.2", 6379 "fast-deep-equal": "^3.1.3", 6380 "file-entry-cache": "^6.0.1", 6381 - "functional-red-black-tree": "^1.0.1", 6382 - "glob-parent": "^6.0.1", 6383 - "globals": "^13.15.0", 6384 + "find-up": "^5.0.0", 6385 + "glob-parent": "^6.0.2", 6386 + "globals": "^13.19.0", 6387 + "grapheme-splitter": "^1.0.4", 6388 "ignore": "^5.2.0", 6389 "import-fresh": "^3.0.0", 6390 "imurmurhash": "^0.1.4", 6391 "is-glob": "^4.0.0", 6392 + "is-path-inside": "^3.0.3", 6393 + "js-sdsl": "^4.1.4", 6394 "js-yaml": "^4.1.0", 6395 "json-stable-stringify-without-jsonify": "^1.0.1", 6396 "levn": "^0.4.1", 6397 @@ -2607,8 +2231,7 @@ 6398 "regexpp": "^3.2.0", 6399 "strip-ansi": "^6.0.1", 6400 "strip-json-comments": "^3.1.0", 6401 - "text-table": "^0.2.0", 6402 - "v8-compile-cache": "^2.0.3" 6403 + "text-table": "^0.2.0" 6404 }, 6405 "bin": { 6406 "eslint": "bin/eslint.js" 6407 @@ -2620,266 +2243,24 @@ 6408 "url": "https://opencollective.com/eslint" 6409 } 6410 }, 6411 - "node_modules/eslint-config-next": { 6412 - "version": "12.1.6", 6413 - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.1.6.tgz", 6414 - "integrity": "sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA==", 6415 - "dev": true, 6416 - "dependencies": { 6417 - "@next/eslint-plugin-next": "12.1.6", 6418 - "@rushstack/eslint-patch": "^1.1.3", 6419 - "@typescript-eslint/parser": "^5.21.0", 6420 - "eslint-import-resolver-node": "^0.3.6", 6421 - "eslint-import-resolver-typescript": "^2.7.1", 6422 - "eslint-plugin-import": "^2.26.0", 6423 - "eslint-plugin-jsx-a11y": "^6.5.1", 6424 - "eslint-plugin-react": "^7.29.4", 6425 - "eslint-plugin-react-hooks": "^4.5.0" 6426 - }, 6427 - "peerDependencies": { 6428 - "eslint": "^7.23.0 || ^8.0.0", 6429 - "next": ">=10.2.0", 6430 - "typescript": ">=3.3.1" 6431 - }, 6432 - "peerDependenciesMeta": { 6433 - "typescript": { 6434 - "optional": true 6435 - } 6436 - } 6437 - }, 6438 - "node_modules/eslint-import-resolver-node": { 6439 - "version": "0.3.6", 6440 - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 6441 - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 6442 - "dev": true, 6443 - "dependencies": { 6444 - "debug": "^3.2.7", 6445 - "resolve": "^1.20.0" 6446 - } 6447 - }, 6448 - "node_modules/eslint-import-resolver-node/node_modules/debug": { 6449 - "version": "3.2.7", 6450 - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 6451 - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 6452 - "dev": true, 6453 - "dependencies": { 6454 - "ms": "^2.1.1" 6455 - } 6456 - }, 6457 - "node_modules/eslint-import-resolver-typescript": { 6458 - "version": "2.7.1", 6459 - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", 6460 - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", 6461 - "dev": true, 6462 - "dependencies": { 6463 - "debug": "^4.3.4", 6464 - "glob": "^7.2.0", 6465 - "is-glob": "^4.0.3", 6466 - "resolve": "^1.22.0", 6467 - "tsconfig-paths": "^3.14.1" 6468 - }, 6469 - "engines": { 6470 - "node": ">=4" 6471 - }, 6472 - "peerDependencies": { 6473 - "eslint": "*", 6474 - "eslint-plugin-import": "*" 6475 - } 6476 - }, 6477 - "node_modules/eslint-import-resolver-typescript/node_modules/debug": { 6478 - "version": "4.3.4", 6479 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 6480 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 6481 - "dev": true, 6482 - "dependencies": { 6483 - "ms": "2.1.2" 6484 - }, 6485 - "engines": { 6486 - "node": ">=6.0" 6487 - }, 6488 - "peerDependenciesMeta": { 6489 - "supports-color": { 6490 - "optional": true 6491 - } 6492 - } 6493 - }, 6494 - "node_modules/eslint-import-resolver-typescript/node_modules/ms": { 6495 - "version": "2.1.2", 6496 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 6497 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 6498 - "dev": true 6499 - }, 6500 - "node_modules/eslint-module-utils": { 6501 - "version": "2.7.3", 6502 - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", 6503 - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", 6504 - "dev": true, 6505 - "dependencies": { 6506 - "debug": "^3.2.7", 6507 - "find-up": "^2.1.0" 6508 - }, 6509 - "engines": { 6510 - "node": ">=4" 6511 - } 6512 - }, 6513 - "node_modules/eslint-module-utils/node_modules/debug": { 6514 - "version": "3.2.7", 6515 - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 6516 - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 6517 - "dev": true, 6518 - "dependencies": { 6519 - "ms": "^2.1.1" 6520 - } 6521 - }, 6522 - "node_modules/eslint-plugin-import": { 6523 - "version": "2.26.0", 6524 - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", 6525 - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", 6526 - "dev": true, 6527 - "dependencies": { 6528 - "array-includes": "^3.1.4", 6529 - "array.prototype.flat": "^1.2.5", 6530 - "debug": "^2.6.9", 6531 - "doctrine": "^2.1.0", 6532 - "eslint-import-resolver-node": "^0.3.6", 6533 - "eslint-module-utils": "^2.7.3", 6534 - "has": "^1.0.3", 6535 - "is-core-module": "^2.8.1", 6536 - "is-glob": "^4.0.3", 6537 - "minimatch": "^3.1.2", 6538 - "object.values": "^1.1.5", 6539 - "resolve": "^1.22.0", 6540 - "tsconfig-paths": "^3.14.1" 6541 - }, 6542 - "engines": { 6543 - "node": ">=4" 6544 - }, 6545 - "peerDependencies": { 6546 - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" 6547 - } 6548 - }, 6549 - "node_modules/eslint-plugin-import/node_modules/debug": { 6550 - "version": "2.6.9", 6551 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 6552 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 6553 - "dev": true, 6554 - "dependencies": { 6555 - "ms": "2.0.0" 6556 - } 6557 - }, 6558 - "node_modules/eslint-plugin-import/node_modules/doctrine": { 6559 - "version": "2.1.0", 6560 - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 6561 - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 6562 - "dev": true, 6563 - "dependencies": { 6564 - "esutils": "^2.0.2" 6565 - }, 6566 - "engines": { 6567 - "node": ">=0.10.0" 6568 - } 6569 - }, 6570 - "node_modules/eslint-plugin-import/node_modules/ms": { 6571 - "version": "2.0.0", 6572 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 6573 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 6574 - "dev": true 6575 - }, 6576 - "node_modules/eslint-plugin-jsx-a11y": { 6577 - "version": "6.5.1", 6578 - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", 6579 - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", 6580 - "dev": true, 6581 - "dependencies": { 6582 - "@babel/runtime": "^7.16.3", 6583 - "aria-query": "^4.2.2", 6584 - "array-includes": "^3.1.4", 6585 - "ast-types-flow": "^0.0.7", 6586 - "axe-core": "^4.3.5", 6587 - "axobject-query": "^2.2.0", 6588 - "damerau-levenshtein": "^1.0.7", 6589 - "emoji-regex": "^9.2.2", 6590 - "has": "^1.0.3", 6591 - "jsx-ast-utils": "^3.2.1", 6592 - "language-tags": "^1.0.5", 6593 - "minimatch": "^3.0.4" 6594 - }, 6595 - "engines": { 6596 - "node": ">=4.0" 6597 - }, 6598 - "peerDependencies": { 6599 - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" 6600 - } 6601 - }, 6602 - "node_modules/eslint-plugin-react": { 6603 - "version": "7.30.0", 6604 - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", 6605 - "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", 6606 - "dev": true, 6607 - "dependencies": { 6608 - "array-includes": "^3.1.5", 6609 - "array.prototype.flatmap": "^1.3.0", 6610 - "doctrine": "^2.1.0", 6611 - "estraverse": "^5.3.0", 6612 - "jsx-ast-utils": "^2.4.1 || ^3.0.0", 6613 - "minimatch": "^3.1.2", 6614 - "object.entries": "^1.1.5", 6615 - "object.fromentries": "^2.0.5", 6616 - "object.hasown": "^1.1.1", 6617 - "object.values": "^1.1.5", 6618 - "prop-types": "^15.8.1", 6619 - "resolve": "^2.0.0-next.3", 6620 - "semver": "^6.3.0", 6621 - "string.prototype.matchall": "^4.0.7" 6622 - }, 6623 - "engines": { 6624 - "node": ">=4" 6625 - }, 6626 - "peerDependencies": { 6627 - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" 6628 - } 6629 - }, 6630 - "node_modules/eslint-plugin-react-hooks": { 6631 - "version": "4.5.0", 6632 - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", 6633 - "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", 6634 - "dev": true, 6635 - "engines": { 6636 - "node": ">=10" 6637 - }, 6638 - "peerDependencies": { 6639 - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" 6640 - } 6641 - }, 6642 - "node_modules/eslint-plugin-react/node_modules/doctrine": { 6643 - "version": "2.1.0", 6644 - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 6645 - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 6646 + "node_modules/eslint-plugin-tailwindcss": { 6647 + "version": "3.8.0", 6648 + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.8.0.tgz", 6649 + "integrity": "sha512-Lsyncgp/eXZriAEUK9zfGHOH+9iQplygHiOuGY8SFFHKIeT0BYjyST/ownHF8UPa1TEh+jJPkdE2vlV3778C3w==", 6650 "dev": true, 6651 "dependencies": { 6652 - "esutils": "^2.0.2" 6653 + "fast-glob": "^3.2.5", 6654 + "postcss": "^8.4.4", 6655 + "tailwindcss": "^3.2.2" 6656 }, 6657 "engines": { 6658 - "node": ">=0.10.0" 6659 - } 6660 - }, 6661 - "node_modules/eslint-plugin-react/node_modules/resolve": { 6662 - "version": "2.0.0-next.3", 6663 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 6664 - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 6665 - "dev": true, 6666 - "dependencies": { 6667 - "is-core-module": "^2.2.0", 6668 - "path-parse": "^1.0.6" 6669 - }, 6670 - "funding": { 6671 - "url": "https://github.com/sponsors/ljharb" 6672 + "node": ">=12.13.0" 6673 } 6674 }, 6675 "node_modules/eslint-plugin-unicorn": { 6676 - "version": "42.0.0", 6677 - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz", 6678 - "integrity": "sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==", 6679 + "version": "41.0.1", 6680 + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-41.0.1.tgz", 6681 + "integrity": "sha512-gF5vo2dIj0YdNMQ/IMegiBkQdQ22GBFFVpdkJP+0og3w7XD4ypea0xQVRv6iofkLVR2w0phAdikcnU01ybd4Ow==", 6682 "dev": true, 6683 "dependencies": { 6684 "@babel/helper-validator-identifier": "^7.15.7", 6685 @@ -2907,10 +2288,22 @@ 6686 "eslint": ">=8.8.0" 6687 } 6688 }, 6689 + "node_modules/eslint-plugin-unicorn/node_modules/lru-cache": { 6690 + "version": "6.0.0", 6691 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 6692 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 6693 + "dev": true, 6694 + "dependencies": { 6695 + "yallist": "^4.0.0" 6696 + }, 6697 + "engines": { 6698 + "node": ">=10" 6699 + } 6700 + }, 6701 "node_modules/eslint-plugin-unicorn/node_modules/semver": { 6702 - "version": "7.3.5", 6703 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 6704 - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 6705 + "version": "7.3.8", 6706 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 6707 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 6708 "dev": true, 6709 "dependencies": { 6710 "lru-cache": "^6.0.0" 6711 @@ -2922,17 +2315,23 @@ 6712 "node": ">=10" 6713 } 6714 }, 6715 + "node_modules/eslint-plugin-unicorn/node_modules/yallist": { 6716 + "version": "4.0.0", 6717 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 6718 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 6719 + "dev": true 6720 + }, 6721 "node_modules/eslint-scope": { 6722 - "version": "7.1.1", 6723 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 6724 - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 6725 + "version": "5.1.1", 6726 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 6727 + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 6728 "dev": true, 6729 "dependencies": { 6730 "esrecurse": "^4.3.0", 6731 - "estraverse": "^5.2.0" 6732 + "estraverse": "^4.1.1" 6733 }, 6734 "engines": { 6735 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 6736 + "node": ">=8.0.0" 6737 } 6738 }, 6739 "node_modules/eslint-utils": { 6740 @@ -3032,10 +2431,32 @@ 6741 "url": "https://github.com/sponsors/sindresorhus" 6742 } 6743 }, 6744 + "node_modules/eslint/node_modules/eslint-scope": { 6745 + "version": "7.1.1", 6746 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 6747 + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 6748 + "dev": true, 6749 + "dependencies": { 6750 + "esrecurse": "^4.3.0", 6751 + "estraverse": "^5.2.0" 6752 + }, 6753 + "engines": { 6754 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 6755 + } 6756 + }, 6757 + "node_modules/eslint/node_modules/estraverse": { 6758 + "version": "5.3.0", 6759 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 6760 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 6761 + "dev": true, 6762 + "engines": { 6763 + "node": ">=4.0" 6764 + } 6765 + }, 6766 "node_modules/eslint/node_modules/globals": { 6767 - "version": "13.15.0", 6768 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 6769 - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 6770 + "version": "13.19.0", 6771 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", 6772 + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", 6773 "dev": true, 6774 "dependencies": { 6775 "type-fest": "^0.20.2" 6776 @@ -3081,17 +2502,20 @@ 6777 } 6778 }, 6779 "node_modules/espree": { 6780 - "version": "9.3.2", 6781 - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", 6782 - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", 6783 + "version": "9.4.1", 6784 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", 6785 + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", 6786 "dev": true, 6787 "dependencies": { 6788 - "acorn": "^8.7.1", 6789 + "acorn": "^8.8.0", 6790 "acorn-jsx": "^5.3.2", 6791 "eslint-visitor-keys": "^3.3.0" 6792 }, 6793 "engines": { 6794 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 6795 + }, 6796 + "funding": { 6797 + "url": "https://opencollective.com/eslint" 6798 } 6799 }, 6800 "node_modules/esquery": { 6801 @@ -3106,6 +2530,15 @@ 6802 "node": ">=0.10" 6803 } 6804 }, 6805 + "node_modules/esquery/node_modules/estraverse": { 6806 + "version": "5.3.0", 6807 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 6808 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 6809 + "dev": true, 6810 + "engines": { 6811 + "node": ">=4.0" 6812 + } 6813 + }, 6814 "node_modules/esrecurse": { 6815 "version": "4.3.0", 6816 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 6817 @@ -3118,7 +2551,7 @@ 6818 "node": ">=4.0" 6819 } 6820 }, 6821 - "node_modules/estraverse": { 6822 + "node_modules/esrecurse/node_modules/estraverse": { 6823 "version": "5.3.0", 6824 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 6825 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 6826 @@ -3127,6 +2560,21 @@ 6827 "node": ">=4.0" 6828 } 6829 }, 6830 + "node_modules/estraverse": { 6831 + "version": "4.3.0", 6832 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 6833 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 6834 + "dev": true, 6835 + "engines": { 6836 + "node": ">=4.0" 6837 + } 6838 + }, 6839 + "node_modules/estree-walker": { 6840 + "version": "2.0.2", 6841 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 6842 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 6843 + "dev": true 6844 + }, 6845 "node_modules/esutils": { 6846 "version": "2.0.3", 6847 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 6848 @@ -3136,22 +2584,49 @@ 6849 "node": ">=0.10.0" 6850 } 6851 }, 6852 + "node_modules/events": { 6853 + "version": "3.3.0", 6854 + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 6855 + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 6856 + "engines": { 6857 + "node": ">=0.8.x" 6858 + } 6859 + }, 6860 "node_modules/extend": { 6861 "version": "3.0.2", 6862 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 6863 - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 6864 - "dev": true 6865 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 6866 + }, 6867 + "node_modules/external-editor": { 6868 + "version": "3.1.0", 6869 + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 6870 + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 6871 + "dependencies": { 6872 + "chardet": "^0.7.0", 6873 + "iconv-lite": "^0.4.24", 6874 + "tmp": "^0.0.33" 6875 + }, 6876 + "engines": { 6877 + "node": ">=4" 6878 + } 6879 + }, 6880 + "node_modules/extsprintf": { 6881 + "version": "1.3.0", 6882 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 6883 + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", 6884 + "engines": [ 6885 + "node >=0.6.0" 6886 + ] 6887 }, 6888 "node_modules/fast-deep-equal": { 6889 "version": "3.1.3", 6890 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 6891 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 6892 - "dev": true 6893 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 6894 }, 6895 "node_modules/fast-glob": { 6896 - "version": "3.2.11", 6897 - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 6898 - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 6899 + "version": "3.2.12", 6900 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 6901 + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 6902 "dev": true, 6903 "dependencies": { 6904 "@nodelib/fs.stat": "^2.0.2", 6905 @@ -3179,34 +2654,35 @@ 6906 "node_modules/fast-json-stable-stringify": { 6907 "version": "2.1.0", 6908 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 6909 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 6910 - "dev": true 6911 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 6912 }, 6913 "node_modules/fast-levenshtein": { 6914 "version": "2.0.6", 6915 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 6916 - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 6917 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 6918 "dev": true 6919 }, 6920 "node_modules/fastq": { 6921 - "version": "1.13.0", 6922 - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 6923 - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 6924 + "version": "1.15.0", 6925 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 6926 + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 6927 "dev": true, 6928 "dependencies": { 6929 "reusify": "^1.0.4" 6930 } 6931 }, 6932 - "node_modules/feed": { 6933 - "version": "4.2.2", 6934 - "resolved": "git+ssh://git@github.com/yshrsmz/feed.git#c50d7a82c5b6141039830d615b19b760e173e231", 6935 - "integrity": "sha512-wnhCYNIcF4LksTndqOIfdTMsbbGdGlT3ZVVjxrh57K0OGWV1H3ZNk4Sp9qA+yrvAzFLiBll50hCgImFC0YlbZg==", 6936 - "license": "MIT", 6937 + "node_modules/figures": { 6938 + "version": "3.2.0", 6939 + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 6940 + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 6941 "dependencies": { 6942 - "xml-js": "^1.6.11" 6943 + "escape-string-regexp": "^1.0.5" 6944 }, 6945 "engines": { 6946 - "node": ">=0.4.0" 6947 + "node": ">=8" 6948 + }, 6949 + "funding": { 6950 + "url": "https://github.com/sponsors/sindresorhus" 6951 } 6952 }, 6953 "node_modules/file-entry-cache": { 6954 @@ -3221,249 +2697,98 @@ 6955 "node": "^10.12.0 || >=12.0.0" 6956 } 6957 }, 6958 - "node_modules/file-selector": { 6959 - "version": "0.6.0", 6960 - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", 6961 - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", 6962 - "dependencies": { 6963 - "tslib": "^2.4.0" 6964 - }, 6965 - "engines": { 6966 - "node": ">= 12" 6967 - } 6968 - }, 6969 "node_modules/fill-range": { 6970 "version": "7.0.1", 6971 - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 6972 - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 6973 - "dev": true, 6974 - "dependencies": { 6975 - "to-regex-range": "^5.0.1" 6976 - }, 6977 - "engines": { 6978 - "node": ">=8" 6979 - } 6980 - }, 6981 - "node_modules/find-up": { 6982 - "version": "2.1.0", 6983 - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 6984 - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 6985 - "dev": true, 6986 - "dependencies": { 6987 - "locate-path": "^2.0.0" 6988 - }, 6989 - "engines": { 6990 - "node": ">=4" 6991 - } 6992 - }, 6993 - "node_modules/flat-cache": { 6994 - "version": "3.0.4", 6995 - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 6996 - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 6997 - "dev": true, 6998 - "dependencies": { 6999 - "flatted": "^3.1.0", 7000 - "rimraf": "^3.0.2" 7001 - }, 7002 - "engines": { 7003 - "node": "^10.12.0 || >=12.0.0" 7004 - } 7005 - }, 7006 - "node_modules/flatted": { 7007 - "version": "3.2.5", 7008 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 7009 - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 7010 - "dev": true 7011 - }, 7012 - "node_modules/flush-write-stream": { 7013 - "version": "1.1.1", 7014 - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", 7015 - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", 7016 - "dev": true, 7017 - "dependencies": { 7018 - "inherits": "^2.0.3", 7019 - "readable-stream": "^2.3.6" 7020 - } 7021 - }, 7022 - "node_modules/flush-write-stream/node_modules/readable-stream": { 7023 - "version": "2.3.7", 7024 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 7025 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 7026 - "dev": true, 7027 - "dependencies": { 7028 - "core-util-is": "~1.0.0", 7029 - "inherits": "~2.0.3", 7030 - "isarray": "~1.0.0", 7031 - "process-nextick-args": "~2.0.0", 7032 - "safe-buffer": "~5.1.1", 7033 - "string_decoder": "~1.1.1", 7034 - "util-deprecate": "~1.0.1" 7035 - } 7036 - }, 7037 - "node_modules/flush-write-stream/node_modules/string_decoder": { 7038 - "version": "1.1.1", 7039 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 7040 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 7041 - "dev": true, 7042 - "dependencies": { 7043 - "safe-buffer": "~5.1.0" 7044 - } 7045 - }, 7046 - "node_modules/fraction.js": { 7047 - "version": "4.2.0", 7048 - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 7049 - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 7050 - "dev": true, 7051 - "engines": { 7052 - "node": "*" 7053 - }, 7054 - "funding": { 7055 - "type": "patreon", 7056 - "url": "https://www.patreon.com/infusion" 7057 - } 7058 - }, 7059 - "node_modules/fs-extra": { 7060 - "version": "10.0.0", 7061 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", 7062 - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", 7063 - "dev": true, 7064 - "dependencies": { 7065 - "graceful-fs": "^4.2.0", 7066 - "jsonfile": "^6.0.1", 7067 - "universalify": "^2.0.0" 7068 - }, 7069 - "engines": { 7070 - "node": ">=12" 7071 - } 7072 - }, 7073 - "node_modules/fs-merger": { 7074 - "version": "3.2.1", 7075 - "resolved": "https://registry.npmjs.org/fs-merger/-/fs-merger-3.2.1.tgz", 7076 - "integrity": "sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==", 7077 - "dev": true, 7078 - "dependencies": { 7079 - "broccoli-node-api": "^1.7.0", 7080 - "broccoli-node-info": "^2.1.0", 7081 - "fs-extra": "^8.0.1", 7082 - "fs-tree-diff": "^2.0.1", 7083 - "walk-sync": "^2.2.0" 7084 - } 7085 - }, 7086 - "node_modules/fs-merger/node_modules/fs-extra": { 7087 - "version": "8.1.0", 7088 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 7089 - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 7090 - "dev": true, 7091 - "dependencies": { 7092 - "graceful-fs": "^4.2.0", 7093 - "jsonfile": "^4.0.0", 7094 - "universalify": "^0.1.0" 7095 - }, 7096 - "engines": { 7097 - "node": ">=6 <7 || >=8" 7098 - } 7099 - }, 7100 - "node_modules/fs-merger/node_modules/jsonfile": { 7101 - "version": "4.0.0", 7102 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 7103 - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 7104 - "dev": true, 7105 - "optionalDependencies": { 7106 - "graceful-fs": "^4.1.6" 7107 - } 7108 - }, 7109 - "node_modules/fs-merger/node_modules/universalify": { 7110 - "version": "0.1.2", 7111 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 7112 - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 7113 - "dev": true, 7114 - "engines": { 7115 - "node": ">= 4.0.0" 7116 - } 7117 - }, 7118 - "node_modules/fs-minipass": { 7119 - "version": "2.1.0", 7120 - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 7121 - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 7122 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 7123 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 7124 + "dev": true, 7125 "dependencies": { 7126 - "minipass": "^3.0.0" 7127 + "to-regex-range": "^5.0.1" 7128 }, 7129 "engines": { 7130 - "node": ">= 8" 7131 + "node": ">=8" 7132 } 7133 }, 7134 - "node_modules/fs-mkdirp-stream": { 7135 - "version": "1.0.0", 7136 - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", 7137 - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", 7138 + "node_modules/find-up": { 7139 + "version": "5.0.0", 7140 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 7141 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 7142 "dev": true, 7143 "dependencies": { 7144 - "graceful-fs": "^4.1.11", 7145 - "through2": "^2.0.3" 7146 + "locate-path": "^6.0.0", 7147 + "path-exists": "^4.0.0" 7148 }, 7149 "engines": { 7150 - "node": ">= 0.10" 7151 + "node": ">=10" 7152 + }, 7153 + "funding": { 7154 + "url": "https://github.com/sponsors/sindresorhus" 7155 } 7156 }, 7157 - "node_modules/fs-mkdirp-stream/node_modules/readable-stream": { 7158 - "version": "2.3.7", 7159 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 7160 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 7161 + "node_modules/flat-cache": { 7162 + "version": "3.0.4", 7163 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 7164 + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 7165 "dev": true, 7166 "dependencies": { 7167 - "core-util-is": "~1.0.0", 7168 - "inherits": "~2.0.3", 7169 - "isarray": "~1.0.0", 7170 - "process-nextick-args": "~2.0.0", 7171 - "safe-buffer": "~5.1.1", 7172 - "string_decoder": "~1.1.1", 7173 - "util-deprecate": "~1.0.1" 7174 + "flatted": "^3.1.0", 7175 + "rimraf": "^3.0.2" 7176 + }, 7177 + "engines": { 7178 + "node": "^10.12.0 || >=12.0.0" 7179 } 7180 }, 7181 - "node_modules/fs-mkdirp-stream/node_modules/string_decoder": { 7182 - "version": "1.1.1", 7183 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 7184 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 7185 - "dev": true, 7186 - "dependencies": { 7187 - "safe-buffer": "~5.1.0" 7188 + "node_modules/flatted": { 7189 + "version": "3.2.7", 7190 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 7191 + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 7192 + "dev": true 7193 + }, 7194 + "node_modules/forever-agent": { 7195 + "version": "0.6.1", 7196 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 7197 + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 7198 + "engines": { 7199 + "node": "*" 7200 } 7201 }, 7202 - "node_modules/fs-mkdirp-stream/node_modules/through2": { 7203 - "version": "2.0.5", 7204 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 7205 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 7206 - "dev": true, 7207 + "node_modules/form-data": { 7208 + "version": "2.3.3", 7209 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 7210 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 7211 "dependencies": { 7212 - "readable-stream": "~2.3.6", 7213 - "xtend": "~4.0.1" 7214 + "asynckit": "^0.4.0", 7215 + "combined-stream": "^1.0.6", 7216 + "mime-types": "^2.1.12" 7217 + }, 7218 + "engines": { 7219 + "node": ">= 0.12" 7220 } 7221 }, 7222 - "node_modules/fs-tree-diff": { 7223 - "version": "2.0.1", 7224 - "resolved": "https://registry.npmjs.org/fs-tree-diff/-/fs-tree-diff-2.0.1.tgz", 7225 - "integrity": "sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==", 7226 + "node_modules/fraction.js": { 7227 + "version": "4.2.0", 7228 + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 7229 + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 7230 "dev": true, 7231 - "dependencies": { 7232 - "@types/symlink-or-copy": "^1.2.0", 7233 - "heimdalljs-logger": "^0.1.7", 7234 - "object-assign": "^4.1.0", 7235 - "path-posix": "^1.0.0", 7236 - "symlink-or-copy": "^1.1.8" 7237 - }, 7238 "engines": { 7239 - "node": "6.* || 8.* || >= 10.*" 7240 + "node": "*" 7241 + }, 7242 + "funding": { 7243 + "type": "patreon", 7244 + "url": "https://www.patreon.com/infusion" 7245 } 7246 }, 7247 "node_modules/fs.realpath": { 7248 "version": "1.0.0", 7249 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 7250 - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 7251 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 7252 + "dev": true 7253 }, 7254 "node_modules/fsevents": { 7255 "version": "2.3.2", 7256 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 7257 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 7258 + "dev": true, 7259 "hasInstallScript": true, 7260 "optional": true, 7261 "os": [ 7262 @@ -3476,92 +2801,48 @@ 7263 "node_modules/function-bind": { 7264 "version": "1.1.1", 7265 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 7266 - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 7267 - "dev": true 7268 - }, 7269 - "node_modules/functional-red-black-tree": { 7270 - "version": "1.0.1", 7271 - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 7272 - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 7273 - "dev": true 7274 - }, 7275 - "node_modules/functions-have-names": { 7276 - "version": "1.2.3", 7277 - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 7278 - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 7279 - "dev": true, 7280 - "funding": { 7281 - "url": "https://github.com/sponsors/ljharb" 7282 - } 7283 - }, 7284 - "node_modules/gauge": { 7285 - "version": "3.0.2", 7286 - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 7287 - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 7288 - "dependencies": { 7289 - "aproba": "^1.0.3 || ^2.0.0", 7290 - "color-support": "^1.1.2", 7291 - "console-control-strings": "^1.0.0", 7292 - "has-unicode": "^2.0.1", 7293 - "object-assign": "^4.1.1", 7294 - "signal-exit": "^3.0.0", 7295 - "string-width": "^4.2.3", 7296 - "strip-ansi": "^6.0.1", 7297 - "wide-align": "^1.1.2" 7298 - }, 7299 - "engines": { 7300 - "node": ">=10" 7301 - } 7302 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 7303 }, 7304 "node_modules/gensync": { 7305 "version": "1.0.0-beta.2", 7306 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 7307 "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 7308 "dev": true, 7309 - "peer": true, 7310 "engines": { 7311 "node": ">=6.9.0" 7312 } 7313 }, 7314 "node_modules/get-intrinsic": { 7315 - "version": "1.1.1", 7316 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 7317 - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 7318 - "dev": true, 7319 + "version": "1.1.3", 7320 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 7321 + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 7322 "dependencies": { 7323 "function-bind": "^1.1.1", 7324 "has": "^1.0.3", 7325 - "has-symbols": "^1.0.1" 7326 + "has-symbols": "^1.0.3" 7327 }, 7328 "funding": { 7329 "url": "https://github.com/sponsors/ljharb" 7330 } 7331 }, 7332 - "node_modules/get-symbol-description": { 7333 - "version": "1.0.0", 7334 - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 7335 - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 7336 - "dev": true, 7337 + "node_modules/getpass": { 7338 + "version": "0.1.7", 7339 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 7340 + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 7341 "dependencies": { 7342 - "call-bind": "^1.0.2", 7343 - "get-intrinsic": "^1.1.1" 7344 - }, 7345 - "engines": { 7346 - "node": ">= 0.4" 7347 - }, 7348 - "funding": { 7349 - "url": "https://github.com/sponsors/ljharb" 7350 + "assert-plus": "^1.0.0" 7351 } 7352 }, 7353 "node_modules/glob": { 7354 - "version": "7.2.0", 7355 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 7356 - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 7357 + "version": "7.2.3", 7358 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 7359 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 7360 + "dev": true, 7361 "dependencies": { 7362 "fs.realpath": "^1.0.0", 7363 "inflight": "^1.0.4", 7364 "inherits": "2", 7365 - "minimatch": "^3.0.4", 7366 + "minimatch": "^3.1.1", 7367 "once": "^1.3.0", 7368 "path-is-absolute": "^1.0.0" 7369 }, 7370 @@ -3584,73 +2865,6 @@ 7371 "node": ">=10.13.0" 7372 } 7373 }, 7374 - "node_modules/glob-stream": { 7375 - "version": "6.1.0", 7376 - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", 7377 - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", 7378 - "dev": true, 7379 - "dependencies": { 7380 - "extend": "^3.0.0", 7381 - "glob": "^7.1.1", 7382 - "glob-parent": "^3.1.0", 7383 - "is-negated-glob": "^1.0.0", 7384 - "ordered-read-streams": "^1.0.0", 7385 - "pumpify": "^1.3.5", 7386 - "readable-stream": "^2.1.5", 7387 - "remove-trailing-separator": "^1.0.1", 7388 - "to-absolute-glob": "^2.0.0", 7389 - "unique-stream": "^2.0.2" 7390 - }, 7391 - "engines": { 7392 - "node": ">= 0.10" 7393 - } 7394 - }, 7395 - "node_modules/glob-stream/node_modules/glob-parent": { 7396 - "version": "3.1.0", 7397 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 7398 - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 7399 - "dev": true, 7400 - "dependencies": { 7401 - "is-glob": "^3.1.0", 7402 - "path-dirname": "^1.0.0" 7403 - } 7404 - }, 7405 - "node_modules/glob-stream/node_modules/is-glob": { 7406 - "version": "3.1.0", 7407 - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 7408 - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 7409 - "dev": true, 7410 - "dependencies": { 7411 - "is-extglob": "^2.1.0" 7412 - }, 7413 - "engines": { 7414 - "node": ">=0.10.0" 7415 - } 7416 - }, 7417 - "node_modules/glob-stream/node_modules/readable-stream": { 7418 - "version": "2.3.7", 7419 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 7420 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 7421 - "dev": true, 7422 - "dependencies": { 7423 - "core-util-is": "~1.0.0", 7424 - "inherits": "~2.0.3", 7425 - "isarray": "~1.0.0", 7426 - "process-nextick-args": "~2.0.0", 7427 - "safe-buffer": "~5.1.1", 7428 - "string_decoder": "~1.1.1", 7429 - "util-deprecate": "~1.0.1" 7430 - } 7431 - }, 7432 - "node_modules/glob-stream/node_modules/string_decoder": { 7433 - "version": "1.1.1", 7434 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 7435 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 7436 - "dev": true, 7437 - "dependencies": { 7438 - "safe-buffer": "~5.1.0" 7439 - } 7440 - }, 7441 "node_modules/globals": { 7442 "version": "11.12.0", 7443 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 7444 @@ -3680,60 +2894,37 @@ 7445 "url": "https://github.com/sponsors/sindresorhus" 7446 } 7447 }, 7448 - "node_modules/graceful-fs": { 7449 - "version": "4.2.9", 7450 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", 7451 - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", 7452 - "devOptional": true 7453 + "node_modules/grapheme-splitter": { 7454 + "version": "1.0.4", 7455 + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 7456 + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 7457 + "dev": true 7458 }, 7459 - "node_modules/gulp-sort": { 7460 + "node_modules/har-schema": { 7461 "version": "2.0.0", 7462 - "resolved": "https://registry.npmjs.org/gulp-sort/-/gulp-sort-2.0.0.tgz", 7463 - "integrity": "sha1-xnYqLx8N4KP8WVohWZ0/rI26Gso=", 7464 - "dev": true, 7465 - "dependencies": { 7466 - "through2": "^2.0.1" 7467 - } 7468 - }, 7469 - "node_modules/gulp-sort/node_modules/readable-stream": { 7470 - "version": "2.3.7", 7471 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 7472 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 7473 - "dev": true, 7474 - "dependencies": { 7475 - "core-util-is": "~1.0.0", 7476 - "inherits": "~2.0.3", 7477 - "isarray": "~1.0.0", 7478 - "process-nextick-args": "~2.0.0", 7479 - "safe-buffer": "~5.1.1", 7480 - "string_decoder": "~1.1.1", 7481 - "util-deprecate": "~1.0.1" 7482 - } 7483 - }, 7484 - "node_modules/gulp-sort/node_modules/string_decoder": { 7485 - "version": "1.1.1", 7486 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 7487 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 7488 - "dev": true, 7489 - "dependencies": { 7490 - "safe-buffer": "~5.1.0" 7491 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 7492 + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", 7493 + "engines": { 7494 + "node": ">=4" 7495 } 7496 }, 7497 - "node_modules/gulp-sort/node_modules/through2": { 7498 - "version": "2.0.5", 7499 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 7500 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 7501 - "dev": true, 7502 + "node_modules/har-validator": { 7503 + "version": "5.1.5", 7504 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 7505 + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 7506 + "deprecated": "this library is no longer supported", 7507 "dependencies": { 7508 - "readable-stream": "~2.3.6", 7509 - "xtend": "~4.0.1" 7510 + "ajv": "^6.12.3", 7511 + "har-schema": "^2.0.0" 7512 + }, 7513 + "engines": { 7514 + "node": ">=6" 7515 } 7516 }, 7517 "node_modules/has": { 7518 "version": "1.0.3", 7519 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 7520 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 7521 - "dev": true, 7522 "dependencies": { 7523 "function-bind": "^1.1.1" 7524 }, 7525 @@ -3741,56 +2932,19 @@ 7526 "node": ">= 0.4.0" 7527 } 7528 }, 7529 - "node_modules/has-bigints": { 7530 - "version": "1.0.1", 7531 - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 7532 - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 7533 - "dev": true, 7534 - "funding": { 7535 - "url": "https://github.com/sponsors/ljharb" 7536 - } 7537 - }, 7538 "node_modules/has-flag": { 7539 "version": "3.0.0", 7540 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 7541 - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 7542 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 7543 "dev": true, 7544 "engines": { 7545 "node": ">=4" 7546 } 7547 }, 7548 - "node_modules/has-property-descriptors": { 7549 - "version": "1.0.0", 7550 - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 7551 - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 7552 - "dev": true, 7553 - "dependencies": { 7554 - "get-intrinsic": "^1.1.1" 7555 - }, 7556 - "funding": { 7557 - "url": "https://github.com/sponsors/ljharb" 7558 - } 7559 - }, 7560 "node_modules/has-symbols": { 7561 "version": "1.0.3", 7562 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 7563 "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 7564 - "dev": true, 7565 - "engines": { 7566 - "node": ">= 0.4" 7567 - }, 7568 - "funding": { 7569 - "url": "https://github.com/sponsors/ljharb" 7570 - } 7571 - }, 7572 - "node_modules/has-tostringtag": { 7573 - "version": "1.0.0", 7574 - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 7575 - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 7576 - "dev": true, 7577 - "dependencies": { 7578 - "has-symbols": "^1.0.2" 7579 - }, 7580 "engines": { 7581 "node": ">= 0.4" 7582 }, 7583 @@ -3798,234 +2952,65 @@ 7584 "url": "https://github.com/sponsors/ljharb" 7585 } 7586 }, 7587 - "node_modules/has-unicode": { 7588 - "version": "2.0.1", 7589 - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 7590 - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 7591 - }, 7592 - "node_modules/he": { 7593 - "version": "1.2.0", 7594 - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 7595 - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 7596 - "dev": true, 7597 - "bin": { 7598 - "he": "bin/he" 7599 - } 7600 - }, 7601 - "node_modules/heimdalljs": { 7602 - "version": "0.2.6", 7603 - "resolved": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.6.tgz", 7604 - "integrity": "sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==", 7605 - "dev": true, 7606 - "dependencies": { 7607 - "rsvp": "~3.2.1" 7608 - } 7609 - }, 7610 - "node_modules/heimdalljs-logger": { 7611 - "version": "0.1.10", 7612 - "resolved": "https://registry.npmjs.org/heimdalljs-logger/-/heimdalljs-logger-0.1.10.tgz", 7613 - "integrity": "sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==", 7614 - "dev": true, 7615 - "dependencies": { 7616 - "debug": "^2.2.0", 7617 - "heimdalljs": "^0.2.6" 7618 - } 7619 - }, 7620 - "node_modules/heimdalljs-logger/node_modules/debug": { 7621 - "version": "2.6.9", 7622 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 7623 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 7624 - "dev": true, 7625 - "dependencies": { 7626 - "ms": "2.0.0" 7627 - } 7628 - }, 7629 - "node_modules/heimdalljs-logger/node_modules/ms": { 7630 - "version": "2.0.0", 7631 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 7632 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 7633 - "dev": true 7634 - }, 7635 - "node_modules/heimdalljs/node_modules/rsvp": { 7636 - "version": "3.2.1", 7637 - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.2.1.tgz", 7638 - "integrity": "sha1-B8tKXfJa3Z6Cbrxn3Mn9idsn2Eo=", 7639 - "dev": true 7640 - }, 7641 - "node_modules/hoist-non-react-statics": { 7642 - "version": "3.3.2", 7643 - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 7644 - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 7645 - "dependencies": { 7646 - "react-is": "^16.7.0" 7647 - } 7648 - }, 7649 "node_modules/hosted-git-info": { 7650 "version": "2.8.9", 7651 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 7652 "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 7653 "dev": true 7654 }, 7655 - "node_modules/html-escaper": { 7656 - "version": "2.0.2", 7657 - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 7658 - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" 7659 - }, 7660 - "node_modules/html-parse-stringify": { 7661 - "version": "3.0.1", 7662 - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", 7663 - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", 7664 - "dependencies": { 7665 - "void-elements": "3.1.0" 7666 - } 7667 - }, 7668 - "node_modules/htmlparser2": { 7669 - "version": "6.1.0", 7670 - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", 7671 - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", 7672 - "dev": true, 7673 - "funding": [ 7674 - "https://github.com/fb55/htmlparser2?sponsor=1", 7675 - { 7676 - "type": "github", 7677 - "url": "https://github.com/sponsors/fb55" 7678 - } 7679 - ], 7680 - "dependencies": { 7681 - "domelementtype": "^2.0.1", 7682 - "domhandler": "^4.0.0", 7683 - "domutils": "^2.5.2", 7684 - "entities": "^2.0.0" 7685 - } 7686 - }, 7687 - "node_modules/http-cache-semantics": { 7688 - "version": "4.1.0", 7689 - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 7690 - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 7691 - "optional": true 7692 - }, 7693 - "node_modules/http-proxy-agent": { 7694 - "version": "4.0.1", 7695 - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 7696 - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 7697 - "optional": true, 7698 + "node_modules/http-signature": { 7699 + "version": "1.2.0", 7700 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 7701 + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 7702 "dependencies": { 7703 - "@tootallnate/once": "1", 7704 - "agent-base": "6", 7705 - "debug": "4" 7706 + "assert-plus": "^1.0.0", 7707 + "jsprim": "^1.2.2", 7708 + "sshpk": "^1.7.0" 7709 }, 7710 "engines": { 7711 - "node": ">= 6" 7712 + "node": ">=0.8", 7713 + "npm": ">=1.3.7" 7714 } 7715 }, 7716 - "node_modules/https-proxy-agent": { 7717 - "version": "5.0.0", 7718 - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 7719 - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 7720 + "node_modules/iconv-lite": { 7721 + "version": "0.4.24", 7722 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 7723 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 7724 "dependencies": { 7725 - "agent-base": "6", 7726 - "debug": "4" 7727 + "safer-buffer": ">= 2.1.2 < 3" 7728 }, 7729 "engines": { 7730 - "node": ">= 6" 7731 + "node": ">=0.10.0" 7732 } 7733 }, 7734 - "node_modules/humanize-ms": { 7735 + "node_modules/ieee754": { 7736 "version": "1.2.1", 7737 - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 7738 - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", 7739 - "optional": true, 7740 - "dependencies": { 7741 - "ms": "^2.0.0" 7742 - } 7743 - }, 7744 - "node_modules/i18next": { 7745 - "version": "21.6.14", 7746 - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.14.tgz", 7747 - "integrity": "sha512-XL6WyD+xlwQwbieXRlXhKWoLb/rkch50/rA+vl6untHnJ+aYnkQ0YDZciTWE78PPhOpbi2gR0LTJCJpiAhA+uQ==", 7748 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 7749 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 7750 "funding": [ 7751 { 7752 - "type": "individual", 7753 - "url": "https://locize.com" 7754 + "type": "github", 7755 + "url": "https://github.com/sponsors/feross" 7756 }, 7757 { 7758 - "type": "individual", 7759 - "url": "https://locize.com/i18next.html" 7760 + "type": "patreon", 7761 + "url": "https://www.patreon.com/feross" 7762 }, 7763 { 7764 - "type": "individual", 7765 - "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" 7766 + "type": "consulting", 7767 + "url": "https://feross.org/support" 7768 } 7769 - ], 7770 - "dependencies": { 7771 - "@babel/runtime": "^7.17.2" 7772 - } 7773 - }, 7774 - "node_modules/i18next-fs-backend": { 7775 - "version": "1.1.4", 7776 - "resolved": "https://registry.npmjs.org/i18next-fs-backend/-/i18next-fs-backend-1.1.4.tgz", 7777 - "integrity": "sha512-/MfAGMP0jHonV966uFf9PkWWuDjPYLIcsipnSO3NxpNtAgRUKLTwvm85fEmsF6hGeu0zbZiCQ3W74jwO6K9uXA==" 7778 - }, 7779 - "node_modules/i18next-parser": { 7780 - "version": "6.4.0", 7781 - "resolved": "https://registry.npmjs.org/i18next-parser/-/i18next-parser-6.4.0.tgz", 7782 - "integrity": "sha512-UjPs2AgjJSs6JEYr9MnWiPoq4CRx5L/9VhXVhtSsz+1qoaDVvK8zgrcc+Vv0itP//B6BWTnRZxw88FOy9frAvQ==", 7783 - "dev": true, 7784 - "dependencies": { 7785 - "@babel/runtime": "^7.15.4", 7786 - "broccoli-plugin": "^4.0.7", 7787 - "cheerio": "^1.0.0-rc.2", 7788 - "colors": "1.4.0", 7789 - "commander": "~9.1.0", 7790 - "concat-stream": "~2.0.0", 7791 - "eol": "^0.9.1", 7792 - "fs-extra": "^10.0.0", 7793 - "gulp-sort": "^2.0.0", 7794 - "i18next": "^21.2.0", 7795 - "js-yaml": "4.1.0", 7796 - "rsvp": "^4.8.2", 7797 - "sort-keys": "^5.0.0", 7798 - "through2": "~4.0.2", 7799 - "typescript": "^4.2.4", 7800 - "vinyl": "~2.2.1", 7801 - "vinyl-fs": "^3.0.2", 7802 - "vue-template-compiler": "^2.6.11" 7803 - }, 7804 - "bin": { 7805 - "i18next": "bin/cli.js" 7806 - }, 7807 - "engines": { 7808 - "node": "^14.13.1 || >=16.0.0 || >=18.0.0", 7809 - "npm": ">=6", 7810 - "yarn": ">=1" 7811 - } 7812 - }, 7813 - "node_modules/iconv-lite": { 7814 - "version": "0.6.3", 7815 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 7816 - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 7817 - "optional": true, 7818 - "dependencies": { 7819 - "safer-buffer": ">= 2.1.2 < 3.0.0" 7820 - }, 7821 - "engines": { 7822 - "node": ">=0.10.0" 7823 - } 7824 + ] 7825 }, 7826 "node_modules/ignore": { 7827 - "version": "5.2.0", 7828 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 7829 - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 7830 + "version": "5.2.4", 7831 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 7832 + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 7833 "dev": true, 7834 "engines": { 7835 "node": ">= 4" 7836 } 7837 }, 7838 - "node_modules/immediate": { 7839 - "version": "3.0.6", 7840 - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 7841 - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" 7842 - }, 7843 "node_modules/import-fresh": { 7844 "version": "3.3.0", 7845 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 7846 @@ -4045,8 +3030,8 @@ 7847 "node_modules/imurmurhash": { 7848 "version": "0.1.4", 7849 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 7850 - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 7851 - "devOptional": true, 7852 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 7853 + "dev": true, 7854 "engines": { 7855 "node": ">=0.8.19" 7856 } 7857 @@ -4055,29 +3040,16 @@ 7858 "version": "4.0.0", 7859 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 7860 "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 7861 - "devOptional": true, 7862 - "engines": { 7863 - "node": ">=8" 7864 - } 7865 - }, 7866 - "node_modules/infer-owner": { 7867 - "version": "1.0.4", 7868 - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 7869 - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 7870 - "optional": true 7871 - }, 7872 - "node_modules/inflection": { 7873 - "version": "1.13.2", 7874 - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", 7875 - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", 7876 - "engines": [ 7877 - "node >= 0.4.0" 7878 - ] 7879 + "dev": true, 7880 + "engines": { 7881 + "node": ">=8" 7882 + } 7883 }, 7884 "node_modules/inflight": { 7885 "version": "1.0.6", 7886 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 7887 - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 7888 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 7889 + "dev": true, 7890 "dependencies": { 7891 "once": "^1.3.0", 7892 "wrappy": "1" 7893 @@ -4088,119 +3060,132 @@ 7894 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 7895 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 7896 }, 7897 - "node_modules/internal-slot": { 7898 - "version": "1.0.3", 7899 - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 7900 - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 7901 - "dev": true, 7902 - "dependencies": { 7903 - "get-intrinsic": "^1.1.0", 7904 - "has": "^1.0.3", 7905 - "side-channel": "^1.0.4" 7906 + "node_modules/inquirer": { 7907 + "version": "8.2.5", 7908 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", 7909 + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", 7910 + "dependencies": { 7911 + "ansi-escapes": "^4.2.1", 7912 + "chalk": "^4.1.1", 7913 + "cli-cursor": "^3.1.0", 7914 + "cli-width": "^3.0.0", 7915 + "external-editor": "^3.0.3", 7916 + "figures": "^3.0.0", 7917 + "lodash": "^4.17.21", 7918 + "mute-stream": "0.0.8", 7919 + "ora": "^5.4.1", 7920 + "run-async": "^2.4.0", 7921 + "rxjs": "^7.5.5", 7922 + "string-width": "^4.1.0", 7923 + "strip-ansi": "^6.0.0", 7924 + "through": "^2.3.6", 7925 + "wrap-ansi": "^7.0.0" 7926 }, 7927 "engines": { 7928 - "node": ">= 0.4" 7929 + "node": ">=12.0.0" 7930 } 7931 }, 7932 - "node_modules/ip": { 7933 - "version": "1.1.5", 7934 - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", 7935 - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", 7936 - "optional": true 7937 - }, 7938 - "node_modules/is-absolute": { 7939 - "version": "1.0.0", 7940 - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 7941 - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 7942 - "dev": true, 7943 + "node_modules/inquirer/node_modules/ansi-styles": { 7944 + "version": "4.3.0", 7945 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 7946 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 7947 "dependencies": { 7948 - "is-relative": "^1.0.0", 7949 - "is-windows": "^1.0.1" 7950 + "color-convert": "^2.0.1" 7951 }, 7952 "engines": { 7953 - "node": ">=0.10.0" 7954 + "node": ">=8" 7955 + }, 7956 + "funding": { 7957 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 7958 } 7959 }, 7960 - "node_modules/is-arrayish": { 7961 - "version": "0.2.1", 7962 - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 7963 - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 7964 - "dev": true 7965 - }, 7966 - "node_modules/is-bigint": { 7967 - "version": "1.0.4", 7968 - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 7969 - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 7970 - "dev": true, 7971 + "node_modules/inquirer/node_modules/chalk": { 7972 + "version": "4.1.2", 7973 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 7974 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 7975 "dependencies": { 7976 - "has-bigints": "^1.0.1" 7977 + "ansi-styles": "^4.1.0", 7978 + "supports-color": "^7.1.0" 7979 + }, 7980 + "engines": { 7981 + "node": ">=10" 7982 }, 7983 "funding": { 7984 - "url": "https://github.com/sponsors/ljharb" 7985 + "url": "https://github.com/chalk/chalk?sponsor=1" 7986 } 7987 }, 7988 - "node_modules/is-binary-path": { 7989 - "version": "2.1.0", 7990 - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 7991 - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 7992 - "dev": true, 7993 + "node_modules/inquirer/node_modules/color-convert": { 7994 + "version": "2.0.1", 7995 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 7996 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 7997 "dependencies": { 7998 - "binary-extensions": "^2.0.0" 7999 + "color-name": "~1.1.4" 8000 }, 8001 + "engines": { 8002 + "node": ">=7.0.0" 8003 + } 8004 + }, 8005 + "node_modules/inquirer/node_modules/color-name": { 8006 + "version": "1.1.4", 8007 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 8008 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 8009 + }, 8010 + "node_modules/inquirer/node_modules/has-flag": { 8011 + "version": "4.0.0", 8012 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 8013 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 8014 "engines": { 8015 "node": ">=8" 8016 } 8017 }, 8018 - "node_modules/is-boolean-object": { 8019 - "version": "1.1.2", 8020 - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 8021 - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 8022 - "dev": true, 8023 + "node_modules/inquirer/node_modules/supports-color": { 8024 + "version": "7.2.0", 8025 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 8026 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 8027 "dependencies": { 8028 - "call-bind": "^1.0.2", 8029 - "has-tostringtag": "^1.0.0" 8030 + "has-flag": "^4.0.0" 8031 }, 8032 "engines": { 8033 - "node": ">= 0.4" 8034 - }, 8035 - "funding": { 8036 - "url": "https://github.com/sponsors/ljharb" 8037 + "node": ">=8" 8038 } 8039 }, 8040 - "node_modules/is-buffer": { 8041 - "version": "1.1.6", 8042 - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 8043 - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 8044 + "node_modules/is-arrayish": { 8045 + "version": "0.2.1", 8046 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 8047 + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 8048 "dev": true 8049 }, 8050 - "node_modules/is-builtin-module": { 8051 - "version": "3.1.0", 8052 - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", 8053 - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", 8054 + "node_modules/is-binary-path": { 8055 + "version": "2.1.0", 8056 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 8057 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 8058 "dev": true, 8059 "dependencies": { 8060 - "builtin-modules": "^3.0.0" 8061 + "binary-extensions": "^2.0.0" 8062 }, 8063 "engines": { 8064 - "node": ">=6" 8065 + "node": ">=8" 8066 } 8067 }, 8068 - "node_modules/is-callable": { 8069 - "version": "1.2.4", 8070 - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 8071 - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 8072 + "node_modules/is-builtin-module": { 8073 + "version": "3.2.0", 8074 + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 8075 + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 8076 "dev": true, 8077 + "dependencies": { 8078 + "builtin-modules": "^3.3.0" 8079 + }, 8080 "engines": { 8081 - "node": ">= 0.4" 8082 + "node": ">=6" 8083 }, 8084 "funding": { 8085 - "url": "https://github.com/sponsors/ljharb" 8086 + "url": "https://github.com/sponsors/sindresorhus" 8087 } 8088 }, 8089 "node_modules/is-core-module": { 8090 - "version": "2.8.1", 8091 - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 8092 - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 8093 + "version": "2.11.0", 8094 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 8095 + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 8096 "dev": true, 8097 "dependencies": { 8098 "has": "^1.0.3" 8099 @@ -4209,25 +3194,10 @@ 8100 "url": "https://github.com/sponsors/ljharb" 8101 } 8102 }, 8103 - "node_modules/is-date-object": { 8104 - "version": "1.0.5", 8105 - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 8106 - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 8107 - "dev": true, 8108 - "dependencies": { 8109 - "has-tostringtag": "^1.0.0" 8110 - }, 8111 - "engines": { 8112 - "node": ">= 0.4" 8113 - }, 8114 - "funding": { 8115 - "url": "https://github.com/sponsors/ljharb" 8116 - } 8117 - }, 8118 "node_modules/is-extglob": { 8119 "version": "2.1.1", 8120 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 8121 - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 8122 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 8123 "dev": true, 8124 "engines": { 8125 "node": ">=0.10.0" 8126 @@ -4253,31 +3223,12 @@ 8127 "node": ">=0.10.0" 8128 } 8129 }, 8130 - "node_modules/is-lambda": { 8131 - "version": "1.0.1", 8132 - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 8133 - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", 8134 - "optional": true 8135 - }, 8136 - "node_modules/is-negated-glob": { 8137 + "node_modules/is-interactive": { 8138 "version": "1.0.0", 8139 - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", 8140 - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", 8141 - "dev": true, 8142 - "engines": { 8143 - "node": ">=0.10.0" 8144 - } 8145 - }, 8146 - "node_modules/is-negative-zero": { 8147 - "version": "2.0.2", 8148 - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 8149 - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 8150 - "dev": true, 8151 + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 8152 + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", 8153 "engines": { 8154 - "node": ">= 0.4" 8155 - }, 8156 - "funding": { 8157 - "url": "https://github.com/sponsors/ljharb" 8158 + "node": ">=8" 8159 } 8160 }, 8161 "node_modules/is-number": { 8162 @@ -4289,163 +3240,52 @@ 8163 "node": ">=0.12.0" 8164 } 8165 }, 8166 - "node_modules/is-number-object": { 8167 - "version": "1.0.6", 8168 - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 8169 - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 8170 - "dev": true, 8171 - "dependencies": { 8172 - "has-tostringtag": "^1.0.0" 8173 - }, 8174 - "engines": { 8175 - "node": ">= 0.4" 8176 - }, 8177 - "funding": { 8178 - "url": "https://github.com/sponsors/ljharb" 8179 - } 8180 - }, 8181 - "node_modules/is-plain-obj": { 8182 - "version": "4.0.0", 8183 - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", 8184 - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", 8185 - "dev": true, 8186 - "engines": { 8187 - "node": ">=12" 8188 - }, 8189 - "funding": { 8190 - "url": "https://github.com/sponsors/sindresorhus" 8191 - } 8192 - }, 8193 - "node_modules/is-regex": { 8194 - "version": "1.1.4", 8195 - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 8196 - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 8197 + "node_modules/is-path-inside": { 8198 + "version": "3.0.3", 8199 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 8200 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 8201 "dev": true, 8202 - "dependencies": { 8203 - "call-bind": "^1.0.2", 8204 - "has-tostringtag": "^1.0.0" 8205 - }, 8206 "engines": { 8207 - "node": ">= 0.4" 8208 - }, 8209 - "funding": { 8210 - "url": "https://github.com/sponsors/ljharb" 8211 + "node": ">=8" 8212 } 8213 }, 8214 - "node_modules/is-relative": { 8215 + "node_modules/is-typedarray": { 8216 "version": "1.0.0", 8217 - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 8218 - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 8219 - "dev": true, 8220 - "dependencies": { 8221 - "is-unc-path": "^1.0.0" 8222 - }, 8223 - "engines": { 8224 - "node": ">=0.10.0" 8225 - } 8226 - }, 8227 - "node_modules/is-shared-array-buffer": { 8228 - "version": "1.0.2", 8229 - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 8230 - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 8231 - "dev": true, 8232 - "dependencies": { 8233 - "call-bind": "^1.0.2" 8234 - }, 8235 - "funding": { 8236 - "url": "https://github.com/sponsors/ljharb" 8237 - } 8238 - }, 8239 - "node_modules/is-string": { 8240 - "version": "1.0.7", 8241 - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 8242 - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 8243 - "dev": true, 8244 - "dependencies": { 8245 - "has-tostringtag": "^1.0.0" 8246 - }, 8247 - "engines": { 8248 - "node": ">= 0.4" 8249 - }, 8250 - "funding": { 8251 - "url": "https://github.com/sponsors/ljharb" 8252 - } 8253 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 8254 + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 8255 }, 8256 - "node_modules/is-symbol": { 8257 - "version": "1.0.4", 8258 - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 8259 - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 8260 - "dev": true, 8261 - "dependencies": { 8262 - "has-symbols": "^1.0.2" 8263 - }, 8264 + "node_modules/is-unicode-supported": { 8265 + "version": "0.1.0", 8266 + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 8267 + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 8268 "engines": { 8269 - "node": ">= 0.4" 8270 + "node": ">=10" 8271 }, 8272 "funding": { 8273 - "url": "https://github.com/sponsors/ljharb" 8274 - } 8275 - }, 8276 - "node_modules/is-unc-path": { 8277 - "version": "1.0.0", 8278 - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 8279 - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 8280 - "dev": true, 8281 - "dependencies": { 8282 - "unc-path-regex": "^0.1.2" 8283 - }, 8284 - "engines": { 8285 - "node": ">=0.10.0" 8286 + "url": "https://github.com/sponsors/sindresorhus" 8287 } 8288 }, 8289 - "node_modules/is-utf8": { 8290 - "version": "0.2.1", 8291 - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 8292 - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 8293 + "node_modules/isexe": { 8294 + "version": "2.0.0", 8295 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 8296 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 8297 "dev": true 8298 }, 8299 - "node_modules/is-valid-glob": { 8300 - "version": "1.0.0", 8301 - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", 8302 - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", 8303 - "dev": true, 8304 - "engines": { 8305 - "node": ">=0.10.0" 8306 - } 8307 + "node_modules/isstream": { 8308 + "version": "0.1.2", 8309 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 8310 + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" 8311 }, 8312 - "node_modules/is-weakref": { 8313 - "version": "1.0.2", 8314 - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 8315 - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 8316 + "node_modules/js-sdsl": { 8317 + "version": "4.2.0", 8318 + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", 8319 + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", 8320 "dev": true, 8321 - "dependencies": { 8322 - "call-bind": "^1.0.2" 8323 - }, 8324 "funding": { 8325 - "url": "https://github.com/sponsors/ljharb" 8326 - } 8327 - }, 8328 - "node_modules/is-windows": { 8329 - "version": "1.0.2", 8330 - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 8331 - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 8332 - "dev": true, 8333 - "engines": { 8334 - "node": ">=0.10.0" 8335 + "type": "opencollective", 8336 + "url": "https://opencollective.com/js-sdsl" 8337 } 8338 }, 8339 - "node_modules/isarray": { 8340 - "version": "1.0.0", 8341 - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 8342 - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 8343 - "dev": true 8344 - }, 8345 - "node_modules/isexe": { 8346 - "version": "2.0.0", 8347 - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 8348 - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 8349 - "devOptional": true 8350 - }, 8351 "node_modules/js-tokens": { 8352 "version": "4.0.0", 8353 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 8354 @@ -4463,6 +3303,11 @@ 8355 "js-yaml": "bin/js-yaml.js" 8356 } 8357 }, 8358 + "node_modules/jsbn": { 8359 + "version": "0.1.1", 8360 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 8361 + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" 8362 + }, 8363 "node_modules/jsesc": { 8364 "version": "2.5.2", 8365 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 8366 @@ -4478,122 +3323,62 @@ 8367 "node_modules/json-parse-even-better-errors": { 8368 "version": "2.3.1", 8369 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 8370 - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 8371 - "dev": true 8372 - }, 8373 - "node_modules/json-schema-traverse": { 8374 - "version": "0.4.1", 8375 - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 8376 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 8377 - "dev": true 8378 - }, 8379 - "node_modules/json-stable-stringify-without-jsonify": { 8380 - "version": "1.0.1", 8381 - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 8382 - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 8383 - "dev": true 8384 - }, 8385 - "node_modules/json5": { 8386 - "version": "2.2.1", 8387 - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 8388 - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 8389 - "dev": true, 8390 - "peer": true, 8391 - "bin": { 8392 - "json5": "lib/cli.js" 8393 - }, 8394 - "engines": { 8395 - "node": ">=6" 8396 - } 8397 - }, 8398 - "node_modules/jsonfile": { 8399 - "version": "6.1.0", 8400 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 8401 - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 8402 - "dev": true, 8403 - "dependencies": { 8404 - "universalify": "^2.0.0" 8405 - }, 8406 - "optionalDependencies": { 8407 - "graceful-fs": "^4.1.6" 8408 - } 8409 - }, 8410 - "node_modules/jsx-ast-utils": { 8411 - "version": "3.2.1", 8412 - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", 8413 - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", 8414 - "dev": true, 8415 - "dependencies": { 8416 - "array-includes": "^3.1.3", 8417 - "object.assign": "^4.1.2" 8418 - }, 8419 - "engines": { 8420 - "node": ">=4.0" 8421 - } 8422 - }, 8423 - "node_modules/language-subtag-registry": { 8424 - "version": "0.3.21", 8425 - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", 8426 - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", 8427 + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 8428 "dev": true 8429 }, 8430 - "node_modules/language-tags": { 8431 - "version": "1.0.5", 8432 - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", 8433 - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", 8434 - "dev": true, 8435 - "dependencies": { 8436 - "language-subtag-registry": "~0.3.2" 8437 - } 8438 + "node_modules/json-schema": { 8439 + "version": "0.4.0", 8440 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 8441 + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 8442 + }, 8443 + "node_modules/json-schema-traverse": { 8444 + "version": "0.4.1", 8445 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 8446 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 8447 }, 8448 - "node_modules/lazystream": { 8449 + "node_modules/json-stable-stringify-without-jsonify": { 8450 "version": "1.0.1", 8451 - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", 8452 - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", 8453 - "dev": true, 8454 - "dependencies": { 8455 - "readable-stream": "^2.0.5" 8456 - }, 8457 - "engines": { 8458 - "node": ">= 0.6.3" 8459 - } 8460 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 8461 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 8462 + "dev": true 8463 }, 8464 - "node_modules/lazystream/node_modules/readable-stream": { 8465 - "version": "2.3.7", 8466 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 8467 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 8468 - "dev": true, 8469 - "dependencies": { 8470 - "core-util-is": "~1.0.0", 8471 - "inherits": "~2.0.3", 8472 - "isarray": "~1.0.0", 8473 - "process-nextick-args": "~2.0.0", 8474 - "safe-buffer": "~5.1.1", 8475 - "string_decoder": "~1.1.1", 8476 - "util-deprecate": "~1.0.1" 8477 - } 8478 + "node_modules/json-stringify-safe": { 8479 + "version": "5.0.1", 8480 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 8481 + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 8482 }, 8483 - "node_modules/lazystream/node_modules/string_decoder": { 8484 - "version": "1.1.1", 8485 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 8486 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 8487 + "node_modules/json5": { 8488 + "version": "2.2.3", 8489 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 8490 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 8491 "dev": true, 8492 - "dependencies": { 8493 - "safe-buffer": "~5.1.0" 8494 + "bin": { 8495 + "json5": "lib/cli.js" 8496 + }, 8497 + "engines": { 8498 + "node": ">=6" 8499 } 8500 }, 8501 - "node_modules/lead": { 8502 - "version": "1.0.0", 8503 - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", 8504 - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", 8505 - "dev": true, 8506 + "node_modules/jsprim": { 8507 + "version": "1.4.2", 8508 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 8509 + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 8510 "dependencies": { 8511 - "flush-write-stream": "^1.0.2" 8512 + "assert-plus": "1.0.0", 8513 + "extsprintf": "1.3.0", 8514 + "json-schema": "0.4.0", 8515 + "verror": "1.10.0" 8516 }, 8517 "engines": { 8518 - "node": ">= 0.10" 8519 + "node": ">=0.6.0" 8520 } 8521 }, 8522 + "node_modules/kolorist": { 8523 + "version": "1.6.0", 8524 + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", 8525 + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", 8526 + "dev": true 8527 + }, 8528 "node_modules/levn": { 8529 "version": "0.4.1", 8530 "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 8531 @@ -4607,26 +3392,10 @@ 8532 "node": ">= 0.8.0" 8533 } 8534 }, 8535 - "node_modules/lie": { 8536 - "version": "3.1.1", 8537 - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", 8538 - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", 8539 - "dependencies": { 8540 - "immediate": "~3.0.5" 8541 - } 8542 - }, 8543 - "node_modules/lightgallery": { 8544 - "version": "2.4.0", 8545 - "resolved": "https://registry.npmjs.org/lightgallery/-/lightgallery-2.4.0.tgz", 8546 - "integrity": "sha512-9i/E/w3yaqs56y3k6SWIUS3JTLpeDCZIVnIuNppzAmj5KjLGy5wrFisoDUD0HdxVUdX0wHG5mjvB4h0TXtyf/w==", 8547 - "engines": { 8548 - "node": ">=6.0.0" 8549 - } 8550 - }, 8551 "node_modules/lilconfig": { 8552 - "version": "2.0.5", 8553 - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 8554 - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 8555 + "version": "2.0.6", 8556 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", 8557 + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", 8558 "dev": true, 8559 "engines": { 8560 "node": ">=10" 8561 @@ -4638,25 +3407,19 @@ 8562 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 8563 "dev": true 8564 }, 8565 - "node_modules/localforage": { 8566 - "version": "1.10.0", 8567 - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", 8568 - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", 8569 - "dependencies": { 8570 - "lie": "3.1.1" 8571 - } 8572 - }, 8573 "node_modules/locate-path": { 8574 - "version": "2.0.0", 8575 - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 8576 - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 8577 + "version": "6.0.0", 8578 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 8579 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 8580 "dev": true, 8581 "dependencies": { 8582 - "p-locate": "^2.0.0", 8583 - "path-exists": "^3.0.0" 8584 + "p-locate": "^5.0.0" 8585 }, 8586 "engines": { 8587 - "node": ">=4" 8588 + "node": ">=10" 8589 + }, 8590 + "funding": { 8591 + "url": "https://github.com/sponsors/sindresorhus" 8592 } 8593 }, 8594 "node_modules/lodash": { 8595 @@ -4670,518 +3433,261 @@ 8596 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 8597 "dev": true 8598 }, 8599 - "node_modules/loose-envify": { 8600 - "version": "1.4.0", 8601 - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 8602 - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 8603 - "dependencies": { 8604 - "js-tokens": "^3.0.0 || ^4.0.0" 8605 - }, 8606 - "bin": { 8607 - "loose-envify": "cli.js" 8608 - } 8609 - }, 8610 - "node_modules/lru-cache": { 8611 - "version": "6.0.0", 8612 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 8613 - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 8614 + "node_modules/log-symbols": { 8615 + "version": "4.1.0", 8616 + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 8617 + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 8618 "dependencies": { 8619 - "yallist": "^4.0.0" 8620 + "chalk": "^4.1.0", 8621 + "is-unicode-supported": "^0.1.0" 8622 }, 8623 "engines": { 8624 "node": ">=10" 8625 - } 8626 - }, 8627 - "node_modules/make-dir": { 8628 - "version": "3.1.0", 8629 - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 8630 - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 8631 - "dependencies": { 8632 - "semver": "^6.0.0" 8633 - }, 8634 - "engines": { 8635 - "node": ">=8" 8636 }, 8637 "funding": { 8638 "url": "https://github.com/sponsors/sindresorhus" 8639 } 8640 }, 8641 - "node_modules/make-fetch-happen": { 8642 - "version": "9.1.0", 8643 - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", 8644 - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", 8645 - "optional": true, 8646 + "node_modules/log-symbols/node_modules/ansi-styles": { 8647 + "version": "4.3.0", 8648 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 8649 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 8650 "dependencies": { 8651 - "agentkeepalive": "^4.1.3", 8652 - "cacache": "^15.2.0", 8653 - "http-cache-semantics": "^4.1.0", 8654 - "http-proxy-agent": "^4.0.1", 8655 - "https-proxy-agent": "^5.0.0", 8656 - "is-lambda": "^1.0.1", 8657 - "lru-cache": "^6.0.0", 8658 - "minipass": "^3.1.3", 8659 - "minipass-collect": "^1.0.2", 8660 - "minipass-fetch": "^1.3.2", 8661 - "minipass-flush": "^1.0.5", 8662 - "minipass-pipeline": "^1.2.4", 8663 - "negotiator": "^0.6.2", 8664 - "promise-retry": "^2.0.1", 8665 - "socks-proxy-agent": "^6.0.0", 8666 - "ssri": "^8.0.0" 8667 + "color-convert": "^2.0.1" 8668 }, 8669 "engines": { 8670 - "node": ">= 10" 8671 - } 8672 - }, 8673 - "node_modules/matcher-collection": { 8674 - "version": "2.0.1", 8675 - "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", 8676 - "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", 8677 - "dev": true, 8678 - "dependencies": { 8679 - "@types/minimatch": "^3.0.3", 8680 - "minimatch": "^3.0.2" 8681 + "node": ">=8" 8682 }, 8683 - "engines": { 8684 - "node": "6.* || 8.* || >= 10.*" 8685 - } 8686 - }, 8687 - "node_modules/meilisearch": { 8688 - "version": "0.25.1", 8689 - "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.25.1.tgz", 8690 - "integrity": "sha512-20jO0pK9BhghxHSkOLbdoYn58h/Z0PNL3JQcRq7ipNIeqrxkAetCZZ6ttJC3uxcz0jVglmiFoSXu3Z/lEOLOLQ==", 8691 - "dependencies": { 8692 - "cross-fetch": "^3.1.5" 8693 - } 8694 - }, 8695 - "node_modules/merge2": { 8696 - "version": "1.4.1", 8697 - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 8698 - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 8699 - "dev": true, 8700 - "engines": { 8701 - "node": ">= 8" 8702 + "funding": { 8703 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 8704 } 8705 }, 8706 - "node_modules/micromatch": { 8707 - "version": "4.0.4", 8708 - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 8709 - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 8710 - "dev": true, 8711 + "node_modules/log-symbols/node_modules/chalk": { 8712 + "version": "4.1.2", 8713 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 8714 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 8715 "dependencies": { 8716 - "braces": "^3.0.1", 8717 - "picomatch": "^2.2.3" 8718 + "ansi-styles": "^4.1.0", 8719 + "supports-color": "^7.1.0" 8720 }, 8721 "engines": { 8722 - "node": ">=8.6" 8723 - } 8724 - }, 8725 - "node_modules/min-indent": { 8726 - "version": "1.0.1", 8727 - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 8728 - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 8729 - "dev": true, 8730 - "engines": { 8731 - "node": ">=4" 8732 - } 8733 - }, 8734 - "node_modules/minimatch": { 8735 - "version": "3.1.2", 8736 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 8737 - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 8738 - "dependencies": { 8739 - "brace-expansion": "^1.1.7" 8740 + "node": ">=10" 8741 }, 8742 - "engines": { 8743 - "node": "*" 8744 + "funding": { 8745 + "url": "https://github.com/chalk/chalk?sponsor=1" 8746 } 8747 }, 8748 - "node_modules/minimist": { 8749 - "version": "1.2.6", 8750 - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 8751 - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 8752 - "dev": true 8753 - }, 8754 - "node_modules/minipass": { 8755 - "version": "3.1.6", 8756 - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 8757 - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 8758 + "node_modules/log-symbols/node_modules/color-convert": { 8759 + "version": "2.0.1", 8760 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 8761 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 8762 "dependencies": { 8763 - "yallist": "^4.0.0" 8764 + "color-name": "~1.1.4" 8765 }, 8766 "engines": { 8767 - "node": ">=8" 8768 + "node": ">=7.0.0" 8769 } 8770 }, 8771 - "node_modules/minipass-collect": { 8772 - "version": "1.0.2", 8773 - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", 8774 - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", 8775 - "optional": true, 8776 - "dependencies": { 8777 - "minipass": "^3.0.0" 8778 - }, 8779 - "engines": { 8780 - "node": ">= 8" 8781 - } 8782 + "node_modules/log-symbols/node_modules/color-name": { 8783 + "version": "1.1.4", 8784 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 8785 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 8786 }, 8787 - "node_modules/minipass-fetch": { 8788 - "version": "1.4.1", 8789 - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", 8790 - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", 8791 - "optional": true, 8792 - "dependencies": { 8793 - "minipass": "^3.1.0", 8794 - "minipass-sized": "^1.0.3", 8795 - "minizlib": "^2.0.0" 8796 - }, 8797 + "node_modules/log-symbols/node_modules/has-flag": { 8798 + "version": "4.0.0", 8799 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 8800 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 8801 "engines": { 8802 "node": ">=8" 8803 - }, 8804 - "optionalDependencies": { 8805 - "encoding": "^0.1.12" 8806 - } 8807 - }, 8808 - "node_modules/minipass-flush": { 8809 - "version": "1.0.5", 8810 - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 8811 - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 8812 - "optional": true, 8813 - "dependencies": { 8814 - "minipass": "^3.0.0" 8815 - }, 8816 - "engines": { 8817 - "node": ">= 8" 8818 } 8819 }, 8820 - "node_modules/minipass-pipeline": { 8821 - "version": "1.2.4", 8822 - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 8823 - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 8824 - "optional": true, 8825 + "node_modules/log-symbols/node_modules/supports-color": { 8826 + "version": "7.2.0", 8827 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 8828 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 8829 "dependencies": { 8830 - "minipass": "^3.0.0" 8831 + "has-flag": "^4.0.0" 8832 }, 8833 "engines": { 8834 "node": ">=8" 8835 } 8836 }, 8837 - "node_modules/minipass-sized": { 8838 - "version": "1.0.3", 8839 - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 8840 - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 8841 - "optional": true, 8842 - "dependencies": { 8843 - "minipass": "^3.0.0" 8844 - }, 8845 + "node_modules/loglevel": { 8846 + "version": "1.8.1", 8847 + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", 8848 + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", 8849 "engines": { 8850 - "node": ">=8" 8851 + "node": ">= 0.6.0" 8852 + }, 8853 + "funding": { 8854 + "type": "tidelift", 8855 + "url": "https://tidelift.com/funding/github/npm/loglevel" 8856 } 8857 }, 8858 - "node_modules/minizlib": { 8859 - "version": "2.1.2", 8860 - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 8861 - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 8862 + "node_modules/loose-envify": { 8863 + "version": "1.4.0", 8864 + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 8865 + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 8866 + "peer": true, 8867 "dependencies": { 8868 - "minipass": "^3.0.0", 8869 - "yallist": "^4.0.0" 8870 + "js-tokens": "^3.0.0 || ^4.0.0" 8871 }, 8872 - "engines": { 8873 - "node": ">= 8" 8874 - } 8875 - }, 8876 - "node_modules/mkdirp": { 8877 - "version": "1.0.4", 8878 - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 8879 - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 8880 "bin": { 8881 - "mkdirp": "bin/cmd.js" 8882 - }, 8883 - "engines": { 8884 - "node": ">=10" 8885 + "loose-envify": "cli.js" 8886 } 8887 }, 8888 - "node_modules/mktemp": { 8889 - "version": "0.4.0", 8890 - "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", 8891 - "integrity": "sha1-bQUVYRyKjITkhKogABKbmOmB/ws=", 8892 + "node_modules/lru-cache": { 8893 + "version": "5.1.1", 8894 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 8895 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 8896 "dev": true, 8897 - "engines": { 8898 - "node": ">0.9" 8899 - } 8900 - }, 8901 - "node_modules/moment": { 8902 - "version": "2.29.2", 8903 - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", 8904 - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", 8905 - "engines": { 8906 - "node": "*" 8907 - } 8908 - }, 8909 - "node_modules/moment-timezone": { 8910 - "version": "0.5.34", 8911 - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", 8912 - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", 8913 "dependencies": { 8914 - "moment": ">= 2.9.0" 8915 - }, 8916 - "engines": { 8917 - "node": "*" 8918 - } 8919 - }, 8920 - "node_modules/ms": { 8921 - "version": "2.1.3", 8922 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 8923 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 8924 - "devOptional": true 8925 - }, 8926 - "node_modules/nanoid": { 8927 - "version": "3.3.4", 8928 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 8929 - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 8930 - "bin": { 8931 - "nanoid": "bin/nanoid.cjs" 8932 - }, 8933 - "engines": { 8934 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 8935 - } 8936 - }, 8937 - "node_modules/natural-compare": { 8938 - "version": "1.4.0", 8939 - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 8940 - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 8941 - "dev": true 8942 - }, 8943 - "node_modules/negotiator": { 8944 - "version": "0.6.3", 8945 - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 8946 - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 8947 - "optional": true, 8948 - "engines": { 8949 - "node": ">= 0.6" 8950 + "yallist": "^3.0.2" 8951 } 8952 }, 8953 - "node_modules/next": { 8954 - "version": "12.1.6", 8955 - "resolved": "https://registry.npmjs.org/next/-/next-12.1.6.tgz", 8956 - "integrity": "sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==", 8957 - "dependencies": { 8958 - "@next/env": "12.1.6", 8959 - "caniuse-lite": "^1.0.30001332", 8960 - "postcss": "8.4.5", 8961 - "styled-jsx": "5.0.2" 8962 - }, 8963 - "bin": { 8964 - "next": "dist/bin/next" 8965 - }, 8966 - "engines": { 8967 - "node": ">=12.22.0" 8968 - }, 8969 - "optionalDependencies": { 8970 - "@next/swc-android-arm-eabi": "12.1.6", 8971 - "@next/swc-android-arm64": "12.1.6", 8972 - "@next/swc-darwin-arm64": "12.1.6", 8973 - "@next/swc-darwin-x64": "12.1.6", 8974 - "@next/swc-linux-arm-gnueabihf": "12.1.6", 8975 - "@next/swc-linux-arm64-gnu": "12.1.6", 8976 - "@next/swc-linux-arm64-musl": "12.1.6", 8977 - "@next/swc-linux-x64-gnu": "12.1.6", 8978 - "@next/swc-linux-x64-musl": "12.1.6", 8979 - "@next/swc-win32-arm64-msvc": "12.1.6", 8980 - "@next/swc-win32-ia32-msvc": "12.1.6", 8981 - "@next/swc-win32-x64-msvc": "12.1.6" 8982 - }, 8983 - "peerDependencies": { 8984 - "fibers": ">= 3.1.0", 8985 - "node-sass": "^6.0.0 || ^7.0.0", 8986 - "react": "^17.0.2 || ^18.0.0-0", 8987 - "react-dom": "^17.0.2 || ^18.0.0-0", 8988 - "sass": "^1.3.0" 8989 - }, 8990 - "peerDependenciesMeta": { 8991 - "fibers": { 8992 - "optional": true 8993 - }, 8994 - "node-sass": { 8995 - "optional": true 8996 - }, 8997 - "sass": { 8998 - "optional": true 8999 - } 9000 + "node_modules/matrix-events-sdk": { 9001 + "version": "0.0.1", 9002 + "resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz", 9003 + "integrity": "sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==" 9004 + }, 9005 + "node_modules/matrix-js-sdk": { 9006 + "version": "16.0.1", 9007 + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-16.0.1.tgz", 9008 + "integrity": "sha512-GRYZY7JZRqsVFa2nKO2qJbU4gQail2+1PgX2QDcibWizTL5Gh8YS384twprpIKqzdLHJ3d7H7A0L+uqc562ZsQ==", 9009 + "dependencies": { 9010 + "@babel/runtime": "^7.12.5", 9011 + "another-json": "^0.2.0", 9012 + "browser-request": "^0.3.3", 9013 + "bs58": "^4.0.1", 9014 + "content-type": "^1.0.4", 9015 + "loglevel": "^1.7.1", 9016 + "matrix-events-sdk": "^0.0.1-beta.7", 9017 + "p-retry": "^4.5.0", 9018 + "qs": "^6.9.6", 9019 + "request": "^2.88.2", 9020 + "unhomoglyph": "^1.0.6" 9021 } 9022 }, 9023 - "node_modules/next-i18next": { 9024 - "version": "11.0.0", 9025 - "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-11.0.0.tgz", 9026 - "integrity": "sha512-phxbQiZGSJTTBE2FI4+BnqFZl88AI2V+6MrEQnT9aPFAXq/fATQ/F0pOUM3J7kU4nEeCfn3hjISq+ygGHlEz0g==", 9027 - "dependencies": { 9028 - "@babel/runtime": "^7.13.17", 9029 - "@types/hoist-non-react-statics": "^3.3.1", 9030 - "core-js": "^3", 9031 - "hoist-non-react-statics": "^3.2.0", 9032 - "i18next": "^21.6.14", 9033 - "i18next-fs-backend": "^1.1.4", 9034 - "react-i18next": "^11.16.2" 9035 - }, 9036 + "node_modules/merge2": { 9037 + "version": "1.4.1", 9038 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 9039 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 9040 + "dev": true, 9041 "engines": { 9042 - "node": ">=12" 9043 - }, 9044 - "funding": { 9045 - "type": "github", 9046 - "url": "https://github.com/sponsors/isaachinman" 9047 - }, 9048 - "peerDependencies": { 9049 - "next": ">= 10.0.0", 9050 - "react": ">= 16.8.0" 9051 + "node": ">= 8" 9052 } 9053 }, 9054 - "node_modules/next/node_modules/postcss": { 9055 - "version": "8.4.5", 9056 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 9057 - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 9058 + "node_modules/micromatch": { 9059 + "version": "4.0.5", 9060 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 9061 + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 9062 + "dev": true, 9063 "dependencies": { 9064 - "nanoid": "^3.1.30", 9065 - "picocolors": "^1.0.0", 9066 - "source-map-js": "^1.0.1" 9067 + "braces": "^3.0.2", 9068 + "picomatch": "^2.3.1" 9069 }, 9070 "engines": { 9071 - "node": "^10 || ^12 || >=14" 9072 - }, 9073 - "funding": { 9074 - "type": "opencollective", 9075 - "url": "https://opencollective.com/postcss/" 9076 + "node": ">=8.6" 9077 } 9078 }, 9079 - "node_modules/node-addon-api": { 9080 - "version": "4.3.0", 9081 - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", 9082 - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" 9083 - }, 9084 - "node_modules/node-fetch": { 9085 - "version": "2.6.7", 9086 - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 9087 - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 9088 - "dependencies": { 9089 - "whatwg-url": "^5.0.0" 9090 - }, 9091 + "node_modules/mime-db": { 9092 + "version": "1.52.0", 9093 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 9094 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 9095 "engines": { 9096 - "node": "4.x || >=6.0.0" 9097 - }, 9098 - "peerDependencies": { 9099 - "encoding": "^0.1.0" 9100 - }, 9101 - "peerDependenciesMeta": { 9102 - "encoding": { 9103 - "optional": true 9104 - } 9105 + "node": ">= 0.6" 9106 } 9107 }, 9108 - "node_modules/node-gyp": { 9109 - "version": "8.4.1", 9110 - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", 9111 - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", 9112 - "optional": true, 9113 + "node_modules/mime-types": { 9114 + "version": "2.1.35", 9115 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 9116 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 9117 "dependencies": { 9118 - "env-paths": "^2.2.0", 9119 - "glob": "^7.1.4", 9120 - "graceful-fs": "^4.2.6", 9121 - "make-fetch-happen": "^9.1.0", 9122 - "nopt": "^5.0.0", 9123 - "npmlog": "^6.0.0", 9124 - "rimraf": "^3.0.2", 9125 - "semver": "^7.3.5", 9126 - "tar": "^6.1.2", 9127 - "which": "^2.0.2" 9128 - }, 9129 - "bin": { 9130 - "node-gyp": "bin/node-gyp.js" 9131 + "mime-db": "1.52.0" 9132 }, 9133 "engines": { 9134 - "node": ">= 10.12.0" 9135 + "node": ">= 0.6" 9136 } 9137 }, 9138 - "node_modules/node-gyp/node_modules/are-we-there-yet": { 9139 - "version": "3.0.0", 9140 - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", 9141 - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", 9142 - "optional": true, 9143 - "dependencies": { 9144 - "delegates": "^1.0.0", 9145 - "readable-stream": "^3.6.0" 9146 - }, 9147 + "node_modules/mimic-fn": { 9148 + "version": "2.1.0", 9149 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 9150 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 9151 "engines": { 9152 - "node": "^12.13.0 || ^14.15.0 || >=16" 9153 + "node": ">=6" 9154 } 9155 }, 9156 - "node_modules/node-gyp/node_modules/gauge": { 9157 - "version": "4.0.4", 9158 - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", 9159 - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", 9160 - "optional": true, 9161 - "dependencies": { 9162 - "aproba": "^1.0.3 || ^2.0.0", 9163 - "color-support": "^1.1.3", 9164 - "console-control-strings": "^1.1.0", 9165 - "has-unicode": "^2.0.1", 9166 - "signal-exit": "^3.0.7", 9167 - "string-width": "^4.2.3", 9168 - "strip-ansi": "^6.0.1", 9169 - "wide-align": "^1.1.5" 9170 - }, 9171 + "node_modules/min-indent": { 9172 + "version": "1.0.1", 9173 + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 9174 + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 9175 + "dev": true, 9176 "engines": { 9177 - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 9178 + "node": ">=4" 9179 } 9180 }, 9181 - "node_modules/node-gyp/node_modules/npmlog": { 9182 - "version": "6.0.1", 9183 - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", 9184 - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", 9185 - "optional": true, 9186 + "node_modules/minimatch": { 9187 + "version": "3.1.2", 9188 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 9189 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 9190 + "dev": true, 9191 "dependencies": { 9192 - "are-we-there-yet": "^3.0.0", 9193 - "console-control-strings": "^1.1.0", 9194 - "gauge": "^4.0.0", 9195 - "set-blocking": "^2.0.0" 9196 + "brace-expansion": "^1.1.7" 9197 }, 9198 "engines": { 9199 - "node": "^12.13.0 || ^14.15.0 || >=16" 9200 + "node": "*" 9201 } 9202 }, 9203 - "node_modules/node-gyp/node_modules/semver": { 9204 - "version": "7.3.7", 9205 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 9206 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 9207 - "optional": true, 9208 - "dependencies": { 9209 - "lru-cache": "^6.0.0" 9210 - }, 9211 - "bin": { 9212 - "semver": "bin/semver.js" 9213 - }, 9214 - "engines": { 9215 - "node": ">=10" 9216 + "node_modules/minimist": { 9217 + "version": "1.2.7", 9218 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 9219 + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 9220 + "dev": true, 9221 + "funding": { 9222 + "url": "https://github.com/sponsors/ljharb" 9223 } 9224 }, 9225 - "node_modules/node-releases": { 9226 - "version": "2.0.4", 9227 - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", 9228 - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", 9229 + "node_modules/ms": { 9230 + "version": "2.1.2", 9231 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 9232 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 9233 "dev": true 9234 }, 9235 - "node_modules/nopt": { 9236 - "version": "5.0.0", 9237 - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 9238 - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 9239 - "dependencies": { 9240 - "abbrev": "1" 9241 - }, 9242 + "node_modules/mute-stream": { 9243 + "version": "0.0.8", 9244 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 9245 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 9246 + }, 9247 + "node_modules/nanoid": { 9248 + "version": "3.3.4", 9249 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 9250 + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 9251 + "dev": true, 9252 "bin": { 9253 - "nopt": "bin/nopt.js" 9254 + "nanoid": "bin/nanoid.cjs" 9255 }, 9256 "engines": { 9257 - "node": ">=6" 9258 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 9259 } 9260 }, 9261 + "node_modules/natural-compare": { 9262 + "version": "1.4.0", 9263 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 9264 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 9265 + "dev": true 9266 + }, 9267 + "node_modules/natural-compare-lite": { 9268 + "version": "1.4.0", 9269 + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", 9270 + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", 9271 + "dev": true 9272 + }, 9273 + "node_modules/node-releases": { 9274 + "version": "2.0.8", 9275 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", 9276 + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", 9277 + "dev": true 9278 + }, 9279 "node_modules/normalize-package-data": { 9280 "version": "2.5.0", 9281 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 9282 @@ -5215,53 +3721,18 @@ 9283 "node_modules/normalize-range": { 9284 "version": "0.1.2", 9285 "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 9286 - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 9287 + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 9288 "dev": true, 9289 "engines": { 9290 "node": ">=0.10.0" 9291 } 9292 }, 9293 - "node_modules/now-and-later": { 9294 - "version": "2.0.1", 9295 - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", 9296 - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", 9297 - "dev": true, 9298 - "dependencies": { 9299 - "once": "^1.3.2" 9300 - }, 9301 - "engines": { 9302 - "node": ">= 0.10" 9303 - } 9304 - }, 9305 - "node_modules/npmlog": { 9306 - "version": "5.0.1", 9307 - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 9308 - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 9309 - "dependencies": { 9310 - "are-we-there-yet": "^2.0.0", 9311 - "console-control-strings": "^1.1.0", 9312 - "gauge": "^3.0.0", 9313 - "set-blocking": "^2.0.0" 9314 - } 9315 - }, 9316 - "node_modules/nth-check": { 9317 - "version": "2.0.1", 9318 - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", 9319 - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", 9320 - "dev": true, 9321 - "dependencies": { 9322 - "boolbase": "^1.0.0" 9323 - }, 9324 - "funding": { 9325 - "url": "https://github.com/fb55/nth-check?sponsor=1" 9326 - } 9327 - }, 9328 - "node_modules/object-assign": { 9329 - "version": "4.1.1", 9330 - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 9331 - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 9332 + "node_modules/oauth-sign": { 9333 + "version": "0.9.0", 9334 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 9335 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 9336 "engines": { 9337 - "node": ">=0.10.0" 9338 + "node": "*" 9339 } 9340 }, 9341 "node_modules/object-hash": { 9342 @@ -5274,206 +3745,196 @@ 9343 } 9344 }, 9345 "node_modules/object-inspect": { 9346 - "version": "1.12.0", 9347 - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 9348 - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 9349 - "dev": true, 9350 + "version": "1.12.2", 9351 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 9352 + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 9353 "funding": { 9354 "url": "https://github.com/sponsors/ljharb" 9355 } 9356 }, 9357 - "node_modules/object-keys": { 9358 - "version": "1.1.1", 9359 - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 9360 - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 9361 + "node_modules/once": { 9362 + "version": "1.4.0", 9363 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 9364 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 9365 "dev": true, 9366 - "engines": { 9367 - "node": ">= 0.4" 9368 + "dependencies": { 9369 + "wrappy": "1" 9370 } 9371 }, 9372 - "node_modules/object.assign": { 9373 - "version": "4.1.2", 9374 - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 9375 - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 9376 - "dev": true, 9377 + "node_modules/onetime": { 9378 + "version": "5.1.2", 9379 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 9380 + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 9381 "dependencies": { 9382 - "call-bind": "^1.0.0", 9383 - "define-properties": "^1.1.3", 9384 - "has-symbols": "^1.0.1", 9385 - "object-keys": "^1.1.1" 9386 + "mimic-fn": "^2.1.0" 9387 }, 9388 "engines": { 9389 - "node": ">= 0.4" 9390 + "node": ">=6" 9391 }, 9392 "funding": { 9393 - "url": "https://github.com/sponsors/ljharb" 9394 + "url": "https://github.com/sponsors/sindresorhus" 9395 } 9396 }, 9397 - "node_modules/object.entries": { 9398 - "version": "1.1.5", 9399 - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", 9400 - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", 9401 + "node_modules/optionator": { 9402 + "version": "0.9.1", 9403 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 9404 + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 9405 "dev": true, 9406 "dependencies": { 9407 - "call-bind": "^1.0.2", 9408 - "define-properties": "^1.1.3", 9409 - "es-abstract": "^1.19.1" 9410 + "deep-is": "^0.1.3", 9411 + "fast-levenshtein": "^2.0.6", 9412 + "levn": "^0.4.1", 9413 + "prelude-ls": "^1.2.1", 9414 + "type-check": "^0.4.0", 9415 + "word-wrap": "^1.2.3" 9416 }, 9417 "engines": { 9418 - "node": ">= 0.4" 9419 + "node": ">= 0.8.0" 9420 } 9421 }, 9422 - "node_modules/object.fromentries": { 9423 - "version": "2.0.5", 9424 - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", 9425 - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", 9426 - "dev": true, 9427 + "node_modules/ora": { 9428 + "version": "5.4.1", 9429 + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", 9430 + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", 9431 "dependencies": { 9432 - "call-bind": "^1.0.2", 9433 - "define-properties": "^1.1.3", 9434 - "es-abstract": "^1.19.1" 9435 + "bl": "^4.1.0", 9436 + "chalk": "^4.1.0", 9437 + "cli-cursor": "^3.1.0", 9438 + "cli-spinners": "^2.5.0", 9439 + "is-interactive": "^1.0.0", 9440 + "is-unicode-supported": "^0.1.0", 9441 + "log-symbols": "^4.1.0", 9442 + "strip-ansi": "^6.0.0", 9443 + "wcwidth": "^1.0.1" 9444 }, 9445 "engines": { 9446 - "node": ">= 0.4" 9447 + "node": ">=10" 9448 }, 9449 "funding": { 9450 - "url": "https://github.com/sponsors/ljharb" 9451 + "url": "https://github.com/sponsors/sindresorhus" 9452 } 9453 }, 9454 - "node_modules/object.hasown": { 9455 - "version": "1.1.1", 9456 - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", 9457 - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", 9458 - "dev": true, 9459 + "node_modules/ora/node_modules/ansi-styles": { 9460 + "version": "4.3.0", 9461 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 9462 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 9463 "dependencies": { 9464 - "define-properties": "^1.1.4", 9465 - "es-abstract": "^1.19.5" 9466 + "color-convert": "^2.0.1" 9467 + }, 9468 + "engines": { 9469 + "node": ">=8" 9470 }, 9471 "funding": { 9472 - "url": "https://github.com/sponsors/ljharb" 9473 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 9474 } 9475 }, 9476 - "node_modules/object.values": { 9477 - "version": "1.1.5", 9478 - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", 9479 - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", 9480 - "dev": true, 9481 + "node_modules/ora/node_modules/chalk": { 9482 + "version": "4.1.2", 9483 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 9484 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 9485 "dependencies": { 9486 - "call-bind": "^1.0.2", 9487 - "define-properties": "^1.1.3", 9488 - "es-abstract": "^1.19.1" 9489 + "ansi-styles": "^4.1.0", 9490 + "supports-color": "^7.1.0" 9491 }, 9492 "engines": { 9493 - "node": ">= 0.4" 9494 + "node": ">=10" 9495 }, 9496 "funding": { 9497 - "url": "https://github.com/sponsors/ljharb" 9498 - } 9499 - }, 9500 - "node_modules/once": { 9501 - "version": "1.4.0", 9502 - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 9503 - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 9504 - "dependencies": { 9505 - "wrappy": "1" 9506 + "url": "https://github.com/chalk/chalk?sponsor=1" 9507 } 9508 }, 9509 - "node_modules/optionator": { 9510 - "version": "0.9.1", 9511 - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 9512 - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 9513 - "dev": true, 9514 + "node_modules/ora/node_modules/color-convert": { 9515 + "version": "2.0.1", 9516 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 9517 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 9518 "dependencies": { 9519 - "deep-is": "^0.1.3", 9520 - "fast-levenshtein": "^2.0.6", 9521 - "levn": "^0.4.1", 9522 - "prelude-ls": "^1.2.1", 9523 - "type-check": "^0.4.0", 9524 - "word-wrap": "^1.2.3" 9525 + "color-name": "~1.1.4" 9526 }, 9527 "engines": { 9528 - "node": ">= 0.8.0" 9529 + "node": ">=7.0.0" 9530 } 9531 }, 9532 - "node_modules/ordered-read-streams": { 9533 - "version": "1.0.1", 9534 - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", 9535 - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", 9536 - "dev": true, 9537 - "dependencies": { 9538 - "readable-stream": "^2.0.1" 9539 + "node_modules/ora/node_modules/color-name": { 9540 + "version": "1.1.4", 9541 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 9542 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 9543 + }, 9544 + "node_modules/ora/node_modules/has-flag": { 9545 + "version": "4.0.0", 9546 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 9547 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 9548 + "engines": { 9549 + "node": ">=8" 9550 } 9551 }, 9552 - "node_modules/ordered-read-streams/node_modules/readable-stream": { 9553 - "version": "2.3.7", 9554 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 9555 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 9556 - "dev": true, 9557 + "node_modules/ora/node_modules/supports-color": { 9558 + "version": "7.2.0", 9559 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 9560 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 9561 "dependencies": { 9562 - "core-util-is": "~1.0.0", 9563 - "inherits": "~2.0.3", 9564 - "isarray": "~1.0.0", 9565 - "process-nextick-args": "~2.0.0", 9566 - "safe-buffer": "~5.1.1", 9567 - "string_decoder": "~1.1.1", 9568 - "util-deprecate": "~1.0.1" 9569 + "has-flag": "^4.0.0" 9570 + }, 9571 + "engines": { 9572 + "node": ">=8" 9573 } 9574 }, 9575 - "node_modules/ordered-read-streams/node_modules/string_decoder": { 9576 - "version": "1.1.1", 9577 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 9578 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 9579 - "dev": true, 9580 - "dependencies": { 9581 - "safe-buffer": "~5.1.0" 9582 + "node_modules/os-tmpdir": { 9583 + "version": "1.0.2", 9584 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 9585 + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 9586 + "engines": { 9587 + "node": ">=0.10.0" 9588 } 9589 }, 9590 "node_modules/p-limit": { 9591 - "version": "1.3.0", 9592 - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 9593 - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 9594 + "version": "3.1.0", 9595 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 9596 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 9597 "dev": true, 9598 "dependencies": { 9599 - "p-try": "^1.0.0" 9600 + "yocto-queue": "^0.1.0" 9601 }, 9602 "engines": { 9603 - "node": ">=4" 9604 + "node": ">=10" 9605 + }, 9606 + "funding": { 9607 + "url": "https://github.com/sponsors/sindresorhus" 9608 } 9609 }, 9610 "node_modules/p-locate": { 9611 - "version": "2.0.0", 9612 - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 9613 - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 9614 + "version": "5.0.0", 9615 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 9616 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 9617 "dev": true, 9618 "dependencies": { 9619 - "p-limit": "^1.1.0" 9620 + "p-limit": "^3.0.2" 9621 }, 9622 "engines": { 9623 - "node": ">=4" 9624 + "node": ">=10" 9625 + }, 9626 + "funding": { 9627 + "url": "https://github.com/sponsors/sindresorhus" 9628 } 9629 }, 9630 - "node_modules/p-map": { 9631 - "version": "4.0.0", 9632 - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 9633 - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 9634 - "optional": true, 9635 + "node_modules/p-retry": { 9636 + "version": "4.6.2", 9637 + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", 9638 + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", 9639 "dependencies": { 9640 - "aggregate-error": "^3.0.0" 9641 + "@types/retry": "0.12.0", 9642 + "retry": "^0.13.1" 9643 }, 9644 "engines": { 9645 - "node": ">=10" 9646 - }, 9647 - "funding": { 9648 - "url": "https://github.com/sponsors/sindresorhus" 9649 + "node": ">=8" 9650 } 9651 }, 9652 "node_modules/p-try": { 9653 - "version": "1.0.0", 9654 - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 9655 - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 9656 + "version": "2.2.0", 9657 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 9658 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 9659 "dev": true, 9660 "engines": { 9661 - "node": ">=4" 9662 + "node": ">=6" 9663 } 9664 }, 9665 "node_modules/parent-module": { 9666 @@ -5506,40 +3967,20 @@ 9667 "url": "https://github.com/sponsors/sindresorhus" 9668 } 9669 }, 9670 - "node_modules/parse5": { 9671 - "version": "6.0.1", 9672 - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 9673 - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", 9674 - "dev": true 9675 - }, 9676 - "node_modules/parse5-htmlparser2-tree-adapter": { 9677 - "version": "6.0.1", 9678 - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 9679 - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 9680 - "dev": true, 9681 - "dependencies": { 9682 - "parse5": "^6.0.1" 9683 - } 9684 - }, 9685 - "node_modules/path-dirname": { 9686 - "version": "1.0.2", 9687 - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 9688 - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 9689 - "dev": true 9690 - }, 9691 "node_modules/path-exists": { 9692 - "version": "3.0.0", 9693 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 9694 - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 9695 + "version": "4.0.0", 9696 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 9697 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 9698 "dev": true, 9699 "engines": { 9700 - "node": ">=4" 9701 + "node": ">=8" 9702 } 9703 }, 9704 "node_modules/path-is-absolute": { 9705 "version": "1.0.1", 9706 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 9707 - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 9708 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 9709 + "dev": true, 9710 "engines": { 9711 "node": ">=0.10.0" 9712 } 9713 @@ -5559,12 +4000,6 @@ 9714 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 9715 "dev": true 9716 }, 9717 - "node_modules/path-posix": { 9718 - "version": "1.0.0", 9719 - "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", 9720 - "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=", 9721 - "dev": true 9722 - }, 9723 "node_modules/path-type": { 9724 "version": "4.0.0", 9725 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 9726 @@ -5574,15 +4009,16 @@ 9727 "node": ">=8" 9728 } 9729 }, 9730 - "node_modules/pg-connection-string": { 9731 - "version": "2.5.0", 9732 - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", 9733 - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" 9734 + "node_modules/performance-now": { 9735 + "version": "2.1.0", 9736 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 9737 + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 9738 }, 9739 "node_modules/picocolors": { 9740 "version": "1.0.0", 9741 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 9742 - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 9743 + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 9744 + "dev": true 9745 }, 9746 "node_modules/picomatch": { 9747 "version": "2.3.1", 9748 @@ -5596,16 +4032,13 @@ 9749 "url": "https://github.com/sponsors/jonschlinkert" 9750 } 9751 }, 9752 - "node_modules/playwright-core": { 9753 - "version": "1.22.2", 9754 - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.22.2.tgz", 9755 - "integrity": "sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q==", 9756 + "node_modules/pify": { 9757 + "version": "2.3.0", 9758 + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 9759 + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 9760 "dev": true, 9761 - "bin": { 9762 - "playwright": "cli.js" 9763 - }, 9764 "engines": { 9765 - "node": ">=14" 9766 + "node": ">=0.10.0" 9767 } 9768 }, 9769 "node_modules/pluralize": { 9770 @@ -5617,18 +4050,10 @@ 9771 "node": ">=4" 9772 } 9773 }, 9774 - "node_modules/png-chunks-extract": { 9775 - "version": "1.0.0", 9776 - "resolved": "https://registry.npmjs.org/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz", 9777 - "integrity": "sha1-+tSpBeZmUhlzUcZeNbksZDEeRy0=", 9778 - "dependencies": { 9779 - "crc-32": "^0.3.0" 9780 - } 9781 - }, 9782 "node_modules/postcss": { 9783 - "version": "8.4.14", 9784 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 9785 - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 9786 + "version": "8.4.20", 9787 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", 9788 + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", 9789 "dev": true, 9790 "funding": [ 9791 { 9792 @@ -5649,6 +4074,23 @@ 9793 "node": "^10 || ^12 || >=14" 9794 } 9795 }, 9796 + "node_modules/postcss-import": { 9797 + "version": "14.1.0", 9798 + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", 9799 + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", 9800 + "dev": true, 9801 + "dependencies": { 9802 + "postcss-value-parser": "^4.0.0", 9803 + "read-cache": "^1.0.0", 9804 + "resolve": "^1.1.7" 9805 + }, 9806 + "engines": { 9807 + "node": ">=10.0.0" 9808 + }, 9809 + "peerDependencies": { 9810 + "postcss": "^8.0.0" 9811 + } 9812 + }, 9813 "node_modules/postcss-js": { 9814 "version": "4.0.0", 9815 "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 9816 @@ -5698,12 +4140,12 @@ 9817 } 9818 }, 9819 "node_modules/postcss-nested": { 9820 - "version": "5.0.6", 9821 - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 9822 - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 9823 + "version": "6.0.0", 9824 + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", 9825 + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", 9826 "dev": true, 9827 "dependencies": { 9828 - "postcss-selector-parser": "^6.0.6" 9829 + "postcss-selector-parser": "^6.0.10" 9830 }, 9831 "engines": { 9832 "node": ">=12.0" 9833 @@ -5717,9 +4159,9 @@ 9834 } 9835 }, 9836 "node_modules/postcss-selector-parser": { 9837 - "version": "6.0.10", 9838 - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 9839 - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 9840 + "version": "6.0.11", 9841 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", 9842 + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", 9843 "dev": true, 9844 "dependencies": { 9845 "cssesc": "^3.0.0", 9846 @@ -5735,6 +4177,15 @@ 9847 "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 9848 "dev": true 9849 }, 9850 + "node_modules/preact": { 9851 + "version": "10.11.3", 9852 + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", 9853 + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==", 9854 + "funding": { 9855 + "type": "opencollective", 9856 + "url": "https://opencollective.com/preact" 9857 + } 9858 + }, 9859 "node_modules/prelude-ls": { 9860 "version": "1.2.1", 9861 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 9862 @@ -5744,80 +4195,33 @@ 9863 "node": ">= 0.8.0" 9864 } 9865 }, 9866 - "node_modules/process-nextick-args": { 9867 - "version": "2.0.1", 9868 - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 9869 - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 9870 - "dev": true 9871 - }, 9872 - "node_modules/promise-inflight": { 9873 - "version": "1.0.1", 9874 - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 9875 - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 9876 - "optional": true 9877 - }, 9878 - "node_modules/promise-map-series": { 9879 - "version": "0.3.0", 9880 - "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz", 9881 - "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==", 9882 - "dev": true, 9883 - "engines": { 9884 - "node": "10.* || >= 12.*" 9885 - } 9886 - }, 9887 - "node_modules/promise-retry": { 9888 - "version": "2.0.1", 9889 - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 9890 - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 9891 - "optional": true, 9892 - "dependencies": { 9893 - "err-code": "^2.0.2", 9894 - "retry": "^0.12.0" 9895 - }, 9896 - "engines": { 9897 - "node": ">=10" 9898 - } 9899 - }, 9900 - "node_modules/prop-types": { 9901 - "version": "15.8.1", 9902 - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 9903 - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 9904 - "dependencies": { 9905 - "loose-envify": "^1.4.0", 9906 - "object-assign": "^4.1.1", 9907 - "react-is": "^16.13.1" 9908 - } 9909 - }, 9910 - "node_modules/pumpify": { 9911 - "version": "1.5.1", 9912 - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 9913 - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 9914 - "dev": true, 9915 - "dependencies": { 9916 - "duplexify": "^3.6.0", 9917 - "inherits": "^2.0.3", 9918 - "pump": "^2.0.0" 9919 - } 9920 - }, 9921 - "node_modules/pumpify/node_modules/pump": { 9922 - "version": "2.0.1", 9923 - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 9924 - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 9925 - "dev": true, 9926 - "dependencies": { 9927 - "end-of-stream": "^1.1.0", 9928 - "once": "^1.3.1" 9929 - } 9930 + "node_modules/psl": { 9931 + "version": "1.9.0", 9932 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 9933 + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 9934 }, 9935 "node_modules/punycode": { 9936 "version": "2.1.1", 9937 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 9938 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 9939 - "dev": true, 9940 "engines": { 9941 "node": ">=6" 9942 } 9943 }, 9944 + "node_modules/qs": { 9945 + "version": "6.11.0", 9946 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 9947 + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 9948 + "dependencies": { 9949 + "side-channel": "^1.0.4" 9950 + }, 9951 + "engines": { 9952 + "node": ">=0.6" 9953 + }, 9954 + "funding": { 9955 + "url": "https://github.com/sponsors/ljharb" 9956 + } 9957 + }, 9958 "node_modules/queue-microtask": { 9959 "version": "1.2.3", 9960 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 9961 @@ -5850,33 +4254,11 @@ 9962 "url": "https://github.com/sponsors/sindresorhus" 9963 } 9964 }, 9965 - "node_modules/quick-temp": { 9966 - "version": "0.1.8", 9967 - "resolved": "https://registry.npmjs.org/quick-temp/-/quick-temp-0.1.8.tgz", 9968 - "integrity": "sha1-urAqJCq4+w3XWKPJd2sy+aXZRAg=", 9969 - "dev": true, 9970 - "dependencies": { 9971 - "mktemp": "~0.4.0", 9972 - "rimraf": "^2.5.4", 9973 - "underscore.string": "~3.3.4" 9974 - } 9975 - }, 9976 - "node_modules/quick-temp/node_modules/rimraf": { 9977 - "version": "2.7.1", 9978 - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 9979 - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 9980 - "dev": true, 9981 - "dependencies": { 9982 - "glob": "^7.1.3" 9983 - }, 9984 - "bin": { 9985 - "rimraf": "bin.js" 9986 - } 9987 - }, 9988 "node_modules/react": { 9989 - "version": "18.1.0", 9990 - "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", 9991 - "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", 9992 + "version": "18.2.0", 9993 + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 9994 + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 9995 + "peer": true, 9996 "dependencies": { 9997 "loose-envify": "^1.1.0" 9998 }, 9999 @@ -5884,80 +4266,61 @@ 10000 "node": ">=0.10.0" 10001 } 10002 }, 10003 - "node_modules/react-blurhash": { 10004 - "version": "0.1.3", 10005 - "resolved": "https://registry.npmjs.org/react-blurhash/-/react-blurhash-0.1.3.tgz", 10006 - "integrity": "sha512-Q9lqbXg92NU6/2DoIl/cBM8YWL+Z4X66OiG4aT9ozOgjBwx104LHFCH5stf6aF+s0Q9Wf310Ul+dG+VXJltmPg==", 10007 - "peerDependencies": { 10008 - "blurhash": "^1.1.1", 10009 - "react": ">=15" 10010 - } 10011 - }, 10012 "node_modules/react-dom": { 10013 - "version": "18.1.0", 10014 - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", 10015 - "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", 10016 + "version": "18.2.0", 10017 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 10018 + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 10019 + "peer": true, 10020 "dependencies": { 10021 "loose-envify": "^1.1.0", 10022 - "scheduler": "^0.22.0" 10023 + "scheduler": "^0.23.0" 10024 }, 10025 "peerDependencies": { 10026 - "react": "18.1.0" 10027 + "react": "^18.2.0" 10028 } 10029 }, 10030 - "node_modules/react-dropzone": { 10031 - "version": "14.2.1", 10032 - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.1.tgz", 10033 - "integrity": "sha512-jzX6wDtAjlfwZ+Fbg+G17EszWUkQVxhMTWMfAC9qSUq7II2pKglHA8aarbFKl0mLpRPDaNUcy+HD/Sf4gkf76Q==", 10034 + "node_modules/react-plock": { 10035 + "version": "1.2.1", 10036 + "resolved": "https://registry.npmjs.org/react-plock/-/react-plock-1.2.1.tgz", 10037 + "integrity": "sha512-iaDVY5RyHciIExtnPCLVrHuT5FhLCxgpaaF8WxB5aFaYOjjVKXAG1/AqT5NghKBoN0Z3DAM/wbL5FCR6kl9BmA==" 10038 + }, 10039 + "node_modules/react-router": { 10040 + "version": "6.6.1", 10041 + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.1.tgz", 10042 + "integrity": "sha512-YkvlYRusnI/IN0kDtosUCgxqHeulN5je+ew8W+iA1VvFhf86kA+JEI/X/8NqYcr11hCDDp906S+SGMpBheNeYQ==", 10043 "dependencies": { 10044 - "attr-accept": "^2.2.2", 10045 - "file-selector": "^0.6.0", 10046 - "prop-types": "^15.8.1" 10047 + "@remix-run/router": "1.2.1" 10048 }, 10049 "engines": { 10050 - "node": ">= 10.13" 10051 + "node": ">=14" 10052 }, 10053 "peerDependencies": { 10054 - "react": ">= 16.8 || 18.0.0" 10055 + "react": ">=16.8" 10056 } 10057 }, 10058 - "node_modules/react-i18next": { 10059 - "version": "11.16.2", 10060 - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.16.2.tgz", 10061 - "integrity": "sha512-1iuZduvARUelL5ux663FvIoDZExwFO+9QtRAAt4uvs1/aun4cUZt8XBrVg7iiDgNls9cOSORAhE7Ri5KA9RMvg==", 10062 + "node_modules/react-router-dom": { 10063 + "version": "6.6.1", 10064 + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.1.tgz", 10065 + "integrity": "sha512-u+8BKUtelStKbZD5UcY0NY90WOzktrkJJhyhNg7L0APn9t1qJNLowzrM9CHdpB6+rcPt6qQrlkIXsTvhuXP68g==", 10066 "dependencies": { 10067 - "@babel/runtime": "^7.14.5", 10068 - "html-escaper": "^2.0.2", 10069 - "html-parse-stringify": "^3.0.1" 10070 + "@remix-run/router": "1.2.1", 10071 + "react-router": "6.6.1" 10072 }, 10073 - "peerDependencies": { 10074 - "i18next": ">= 19.0.0", 10075 - "react": ">= 16.8.0" 10076 + "engines": { 10077 + "node": ">=14" 10078 }, 10079 - "peerDependenciesMeta": { 10080 - "react-dom": { 10081 - "optional": true 10082 - }, 10083 - "react-native": { 10084 - "optional": true 10085 - } 10086 + "peerDependencies": { 10087 + "react": ">=16.8", 10088 + "react-dom": ">=16.8" 10089 } 10090 }, 10091 - "node_modules/react-is": { 10092 - "version": "16.13.1", 10093 - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 10094 - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 10095 - }, 10096 - "node_modules/react-toastify": { 10097 - "version": "9.0.1", 10098 - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.1.tgz", 10099 - "integrity": "sha512-c2zeZHkCX+WXuItS/JRqQ/8CH8Qm/je+M0rt09xe9fnu5YPJigtNOdD8zX4fwLA093V2am3abkGfOowwpkrwOQ==", 10100 + "node_modules/read-cache": { 10101 + "version": "1.0.0", 10102 + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 10103 + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 10104 + "dev": true, 10105 "dependencies": { 10106 - "clsx": "^1.1.1" 10107 - }, 10108 - "peerDependencies": { 10109 - "react": ">=16", 10110 - "react-dom": ">=16" 10111 + "pify": "^2.3.0" 10112 } 10113 }, 10114 "node_modules/read-pkg": { 10115 @@ -6044,19 +4407,10 @@ 10116 "node": ">=8" 10117 } 10118 }, 10119 - "node_modules/read-pkg-up/node_modules/p-try": { 10120 - "version": "2.2.0", 10121 - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 10122 - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 10123 - "dev": true, 10124 - "engines": { 10125 - "node": ">=6" 10126 - } 10127 - }, 10128 - "node_modules/read-pkg-up/node_modules/path-exists": { 10129 - "version": "4.0.0", 10130 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 10131 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 10132 + "node_modules/read-pkg-up/node_modules/type-fest": { 10133 + "version": "0.8.1", 10134 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 10135 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 10136 "dev": true, 10137 "engines": { 10138 "node": ">=8" 10139 @@ -6096,15 +4450,10 @@ 10140 "node": ">=8.10.0" 10141 } 10142 }, 10143 - "node_modules/reflect-metadata": { 10144 - "version": "0.1.13", 10145 - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", 10146 - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" 10147 - }, 10148 "node_modules/regenerator-runtime": { 10149 - "version": "0.13.9", 10150 - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 10151 - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 10152 + "version": "0.13.11", 10153 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 10154 + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 10155 }, 10156 "node_modules/regexp-tree": { 10157 "version": "0.1.24", 10158 @@ -6115,23 +4464,6 @@ 10159 "regexp-tree": "bin/regexp-tree" 10160 } 10161 }, 10162 - "node_modules/regexp.prototype.flags": { 10163 - "version": "1.4.3", 10164 - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 10165 - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 10166 - "dev": true, 10167 - "dependencies": { 10168 - "call-bind": "^1.0.2", 10169 - "define-properties": "^1.1.3", 10170 - "functions-have-names": "^1.2.2" 10171 - }, 10172 - "engines": { 10173 - "node": ">= 0.4" 10174 - }, 10175 - "funding": { 10176 - "url": "https://github.com/sponsors/ljharb" 10177 - } 10178 - }, 10179 "node_modules/regexpp": { 10180 "version": "3.2.0", 10181 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 10182 @@ -6144,89 +4476,52 @@ 10183 "url": "https://github.com/sponsors/mysticatea" 10184 } 10185 }, 10186 - "node_modules/remove-bom-buffer": { 10187 - "version": "3.0.0", 10188 - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", 10189 - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", 10190 - "dev": true, 10191 - "dependencies": { 10192 - "is-buffer": "^1.1.5", 10193 - "is-utf8": "^0.2.1" 10194 - }, 10195 - "engines": { 10196 - "node": ">=0.10.0" 10197 - } 10198 - }, 10199 - "node_modules/remove-bom-stream": { 10200 - "version": "1.2.0", 10201 - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", 10202 - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", 10203 - "dev": true, 10204 - "dependencies": { 10205 - "remove-bom-buffer": "^3.0.0", 10206 - "safe-buffer": "^5.1.0", 10207 - "through2": "^2.0.3" 10208 + "node_modules/request": { 10209 + "version": "2.88.2", 10210 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 10211 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 10212 + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 10213 + "dependencies": { 10214 + "aws-sign2": "~0.7.0", 10215 + "aws4": "^1.8.0", 10216 + "caseless": "~0.12.0", 10217 + "combined-stream": "~1.0.6", 10218 + "extend": "~3.0.2", 10219 + "forever-agent": "~0.6.1", 10220 + "form-data": "~2.3.2", 10221 + "har-validator": "~5.1.3", 10222 + "http-signature": "~1.2.0", 10223 + "is-typedarray": "~1.0.0", 10224 + "isstream": "~0.1.2", 10225 + "json-stringify-safe": "~5.0.1", 10226 + "mime-types": "~2.1.19", 10227 + "oauth-sign": "~0.9.0", 10228 + "performance-now": "^2.1.0", 10229 + "qs": "~6.5.2", 10230 + "safe-buffer": "^5.1.2", 10231 + "tough-cookie": "~2.5.0", 10232 + "tunnel-agent": "^0.6.0", 10233 + "uuid": "^3.3.2" 10234 }, 10235 "engines": { 10236 - "node": ">= 0.10" 10237 - } 10238 - }, 10239 - "node_modules/remove-bom-stream/node_modules/readable-stream": { 10240 - "version": "2.3.7", 10241 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 10242 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 10243 - "dev": true, 10244 - "dependencies": { 10245 - "core-util-is": "~1.0.0", 10246 - "inherits": "~2.0.3", 10247 - "isarray": "~1.0.0", 10248 - "process-nextick-args": "~2.0.0", 10249 - "safe-buffer": "~5.1.1", 10250 - "string_decoder": "~1.1.1", 10251 - "util-deprecate": "~1.0.1" 10252 - } 10253 - }, 10254 - "node_modules/remove-bom-stream/node_modules/string_decoder": { 10255 - "version": "1.1.1", 10256 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 10257 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 10258 - "dev": true, 10259 - "dependencies": { 10260 - "safe-buffer": "~5.1.0" 10261 - } 10262 - }, 10263 - "node_modules/remove-bom-stream/node_modules/through2": { 10264 - "version": "2.0.5", 10265 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 10266 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 10267 - "dev": true, 10268 - "dependencies": { 10269 - "readable-stream": "~2.3.6", 10270 - "xtend": "~4.0.1" 10271 + "node": ">= 6" 10272 } 10273 }, 10274 - "node_modules/remove-trailing-separator": { 10275 - "version": "1.1.0", 10276 - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 10277 - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 10278 - "dev": true 10279 - }, 10280 - "node_modules/replace-ext": { 10281 - "version": "1.0.1", 10282 - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", 10283 - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", 10284 - "dev": true, 10285 + "node_modules/request/node_modules/qs": { 10286 + "version": "6.5.3", 10287 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 10288 + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 10289 "engines": { 10290 - "node": ">= 0.10" 10291 + "node": ">=0.6" 10292 } 10293 }, 10294 "node_modules/resolve": { 10295 - "version": "1.22.0", 10296 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 10297 - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 10298 + "version": "1.22.1", 10299 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 10300 + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 10301 "dev": true, 10302 "dependencies": { 10303 - "is-core-module": "^2.8.1", 10304 + "is-core-module": "^2.9.0", 10305 "path-parse": "^1.0.7", 10306 "supports-preserve-symlinks-flag": "^1.0.0" 10307 }, 10308 @@ -6246,32 +4541,26 @@ 10309 "node": ">=4" 10310 } 10311 }, 10312 - "node_modules/resolve-options": { 10313 - "version": "1.1.0", 10314 - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", 10315 - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", 10316 - "dev": true, 10317 + "node_modules/restore-cursor": { 10318 + "version": "3.1.0", 10319 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 10320 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 10321 "dependencies": { 10322 - "value-or-function": "^3.0.0" 10323 + "onetime": "^5.1.0", 10324 + "signal-exit": "^3.0.2" 10325 }, 10326 "engines": { 10327 - "node": ">= 0.10" 10328 + "node": ">=8" 10329 } 10330 }, 10331 "node_modules/retry": { 10332 - "version": "0.12.0", 10333 - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 10334 - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", 10335 - "optional": true, 10336 + "version": "0.13.1", 10337 + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", 10338 + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", 10339 "engines": { 10340 "node": ">= 4" 10341 } 10342 }, 10343 - "node_modules/retry-as-promised": { 10344 - "version": "5.0.0", 10345 - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", 10346 - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" 10347 - }, 10348 "node_modules/reusify": { 10349 "version": "1.0.4", 10350 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 10351 @@ -6286,6 +4575,7 @@ 10352 "version": "3.0.2", 10353 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 10354 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 10355 + "dev": true, 10356 "dependencies": { 10357 "glob": "^7.1.3" 10358 }, 10359 @@ -6296,13 +4586,27 @@ 10360 "url": "https://github.com/sponsors/isaacs" 10361 } 10362 }, 10363 - "node_modules/rsvp": { 10364 - "version": "4.8.5", 10365 - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", 10366 - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", 10367 + "node_modules/rollup": { 10368 + "version": "2.77.3", 10369 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 10370 + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 10371 "dev": true, 10372 + "bin": { 10373 + "rollup": "dist/bin/rollup" 10374 + }, 10375 + "engines": { 10376 + "node": ">=10.0.0" 10377 + }, 10378 + "optionalDependencies": { 10379 + "fsevents": "~2.3.2" 10380 + } 10381 + }, 10382 + "node_modules/run-async": { 10383 + "version": "2.4.1", 10384 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 10385 + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 10386 "engines": { 10387 - "node": "6.* || >= 7.*" 10388 + "node": ">=0.12.0" 10389 } 10390 }, 10391 "node_modules/run-parallel": { 10392 @@ -6328,150 +4632,65 @@ 10393 "queue-microtask": "^1.2.2" 10394 } 10395 }, 10396 - "node_modules/safe-buffer": { 10397 - "version": "5.1.2", 10398 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 10399 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 10400 - "dev": true 10401 - }, 10402 - "node_modules/safe-regex": { 10403 - "version": "2.1.1", 10404 - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", 10405 - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", 10406 - "dev": true, 10407 - "dependencies": { 10408 - "regexp-tree": "~0.1.1" 10409 - } 10410 - }, 10411 - "node_modules/safer-buffer": { 10412 - "version": "2.1.2", 10413 - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 10414 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 10415 - "optional": true 10416 - }, 10417 - "node_modules/sax": { 10418 - "version": "1.2.4", 10419 - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 10420 - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 10421 - }, 10422 - "node_modules/scheduler": { 10423 - "version": "0.22.0", 10424 - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", 10425 - "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", 10426 - "dependencies": { 10427 - "loose-envify": "^1.1.0" 10428 - } 10429 - }, 10430 - "node_modules/semver": { 10431 - "version": "6.3.0", 10432 - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 10433 - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 10434 - "bin": { 10435 - "semver": "bin/semver.js" 10436 - } 10437 - }, 10438 - "node_modules/sequelize": { 10439 - "version": "6.20.0", 10440 - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.20.0.tgz", 10441 - "integrity": "sha512-45B+k4eKP0D+x1F08dSYnZjlKGvlxM/FCVTWQ6TLVaGCyRv/TmvTRSZ4bTNB5pMgQOMkJUlztg5zSvMmkzaWCA==", 10442 - "funding": [ 10443 - { 10444 - "type": "opencollective", 10445 - "url": "https://opencollective.com/sequelize" 10446 - } 10447 - ], 10448 + "node_modules/rxjs": { 10449 + "version": "7.8.0", 10450 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", 10451 + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", 10452 "dependencies": { 10453 - "@types/debug": "^4.1.7", 10454 - "@types/validator": "^13.7.1", 10455 - "debug": "^4.3.3", 10456 - "dottie": "^2.0.2", 10457 - "inflection": "^1.13.2", 10458 - "lodash": "^4.17.21", 10459 - "moment": "^2.29.1", 10460 - "moment-timezone": "^0.5.34", 10461 - "pg-connection-string": "^2.5.0", 10462 - "retry-as-promised": "^5.0.0", 10463 - "semver": "^7.3.5", 10464 - "sequelize-pool": "^7.1.0", 10465 - "toposort-class": "^1.0.1", 10466 - "uuid": "^8.3.2", 10467 - "validator": "^13.7.0", 10468 - "wkx": "^0.5.0" 10469 - }, 10470 - "engines": { 10471 - "node": ">=10.0.0" 10472 - }, 10473 - "peerDependenciesMeta": { 10474 - "ibm_db": { 10475 - "optional": true 10476 - }, 10477 - "mariadb": { 10478 - "optional": true 10479 - }, 10480 - "mysql2": { 10481 - "optional": true 10482 - }, 10483 - "pg": { 10484 - "optional": true 10485 - }, 10486 - "pg-hstore": { 10487 - "optional": true 10488 - }, 10489 - "snowflake-sdk": { 10490 - "optional": true 10491 + "tslib": "^2.1.0" 10492 + } 10493 + }, 10494 + "node_modules/safe-buffer": { 10495 + "version": "5.2.1", 10496 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 10497 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 10498 + "funding": [ 10499 + { 10500 + "type": "github", 10501 + "url": "https://github.com/sponsors/feross" 10502 }, 10503 - "sqlite3": { 10504 - "optional": true 10505 + { 10506 + "type": "patreon", 10507 + "url": "https://www.patreon.com/feross" 10508 }, 10509 - "tedious": { 10510 - "optional": true 10511 + { 10512 + "type": "consulting", 10513 + "url": "https://feross.org/support" 10514 } 10515 - } 10516 + ] 10517 }, 10518 - "node_modules/sequelize-pool": { 10519 - "version": "7.1.0", 10520 - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", 10521 - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", 10522 - "engines": { 10523 - "node": ">= 10.0.0" 10524 + "node_modules/safe-regex": { 10525 + "version": "2.1.1", 10526 + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", 10527 + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", 10528 + "dev": true, 10529 + "dependencies": { 10530 + "regexp-tree": "~0.1.1" 10531 } 10532 }, 10533 - "node_modules/sequelize-typescript": { 10534 - "version": "2.1.3", 10535 - "resolved": "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.3.tgz", 10536 - "integrity": "sha512-0mejGAaLywuCoOOLSXCQs2sMBNudU/QtWZkGY5VT2dfTHToXZi5bOxCa3/CukNNk7wJwXnLuIdeHdlqjvVoj1g==", 10537 + "node_modules/safer-buffer": { 10538 + "version": "2.1.2", 10539 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 10540 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 10541 + }, 10542 + "node_modules/scheduler": { 10543 + "version": "0.23.0", 10544 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 10545 + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 10546 + "peer": true, 10547 "dependencies": { 10548 - "glob": "7.2.0" 10549 - }, 10550 - "engines": { 10551 - "node": ">=10.0.0" 10552 - }, 10553 - "peerDependencies": { 10554 - "@types/node": "*", 10555 - "@types/validator": "*", 10556 - "reflect-metadata": "*", 10557 - "sequelize": ">=6.8.0" 10558 + "loose-envify": "^1.1.0" 10559 } 10560 }, 10561 - "node_modules/sequelize/node_modules/semver": { 10562 - "version": "7.3.5", 10563 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 10564 - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 10565 - "dependencies": { 10566 - "lru-cache": "^6.0.0" 10567 - }, 10568 + "node_modules/semver": { 10569 + "version": "6.3.0", 10570 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 10571 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 10572 + "dev": true, 10573 "bin": { 10574 "semver": "bin/semver.js" 10575 - }, 10576 - "engines": { 10577 - "node": ">=10" 10578 } 10579 }, 10580 - "node_modules/set-blocking": { 10581 - "version": "2.0.0", 10582 - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 10583 - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 10584 - }, 10585 "node_modules/shebang-command": { 10586 "version": "2.0.0", 10587 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 10588 @@ -6497,7 +4716,6 @@ 10589 "version": "1.0.4", 10590 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 10591 "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 10592 - "dev": true, 10593 "dependencies": { 10594 "call-bind": "^1.0.0", 10595 "get-intrinsic": "^1.0.2", 10596 @@ -6521,72 +4739,11 @@ 10597 "node": ">=8" 10598 } 10599 }, 10600 - "node_modules/smart-buffer": { 10601 - "version": "4.2.0", 10602 - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 10603 - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 10604 - "optional": true, 10605 - "engines": { 10606 - "node": ">= 6.0.0", 10607 - "npm": ">= 3.0.0" 10608 - } 10609 - }, 10610 - "node_modules/socks": { 10611 - "version": "2.6.2", 10612 - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", 10613 - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", 10614 - "optional": true, 10615 - "dependencies": { 10616 - "ip": "^1.1.5", 10617 - "smart-buffer": "^4.2.0" 10618 - }, 10619 - "engines": { 10620 - "node": ">= 10.13.0", 10621 - "npm": ">= 3.0.0" 10622 - } 10623 - }, 10624 - "node_modules/socks-proxy-agent": { 10625 - "version": "6.1.1", 10626 - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", 10627 - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", 10628 - "optional": true, 10629 - "dependencies": { 10630 - "agent-base": "^6.0.2", 10631 - "debug": "^4.3.1", 10632 - "socks": "^2.6.1" 10633 - }, 10634 - "engines": { 10635 - "node": ">= 10" 10636 - } 10637 - }, 10638 - "node_modules/sort-keys": { 10639 - "version": "5.0.0", 10640 - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", 10641 - "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==", 10642 - "dev": true, 10643 - "dependencies": { 10644 - "is-plain-obj": "^4.0.0" 10645 - }, 10646 - "engines": { 10647 - "node": ">=12" 10648 - }, 10649 - "funding": { 10650 - "url": "https://github.com/sponsors/sindresorhus" 10651 - } 10652 - }, 10653 - "node_modules/source-map": { 10654 - "version": "0.5.7", 10655 - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 10656 - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 10657 - "dev": true, 10658 - "engines": { 10659 - "node": ">=0.10.0" 10660 - } 10661 - }, 10662 "node_modules/source-map-js": { 10663 "version": "1.0.2", 10664 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 10665 "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 10666 + "dev": true, 10667 "engines": { 10668 "node": ">=0.10.0" 10669 } 10670 @@ -6618,57 +4775,35 @@ 10671 } 10672 }, 10673 "node_modules/spdx-license-ids": { 10674 - "version": "3.0.11", 10675 - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", 10676 - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", 10677 - "dev": true 10678 - }, 10679 - "node_modules/sprintf-js": { 10680 - "version": "1.1.2", 10681 - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 10682 - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 10683 - "dev": true 10684 - }, 10685 - "node_modules/sqlite3": { 10686 - "version": "5.0.8", 10687 - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", 10688 - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", 10689 - "hasInstallScript": true, 10690 - "dependencies": { 10691 - "@mapbox/node-pre-gyp": "^1.0.0", 10692 - "node-addon-api": "^4.2.0", 10693 - "tar": "^6.1.11" 10694 - }, 10695 - "optionalDependencies": { 10696 - "node-gyp": "8.x" 10697 - }, 10698 - "peerDependencies": { 10699 - "node-gyp": "8.x" 10700 + "version": "3.0.12", 10701 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", 10702 + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", 10703 + "dev": true 10704 + }, 10705 + "node_modules/sshpk": { 10706 + "version": "1.17.0", 10707 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 10708 + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 10709 + "dependencies": { 10710 + "asn1": "~0.2.3", 10711 + "assert-plus": "^1.0.0", 10712 + "bcrypt-pbkdf": "^1.0.0", 10713 + "dashdash": "^1.12.0", 10714 + "ecc-jsbn": "~0.1.1", 10715 + "getpass": "^0.1.1", 10716 + "jsbn": "~0.1.0", 10717 + "safer-buffer": "^2.0.2", 10718 + "tweetnacl": "~0.14.0" 10719 }, 10720 - "peerDependenciesMeta": { 10721 - "node-gyp": { 10722 - "optional": true 10723 - } 10724 - } 10725 - }, 10726 - "node_modules/ssri": { 10727 - "version": "8.0.1", 10728 - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", 10729 - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", 10730 - "optional": true, 10731 - "dependencies": { 10732 - "minipass": "^3.1.1" 10733 + "bin": { 10734 + "sshpk-conv": "bin/sshpk-conv", 10735 + "sshpk-sign": "bin/sshpk-sign", 10736 + "sshpk-verify": "bin/sshpk-verify" 10737 }, 10738 "engines": { 10739 - "node": ">= 8" 10740 + "node": ">=0.10.0" 10741 } 10742 }, 10743 - "node_modules/stream-shift": { 10744 - "version": "1.0.1", 10745 - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 10746 - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", 10747 - "dev": true 10748 - }, 10749 "node_modules/string_decoder": { 10750 "version": "1.3.0", 10751 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 10752 @@ -6677,25 +4812,6 @@ 10753 "safe-buffer": "~5.2.0" 10754 } 10755 }, 10756 - "node_modules/string_decoder/node_modules/safe-buffer": { 10757 - "version": "5.2.1", 10758 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 10759 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 10760 - "funding": [ 10761 - { 10762 - "type": "github", 10763 - "url": "https://github.com/sponsors/feross" 10764 - }, 10765 - { 10766 - "type": "patreon", 10767 - "url": "https://www.patreon.com/feross" 10768 - }, 10769 - { 10770 - "type": "consulting", 10771 - "url": "https://feross.org/support" 10772 - } 10773 - ] 10774 - }, 10775 "node_modules/string-width": { 10776 "version": "4.2.3", 10777 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 10778 @@ -6709,56 +4825,6 @@ 10779 "node": ">=8" 10780 } 10781 }, 10782 - "node_modules/string-width/node_modules/emoji-regex": { 10783 - "version": "8.0.0", 10784 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 10785 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 10786 - }, 10787 - "node_modules/string.prototype.matchall": { 10788 - "version": "4.0.7", 10789 - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", 10790 - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", 10791 - "dev": true, 10792 - "dependencies": { 10793 - "call-bind": "^1.0.2", 10794 - "define-properties": "^1.1.3", 10795 - "es-abstract": "^1.19.1", 10796 - "get-intrinsic": "^1.1.1", 10797 - "has-symbols": "^1.0.3", 10798 - "internal-slot": "^1.0.3", 10799 - "regexp.prototype.flags": "^1.4.1", 10800 - "side-channel": "^1.0.4" 10801 - }, 10802 - "funding": { 10803 - "url": "https://github.com/sponsors/ljharb" 10804 - } 10805 - }, 10806 - "node_modules/string.prototype.trimend": { 10807 - "version": "1.0.4", 10808 - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 10809 - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 10810 - "dev": true, 10811 - "dependencies": { 10812 - "call-bind": "^1.0.2", 10813 - "define-properties": "^1.1.3" 10814 - }, 10815 - "funding": { 10816 - "url": "https://github.com/sponsors/ljharb" 10817 - } 10818 - }, 10819 - "node_modules/string.prototype.trimstart": { 10820 - "version": "1.0.4", 10821 - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 10822 - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 10823 - "dev": true, 10824 - "dependencies": { 10825 - "call-bind": "^1.0.2", 10826 - "define-properties": "^1.1.3" 10827 - }, 10828 - "funding": { 10829 - "url": "https://github.com/sponsors/ljharb" 10830 - } 10831 - }, 10832 "node_modules/strip-ansi": { 10833 "version": "6.0.1", 10834 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 10835 @@ -6770,15 +4836,6 @@ 10836 "node": ">=8" 10837 } 10838 }, 10839 - "node_modules/strip-bom": { 10840 - "version": "3.0.0", 10841 - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 10842 - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 10843 - "dev": true, 10844 - "engines": { 10845 - "node": ">=4" 10846 - } 10847 - }, 10848 "node_modules/strip-indent": { 10849 "version": "3.0.0", 10850 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 10851 @@ -6803,25 +4860,6 @@ 10852 "url": "https://github.com/sponsors/sindresorhus" 10853 } 10854 }, 10855 - "node_modules/styled-jsx": { 10856 - "version": "5.0.2", 10857 - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", 10858 - "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", 10859 - "engines": { 10860 - "node": ">= 12.0.0" 10861 - }, 10862 - "peerDependencies": { 10863 - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 10864 - }, 10865 - "peerDependenciesMeta": { 10866 - "@babel/core": { 10867 - "optional": true 10868 - }, 10869 - "babel-plugin-macros": { 10870 - "optional": true 10871 - } 10872 - } 10873 - }, 10874 "node_modules/supports-color": { 10875 "version": "5.5.0", 10876 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 10877 @@ -6846,39 +4884,35 @@ 10878 "url": "https://github.com/sponsors/ljharb" 10879 } 10880 }, 10881 - "node_modules/symlink-or-copy": { 10882 - "version": "1.3.1", 10883 - "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz", 10884 - "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==", 10885 - "dev": true 10886 - }, 10887 "node_modules/tailwindcss": { 10888 - "version": "3.0.24", 10889 - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", 10890 - "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", 10891 + "version": "3.2.4", 10892 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz", 10893 + "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==", 10894 "dev": true, 10895 "dependencies": { 10896 - "arg": "^5.0.1", 10897 + "arg": "^5.0.2", 10898 "chokidar": "^3.5.3", 10899 "color-name": "^1.1.4", 10900 - "detective": "^5.2.0", 10901 + "detective": "^5.2.1", 10902 "didyoumean": "^1.2.2", 10903 "dlv": "^1.1.3", 10904 - "fast-glob": "^3.2.11", 10905 + "fast-glob": "^3.2.12", 10906 "glob-parent": "^6.0.2", 10907 "is-glob": "^4.0.3", 10908 - "lilconfig": "^2.0.5", 10909 + "lilconfig": "^2.0.6", 10910 + "micromatch": "^4.0.5", 10911 "normalize-path": "^3.0.0", 10912 "object-hash": "^3.0.0", 10913 "picocolors": "^1.0.0", 10914 - "postcss": "^8.4.12", 10915 + "postcss": "^8.4.18", 10916 + "postcss-import": "^14.1.0", 10917 "postcss-js": "^4.0.0", 10918 "postcss-load-config": "^3.1.4", 10919 - "postcss-nested": "5.0.6", 10920 + "postcss-nested": "6.0.0", 10921 "postcss-selector-parser": "^6.0.10", 10922 "postcss-value-parser": "^4.2.0", 10923 "quick-lru": "^5.1.1", 10924 - "resolve": "^1.22.0" 10925 + "resolve": "^1.22.1" 10926 }, 10927 "bin": { 10928 "tailwind": "lib/cli.js", 10929 @@ -6897,98 +4931,32 @@ 10930 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 10931 "dev": true 10932 }, 10933 - "node_modules/tar": { 10934 - "version": "6.1.11", 10935 - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 10936 - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 10937 - "dependencies": { 10938 - "chownr": "^2.0.0", 10939 - "fs-minipass": "^2.0.0", 10940 - "minipass": "^3.0.0", 10941 - "minizlib": "^2.1.1", 10942 - "mkdirp": "^1.0.3", 10943 - "yallist": "^4.0.0" 10944 - }, 10945 - "engines": { 10946 - "node": ">= 10" 10947 - } 10948 - }, 10949 "node_modules/text-table": { 10950 "version": "0.2.0", 10951 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 10952 - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 10953 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 10954 "dev": true 10955 }, 10956 - "node_modules/through2": { 10957 - "version": "4.0.2", 10958 - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", 10959 - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", 10960 - "dev": true, 10961 - "dependencies": { 10962 - "readable-stream": "3" 10963 - } 10964 - }, 10965 - "node_modules/through2-filter": { 10966 - "version": "3.0.0", 10967 - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", 10968 - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", 10969 - "dev": true, 10970 - "dependencies": { 10971 - "through2": "~2.0.0", 10972 - "xtend": "~4.0.0" 10973 - } 10974 - }, 10975 - "node_modules/through2-filter/node_modules/readable-stream": { 10976 - "version": "2.3.7", 10977 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 10978 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 10979 - "dev": true, 10980 - "dependencies": { 10981 - "core-util-is": "~1.0.0", 10982 - "inherits": "~2.0.3", 10983 - "isarray": "~1.0.0", 10984 - "process-nextick-args": "~2.0.0", 10985 - "safe-buffer": "~5.1.1", 10986 - "string_decoder": "~1.1.1", 10987 - "util-deprecate": "~1.0.1" 10988 - } 10989 - }, 10990 - "node_modules/through2-filter/node_modules/string_decoder": { 10991 - "version": "1.1.1", 10992 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 10993 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 10994 - "dev": true, 10995 - "dependencies": { 10996 - "safe-buffer": "~5.1.0" 10997 - } 10998 - }, 10999 - "node_modules/through2-filter/node_modules/through2": { 11000 - "version": "2.0.5", 11001 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 11002 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 11003 - "dev": true, 11004 - "dependencies": { 11005 - "readable-stream": "~2.3.6", 11006 - "xtend": "~4.0.1" 11007 - } 11008 + "node_modules/through": { 11009 + "version": "2.3.8", 11010 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 11011 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 11012 }, 11013 - "node_modules/to-absolute-glob": { 11014 - "version": "2.0.2", 11015 - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 11016 - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", 11017 - "dev": true, 11018 + "node_modules/tmp": { 11019 + "version": "0.0.33", 11020 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 11021 + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 11022 "dependencies": { 11023 - "is-absolute": "^1.0.0", 11024 - "is-negated-glob": "^1.0.0" 11025 + "os-tmpdir": "~1.0.2" 11026 }, 11027 "engines": { 11028 - "node": ">=0.10.0" 11029 + "node": ">=0.6.0" 11030 } 11031 }, 11032 "node_modules/to-fast-properties": { 11033 "version": "2.0.0", 11034 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 11035 - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 11036 + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 11037 "dev": true, 11038 "engines": { 11039 "node": ">=4" 11040 @@ -7006,90 +4974,22 @@ 11041 "node": ">=8.0" 11042 } 11043 }, 11044 - "node_modules/to-through": { 11045 - "version": "2.0.0", 11046 - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", 11047 - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", 11048 - "dev": true, 11049 + "node_modules/tough-cookie": { 11050 + "version": "2.5.0", 11051 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 11052 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 11053 "dependencies": { 11054 - "through2": "^2.0.3" 11055 + "psl": "^1.1.28", 11056 + "punycode": "^2.1.1" 11057 }, 11058 "engines": { 11059 - "node": ">= 0.10" 11060 - } 11061 - }, 11062 - "node_modules/to-through/node_modules/readable-stream": { 11063 - "version": "2.3.7", 11064 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 11065 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 11066 - "dev": true, 11067 - "dependencies": { 11068 - "core-util-is": "~1.0.0", 11069 - "inherits": "~2.0.3", 11070 - "isarray": "~1.0.0", 11071 - "process-nextick-args": "~2.0.0", 11072 - "safe-buffer": "~5.1.1", 11073 - "string_decoder": "~1.1.1", 11074 - "util-deprecate": "~1.0.1" 11075 - } 11076 - }, 11077 - "node_modules/to-through/node_modules/string_decoder": { 11078 - "version": "1.1.1", 11079 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 11080 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 11081 - "dev": true, 11082 - "dependencies": { 11083 - "safe-buffer": "~5.1.0" 11084 - } 11085 - }, 11086 - "node_modules/to-through/node_modules/through2": { 11087 - "version": "2.0.5", 11088 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 11089 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 11090 - "dev": true, 11091 - "dependencies": { 11092 - "readable-stream": "~2.3.6", 11093 - "xtend": "~4.0.1" 11094 - } 11095 - }, 11096 - "node_modules/toposort-class": { 11097 - "version": "1.0.1", 11098 - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", 11099 - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" 11100 - }, 11101 - "node_modules/tr46": { 11102 - "version": "0.0.3", 11103 - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 11104 - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 11105 - }, 11106 - "node_modules/tsconfig-paths": { 11107 - "version": "3.14.1", 11108 - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 11109 - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 11110 - "dev": true, 11111 - "dependencies": { 11112 - "@types/json5": "^0.0.29", 11113 - "json5": "^1.0.1", 11114 - "minimist": "^1.2.6", 11115 - "strip-bom": "^3.0.0" 11116 - } 11117 - }, 11118 - "node_modules/tsconfig-paths/node_modules/json5": { 11119 - "version": "1.0.1", 11120 - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 11121 - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 11122 - "dev": true, 11123 - "dependencies": { 11124 - "minimist": "^1.2.0" 11125 - }, 11126 - "bin": { 11127 - "json5": "lib/cli.js" 11128 + "node": ">=0.8" 11129 } 11130 }, 11131 "node_modules/tslib": { 11132 - "version": "2.4.0", 11133 - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 11134 - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 11135 + "version": "2.4.1", 11136 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 11137 + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" 11138 }, 11139 "node_modules/tsutils": { 11140 "version": "3.21.0", 11141 @@ -7112,6 +5012,22 @@ 11142 "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 11143 "dev": true 11144 }, 11145 + "node_modules/tunnel-agent": { 11146 + "version": "0.6.0", 11147 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 11148 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 11149 + "dependencies": { 11150 + "safe-buffer": "^5.0.1" 11151 + }, 11152 + "engines": { 11153 + "node": "*" 11154 + } 11155 + }, 11156 + "node_modules/tweetnacl": { 11157 + "version": "0.14.5", 11158 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 11159 + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" 11160 + }, 11161 "node_modules/type-check": { 11162 "version": "0.4.0", 11163 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 11164 @@ -7125,24 +5041,20 @@ 11165 } 11166 }, 11167 "node_modules/type-fest": { 11168 - "version": "0.8.1", 11169 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 11170 - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 11171 - "dev": true, 11172 + "version": "0.21.3", 11173 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 11174 + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 11175 "engines": { 11176 - "node": ">=8" 11177 + "node": ">=10" 11178 + }, 11179 + "funding": { 11180 + "url": "https://github.com/sponsors/sindresorhus" 11181 } 11182 }, 11183 - "node_modules/typedarray": { 11184 - "version": "0.0.6", 11185 - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 11186 - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 11187 - "dev": true 11188 - }, 11189 "node_modules/typescript": { 11190 - "version": "4.7.2", 11191 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", 11192 - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", 11193 + "version": "4.9.4", 11194 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 11195 + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 11196 "dev": true, 11197 "bin": { 11198 "tsc": "bin/tsc", 11199 @@ -7152,85 +5064,41 @@ 11200 "node": ">=4.2.0" 11201 } 11202 }, 11203 - "node_modules/unbox-primitive": { 11204 - "version": "1.0.1", 11205 - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 11206 - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 11207 - "dev": true, 11208 - "dependencies": { 11209 - "function-bind": "^1.1.1", 11210 - "has-bigints": "^1.0.1", 11211 - "has-symbols": "^1.0.2", 11212 - "which-boxed-primitive": "^1.0.2" 11213 - }, 11214 - "funding": { 11215 - "url": "https://github.com/sponsors/ljharb" 11216 - } 11217 - }, 11218 - "node_modules/unc-path-regex": { 11219 - "version": "0.1.2", 11220 - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 11221 - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 11222 - "dev": true, 11223 - "engines": { 11224 - "node": ">=0.10.0" 11225 - } 11226 + "node_modules/unhomoglyph": { 11227 + "version": "1.0.6", 11228 + "resolved": "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.6.tgz", 11229 + "integrity": "sha512-7uvcWI3hWshSADBu4JpnyYbTVc7YlhF5GDW/oPD5AxIxl34k4wXR3WDkPnzLxkN32LiTCTKMQLtKVZiwki3zGg==" 11230 }, 11231 - "node_modules/underscore.string": { 11232 - "version": "3.3.6", 11233 - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", 11234 - "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", 11235 + "node_modules/update-browserslist-db": { 11236 + "version": "1.0.10", 11237 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 11238 + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 11239 "dev": true, 11240 + "funding": [ 11241 + { 11242 + "type": "opencollective", 11243 + "url": "https://opencollective.com/browserslist" 11244 + }, 11245 + { 11246 + "type": "tidelift", 11247 + "url": "https://tidelift.com/funding/github/npm/browserslist" 11248 + } 11249 + ], 11250 "dependencies": { 11251 - "sprintf-js": "^1.1.1", 11252 - "util-deprecate": "^1.0.2" 11253 + "escalade": "^3.1.1", 11254 + "picocolors": "^1.0.0" 11255 }, 11256 - "engines": { 11257 - "node": "*" 11258 - } 11259 - }, 11260 - "node_modules/unique-filename": { 11261 - "version": "1.1.1", 11262 - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 11263 - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 11264 - "optional": true, 11265 - "dependencies": { 11266 - "unique-slug": "^2.0.0" 11267 - } 11268 - }, 11269 - "node_modules/unique-slug": { 11270 - "version": "2.0.2", 11271 - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 11272 - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 11273 - "optional": true, 11274 - "dependencies": { 11275 - "imurmurhash": "^0.1.4" 11276 - } 11277 - }, 11278 - "node_modules/unique-stream": { 11279 - "version": "2.3.1", 11280 - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", 11281 - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", 11282 - "dev": true, 11283 - "dependencies": { 11284 - "json-stable-stringify-without-jsonify": "^1.0.1", 11285 - "through2-filter": "^3.0.0" 11286 - } 11287 - }, 11288 - "node_modules/universalify": { 11289 - "version": "2.0.0", 11290 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 11291 - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 11292 - "dev": true, 11293 - "engines": { 11294 - "node": ">= 10.0.0" 11295 + "bin": { 11296 + "browserslist-lint": "cli.js" 11297 + }, 11298 + "peerDependencies": { 11299 + "browserslist": ">= 4.21.0" 11300 } 11301 }, 11302 "node_modules/uri-js": { 11303 "version": "4.4.1", 11304 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 11305 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 11306 - "dev": true, 11307 "dependencies": { 11308 "punycode": "^2.1.0" 11309 } 11310 @@ -7238,22 +5106,17 @@ 11311 "node_modules/util-deprecate": { 11312 "version": "1.0.2", 11313 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 11314 - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 11315 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 11316 }, 11317 "node_modules/uuid": { 11318 - "version": "8.3.2", 11319 - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 11320 - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 11321 + "version": "3.4.0", 11322 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 11323 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 11324 + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 11325 "bin": { 11326 - "uuid": "dist/bin/uuid" 11327 + "uuid": "bin/uuid" 11328 } 11329 }, 11330 - "node_modules/v8-compile-cache": { 11331 - "version": "2.3.0", 11332 - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 11333 - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 11334 - "dev": true 11335 - }, 11336 "node_modules/validate-npm-package-license": { 11337 "version": "3.0.4", 11338 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 11339 @@ -7264,192 +5127,69 @@ 11340 "spdx-expression-parse": "^3.0.0" 11341 } 11342 }, 11343 - "node_modules/validator": { 11344 - "version": "13.7.0", 11345 - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", 11346 - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", 11347 - "engines": { 11348 - "node": ">= 0.10" 11349 - } 11350 - }, 11351 - "node_modules/value-or-function": { 11352 - "version": "3.0.0", 11353 - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", 11354 - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", 11355 - "dev": true, 11356 - "engines": { 11357 - "node": ">= 0.10" 11358 - } 11359 - }, 11360 - "node_modules/vary": { 11361 - "version": "1.1.2", 11362 - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 11363 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 11364 - "engines": { 11365 - "node": ">= 0.8" 11366 - } 11367 - }, 11368 - "node_modules/vinyl": { 11369 - "version": "2.2.1", 11370 - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", 11371 - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", 11372 - "dev": true, 11373 + "node_modules/verror": { 11374 + "version": "1.10.0", 11375 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 11376 + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 11377 + "engines": [ 11378 + "node >=0.6.0" 11379 + ], 11380 "dependencies": { 11381 - "clone": "^2.1.1", 11382 - "clone-buffer": "^1.0.0", 11383 - "clone-stats": "^1.0.0", 11384 - "cloneable-readable": "^1.0.0", 11385 - "remove-trailing-separator": "^1.0.1", 11386 - "replace-ext": "^1.0.0" 11387 - }, 11388 - "engines": { 11389 - "node": ">= 0.10" 11390 + "assert-plus": "^1.0.0", 11391 + "core-util-is": "1.0.2", 11392 + "extsprintf": "^1.2.0" 11393 } 11394 }, 11395 - "node_modules/vinyl-fs": { 11396 - "version": "3.0.3", 11397 - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", 11398 - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", 11399 + "node_modules/vite": { 11400 + "version": "2.9.15", 11401 + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", 11402 + "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", 11403 "dev": true, 11404 "dependencies": { 11405 - "fs-mkdirp-stream": "^1.0.0", 11406 - "glob-stream": "^6.1.0", 11407 - "graceful-fs": "^4.0.0", 11408 - "is-valid-glob": "^1.0.0", 11409 - "lazystream": "^1.0.0", 11410 - "lead": "^1.0.0", 11411 - "object.assign": "^4.0.4", 11412 - "pumpify": "^1.3.5", 11413 - "readable-stream": "^2.3.3", 11414 - "remove-bom-buffer": "^3.0.0", 11415 - "remove-bom-stream": "^1.2.0", 11416 - "resolve-options": "^1.1.0", 11417 - "through2": "^2.0.0", 11418 - "to-through": "^2.0.0", 11419 - "value-or-function": "^3.0.0", 11420 - "vinyl": "^2.0.0", 11421 - "vinyl-sourcemap": "^1.1.0" 11422 + "esbuild": "^0.14.27", 11423 + "postcss": "^8.4.13", 11424 + "resolve": "^1.22.0", 11425 + "rollup": ">=2.59.0 <2.78.0" 11426 }, 11427 - "engines": { 11428 - "node": ">= 0.10" 11429 - } 11430 - }, 11431 - "node_modules/vinyl-fs/node_modules/readable-stream": { 11432 - "version": "2.3.7", 11433 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 11434 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 11435 - "dev": true, 11436 - "dependencies": { 11437 - "core-util-is": "~1.0.0", 11438 - "inherits": "~2.0.3", 11439 - "isarray": "~1.0.0", 11440 - "process-nextick-args": "~2.0.0", 11441 - "safe-buffer": "~5.1.1", 11442 - "string_decoder": "~1.1.1", 11443 - "util-deprecate": "~1.0.1" 11444 - } 11445 - }, 11446 - "node_modules/vinyl-fs/node_modules/string_decoder": { 11447 - "version": "1.1.1", 11448 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 11449 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 11450 - "dev": true, 11451 - "dependencies": { 11452 - "safe-buffer": "~5.1.0" 11453 - } 11454 - }, 11455 - "node_modules/vinyl-fs/node_modules/through2": { 11456 - "version": "2.0.5", 11457 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 11458 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 11459 - "dev": true, 11460 - "dependencies": { 11461 - "readable-stream": "~2.3.6", 11462 - "xtend": "~4.0.1" 11463 - } 11464 - }, 11465 - "node_modules/vinyl-sourcemap": { 11466 - "version": "1.1.0", 11467 - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", 11468 - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", 11469 - "dev": true, 11470 - "dependencies": { 11471 - "append-buffer": "^1.0.2", 11472 - "convert-source-map": "^1.5.0", 11473 - "graceful-fs": "^4.1.6", 11474 - "normalize-path": "^2.1.1", 11475 - "now-and-later": "^2.0.0", 11476 - "remove-bom-buffer": "^3.0.0", 11477 - "vinyl": "^2.0.0" 11478 + "bin": { 11479 + "vite": "bin/vite.js" 11480 }, 11481 "engines": { 11482 - "node": ">= 0.10" 11483 - } 11484 - }, 11485 - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { 11486 - "version": "2.1.1", 11487 - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 11488 - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 11489 - "dev": true, 11490 - "dependencies": { 11491 - "remove-trailing-separator": "^1.0.1" 11492 + "node": ">=12.2.0" 11493 }, 11494 - "engines": { 11495 - "node": ">=0.10.0" 11496 - } 11497 - }, 11498 - "node_modules/void-elements": { 11499 - "version": "3.1.0", 11500 - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", 11501 - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", 11502 - "engines": { 11503 - "node": ">=0.10.0" 11504 - } 11505 - }, 11506 - "node_modules/vue-template-compiler": { 11507 - "version": "2.6.14", 11508 - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", 11509 - "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", 11510 - "dev": true, 11511 - "dependencies": { 11512 - "de-indent": "^1.0.2", 11513 - "he": "^1.1.0" 11514 - } 11515 - }, 11516 - "node_modules/walk-sync": { 11517 - "version": "2.2.0", 11518 - "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", 11519 - "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", 11520 - "dev": true, 11521 - "dependencies": { 11522 - "@types/minimatch": "^3.0.3", 11523 - "ensure-posix-path": "^1.1.0", 11524 - "matcher-collection": "^2.0.0", 11525 - "minimatch": "^3.0.4" 11526 + "optionalDependencies": { 11527 + "fsevents": "~2.3.2" 11528 }, 11529 - "engines": { 11530 - "node": "8.* || >= 10.*" 11531 + "peerDependencies": { 11532 + "less": "*", 11533 + "sass": "*", 11534 + "stylus": "*" 11535 + }, 11536 + "peerDependenciesMeta": { 11537 + "less": { 11538 + "optional": true 11539 + }, 11540 + "sass": { 11541 + "optional": true 11542 + }, 11543 + "stylus": { 11544 + "optional": true 11545 + } 11546 } 11547 }, 11548 - "node_modules/webidl-conversions": { 11549 - "version": "3.0.1", 11550 - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 11551 - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 11552 - }, 11553 - "node_modules/whatwg-url": { 11554 - "version": "5.0.0", 11555 - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 11556 - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 11557 + "node_modules/wcwidth": { 11558 + "version": "1.0.1", 11559 + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 11560 + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", 11561 "dependencies": { 11562 - "tr46": "~0.0.3", 11563 - "webidl-conversions": "^3.0.0" 11564 + "defaults": "^1.0.3" 11565 } 11566 }, 11567 "node_modules/which": { 11568 "version": "2.0.2", 11569 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 11570 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 11571 - "devOptional": true, 11572 + "dev": true, 11573 "dependencies": { 11574 "isexe": "^2.0.0" 11575 }, 11576 @@ -7460,62 +5200,66 @@ 11577 "node": ">= 8" 11578 } 11579 }, 11580 - "node_modules/which-boxed-primitive": { 11581 - "version": "1.0.2", 11582 - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 11583 - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 11584 + "node_modules/word-wrap": { 11585 + "version": "1.2.3", 11586 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 11587 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 11588 "dev": true, 11589 + "engines": { 11590 + "node": ">=0.10.0" 11591 + } 11592 + }, 11593 + "node_modules/wrap-ansi": { 11594 + "version": "7.0.0", 11595 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 11596 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 11597 "dependencies": { 11598 - "is-bigint": "^1.0.1", 11599 - "is-boolean-object": "^1.1.0", 11600 - "is-number-object": "^1.0.4", 11601 - "is-string": "^1.0.5", 11602 - "is-symbol": "^1.0.3" 11603 + "ansi-styles": "^4.0.0", 11604 + "string-width": "^4.1.0", 11605 + "strip-ansi": "^6.0.0" 11606 + }, 11607 + "engines": { 11608 + "node": ">=10" 11609 }, 11610 "funding": { 11611 - "url": "https://github.com/sponsors/ljharb" 11612 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 11613 } 11614 }, 11615 - "node_modules/wide-align": { 11616 - "version": "1.1.5", 11617 - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 11618 - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 11619 + "node_modules/wrap-ansi/node_modules/ansi-styles": { 11620 + "version": "4.3.0", 11621 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 11622 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 11623 "dependencies": { 11624 - "string-width": "^1.0.2 || 2 || 3 || 4" 11625 + "color-convert": "^2.0.1" 11626 + }, 11627 + "engines": { 11628 + "node": ">=8" 11629 + }, 11630 + "funding": { 11631 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 11632 } 11633 }, 11634 - "node_modules/wkx": { 11635 - "version": "0.5.0", 11636 - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", 11637 - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", 11638 + "node_modules/wrap-ansi/node_modules/color-convert": { 11639 + "version": "2.0.1", 11640 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 11641 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 11642 "dependencies": { 11643 - "@types/node": "*" 11644 - } 11645 - }, 11646 - "node_modules/word-wrap": { 11647 - "version": "1.2.3", 11648 - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 11649 - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 11650 - "dev": true, 11651 + "color-name": "~1.1.4" 11652 + }, 11653 "engines": { 11654 - "node": ">=0.10.0" 11655 + "node": ">=7.0.0" 11656 } 11657 }, 11658 + "node_modules/wrap-ansi/node_modules/color-name": { 11659 + "version": "1.1.4", 11660 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 11661 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 11662 + }, 11663 "node_modules/wrappy": { 11664 "version": "1.0.2", 11665 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 11666 - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 11667 - }, 11668 - "node_modules/xml-js": { 11669 - "version": "1.6.11", 11670 - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", 11671 - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", 11672 - "dependencies": { 11673 - "sax": "^1.2.4" 11674 - }, 11675 - "bin": { 11676 - "xml-js": "bin/cli.js" 11677 - } 11678 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 11679 + "dev": true 11680 }, 11681 "node_modules/xtend": { 11682 "version": "4.0.2", 11683 @@ -7527,9 +5271,10 @@ 11684 } 11685 }, 11686 "node_modules/yallist": { 11687 - "version": "4.0.0", 11688 - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 11689 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 11690 + "version": "3.1.1", 11691 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 11692 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 11693 + "dev": true 11694 }, 11695 "node_modules/yaml": { 11696 "version": "1.10.2", 11697 @@ -7539,357 +5284,331 @@ 11698 "engines": { 11699 "node": ">= 6" 11700 } 11701 + }, 11702 + "node_modules/yocto-queue": { 11703 + "version": "0.1.0", 11704 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 11705 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 11706 + "dev": true, 11707 + "engines": { 11708 + "node": ">=10" 11709 + }, 11710 + "funding": { 11711 + "url": "https://github.com/sponsors/sindresorhus" 11712 + } 11713 } 11714 }, 11715 "dependencies": { 11716 "@ampproject/remapping": { 11717 - "version": "2.1.0", 11718 - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.0.tgz", 11719 - "integrity": "sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g==", 11720 + "version": "2.2.0", 11721 + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 11722 + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 11723 "dev": true, 11724 - "peer": true, 11725 "requires": { 11726 - "@jridgewell/trace-mapping": "^0.3.0" 11727 + "@jridgewell/gen-mapping": "^0.1.0", 11728 + "@jridgewell/trace-mapping": "^0.3.9" 11729 } 11730 }, 11731 "@babel/code-frame": { 11732 - "version": "7.16.7", 11733 - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 11734 - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 11735 + "version": "7.18.6", 11736 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 11737 + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 11738 "dev": true, 11739 "requires": { 11740 - "@babel/highlight": "^7.16.7" 11741 + "@babel/highlight": "^7.18.6" 11742 } 11743 }, 11744 "@babel/compat-data": { 11745 - "version": "7.17.0", 11746 - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", 11747 - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", 11748 - "dev": true, 11749 - "peer": true 11750 + "version": "7.20.10", 11751 + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", 11752 + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", 11753 + "dev": true 11754 }, 11755 "@babel/core": { 11756 - "version": "7.17.0", 11757 - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", 11758 - "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", 11759 - "dev": true, 11760 - "peer": true, 11761 - "requires": { 11762 - "@ampproject/remapping": "^2.0.0", 11763 - "@babel/code-frame": "^7.16.7", 11764 - "@babel/generator": "^7.17.0", 11765 - "@babel/helper-compilation-targets": "^7.16.7", 11766 - "@babel/helper-module-transforms": "^7.16.7", 11767 - "@babel/helpers": "^7.17.0", 11768 - "@babel/parser": "^7.17.0", 11769 - "@babel/template": "^7.16.7", 11770 - "@babel/traverse": "^7.17.0", 11771 - "@babel/types": "^7.17.0", 11772 + "version": "7.20.7", 11773 + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", 11774 + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", 11775 + "dev": true, 11776 + "requires": { 11777 + "@ampproject/remapping": "^2.1.0", 11778 + "@babel/code-frame": "^7.18.6", 11779 + "@babel/generator": "^7.20.7", 11780 + "@babel/helper-compilation-targets": "^7.20.7", 11781 + "@babel/helper-module-transforms": "^7.20.7", 11782 + "@babel/helpers": "^7.20.7", 11783 + "@babel/parser": "^7.20.7", 11784 + "@babel/template": "^7.20.7", 11785 + "@babel/traverse": "^7.20.7", 11786 + "@babel/types": "^7.20.7", 11787 "convert-source-map": "^1.7.0", 11788 "debug": "^4.1.0", 11789 "gensync": "^1.0.0-beta.2", 11790 - "json5": "^2.1.2", 11791 + "json5": "^2.2.1", 11792 "semver": "^6.3.0" 11793 } 11794 }, 11795 "@babel/generator": { 11796 - "version": "7.17.0", 11797 - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", 11798 - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", 11799 + "version": "7.20.7", 11800 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", 11801 + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", 11802 "dev": true, 11803 "requires": { 11804 - "@babel/types": "^7.17.0", 11805 - "jsesc": "^2.5.1", 11806 - "source-map": "^0.5.0" 11807 + "@babel/types": "^7.20.7", 11808 + "@jridgewell/gen-mapping": "^0.3.2", 11809 + "jsesc": "^2.5.1" 11810 + }, 11811 + "dependencies": { 11812 + "@jridgewell/gen-mapping": { 11813 + "version": "0.3.2", 11814 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 11815 + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 11816 + "dev": true, 11817 + "requires": { 11818 + "@jridgewell/set-array": "^1.0.1", 11819 + "@jridgewell/sourcemap-codec": "^1.4.10", 11820 + "@jridgewell/trace-mapping": "^0.3.9" 11821 + } 11822 + } 11823 } 11824 }, 11825 "@babel/helper-annotate-as-pure": { 11826 - "version": "7.16.7", 11827 - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", 11828 - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", 11829 + "version": "7.18.6", 11830 + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 11831 + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 11832 "dev": true, 11833 "requires": { 11834 - "@babel/types": "^7.16.7" 11835 + "@babel/types": "^7.18.6" 11836 } 11837 }, 11838 "@babel/helper-compilation-targets": { 11839 - "version": "7.16.7", 11840 - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", 11841 - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", 11842 + "version": "7.20.7", 11843 + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", 11844 + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", 11845 "dev": true, 11846 - "peer": true, 11847 "requires": { 11848 - "@babel/compat-data": "^7.16.4", 11849 - "@babel/helper-validator-option": "^7.16.7", 11850 - "browserslist": "^4.17.5", 11851 + "@babel/compat-data": "^7.20.5", 11852 + "@babel/helper-validator-option": "^7.18.6", 11853 + "browserslist": "^4.21.3", 11854 + "lru-cache": "^5.1.1", 11855 "semver": "^6.3.0" 11856 } 11857 }, 11858 - "@babel/helper-create-class-features-plugin": { 11859 - "version": "7.18.0", 11860 - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", 11861 - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", 11862 - "dev": true, 11863 - "requires": { 11864 - "@babel/helper-annotate-as-pure": "^7.16.7", 11865 - "@babel/helper-environment-visitor": "^7.16.7", 11866 - "@babel/helper-function-name": "^7.17.9", 11867 - "@babel/helper-member-expression-to-functions": "^7.17.7", 11868 - "@babel/helper-optimise-call-expression": "^7.16.7", 11869 - "@babel/helper-replace-supers": "^7.16.7", 11870 - "@babel/helper-split-export-declaration": "^7.16.7" 11871 - } 11872 - }, 11873 "@babel/helper-environment-visitor": { 11874 - "version": "7.16.7", 11875 - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", 11876 - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", 11877 - "dev": true, 11878 - "requires": { 11879 - "@babel/types": "^7.16.7" 11880 - } 11881 + "version": "7.18.9", 11882 + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 11883 + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 11884 + "dev": true 11885 }, 11886 "@babel/helper-function-name": { 11887 - "version": "7.17.9", 11888 - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", 11889 - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", 11890 + "version": "7.19.0", 11891 + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 11892 + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 11893 "dev": true, 11894 "requires": { 11895 - "@babel/template": "^7.16.7", 11896 - "@babel/types": "^7.17.0" 11897 + "@babel/template": "^7.18.10", 11898 + "@babel/types": "^7.19.0" 11899 } 11900 }, 11901 "@babel/helper-hoist-variables": { 11902 - "version": "7.16.7", 11903 - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", 11904 - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", 11905 - "dev": true, 11906 - "requires": { 11907 - "@babel/types": "^7.16.7" 11908 - } 11909 - }, 11910 - "@babel/helper-member-expression-to-functions": { 11911 - "version": "7.17.7", 11912 - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", 11913 - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", 11914 + "version": "7.18.6", 11915 + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 11916 + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 11917 "dev": true, 11918 "requires": { 11919 - "@babel/types": "^7.17.0" 11920 + "@babel/types": "^7.18.6" 11921 } 11922 }, 11923 "@babel/helper-module-imports": { 11924 - "version": "7.16.7", 11925 - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", 11926 - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", 11927 + "version": "7.18.6", 11928 + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 11929 + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 11930 "dev": true, 11931 - "peer": true, 11932 "requires": { 11933 - "@babel/types": "^7.16.7" 11934 + "@babel/types": "^7.18.6" 11935 } 11936 }, 11937 "@babel/helper-module-transforms": { 11938 - "version": "7.16.7", 11939 - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", 11940 - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", 11941 - "dev": true, 11942 - "peer": true, 11943 - "requires": { 11944 - "@babel/helper-environment-visitor": "^7.16.7", 11945 - "@babel/helper-module-imports": "^7.16.7", 11946 - "@babel/helper-simple-access": "^7.16.7", 11947 - "@babel/helper-split-export-declaration": "^7.16.7", 11948 - "@babel/helper-validator-identifier": "^7.16.7", 11949 - "@babel/template": "^7.16.7", 11950 - "@babel/traverse": "^7.16.7", 11951 - "@babel/types": "^7.16.7" 11952 - } 11953 - }, 11954 - "@babel/helper-optimise-call-expression": { 11955 - "version": "7.16.7", 11956 - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", 11957 - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", 11958 + "version": "7.20.11", 11959 + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", 11960 + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", 11961 "dev": true, 11962 "requires": { 11963 - "@babel/types": "^7.16.7" 11964 + "@babel/helper-environment-visitor": "^7.18.9", 11965 + "@babel/helper-module-imports": "^7.18.6", 11966 + "@babel/helper-simple-access": "^7.20.2", 11967 + "@babel/helper-split-export-declaration": "^7.18.6", 11968 + "@babel/helper-validator-identifier": "^7.19.1", 11969 + "@babel/template": "^7.20.7", 11970 + "@babel/traverse": "^7.20.10", 11971 + "@babel/types": "^7.20.7" 11972 } 11973 }, 11974 - "@babel/helper-replace-supers": { 11975 - "version": "7.16.7", 11976 - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", 11977 - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", 11978 - "dev": true, 11979 - "requires": { 11980 - "@babel/helper-environment-visitor": "^7.16.7", 11981 - "@babel/helper-member-expression-to-functions": "^7.16.7", 11982 - "@babel/helper-optimise-call-expression": "^7.16.7", 11983 - "@babel/traverse": "^7.16.7", 11984 - "@babel/types": "^7.16.7" 11985 - } 11986 + "@babel/helper-plugin-utils": { 11987 + "version": "7.20.2", 11988 + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 11989 + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 11990 + "dev": true 11991 }, 11992 "@babel/helper-simple-access": { 11993 - "version": "7.16.7", 11994 - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", 11995 - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", 11996 + "version": "7.20.2", 11997 + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", 11998 + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", 11999 "dev": true, 12000 - "peer": true, 12001 "requires": { 12002 - "@babel/types": "^7.16.7" 12003 + "@babel/types": "^7.20.2" 12004 } 12005 }, 12006 "@babel/helper-split-export-declaration": { 12007 - "version": "7.16.7", 12008 - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", 12009 - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", 12010 + "version": "7.18.6", 12011 + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 12012 + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 12013 "dev": true, 12014 "requires": { 12015 - "@babel/types": "^7.16.7" 12016 + "@babel/types": "^7.18.6" 12017 } 12018 }, 12019 + "@babel/helper-string-parser": { 12020 + "version": "7.19.4", 12021 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 12022 + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 12023 + "dev": true 12024 + }, 12025 "@babel/helper-validator-identifier": { 12026 - "version": "7.16.7", 12027 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 12028 - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 12029 + "version": "7.19.1", 12030 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 12031 + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 12032 "dev": true 12033 }, 12034 "@babel/helper-validator-option": { 12035 - "version": "7.16.7", 12036 - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", 12037 - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", 12038 - "dev": true, 12039 - "peer": true 12040 + "version": "7.18.6", 12041 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 12042 + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 12043 + "dev": true 12044 }, 12045 "@babel/helpers": { 12046 - "version": "7.17.0", 12047 - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", 12048 - "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", 12049 + "version": "7.20.7", 12050 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", 12051 + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", 12052 "dev": true, 12053 - "peer": true, 12054 "requires": { 12055 - "@babel/template": "^7.16.7", 12056 - "@babel/traverse": "^7.17.0", 12057 - "@babel/types": "^7.17.0" 12058 + "@babel/template": "^7.20.7", 12059 + "@babel/traverse": "^7.20.7", 12060 + "@babel/types": "^7.20.7" 12061 } 12062 }, 12063 "@babel/highlight": { 12064 - "version": "7.16.10", 12065 - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 12066 - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 12067 + "version": "7.18.6", 12068 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 12069 + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 12070 "dev": true, 12071 "requires": { 12072 - "@babel/helper-validator-identifier": "^7.16.7", 12073 + "@babel/helper-validator-identifier": "^7.18.6", 12074 "chalk": "^2.0.0", 12075 "js-tokens": "^4.0.0" 12076 } 12077 }, 12078 "@babel/parser": { 12079 - "version": "7.17.0", 12080 - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", 12081 - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", 12082 + "version": "7.20.7", 12083 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", 12084 + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", 12085 "dev": true 12086 }, 12087 - "@babel/plugin-syntax-typescript": { 12088 - "version": "7.17.12", 12089 - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", 12090 - "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", 12091 + "@babel/plugin-syntax-jsx": { 12092 + "version": "7.18.6", 12093 + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 12094 + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 12095 "dev": true, 12096 - "requires": { 12097 - "@babel/helper-plugin-utils": "^7.17.12" 12098 - }, 12099 - "dependencies": { 12100 - "@babel/helper-plugin-utils": { 12101 - "version": "7.17.12", 12102 - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", 12103 - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", 12104 - "dev": true 12105 - } 12106 + "requires": { 12107 + "@babel/helper-plugin-utils": "^7.18.6" 12108 } 12109 }, 12110 - "@babel/plugin-transform-typescript": { 12111 - "version": "7.18.1", 12112 - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.1.tgz", 12113 - "integrity": "sha512-F+RJmL479HJmC0KeqqwEGZMg1P7kWArLGbAKfEi9yPthJyMNjF+DjxFF/halfQvq1Q9GFM4TUbYDNV8xe4Ctqg==", 12114 + "@babel/plugin-transform-react-jsx": { 12115 + "version": "7.20.7", 12116 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz", 12117 + "integrity": "sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==", 12118 "dev": true, 12119 "requires": { 12120 - "@babel/helper-create-class-features-plugin": "^7.18.0", 12121 - "@babel/helper-plugin-utils": "^7.17.12", 12122 - "@babel/plugin-syntax-typescript": "^7.17.12" 12123 - }, 12124 - "dependencies": { 12125 - "@babel/helper-plugin-utils": { 12126 - "version": "7.17.12", 12127 - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", 12128 - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", 12129 - "dev": true 12130 - } 12131 + "@babel/helper-annotate-as-pure": "^7.18.6", 12132 + "@babel/helper-module-imports": "^7.18.6", 12133 + "@babel/helper-plugin-utils": "^7.20.2", 12134 + "@babel/plugin-syntax-jsx": "^7.18.6", 12135 + "@babel/types": "^7.20.7" 12136 } 12137 }, 12138 - "@babel/runtime": { 12139 - "version": "7.17.8", 12140 - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", 12141 - "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", 12142 + "@babel/plugin-transform-react-jsx-development": { 12143 + "version": "7.18.6", 12144 + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 12145 + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 12146 + "dev": true, 12147 "requires": { 12148 - "regenerator-runtime": "^0.13.4" 12149 + "@babel/plugin-transform-react-jsx": "^7.18.6" 12150 } 12151 }, 12152 - "@babel/runtime-corejs3": { 12153 - "version": "7.17.0", 12154 - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.0.tgz", 12155 - "integrity": "sha512-qeydncU80ravKzovVncW3EYaC1ji3GpntdPgNcJy9g7hHSY6KX+ne1cbV3ov7Zzm4F1z0+QreZPCuw1ynkmYNg==", 12156 - "dev": true, 12157 + "@babel/runtime": { 12158 + "version": "7.20.7", 12159 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", 12160 + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", 12161 "requires": { 12162 - "core-js-pure": "^3.20.2", 12163 - "regenerator-runtime": "^0.13.4" 12164 + "regenerator-runtime": "^0.13.11" 12165 } 12166 }, 12167 "@babel/template": { 12168 - "version": "7.16.7", 12169 - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", 12170 - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", 12171 + "version": "7.20.7", 12172 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", 12173 + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", 12174 "dev": true, 12175 "requires": { 12176 - "@babel/code-frame": "^7.16.7", 12177 - "@babel/parser": "^7.16.7", 12178 - "@babel/types": "^7.16.7" 12179 + "@babel/code-frame": "^7.18.6", 12180 + "@babel/parser": "^7.20.7", 12181 + "@babel/types": "^7.20.7" 12182 } 12183 }, 12184 "@babel/traverse": { 12185 - "version": "7.17.0", 12186 - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", 12187 - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", 12188 - "dev": true, 12189 - "requires": { 12190 - "@babel/code-frame": "^7.16.7", 12191 - "@babel/generator": "^7.17.0", 12192 - "@babel/helper-environment-visitor": "^7.16.7", 12193 - "@babel/helper-function-name": "^7.16.7", 12194 - "@babel/helper-hoist-variables": "^7.16.7", 12195 - "@babel/helper-split-export-declaration": "^7.16.7", 12196 - "@babel/parser": "^7.17.0", 12197 - "@babel/types": "^7.17.0", 12198 + "version": "7.20.10", 12199 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", 12200 + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", 12201 + "dev": true, 12202 + "requires": { 12203 + "@babel/code-frame": "^7.18.6", 12204 + "@babel/generator": "^7.20.7", 12205 + "@babel/helper-environment-visitor": "^7.18.9", 12206 + "@babel/helper-function-name": "^7.19.0", 12207 + "@babel/helper-hoist-variables": "^7.18.6", 12208 + "@babel/helper-split-export-declaration": "^7.18.6", 12209 + "@babel/parser": "^7.20.7", 12210 + "@babel/types": "^7.20.7", 12211 "debug": "^4.1.0", 12212 "globals": "^11.1.0" 12213 } 12214 }, 12215 "@babel/types": { 12216 - "version": "7.17.0", 12217 - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", 12218 - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", 12219 + "version": "7.20.7", 12220 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", 12221 + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", 12222 "dev": true, 12223 "requires": { 12224 - "@babel/helper-validator-identifier": "^7.16.7", 12225 + "@babel/helper-string-parser": "^7.19.4", 12226 + "@babel/helper-validator-identifier": "^7.19.1", 12227 "to-fast-properties": "^2.0.0" 12228 } 12229 }, 12230 + "@esbuild/linux-loong64": { 12231 + "version": "0.14.54", 12232 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 12233 + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 12234 + "dev": true, 12235 + "optional": true 12236 + }, 12237 "@eslint/eslintrc": { 12238 - "version": "1.3.0", 12239 - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 12240 - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 12241 + "version": "1.4.1", 12242 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", 12243 + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", 12244 "dev": true, 12245 "requires": { 12246 "ajv": "^6.12.4", 12247 "debug": "^4.3.2", 12248 - "espree": "^9.3.2", 12249 - "globals": "^13.15.0", 12250 + "espree": "^9.4.0", 12251 + "globals": "^13.19.0", 12252 "ignore": "^5.2.0", 12253 "import-fresh": "^3.2.1", 12254 "js-yaml": "^4.1.0", 12255 @@ -7898,9 +5617,9 @@ 12256 }, 12257 "dependencies": { 12258 "globals": { 12259 - "version": "13.15.0", 12260 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 12261 - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 12262 + "version": "13.19.0", 12263 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", 12264 + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", 12265 "dev": true, 12266 "requires": { 12267 "type-fest": "^0.20.2" 12268 @@ -7914,181 +5633,70 @@ 12269 } 12270 } 12271 }, 12272 - "@gar/promisify": { 12273 - "version": "1.1.3", 12274 - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", 12275 - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", 12276 - "optional": true 12277 - }, 12278 "@humanwhocodes/config-array": { 12279 - "version": "0.9.3", 12280 - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", 12281 - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", 12282 + "version": "0.11.8", 12283 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 12284 + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 12285 "dev": true, 12286 "requires": { 12287 "@humanwhocodes/object-schema": "^1.2.1", 12288 "debug": "^4.1.1", 12289 - "minimatch": "^3.0.4" 12290 + "minimatch": "^3.0.5" 12291 } 12292 }, 12293 + "@humanwhocodes/module-importer": { 12294 + "version": "1.0.1", 12295 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 12296 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 12297 + "dev": true 12298 + }, 12299 "@humanwhocodes/object-schema": { 12300 "version": "1.2.1", 12301 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 12302 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 12303 "dev": true 12304 }, 12305 - "@jridgewell/resolve-uri": { 12306 - "version": "3.0.4", 12307 - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", 12308 - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", 12309 - "dev": true, 12310 - "peer": true 12311 - }, 12312 - "@jridgewell/sourcemap-codec": { 12313 - "version": "1.4.10", 12314 - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz", 12315 - "integrity": "sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==", 12316 - "dev": true, 12317 - "peer": true 12318 - }, 12319 - "@jridgewell/trace-mapping": { 12320 - "version": "0.3.2", 12321 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.2.tgz", 12322 - "integrity": "sha512-9KzzH4kMjA2XmBRHfqG2/Vtl7s92l6uNDd0wW7frDE+EUvQFGqNXhWp0UGJjSkt3v2AYjzOZn1QO9XaTNJIt1Q==", 12323 + "@jridgewell/gen-mapping": { 12324 + "version": "0.1.1", 12325 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 12326 + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 12327 "dev": true, 12328 - "peer": true, 12329 "requires": { 12330 - "@jridgewell/resolve-uri": "^3.0.3", 12331 + "@jridgewell/set-array": "^1.0.0", 12332 "@jridgewell/sourcemap-codec": "^1.4.10" 12333 } 12334 }, 12335 - "@mapbox/node-pre-gyp": { 12336 - "version": "1.0.9", 12337 - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", 12338 - "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", 12339 - "requires": { 12340 - "detect-libc": "^2.0.0", 12341 - "https-proxy-agent": "^5.0.0", 12342 - "make-dir": "^3.1.0", 12343 - "node-fetch": "^2.6.7", 12344 - "nopt": "^5.0.0", 12345 - "npmlog": "^5.0.1", 12346 - "rimraf": "^3.0.2", 12347 - "semver": "^7.3.5", 12348 - "tar": "^6.1.11" 12349 - }, 12350 - "dependencies": { 12351 - "semver": { 12352 - "version": "7.3.7", 12353 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 12354 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 12355 - "requires": { 12356 - "lru-cache": "^6.0.0" 12357 - } 12358 - } 12359 - } 12360 + "@jridgewell/resolve-uri": { 12361 + "version": "3.1.0", 12362 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 12363 + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 12364 + "dev": true 12365 + }, 12366 + "@jridgewell/set-array": { 12367 + "version": "1.1.2", 12368 + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 12369 + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 12370 + "dev": true 12371 }, 12372 - "@next/env": { 12373 - "version": "12.1.6", 12374 - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.6.tgz", 12375 - "integrity": "sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==" 12376 + "@jridgewell/sourcemap-codec": { 12377 + "version": "1.4.14", 12378 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 12379 + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 12380 + "dev": true 12381 }, 12382 - "@next/eslint-plugin-next": { 12383 - "version": "12.1.6", 12384 - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz", 12385 - "integrity": "sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==", 12386 + "@jridgewell/trace-mapping": { 12387 + "version": "0.3.17", 12388 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 12389 + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 12390 "dev": true, 12391 "requires": { 12392 - "glob": "7.1.7" 12393 - }, 12394 - "dependencies": { 12395 - "glob": { 12396 - "version": "7.1.7", 12397 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 12398 - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 12399 - "dev": true, 12400 - "requires": { 12401 - "fs.realpath": "^1.0.0", 12402 - "inflight": "^1.0.4", 12403 - "inherits": "2", 12404 - "minimatch": "^3.0.4", 12405 - "once": "^1.3.0", 12406 - "path-is-absolute": "^1.0.0" 12407 - } 12408 - } 12409 + "@jridgewell/resolve-uri": "3.1.0", 12410 + "@jridgewell/sourcemap-codec": "1.4.14" 12411 } 12412 }, 12413 - "@next/swc-android-arm-eabi": { 12414 - "version": "12.1.6", 12415 - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz", 12416 - "integrity": "sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ==", 12417 - "optional": true 12418 - }, 12419 - "@next/swc-android-arm64": { 12420 - "version": "12.1.6", 12421 - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz", 12422 - "integrity": "sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew==", 12423 - "optional": true 12424 - }, 12425 - "@next/swc-darwin-arm64": { 12426 - "version": "12.1.6", 12427 - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz", 12428 - "integrity": "sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw==", 12429 - "optional": true 12430 - }, 12431 - "@next/swc-darwin-x64": { 12432 - "version": "12.1.6", 12433 - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz", 12434 - "integrity": "sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg==", 12435 - "optional": true 12436 - }, 12437 - "@next/swc-linux-arm-gnueabihf": { 12438 - "version": "12.1.6", 12439 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz", 12440 - "integrity": "sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw==", 12441 - "optional": true 12442 - }, 12443 - "@next/swc-linux-arm64-gnu": { 12444 - "version": "12.1.6", 12445 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz", 12446 - "integrity": "sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ==", 12447 - "optional": true 12448 - }, 12449 - "@next/swc-linux-arm64-musl": { 12450 - "version": "12.1.6", 12451 - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz", 12452 - "integrity": "sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ==", 12453 - "optional": true 12454 - }, 12455 - "@next/swc-linux-x64-gnu": { 12456 - "version": "12.1.6", 12457 - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz", 12458 - "integrity": "sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ==", 12459 - "optional": true 12460 - }, 12461 - "@next/swc-linux-x64-musl": { 12462 - "version": "12.1.6", 12463 - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz", 12464 - "integrity": "sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag==", 12465 - "optional": true 12466 - }, 12467 - "@next/swc-win32-arm64-msvc": { 12468 - "version": "12.1.6", 12469 - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz", 12470 - "integrity": "sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g==", 12471 - "optional": true 12472 - }, 12473 - "@next/swc-win32-ia32-msvc": { 12474 - "version": "12.1.6", 12475 - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz", 12476 - "integrity": "sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA==", 12477 - "optional": true 12478 - }, 12479 - "@next/swc-win32-x64-msvc": { 12480 - "version": "12.1.6", 12481 - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz", 12482 - "integrity": "sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA==", 12483 - "optional": true 12484 + "@matrix-org/olm": { 12485 + "version": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", 12486 + "integrity": "sha512-yCJzEYY2aG1z+7nxKYZC4DFYwQO/5iG019qgotJhauYJRhEG9gLrKTvXO6lRHS8TjnZzsZFZyO/hQUlI4Dryig==" 12487 }, 12488 "@nodelib/fs.scandir": { 12489 "version": "2.1.5", 12490 @@ -8116,200 +5724,195 @@ 12491 "fastq": "^1.6.0" 12492 } 12493 }, 12494 - "@npmcli/fs": { 12495 - "version": "1.1.1", 12496 - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", 12497 - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", 12498 - "optional": true, 12499 - "requires": { 12500 - "@gar/promisify": "^1.0.1", 12501 - "semver": "^7.3.5" 12502 - }, 12503 - "dependencies": { 12504 - "semver": { 12505 - "version": "7.3.7", 12506 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 12507 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 12508 - "optional": true, 12509 - "requires": { 12510 - "lru-cache": "^6.0.0" 12511 - } 12512 - } 12513 - } 12514 - }, 12515 - "@npmcli/move-file": { 12516 - "version": "1.1.2", 12517 - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", 12518 - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", 12519 - "optional": true, 12520 - "requires": { 12521 - "mkdirp": "^1.0.4", 12522 - "rimraf": "^3.0.2" 12523 - } 12524 - }, 12525 - "@playwright/test": { 12526 - "version": "1.22.2", 12527 - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.22.2.tgz", 12528 - "integrity": "sha512-cCl96BEBGPtptFz7C2FOSN3PrTnJ3rPpENe+gYCMx4GNNDlN4tmo2D89y13feGKTMMAIVrXfSQ/UmaQKLy1XLA==", 12529 + "@preact/preset-vite": { 12530 + "version": "2.5.0", 12531 + "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.5.0.tgz", 12532 + "integrity": "sha512-BUhfB2xQ6ex0yPkrT1Z3LbfPzjpJecOZwQ/xJrXGFSZD84+ObyS//41RdEoQCMWsM0t7UHGaujUxUBub7WM1Jw==", 12533 "dev": true, 12534 "requires": { 12535 - "@types/node": "*", 12536 - "playwright-core": "1.22.2" 12537 + "@babel/plugin-transform-react-jsx": "^7.14.9", 12538 + "@babel/plugin-transform-react-jsx-development": "^7.16.7", 12539 + "@prefresh/vite": "^2.2.8", 12540 + "@rollup/pluginutils": "^4.1.1", 12541 + "babel-plugin-transform-hook-names": "^1.0.2", 12542 + "debug": "^4.3.1", 12543 + "kolorist": "^1.2.10", 12544 + "resolve": "^1.20.0" 12545 } 12546 }, 12547 - "@rushstack/eslint-patch": { 12548 - "version": "1.1.3", 12549 - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", 12550 - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", 12551 + "@prefresh/babel-plugin": { 12552 + "version": "0.4.4", 12553 + "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.4.tgz", 12554 + "integrity": "sha512-/EvgIFMDL+nd20WNvMO0JQnzIl1EJPgmSaSYrZUww7A+aSdKsi37aL07TljrZR1cBMuzFxcr4xvqsUQLFJEukw==", 12555 "dev": true 12556 }, 12557 - "@tootallnate/once": { 12558 - "version": "1.1.2", 12559 - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 12560 - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 12561 - "optional": true 12562 + "@prefresh/core": { 12563 + "version": "1.4.1", 12564 + "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.4.1.tgz", 12565 + "integrity": "sha512-og1vaBj3LMJagVncNrDb37Gqc0cWaUcDbpVt5hZtsN4i2Iwzd/5hyTsDHvlMirhSym3wL9ihU0Xa2VhSaOue7g==", 12566 + "dev": true, 12567 + "requires": {} 12568 }, 12569 - "@types/cors": { 12570 - "version": "2.8.12", 12571 - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", 12572 - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", 12573 + "@prefresh/utils": { 12574 + "version": "1.1.3", 12575 + "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.3.tgz", 12576 + "integrity": "sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==", 12577 "dev": true 12578 }, 12579 - "@types/debug": { 12580 - "version": "4.1.7", 12581 - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", 12582 - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", 12583 + "@prefresh/vite": { 12584 + "version": "2.2.9", 12585 + "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.2.9.tgz", 12586 + "integrity": "sha512-1ERBF85Ja9/lkrfaltmo4Gca7R2ClQPSHHDDysFgfvPzHmLUeyB0x9WHwhwov/AA1DnyPhsfYT54z3yQd8XrgA==", 12587 + "dev": true, 12588 "requires": { 12589 - "@types/ms": "*" 12590 + "@babel/core": "^7.9.6", 12591 + "@prefresh/babel-plugin": "0.4.4", 12592 + "@prefresh/core": "^1.3.3", 12593 + "@prefresh/utils": "^1.1.2", 12594 + "@rollup/pluginutils": "^4.1.0" 12595 } 12596 }, 12597 - "@types/hoist-non-react-statics": { 12598 - "version": "3.3.1", 12599 - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", 12600 - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", 12601 + "@remix-run/router": { 12602 + "version": "1.2.1", 12603 + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", 12604 + "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==" 12605 + }, 12606 + "@rollup/pluginutils": { 12607 + "version": "4.2.1", 12608 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 12609 + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 12610 + "dev": true, 12611 "requires": { 12612 - "@types/react": "*", 12613 - "hoist-non-react-statics": "^3.3.0" 12614 + "estree-walker": "^2.0.1", 12615 + "picomatch": "^2.2.2" 12616 } 12617 }, 12618 - "@types/json5": { 12619 - "version": "0.0.29", 12620 - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 12621 - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", 12622 + "@types/events": { 12623 + "version": "3.0.0", 12624 + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", 12625 + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", 12626 "dev": true 12627 }, 12628 - "@types/minimatch": { 12629 - "version": "3.0.5", 12630 - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 12631 - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 12632 + "@types/json-schema": { 12633 + "version": "7.0.11", 12634 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 12635 + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 12636 "dev": true 12637 }, 12638 - "@types/ms": { 12639 - "version": "0.7.31", 12640 - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", 12641 - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" 12642 - }, 12643 - "@types/node": { 12644 - "version": "17.0.35", 12645 - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", 12646 - "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" 12647 - }, 12648 "@types/normalize-package-data": { 12649 "version": "2.4.1", 12650 "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", 12651 "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", 12652 "dev": true 12653 }, 12654 - "@types/offscreencanvas": { 12655 - "version": "2019.7.0", 12656 - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", 12657 - "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", 12658 + "@types/photoswipe": { 12659 + "version": "4.1.2", 12660 + "resolved": "https://registry.npmjs.org/@types/photoswipe/-/photoswipe-4.1.2.tgz", 12661 + "integrity": "sha512-HA9TtCAQKToldgxRiyJ1DbsElg/cQV/SQ8COVjqIqghjy60Zxfh78E1WiFotthquqkS86nz13Za9wEbToe0svQ==", 12662 "dev": true 12663 }, 12664 - "@types/prop-types": { 12665 - "version": "15.7.4", 12666 - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", 12667 - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 12668 - }, 12669 - "@types/react": { 12670 - "version": "18.0.9", 12671 - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", 12672 - "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", 12673 - "requires": { 12674 - "@types/prop-types": "*", 12675 - "@types/scheduler": "*", 12676 - "csstype": "^3.0.2" 12677 - } 12678 - }, 12679 - "@types/scheduler": { 12680 - "version": "0.16.2", 12681 - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 12682 - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 12683 + "@types/retry": { 12684 + "version": "0.12.0", 12685 + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", 12686 + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" 12687 }, 12688 - "@types/symlink-or-copy": { 12689 - "version": "1.2.0", 12690 - "resolved": "https://registry.npmjs.org/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz", 12691 - "integrity": "sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==", 12692 + "@types/semver": { 12693 + "version": "7.3.13", 12694 + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", 12695 + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", 12696 "dev": true 12697 }, 12698 - "@types/validator": { 12699 - "version": "13.7.2", 12700 - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", 12701 - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" 12702 - }, 12703 - "@typescript-eslint/parser": { 12704 - "version": "5.25.0", 12705 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", 12706 - "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", 12707 + "@typescript-eslint/eslint-plugin": { 12708 + "version": "5.48.0", 12709 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", 12710 + "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", 12711 "dev": true, 12712 "requires": { 12713 - "@typescript-eslint/scope-manager": "5.25.0", 12714 - "@typescript-eslint/types": "5.25.0", 12715 - "@typescript-eslint/typescript-estree": "5.25.0", 12716 - "debug": "^4.3.4" 12717 + "@typescript-eslint/scope-manager": "5.48.0", 12718 + "@typescript-eslint/type-utils": "5.48.0", 12719 + "@typescript-eslint/utils": "5.48.0", 12720 + "debug": "^4.3.4", 12721 + "ignore": "^5.2.0", 12722 + "natural-compare-lite": "^1.4.0", 12723 + "regexpp": "^3.2.0", 12724 + "semver": "^7.3.7", 12725 + "tsutils": "^3.21.0" 12726 }, 12727 "dependencies": { 12728 - "debug": { 12729 - "version": "4.3.4", 12730 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 12731 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 12732 + "lru-cache": { 12733 + "version": "6.0.0", 12734 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 12735 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 12736 + "dev": true, 12737 + "requires": { 12738 + "yallist": "^4.0.0" 12739 + } 12740 + }, 12741 + "semver": { 12742 + "version": "7.3.8", 12743 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 12744 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 12745 "dev": true, 12746 "requires": { 12747 - "ms": "2.1.2" 12748 + "lru-cache": "^6.0.0" 12749 } 12750 }, 12751 - "ms": { 12752 - "version": "2.1.2", 12753 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 12754 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 12755 + "yallist": { 12756 + "version": "4.0.0", 12757 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 12758 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 12759 "dev": true 12760 } 12761 } 12762 }, 12763 + "@typescript-eslint/parser": { 12764 + "version": "5.48.0", 12765 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", 12766 + "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", 12767 + "dev": true, 12768 + "requires": { 12769 + "@typescript-eslint/scope-manager": "5.48.0", 12770 + "@typescript-eslint/types": "5.48.0", 12771 + "@typescript-eslint/typescript-estree": "5.48.0", 12772 + "debug": "^4.3.4" 12773 + } 12774 + }, 12775 "@typescript-eslint/scope-manager": { 12776 - "version": "5.25.0", 12777 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", 12778 - "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", 12779 + "version": "5.48.0", 12780 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", 12781 + "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", 12782 + "dev": true, 12783 + "requires": { 12784 + "@typescript-eslint/types": "5.48.0", 12785 + "@typescript-eslint/visitor-keys": "5.48.0" 12786 + } 12787 + }, 12788 + "@typescript-eslint/type-utils": { 12789 + "version": "5.48.0", 12790 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", 12791 + "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", 12792 "dev": true, 12793 "requires": { 12794 - "@typescript-eslint/types": "5.25.0", 12795 - "@typescript-eslint/visitor-keys": "5.25.0" 12796 + "@typescript-eslint/typescript-estree": "5.48.0", 12797 + "@typescript-eslint/utils": "5.48.0", 12798 + "debug": "^4.3.4", 12799 + "tsutils": "^3.21.0" 12800 } 12801 }, 12802 "@typescript-eslint/types": { 12803 - "version": "5.25.0", 12804 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", 12805 - "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==", 12806 + "version": "5.48.0", 12807 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", 12808 + "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", 12809 "dev": true 12810 }, 12811 "@typescript-eslint/typescript-estree": { 12812 - "version": "5.25.0", 12813 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", 12814 - "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", 12815 + "version": "5.48.0", 12816 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", 12817 + "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", 12818 "dev": true, 12819 "requires": { 12820 - "@typescript-eslint/types": "5.25.0", 12821 - "@typescript-eslint/visitor-keys": "5.25.0", 12822 + "@typescript-eslint/types": "5.48.0", 12823 + "@typescript-eslint/visitor-keys": "5.48.0", 12824 "debug": "^4.3.4", 12825 "globby": "^11.1.0", 12826 "is-glob": "^4.0.3", 12827 @@ -8317,51 +5920,88 @@ 12828 "tsutils": "^3.21.0" 12829 }, 12830 "dependencies": { 12831 - "debug": { 12832 - "version": "4.3.4", 12833 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 12834 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 12835 + "lru-cache": { 12836 + "version": "6.0.0", 12837 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 12838 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 12839 + "dev": true, 12840 + "requires": { 12841 + "yallist": "^4.0.0" 12842 + } 12843 + }, 12844 + "semver": { 12845 + "version": "7.3.8", 12846 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 12847 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 12848 "dev": true, 12849 "requires": { 12850 - "ms": "2.1.2" 12851 + "lru-cache": "^6.0.0" 12852 } 12853 }, 12854 - "ms": { 12855 - "version": "2.1.2", 12856 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 12857 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 12858 + "yallist": { 12859 + "version": "4.0.0", 12860 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 12861 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 12862 "dev": true 12863 + } 12864 + } 12865 + }, 12866 + "@typescript-eslint/utils": { 12867 + "version": "5.48.0", 12868 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", 12869 + "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", 12870 + "dev": true, 12871 + "requires": { 12872 + "@types/json-schema": "^7.0.9", 12873 + "@types/semver": "^7.3.12", 12874 + "@typescript-eslint/scope-manager": "5.48.0", 12875 + "@typescript-eslint/types": "5.48.0", 12876 + "@typescript-eslint/typescript-estree": "5.48.0", 12877 + "eslint-scope": "^5.1.1", 12878 + "eslint-utils": "^3.0.0", 12879 + "semver": "^7.3.7" 12880 + }, 12881 + "dependencies": { 12882 + "lru-cache": { 12883 + "version": "6.0.0", 12884 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 12885 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 12886 + "dev": true, 12887 + "requires": { 12888 + "yallist": "^4.0.0" 12889 + } 12890 }, 12891 "semver": { 12892 - "version": "7.3.7", 12893 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 12894 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 12895 + "version": "7.3.8", 12896 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 12897 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 12898 "dev": true, 12899 "requires": { 12900 "lru-cache": "^6.0.0" 12901 } 12902 + }, 12903 + "yallist": { 12904 + "version": "4.0.0", 12905 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 12906 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 12907 + "dev": true 12908 } 12909 } 12910 }, 12911 "@typescript-eslint/visitor-keys": { 12912 - "version": "5.25.0", 12913 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", 12914 - "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", 12915 + "version": "5.48.0", 12916 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", 12917 + "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", 12918 "dev": true, 12919 "requires": { 12920 - "@typescript-eslint/types": "5.25.0", 12921 + "@typescript-eslint/types": "5.48.0", 12922 "eslint-visitor-keys": "^3.3.0" 12923 } 12924 }, 12925 - "abbrev": { 12926 - "version": "1.1.1", 12927 - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 12928 - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 12929 - }, 12930 "acorn": { 12931 - "version": "8.7.1", 12932 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 12933 - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 12934 + "version": "8.8.1", 12935 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", 12936 + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", 12937 "dev": true 12938 }, 12939 "acorn-jsx": { 12940 @@ -8396,40 +6036,10 @@ 12941 "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 12942 "dev": true 12943 }, 12944 - "agent-base": { 12945 - "version": "6.0.2", 12946 - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 12947 - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 12948 - "requires": { 12949 - "debug": "4" 12950 - } 12951 - }, 12952 - "agentkeepalive": { 12953 - "version": "4.2.1", 12954 - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", 12955 - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", 12956 - "optional": true, 12957 - "requires": { 12958 - "debug": "^4.1.0", 12959 - "depd": "^1.1.2", 12960 - "humanize-ms": "^1.2.1" 12961 - } 12962 - }, 12963 - "aggregate-error": { 12964 - "version": "3.1.0", 12965 - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 12966 - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 12967 - "optional": true, 12968 - "requires": { 12969 - "clean-stack": "^2.0.0", 12970 - "indent-string": "^4.0.0" 12971 - } 12972 - }, 12973 "ajv": { 12974 "version": "6.12.6", 12975 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 12976 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 12977 - "dev": true, 12978 "requires": { 12979 "fast-deep-equal": "^3.1.1", 12980 "fast-json-stable-stringify": "^2.0.0", 12981 @@ -8437,6 +6047,19 @@ 12982 "uri-js": "^4.2.2" 12983 } 12984 }, 12985 + "another-json": { 12986 + "version": "0.2.0", 12987 + "resolved": "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz", 12988 + "integrity": "sha512-/Ndrl68UQLhnCdsAzEXLMFuOR546o2qbYRqCglaNHbjXrwG1ayTcdwr3zkSGOGtGXDyR5X9nCFfnyG2AFJIsqg==" 12989 + }, 12990 + "ansi-escapes": { 12991 + "version": "4.3.2", 12992 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 12993 + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 12994 + "requires": { 12995 + "type-fest": "^0.21.3" 12996 + } 12997 + }, 12998 "ansi-regex": { 12999 "version": "5.0.1", 13000 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 13001 @@ -8452,42 +6075,19 @@ 13002 } 13003 }, 13004 "anymatch": { 13005 - "version": "3.1.2", 13006 - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 13007 - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 13008 + "version": "3.1.3", 13009 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 13010 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 13011 "dev": true, 13012 "requires": { 13013 "normalize-path": "^3.0.0", 13014 "picomatch": "^2.0.4" 13015 } 13016 }, 13017 - "append-buffer": { 13018 - "version": "1.0.2", 13019 - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", 13020 - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", 13021 - "dev": true, 13022 - "requires": { 13023 - "buffer-equal": "^1.0.0" 13024 - } 13025 - }, 13026 - "aproba": { 13027 - "version": "2.0.0", 13028 - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 13029 - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 13030 - }, 13031 - "are-we-there-yet": { 13032 - "version": "2.0.0", 13033 - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 13034 - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 13035 - "requires": { 13036 - "delegates": "^1.0.0", 13037 - "readable-stream": "^3.6.0" 13038 - } 13039 - }, 13040 "arg": { 13041 - "version": "5.0.1", 13042 - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 13043 - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", 13044 + "version": "5.0.2", 13045 + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 13046 + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 13047 "dev": true 13048 }, 13049 "argparse": { 13050 @@ -8496,100 +6096,87 @@ 13051 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 13052 "dev": true 13053 }, 13054 - "aria-query": { 13055 - "version": "4.2.2", 13056 - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", 13057 - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", 13058 - "dev": true, 13059 - "requires": { 13060 - "@babel/runtime": "^7.10.2", 13061 - "@babel/runtime-corejs3": "^7.10.2" 13062 - } 13063 - }, 13064 - "array-includes": { 13065 - "version": "3.1.5", 13066 - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", 13067 - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", 13068 - "dev": true, 13069 - "requires": { 13070 - "call-bind": "^1.0.2", 13071 - "define-properties": "^1.1.4", 13072 - "es-abstract": "^1.19.5", 13073 - "get-intrinsic": "^1.1.1", 13074 - "is-string": "^1.0.7" 13075 - } 13076 - }, 13077 "array-union": { 13078 "version": "2.1.0", 13079 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 13080 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 13081 "dev": true 13082 }, 13083 - "array.prototype.flat": { 13084 - "version": "1.3.0", 13085 - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", 13086 - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", 13087 - "dev": true, 13088 - "requires": { 13089 - "call-bind": "^1.0.2", 13090 - "define-properties": "^1.1.3", 13091 - "es-abstract": "^1.19.2", 13092 - "es-shim-unscopables": "^1.0.0" 13093 - } 13094 - }, 13095 - "array.prototype.flatmap": { 13096 - "version": "1.3.0", 13097 - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", 13098 - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", 13099 - "dev": true, 13100 + "asn1": { 13101 + "version": "0.2.6", 13102 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 13103 + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 13104 "requires": { 13105 - "call-bind": "^1.0.2", 13106 - "define-properties": "^1.1.3", 13107 - "es-abstract": "^1.19.2", 13108 - "es-shim-unscopables": "^1.0.0" 13109 + "safer-buffer": "~2.1.0" 13110 } 13111 }, 13112 - "ast-types-flow": { 13113 - "version": "0.0.7", 13114 - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", 13115 - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", 13116 - "dev": true 13117 + "assert-plus": { 13118 + "version": "1.0.0", 13119 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 13120 + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" 13121 }, 13122 - "attr-accept": { 13123 - "version": "2.2.2", 13124 - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", 13125 - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" 13126 + "asynckit": { 13127 + "version": "0.4.0", 13128 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 13129 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 13130 }, 13131 "autoprefixer": { 13132 - "version": "10.4.7", 13133 - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", 13134 - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", 13135 + "version": "10.4.13", 13136 + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", 13137 + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", 13138 "dev": true, 13139 "requires": { 13140 - "browserslist": "^4.20.3", 13141 - "caniuse-lite": "^1.0.30001335", 13142 + "browserslist": "^4.21.4", 13143 + "caniuse-lite": "^1.0.30001426", 13144 "fraction.js": "^4.2.0", 13145 "normalize-range": "^0.1.2", 13146 "picocolors": "^1.0.0", 13147 "postcss-value-parser": "^4.2.0" 13148 } 13149 }, 13150 - "axe-core": { 13151 - "version": "4.4.1", 13152 - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", 13153 - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", 13154 - "dev": true 13155 + "aws-sign2": { 13156 + "version": "0.7.0", 13157 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 13158 + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" 13159 }, 13160 - "axobject-query": { 13161 - "version": "2.2.0", 13162 - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 13163 - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", 13164 - "dev": true 13165 + "aws4": { 13166 + "version": "1.11.0", 13167 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 13168 + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" 13169 + }, 13170 + "babel-plugin-transform-hook-names": { 13171 + "version": "1.0.2", 13172 + "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", 13173 + "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==", 13174 + "dev": true, 13175 + "requires": {} 13176 }, 13177 "balanced-match": { 13178 "version": "1.0.2", 13179 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 13180 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 13181 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 13182 + "dev": true 13183 + }, 13184 + "base-x": { 13185 + "version": "3.0.9", 13186 + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 13187 + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 13188 + "requires": { 13189 + "safe-buffer": "^5.0.1" 13190 + } 13191 + }, 13192 + "base64-js": { 13193 + "version": "1.5.1", 13194 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 13195 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 13196 + }, 13197 + "bcrypt-pbkdf": { 13198 + "version": "1.0.2", 13199 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 13200 + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", 13201 + "requires": { 13202 + "tweetnacl": "^0.14.3" 13203 + } 13204 }, 13205 "binary-extensions": { 13206 "version": "2.2.0", 13207 @@ -8597,21 +6184,32 @@ 13208 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 13209 "dev": true 13210 }, 13211 - "blurhash": { 13212 - "version": "1.1.5", 13213 - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-1.1.5.tgz", 13214 - "integrity": "sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg==" 13215 - }, 13216 - "boolbase": { 13217 - "version": "1.0.0", 13218 - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 13219 - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", 13220 - "dev": true 13221 + "bl": { 13222 + "version": "4.1.0", 13223 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 13224 + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 13225 + "requires": { 13226 + "buffer": "^5.5.0", 13227 + "inherits": "^2.0.4", 13228 + "readable-stream": "^3.4.0" 13229 + }, 13230 + "dependencies": { 13231 + "buffer": { 13232 + "version": "5.7.1", 13233 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 13234 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 13235 + "requires": { 13236 + "base64-js": "^1.3.1", 13237 + "ieee754": "^1.1.13" 13238 + } 13239 + } 13240 + } 13241 }, 13242 "brace-expansion": { 13243 "version": "1.1.11", 13244 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 13245 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 13246 + "dev": true, 13247 "requires": { 13248 "balanced-match": "^1.0.0", 13249 "concat-map": "0.0.1" 13250 @@ -8626,134 +6224,50 @@ 13251 "fill-range": "^7.0.1" 13252 } 13253 }, 13254 - "broccoli-node-api": { 13255 - "version": "1.7.0", 13256 - "resolved": "https://registry.npmjs.org/broccoli-node-api/-/broccoli-node-api-1.7.0.tgz", 13257 - "integrity": "sha512-QIqLSVJWJUVOhclmkmypJJH9u9s/aWH4+FH6Q6Ju5l+Io4dtwqdPUNmDfw40o6sxhbZHhqGujDJuHTML1wG8Yw==", 13258 - "dev": true 13259 - }, 13260 - "broccoli-node-info": { 13261 - "version": "2.2.0", 13262 - "resolved": "https://registry.npmjs.org/broccoli-node-info/-/broccoli-node-info-2.2.0.tgz", 13263 - "integrity": "sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg==", 13264 - "dev": true 13265 + "browser-request": { 13266 + "version": "0.3.3", 13267 + "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", 13268 + "integrity": "sha512-YyNI4qJJ+piQG6MMEuo7J3Bzaqssufx04zpEKYfSrl/1Op59HWali9zMtBpXnkmqMcOuWJPZvudrm9wISmnCbg==" 13269 }, 13270 - "broccoli-output-wrapper": { 13271 - "version": "3.2.5", 13272 - "resolved": "https://registry.npmjs.org/broccoli-output-wrapper/-/broccoli-output-wrapper-3.2.5.tgz", 13273 - "integrity": "sha512-bQAtwjSrF4Nu0CK0JOy5OZqw9t5U0zzv2555EA/cF8/a8SLDTIetk9UgrtMVw7qKLKdSpOZ2liZNeZZDaKgayw==", 13274 + "browserslist": { 13275 + "version": "4.21.4", 13276 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 13277 + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 13278 "dev": true, 13279 "requires": { 13280 - "fs-extra": "^8.1.0", 13281 - "heimdalljs-logger": "^0.1.10", 13282 - "symlink-or-copy": "^1.2.0" 13283 - }, 13284 - "dependencies": { 13285 - "fs-extra": { 13286 - "version": "8.1.0", 13287 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 13288 - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 13289 - "dev": true, 13290 - "requires": { 13291 - "graceful-fs": "^4.2.0", 13292 - "jsonfile": "^4.0.0", 13293 - "universalify": "^0.1.0" 13294 - } 13295 - }, 13296 - "jsonfile": { 13297 - "version": "4.0.0", 13298 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 13299 - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 13300 - "dev": true, 13301 - "requires": { 13302 - "graceful-fs": "^4.1.6" 13303 - } 13304 - }, 13305 - "universalify": { 13306 - "version": "0.1.2", 13307 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 13308 - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 13309 - "dev": true 13310 - } 13311 + "caniuse-lite": "^1.0.30001400", 13312 + "electron-to-chromium": "^1.4.251", 13313 + "node-releases": "^2.0.6", 13314 + "update-browserslist-db": "^1.0.9" 13315 } 13316 }, 13317 - "broccoli-plugin": { 13318 - "version": "4.0.7", 13319 - "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz", 13320 - "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==", 13321 - "dev": true, 13322 + "bs58": { 13323 + "version": "4.0.1", 13324 + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 13325 + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 13326 "requires": { 13327 - "broccoli-node-api": "^1.7.0", 13328 - "broccoli-output-wrapper": "^3.2.5", 13329 - "fs-merger": "^3.2.1", 13330 - "promise-map-series": "^0.3.0", 13331 - "quick-temp": "^0.1.8", 13332 - "rimraf": "^3.0.2", 13333 - "symlink-or-copy": "^1.3.1" 13334 + "base-x": "^3.0.2" 13335 } 13336 }, 13337 - "browserslist": { 13338 - "version": "4.20.3", 13339 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 13340 - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 13341 - "dev": true, 13342 + "buffer": { 13343 + "version": "6.0.3", 13344 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 13345 + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 13346 "requires": { 13347 - "caniuse-lite": "^1.0.30001332", 13348 - "electron-to-chromium": "^1.4.118", 13349 - "escalade": "^3.1.1", 13350 - "node-releases": "^2.0.3", 13351 - "picocolors": "^1.0.0" 13352 + "base64-js": "^1.3.1", 13353 + "ieee754": "^1.2.1" 13354 } 13355 }, 13356 - "buffer-equal": { 13357 - "version": "1.0.0", 13358 - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", 13359 - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", 13360 - "dev": true 13361 - }, 13362 - "buffer-from": { 13363 - "version": "1.1.2", 13364 - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 13365 - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 13366 - "dev": true 13367 - }, 13368 "builtin-modules": { 13369 - "version": "3.2.0", 13370 - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 13371 - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 13372 + "version": "3.3.0", 13373 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 13374 + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 13375 "dev": true 13376 }, 13377 - "cacache": { 13378 - "version": "15.3.0", 13379 - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", 13380 - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", 13381 - "optional": true, 13382 - "requires": { 13383 - "@npmcli/fs": "^1.0.0", 13384 - "@npmcli/move-file": "^1.0.1", 13385 - "chownr": "^2.0.0", 13386 - "fs-minipass": "^2.0.0", 13387 - "glob": "^7.1.4", 13388 - "infer-owner": "^1.0.4", 13389 - "lru-cache": "^6.0.0", 13390 - "minipass": "^3.1.1", 13391 - "minipass-collect": "^1.0.2", 13392 - "minipass-flush": "^1.0.5", 13393 - "minipass-pipeline": "^1.2.2", 13394 - "mkdirp": "^1.0.3", 13395 - "p-map": "^4.0.0", 13396 - "promise-inflight": "^1.0.1", 13397 - "rimraf": "^3.0.2", 13398 - "ssri": "^8.0.1", 13399 - "tar": "^6.0.2", 13400 - "unique-filename": "^1.1.1" 13401 - } 13402 - }, 13403 "call-bind": { 13404 "version": "1.0.2", 13405 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 13406 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 13407 - "dev": true, 13408 "requires": { 13409 "function-bind": "^1.1.1", 13410 "get-intrinsic": "^1.0.2" 13411 @@ -8772,9 +6286,15 @@ 13412 "dev": true 13413 }, 13414 "caniuse-lite": { 13415 - "version": "1.0.30001342", 13416 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", 13417 - "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==" 13418 + "version": "1.0.30001441", 13419 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", 13420 + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", 13421 + "dev": true 13422 + }, 13423 + "caseless": { 13424 + "version": "0.12.0", 13425 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 13426 + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" 13427 }, 13428 "chalk": { 13429 "version": "2.4.2", 13430 @@ -8787,33 +6307,10 @@ 13431 "supports-color": "^5.3.0" 13432 } 13433 }, 13434 - "cheerio": { 13435 - "version": "1.0.0-rc.10", 13436 - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", 13437 - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", 13438 - "dev": true, 13439 - "requires": { 13440 - "cheerio-select": "^1.5.0", 13441 - "dom-serializer": "^1.3.2", 13442 - "domhandler": "^4.2.0", 13443 - "htmlparser2": "^6.1.0", 13444 - "parse5": "^6.0.1", 13445 - "parse5-htmlparser2-tree-adapter": "^6.0.1", 13446 - "tslib": "^2.2.0" 13447 - } 13448 - }, 13449 - "cheerio-select": { 13450 - "version": "1.5.0", 13451 - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", 13452 - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", 13453 - "dev": true, 13454 - "requires": { 13455 - "css-select": "^4.1.3", 13456 - "css-what": "^5.0.1", 13457 - "domelementtype": "^2.2.0", 13458 - "domhandler": "^4.2.0", 13459 - "domutils": "^2.7.0" 13460 - } 13461 + "chardet": { 13462 + "version": "0.7.0", 13463 + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 13464 + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 13465 }, 13466 "chokidar": { 13467 "version": "3.5.3", 13468 @@ -8842,91 +6339,43 @@ 13469 } 13470 } 13471 }, 13472 - "chownr": { 13473 - "version": "2.0.0", 13474 - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 13475 - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 13476 - }, 13477 "ci-info": { 13478 - "version": "3.3.0", 13479 - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", 13480 - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", 13481 + "version": "3.7.1", 13482 + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", 13483 + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", 13484 "dev": true 13485 }, 13486 "clean-regexp": { 13487 "version": "1.0.0", 13488 "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", 13489 - "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", 13490 + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", 13491 "dev": true, 13492 "requires": { 13493 "escape-string-regexp": "^1.0.5" 13494 } 13495 }, 13496 - "clean-stack": { 13497 - "version": "2.2.0", 13498 - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 13499 - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 13500 - "optional": true 13501 - }, 13502 - "clone": { 13503 - "version": "2.1.2", 13504 - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 13505 - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 13506 - "dev": true 13507 - }, 13508 - "clone-buffer": { 13509 - "version": "1.0.0", 13510 - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 13511 - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 13512 - "dev": true 13513 - }, 13514 - "clone-stats": { 13515 - "version": "1.0.0", 13516 - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 13517 - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", 13518 - "dev": true 13519 - }, 13520 - "cloneable-readable": { 13521 - "version": "1.1.3", 13522 - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", 13523 - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", 13524 - "dev": true, 13525 + "cli-cursor": { 13526 + "version": "3.1.0", 13527 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 13528 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 13529 "requires": { 13530 - "inherits": "^2.0.1", 13531 - "process-nextick-args": "^2.0.0", 13532 - "readable-stream": "^2.3.5" 13533 - }, 13534 - "dependencies": { 13535 - "readable-stream": { 13536 - "version": "2.3.7", 13537 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 13538 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 13539 - "dev": true, 13540 - "requires": { 13541 - "core-util-is": "~1.0.0", 13542 - "inherits": "~2.0.3", 13543 - "isarray": "~1.0.0", 13544 - "process-nextick-args": "~2.0.0", 13545 - "safe-buffer": "~5.1.1", 13546 - "string_decoder": "~1.1.1", 13547 - "util-deprecate": "~1.0.1" 13548 - } 13549 - }, 13550 - "string_decoder": { 13551 - "version": "1.1.1", 13552 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 13553 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 13554 - "dev": true, 13555 - "requires": { 13556 - "safe-buffer": "~5.1.0" 13557 - } 13558 - } 13559 + "restore-cursor": "^3.1.0" 13560 } 13561 }, 13562 - "clsx": { 13563 - "version": "1.1.1", 13564 - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", 13565 - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" 13566 + "cli-spinners": { 13567 + "version": "2.7.0", 13568 + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", 13569 + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" 13570 + }, 13571 + "cli-width": { 13572 + "version": "3.0.0", 13573 + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", 13574 + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" 13575 + }, 13576 + "clone": { 13577 + "version": "1.0.4", 13578 + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 13579 + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" 13580 }, 13581 "color-convert": { 13582 "version": "1.9.3", 13583 @@ -8940,104 +6389,38 @@ 13584 "color-name": { 13585 "version": "1.1.3", 13586 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 13587 - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 13588 - "dev": true 13589 - }, 13590 - "color-support": { 13591 - "version": "1.1.3", 13592 - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 13593 - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 13594 - }, 13595 - "colors": { 13596 - "version": "1.4.0", 13597 - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 13598 - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 13599 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 13600 "dev": true 13601 }, 13602 - "commander": { 13603 - "version": "9.1.0", 13604 - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", 13605 - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", 13606 - "dev": true 13607 + "combined-stream": { 13608 + "version": "1.0.8", 13609 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 13610 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 13611 + "requires": { 13612 + "delayed-stream": "~1.0.0" 13613 + } 13614 }, 13615 "concat-map": { 13616 "version": "0.0.1", 13617 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 13618 - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 13619 - }, 13620 - "concat-stream": { 13621 - "version": "2.0.0", 13622 - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", 13623 - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", 13624 - "dev": true, 13625 - "requires": { 13626 - "buffer-from": "^1.0.0", 13627 - "inherits": "^2.0.3", 13628 - "readable-stream": "^3.0.2", 13629 - "typedarray": "^0.0.6" 13630 - } 13631 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 13632 + "dev": true 13633 }, 13634 - "console-control-strings": { 13635 - "version": "1.1.0", 13636 - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 13637 - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 13638 + "content-type": { 13639 + "version": "1.0.4", 13640 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 13641 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 13642 }, 13643 "convert-source-map": { 13644 - "version": "1.8.0", 13645 - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 13646 - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 13647 - "dev": true, 13648 - "requires": { 13649 - "safe-buffer": "~5.1.1" 13650 - } 13651 - }, 13652 - "core-js": { 13653 - "version": "3.21.0", 13654 - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.0.tgz", 13655 - "integrity": "sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==" 13656 - }, 13657 - "core-js-pure": { 13658 - "version": "3.21.0", 13659 - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.0.tgz", 13660 - "integrity": "sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg==", 13661 + "version": "1.9.0", 13662 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 13663 + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 13664 "dev": true 13665 }, 13666 "core-util-is": { 13667 "version": "1.0.2", 13668 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 13669 - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 13670 - "dev": true 13671 - }, 13672 - "cors": { 13673 - "version": "2.8.5", 13674 - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 13675 - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 13676 - "requires": { 13677 - "object-assign": "^4", 13678 - "vary": "^1" 13679 - } 13680 - }, 13681 - "crc-32": { 13682 - "version": "0.3.0", 13683 - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-0.3.0.tgz", 13684 - "integrity": "sha1-aj02h/W67EH36bmf4ZU6Ll0Zd14=" 13685 - }, 13686 - "cross-env": { 13687 - "version": "7.0.3", 13688 - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", 13689 - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", 13690 - "dev": true, 13691 - "requires": { 13692 - "cross-spawn": "^7.0.1" 13693 - } 13694 - }, 13695 - "cross-fetch": { 13696 - "version": "3.1.5", 13697 - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 13698 - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 13699 - "requires": { 13700 - "node-fetch": "2.6.7" 13701 - } 13702 + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 13703 }, 13704 "cross-spawn": { 13705 "version": "7.0.3", 13706 @@ -9050,61 +6433,27 @@ 13707 "which": "^2.0.1" 13708 } 13709 }, 13710 - "css-select": { 13711 - "version": "4.2.1", 13712 - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", 13713 - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", 13714 - "dev": true, 13715 - "requires": { 13716 - "boolbase": "^1.0.0", 13717 - "css-what": "^5.1.0", 13718 - "domhandler": "^4.3.0", 13719 - "domutils": "^2.8.0", 13720 - "nth-check": "^2.0.1" 13721 - } 13722 - }, 13723 - "css-what": { 13724 - "version": "5.1.0", 13725 - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", 13726 - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", 13727 - "dev": true 13728 - }, 13729 "cssesc": { 13730 "version": "3.0.0", 13731 "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 13732 "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 13733 "dev": true 13734 }, 13735 - "csstype": { 13736 - "version": "3.0.10", 13737 - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", 13738 - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" 13739 - }, 13740 - "damerau-levenshtein": { 13741 - "version": "1.0.8", 13742 - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", 13743 - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", 13744 - "dev": true 13745 - }, 13746 - "de-indent": { 13747 - "version": "1.0.2", 13748 - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", 13749 - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", 13750 - "dev": true 13751 + "dashdash": { 13752 + "version": "1.14.1", 13753 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 13754 + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", 13755 + "requires": { 13756 + "assert-plus": "^1.0.0" 13757 + } 13758 }, 13759 "debug": { 13760 - "version": "4.3.3", 13761 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 13762 - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 13763 + "version": "4.3.4", 13764 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 13765 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 13766 + "dev": true, 13767 "requires": { 13768 "ms": "2.1.2" 13769 - }, 13770 - "dependencies": { 13771 - "ms": { 13772 - "version": "2.1.2", 13773 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 13774 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 13775 - } 13776 } 13777 }, 13778 "deep-is": { 13779 @@ -9113,47 +6462,34 @@ 13780 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 13781 "dev": true 13782 }, 13783 - "define-properties": { 13784 - "version": "1.1.4", 13785 - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 13786 - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 13787 - "dev": true, 13788 + "defaults": { 13789 + "version": "1.0.4", 13790 + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", 13791 + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", 13792 "requires": { 13793 - "has-property-descriptors": "^1.0.0", 13794 - "object-keys": "^1.1.1" 13795 + "clone": "^1.0.2" 13796 } 13797 }, 13798 "defined": { 13799 - "version": "1.0.0", 13800 - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 13801 - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 13802 + "version": "1.0.1", 13803 + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", 13804 + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", 13805 "dev": true 13806 }, 13807 - "delegates": { 13808 + "delayed-stream": { 13809 "version": "1.0.0", 13810 - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 13811 - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 13812 - }, 13813 - "depd": { 13814 - "version": "1.1.2", 13815 - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 13816 - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 13817 - "optional": true 13818 - }, 13819 - "detect-libc": { 13820 - "version": "2.0.1", 13821 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 13822 - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" 13823 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 13824 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 13825 }, 13826 "detective": { 13827 - "version": "5.2.0", 13828 - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 13829 - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 13830 + "version": "5.2.1", 13831 + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 13832 + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 13833 "dev": true, 13834 "requires": { 13835 - "acorn-node": "^1.6.1", 13836 + "acorn-node": "^1.8.2", 13837 "defined": "^1.0.0", 13838 - "minimist": "^1.1.1" 13839 + "minimist": "^1.2.6" 13840 } 13841 }, 13842 "didyoumean": { 13843 @@ -9186,202 +6522,203 @@ 13844 "esutils": "^2.0.2" 13845 } 13846 }, 13847 - "dom-serializer": { 13848 - "version": "1.3.2", 13849 - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", 13850 - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", 13851 - "dev": true, 13852 + "ecc-jsbn": { 13853 + "version": "0.1.2", 13854 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 13855 + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", 13856 "requires": { 13857 - "domelementtype": "^2.0.1", 13858 - "domhandler": "^4.2.0", 13859 - "entities": "^2.0.0" 13860 + "jsbn": "~0.1.0", 13861 + "safer-buffer": "^2.1.0" 13862 } 13863 }, 13864 - "domelementtype": { 13865 - "version": "2.2.0", 13866 - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", 13867 - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", 13868 + "electron-to-chromium": { 13869 + "version": "1.4.284", 13870 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 13871 + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 13872 "dev": true 13873 }, 13874 - "domhandler": { 13875 - "version": "4.3.0", 13876 - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", 13877 - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", 13878 + "emoji-regex": { 13879 + "version": "8.0.0", 13880 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 13881 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 13882 + }, 13883 + "error-ex": { 13884 + "version": "1.3.2", 13885 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 13886 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 13887 "dev": true, 13888 "requires": { 13889 - "domelementtype": "^2.2.0" 13890 + "is-arrayish": "^0.2.1" 13891 } 13892 }, 13893 - "domutils": { 13894 - "version": "2.8.0", 13895 - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 13896 - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 13897 + "esbuild": { 13898 + "version": "0.14.54", 13899 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 13900 + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 13901 + "dev": true, 13902 + "requires": { 13903 + "@esbuild/linux-loong64": "0.14.54", 13904 + "esbuild-android-64": "0.14.54", 13905 + "esbuild-android-arm64": "0.14.54", 13906 + "esbuild-darwin-64": "0.14.54", 13907 + "esbuild-darwin-arm64": "0.14.54", 13908 + "esbuild-freebsd-64": "0.14.54", 13909 + "esbuild-freebsd-arm64": "0.14.54", 13910 + "esbuild-linux-32": "0.14.54", 13911 + "esbuild-linux-64": "0.14.54", 13912 + "esbuild-linux-arm": "0.14.54", 13913 + "esbuild-linux-arm64": "0.14.54", 13914 + "esbuild-linux-mips64le": "0.14.54", 13915 + "esbuild-linux-ppc64le": "0.14.54", 13916 + "esbuild-linux-riscv64": "0.14.54", 13917 + "esbuild-linux-s390x": "0.14.54", 13918 + "esbuild-netbsd-64": "0.14.54", 13919 + "esbuild-openbsd-64": "0.14.54", 13920 + "esbuild-sunos-64": "0.14.54", 13921 + "esbuild-windows-32": "0.14.54", 13922 + "esbuild-windows-64": "0.14.54", 13923 + "esbuild-windows-arm64": "0.14.54" 13924 + } 13925 + }, 13926 + "esbuild-android-64": { 13927 + "version": "0.14.54", 13928 + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 13929 + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 13930 "dev": true, 13931 - "requires": { 13932 - "dom-serializer": "^1.0.1", 13933 - "domelementtype": "^2.2.0", 13934 - "domhandler": "^4.2.0" 13935 - } 13936 + "optional": true 13937 }, 13938 - "dottie": { 13939 - "version": "2.0.2", 13940 - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", 13941 - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" 13942 + "esbuild-android-arm64": { 13943 + "version": "0.14.54", 13944 + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 13945 + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 13946 + "dev": true, 13947 + "optional": true 13948 }, 13949 - "duplexify": { 13950 - "version": "3.7.1", 13951 - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", 13952 - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", 13953 + "esbuild-darwin-64": { 13954 + "version": "0.14.54", 13955 + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 13956 + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 13957 "dev": true, 13958 - "requires": { 13959 - "end-of-stream": "^1.0.0", 13960 - "inherits": "^2.0.1", 13961 - "readable-stream": "^2.0.0", 13962 - "stream-shift": "^1.0.0" 13963 - }, 13964 - "dependencies": { 13965 - "readable-stream": { 13966 - "version": "2.3.7", 13967 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 13968 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 13969 - "dev": true, 13970 - "requires": { 13971 - "core-util-is": "~1.0.0", 13972 - "inherits": "~2.0.3", 13973 - "isarray": "~1.0.0", 13974 - "process-nextick-args": "~2.0.0", 13975 - "safe-buffer": "~5.1.1", 13976 - "string_decoder": "~1.1.1", 13977 - "util-deprecate": "~1.0.1" 13978 - } 13979 - }, 13980 - "string_decoder": { 13981 - "version": "1.1.1", 13982 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 13983 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 13984 - "dev": true, 13985 - "requires": { 13986 - "safe-buffer": "~5.1.0" 13987 - } 13988 - } 13989 - } 13990 + "optional": true 13991 }, 13992 - "electron-to-chromium": { 13993 - "version": "1.4.137", 13994 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", 13995 - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", 13996 - "dev": true 13997 + "esbuild-darwin-arm64": { 13998 + "version": "0.14.54", 13999 + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 14000 + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 14001 + "dev": true, 14002 + "optional": true 14003 }, 14004 - "emoji-regex": { 14005 - "version": "9.2.2", 14006 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 14007 - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 14008 - "dev": true 14009 + "esbuild-freebsd-64": { 14010 + "version": "0.14.54", 14011 + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 14012 + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 14013 + "dev": true, 14014 + "optional": true 14015 }, 14016 - "encoding": { 14017 - "version": "0.1.13", 14018 - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 14019 - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 14020 - "optional": true, 14021 - "requires": { 14022 - "iconv-lite": "^0.6.2" 14023 - } 14024 + "esbuild-freebsd-arm64": { 14025 + "version": "0.14.54", 14026 + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 14027 + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 14028 + "dev": true, 14029 + "optional": true 14030 }, 14031 - "end-of-stream": { 14032 - "version": "1.4.4", 14033 - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 14034 - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 14035 + "esbuild-linux-32": { 14036 + "version": "0.14.54", 14037 + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 14038 + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 14039 "dev": true, 14040 - "requires": { 14041 - "once": "^1.4.0" 14042 - } 14043 + "optional": true 14044 }, 14045 - "ensure-posix-path": { 14046 - "version": "1.1.1", 14047 - "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", 14048 - "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", 14049 - "dev": true 14050 + "esbuild-linux-64": { 14051 + "version": "0.14.54", 14052 + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 14053 + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 14054 + "dev": true, 14055 + "optional": true 14056 }, 14057 - "entities": { 14058 - "version": "2.2.0", 14059 - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 14060 - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 14061 - "dev": true 14062 + "esbuild-linux-arm": { 14063 + "version": "0.14.54", 14064 + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 14065 + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 14066 + "dev": true, 14067 + "optional": true 14068 }, 14069 - "env-paths": { 14070 - "version": "2.2.1", 14071 - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 14072 - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 14073 + "esbuild-linux-arm64": { 14074 + "version": "0.14.54", 14075 + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 14076 + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 14077 + "dev": true, 14078 "optional": true 14079 }, 14080 - "eol": { 14081 - "version": "0.9.1", 14082 - "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", 14083 - "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", 14084 - "dev": true 14085 + "esbuild-linux-mips64le": { 14086 + "version": "0.14.54", 14087 + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 14088 + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 14089 + "dev": true, 14090 + "optional": true 14091 }, 14092 - "err-code": { 14093 - "version": "2.0.3", 14094 - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 14095 - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 14096 + "esbuild-linux-ppc64le": { 14097 + "version": "0.14.54", 14098 + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 14099 + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 14100 + "dev": true, 14101 "optional": true 14102 }, 14103 - "error-ex": { 14104 - "version": "1.3.2", 14105 - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 14106 - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 14107 + "esbuild-linux-riscv64": { 14108 + "version": "0.14.54", 14109 + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 14110 + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 14111 "dev": true, 14112 - "requires": { 14113 - "is-arrayish": "^0.2.1" 14114 - } 14115 + "optional": true 14116 }, 14117 - "es-abstract": { 14118 - "version": "1.19.5", 14119 - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", 14120 - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", 14121 + "esbuild-linux-s390x": { 14122 + "version": "0.14.54", 14123 + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 14124 + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 14125 "dev": true, 14126 - "requires": { 14127 - "call-bind": "^1.0.2", 14128 - "es-to-primitive": "^1.2.1", 14129 - "function-bind": "^1.1.1", 14130 - "get-intrinsic": "^1.1.1", 14131 - "get-symbol-description": "^1.0.0", 14132 - "has": "^1.0.3", 14133 - "has-symbols": "^1.0.3", 14134 - "internal-slot": "^1.0.3", 14135 - "is-callable": "^1.2.4", 14136 - "is-negative-zero": "^2.0.2", 14137 - "is-regex": "^1.1.4", 14138 - "is-shared-array-buffer": "^1.0.2", 14139 - "is-string": "^1.0.7", 14140 - "is-weakref": "^1.0.2", 14141 - "object-inspect": "^1.12.0", 14142 - "object-keys": "^1.1.1", 14143 - "object.assign": "^4.1.2", 14144 - "string.prototype.trimend": "^1.0.4", 14145 - "string.prototype.trimstart": "^1.0.4", 14146 - "unbox-primitive": "^1.0.1" 14147 - } 14148 - }, 14149 - "es-shim-unscopables": { 14150 - "version": "1.0.0", 14151 - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 14152 - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 14153 + "optional": true 14154 + }, 14155 + "esbuild-netbsd-64": { 14156 + "version": "0.14.54", 14157 + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 14158 + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 14159 "dev": true, 14160 - "requires": { 14161 - "has": "^1.0.3" 14162 - } 14163 + "optional": true 14164 }, 14165 - "es-to-primitive": { 14166 - "version": "1.2.1", 14167 - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 14168 - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 14169 + "esbuild-openbsd-64": { 14170 + "version": "0.14.54", 14171 + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 14172 + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 14173 "dev": true, 14174 - "requires": { 14175 - "is-callable": "^1.1.4", 14176 - "is-date-object": "^1.0.1", 14177 - "is-symbol": "^1.0.2" 14178 - } 14179 + "optional": true 14180 + }, 14181 + "esbuild-sunos-64": { 14182 + "version": "0.14.54", 14183 + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 14184 + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 14185 + "dev": true, 14186 + "optional": true 14187 + }, 14188 + "esbuild-windows-32": { 14189 + "version": "0.14.54", 14190 + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 14191 + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 14192 + "dev": true, 14193 + "optional": true 14194 + }, 14195 + "esbuild-windows-64": { 14196 + "version": "0.14.54", 14197 + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 14198 + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 14199 + "dev": true, 14200 + "optional": true 14201 + }, 14202 + "esbuild-windows-arm64": { 14203 + "version": "0.14.54", 14204 + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 14205 + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 14206 + "dev": true, 14207 + "optional": true 14208 }, 14209 "escalade": { 14210 "version": "3.1.1", 14211 @@ -9392,17 +6729,18 @@ 14212 "escape-string-regexp": { 14213 "version": "1.0.5", 14214 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 14215 - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 14216 - "dev": true 14217 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 14218 }, 14219 "eslint": { 14220 - "version": "8.16.0", 14221 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", 14222 - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", 14223 + "version": "8.31.0", 14224 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", 14225 + "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", 14226 "dev": true, 14227 "requires": { 14228 - "@eslint/eslintrc": "^1.3.0", 14229 - "@humanwhocodes/config-array": "^0.9.2", 14230 + "@eslint/eslintrc": "^1.4.1", 14231 + "@humanwhocodes/config-array": "^0.11.8", 14232 + "@humanwhocodes/module-importer": "^1.0.1", 14233 + "@nodelib/fs.walk": "^1.2.8", 14234 "ajv": "^6.10.0", 14235 "chalk": "^4.0.0", 14236 "cross-spawn": "^7.0.2", 14237 @@ -9412,18 +6750,21 @@ 14238 "eslint-scope": "^7.1.1", 14239 "eslint-utils": "^3.0.0", 14240 "eslint-visitor-keys": "^3.3.0", 14241 - "espree": "^9.3.2", 14242 + "espree": "^9.4.0", 14243 "esquery": "^1.4.0", 14244 "esutils": "^2.0.2", 14245 "fast-deep-equal": "^3.1.3", 14246 "file-entry-cache": "^6.0.1", 14247 - "functional-red-black-tree": "^1.0.1", 14248 - "glob-parent": "^6.0.1", 14249 - "globals": "^13.15.0", 14250 + "find-up": "^5.0.0", 14251 + "glob-parent": "^6.0.2", 14252 + "globals": "^13.19.0", 14253 + "grapheme-splitter": "^1.0.4", 14254 "ignore": "^5.2.0", 14255 "import-fresh": "^3.0.0", 14256 "imurmurhash": "^0.1.4", 14257 "is-glob": "^4.0.0", 14258 + "is-path-inside": "^3.0.3", 14259 + "js-sdsl": "^4.1.4", 14260 "js-yaml": "^4.1.0", 14261 "json-stable-stringify-without-jsonify": "^1.0.1", 14262 "levn": "^0.4.1", 14263 @@ -9434,8 +6775,7 @@ 14264 "regexpp": "^3.2.0", 14265 "strip-ansi": "^6.0.1", 14266 "strip-json-comments": "^3.1.0", 14267 - "text-table": "^0.2.0", 14268 - "v8-compile-cache": "^2.0.3" 14269 + "text-table": "^0.2.0" 14270 }, 14271 "dependencies": { 14272 "ansi-styles": { 14273 @@ -9478,10 +6818,26 @@ 14274 "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 14275 "dev": true 14276 }, 14277 + "eslint-scope": { 14278 + "version": "7.1.1", 14279 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 14280 + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 14281 + "dev": true, 14282 + "requires": { 14283 + "esrecurse": "^4.3.0", 14284 + "estraverse": "^5.2.0" 14285 + } 14286 + }, 14287 + "estraverse": { 14288 + "version": "5.3.0", 14289 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 14290 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 14291 + "dev": true 14292 + }, 14293 "globals": { 14294 - "version": "13.15.0", 14295 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 14296 - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 14297 + "version": "13.19.0", 14298 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", 14299 + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", 14300 "dev": true, 14301 "requires": { 14302 "type-fest": "^0.20.2" 14303 @@ -9510,216 +6866,21 @@ 14304 } 14305 } 14306 }, 14307 - "eslint-config-next": { 14308 - "version": "12.1.6", 14309 - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.1.6.tgz", 14310 - "integrity": "sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA==", 14311 - "dev": true, 14312 - "requires": { 14313 - "@next/eslint-plugin-next": "12.1.6", 14314 - "@rushstack/eslint-patch": "^1.1.3", 14315 - "@typescript-eslint/parser": "^5.21.0", 14316 - "eslint-import-resolver-node": "^0.3.6", 14317 - "eslint-import-resolver-typescript": "^2.7.1", 14318 - "eslint-plugin-import": "^2.26.0", 14319 - "eslint-plugin-jsx-a11y": "^6.5.1", 14320 - "eslint-plugin-react": "^7.29.4", 14321 - "eslint-plugin-react-hooks": "^4.5.0" 14322 - } 14323 - }, 14324 - "eslint-import-resolver-node": { 14325 - "version": "0.3.6", 14326 - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 14327 - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 14328 - "dev": true, 14329 - "requires": { 14330 - "debug": "^3.2.7", 14331 - "resolve": "^1.20.0" 14332 - }, 14333 - "dependencies": { 14334 - "debug": { 14335 - "version": "3.2.7", 14336 - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 14337 - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 14338 - "dev": true, 14339 - "requires": { 14340 - "ms": "^2.1.1" 14341 - } 14342 - } 14343 - } 14344 - }, 14345 - "eslint-import-resolver-typescript": { 14346 - "version": "2.7.1", 14347 - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", 14348 - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", 14349 - "dev": true, 14350 - "requires": { 14351 - "debug": "^4.3.4", 14352 - "glob": "^7.2.0", 14353 - "is-glob": "^4.0.3", 14354 - "resolve": "^1.22.0", 14355 - "tsconfig-paths": "^3.14.1" 14356 - }, 14357 - "dependencies": { 14358 - "debug": { 14359 - "version": "4.3.4", 14360 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 14361 - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 14362 - "dev": true, 14363 - "requires": { 14364 - "ms": "2.1.2" 14365 - } 14366 - }, 14367 - "ms": { 14368 - "version": "2.1.2", 14369 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 14370 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 14371 - "dev": true 14372 - } 14373 - } 14374 - }, 14375 - "eslint-module-utils": { 14376 - "version": "2.7.3", 14377 - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", 14378 - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", 14379 - "dev": true, 14380 - "requires": { 14381 - "debug": "^3.2.7", 14382 - "find-up": "^2.1.0" 14383 - }, 14384 - "dependencies": { 14385 - "debug": { 14386 - "version": "3.2.7", 14387 - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 14388 - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 14389 - "dev": true, 14390 - "requires": { 14391 - "ms": "^2.1.1" 14392 - } 14393 - } 14394 - } 14395 - }, 14396 - "eslint-plugin-import": { 14397 - "version": "2.26.0", 14398 - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", 14399 - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", 14400 - "dev": true, 14401 - "requires": { 14402 - "array-includes": "^3.1.4", 14403 - "array.prototype.flat": "^1.2.5", 14404 - "debug": "^2.6.9", 14405 - "doctrine": "^2.1.0", 14406 - "eslint-import-resolver-node": "^0.3.6", 14407 - "eslint-module-utils": "^2.7.3", 14408 - "has": "^1.0.3", 14409 - "is-core-module": "^2.8.1", 14410 - "is-glob": "^4.0.3", 14411 - "minimatch": "^3.1.2", 14412 - "object.values": "^1.1.5", 14413 - "resolve": "^1.22.0", 14414 - "tsconfig-paths": "^3.14.1" 14415 - }, 14416 - "dependencies": { 14417 - "debug": { 14418 - "version": "2.6.9", 14419 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 14420 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 14421 - "dev": true, 14422 - "requires": { 14423 - "ms": "2.0.0" 14424 - } 14425 - }, 14426 - "doctrine": { 14427 - "version": "2.1.0", 14428 - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 14429 - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 14430 - "dev": true, 14431 - "requires": { 14432 - "esutils": "^2.0.2" 14433 - } 14434 - }, 14435 - "ms": { 14436 - "version": "2.0.0", 14437 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 14438 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 14439 - "dev": true 14440 - } 14441 - } 14442 - }, 14443 - "eslint-plugin-jsx-a11y": { 14444 - "version": "6.5.1", 14445 - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", 14446 - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", 14447 - "dev": true, 14448 - "requires": { 14449 - "@babel/runtime": "^7.16.3", 14450 - "aria-query": "^4.2.2", 14451 - "array-includes": "^3.1.4", 14452 - "ast-types-flow": "^0.0.7", 14453 - "axe-core": "^4.3.5", 14454 - "axobject-query": "^2.2.0", 14455 - "damerau-levenshtein": "^1.0.7", 14456 - "emoji-regex": "^9.2.2", 14457 - "has": "^1.0.3", 14458 - "jsx-ast-utils": "^3.2.1", 14459 - "language-tags": "^1.0.5", 14460 - "minimatch": "^3.0.4" 14461 - } 14462 - }, 14463 - "eslint-plugin-react": { 14464 - "version": "7.30.0", 14465 - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", 14466 - "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", 14467 + "eslint-plugin-tailwindcss": { 14468 + "version": "3.8.0", 14469 + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.8.0.tgz", 14470 + "integrity": "sha512-Lsyncgp/eXZriAEUK9zfGHOH+9iQplygHiOuGY8SFFHKIeT0BYjyST/ownHF8UPa1TEh+jJPkdE2vlV3778C3w==", 14471 "dev": true, 14472 "requires": { 14473 - "array-includes": "^3.1.5", 14474 - "array.prototype.flatmap": "^1.3.0", 14475 - "doctrine": "^2.1.0", 14476 - "estraverse": "^5.3.0", 14477 - "jsx-ast-utils": "^2.4.1 || ^3.0.0", 14478 - "minimatch": "^3.1.2", 14479 - "object.entries": "^1.1.5", 14480 - "object.fromentries": "^2.0.5", 14481 - "object.hasown": "^1.1.1", 14482 - "object.values": "^1.1.5", 14483 - "prop-types": "^15.8.1", 14484 - "resolve": "^2.0.0-next.3", 14485 - "semver": "^6.3.0", 14486 - "string.prototype.matchall": "^4.0.7" 14487 - }, 14488 - "dependencies": { 14489 - "doctrine": { 14490 - "version": "2.1.0", 14491 - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 14492 - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 14493 - "dev": true, 14494 - "requires": { 14495 - "esutils": "^2.0.2" 14496 - } 14497 - }, 14498 - "resolve": { 14499 - "version": "2.0.0-next.3", 14500 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 14501 - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 14502 - "dev": true, 14503 - "requires": { 14504 - "is-core-module": "^2.2.0", 14505 - "path-parse": "^1.0.6" 14506 - } 14507 - } 14508 + "fast-glob": "^3.2.5", 14509 + "postcss": "^8.4.4", 14510 + "tailwindcss": "^3.2.2" 14511 } 14512 }, 14513 - "eslint-plugin-react-hooks": { 14514 - "version": "4.5.0", 14515 - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz", 14516 - "integrity": "sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==", 14517 - "dev": true, 14518 - "requires": {} 14519 - }, 14520 "eslint-plugin-unicorn": { 14521 - "version": "42.0.0", 14522 - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz", 14523 - "integrity": "sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==", 14524 + "version": "41.0.1", 14525 + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-41.0.1.tgz", 14526 + "integrity": "sha512-gF5vo2dIj0YdNMQ/IMegiBkQdQ22GBFFVpdkJP+0og3w7XD4ypea0xQVRv6iofkLVR2w0phAdikcnU01ybd4Ow==", 14527 "dev": true, 14528 "requires": { 14529 "@babel/helper-validator-identifier": "^7.15.7", 14530 @@ -9738,25 +6899,40 @@ 14531 "strip-indent": "^3.0.0" 14532 }, 14533 "dependencies": { 14534 + "lru-cache": { 14535 + "version": "6.0.0", 14536 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 14537 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 14538 + "dev": true, 14539 + "requires": { 14540 + "yallist": "^4.0.0" 14541 + } 14542 + }, 14543 "semver": { 14544 - "version": "7.3.5", 14545 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 14546 - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 14547 + "version": "7.3.8", 14548 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 14549 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 14550 "dev": true, 14551 "requires": { 14552 "lru-cache": "^6.0.0" 14553 } 14554 + }, 14555 + "yallist": { 14556 + "version": "4.0.0", 14557 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 14558 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 14559 + "dev": true 14560 } 14561 } 14562 }, 14563 "eslint-scope": { 14564 - "version": "7.1.1", 14565 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 14566 - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 14567 + "version": "5.1.1", 14568 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 14569 + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 14570 "dev": true, 14571 "requires": { 14572 "esrecurse": "^4.3.0", 14573 - "estraverse": "^5.2.0" 14574 + "estraverse": "^4.1.1" 14575 } 14576 }, 14577 "eslint-utils": { 14578 @@ -9783,12 +6959,12 @@ 14579 "dev": true 14580 }, 14581 "espree": { 14582 - "version": "9.3.2", 14583 - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", 14584 - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", 14585 + "version": "9.4.1", 14586 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", 14587 + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", 14588 "dev": true, 14589 "requires": { 14590 - "acorn": "^8.7.1", 14591 + "acorn": "^8.8.0", 14592 "acorn-jsx": "^5.3.2", 14593 "eslint-visitor-keys": "^3.3.0" 14594 } 14595 @@ -9800,6 +6976,14 @@ 14596 "dev": true, 14597 "requires": { 14598 "estraverse": "^5.1.0" 14599 + }, 14600 + "dependencies": { 14601 + "estraverse": { 14602 + "version": "5.3.0", 14603 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 14604 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 14605 + "dev": true 14606 + } 14607 } 14608 }, 14609 "esrecurse": { 14610 @@ -9809,12 +6993,26 @@ 14611 "dev": true, 14612 "requires": { 14613 "estraverse": "^5.2.0" 14614 + }, 14615 + "dependencies": { 14616 + "estraverse": { 14617 + "version": "5.3.0", 14618 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 14619 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 14620 + "dev": true 14621 + } 14622 } 14623 }, 14624 "estraverse": { 14625 - "version": "5.3.0", 14626 - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 14627 - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 14628 + "version": "4.3.0", 14629 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 14630 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 14631 + "dev": true 14632 + }, 14633 + "estree-walker": { 14634 + "version": "2.0.2", 14635 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 14636 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 14637 "dev": true 14638 }, 14639 "esutils": { 14640 @@ -9823,22 +7021,40 @@ 14641 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 14642 "dev": true 14643 }, 14644 + "events": { 14645 + "version": "3.3.0", 14646 + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 14647 + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" 14648 + }, 14649 "extend": { 14650 "version": "3.0.2", 14651 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 14652 - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 14653 - "dev": true 14654 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 14655 + }, 14656 + "external-editor": { 14657 + "version": "3.1.0", 14658 + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 14659 + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 14660 + "requires": { 14661 + "chardet": "^0.7.0", 14662 + "iconv-lite": "^0.4.24", 14663 + "tmp": "^0.0.33" 14664 + } 14665 + }, 14666 + "extsprintf": { 14667 + "version": "1.3.0", 14668 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 14669 + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" 14670 }, 14671 "fast-deep-equal": { 14672 "version": "3.1.3", 14673 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 14674 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 14675 - "dev": true 14676 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 14677 }, 14678 "fast-glob": { 14679 - "version": "3.2.11", 14680 - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 14681 - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 14682 + "version": "3.2.12", 14683 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 14684 + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 14685 "dev": true, 14686 "requires": { 14687 "@nodelib/fs.stat": "^2.0.2", 14688 @@ -9862,30 +7078,29 @@ 14689 "fast-json-stable-stringify": { 14690 "version": "2.1.0", 14691 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 14692 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 14693 - "dev": true 14694 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 14695 }, 14696 "fast-levenshtein": { 14697 "version": "2.0.6", 14698 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 14699 - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 14700 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 14701 "dev": true 14702 }, 14703 "fastq": { 14704 - "version": "1.13.0", 14705 - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 14706 - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 14707 + "version": "1.15.0", 14708 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 14709 + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 14710 "dev": true, 14711 "requires": { 14712 "reusify": "^1.0.4" 14713 } 14714 }, 14715 - "feed": { 14716 - "version": "git+ssh://git@github.com/yshrsmz/feed.git#c50d7a82c5b6141039830d615b19b760e173e231", 14717 - "integrity": "sha512-wnhCYNIcF4LksTndqOIfdTMsbbGdGlT3ZVVjxrh57K0OGWV1H3ZNk4Sp9qA+yrvAzFLiBll50hCgImFC0YlbZg==", 14718 - "from": "feed@yshrsmz/feed#c50d7a82c5b6141039830d615b19b760e173e231", 14719 + "figures": { 14720 + "version": "3.2.0", 14721 + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 14722 + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 14723 "requires": { 14724 - "xml-js": "^1.6.11" 14725 + "escape-string-regexp": "^1.0.5" 14726 } 14727 }, 14728 "file-entry-cache": { 14729 @@ -9897,14 +7112,6 @@ 14730 "flat-cache": "^3.0.4" 14731 } 14732 }, 14733 - "file-selector": { 14734 - "version": "0.6.0", 14735 - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", 14736 - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", 14737 - "requires": { 14738 - "tslib": "^2.4.0" 14739 - } 14740 - }, 14741 "fill-range": { 14742 "version": "7.0.1", 14743 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 14744 @@ -9915,12 +7122,13 @@ 14745 } 14746 }, 14747 "find-up": { 14748 - "version": "2.1.0", 14749 - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 14750 - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 14751 + "version": "5.0.0", 14752 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 14753 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 14754 "dev": true, 14755 "requires": { 14756 - "locate-path": "^2.0.0" 14757 + "locate-path": "^6.0.0", 14758 + "path-exists": "^4.0.0" 14759 } 14760 }, 14761 "flat-cache": { 14762 @@ -9934,45 +7142,24 @@ 14763 } 14764 }, 14765 "flatted": { 14766 - "version": "3.2.5", 14767 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 14768 - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 14769 + "version": "3.2.7", 14770 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 14771 + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 14772 "dev": true 14773 }, 14774 - "flush-write-stream": { 14775 - "version": "1.1.1", 14776 - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", 14777 - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", 14778 - "dev": true, 14779 + "forever-agent": { 14780 + "version": "0.6.1", 14781 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 14782 + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" 14783 + }, 14784 + "form-data": { 14785 + "version": "2.3.3", 14786 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 14787 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 14788 "requires": { 14789 - "inherits": "^2.0.3", 14790 - "readable-stream": "^2.3.6" 14791 - }, 14792 - "dependencies": { 14793 - "readable-stream": { 14794 - "version": "2.3.7", 14795 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 14796 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 14797 - "dev": true, 14798 - "requires": { 14799 - "core-util-is": "~1.0.0", 14800 - "inherits": "~2.0.3", 14801 - "isarray": "~1.0.0", 14802 - "process-nextick-args": "~2.0.0", 14803 - "safe-buffer": "~5.1.1", 14804 - "string_decoder": "~1.1.1", 14805 - "util-deprecate": "~1.0.1" 14806 - } 14807 - }, 14808 - "string_decoder": { 14809 - "version": "1.1.1", 14810 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 14811 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 14812 - "dev": true, 14813 - "requires": { 14814 - "safe-buffer": "~5.1.0" 14815 - } 14816 - } 14817 + "asynckit": "^0.4.0", 14818 + "combined-stream": "^1.0.6", 14819 + "mime-types": "^2.1.12" 14820 } 14821 }, 14822 "fraction.js": { 14823 @@ -9981,283 +7168,71 @@ 14824 "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 14825 "dev": true 14826 }, 14827 - "fs-extra": { 14828 - "version": "10.0.0", 14829 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", 14830 - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", 14831 - "dev": true, 14832 - "requires": { 14833 - "graceful-fs": "^4.2.0", 14834 - "jsonfile": "^6.0.1", 14835 - "universalify": "^2.0.0" 14836 - } 14837 - }, 14838 - "fs-merger": { 14839 - "version": "3.2.1", 14840 - "resolved": "https://registry.npmjs.org/fs-merger/-/fs-merger-3.2.1.tgz", 14841 - "integrity": "sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==", 14842 - "dev": true, 14843 - "requires": { 14844 - "broccoli-node-api": "^1.7.0", 14845 - "broccoli-node-info": "^2.1.0", 14846 - "fs-extra": "^8.0.1", 14847 - "fs-tree-diff": "^2.0.1", 14848 - "walk-sync": "^2.2.0" 14849 - }, 14850 - "dependencies": { 14851 - "fs-extra": { 14852 - "version": "8.1.0", 14853 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 14854 - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 14855 - "dev": true, 14856 - "requires": { 14857 - "graceful-fs": "^4.2.0", 14858 - "jsonfile": "^4.0.0", 14859 - "universalify": "^0.1.0" 14860 - } 14861 - }, 14862 - "jsonfile": { 14863 - "version": "4.0.0", 14864 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 14865 - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 14866 - "dev": true, 14867 - "requires": { 14868 - "graceful-fs": "^4.1.6" 14869 - } 14870 - }, 14871 - "universalify": { 14872 - "version": "0.1.2", 14873 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 14874 - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 14875 - "dev": true 14876 - } 14877 - } 14878 - }, 14879 - "fs-minipass": { 14880 - "version": "2.1.0", 14881 - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 14882 - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 14883 - "requires": { 14884 - "minipass": "^3.0.0" 14885 - } 14886 - }, 14887 - "fs-mkdirp-stream": { 14888 - "version": "1.0.0", 14889 - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", 14890 - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", 14891 - "dev": true, 14892 - "requires": { 14893 - "graceful-fs": "^4.1.11", 14894 - "through2": "^2.0.3" 14895 - }, 14896 - "dependencies": { 14897 - "readable-stream": { 14898 - "version": "2.3.7", 14899 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 14900 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 14901 - "dev": true, 14902 - "requires": { 14903 - "core-util-is": "~1.0.0", 14904 - "inherits": "~2.0.3", 14905 - "isarray": "~1.0.0", 14906 - "process-nextick-args": "~2.0.0", 14907 - "safe-buffer": "~5.1.1", 14908 - "string_decoder": "~1.1.1", 14909 - "util-deprecate": "~1.0.1" 14910 - } 14911 - }, 14912 - "string_decoder": { 14913 - "version": "1.1.1", 14914 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 14915 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 14916 - "dev": true, 14917 - "requires": { 14918 - "safe-buffer": "~5.1.0" 14919 - } 14920 - }, 14921 - "through2": { 14922 - "version": "2.0.5", 14923 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 14924 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 14925 - "dev": true, 14926 - "requires": { 14927 - "readable-stream": "~2.3.6", 14928 - "xtend": "~4.0.1" 14929 - } 14930 - } 14931 - } 14932 - }, 14933 - "fs-tree-diff": { 14934 - "version": "2.0.1", 14935 - "resolved": "https://registry.npmjs.org/fs-tree-diff/-/fs-tree-diff-2.0.1.tgz", 14936 - "integrity": "sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==", 14937 - "dev": true, 14938 - "requires": { 14939 - "@types/symlink-or-copy": "^1.2.0", 14940 - "heimdalljs-logger": "^0.1.7", 14941 - "object-assign": "^4.1.0", 14942 - "path-posix": "^1.0.0", 14943 - "symlink-or-copy": "^1.1.8" 14944 - } 14945 - }, 14946 "fs.realpath": { 14947 "version": "1.0.0", 14948 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 14949 - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 14950 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 14951 + "dev": true 14952 }, 14953 "fsevents": { 14954 "version": "2.3.2", 14955 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 14956 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 14957 + "dev": true, 14958 "optional": true 14959 }, 14960 "function-bind": { 14961 "version": "1.1.1", 14962 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 14963 - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 14964 - "dev": true 14965 - }, 14966 - "functional-red-black-tree": { 14967 - "version": "1.0.1", 14968 - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 14969 - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 14970 - "dev": true 14971 - }, 14972 - "functions-have-names": { 14973 - "version": "1.2.3", 14974 - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 14975 - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 14976 - "dev": true 14977 - }, 14978 - "gauge": { 14979 - "version": "3.0.2", 14980 - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 14981 - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 14982 - "requires": { 14983 - "aproba": "^1.0.3 || ^2.0.0", 14984 - "color-support": "^1.1.2", 14985 - "console-control-strings": "^1.0.0", 14986 - "has-unicode": "^2.0.1", 14987 - "object-assign": "^4.1.1", 14988 - "signal-exit": "^3.0.0", 14989 - "string-width": "^4.2.3", 14990 - "strip-ansi": "^6.0.1", 14991 - "wide-align": "^1.1.2" 14992 - } 14993 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 14994 }, 14995 "gensync": { 14996 "version": "1.0.0-beta.2", 14997 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 14998 "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 14999 - "dev": true, 15000 - "peer": true 15001 + "dev": true 15002 }, 15003 "get-intrinsic": { 15004 - "version": "1.1.1", 15005 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 15006 - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 15007 - "dev": true, 15008 + "version": "1.1.3", 15009 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 15010 + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 15011 "requires": { 15012 "function-bind": "^1.1.1", 15013 "has": "^1.0.3", 15014 - "has-symbols": "^1.0.1" 15015 + "has-symbols": "^1.0.3" 15016 } 15017 }, 15018 - "get-symbol-description": { 15019 - "version": "1.0.0", 15020 - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 15021 - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 15022 - "dev": true, 15023 + "getpass": { 15024 + "version": "0.1.7", 15025 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 15026 + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", 15027 "requires": { 15028 - "call-bind": "^1.0.2", 15029 - "get-intrinsic": "^1.1.1" 15030 + "assert-plus": "^1.0.0" 15031 } 15032 }, 15033 "glob": { 15034 - "version": "7.2.0", 15035 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 15036 - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 15037 + "version": "7.2.3", 15038 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 15039 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 15040 + "dev": true, 15041 "requires": { 15042 "fs.realpath": "^1.0.0", 15043 "inflight": "^1.0.4", 15044 "inherits": "2", 15045 - "minimatch": "^3.0.4", 15046 + "minimatch": "^3.1.1", 15047 "once": "^1.3.0", 15048 "path-is-absolute": "^1.0.0" 15049 } 15050 }, 15051 - "glob-parent": { 15052 - "version": "6.0.2", 15053 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 15054 - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 15055 - "dev": true, 15056 - "requires": { 15057 - "is-glob": "^4.0.3" 15058 - } 15059 - }, 15060 - "glob-stream": { 15061 - "version": "6.1.0", 15062 - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", 15063 - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", 15064 - "dev": true, 15065 - "requires": { 15066 - "extend": "^3.0.0", 15067 - "glob": "^7.1.1", 15068 - "glob-parent": "^3.1.0", 15069 - "is-negated-glob": "^1.0.0", 15070 - "ordered-read-streams": "^1.0.0", 15071 - "pumpify": "^1.3.5", 15072 - "readable-stream": "^2.1.5", 15073 - "remove-trailing-separator": "^1.0.1", 15074 - "to-absolute-glob": "^2.0.0", 15075 - "unique-stream": "^2.0.2" 15076 - }, 15077 - "dependencies": { 15078 - "glob-parent": { 15079 - "version": "3.1.0", 15080 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 15081 - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 15082 - "dev": true, 15083 - "requires": { 15084 - "is-glob": "^3.1.0", 15085 - "path-dirname": "^1.0.0" 15086 - } 15087 - }, 15088 - "is-glob": { 15089 - "version": "3.1.0", 15090 - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 15091 - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 15092 - "dev": true, 15093 - "requires": { 15094 - "is-extglob": "^2.1.0" 15095 - } 15096 - }, 15097 - "readable-stream": { 15098 - "version": "2.3.7", 15099 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 15100 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 15101 - "dev": true, 15102 - "requires": { 15103 - "core-util-is": "~1.0.0", 15104 - "inherits": "~2.0.3", 15105 - "isarray": "~1.0.0", 15106 - "process-nextick-args": "~2.0.0", 15107 - "safe-buffer": "~5.1.1", 15108 - "string_decoder": "~1.1.1", 15109 - "util-deprecate": "~1.0.1" 15110 - } 15111 - }, 15112 - "string_decoder": { 15113 - "version": "1.1.1", 15114 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 15115 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 15116 - "dev": true, 15117 - "requires": { 15118 - "safe-buffer": "~5.1.0" 15119 - } 15120 - } 15121 - } 15122 - }, 15123 + "glob-parent": { 15124 + "version": "6.0.2", 15125 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 15126 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 15127 + "dev": true, 15128 + "requires": { 15129 + "is-glob": "^4.0.3" 15130 + } 15131 + }, 15132 "globals": { 15133 "version": "11.12.0", 15134 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 15135 @@ -10278,164 +7253,44 @@ 15136 "slash": "^3.0.0" 15137 } 15138 }, 15139 - "graceful-fs": { 15140 - "version": "4.2.9", 15141 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", 15142 - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", 15143 - "devOptional": true 15144 + "grapheme-splitter": { 15145 + "version": "1.0.4", 15146 + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 15147 + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 15148 + "dev": true 15149 }, 15150 - "gulp-sort": { 15151 + "har-schema": { 15152 "version": "2.0.0", 15153 - "resolved": "https://registry.npmjs.org/gulp-sort/-/gulp-sort-2.0.0.tgz", 15154 - "integrity": "sha1-xnYqLx8N4KP8WVohWZ0/rI26Gso=", 15155 - "dev": true, 15156 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 15157 + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" 15158 + }, 15159 + "har-validator": { 15160 + "version": "5.1.5", 15161 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 15162 + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 15163 "requires": { 15164 - "through2": "^2.0.1" 15165 - }, 15166 - "dependencies": { 15167 - "readable-stream": { 15168 - "version": "2.3.7", 15169 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 15170 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 15171 - "dev": true, 15172 - "requires": { 15173 - "core-util-is": "~1.0.0", 15174 - "inherits": "~2.0.3", 15175 - "isarray": "~1.0.0", 15176 - "process-nextick-args": "~2.0.0", 15177 - "safe-buffer": "~5.1.1", 15178 - "string_decoder": "~1.1.1", 15179 - "util-deprecate": "~1.0.1" 15180 - } 15181 - }, 15182 - "string_decoder": { 15183 - "version": "1.1.1", 15184 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 15185 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 15186 - "dev": true, 15187 - "requires": { 15188 - "safe-buffer": "~5.1.0" 15189 - } 15190 - }, 15191 - "through2": { 15192 - "version": "2.0.5", 15193 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 15194 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 15195 - "dev": true, 15196 - "requires": { 15197 - "readable-stream": "~2.3.6", 15198 - "xtend": "~4.0.1" 15199 - } 15200 - } 15201 + "ajv": "^6.12.3", 15202 + "har-schema": "^2.0.0" 15203 } 15204 }, 15205 "has": { 15206 "version": "1.0.3", 15207 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 15208 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 15209 - "dev": true, 15210 "requires": { 15211 "function-bind": "^1.1.1" 15212 } 15213 }, 15214 - "has-bigints": { 15215 - "version": "1.0.1", 15216 - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 15217 - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 15218 - "dev": true 15219 - }, 15220 "has-flag": { 15221 "version": "3.0.0", 15222 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 15223 - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 15224 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 15225 "dev": true 15226 }, 15227 - "has-property-descriptors": { 15228 - "version": "1.0.0", 15229 - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 15230 - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 15231 - "dev": true, 15232 - "requires": { 15233 - "get-intrinsic": "^1.1.1" 15234 - } 15235 - }, 15236 "has-symbols": { 15237 "version": "1.0.3", 15238 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 15239 - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 15240 - "dev": true 15241 - }, 15242 - "has-tostringtag": { 15243 - "version": "1.0.0", 15244 - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 15245 - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 15246 - "dev": true, 15247 - "requires": { 15248 - "has-symbols": "^1.0.2" 15249 - } 15250 - }, 15251 - "has-unicode": { 15252 - "version": "2.0.1", 15253 - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 15254 - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 15255 - }, 15256 - "he": { 15257 - "version": "1.2.0", 15258 - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 15259 - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 15260 - "dev": true 15261 - }, 15262 - "heimdalljs": { 15263 - "version": "0.2.6", 15264 - "resolved": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.6.tgz", 15265 - "integrity": "sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==", 15266 - "dev": true, 15267 - "requires": { 15268 - "rsvp": "~3.2.1" 15269 - }, 15270 - "dependencies": { 15271 - "rsvp": { 15272 - "version": "3.2.1", 15273 - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.2.1.tgz", 15274 - "integrity": "sha1-B8tKXfJa3Z6Cbrxn3Mn9idsn2Eo=", 15275 - "dev": true 15276 - } 15277 - } 15278 - }, 15279 - "heimdalljs-logger": { 15280 - "version": "0.1.10", 15281 - "resolved": "https://registry.npmjs.org/heimdalljs-logger/-/heimdalljs-logger-0.1.10.tgz", 15282 - "integrity": "sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==", 15283 - "dev": true, 15284 - "requires": { 15285 - "debug": "^2.2.0", 15286 - "heimdalljs": "^0.2.6" 15287 - }, 15288 - "dependencies": { 15289 - "debug": { 15290 - "version": "2.6.9", 15291 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 15292 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 15293 - "dev": true, 15294 - "requires": { 15295 - "ms": "2.0.0" 15296 - } 15297 - }, 15298 - "ms": { 15299 - "version": "2.0.0", 15300 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 15301 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 15302 - "dev": true 15303 - } 15304 - } 15305 - }, 15306 - "hoist-non-react-statics": { 15307 - "version": "3.3.2", 15308 - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 15309 - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 15310 - "requires": { 15311 - "react-is": "^16.7.0" 15312 - } 15313 + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 15314 }, 15315 "hosted-git-info": { 15316 "version": "2.8.9", 15317 @@ -10443,125 +7298,35 @@ 15318 "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 15319 "dev": true 15320 }, 15321 - "html-escaper": { 15322 - "version": "2.0.2", 15323 - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 15324 - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" 15325 - }, 15326 - "html-parse-stringify": { 15327 - "version": "3.0.1", 15328 - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", 15329 - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", 15330 - "requires": { 15331 - "void-elements": "3.1.0" 15332 - } 15333 - }, 15334 - "htmlparser2": { 15335 - "version": "6.1.0", 15336 - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", 15337 - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", 15338 - "dev": true, 15339 - "requires": { 15340 - "domelementtype": "^2.0.1", 15341 - "domhandler": "^4.0.0", 15342 - "domutils": "^2.5.2", 15343 - "entities": "^2.0.0" 15344 - } 15345 - }, 15346 - "http-cache-semantics": { 15347 - "version": "4.1.0", 15348 - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 15349 - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 15350 - "optional": true 15351 - }, 15352 - "http-proxy-agent": { 15353 - "version": "4.0.1", 15354 - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 15355 - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 15356 - "optional": true, 15357 + "http-signature": { 15358 + "version": "1.2.0", 15359 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 15360 + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", 15361 "requires": { 15362 - "@tootallnate/once": "1", 15363 - "agent-base": "6", 15364 - "debug": "4" 15365 + "assert-plus": "^1.0.0", 15366 + "jsprim": "^1.2.2", 15367 + "sshpk": "^1.7.0" 15368 } 15369 }, 15370 - "https-proxy-agent": { 15371 - "version": "5.0.0", 15372 - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 15373 - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 15374 + "iconv-lite": { 15375 + "version": "0.4.24", 15376 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 15377 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 15378 "requires": { 15379 - "agent-base": "6", 15380 - "debug": "4" 15381 + "safer-buffer": ">= 2.1.2 < 3" 15382 } 15383 }, 15384 - "humanize-ms": { 15385 + "ieee754": { 15386 "version": "1.2.1", 15387 - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 15388 - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", 15389 - "optional": true, 15390 - "requires": { 15391 - "ms": "^2.0.0" 15392 - } 15393 - }, 15394 - "i18next": { 15395 - "version": "21.6.14", 15396 - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.14.tgz", 15397 - "integrity": "sha512-XL6WyD+xlwQwbieXRlXhKWoLb/rkch50/rA+vl6untHnJ+aYnkQ0YDZciTWE78PPhOpbi2gR0LTJCJpiAhA+uQ==", 15398 - "requires": { 15399 - "@babel/runtime": "^7.17.2" 15400 - } 15401 - }, 15402 - "i18next-fs-backend": { 15403 - "version": "1.1.4", 15404 - "resolved": "https://registry.npmjs.org/i18next-fs-backend/-/i18next-fs-backend-1.1.4.tgz", 15405 - "integrity": "sha512-/MfAGMP0jHonV966uFf9PkWWuDjPYLIcsipnSO3NxpNtAgRUKLTwvm85fEmsF6hGeu0zbZiCQ3W74jwO6K9uXA==" 15406 - }, 15407 - "i18next-parser": { 15408 - "version": "6.4.0", 15409 - "resolved": "https://registry.npmjs.org/i18next-parser/-/i18next-parser-6.4.0.tgz", 15410 - "integrity": "sha512-UjPs2AgjJSs6JEYr9MnWiPoq4CRx5L/9VhXVhtSsz+1qoaDVvK8zgrcc+Vv0itP//B6BWTnRZxw88FOy9frAvQ==", 15411 - "dev": true, 15412 - "requires": { 15413 - "@babel/runtime": "^7.15.4", 15414 - "broccoli-plugin": "^4.0.7", 15415 - "cheerio": "^1.0.0-rc.2", 15416 - "colors": "1.4.0", 15417 - "commander": "~9.1.0", 15418 - "concat-stream": "~2.0.0", 15419 - "eol": "^0.9.1", 15420 - "fs-extra": "^10.0.0", 15421 - "gulp-sort": "^2.0.0", 15422 - "i18next": "^21.2.0", 15423 - "js-yaml": "4.1.0", 15424 - "rsvp": "^4.8.2", 15425 - "sort-keys": "^5.0.0", 15426 - "through2": "~4.0.2", 15427 - "typescript": "^4.2.4", 15428 - "vinyl": "~2.2.1", 15429 - "vinyl-fs": "^3.0.2", 15430 - "vue-template-compiler": "^2.6.11" 15431 - } 15432 - }, 15433 - "iconv-lite": { 15434 - "version": "0.6.3", 15435 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 15436 - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 15437 - "optional": true, 15438 - "requires": { 15439 - "safer-buffer": ">= 2.1.2 < 3.0.0" 15440 - } 15441 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 15442 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 15443 }, 15444 "ignore": { 15445 - "version": "5.2.0", 15446 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 15447 - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 15448 + "version": "5.2.4", 15449 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 15450 + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 15451 "dev": true 15452 }, 15453 - "immediate": { 15454 - "version": "3.0.6", 15455 - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 15456 - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" 15457 - }, 15458 "import-fresh": { 15459 "version": "3.3.0", 15460 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 15461 @@ -10575,30 +7340,20 @@ 15462 "imurmurhash": { 15463 "version": "0.1.4", 15464 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 15465 - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 15466 - "devOptional": true 15467 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 15468 + "dev": true 15469 }, 15470 "indent-string": { 15471 "version": "4.0.0", 15472 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 15473 "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 15474 - "devOptional": true 15475 - }, 15476 - "infer-owner": { 15477 - "version": "1.0.4", 15478 - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 15479 - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 15480 - "optional": true 15481 - }, 15482 - "inflection": { 15483 - "version": "1.13.2", 15484 - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", 15485 - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" 15486 + "dev": true 15487 }, 15488 "inflight": { 15489 "version": "1.0.6", 15490 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 15491 - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 15492 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 15493 + "dev": true, 15494 "requires": { 15495 "once": "^1.3.0", 15496 "wrappy": "1" 15497 @@ -10609,48 +7364,79 @@ 15498 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 15499 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 15500 }, 15501 - "internal-slot": { 15502 - "version": "1.0.3", 15503 - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 15504 - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 15505 - "dev": true, 15506 - "requires": { 15507 - "get-intrinsic": "^1.1.0", 15508 - "has": "^1.0.3", 15509 - "side-channel": "^1.0.4" 15510 - } 15511 - }, 15512 - "ip": { 15513 - "version": "1.1.5", 15514 - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", 15515 - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", 15516 - "optional": true 15517 - }, 15518 - "is-absolute": { 15519 - "version": "1.0.0", 15520 - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 15521 - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 15522 - "dev": true, 15523 - "requires": { 15524 - "is-relative": "^1.0.0", 15525 - "is-windows": "^1.0.1" 15526 + "inquirer": { 15527 + "version": "8.2.5", 15528 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", 15529 + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", 15530 + "requires": { 15531 + "ansi-escapes": "^4.2.1", 15532 + "chalk": "^4.1.1", 15533 + "cli-cursor": "^3.1.0", 15534 + "cli-width": "^3.0.0", 15535 + "external-editor": "^3.0.3", 15536 + "figures": "^3.0.0", 15537 + "lodash": "^4.17.21", 15538 + "mute-stream": "0.0.8", 15539 + "ora": "^5.4.1", 15540 + "run-async": "^2.4.0", 15541 + "rxjs": "^7.5.5", 15542 + "string-width": "^4.1.0", 15543 + "strip-ansi": "^6.0.0", 15544 + "through": "^2.3.6", 15545 + "wrap-ansi": "^7.0.0" 15546 + }, 15547 + "dependencies": { 15548 + "ansi-styles": { 15549 + "version": "4.3.0", 15550 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 15551 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 15552 + "requires": { 15553 + "color-convert": "^2.0.1" 15554 + } 15555 + }, 15556 + "chalk": { 15557 + "version": "4.1.2", 15558 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 15559 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 15560 + "requires": { 15561 + "ansi-styles": "^4.1.0", 15562 + "supports-color": "^7.1.0" 15563 + } 15564 + }, 15565 + "color-convert": { 15566 + "version": "2.0.1", 15567 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 15568 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 15569 + "requires": { 15570 + "color-name": "~1.1.4" 15571 + } 15572 + }, 15573 + "color-name": { 15574 + "version": "1.1.4", 15575 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 15576 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 15577 + }, 15578 + "has-flag": { 15579 + "version": "4.0.0", 15580 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 15581 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 15582 + }, 15583 + "supports-color": { 15584 + "version": "7.2.0", 15585 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 15586 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 15587 + "requires": { 15588 + "has-flag": "^4.0.0" 15589 + } 15590 + } 15591 } 15592 }, 15593 "is-arrayish": { 15594 "version": "0.2.1", 15595 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 15596 - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 15597 + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 15598 "dev": true 15599 }, 15600 - "is-bigint": { 15601 - "version": "1.0.4", 15602 - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 15603 - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 15604 - "dev": true, 15605 - "requires": { 15606 - "has-bigints": "^1.0.1" 15607 - } 15608 - }, 15609 "is-binary-path": { 15610 "version": "2.1.0", 15611 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 15612 @@ -10660,59 +7446,28 @@ 15613 "binary-extensions": "^2.0.0" 15614 } 15615 }, 15616 - "is-boolean-object": { 15617 - "version": "1.1.2", 15618 - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 15619 - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 15620 - "dev": true, 15621 - "requires": { 15622 - "call-bind": "^1.0.2", 15623 - "has-tostringtag": "^1.0.0" 15624 - } 15625 - }, 15626 - "is-buffer": { 15627 - "version": "1.1.6", 15628 - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 15629 - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 15630 - "dev": true 15631 - }, 15632 "is-builtin-module": { 15633 - "version": "3.1.0", 15634 - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", 15635 - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", 15636 + "version": "3.2.0", 15637 + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", 15638 + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", 15639 "dev": true, 15640 "requires": { 15641 - "builtin-modules": "^3.0.0" 15642 + "builtin-modules": "^3.3.0" 15643 } 15644 }, 15645 - "is-callable": { 15646 - "version": "1.2.4", 15647 - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 15648 - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 15649 - "dev": true 15650 - }, 15651 "is-core-module": { 15652 - "version": "2.8.1", 15653 - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 15654 - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 15655 + "version": "2.11.0", 15656 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 15657 + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 15658 "dev": true, 15659 "requires": { 15660 "has": "^1.0.3" 15661 } 15662 }, 15663 - "is-date-object": { 15664 - "version": "1.0.5", 15665 - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 15666 - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 15667 - "dev": true, 15668 - "requires": { 15669 - "has-tostringtag": "^1.0.0" 15670 - } 15671 - }, 15672 "is-extglob": { 15673 "version": "2.1.1", 15674 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 15675 - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 15676 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 15677 "dev": true 15678 }, 15679 "is-fullwidth-code-point": { 15680 @@ -10729,23 +7484,10 @@ 15681 "is-extglob": "^2.1.1" 15682 } 15683 }, 15684 - "is-lambda": { 15685 - "version": "1.0.1", 15686 - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 15687 - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", 15688 - "optional": true 15689 - }, 15690 - "is-negated-glob": { 15691 + "is-interactive": { 15692 "version": "1.0.0", 15693 - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", 15694 - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", 15695 - "dev": true 15696 - }, 15697 - "is-negative-zero": { 15698 - "version": "2.0.2", 15699 - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 15700 - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 15701 - "dev": true 15702 + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 15703 + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" 15704 }, 15705 "is-number": { 15706 "version": "7.0.0", 15707 @@ -10753,115 +7495,39 @@ 15708 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 15709 "dev": true 15710 }, 15711 - "is-number-object": { 15712 - "version": "1.0.6", 15713 - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 15714 - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 15715 - "dev": true, 15716 - "requires": { 15717 - "has-tostringtag": "^1.0.0" 15718 - } 15719 - }, 15720 - "is-plain-obj": { 15721 - "version": "4.0.0", 15722 - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", 15723 - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", 15724 + "is-path-inside": { 15725 + "version": "3.0.3", 15726 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 15727 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 15728 "dev": true 15729 }, 15730 - "is-regex": { 15731 - "version": "1.1.4", 15732 - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 15733 - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 15734 - "dev": true, 15735 - "requires": { 15736 - "call-bind": "^1.0.2", 15737 - "has-tostringtag": "^1.0.0" 15738 - } 15739 - }, 15740 - "is-relative": { 15741 - "version": "1.0.0", 15742 - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 15743 - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 15744 - "dev": true, 15745 - "requires": { 15746 - "is-unc-path": "^1.0.0" 15747 - } 15748 - }, 15749 - "is-shared-array-buffer": { 15750 - "version": "1.0.2", 15751 - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 15752 - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 15753 - "dev": true, 15754 - "requires": { 15755 - "call-bind": "^1.0.2" 15756 - } 15757 - }, 15758 - "is-string": { 15759 - "version": "1.0.7", 15760 - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 15761 - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 15762 - "dev": true, 15763 - "requires": { 15764 - "has-tostringtag": "^1.0.0" 15765 - } 15766 - }, 15767 - "is-symbol": { 15768 - "version": "1.0.4", 15769 - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 15770 - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 15771 - "dev": true, 15772 - "requires": { 15773 - "has-symbols": "^1.0.2" 15774 - } 15775 - }, 15776 - "is-unc-path": { 15777 + "is-typedarray": { 15778 "version": "1.0.0", 15779 - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 15780 - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 15781 - "dev": true, 15782 - "requires": { 15783 - "unc-path-regex": "^0.1.2" 15784 - } 15785 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 15786 + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 15787 }, 15788 - "is-utf8": { 15789 - "version": "0.2.1", 15790 - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 15791 - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 15792 - "dev": true 15793 + "is-unicode-supported": { 15794 + "version": "0.1.0", 15795 + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 15796 + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" 15797 }, 15798 - "is-valid-glob": { 15799 - "version": "1.0.0", 15800 - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", 15801 - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", 15802 + "isexe": { 15803 + "version": "2.0.0", 15804 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 15805 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 15806 "dev": true 15807 }, 15808 - "is-weakref": { 15809 - "version": "1.0.2", 15810 - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 15811 - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 15812 - "dev": true, 15813 - "requires": { 15814 - "call-bind": "^1.0.2" 15815 - } 15816 - }, 15817 - "is-windows": { 15818 - "version": "1.0.2", 15819 - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 15820 - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 15821 - "dev": true 15822 + "isstream": { 15823 + "version": "0.1.2", 15824 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 15825 + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" 15826 }, 15827 - "isarray": { 15828 - "version": "1.0.0", 15829 - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 15830 - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 15831 + "js-sdsl": { 15832 + "version": "4.2.0", 15833 + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", 15834 + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", 15835 "dev": true 15836 }, 15837 - "isexe": { 15838 - "version": "2.0.0", 15839 - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 15840 - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 15841 - "devOptional": true 15842 - }, 15843 "js-tokens": { 15844 "version": "4.0.0", 15845 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 15846 @@ -10876,6 +7542,11 @@ 15847 "argparse": "^2.0.1" 15848 } 15849 }, 15850 + "jsbn": { 15851 + "version": "0.1.1", 15852 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 15853 + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" 15854 + }, 15855 "jsesc": { 15856 "version": "2.5.2", 15857 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 15858 @@ -10888,103 +7559,49 @@ 15859 "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 15860 "dev": true 15861 }, 15862 + "json-schema": { 15863 + "version": "0.4.0", 15864 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 15865 + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 15866 + }, 15867 "json-schema-traverse": { 15868 "version": "0.4.1", 15869 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 15870 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 15871 - "dev": true 15872 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 15873 }, 15874 "json-stable-stringify-without-jsonify": { 15875 "version": "1.0.1", 15876 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 15877 - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 15878 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 15879 "dev": true 15880 }, 15881 - "json5": { 15882 - "version": "2.2.1", 15883 - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 15884 - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 15885 - "dev": true, 15886 - "peer": true 15887 - }, 15888 - "jsonfile": { 15889 - "version": "6.1.0", 15890 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 15891 - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 15892 - "dev": true, 15893 - "requires": { 15894 - "graceful-fs": "^4.1.6", 15895 - "universalify": "^2.0.0" 15896 - } 15897 - }, 15898 - "jsx-ast-utils": { 15899 - "version": "3.2.1", 15900 - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", 15901 - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", 15902 - "dev": true, 15903 - "requires": { 15904 - "array-includes": "^3.1.3", 15905 - "object.assign": "^4.1.2" 15906 - } 15907 + "json-stringify-safe": { 15908 + "version": "5.0.1", 15909 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 15910 + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 15911 }, 15912 - "language-subtag-registry": { 15913 - "version": "0.3.21", 15914 - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", 15915 - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", 15916 + "json5": { 15917 + "version": "2.2.3", 15918 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 15919 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 15920 "dev": true 15921 }, 15922 - "language-tags": { 15923 - "version": "1.0.5", 15924 - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", 15925 - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", 15926 - "dev": true, 15927 - "requires": { 15928 - "language-subtag-registry": "~0.3.2" 15929 - } 15930 - }, 15931 - "lazystream": { 15932 - "version": "1.0.1", 15933 - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", 15934 - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", 15935 - "dev": true, 15936 + "jsprim": { 15937 + "version": "1.4.2", 15938 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 15939 + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 15940 "requires": { 15941 - "readable-stream": "^2.0.5" 15942 - }, 15943 - "dependencies": { 15944 - "readable-stream": { 15945 - "version": "2.3.7", 15946 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 15947 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 15948 - "dev": true, 15949 - "requires": { 15950 - "core-util-is": "~1.0.0", 15951 - "inherits": "~2.0.3", 15952 - "isarray": "~1.0.0", 15953 - "process-nextick-args": "~2.0.0", 15954 - "safe-buffer": "~5.1.1", 15955 - "string_decoder": "~1.1.1", 15956 - "util-deprecate": "~1.0.1" 15957 - } 15958 - }, 15959 - "string_decoder": { 15960 - "version": "1.1.1", 15961 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 15962 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 15963 - "dev": true, 15964 - "requires": { 15965 - "safe-buffer": "~5.1.0" 15966 - } 15967 - } 15968 + "assert-plus": "1.0.0", 15969 + "extsprintf": "1.3.0", 15970 + "json-schema": "0.4.0", 15971 + "verror": "1.10.0" 15972 } 15973 }, 15974 - "lead": { 15975 - "version": "1.0.0", 15976 - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", 15977 - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", 15978 - "dev": true, 15979 - "requires": { 15980 - "flush-write-stream": "^1.0.2" 15981 - } 15982 + "kolorist": { 15983 + "version": "1.6.0", 15984 + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", 15985 + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", 15986 + "dev": true 15987 }, 15988 "levn": { 15989 "version": "0.4.1", 15990 @@ -10996,23 +7613,10 @@ 15991 "type-check": "~0.4.0" 15992 } 15993 }, 15994 - "lie": { 15995 - "version": "3.1.1", 15996 - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", 15997 - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", 15998 - "requires": { 15999 - "immediate": "~3.0.5" 16000 - } 16001 - }, 16002 - "lightgallery": { 16003 - "version": "2.4.0", 16004 - "resolved": "https://registry.npmjs.org/lightgallery/-/lightgallery-2.4.0.tgz", 16005 - "integrity": "sha512-9i/E/w3yaqs56y3k6SWIUS3JTLpeDCZIVnIuNppzAmj5KjLGy5wrFisoDUD0HdxVUdX0wHG5mjvB4h0TXtyf/w==" 16006 - }, 16007 "lilconfig": { 16008 - "version": "2.0.5", 16009 - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 16010 - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 16011 + "version": "2.0.6", 16012 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", 16013 + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", 16014 "dev": true 16015 }, 16016 "lines-and-columns": { 16017 @@ -11021,22 +7625,13 @@ 16018 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 16019 "dev": true 16020 }, 16021 - "localforage": { 16022 - "version": "1.10.0", 16023 - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", 16024 - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", 16025 - "requires": { 16026 - "lie": "3.1.1" 16027 - } 16028 - }, 16029 "locate-path": { 16030 - "version": "2.0.0", 16031 - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 16032 - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 16033 + "version": "6.0.0", 16034 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 16035 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 16036 "dev": true, 16037 "requires": { 16038 - "p-locate": "^2.0.0", 16039 - "path-exists": "^3.0.0" 16040 + "p-locate": "^5.0.0" 16041 } 16042 }, 16043 "lodash": { 16044 @@ -11050,70 +7645,104 @@ 16045 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 16046 "dev": true 16047 }, 16048 + "log-symbols": { 16049 + "version": "4.1.0", 16050 + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 16051 + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 16052 + "requires": { 16053 + "chalk": "^4.1.0", 16054 + "is-unicode-supported": "^0.1.0" 16055 + }, 16056 + "dependencies": { 16057 + "ansi-styles": { 16058 + "version": "4.3.0", 16059 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 16060 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 16061 + "requires": { 16062 + "color-convert": "^2.0.1" 16063 + } 16064 + }, 16065 + "chalk": { 16066 + "version": "4.1.2", 16067 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 16068 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 16069 + "requires": { 16070 + "ansi-styles": "^4.1.0", 16071 + "supports-color": "^7.1.0" 16072 + } 16073 + }, 16074 + "color-convert": { 16075 + "version": "2.0.1", 16076 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 16077 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 16078 + "requires": { 16079 + "color-name": "~1.1.4" 16080 + } 16081 + }, 16082 + "color-name": { 16083 + "version": "1.1.4", 16084 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 16085 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 16086 + }, 16087 + "has-flag": { 16088 + "version": "4.0.0", 16089 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 16090 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 16091 + }, 16092 + "supports-color": { 16093 + "version": "7.2.0", 16094 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 16095 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 16096 + "requires": { 16097 + "has-flag": "^4.0.0" 16098 + } 16099 + } 16100 + } 16101 + }, 16102 + "loglevel": { 16103 + "version": "1.8.1", 16104 + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", 16105 + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" 16106 + }, 16107 "loose-envify": { 16108 "version": "1.4.0", 16109 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 16110 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 16111 + "peer": true, 16112 "requires": { 16113 "js-tokens": "^3.0.0 || ^4.0.0" 16114 } 16115 }, 16116 "lru-cache": { 16117 - "version": "6.0.0", 16118 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 16119 - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 16120 - "requires": { 16121 - "yallist": "^4.0.0" 16122 - } 16123 - }, 16124 - "make-dir": { 16125 - "version": "3.1.0", 16126 - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 16127 - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 16128 - "requires": { 16129 - "semver": "^6.0.0" 16130 - } 16131 - }, 16132 - "make-fetch-happen": { 16133 - "version": "9.1.0", 16134 - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", 16135 - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", 16136 - "optional": true, 16137 - "requires": { 16138 - "agentkeepalive": "^4.1.3", 16139 - "cacache": "^15.2.0", 16140 - "http-cache-semantics": "^4.1.0", 16141 - "http-proxy-agent": "^4.0.1", 16142 - "https-proxy-agent": "^5.0.0", 16143 - "is-lambda": "^1.0.1", 16144 - "lru-cache": "^6.0.0", 16145 - "minipass": "^3.1.3", 16146 - "minipass-collect": "^1.0.2", 16147 - "minipass-fetch": "^1.3.2", 16148 - "minipass-flush": "^1.0.5", 16149 - "minipass-pipeline": "^1.2.4", 16150 - "negotiator": "^0.6.2", 16151 - "promise-retry": "^2.0.1", 16152 - "socks-proxy-agent": "^6.0.0", 16153 - "ssri": "^8.0.0" 16154 - } 16155 - }, 16156 - "matcher-collection": { 16157 - "version": "2.0.1", 16158 - "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", 16159 - "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", 16160 + "version": "5.1.1", 16161 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 16162 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 16163 "dev": true, 16164 "requires": { 16165 - "@types/minimatch": "^3.0.3", 16166 - "minimatch": "^3.0.2" 16167 + "yallist": "^3.0.2" 16168 } 16169 }, 16170 - "meilisearch": { 16171 - "version": "0.25.1", 16172 - "resolved": "https://registry.npmjs.org/meilisearch/-/meilisearch-0.25.1.tgz", 16173 - "integrity": "sha512-20jO0pK9BhghxHSkOLbdoYn58h/Z0PNL3JQcRq7ipNIeqrxkAetCZZ6ttJC3uxcz0jVglmiFoSXu3Z/lEOLOLQ==", 16174 - "requires": { 16175 - "cross-fetch": "^3.1.5" 16176 + "matrix-events-sdk": { 16177 + "version": "0.0.1", 16178 + "resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz", 16179 + "integrity": "sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==" 16180 + }, 16181 + "matrix-js-sdk": { 16182 + "version": "16.0.1", 16183 + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-16.0.1.tgz", 16184 + "integrity": "sha512-GRYZY7JZRqsVFa2nKO2qJbU4gQail2+1PgX2QDcibWizTL5Gh8YS384twprpIKqzdLHJ3d7H7A0L+uqc562ZsQ==", 16185 + "requires": { 16186 + "@babel/runtime": "^7.12.5", 16187 + "another-json": "^0.2.0", 16188 + "browser-request": "^0.3.3", 16189 + "bs58": "^4.0.1", 16190 + "content-type": "^1.0.4", 16191 + "loglevel": "^1.7.1", 16192 + "matrix-events-sdk": "^0.0.1-beta.7", 16193 + "p-retry": "^4.5.0", 16194 + "qs": "^6.9.6", 16195 + "request": "^2.88.2", 16196 + "unhomoglyph": "^1.0.6" 16197 } 16198 }, 16199 "merge2": { 16200 @@ -11123,15 +7752,33 @@ 16201 "dev": true 16202 }, 16203 "micromatch": { 16204 - "version": "4.0.4", 16205 - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 16206 - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 16207 + "version": "4.0.5", 16208 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 16209 + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 16210 "dev": true, 16211 "requires": { 16212 - "braces": "^3.0.1", 16213 - "picomatch": "^2.2.3" 16214 + "braces": "^3.0.2", 16215 + "picomatch": "^2.3.1" 16216 + } 16217 + }, 16218 + "mime-db": { 16219 + "version": "1.52.0", 16220 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 16221 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 16222 + }, 16223 + "mime-types": { 16224 + "version": "2.1.35", 16225 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 16226 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 16227 + "requires": { 16228 + "mime-db": "1.52.0" 16229 } 16230 }, 16231 + "mimic-fn": { 16232 + "version": "2.1.0", 16233 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 16234 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 16235 + }, 16236 "min-indent": { 16237 "version": "1.0.1", 16238 "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 16239 @@ -11142,271 +7789,52 @@ 16240 "version": "3.1.2", 16241 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 16242 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 16243 + "dev": true, 16244 "requires": { 16245 "brace-expansion": "^1.1.7" 16246 } 16247 }, 16248 "minimist": { 16249 - "version": "1.2.6", 16250 - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 16251 - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 16252 + "version": "1.2.7", 16253 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 16254 + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", 16255 "dev": true 16256 }, 16257 - "minipass": { 16258 - "version": "3.1.6", 16259 - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 16260 - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 16261 - "requires": { 16262 - "yallist": "^4.0.0" 16263 - } 16264 - }, 16265 - "minipass-collect": { 16266 - "version": "1.0.2", 16267 - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", 16268 - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", 16269 - "optional": true, 16270 - "requires": { 16271 - "minipass": "^3.0.0" 16272 - } 16273 - }, 16274 - "minipass-fetch": { 16275 - "version": "1.4.1", 16276 - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", 16277 - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", 16278 - "optional": true, 16279 - "requires": { 16280 - "encoding": "^0.1.12", 16281 - "minipass": "^3.1.0", 16282 - "minipass-sized": "^1.0.3", 16283 - "minizlib": "^2.0.0" 16284 - } 16285 - }, 16286 - "minipass-flush": { 16287 - "version": "1.0.5", 16288 - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 16289 - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 16290 - "optional": true, 16291 - "requires": { 16292 - "minipass": "^3.0.0" 16293 - } 16294 - }, 16295 - "minipass-pipeline": { 16296 - "version": "1.2.4", 16297 - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 16298 - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 16299 - "optional": true, 16300 - "requires": { 16301 - "minipass": "^3.0.0" 16302 - } 16303 - }, 16304 - "minipass-sized": { 16305 - "version": "1.0.3", 16306 - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 16307 - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 16308 - "optional": true, 16309 - "requires": { 16310 - "minipass": "^3.0.0" 16311 - } 16312 - }, 16313 - "minizlib": { 16314 + "ms": { 16315 "version": "2.1.2", 16316 - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 16317 - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 16318 - "requires": { 16319 - "minipass": "^3.0.0", 16320 - "yallist": "^4.0.0" 16321 - } 16322 - }, 16323 - "mkdirp": { 16324 - "version": "1.0.4", 16325 - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 16326 - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 16327 - }, 16328 - "mktemp": { 16329 - "version": "0.4.0", 16330 - "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", 16331 - "integrity": "sha1-bQUVYRyKjITkhKogABKbmOmB/ws=", 16332 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 16333 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 16334 "dev": true 16335 }, 16336 - "moment": { 16337 - "version": "2.29.2", 16338 - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", 16339 - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" 16340 - }, 16341 - "moment-timezone": { 16342 - "version": "0.5.34", 16343 - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", 16344 - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", 16345 - "requires": { 16346 - "moment": ">= 2.9.0" 16347 - } 16348 - }, 16349 - "ms": { 16350 - "version": "2.1.3", 16351 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 16352 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 16353 - "devOptional": true 16354 + "mute-stream": { 16355 + "version": "0.0.8", 16356 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 16357 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 16358 }, 16359 "nanoid": { 16360 "version": "3.3.4", 16361 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 16362 - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 16363 + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 16364 + "dev": true 16365 }, 16366 "natural-compare": { 16367 "version": "1.4.0", 16368 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 16369 - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 16370 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 16371 "dev": true 16372 }, 16373 - "negotiator": { 16374 - "version": "0.6.3", 16375 - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 16376 - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 16377 - "optional": true 16378 - }, 16379 - "next": { 16380 - "version": "12.1.6", 16381 - "resolved": "https://registry.npmjs.org/next/-/next-12.1.6.tgz", 16382 - "integrity": "sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==", 16383 - "requires": { 16384 - "@next/env": "12.1.6", 16385 - "@next/swc-android-arm-eabi": "12.1.6", 16386 - "@next/swc-android-arm64": "12.1.6", 16387 - "@next/swc-darwin-arm64": "12.1.6", 16388 - "@next/swc-darwin-x64": "12.1.6", 16389 - "@next/swc-linux-arm-gnueabihf": "12.1.6", 16390 - "@next/swc-linux-arm64-gnu": "12.1.6", 16391 - "@next/swc-linux-arm64-musl": "12.1.6", 16392 - "@next/swc-linux-x64-gnu": "12.1.6", 16393 - "@next/swc-linux-x64-musl": "12.1.6", 16394 - "@next/swc-win32-arm64-msvc": "12.1.6", 16395 - "@next/swc-win32-ia32-msvc": "12.1.6", 16396 - "@next/swc-win32-x64-msvc": "12.1.6", 16397 - "caniuse-lite": "^1.0.30001332", 16398 - "postcss": "8.4.5", 16399 - "styled-jsx": "5.0.2" 16400 - }, 16401 - "dependencies": { 16402 - "postcss": { 16403 - "version": "8.4.5", 16404 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 16405 - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 16406 - "requires": { 16407 - "nanoid": "^3.1.30", 16408 - "picocolors": "^1.0.0", 16409 - "source-map-js": "^1.0.1" 16410 - } 16411 - } 16412 - } 16413 - }, 16414 - "next-i18next": { 16415 - "version": "11.0.0", 16416 - "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-11.0.0.tgz", 16417 - "integrity": "sha512-phxbQiZGSJTTBE2FI4+BnqFZl88AI2V+6MrEQnT9aPFAXq/fATQ/F0pOUM3J7kU4nEeCfn3hjISq+ygGHlEz0g==", 16418 - "requires": { 16419 - "@babel/runtime": "^7.13.17", 16420 - "@types/hoist-non-react-statics": "^3.3.1", 16421 - "core-js": "^3", 16422 - "hoist-non-react-statics": "^3.2.0", 16423 - "i18next": "^21.6.14", 16424 - "i18next-fs-backend": "^1.1.4", 16425 - "react-i18next": "^11.16.2" 16426 - } 16427 - }, 16428 - "node-addon-api": { 16429 - "version": "4.3.0", 16430 - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", 16431 - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" 16432 - }, 16433 - "node-fetch": { 16434 - "version": "2.6.7", 16435 - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 16436 - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 16437 - "requires": { 16438 - "whatwg-url": "^5.0.0" 16439 - } 16440 - }, 16441 - "node-gyp": { 16442 - "version": "8.4.1", 16443 - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", 16444 - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", 16445 - "optional": true, 16446 - "requires": { 16447 - "env-paths": "^2.2.0", 16448 - "glob": "^7.1.4", 16449 - "graceful-fs": "^4.2.6", 16450 - "make-fetch-happen": "^9.1.0", 16451 - "nopt": "^5.0.0", 16452 - "npmlog": "^6.0.0", 16453 - "rimraf": "^3.0.2", 16454 - "semver": "^7.3.5", 16455 - "tar": "^6.1.2", 16456 - "which": "^2.0.2" 16457 - }, 16458 - "dependencies": { 16459 - "are-we-there-yet": { 16460 - "version": "3.0.0", 16461 - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", 16462 - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", 16463 - "optional": true, 16464 - "requires": { 16465 - "delegates": "^1.0.0", 16466 - "readable-stream": "^3.6.0" 16467 - } 16468 - }, 16469 - "gauge": { 16470 - "version": "4.0.4", 16471 - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", 16472 - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", 16473 - "optional": true, 16474 - "requires": { 16475 - "aproba": "^1.0.3 || ^2.0.0", 16476 - "color-support": "^1.1.3", 16477 - "console-control-strings": "^1.1.0", 16478 - "has-unicode": "^2.0.1", 16479 - "signal-exit": "^3.0.7", 16480 - "string-width": "^4.2.3", 16481 - "strip-ansi": "^6.0.1", 16482 - "wide-align": "^1.1.5" 16483 - } 16484 - }, 16485 - "npmlog": { 16486 - "version": "6.0.1", 16487 - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.1.tgz", 16488 - "integrity": "sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==", 16489 - "optional": true, 16490 - "requires": { 16491 - "are-we-there-yet": "^3.0.0", 16492 - "console-control-strings": "^1.1.0", 16493 - "gauge": "^4.0.0", 16494 - "set-blocking": "^2.0.0" 16495 - } 16496 - }, 16497 - "semver": { 16498 - "version": "7.3.7", 16499 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 16500 - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 16501 - "optional": true, 16502 - "requires": { 16503 - "lru-cache": "^6.0.0" 16504 - } 16505 - } 16506 - } 16507 + "natural-compare-lite": { 16508 + "version": "1.4.0", 16509 + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", 16510 + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", 16511 + "dev": true 16512 }, 16513 "node-releases": { 16514 - "version": "2.0.4", 16515 - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", 16516 - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", 16517 + "version": "2.0.8", 16518 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", 16519 + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", 16520 "dev": true 16521 }, 16522 - "nopt": { 16523 - "version": "5.0.0", 16524 - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 16525 - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 16526 - "requires": { 16527 - "abbrev": "1" 16528 - } 16529 - }, 16530 "normalize-package-data": { 16531 "version": "2.5.0", 16532 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 16533 @@ -11436,42 +7864,13 @@ 16534 "normalize-range": { 16535 "version": "0.1.2", 16536 "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 16537 - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 16538 + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 16539 "dev": true 16540 }, 16541 - "now-and-later": { 16542 - "version": "2.0.1", 16543 - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", 16544 - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", 16545 - "dev": true, 16546 - "requires": { 16547 - "once": "^1.3.2" 16548 - } 16549 - }, 16550 - "npmlog": { 16551 - "version": "5.0.1", 16552 - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 16553 - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 16554 - "requires": { 16555 - "are-we-there-yet": "^2.0.0", 16556 - "console-control-strings": "^1.1.0", 16557 - "gauge": "^3.0.0", 16558 - "set-blocking": "^2.0.0" 16559 - } 16560 - }, 16561 - "nth-check": { 16562 - "version": "2.0.1", 16563 - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", 16564 - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", 16565 - "dev": true, 16566 - "requires": { 16567 - "boolbase": "^1.0.0" 16568 - } 16569 - }, 16570 - "object-assign": { 16571 - "version": "4.1.1", 16572 - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 16573 - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 16574 + "oauth-sign": { 16575 + "version": "0.9.0", 16576 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 16577 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 16578 }, 16579 "object-hash": { 16580 "version": "3.0.0", 16581 @@ -11479,81 +7878,28 @@ 16582 "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 16583 "dev": true 16584 }, 16585 - "object-inspect": { 16586 - "version": "1.12.0", 16587 - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 16588 - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 16589 - "dev": true 16590 - }, 16591 - "object-keys": { 16592 - "version": "1.1.1", 16593 - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 16594 - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 16595 - "dev": true 16596 - }, 16597 - "object.assign": { 16598 - "version": "4.1.2", 16599 - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 16600 - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 16601 - "dev": true, 16602 - "requires": { 16603 - "call-bind": "^1.0.0", 16604 - "define-properties": "^1.1.3", 16605 - "has-symbols": "^1.0.1", 16606 - "object-keys": "^1.1.1" 16607 - } 16608 - }, 16609 - "object.entries": { 16610 - "version": "1.1.5", 16611 - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", 16612 - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", 16613 - "dev": true, 16614 - "requires": { 16615 - "call-bind": "^1.0.2", 16616 - "define-properties": "^1.1.3", 16617 - "es-abstract": "^1.19.1" 16618 - } 16619 - }, 16620 - "object.fromentries": { 16621 - "version": "2.0.5", 16622 - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", 16623 - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", 16624 - "dev": true, 16625 - "requires": { 16626 - "call-bind": "^1.0.2", 16627 - "define-properties": "^1.1.3", 16628 - "es-abstract": "^1.19.1" 16629 - } 16630 - }, 16631 - "object.hasown": { 16632 - "version": "1.1.1", 16633 - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", 16634 - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", 16635 - "dev": true, 16636 - "requires": { 16637 - "define-properties": "^1.1.4", 16638 - "es-abstract": "^1.19.5" 16639 - } 16640 - }, 16641 - "object.values": { 16642 - "version": "1.1.5", 16643 - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", 16644 - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", 16645 - "dev": true, 16646 - "requires": { 16647 - "call-bind": "^1.0.2", 16648 - "define-properties": "^1.1.3", 16649 - "es-abstract": "^1.19.1" 16650 - } 16651 + "object-inspect": { 16652 + "version": "1.12.2", 16653 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 16654 + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 16655 }, 16656 "once": { 16657 "version": "1.4.0", 16658 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 16659 - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 16660 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 16661 + "dev": true, 16662 "requires": { 16663 "wrappy": "1" 16664 } 16665 }, 16666 + "onetime": { 16667 + "version": "5.1.2", 16668 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 16669 + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 16670 + "requires": { 16671 + "mimic-fn": "^2.1.0" 16672 + } 16673 + }, 16674 "optionator": { 16675 "version": "0.9.1", 16676 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 16677 @@ -11568,72 +7914,103 @@ 16678 "word-wrap": "^1.2.3" 16679 } 16680 }, 16681 - "ordered-read-streams": { 16682 - "version": "1.0.1", 16683 - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", 16684 - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", 16685 - "dev": true, 16686 + "ora": { 16687 + "version": "5.4.1", 16688 + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", 16689 + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", 16690 "requires": { 16691 - "readable-stream": "^2.0.1" 16692 + "bl": "^4.1.0", 16693 + "chalk": "^4.1.0", 16694 + "cli-cursor": "^3.1.0", 16695 + "cli-spinners": "^2.5.0", 16696 + "is-interactive": "^1.0.0", 16697 + "is-unicode-supported": "^0.1.0", 16698 + "log-symbols": "^4.1.0", 16699 + "strip-ansi": "^6.0.0", 16700 + "wcwidth": "^1.0.1" 16701 }, 16702 "dependencies": { 16703 - "readable-stream": { 16704 - "version": "2.3.7", 16705 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 16706 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 16707 - "dev": true, 16708 + "ansi-styles": { 16709 + "version": "4.3.0", 16710 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 16711 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 16712 "requires": { 16713 - "core-util-is": "~1.0.0", 16714 - "inherits": "~2.0.3", 16715 - "isarray": "~1.0.0", 16716 - "process-nextick-args": "~2.0.0", 16717 - "safe-buffer": "~5.1.1", 16718 - "string_decoder": "~1.1.1", 16719 - "util-deprecate": "~1.0.1" 16720 + "color-convert": "^2.0.1" 16721 } 16722 }, 16723 - "string_decoder": { 16724 - "version": "1.1.1", 16725 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 16726 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 16727 - "dev": true, 16728 + "chalk": { 16729 + "version": "4.1.2", 16730 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 16731 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 16732 + "requires": { 16733 + "ansi-styles": "^4.1.0", 16734 + "supports-color": "^7.1.0" 16735 + } 16736 + }, 16737 + "color-convert": { 16738 + "version": "2.0.1", 16739 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 16740 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 16741 + "requires": { 16742 + "color-name": "~1.1.4" 16743 + } 16744 + }, 16745 + "color-name": { 16746 + "version": "1.1.4", 16747 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 16748 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 16749 + }, 16750 + "has-flag": { 16751 + "version": "4.0.0", 16752 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 16753 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 16754 + }, 16755 + "supports-color": { 16756 + "version": "7.2.0", 16757 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 16758 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 16759 "requires": { 16760 - "safe-buffer": "~5.1.0" 16761 + "has-flag": "^4.0.0" 16762 } 16763 } 16764 } 16765 }, 16766 + "os-tmpdir": { 16767 + "version": "1.0.2", 16768 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 16769 + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" 16770 + }, 16771 "p-limit": { 16772 - "version": "1.3.0", 16773 - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 16774 - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 16775 + "version": "3.1.0", 16776 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 16777 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 16778 "dev": true, 16779 "requires": { 16780 - "p-try": "^1.0.0" 16781 + "yocto-queue": "^0.1.0" 16782 } 16783 }, 16784 "p-locate": { 16785 - "version": "2.0.0", 16786 - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 16787 - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 16788 + "version": "5.0.0", 16789 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 16790 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 16791 "dev": true, 16792 "requires": { 16793 - "p-limit": "^1.1.0" 16794 + "p-limit": "^3.0.2" 16795 } 16796 }, 16797 - "p-map": { 16798 - "version": "4.0.0", 16799 - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 16800 - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 16801 - "optional": true, 16802 + "p-retry": { 16803 + "version": "4.6.2", 16804 + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", 16805 + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", 16806 "requires": { 16807 - "aggregate-error": "^3.0.0" 16808 + "@types/retry": "0.12.0", 16809 + "retry": "^0.13.1" 16810 } 16811 }, 16812 "p-try": { 16813 - "version": "1.0.0", 16814 - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 16815 - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 16816 + "version": "2.2.0", 16817 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 16818 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 16819 "dev": true 16820 }, 16821 "parent-module": { 16822 @@ -11657,37 +8034,17 @@ 16823 "lines-and-columns": "^1.1.6" 16824 } 16825 }, 16826 - "parse5": { 16827 - "version": "6.0.1", 16828 - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 16829 - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", 16830 - "dev": true 16831 - }, 16832 - "parse5-htmlparser2-tree-adapter": { 16833 - "version": "6.0.1", 16834 - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 16835 - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 16836 - "dev": true, 16837 - "requires": { 16838 - "parse5": "^6.0.1" 16839 - } 16840 - }, 16841 - "path-dirname": { 16842 - "version": "1.0.2", 16843 - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 16844 - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 16845 - "dev": true 16846 - }, 16847 "path-exists": { 16848 - "version": "3.0.0", 16849 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 16850 - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 16851 + "version": "4.0.0", 16852 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 16853 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 16854 "dev": true 16855 }, 16856 "path-is-absolute": { 16857 "version": "1.0.1", 16858 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 16859 - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 16860 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 16861 + "dev": true 16862 }, 16863 "path-key": { 16864 "version": "3.1.1", 16865 @@ -11701,27 +8058,22 @@ 16866 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 16867 "dev": true 16868 }, 16869 - "path-posix": { 16870 - "version": "1.0.0", 16871 - "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", 16872 - "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=", 16873 - "dev": true 16874 - }, 16875 "path-type": { 16876 "version": "4.0.0", 16877 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 16878 "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 16879 "dev": true 16880 }, 16881 - "pg-connection-string": { 16882 - "version": "2.5.0", 16883 - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", 16884 - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" 16885 + "performance-now": { 16886 + "version": "2.1.0", 16887 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 16888 + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 16889 }, 16890 "picocolors": { 16891 "version": "1.0.0", 16892 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 16893 - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 16894 + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 16895 + "dev": true 16896 }, 16897 "picomatch": { 16898 "version": "2.3.1", 16899 @@ -11729,10 +8081,10 @@ 16900 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 16901 "dev": true 16902 }, 16903 - "playwright-core": { 16904 - "version": "1.22.2", 16905 - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.22.2.tgz", 16906 - "integrity": "sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q==", 16907 + "pify": { 16908 + "version": "2.3.0", 16909 + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 16910 + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 16911 "dev": true 16912 }, 16913 "pluralize": { 16914 @@ -11741,18 +8093,10 @@ 16915 "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", 16916 "dev": true 16917 }, 16918 - "png-chunks-extract": { 16919 - "version": "1.0.0", 16920 - "resolved": "https://registry.npmjs.org/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz", 16921 - "integrity": "sha1-+tSpBeZmUhlzUcZeNbksZDEeRy0=", 16922 - "requires": { 16923 - "crc-32": "^0.3.0" 16924 - } 16925 - }, 16926 "postcss": { 16927 - "version": "8.4.14", 16928 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 16929 - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 16930 + "version": "8.4.20", 16931 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", 16932 + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", 16933 "dev": true, 16934 "requires": { 16935 "nanoid": "^3.3.4", 16936 @@ -11760,6 +8104,17 @@ 16937 "source-map-js": "^1.0.2" 16938 } 16939 }, 16940 + "postcss-import": { 16941 + "version": "14.1.0", 16942 + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", 16943 + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", 16944 + "dev": true, 16945 + "requires": { 16946 + "postcss-value-parser": "^4.0.0", 16947 + "read-cache": "^1.0.0", 16948 + "resolve": "^1.1.7" 16949 + } 16950 + }, 16951 "postcss-js": { 16952 "version": "4.0.0", 16953 "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 16954 @@ -11780,18 +8135,18 @@ 16955 } 16956 }, 16957 "postcss-nested": { 16958 - "version": "5.0.6", 16959 - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 16960 - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 16961 + "version": "6.0.0", 16962 + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", 16963 + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", 16964 "dev": true, 16965 "requires": { 16966 - "postcss-selector-parser": "^6.0.6" 16967 + "postcss-selector-parser": "^6.0.10" 16968 } 16969 }, 16970 "postcss-selector-parser": { 16971 - "version": "6.0.10", 16972 - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 16973 - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 16974 + "version": "6.0.11", 16975 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", 16976 + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", 16977 "dev": true, 16978 "requires": { 16979 "cssesc": "^3.0.0", 16980 @@ -11804,78 +8159,34 @@ 16981 "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 16982 "dev": true 16983 }, 16984 + "preact": { 16985 + "version": "10.11.3", 16986 + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", 16987 + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==" 16988 + }, 16989 "prelude-ls": { 16990 "version": "1.2.1", 16991 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 16992 "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 16993 "dev": true 16994 }, 16995 - "process-nextick-args": { 16996 - "version": "2.0.1", 16997 - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 16998 - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 16999 - "dev": true 17000 - }, 17001 - "promise-inflight": { 17002 - "version": "1.0.1", 17003 - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 17004 - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 17005 - "optional": true 17006 - }, 17007 - "promise-map-series": { 17008 - "version": "0.3.0", 17009 - "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz", 17010 - "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==", 17011 - "dev": true 17012 - }, 17013 - "promise-retry": { 17014 - "version": "2.0.1", 17015 - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 17016 - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 17017 - "optional": true, 17018 - "requires": { 17019 - "err-code": "^2.0.2", 17020 - "retry": "^0.12.0" 17021 - } 17022 - }, 17023 - "prop-types": { 17024 - "version": "15.8.1", 17025 - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 17026 - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 17027 - "requires": { 17028 - "loose-envify": "^1.4.0", 17029 - "object-assign": "^4.1.1", 17030 - "react-is": "^16.13.1" 17031 - } 17032 - }, 17033 - "pumpify": { 17034 - "version": "1.5.1", 17035 - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 17036 - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 17037 - "dev": true, 17038 - "requires": { 17039 - "duplexify": "^3.6.0", 17040 - "inherits": "^2.0.3", 17041 - "pump": "^2.0.0" 17042 - }, 17043 - "dependencies": { 17044 - "pump": { 17045 - "version": "2.0.1", 17046 - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 17047 - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 17048 - "dev": true, 17049 - "requires": { 17050 - "end-of-stream": "^1.1.0", 17051 - "once": "^1.3.1" 17052 - } 17053 - } 17054 - } 17055 + "psl": { 17056 + "version": "1.9.0", 17057 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 17058 + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" 17059 }, 17060 "punycode": { 17061 "version": "2.1.1", 17062 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 17063 - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 17064 - "dev": true 17065 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 17066 + }, 17067 + "qs": { 17068 + "version": "6.11.0", 17069 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 17070 + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 17071 + "requires": { 17072 + "side-channel": "^1.0.4" 17073 + } 17074 }, 17075 "queue-microtask": { 17076 "version": "1.2.3", 17077 @@ -11889,82 +8200,54 @@ 17078 "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 17079 "dev": true 17080 }, 17081 - "quick-temp": { 17082 - "version": "0.1.8", 17083 - "resolved": "https://registry.npmjs.org/quick-temp/-/quick-temp-0.1.8.tgz", 17084 - "integrity": "sha1-urAqJCq4+w3XWKPJd2sy+aXZRAg=", 17085 - "dev": true, 17086 - "requires": { 17087 - "mktemp": "~0.4.0", 17088 - "rimraf": "^2.5.4", 17089 - "underscore.string": "~3.3.4" 17090 - }, 17091 - "dependencies": { 17092 - "rimraf": { 17093 - "version": "2.7.1", 17094 - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 17095 - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 17096 - "dev": true, 17097 - "requires": { 17098 - "glob": "^7.1.3" 17099 - } 17100 - } 17101 - } 17102 - }, 17103 "react": { 17104 - "version": "18.1.0", 17105 - "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", 17106 - "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", 17107 + "version": "18.2.0", 17108 + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 17109 + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 17110 + "peer": true, 17111 "requires": { 17112 "loose-envify": "^1.1.0" 17113 } 17114 }, 17115 - "react-blurhash": { 17116 - "version": "0.1.3", 17117 - "resolved": "https://registry.npmjs.org/react-blurhash/-/react-blurhash-0.1.3.tgz", 17118 - "integrity": "sha512-Q9lqbXg92NU6/2DoIl/cBM8YWL+Z4X66OiG4aT9ozOgjBwx104LHFCH5stf6aF+s0Q9Wf310Ul+dG+VXJltmPg==", 17119 - "requires": {} 17120 - }, 17121 "react-dom": { 17122 - "version": "18.1.0", 17123 - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", 17124 - "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", 17125 + "version": "18.2.0", 17126 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 17127 + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 17128 + "peer": true, 17129 "requires": { 17130 "loose-envify": "^1.1.0", 17131 - "scheduler": "^0.22.0" 17132 + "scheduler": "^0.23.0" 17133 } 17134 }, 17135 - "react-dropzone": { 17136 - "version": "14.2.1", 17137 - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.1.tgz", 17138 - "integrity": "sha512-jzX6wDtAjlfwZ+Fbg+G17EszWUkQVxhMTWMfAC9qSUq7II2pKglHA8aarbFKl0mLpRPDaNUcy+HD/Sf4gkf76Q==", 17139 + "react-plock": { 17140 + "version": "1.2.1", 17141 + "resolved": "https://registry.npmjs.org/react-plock/-/react-plock-1.2.1.tgz", 17142 + "integrity": "sha512-iaDVY5RyHciIExtnPCLVrHuT5FhLCxgpaaF8WxB5aFaYOjjVKXAG1/AqT5NghKBoN0Z3DAM/wbL5FCR6kl9BmA==" 17143 + }, 17144 + "react-router": { 17145 + "version": "6.6.1", 17146 + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.1.tgz", 17147 + "integrity": "sha512-YkvlYRusnI/IN0kDtosUCgxqHeulN5je+ew8W+iA1VvFhf86kA+JEI/X/8NqYcr11hCDDp906S+SGMpBheNeYQ==", 17148 "requires": { 17149 - "attr-accept": "^2.2.2", 17150 - "file-selector": "^0.6.0", 17151 - "prop-types": "^15.8.1" 17152 + "@remix-run/router": "1.2.1" 17153 } 17154 }, 17155 - "react-i18next": { 17156 - "version": "11.16.2", 17157 - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.16.2.tgz", 17158 - "integrity": "sha512-1iuZduvARUelL5ux663FvIoDZExwFO+9QtRAAt4uvs1/aun4cUZt8XBrVg7iiDgNls9cOSORAhE7Ri5KA9RMvg==", 17159 + "react-router-dom": { 17160 + "version": "6.6.1", 17161 + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.1.tgz", 17162 + "integrity": "sha512-u+8BKUtelStKbZD5UcY0NY90WOzktrkJJhyhNg7L0APn9t1qJNLowzrM9CHdpB6+rcPt6qQrlkIXsTvhuXP68g==", 17163 "requires": { 17164 - "@babel/runtime": "^7.14.5", 17165 - "html-escaper": "^2.0.2", 17166 - "html-parse-stringify": "^3.0.1" 17167 + "@remix-run/router": "1.2.1", 17168 + "react-router": "6.6.1" 17169 } 17170 }, 17171 - "react-is": { 17172 - "version": "16.13.1", 17173 - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 17174 - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 17175 - }, 17176 - "react-toastify": { 17177 - "version": "9.0.1", 17178 - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.0.1.tgz", 17179 - "integrity": "sha512-c2zeZHkCX+WXuItS/JRqQ/8CH8Qm/je+M0rt09xe9fnu5YPJigtNOdD8zX4fwLA093V2am3abkGfOowwpkrwOQ==", 17180 + "read-cache": { 17181 + "version": "1.0.0", 17182 + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 17183 + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 17184 + "dev": true, 17185 "requires": { 17186 - "clsx": "^1.1.1" 17187 + "pify": "^2.3.0" 17188 } 17189 }, 17190 "read-pkg": { 17191 @@ -12035,16 +8318,10 @@ 17192 "p-limit": "^2.2.0" 17193 } 17194 }, 17195 - "p-try": { 17196 - "version": "2.2.0", 17197 - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 17198 - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 17199 - "dev": true 17200 - }, 17201 - "path-exists": { 17202 - "version": "4.0.0", 17203 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 17204 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 17205 + "type-fest": { 17206 + "version": "0.8.1", 17207 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 17208 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 17209 "dev": true 17210 } 17211 } 17212 @@ -12068,15 +8345,10 @@ 17213 "picomatch": "^2.2.1" 17214 } 17215 }, 17216 - "reflect-metadata": { 17217 - "version": "0.1.13", 17218 - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", 17219 - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" 17220 - }, 17221 "regenerator-runtime": { 17222 - "version": "0.13.9", 17223 - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 17224 - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 17225 + "version": "0.13.11", 17226 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 17227 + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 17228 }, 17229 "regexp-tree": { 17230 "version": "0.1.24", 17231 @@ -12084,99 +8356,53 @@ 17232 "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", 17233 "dev": true 17234 }, 17235 - "regexp.prototype.flags": { 17236 - "version": "1.4.3", 17237 - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 17238 - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 17239 - "dev": true, 17240 - "requires": { 17241 - "call-bind": "^1.0.2", 17242 - "define-properties": "^1.1.3", 17243 - "functions-have-names": "^1.2.2" 17244 - } 17245 - }, 17246 "regexpp": { 17247 "version": "3.2.0", 17248 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 17249 "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 17250 "dev": true 17251 }, 17252 - "remove-bom-buffer": { 17253 - "version": "3.0.0", 17254 - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", 17255 - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", 17256 - "dev": true, 17257 - "requires": { 17258 - "is-buffer": "^1.1.5", 17259 - "is-utf8": "^0.2.1" 17260 - } 17261 - }, 17262 - "remove-bom-stream": { 17263 - "version": "1.2.0", 17264 - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", 17265 - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", 17266 - "dev": true, 17267 - "requires": { 17268 - "remove-bom-buffer": "^3.0.0", 17269 - "safe-buffer": "^5.1.0", 17270 - "through2": "^2.0.3" 17271 - }, 17272 - "dependencies": { 17273 - "readable-stream": { 17274 - "version": "2.3.7", 17275 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 17276 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 17277 - "dev": true, 17278 - "requires": { 17279 - "core-util-is": "~1.0.0", 17280 - "inherits": "~2.0.3", 17281 - "isarray": "~1.0.0", 17282 - "process-nextick-args": "~2.0.0", 17283 - "safe-buffer": "~5.1.1", 17284 - "string_decoder": "~1.1.1", 17285 - "util-deprecate": "~1.0.1" 17286 - } 17287 - }, 17288 - "string_decoder": { 17289 - "version": "1.1.1", 17290 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 17291 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 17292 - "dev": true, 17293 - "requires": { 17294 - "safe-buffer": "~5.1.0" 17295 - } 17296 - }, 17297 - "through2": { 17298 - "version": "2.0.5", 17299 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 17300 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 17301 - "dev": true, 17302 - "requires": { 17303 - "readable-stream": "~2.3.6", 17304 - "xtend": "~4.0.1" 17305 - } 17306 + "request": { 17307 + "version": "2.88.2", 17308 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 17309 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 17310 + "requires": { 17311 + "aws-sign2": "~0.7.0", 17312 + "aws4": "^1.8.0", 17313 + "caseless": "~0.12.0", 17314 + "combined-stream": "~1.0.6", 17315 + "extend": "~3.0.2", 17316 + "forever-agent": "~0.6.1", 17317 + "form-data": "~2.3.2", 17318 + "har-validator": "~5.1.3", 17319 + "http-signature": "~1.2.0", 17320 + "is-typedarray": "~1.0.0", 17321 + "isstream": "~0.1.2", 17322 + "json-stringify-safe": "~5.0.1", 17323 + "mime-types": "~2.1.19", 17324 + "oauth-sign": "~0.9.0", 17325 + "performance-now": "^2.1.0", 17326 + "qs": "~6.5.2", 17327 + "safe-buffer": "^5.1.2", 17328 + "tough-cookie": "~2.5.0", 17329 + "tunnel-agent": "^0.6.0", 17330 + "uuid": "^3.3.2" 17331 + }, 17332 + "dependencies": { 17333 + "qs": { 17334 + "version": "6.5.3", 17335 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 17336 + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" 17337 } 17338 } 17339 }, 17340 - "remove-trailing-separator": { 17341 - "version": "1.1.0", 17342 - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 17343 - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 17344 - "dev": true 17345 - }, 17346 - "replace-ext": { 17347 - "version": "1.0.1", 17348 - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", 17349 - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", 17350 - "dev": true 17351 - }, 17352 "resolve": { 17353 - "version": "1.22.0", 17354 - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 17355 - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 17356 + "version": "1.22.1", 17357 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 17358 + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 17359 "dev": true, 17360 "requires": { 17361 - "is-core-module": "^2.8.1", 17362 + "is-core-module": "^2.9.0", 17363 "path-parse": "^1.0.7", 17364 "supports-preserve-symlinks-flag": "^1.0.0" 17365 } 17366 @@ -12187,25 +8413,19 @@ 17367 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 17368 "dev": true 17369 }, 17370 - "resolve-options": { 17371 - "version": "1.1.0", 17372 - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", 17373 - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", 17374 - "dev": true, 17375 + "restore-cursor": { 17376 + "version": "3.1.0", 17377 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 17378 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 17379 "requires": { 17380 - "value-or-function": "^3.0.0" 17381 + "onetime": "^5.1.0", 17382 + "signal-exit": "^3.0.2" 17383 } 17384 }, 17385 "retry": { 17386 - "version": "0.12.0", 17387 - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 17388 - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", 17389 - "optional": true 17390 - }, 17391 - "retry-as-promised": { 17392 - "version": "5.0.0", 17393 - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", 17394 - "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" 17395 + "version": "0.13.1", 17396 + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", 17397 + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" 17398 }, 17399 "reusify": { 17400 "version": "1.0.4", 17401 @@ -12217,15 +8437,24 @@ 17402 "version": "3.0.2", 17403 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 17404 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 17405 + "dev": true, 17406 "requires": { 17407 "glob": "^7.1.3" 17408 } 17409 }, 17410 - "rsvp": { 17411 - "version": "4.8.5", 17412 - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", 17413 - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", 17414 - "dev": true 17415 + "rollup": { 17416 + "version": "2.77.3", 17417 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 17418 + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 17419 + "dev": true, 17420 + "requires": { 17421 + "fsevents": "~2.3.2" 17422 + } 17423 + }, 17424 + "run-async": { 17425 + "version": "2.4.1", 17426 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 17427 + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" 17428 }, 17429 "run-parallel": { 17430 "version": "1.2.0", 17431 @@ -12236,11 +8465,18 @@ 17432 "queue-microtask": "^1.2.2" 17433 } 17434 }, 17435 + "rxjs": { 17436 + "version": "7.8.0", 17437 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", 17438 + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", 17439 + "requires": { 17440 + "tslib": "^2.1.0" 17441 + } 17442 + }, 17443 "safe-buffer": { 17444 - "version": "5.1.2", 17445 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 17446 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 17447 - "dev": true 17448 + "version": "5.2.1", 17449 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 17450 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 17451 }, 17452 "safe-regex": { 17453 "version": "2.1.1", 17454 @@ -12254,18 +8490,13 @@ 17455 "safer-buffer": { 17456 "version": "2.1.2", 17457 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 17458 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 17459 - "optional": true 17460 - }, 17461 - "sax": { 17462 - "version": "1.2.4", 17463 - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 17464 - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 17465 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 17466 }, 17467 "scheduler": { 17468 - "version": "0.22.0", 17469 - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", 17470 - "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", 17471 + "version": "0.23.0", 17472 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 17473 + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 17474 + "peer": true, 17475 "requires": { 17476 "loose-envify": "^1.1.0" 17477 } 17478 @@ -12273,58 +8504,8 @@ 17479 "semver": { 17480 "version": "6.3.0", 17481 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 17482 - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 17483 - }, 17484 - "sequelize": { 17485 - "version": "6.20.0", 17486 - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.20.0.tgz", 17487 - "integrity": "sha512-45B+k4eKP0D+x1F08dSYnZjlKGvlxM/FCVTWQ6TLVaGCyRv/TmvTRSZ4bTNB5pMgQOMkJUlztg5zSvMmkzaWCA==", 17488 - "requires": { 17489 - "@types/debug": "^4.1.7", 17490 - "@types/validator": "^13.7.1", 17491 - "debug": "^4.3.3", 17492 - "dottie": "^2.0.2", 17493 - "inflection": "^1.13.2", 17494 - "lodash": "^4.17.21", 17495 - "moment": "^2.29.1", 17496 - "moment-timezone": "^0.5.34", 17497 - "pg-connection-string": "^2.5.0", 17498 - "retry-as-promised": "^5.0.0", 17499 - "semver": "^7.3.5", 17500 - "sequelize-pool": "^7.1.0", 17501 - "toposort-class": "^1.0.1", 17502 - "uuid": "^8.3.2", 17503 - "validator": "^13.7.0", 17504 - "wkx": "^0.5.0" 17505 - }, 17506 - "dependencies": { 17507 - "semver": { 17508 - "version": "7.3.5", 17509 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 17510 - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 17511 - "requires": { 17512 - "lru-cache": "^6.0.0" 17513 - } 17514 - } 17515 - } 17516 - }, 17517 - "sequelize-pool": { 17518 - "version": "7.1.0", 17519 - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", 17520 - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" 17521 - }, 17522 - "sequelize-typescript": { 17523 - "version": "2.1.3", 17524 - "resolved": "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.3.tgz", 17525 - "integrity": "sha512-0mejGAaLywuCoOOLSXCQs2sMBNudU/QtWZkGY5VT2dfTHToXZi5bOxCa3/CukNNk7wJwXnLuIdeHdlqjvVoj1g==", 17526 - "requires": { 17527 - "glob": "7.2.0" 17528 - } 17529 - }, 17530 - "set-blocking": { 17531 - "version": "2.0.0", 17532 - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 17533 - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 17534 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 17535 + "dev": true 17536 }, 17537 "shebang-command": { 17538 "version": "2.0.0", 17539 @@ -12343,72 +8524,30 @@ 17540 }, 17541 "side-channel": { 17542 "version": "1.0.4", 17543 - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 17544 - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 17545 - "dev": true, 17546 - "requires": { 17547 - "call-bind": "^1.0.0", 17548 - "get-intrinsic": "^1.0.2", 17549 - "object-inspect": "^1.9.0" 17550 - } 17551 - }, 17552 - "signal-exit": { 17553 - "version": "3.0.7", 17554 - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 17555 - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 17556 - }, 17557 - "slash": { 17558 - "version": "3.0.0", 17559 - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 17560 - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 17561 - "dev": true 17562 - }, 17563 - "smart-buffer": { 17564 - "version": "4.2.0", 17565 - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 17566 - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 17567 - "optional": true 17568 - }, 17569 - "socks": { 17570 - "version": "2.6.2", 17571 - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", 17572 - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", 17573 - "optional": true, 17574 - "requires": { 17575 - "ip": "^1.1.5", 17576 - "smart-buffer": "^4.2.0" 17577 - } 17578 - }, 17579 - "socks-proxy-agent": { 17580 - "version": "6.1.1", 17581 - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", 17582 - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", 17583 - "optional": true, 17584 - "requires": { 17585 - "agent-base": "^6.0.2", 17586 - "debug": "^4.3.1", 17587 - "socks": "^2.6.1" 17588 - } 17589 - }, 17590 - "sort-keys": { 17591 - "version": "5.0.0", 17592 - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", 17593 - "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==", 17594 - "dev": true, 17595 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 17596 + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 17597 "requires": { 17598 - "is-plain-obj": "^4.0.0" 17599 + "call-bind": "^1.0.0", 17600 + "get-intrinsic": "^1.0.2", 17601 + "object-inspect": "^1.9.0" 17602 } 17603 }, 17604 - "source-map": { 17605 - "version": "0.5.7", 17606 - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 17607 - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 17608 + "signal-exit": { 17609 + "version": "3.0.7", 17610 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 17611 + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 17612 + }, 17613 + "slash": { 17614 + "version": "3.0.0", 17615 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 17616 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 17617 "dev": true 17618 }, 17619 "source-map-js": { 17620 "version": "1.0.2", 17621 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 17622 - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 17623 + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 17624 + "dev": true 17625 }, 17626 "spdx-correct": { 17627 "version": "3.1.1", 17628 @@ -12437,56 +8576,33 @@ 17629 } 17630 }, 17631 "spdx-license-ids": { 17632 - "version": "3.0.11", 17633 - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", 17634 - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", 17635 + "version": "3.0.12", 17636 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", 17637 + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", 17638 "dev": true 17639 }, 17640 - "sprintf-js": { 17641 - "version": "1.1.2", 17642 - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 17643 - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 17644 - "dev": true 17645 - }, 17646 - "sqlite3": { 17647 - "version": "5.0.8", 17648 - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", 17649 - "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", 17650 - "requires": { 17651 - "@mapbox/node-pre-gyp": "^1.0.0", 17652 - "node-addon-api": "^4.2.0", 17653 - "node-gyp": "8.x", 17654 - "tar": "^6.1.11" 17655 - } 17656 - }, 17657 - "ssri": { 17658 - "version": "8.0.1", 17659 - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", 17660 - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", 17661 - "optional": true, 17662 + "sshpk": { 17663 + "version": "1.17.0", 17664 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 17665 + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 17666 "requires": { 17667 - "minipass": "^3.1.1" 17668 + "asn1": "~0.2.3", 17669 + "assert-plus": "^1.0.0", 17670 + "bcrypt-pbkdf": "^1.0.0", 17671 + "dashdash": "^1.12.0", 17672 + "ecc-jsbn": "~0.1.1", 17673 + "getpass": "^0.1.1", 17674 + "jsbn": "~0.1.0", 17675 + "safer-buffer": "^2.0.2", 17676 + "tweetnacl": "~0.14.0" 17677 } 17678 }, 17679 - "stream-shift": { 17680 - "version": "1.0.1", 17681 - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 17682 - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", 17683 - "dev": true 17684 - }, 17685 "string_decoder": { 17686 "version": "1.3.0", 17687 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 17688 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 17689 "requires": { 17690 "safe-buffer": "~5.2.0" 17691 - }, 17692 - "dependencies": { 17693 - "safe-buffer": { 17694 - "version": "5.2.1", 17695 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 17696 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 17697 - } 17698 } 17699 }, 17700 "string-width": { 17701 @@ -12497,49 +8613,6 @@ 17702 "emoji-regex": "^8.0.0", 17703 "is-fullwidth-code-point": "^3.0.0", 17704 "strip-ansi": "^6.0.1" 17705 - }, 17706 - "dependencies": { 17707 - "emoji-regex": { 17708 - "version": "8.0.0", 17709 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 17710 - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 17711 - } 17712 - } 17713 - }, 17714 - "string.prototype.matchall": { 17715 - "version": "4.0.7", 17716 - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", 17717 - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", 17718 - "dev": true, 17719 - "requires": { 17720 - "call-bind": "^1.0.2", 17721 - "define-properties": "^1.1.3", 17722 - "es-abstract": "^1.19.1", 17723 - "get-intrinsic": "^1.1.1", 17724 - "has-symbols": "^1.0.3", 17725 - "internal-slot": "^1.0.3", 17726 - "regexp.prototype.flags": "^1.4.1", 17727 - "side-channel": "^1.0.4" 17728 - } 17729 - }, 17730 - "string.prototype.trimend": { 17731 - "version": "1.0.4", 17732 - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 17733 - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 17734 - "dev": true, 17735 - "requires": { 17736 - "call-bind": "^1.0.2", 17737 - "define-properties": "^1.1.3" 17738 - } 17739 - }, 17740 - "string.prototype.trimstart": { 17741 - "version": "1.0.4", 17742 - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 17743 - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 17744 - "dev": true, 17745 - "requires": { 17746 - "call-bind": "^1.0.2", 17747 - "define-properties": "^1.1.3" 17748 } 17749 }, 17750 "strip-ansi": { 17751 @@ -12550,12 +8623,6 @@ 17752 "ansi-regex": "^5.0.1" 17753 } 17754 }, 17755 - "strip-bom": { 17756 - "version": "3.0.0", 17757 - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 17758 - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 17759 - "dev": true 17760 - }, 17761 "strip-indent": { 17762 "version": "3.0.0", 17763 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 17764 @@ -12571,12 +8638,6 @@ 17765 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 17766 "dev": true 17767 }, 17768 - "styled-jsx": { 17769 - "version": "5.0.2", 17770 - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.2.tgz", 17771 - "integrity": "sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==", 17772 - "requires": {} 17773 - }, 17774 "supports-color": { 17775 "version": "5.5.0", 17776 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 17777 @@ -12592,39 +8653,35 @@ 17778 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 17779 "dev": true 17780 }, 17781 - "symlink-or-copy": { 17782 - "version": "1.3.1", 17783 - "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz", 17784 - "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==", 17785 - "dev": true 17786 - }, 17787 "tailwindcss": { 17788 - "version": "3.0.24", 17789 - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", 17790 - "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", 17791 + "version": "3.2.4", 17792 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz", 17793 + "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==", 17794 "dev": true, 17795 "requires": { 17796 - "arg": "^5.0.1", 17797 + "arg": "^5.0.2", 17798 "chokidar": "^3.5.3", 17799 "color-name": "^1.1.4", 17800 - "detective": "^5.2.0", 17801 + "detective": "^5.2.1", 17802 "didyoumean": "^1.2.2", 17803 "dlv": "^1.1.3", 17804 - "fast-glob": "^3.2.11", 17805 + "fast-glob": "^3.2.12", 17806 "glob-parent": "^6.0.2", 17807 "is-glob": "^4.0.3", 17808 - "lilconfig": "^2.0.5", 17809 + "lilconfig": "^2.0.6", 17810 + "micromatch": "^4.0.5", 17811 "normalize-path": "^3.0.0", 17812 "object-hash": "^3.0.0", 17813 "picocolors": "^1.0.0", 17814 - "postcss": "^8.4.12", 17815 + "postcss": "^8.4.18", 17816 + "postcss-import": "^14.1.0", 17817 "postcss-js": "^4.0.0", 17818 "postcss-load-config": "^3.1.4", 17819 - "postcss-nested": "5.0.6", 17820 + "postcss-nested": "6.0.0", 17821 "postcss-selector-parser": "^6.0.10", 17822 "postcss-value-parser": "^4.2.0", 17823 "quick-lru": "^5.1.1", 17824 - "resolve": "^1.22.0" 17825 + "resolve": "^1.22.1" 17826 }, 17827 "dependencies": { 17828 "color-name": { 17829 @@ -12635,94 +8692,29 @@ 17830 } 17831 } 17832 }, 17833 - "tar": { 17834 - "version": "6.1.11", 17835 - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 17836 - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 17837 - "requires": { 17838 - "chownr": "^2.0.0", 17839 - "fs-minipass": "^2.0.0", 17840 - "minipass": "^3.0.0", 17841 - "minizlib": "^2.1.1", 17842 - "mkdirp": "^1.0.3", 17843 - "yallist": "^4.0.0" 17844 - } 17845 - }, 17846 "text-table": { 17847 "version": "0.2.0", 17848 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 17849 - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 17850 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 17851 "dev": true 17852 }, 17853 - "through2": { 17854 - "version": "4.0.2", 17855 - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", 17856 - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", 17857 - "dev": true, 17858 - "requires": { 17859 - "readable-stream": "3" 17860 - } 17861 - }, 17862 - "through2-filter": { 17863 - "version": "3.0.0", 17864 - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", 17865 - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", 17866 - "dev": true, 17867 - "requires": { 17868 - "through2": "~2.0.0", 17869 - "xtend": "~4.0.0" 17870 - }, 17871 - "dependencies": { 17872 - "readable-stream": { 17873 - "version": "2.3.7", 17874 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 17875 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 17876 - "dev": true, 17877 - "requires": { 17878 - "core-util-is": "~1.0.0", 17879 - "inherits": "~2.0.3", 17880 - "isarray": "~1.0.0", 17881 - "process-nextick-args": "~2.0.0", 17882 - "safe-buffer": "~5.1.1", 17883 - "string_decoder": "~1.1.1", 17884 - "util-deprecate": "~1.0.1" 17885 - } 17886 - }, 17887 - "string_decoder": { 17888 - "version": "1.1.1", 17889 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 17890 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 17891 - "dev": true, 17892 - "requires": { 17893 - "safe-buffer": "~5.1.0" 17894 - } 17895 - }, 17896 - "through2": { 17897 - "version": "2.0.5", 17898 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 17899 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 17900 - "dev": true, 17901 - "requires": { 17902 - "readable-stream": "~2.3.6", 17903 - "xtend": "~4.0.1" 17904 - } 17905 - } 17906 - } 17907 + "through": { 17908 + "version": "2.3.8", 17909 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 17910 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 17911 }, 17912 - "to-absolute-glob": { 17913 - "version": "2.0.2", 17914 - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 17915 - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", 17916 - "dev": true, 17917 + "tmp": { 17918 + "version": "0.0.33", 17919 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 17920 + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 17921 "requires": { 17922 - "is-absolute": "^1.0.0", 17923 - "is-negated-glob": "^1.0.0" 17924 + "os-tmpdir": "~1.0.2" 17925 } 17926 }, 17927 "to-fast-properties": { 17928 "version": "2.0.0", 17929 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 17930 - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 17931 + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 17932 "dev": true 17933 }, 17934 "to-regex-range": { 17935 @@ -12734,88 +8726,19 @@ 17936 "is-number": "^7.0.0" 17937 } 17938 }, 17939 - "to-through": { 17940 - "version": "2.0.0", 17941 - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", 17942 - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", 17943 - "dev": true, 17944 - "requires": { 17945 - "through2": "^2.0.3" 17946 - }, 17947 - "dependencies": { 17948 - "readable-stream": { 17949 - "version": "2.3.7", 17950 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 17951 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 17952 - "dev": true, 17953 - "requires": { 17954 - "core-util-is": "~1.0.0", 17955 - "inherits": "~2.0.3", 17956 - "isarray": "~1.0.0", 17957 - "process-nextick-args": "~2.0.0", 17958 - "safe-buffer": "~5.1.1", 17959 - "string_decoder": "~1.1.1", 17960 - "util-deprecate": "~1.0.1" 17961 - } 17962 - }, 17963 - "string_decoder": { 17964 - "version": "1.1.1", 17965 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 17966 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 17967 - "dev": true, 17968 - "requires": { 17969 - "safe-buffer": "~5.1.0" 17970 - } 17971 - }, 17972 - "through2": { 17973 - "version": "2.0.5", 17974 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 17975 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 17976 - "dev": true, 17977 - "requires": { 17978 - "readable-stream": "~2.3.6", 17979 - "xtend": "~4.0.1" 17980 - } 17981 - } 17982 - } 17983 - }, 17984 - "toposort-class": { 17985 - "version": "1.0.1", 17986 - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", 17987 - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" 17988 - }, 17989 - "tr46": { 17990 - "version": "0.0.3", 17991 - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 17992 - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 17993 - }, 17994 - "tsconfig-paths": { 17995 - "version": "3.14.1", 17996 - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 17997 - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 17998 - "dev": true, 17999 + "tough-cookie": { 18000 + "version": "2.5.0", 18001 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 18002 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 18003 "requires": { 18004 - "@types/json5": "^0.0.29", 18005 - "json5": "^1.0.1", 18006 - "minimist": "^1.2.6", 18007 - "strip-bom": "^3.0.0" 18008 - }, 18009 - "dependencies": { 18010 - "json5": { 18011 - "version": "1.0.1", 18012 - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 18013 - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 18014 - "dev": true, 18015 - "requires": { 18016 - "minimist": "^1.2.0" 18017 - } 18018 - } 18019 + "psl": "^1.1.28", 18020 + "punycode": "^2.1.1" 18021 } 18022 }, 18023 "tslib": { 18024 - "version": "2.4.0", 18025 - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 18026 - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 18027 + "version": "2.4.1", 18028 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 18029 + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" 18030 }, 18031 "tsutils": { 18032 "version": "3.21.0", 18033 @@ -12834,6 +8757,19 @@ 18034 } 18035 } 18036 }, 18037 + "tunnel-agent": { 18038 + "version": "0.6.0", 18039 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 18040 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 18041 + "requires": { 18042 + "safe-buffer": "^5.0.1" 18043 + } 18044 + }, 18045 + "tweetnacl": { 18046 + "version": "0.14.5", 18047 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 18048 + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" 18049 + }, 18050 "type-check": { 18051 "version": "0.4.0", 18052 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 18053 @@ -12844,90 +8780,35 @@ 18054 } 18055 }, 18056 "type-fest": { 18057 - "version": "0.8.1", 18058 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 18059 - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 18060 - "dev": true 18061 - }, 18062 - "typedarray": { 18063 - "version": "0.0.6", 18064 - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 18065 - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 18066 - "dev": true 18067 + "version": "0.21.3", 18068 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 18069 + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" 18070 }, 18071 "typescript": { 18072 - "version": "4.7.2", 18073 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", 18074 - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", 18075 - "dev": true 18076 - }, 18077 - "unbox-primitive": { 18078 - "version": "1.0.1", 18079 - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 18080 - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 18081 - "dev": true, 18082 - "requires": { 18083 - "function-bind": "^1.1.1", 18084 - "has-bigints": "^1.0.1", 18085 - "has-symbols": "^1.0.2", 18086 - "which-boxed-primitive": "^1.0.2" 18087 - } 18088 - }, 18089 - "unc-path-regex": { 18090 - "version": "0.1.2", 18091 - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 18092 - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 18093 + "version": "4.9.4", 18094 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 18095 + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 18096 "dev": true 18097 }, 18098 - "underscore.string": { 18099 - "version": "3.3.6", 18100 - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", 18101 - "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", 18102 - "dev": true, 18103 - "requires": { 18104 - "sprintf-js": "^1.1.1", 18105 - "util-deprecate": "^1.0.2" 18106 - } 18107 - }, 18108 - "unique-filename": { 18109 - "version": "1.1.1", 18110 - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 18111 - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 18112 - "optional": true, 18113 - "requires": { 18114 - "unique-slug": "^2.0.0" 18115 - } 18116 - }, 18117 - "unique-slug": { 18118 - "version": "2.0.2", 18119 - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 18120 - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 18121 - "optional": true, 18122 - "requires": { 18123 - "imurmurhash": "^0.1.4" 18124 - } 18125 + "unhomoglyph": { 18126 + "version": "1.0.6", 18127 + "resolved": "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.6.tgz", 18128 + "integrity": "sha512-7uvcWI3hWshSADBu4JpnyYbTVc7YlhF5GDW/oPD5AxIxl34k4wXR3WDkPnzLxkN32LiTCTKMQLtKVZiwki3zGg==" 18129 }, 18130 - "unique-stream": { 18131 - "version": "2.3.1", 18132 - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", 18133 - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", 18134 + "update-browserslist-db": { 18135 + "version": "1.0.10", 18136 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 18137 + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 18138 "dev": true, 18139 "requires": { 18140 - "json-stable-stringify-without-jsonify": "^1.0.1", 18141 - "through2-filter": "^3.0.0" 18142 + "escalade": "^3.1.1", 18143 + "picocolors": "^1.0.0" 18144 } 18145 }, 18146 - "universalify": { 18147 - "version": "2.0.0", 18148 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 18149 - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 18150 - "dev": true 18151 - }, 18152 "uri-js": { 18153 "version": "4.4.1", 18154 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 18155 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 18156 - "dev": true, 18157 "requires": { 18158 "punycode": "^2.1.0" 18159 } 18160 @@ -12935,18 +8816,12 @@ 18161 "util-deprecate": { 18162 "version": "1.0.2", 18163 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 18164 - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 18165 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 18166 }, 18167 "uuid": { 18168 - "version": "8.3.2", 18169 - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 18170 - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 18171 - }, 18172 - "v8-compile-cache": { 18173 - "version": "2.3.0", 18174 - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 18175 - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 18176 - "dev": true 18177 + "version": "3.4.0", 18178 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 18179 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 18180 }, 18181 "validate-npm-package-license": { 18182 "version": "3.0.4", 18183 @@ -12958,200 +8833,44 @@ 18184 "spdx-expression-parse": "^3.0.0" 18185 } 18186 }, 18187 - "validator": { 18188 - "version": "13.7.0", 18189 - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", 18190 - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" 18191 - }, 18192 - "value-or-function": { 18193 - "version": "3.0.0", 18194 - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", 18195 - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", 18196 - "dev": true 18197 - }, 18198 - "vary": { 18199 - "version": "1.1.2", 18200 - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 18201 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 18202 - }, 18203 - "vinyl": { 18204 - "version": "2.2.1", 18205 - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", 18206 - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", 18207 - "dev": true, 18208 - "requires": { 18209 - "clone": "^2.1.1", 18210 - "clone-buffer": "^1.0.0", 18211 - "clone-stats": "^1.0.0", 18212 - "cloneable-readable": "^1.0.0", 18213 - "remove-trailing-separator": "^1.0.1", 18214 - "replace-ext": "^1.0.0" 18215 - } 18216 - }, 18217 - "vinyl-fs": { 18218 - "version": "3.0.3", 18219 - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", 18220 - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", 18221 - "dev": true, 18222 - "requires": { 18223 - "fs-mkdirp-stream": "^1.0.0", 18224 - "glob-stream": "^6.1.0", 18225 - "graceful-fs": "^4.0.0", 18226 - "is-valid-glob": "^1.0.0", 18227 - "lazystream": "^1.0.0", 18228 - "lead": "^1.0.0", 18229 - "object.assign": "^4.0.4", 18230 - "pumpify": "^1.3.5", 18231 - "readable-stream": "^2.3.3", 18232 - "remove-bom-buffer": "^3.0.0", 18233 - "remove-bom-stream": "^1.2.0", 18234 - "resolve-options": "^1.1.0", 18235 - "through2": "^2.0.0", 18236 - "to-through": "^2.0.0", 18237 - "value-or-function": "^3.0.0", 18238 - "vinyl": "^2.0.0", 18239 - "vinyl-sourcemap": "^1.1.0" 18240 - }, 18241 - "dependencies": { 18242 - "readable-stream": { 18243 - "version": "2.3.7", 18244 - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 18245 - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 18246 - "dev": true, 18247 - "requires": { 18248 - "core-util-is": "~1.0.0", 18249 - "inherits": "~2.0.3", 18250 - "isarray": "~1.0.0", 18251 - "process-nextick-args": "~2.0.0", 18252 - "safe-buffer": "~5.1.1", 18253 - "string_decoder": "~1.1.1", 18254 - "util-deprecate": "~1.0.1" 18255 - } 18256 - }, 18257 - "string_decoder": { 18258 - "version": "1.1.1", 18259 - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 18260 - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 18261 - "dev": true, 18262 - "requires": { 18263 - "safe-buffer": "~5.1.0" 18264 - } 18265 - }, 18266 - "through2": { 18267 - "version": "2.0.5", 18268 - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 18269 - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 18270 - "dev": true, 18271 - "requires": { 18272 - "readable-stream": "~2.3.6", 18273 - "xtend": "~4.0.1" 18274 - } 18275 - } 18276 - } 18277 - }, 18278 - "vinyl-sourcemap": { 18279 - "version": "1.1.0", 18280 - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", 18281 - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", 18282 - "dev": true, 18283 - "requires": { 18284 - "append-buffer": "^1.0.2", 18285 - "convert-source-map": "^1.5.0", 18286 - "graceful-fs": "^4.1.6", 18287 - "normalize-path": "^2.1.1", 18288 - "now-and-later": "^2.0.0", 18289 - "remove-bom-buffer": "^3.0.0", 18290 - "vinyl": "^2.0.0" 18291 - }, 18292 - "dependencies": { 18293 - "normalize-path": { 18294 - "version": "2.1.1", 18295 - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 18296 - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 18297 - "dev": true, 18298 - "requires": { 18299 - "remove-trailing-separator": "^1.0.1" 18300 - } 18301 - } 18302 - } 18303 - }, 18304 - "void-elements": { 18305 - "version": "3.1.0", 18306 - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", 18307 - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" 18308 - }, 18309 - "vue-template-compiler": { 18310 - "version": "2.6.14", 18311 - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", 18312 - "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", 18313 - "dev": true, 18314 + "verror": { 18315 + "version": "1.10.0", 18316 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 18317 + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", 18318 "requires": { 18319 - "de-indent": "^1.0.2", 18320 - "he": "^1.1.0" 18321 + "assert-plus": "^1.0.0", 18322 + "core-util-is": "1.0.2", 18323 + "extsprintf": "^1.2.0" 18324 } 18325 }, 18326 - "walk-sync": { 18327 - "version": "2.2.0", 18328 - "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", 18329 - "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", 18330 + "vite": { 18331 + "version": "2.9.15", 18332 + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", 18333 + "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", 18334 "dev": true, 18335 "requires": { 18336 - "@types/minimatch": "^3.0.3", 18337 - "ensure-posix-path": "^1.1.0", 18338 - "matcher-collection": "^2.0.0", 18339 - "minimatch": "^3.0.4" 18340 + "esbuild": "^0.14.27", 18341 + "fsevents": "~2.3.2", 18342 + "postcss": "^8.4.13", 18343 + "resolve": "^1.22.0", 18344 + "rollup": ">=2.59.0 <2.78.0" 18345 } 18346 }, 18347 - "webidl-conversions": { 18348 - "version": "3.0.1", 18349 - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 18350 - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 18351 - }, 18352 - "whatwg-url": { 18353 - "version": "5.0.0", 18354 - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 18355 - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 18356 + "wcwidth": { 18357 + "version": "1.0.1", 18358 + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 18359 + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", 18360 "requires": { 18361 - "tr46": "~0.0.3", 18362 - "webidl-conversions": "^3.0.0" 18363 + "defaults": "^1.0.3" 18364 } 18365 }, 18366 "which": { 18367 "version": "2.0.2", 18368 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 18369 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 18370 - "devOptional": true, 18371 - "requires": { 18372 - "isexe": "^2.0.0" 18373 - } 18374 - }, 18375 - "which-boxed-primitive": { 18376 - "version": "1.0.2", 18377 - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 18378 - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 18379 "dev": true, 18380 "requires": { 18381 - "is-bigint": "^1.0.1", 18382 - "is-boolean-object": "^1.1.0", 18383 - "is-number-object": "^1.0.4", 18384 - "is-string": "^1.0.5", 18385 - "is-symbol": "^1.0.3" 18386 - } 18387 - }, 18388 - "wide-align": { 18389 - "version": "1.1.5", 18390 - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 18391 - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 18392 - "requires": { 18393 - "string-width": "^1.0.2 || 2 || 3 || 4" 18394 - } 18395 - }, 18396 - "wkx": { 18397 - "version": "0.5.0", 18398 - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", 18399 - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", 18400 - "requires": { 18401 - "@types/node": "*" 18402 + "isexe": "^2.0.0" 18403 } 18404 }, 18405 "word-wrap": { 18406 @@ -13160,18 +8879,44 @@ 18407 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 18408 "dev": true 18409 }, 18410 + "wrap-ansi": { 18411 + "version": "7.0.0", 18412 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 18413 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 18414 + "requires": { 18415 + "ansi-styles": "^4.0.0", 18416 + "string-width": "^4.1.0", 18417 + "strip-ansi": "^6.0.0" 18418 + }, 18419 + "dependencies": { 18420 + "ansi-styles": { 18421 + "version": "4.3.0", 18422 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 18423 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 18424 + "requires": { 18425 + "color-convert": "^2.0.1" 18426 + } 18427 + }, 18428 + "color-convert": { 18429 + "version": "2.0.1", 18430 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 18431 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 18432 + "requires": { 18433 + "color-name": "~1.1.4" 18434 + } 18435 + }, 18436 + "color-name": { 18437 + "version": "1.1.4", 18438 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 18439 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 18440 + } 18441 + } 18442 + }, 18443 "wrappy": { 18444 "version": "1.0.2", 18445 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 18446 - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 18447 - }, 18448 - "xml-js": { 18449 - "version": "1.6.11", 18450 - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", 18451 - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", 18452 - "requires": { 18453 - "sax": "^1.2.4" 18454 - } 18455 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 18456 + "dev": true 18457 }, 18458 "xtend": { 18459 "version": "4.0.2", 18460 @@ -13180,15 +8925,22 @@ 18461 "dev": true 18462 }, 18463 "yallist": { 18464 - "version": "4.0.0", 18465 - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 18466 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 18467 + "version": "3.1.1", 18468 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 18469 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 18470 + "dev": true 18471 }, 18472 "yaml": { 18473 "version": "1.10.2", 18474 "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 18475 "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 18476 "dev": true 18477 + }, 18478 + "yocto-queue": { 18479 + "version": "0.1.0", 18480 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 18481 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 18482 + "dev": true 18483 } 18484 } 18485 } 18486 diff --git a/package.json b/package.json 18487 index 6b04e7d..965b107 100644 18488 --- a/package.json 18489 +++ b/package.json 18490 @@ -1,62 +1,37 @@ 18491 { 18492 "name": "matrix-art", 18493 "private": true, 18494 - "browserslist": [ 18495 - "cover 99.9%" 18496 - ], 18497 + "version": "0.0.0", 18498 "scripts": { 18499 - "dev": "next dev", 18500 - "build": "cross-env NODE_ENV='production' next build", 18501 - "start": "cross-env NODE_ENV='production' next start", 18502 - "export": "cross-env NODE_ENV='production' next export", 18503 - "lint": "cross-env NODE_ENV='production' next lint", 18504 - "extractKeys": "i18next 'pages/**/*.{ts,tsx}' 'components/**/*.{ts,tsx}'", 18505 - "test": "cross-env NODE_ENV='test' playwright test" 18506 - }, 18507 - "engines": { 18508 - "node": ">=17.0.0" 18509 + "dev": "vite", 18510 + "build": "tsc && vite build", 18511 + "preview": "vite preview", 18512 + "lint": "eslint src --ext .js,.jsx,.ts,.tsx" 18513 }, 18514 "dependencies": { 18515 - "blurhash": "1.1.5", 18516 - "cors": "2.8.5", 18517 - "feed": "yshrsmz/feed#c50d7a82c5b6141039830d615b19b760e173e231", 18518 - "lightgallery": "2.4.0", 18519 - "localforage": "1.10.0", 18520 - "meilisearch": "0.25.1", 18521 - "next": "12.1.6", 18522 - "next-i18next": "11.0.0", 18523 - "png-chunks-extract": "1.0.0", 18524 - "prop-types": "15.8.1", 18525 - "react": "18.1.0", 18526 - "react-blurhash": "0.1.3", 18527 - "react-dom": "18.1.0", 18528 - "react-dropzone": "14.2.1", 18529 - "react-toastify": "9.0.1", 18530 - "reflect-metadata": "0.1.13", 18531 - "sequelize": "6.20.0", 18532 - "sequelize-typescript": "2.1.3", 18533 - "sqlite3": "5.0.8" 18534 + "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", 18535 + "buffer": "^6.0.3", 18536 + "events": "^3.3.0", 18537 + "inquirer": "^8.2.5", 18538 + "matrix-events-sdk": "^0.0.1", 18539 + "matrix-js-sdk": "^16.0.1", 18540 + "preact": "^10.11.3", 18541 + "react-plock": "^1.2.1", 18542 + "react-router-dom": "^6.6.1" 18543 }, 18544 "devDependencies": { 18545 - "@babel/plugin-transform-typescript": "7.18.1", 18546 - "@playwright/test": "1.22.2", 18547 - "@types/cors": "2.8.12", 18548 - "@types/node": "17.0.35", 18549 - "@types/offscreencanvas": "2019.7.0", 18550 - "@types/react": "18.0.9", 18551 - "@types/validator": "13.7.2", 18552 - "autoprefixer": "10.4.7", 18553 - "cross-env": "7.0.3", 18554 - "eslint": "8.16.0", 18555 - "eslint-config-next": "12.1.6", 18556 - "eslint-plugin-jsx-a11y": "6.5.1", 18557 - "eslint-plugin-unicorn": "42.0.0", 18558 - "i18next-parser": "6.4.0", 18559 - "postcss": "8.4.14", 18560 - "tailwindcss": "3.0.24", 18561 - "typescript": "4.7.2" 18562 - }, 18563 - "optionalDependencies": { 18564 - "fsevents": "2.3.2" 18565 + "@preact/preset-vite": "^2.5.0", 18566 + "@types/events": "^3.0.0", 18567 + "@types/photoswipe": "^4.1.2", 18568 + "@typescript-eslint/eslint-plugin": "^5.48.0", 18569 + "@typescript-eslint/parser": "^5.48.0", 18570 + "autoprefixer": "^10.4.13", 18571 + "eslint": "^8.31.0", 18572 + "eslint-plugin-tailwindcss": "^3.8.0", 18573 + "eslint-plugin-unicorn": "^41.0.1", 18574 + "postcss": "^8.4.20", 18575 + "tailwindcss": "^3.2.4", 18576 + "typescript": "^4.9.4", 18577 + "vite": "^2.9.15" 18578 } 18579 } 18580 diff --git a/pages/404.tsx b/pages/404.tsx 18581 deleted file mode 100644 18582 index 5535997..0000000 18583 --- a/pages/404.tsx 18584 +++ /dev/null 18585 @@ -1,27 +0,0 @@ 18586 -import { GetStaticProps } from "next"; 18587 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 18588 -import { PureComponent, ReactNode } from "react"; 18589 - 18590 -class Custom404 extends PureComponent { 18591 - render(): ReactNode { 18592 - return ( 18593 - <div className="m-0 w-full"> 18594 - <div className="text-base text-white flex flex-row justify-center"> 18595 - <h1 className="text-2xl">404 - Page Not Found</h1> 18596 - </div> 18597 - </div> 18598 - ); 18599 - return; 18600 - } 18601 -} 18602 - 18603 -export const getStaticProps: GetStaticProps = async ({ locale }) => { 18604 - return { 18605 - props: { 18606 - ...(await serverSideTranslations(locale ?? 'en', ['common'])) 18607 - } 18608 - }; 18609 - 18610 -}; 18611 - 18612 -export default Custom404; 18613 \ No newline at end of file 18614 diff --git a/pages/500.tsx b/pages/500.tsx 18615 deleted file mode 100644 18616 index 8fe8b4b..0000000 18617 --- a/pages/500.tsx 18618 +++ /dev/null 18619 @@ -1,26 +0,0 @@ 18620 -import { GetStaticProps } from "next"; 18621 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 18622 -import { PureComponent, ReactNode } from "react"; 18623 - 18624 -class Custom500 extends PureComponent { 18625 - render(): ReactNode { 18626 - return ( 18627 - <div className="m-0 w-full"> 18628 - <div className="text-base text-white flex flex-row justify-center"> 18629 - <h1>500 - Server-side error occurred</h1> 18630 - </div> 18631 - </div> 18632 - ); 18633 - } 18634 -} 18635 - 18636 -export const getStaticProps: GetStaticProps = async ({ locale }) => { 18637 - return { 18638 - props: { 18639 - ...(await serverSideTranslations(locale ?? 'en', ['common'])) 18640 - } 18641 - }; 18642 - 18643 -}; 18644 - 18645 -export default Custom500; 18646 \ No newline at end of file 18647 diff --git a/pages/_app.tsx b/pages/_app.tsx 18648 deleted file mode 100644 18649 index 55f68f3..0000000 18650 --- a/pages/_app.tsx 18651 +++ /dev/null 18652 @@ -1,129 +0,0 @@ 18653 -import '../styles/globals.css'; 18654 -import 'react-toastify/dist/ReactToastify.min.css'; 18655 -import type { AppProps } from 'next/app'; 18656 -import { ClientContext, } from '../components/ClientContext'; 18657 -import React, { PureComponent } from 'react'; 18658 -import Head from 'next/head'; 18659 -import { ToastContainer } from 'react-toastify'; 18660 -import { appWithTranslation, i18n } from 'next-i18next'; 18661 -import Footer from '../components/Footer'; 18662 -import dynamic from 'next/dynamic'; 18663 -import MatrixClient from "../helpers/matrix_client"; 18664 -import Storage from "../helpers/storage"; 18665 - 18666 -const HeaderNoSSR = dynamic( 18667 - () => import('../components/Header'), 18668 - { ssr: false } 18669 -); 18670 - 18671 -type State = { 18672 - client?: MatrixClient; 18673 - guest_client?: MatrixClient; 18674 -}; 18675 - 18676 -class MyApp extends PureComponent<AppProps, State> { 18677 - constructor(props: AppProps) { 18678 - super(props); 18679 - this.state = {}; 18680 - } 18681 - 18682 - async componentDidMount() { 18683 - // Actual user client 18684 - const client = await MatrixClient.init(await Storage.init("main")); 18685 - 18686 - // Client used if logged in for the Homepage to prevent excessive room joining 18687 - const guest_client = await MatrixClient.init(await Storage.init("guest")); 18688 - this.setState({ 18689 - client: client, 18690 - guest_client: guest_client 18691 - }); 18692 - } 18693 - 18694 - render() { 18695 - const Component = this.props.Component; 18696 - if (!this.state.client || !this.state.guest_client) { 18697 - return ( 18698 - <> 18699 - <Head> 18700 - <title key="title">Matrix Art</title> 18701 - <meta property="og:title" content="Matrix Art" key="og-title" /> 18702 - <meta property="og:type" content="website" key="og-type" /> 18703 - <meta key="viewport" name="viewport" content="initial-scale=1.0, width=device-width" /> 18704 - </Head> 18705 - <React.StrictMode> 18706 - <ClientContext.Provider 18707 - value={{ 18708 - client: this.state.client, 18709 - guest_client: this.state.guest_client, 18710 - is_generating_guest: false, 18711 - }} 18712 - > 18713 - <div className='min-h-full flex flex-col justify-between bg-[#f8f8f8] dark:bg-[#06070D]'> 18714 - <HeaderNoSSR></HeaderNoSSR> 18715 - <main className='mb-auto lg:pt-20 pt-52 z-0'> 18716 - <div className="m-0 w-full"> 18717 - <div className="loader">{i18n?.t("Loading")}...</div> 18718 - </div> 18719 - </main> 18720 - <Footer></Footer> 18721 - </div> 18722 - </ClientContext.Provider> 18723 - </React.StrictMode> 18724 - <ToastContainer 18725 - position="top-center" 18726 - autoClose={5000} 18727 - hideProgressBar={false} 18728 - newestOnTop={false} 18729 - closeOnClick 18730 - rtl={false} 18731 - pauseOnFocusLoss 18732 - draggable 18733 - pauseOnHover 18734 - theme="colored" 18735 - /> 18736 - </> 18737 - ); 18738 - } 18739 - return ( 18740 - <> 18741 - <Head> 18742 - <title key="title">Matrix Art</title> 18743 - <meta property="og:title" content="Matrix Art" key="og-title" /> 18744 - <meta property="og:type" content="website" key="og-type" /> 18745 - <meta key="viewport" name="viewport" content="initial-scale=1.0, width=device-width" /> 18746 - </Head> 18747 - <React.StrictMode> 18748 - <ClientContext.Provider 18749 - value={{ 18750 - client: this.state.client, 18751 - guest_client: this.state.guest_client, 18752 - is_generating_guest: false, 18753 - }} 18754 - > 18755 - <div className='min-h-full flex flex-col justify-between bg-[#f8f8f8] dark:bg-[#06070D]'> 18756 - <HeaderNoSSR></HeaderNoSSR> 18757 - <main className='mb-auto lg:pt-20 pt-52 z-0'> 18758 - <Component {...this.props.pageProps} /> 18759 - </main> 18760 - <Footer></Footer> 18761 - </div> 18762 - </ClientContext.Provider> 18763 - </React.StrictMode> 18764 - <ToastContainer 18765 - position="top-center" 18766 - autoClose={5000} 18767 - hideProgressBar={false} 18768 - newestOnTop={false} 18769 - closeOnClick 18770 - rtl={false} 18771 - pauseOnFocusLoss 18772 - draggable 18773 - pauseOnHover 18774 - theme="colored" 18775 - /> 18776 - </> 18777 - ); 18778 - } 18779 -} 18780 - 18781 -export default appWithTranslation(MyApp); 18782 diff --git a/pages/_document.tsx b/pages/_document.tsx 18783 deleted file mode 100644 18784 index 34ceeb4..0000000 18785 --- a/pages/_document.tsx 18786 +++ /dev/null 18787 @@ -1,25 +0,0 @@ 18788 -import Document, { Html, Head, Main, NextScript } from 'next/document'; 18789 - 18790 -class MyDocument extends Document { 18791 - render() { 18792 - return ( 18793 - <Html> 18794 - <Head> 18795 - <link 18796 - rel="preload" 18797 - href="/fonts/Inter-VariableFont_slnt,wght.woff2" 18798 - as="font" 18799 - type="font/woff2" 18800 - crossOrigin="anonymous" 18801 - /> 18802 - </Head> 18803 - <body> 18804 - <Main /> 18805 - <NextScript /> 18806 - </body> 18807 - </Html> 18808 - ); 18809 - } 18810 -} 18811 - 18812 -export default MyDocument; 18813 \ No newline at end of file 18814 diff --git a/pages/api/directory.ts b/pages/api/directory.ts 18815 deleted file mode 100644 18816 index 8aeb706..0000000 18817 --- a/pages/api/directory.ts 18818 +++ /dev/null 18819 @@ -1,108 +0,0 @@ 18820 -import Cors from 'cors'; 18821 -import initMiddleware from '../../helpers/init-middleware'; 18822 -import type { NextApiRequest, NextApiResponse } from 'next'; 18823 -import path from 'node:path'; 18824 -import ServerOpenID from '../../helpers/ss-well-known'; 18825 -import { Sequelize } from 'sequelize-typescript'; 18826 -import User from '../../helpers/db/Users'; 18827 - 18828 -// Initialize the cors middleware 18829 -const cors = initMiddleware( 18830 - Cors({ 18831 - // Only allow requests with GET, POST, DELETE and OPTIONS 18832 - methods: ['GET', 'POST', 'DELETE', 'OPTIONS'], 18833 - }) 18834 -); 18835 - 18836 -const DB_PATH = path.join(process.cwd(), "matrix-art-db/db.sqlite"); 18837 -const db = new Sequelize({ 18838 - dialect: 'sqlite', 18839 - storage: DB_PATH 18840 -}); 18841 -db.addModels([User]); 18842 - 18843 -export const get_data = async () => { 18844 - if (process.env.NEXT_PUBLIC_ENV === "test") { 18845 - return [ 18846 - new User({ 18847 - "mxid": "@test:art.midnightthoughts.space", 18848 - "public_user_room": "#@test:art.midnightthoughts.space" 18849 - }) 18850 - ]; 18851 - } 18852 - await User.sync(); 18853 - return await User.findAll(); 18854 -}; 18855 - 18856 -export default async function handler(req: NextApiRequest, res: NextApiResponse) { 18857 - 18858 - // Run cors 18859 - await cors(req, res); 18860 - 18861 - if (req.method !== "GET" && req.method !== "POST" && req.method !== "DELETE") { 18862 - res.status(405).json({}); 18863 - return; 18864 - } 18865 - 18866 - try { 18867 - await db.authenticate(); 18868 - console.log('Connection has been established successfully.'); 18869 - } catch (error) { 18870 - console.error('Unable to connect to the database:', error); 18871 - } 18872 - 18873 - if (req.method == "GET") { 18874 - try { 18875 - const db_data = await get_data(); 18876 - res.status(200).json({ data: db_data }); 18877 - } catch (error) { 18878 - res.status(502).json({}); 18879 - console.error(error); 18880 - } 18881 - } else if (req.method == "POST") { 18882 - const data: { 18883 - user_id: string; 18884 - user_room: string; 18885 - access_token: string; 18886 - } = JSON.parse(req.body); 18887 - if (process.env.NEXT_PUBLIC_ENV === "test" ? data.access_token === "openid" : await (new ServerOpenID().verify(data.user_id, data.access_token))) { 18888 - try { 18889 - await User.sync(); 18890 - await User.create({ 18891 - mxid: data.user_id, 18892 - public_user_room: data.user_room 18893 - }); 18894 - res.status(201).json({}); 18895 - } catch (error: any) { 18896 - if (error.status === 409 && error.name === "conflict") { 18897 - res.status(200).json({ "error": "User already existed", "error_code": "001" }); 18898 - } 18899 - res.status(502).json({}); 18900 - console.error(error); 18901 - } 18902 - } else { 18903 - res.status(401).json({}); 18904 - } 18905 - } else if (req.method == "DELETE") { 18906 - const data: { 18907 - user_id: string; 18908 - access_token: string; 18909 - } = JSON.parse(req.body); 18910 - if (process.env.NEXT_PUBLIC_ENV === "test" ? data.access_token === "openid" : await (new ServerOpenID().verify(data.user_id, data.access_token))) { 18911 - try { 18912 - await User.sync(); 18913 - await User.destroy({ 18914 - where: { 18915 - mxid: data.user_id 18916 - } 18917 - }); 18918 - res.status(200).json({}); 18919 - } catch (error) { 18920 - res.status(502).json({}); 18921 - console.error(error); 18922 - } 18923 - } else { 18924 - res.status(401).json({}); 18925 - } 18926 - } 18927 -} 18928 \ No newline at end of file 18929 diff --git a/pages/api/posts/feed.rss.ts b/pages/api/posts/feed.rss.ts 18930 deleted file mode 100644 18931 index ac5960e..0000000 18932 --- a/pages/api/posts/feed.rss.ts 18933 +++ /dev/null 18934 @@ -1,205 +0,0 @@ 18935 -import initMiddleware from "../../../helpers/init-middleware"; 18936 -import Cors from 'cors'; 18937 -import { NextApiRequest, NextApiResponse } from "next"; 18938 -import { Feed } from "feed"; 18939 -import { get_data } from "../directory"; 18940 -import MatrixClient, { constMatrixArtServer } from "../../../helpers/matrix_client"; 18941 -import { MatrixImageEvents } from "../../../helpers/event_types"; 18942 -import { isImageGalleryEvent } from "../../../components/FrontPageImage"; 18943 -import Storage from "../../../helpers/storage"; 18944 -import { getLicenseName, getLicenseUrl } from "../../../helpers/utils"; 18945 - 18946 -// Initialize the cors middleware 18947 -const cors = initMiddleware( 18948 - Cors({ 18949 - // Only allow requests with GET and OPTIONS 18950 - methods: ['GET', 'OPTIONS'], 18951 - }) 18952 -); 18953 - 18954 -export default async function handler(req: NextApiRequest, res: NextApiResponse) { 18955 - // Run cors 18956 - await cors(req, res); 18957 - 18958 - if (req.method !== "GET") { 18959 - res.status(504); 18960 - } 18961 - 18962 - res.setHeader("content-type", "application/rss+xml"); 18963 - const feed = new Feed({ 18964 - title: "Matrix-Art", 18965 - description: "Matrix-Art is an image gallery for Matrix.", 18966 - id: "https://" + (req.headers.host ?? "art.midnightthoughts.space"), 18967 - link: "https://" + (req.headers.host ?? "art.midnightthoughts.space"), 18968 - language: "en", 18969 - copyright: "", 18970 - feed: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/posts.rss", 18971 - namespaces: { 18972 - "xmlns:creativeCommons": "http://backend.userland.com/creativeCommonsRssModule", 18973 - "xmlns:media": "https://search.yahoo.com/mrss/" 18974 - } 18975 - }); 18976 - 18977 - try { 18978 - const directory = await get_data(); 18979 - const client = await MatrixClient.init(await Storage.init("main")); 18980 - 18981 - if (!client?.accessToken) { 18982 - try { 18983 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 18984 - await client?.registerAsGuest(serverUrl); 18985 - } catch (error) { 18986 - console.error("Failed to register as guest:", error); 18987 - return { 18988 - props: { 18989 - image_events: [] 18990 - } 18991 - }; 18992 - } 18993 - } 18994 - let image_events: MatrixImageEvents[] = []; 18995 - // TODO fix this somehow. It is super inefficient. 18996 - for (let user of directory) { 18997 - // We dont need many events 18998 - const roomId = await client?.followUser(user.public_user_room); 18999 - const events = await client?.getTimeline(roomId, 100); 19000 - // Filter events by type 19001 - let images = events.filter((event) => event.type == "m.image_gallery" || event.type == "m.image") as MatrixImageEvents[]; 19002 - images = await Promise.all(images.map(async (image) => { 19003 - try { 19004 - const profile = await client.getProfile(image.sender); 19005 - image.content.displayname = profile.displayname; 19006 - } catch { 19007 - image.content.displayname = image.sender; 19008 - } 19009 - return image; 19010 - })); 19011 - image_events = [...image_events, ...images]; 19012 - console.log("Adding", image_events.length, "items"); 19013 - } 19014 - 19015 - for (let imageEvent of image_events) { 19016 - feed.addContributor({ 19017 - name: imageEvent.content.displayname 19018 - }); 19019 - if (isImageGalleryEvent(imageEvent)) { 19020 - for (let image of imageEvent.content["m.image_gallery"]) { 19021 - feed.addItem({ 19022 - title: image["m.text"], 19023 - id: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/post/" + imageEvent.event_id + "_" + image["m.file"].url, 19024 - link: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/post/" + imageEvent.event_id, 19025 - description: `<img src="${client?.downloadLink(image["m.file"].url)!}"/>`, 19026 - author: [ 19027 - { 19028 - name: imageEvent.content.displayname, 19029 - link: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/profile/" + imageEvent.sender 19030 - } 19031 - ], 19032 - // TODO extract real time 19033 - date: new Date(imageEvent.origin_server_ts), 19034 - image: { 19035 - url: client?.downloadLink(image["m.file"].url)!, 19036 - type: image["m.file"].mimetype, 19037 - length: image["m.file"].size 19038 - }, 19039 - extra: { 19040 - 'media:content': { 19041 - _attributes: { 19042 - url: client?.downloadLink(image["m.file"].url)!, 19043 - type: image["m.file"].mimetype, 19044 - medium: 'image', 19045 - height: image["m.image"].height, 19046 - width: image["m.image"].width, 19047 - }, 19048 - 'media:credit': { 19049 - _attributes: { 19050 - role: "author", 19051 - scheme: "urn:ebu" 19052 - }, 19053 - _text: imageEvent.content.displayname, 19054 - } 19055 - }, 19056 - 'media:keywords': image["matrixart.tags"].join(", "), 19057 - 'media:rating': "nonadult", 19058 - 'media:title': { 19059 - _attributes: { 19060 - type: "plain" 19061 - }, 19062 - _text: image["m.text"], 19063 - }, 19064 - 'creativeCommons:license': getLicenseUrl(image['matrixart.license']), 19065 - 'media:license': { 19066 - _attributes: { 19067 - href: getLicenseUrl(image['matrixart.license']), 19068 - type: "text/html" 19069 - }, 19070 - _text: getLicenseName(image['matrixart.license']) 19071 - } 19072 - } 19073 - }); 19074 - } 19075 - } else { 19076 - feed.addItem({ 19077 - title: imageEvent.content["m.text"], 19078 - id: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/post/" + imageEvent.event_id, 19079 - link: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/post/" + imageEvent.event_id, 19080 - description: `<img src="${client?.downloadLink(imageEvent.content["m.file"].url)!}"/>`, 19081 - author: [ 19082 - { 19083 - name: imageEvent.content.displayname, 19084 - link: "https://" + (req.headers.host ?? "art.midnightthoughts.space") + "/profile/" + imageEvent.sender 19085 - } 19086 - ], 19087 - date: new Date(imageEvent.origin_server_ts), 19088 - image: { 19089 - url: client?.downloadLink(imageEvent.content["m.file"].url)!, 19090 - type: imageEvent.content["m.file"].mimetype, 19091 - length: imageEvent.content["m.file"].size 19092 - }, 19093 - extra: { 19094 - 'media:content': { 19095 - _attributes: { 19096 - url: client?.downloadLink(imageEvent.content["m.file"].url)!, 19097 - type: imageEvent.content["m.file"].mimetype, 19098 - medium: 'image', 19099 - height: imageEvent.content["m.image"].height, 19100 - width: imageEvent.content["m.image"].width, 19101 - }, 19102 - 'media:credit': { 19103 - _attributes: { 19104 - role: "author", 19105 - scheme: "urn:ebu" 19106 - }, 19107 - _text: imageEvent.content.displayname, 19108 - } 19109 - }, 19110 - 'media:keywords': imageEvent.content["matrixart.tags"].join(", "), 19111 - 'media:rating': "nonadult", 19112 - 'media:title': { 19113 - _attributes: { 19114 - type: "plain" 19115 - }, 19116 - _text: imageEvent.content["m.text"], 19117 - }, 19118 - 'creativeCommons:license': getLicenseUrl(imageEvent.content['matrixart.license']), 19119 - 'media:license': { 19120 - _attributes: { 19121 - href: getLicenseUrl(imageEvent.content['matrixart.license']), 19122 - type: "text/html" 19123 - }, 19124 - _text: getLicenseName(imageEvent.content['matrixart.license']), 19125 - } 19126 - } 19127 - }); 19128 - } 19129 - } 19130 - } catch { 19131 - /*noop*/ 19132 - } 19133 - 19134 - feed.addCategory("Photography"); 19135 - feed.addCategory("Media"); 19136 - feed.addCategory("Images"); 19137 - feed.addCategory("SocialMedia"); 19138 - res.status(200).send(feed.rss2()); 19139 -} 19140 \ No newline at end of file 19141 diff --git a/pages/api/submitSearch.ts b/pages/api/submitSearch.ts 19142 deleted file mode 100644 19143 index f55b77a..0000000 19144 --- a/pages/api/submitSearch.ts 19145 +++ /dev/null 19146 @@ -1,59 +0,0 @@ 19147 -import initMiddleware from "../../helpers/init-middleware"; 19148 -import Cors from 'cors'; 19149 -import { NextApiRequest, NextApiResponse } from "next"; 19150 -import MeiliSearch from "meilisearch"; 19151 -import ServerOpenID from "../../helpers/ss-well-known"; 19152 - 19153 -// Initialize the cors middleware 19154 -const cors = initMiddleware( 19155 - Cors({ 19156 - // Only allow requests with GET, POST, DELETE and OPTIONS 19157 - methods: ['POST', 'OPTIONS'], 19158 - }) 19159 -); 19160 - 19161 -// TODO solve index for gallery 19162 -export type SearchMedia = { 19163 - event_id: string; 19164 - title: string; 19165 - description: string; 19166 - tags: string; 19167 - license: string; 19168 - sender: string; 19169 - nsfw: string; 19170 - mxc_url?: string; 19171 -}; 19172 - 19173 -export default async function handler(req: NextApiRequest, res: NextApiResponse) { 19174 - const client = new MeiliSearch({ 19175 - host: process.env.SEARCH_URL ?? 'http://127.0.0.1:7700', apiKey: process.env.MEILI_MASTER_KEY ?? 'xxx' 19176 - }); 19177 - 19178 - // Run cors 19179 - await cors(req, res); 19180 - 19181 - if (req.method !== "POST") { 19182 - res.status(405).json({}); 19183 - return; 19184 - } 19185 - 19186 - 19187 - const data: { 19188 - docs: SearchMedia[]; 19189 - access_token?: string; 19190 - user_id?: string; 19191 - } = JSON.parse(req.body); 19192 - 19193 - if (await (new ServerOpenID().verify(data.user_id!, data.access_token!))) { 19194 - data.docs.map(doc => { 19195 - doc.event_id = doc.event_id.replace("$", ""); 19196 - return doc; 19197 - }); 19198 - await client.index('posts').addDocuments(data.docs); 19199 - res.status(200).json({}); 19200 - return; 19201 - } { 19202 - res.status(401).json({}); 19203 - return; 19204 - } 19205 -} 19206 \ No newline at end of file 19207 diff --git a/pages/index.tsx b/pages/index.tsx 19208 deleted file mode 100644 19209 index c8ae3ce..0000000 19210 --- a/pages/index.tsx 19211 +++ /dev/null 19212 @@ -1,188 +0,0 @@ 19213 -import React, { PureComponent } from 'react'; 19214 -import { MatrixEventBase, MatrixImageEvents } from '../helpers/event_types'; 19215 -import Head from 'next/head'; 19216 -import { ClientContext } from '../components/ClientContext'; 19217 -import FrontPageImage, { isImageGalleryEvent } from '../components/FrontPageImage'; 19218 -import { GetServerSideProps, InferGetServerSidePropsType, } from 'next'; 19219 -import { get_data } from './api/directory'; 19220 -import MatrixClient, { constMatrixArtServer } from '../helpers/matrix_client'; 19221 -import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; 19222 -import { i18n, WithTranslation } from 'next-i18next'; 19223 -import Storage from "../helpers/storage"; 19224 - 19225 -type Props = InferGetServerSidePropsType<typeof getServerSideProps> & WithTranslation & { 19226 -}; 19227 - 19228 -type State = { 19229 - // TODO make sure we parse both extev variants properly 19230 - image_events: MatrixImageEvents[] | []; 19231 -}; 19232 - 19233 - 19234 -class Home extends PureComponent<Props, State>{ 19235 - declare context: React.ContextType<typeof ClientContext>; 19236 - 19237 - constructor(props: Props) { 19238 - super(props); 19239 - 19240 - this.state = { 19241 - image_events: props.image_events, 19242 - } as State; 19243 - } 19244 - render() { 19245 - const { image_events } = this.state; 19246 - 19247 - const metadata: { "@context": string; "@type": string; contentUrl: string; license: string; thumbnail?: any; }[] = image_events.flatMap(event => { 19248 - if (isImageGalleryEvent(event)) { 19249 - return event.content['m.image_gallery'].map(image => { 19250 - const metadata = { 19251 - "@context": "https://schema.org/", 19252 - "@type": "ImageObject", 19253 - "contentUrl": this.context.client?.downloadLink(image['m.file'].url)!, 19254 - "encodingFormat": image['m.file'].mimetype, 19255 - // TODO get this from the event itself 19256 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19257 - "author": event.content.displayname, 19258 - "name": image['m.text'], 19259 - "width": image['m.image'].width, 19260 - "height": image['m.image'].height 19261 - }; 19262 - if (image['m.thumbnail']) { 19263 - if (image['m.thumbnail'].length > 0) { 19264 - //@ts-ignore TS is not able to figure out types here 19265 - metadata["thumbnail"] = { 19266 - "@context": "https://schema.org/", 19267 - "@type": "ImageObject", 19268 - "contentUrl": this.context.client?.downloadLink(image['m.thumbnail'][0].url)!, 19269 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19270 - "author": event.content.displayname, 19271 - "name": image['m.text'] 19272 - }; 19273 - } 19274 - } 19275 - return metadata; 19276 - }); 19277 - } else { 19278 - const metadata = { 19279 - "@context": "https://schema.org/", 19280 - "@type": "ImageObject", 19281 - "contentUrl": this.context.client?.downloadLink(event.content['m.file'].url)!, 19282 - "encodingFormat": event.content['m.file'].mimetype, 19283 - // TODO get this from the event itself 19284 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19285 - "author": event.content.displayname, 19286 - "name": event.content['m.text'], 19287 - "width": event.content['m.image'].width, 19288 - "height": event.content['m.image'].height 19289 - }; 19290 - 19291 - if (event.content['m.thumbnail']) { 19292 - if (event.content['m.thumbnail'].length > 0) { 19293 - //@ts-ignore TS is not able to figure out types here 19294 - metadata["thumbnail"] = { 19295 - "@context": "https://schema.org/", 19296 - "@type": "ImageObject", 19297 - "contentUrl": this.context.client?.downloadLink(event.content['m.thumbnail'][0].url)!, 19298 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19299 - "author": event.content.displayname, 19300 - "name": event.content['m.text'] 19301 - }; 19302 - } 19303 - } 19304 - 19305 - return metadata; 19306 - } 19307 - }); 19308 - return ( 19309 - <> 19310 - <Head> 19311 - <title key="title">Matrix Art | {i18n?.t("Home")}</title> 19312 - <meta property="og:title" content="Matrix Art | Home" key="og-title" /> 19313 - <meta property="og:type" content="website" key="og-type" /> 19314 - <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(metadata) }} /> 19315 - <meta name="description" content="Matrix-Art is an image gallery for Matrix."></meta> 19316 - </Head> 19317 - <div className='z-[100] sticky lg:top-20 top-[12.5rem] bg-[#fefefe]/[.95] dark:bg-[#12161D]'> 19318 - <div className='h-16 px-10 w-full relative grid grid-cols-[1fr_auto_1fr] items-center' id='section-grid'> 19319 - <h1 className='text-xl text-gray-900 dark:text-gray-200 font-bold'>{i18n?.t("Home")}</h1> 19320 - </div> 19321 - </div> 19322 - <div className='m-10'> 19323 - <ul className='flex flex-wrap gap-1'> 19324 - {image_events.map(event => <FrontPageImage show_nsfw={false} event={event} key={(event as MatrixEventBase).event_id} />)} 19325 - <li className='grow-[10]'></li> 19326 - </ul> 19327 - </div> 19328 - </> 19329 - ); 19330 - } 19331 - 19332 -} 19333 -Home.contextType = ClientContext; 19334 - 19335 -export const getServerSideProps: GetServerSideProps = async ({ res, locale }) => { 19336 - res.setHeader( 19337 - 'Cache-Control', 19338 - 'public, s-maxage=10, stale-while-revalidate=59' 19339 - ); 19340 - 19341 - const client = await MatrixClient.init(await Storage.init("main")); 19342 - try { 19343 - const data = await get_data(); 19344 - if (!client?.accessToken) { 19345 - try { 19346 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 19347 - console.log(1); 19348 - await client?.registerAsGuest(serverUrl); 19349 - } catch (error) { 19350 - console.error("Failed to register as guest:", error); 19351 - return { 19352 - props: { 19353 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 19354 - image_events: [] 19355 - } 19356 - }; 19357 - } 19358 - } 19359 - 19360 - let image_events: MatrixImageEvents[] = []; 19361 - // TODO fix this somehow. It is super inefficient. 19362 - for (let user of data) { 19363 - // We dont need many events 19364 - let roomId; 19365 - try { 19366 - roomId = await client?.followUser(user.public_user_room); 19367 - } catch { 19368 - console.error("Unbable to join room"); 19369 - continue; 19370 - } 19371 - const events = await client?.getTimeline(roomId, 100); 19372 - // Filter events by type 19373 - let images = events.filter((event) => (event.type == "m.image_gallery" || event.type == "m.image") && !event.unsigned?.redacted_because) as MatrixImageEvents[]; 19374 - images = await Promise.all(images.map(async (image) => { 19375 - try { 19376 - const profile = await client.getProfile(image.sender); 19377 - image.content.displayname = profile.displayname; 19378 - } catch { 19379 - image.content.displayname = image.sender; 19380 - } 19381 - return image; 19382 - })); 19383 - image_events = [...image_events, ...images]; 19384 - console.log("Adding", image_events.length, "items"); 19385 - } 19386 - 19387 - 19388 - return { 19389 - props: { 19390 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 19391 - image_events: image_events 19392 - } 19393 - }; 19394 - } catch (error) { 19395 - console.log(error); 19396 - return { notFound: true, props: {} }; 19397 - } 19398 -}; 19399 - 19400 -export default Home; 19401 \ No newline at end of file 19402 diff --git a/pages/login.tsx b/pages/login.tsx 19403 deleted file mode 100644 19404 index 0e1f3db..0000000 19405 --- a/pages/login.tsx 19406 +++ /dev/null 19407 @@ -1,213 +0,0 @@ 19408 -import { GetServerSideProps } from "next"; 19409 -import { i18n } from "next-i18next"; 19410 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 19411 -import Head from "next/head"; 19412 -import Link from "next/link"; 19413 -import { NextRouter, withRouter } from "next/router"; 19414 -import { PureComponent, ReactNode } from "react"; 19415 -import { toast } from "react-toastify"; 19416 -import { ClientContext } from "../components/ClientContext"; 19417 -import { constMatrixArtServer } from "../helpers/matrix_client"; 19418 - 19419 -type Props = { 19420 - router: NextRouter; 19421 -}; 19422 -type State = { 19423 - showServerField: boolean; 19424 - generateProfile: boolean; 19425 - serverUrl: string; 19426 - mxid?: string; 19427 - password?: string; 19428 - loading: boolean; 19429 - error?: string; 19430 -}; 19431 - 19432 -class Login extends PureComponent<Props, State> { 19433 - declare context: React.ContextType<typeof ClientContext>; 19434 - 19435 - constructor(props: Props | Readonly<Props>) { 19436 - super(props); 19437 - this.state = { 19438 - showServerField: false, 19439 - generateProfile: false, 19440 - mxid: "", 19441 - password: "", 19442 - serverUrl: constMatrixArtServer, 19443 - loading: false, 19444 - error: "" 19445 - } as State; 19446 - 19447 - this.handleInputChange = this.handleInputChange.bind(this); 19448 - this.handleSubmit = this.handleSubmit.bind(this); 19449 - } 19450 - 19451 - componentDidUpdate(prevProps: Props, prevState: State) { 19452 - if (this.state.error && this.state.error !== prevState.error) { 19453 - toast.dismiss(); 19454 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 19455 - autoClose: false 19456 - }); 19457 - } 19458 - } 19459 - 19460 - handleInputChange(event: { target: any; }) { 19461 - const target = event.target; 19462 - const value = target.type === 'checkbox' ? target.checked : target.value; 19463 - const name = target.name; 19464 - this.setState({ 19465 - [name]: value 19466 - } as State); 19467 - } 19468 - 19469 - async handleSubmit(event: { preventDefault: () => void; }) { 19470 - event.preventDefault(); 19471 - let serverUrl = this.state.serverUrl; 19472 - // Reset url if the field is hidden. 19473 - if (!this.state.showServerField) { 19474 - serverUrl = constMatrixArtServer + "/_matrix/client"; 19475 - } 19476 - if (serverUrl === "" || serverUrl === constMatrixArtServer) { 19477 - serverUrl = constMatrixArtServer + "/_matrix/client"; 19478 - } else if (this.state.showServerField && !serverUrl.endsWith("/_matrix/client") && !serverUrl.endsWith("/_matrix/client/")) { 19479 - serverUrl = serverUrl + "/_matrix/client"; 19480 - } 19481 - 19482 - if (this.state.mxid && this.state.password) { 19483 - this.setState({ 19484 - loading: true 19485 - }); 19486 - await this.context.client?.login(serverUrl, this.state.mxid, this.state.password, true); 19487 - if (this.state.generateProfile) { 19488 - try { 19489 - await this.context.client?.followUser(`#${this.context.client?.userId}`); 19490 - } catch (error: any) { 19491 - this.setState( 19492 - { error: error.message } 19493 - ); 19494 - } 19495 - try { 19496 - const token = await this.context.client?.getOpenidToken(); 19497 - const resp = await fetch("/api/directory", { 19498 - method: "POST", body: JSON.stringify({ 19499 - access_token: token, 19500 - user_id: this.context.client?.userId, 19501 - user_room: `#${this.context.client?.userId}` 19502 - }) 19503 - }); 19504 - const body = await resp.json(); 19505 - if (body.error_code) { 19506 - if (body.error_code !== "001") { 19507 - console.log(body.error); 19508 - } 19509 - } 19510 - } catch (error: any) { 19511 - this.setState( 19512 - { error: `Failed to reach your server to verify your user: ${error.message}` } 19513 - ); 19514 - return; 19515 - } 19516 - 19517 - } 19518 - await this.props.router.replace("/"); 19519 - } 19520 - } 19521 - 19522 - render(): ReactNode { 19523 - const { loading, showServerField, serverUrl, mxid, password, generateProfile } = this.state; 19524 - if (loading) { 19525 - return ( 19526 - <> 19527 - <Head> 19528 - <title key="title">Matrix Art | {i18n?.t("Login")}</title> 19529 - <meta property="og:title" content="Matrix Art | Login" key="og-title" /> 19530 - <meta property="og:type" content="website" key="og-type" /> 19531 - </Head> 19532 - <div className='z-[100] sticky lg:top-20 top-56 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]'> 19533 - <div className='h-16 px-10 w-full relative grid grid-cols-[1fr_auto_1fr] items-center' id='section-grid'> 19534 - <h1 className='text-xl text-gray-900 dark:text-gray-200 font-bold'>{i18n?.t("Log In")}</h1> 19535 - </div> 19536 - </div> 19537 - <div className="mx-auto w-full"> 19538 - <div className="loader">{i18n?.t("Loading")}...</div> 19539 - </div> 19540 - </> 19541 - ); 19542 - } 19543 - //TODO make better 19544 - return ( 19545 - <> 19546 - <Head> 19547 - <title key="title">Matrix Art | {i18n?.t("Login")}</title> 19548 - <meta property="og:title" content="Matrix Art | Login" key="og-title" /> 19549 - <meta property="og:type" content="website" key="og-type" /> 19550 - </Head> 19551 - <div className='z-[100] sticky lg:top-20 top-56 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]'> 19552 - <div className='h-16 px-10 w-full relative grid grid-cols-[1fr_auto_1fr] items-center' id='section-grid'> 19553 - <h1 className='text-xl text-gray-900 dark:text-gray-200 font-bold'>{i18n?.t("Log In")}</h1> 19554 - </div> 19555 - </div> 19556 - <div className="flex items-center justify-center m-10"> 19557 - <form onSubmit={this.handleSubmit} className="w-96 grid grid-cols-1 gap-6"> 19558 - <div className="block"> 19559 - <div className="mt-2 flex justify-between items-center"> 19560 - <label className="inline-flex items-center"> 19561 - <input className="cursor-pointer h-4 w-4" type="checkbox" name="showServerField" checked={showServerField} onChange={this.handleInputChange} /> 19562 - <span className="ml-2 text-gray-700 dark:text-gray-400">{i18n?.t("Use custom Server")}</span> 19563 - </label> 19564 - <Link href="/resetPassword"><a className="text-gray-900 dark:text-gray-200 hover:text-teal-400">{i18n?.t("Forgot Password")}</a></Link> 19565 - </div> 19566 - </div> 19567 - 19568 - <label style={{ 19569 - transition: 'opacity 0.4s ease', 19570 - opacity: showServerField ? 1 : 0, 19571 - display: showServerField ? 'block' : 'none' 19572 - }} id="homeserverField"> 19573 - <span className="text-gray-900 dark:text-gray-200 visually-hidden">{i18n?.t("Homeserver:")}</span> 19574 - <div className="mt-1 w-full flex flex-row box-border items-center cursor-text"> 19575 - <input placeholder={i18n?.t("Homeserver")} className="rounded py-1.5 px-2 min-w-[1.25rem] flex-[1] border-none placeholder:text-gray-900 text-gray-9000" type="text" name="serverUrl" value={serverUrl} onChange={this.handleInputChange} /> 19576 - </div> 19577 - </label> 19578 - 19579 - <label className="block"> 19580 - <span className="text-gray-900 dark:text-gray-200 visually-hidden">{i18n?.t("Username:")}</span> 19581 - <div className="mt-1 w-full flex flex-row box-border items-center cursor-text duration-300"> 19582 - <input placeholder={i18n?.t("Username")} autoComplete="username" className="rounded py-1.5 px-2 min-w-[1.25rem] flex-[1] border-none placeholder:text-gray-900 text-gray-900" type="text" name="mxid" value={mxid} onChange={this.handleInputChange} /> 19583 - </div> 19584 - </label> 19585 - <label className="block"> 19586 - <span className="text-gray-900 dark:text-gray-200 visually-hidden">{i18n?.t("Password:")}</span> 19587 - <div className="mt-1 w-full flex flex-row box-border items-center cursor-text duration-300"> 19588 - <input placeholder={i18n?.t("Password")} autoComplete="current-password" className="rounded py-1.5 px-2 min-w-[1.25rem] flex-[1] border-none placeholder:text-gray-900 text-gray-900" type="password" name="password" value={password} onChange={this.handleInputChange} /> 19589 - </div> 19590 - </label> 19591 - 19592 - <div className="block"> 19593 - <div className="mt-2 flex justify-between items-center"> 19594 - <label className="inline-flex items-center"> 19595 - <input className="cursor-pointer h-4 w-4" type="checkbox" name="generateProfile" checked={generateProfile} onChange={this.handleInputChange} /> 19596 - <span className="ml-2 text-gray-700 dark:text-gray-400">{i18n?.t("Create a full profile? (Cant be done later currently. This is WIP)")}</span> 19597 - </label> 19598 - </div> 19599 - </div> 19600 - 19601 - <input className="bg-teal-400 hover:bg-teal-500 cursor-pointer h-10 rounded dark:text-gray-900 text-gray-200" type="submit" value="Log In" /> 19602 - </form> 19603 - </div> 19604 - </> 19605 - ); 19606 - } 19607 -} 19608 - 19609 -Login.contextType = ClientContext; 19610 - 19611 - 19612 -export const getServerSideProps: GetServerSideProps = async ({ locale }) => { 19613 - return { 19614 - props: { 19615 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 19616 - } 19617 - }; 19618 -}; 19619 - 19620 -export default withRouter(Login); 19621 \ No newline at end of file 19622 diff --git a/pages/logout.tsx b/pages/logout.tsx 19623 deleted file mode 100644 19624 index a6781f6..0000000 19625 --- a/pages/logout.tsx 19626 +++ /dev/null 19627 @@ -1,44 +0,0 @@ 19628 -import { GetServerSideProps } from "next"; 19629 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 19630 -import { NextRouter, withRouter } from "next/router"; 19631 -import { PureComponent } from "react"; 19632 -import { ClientContext } from "../components/ClientContext"; 19633 - 19634 -type Props = { 19635 - router: NextRouter; 19636 -}; 19637 -type State = { 19638 - 19639 -}; 19640 - 19641 -class Logout extends PureComponent<Props, State> { 19642 - declare context: React.ContextType<typeof ClientContext>; 19643 - 19644 - constructor(props: Props | Readonly<Props>) { 19645 - super(props); 19646 - } 19647 - 19648 - async componentDidMount() { 19649 - if (typeof window !== "undefined") { 19650 - if (!this.context.client?.isGuest) { 19651 - await this.context.client?.logout(false); 19652 - } 19653 - } 19654 - await this.props.router.replace("/"); 19655 - } 19656 - render() { 19657 - return <></>; 19658 - } 19659 -} 19660 - 19661 -Logout.contextType = ClientContext; 19662 - 19663 -export const getServerSideProps: GetServerSideProps = async ({ locale }) => { 19664 - return { 19665 - props: { 19666 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 19667 - } 19668 - }; 19669 -}; 19670 - 19671 -export default withRouter(Logout); 19672 \ No newline at end of file 19673 diff --git a/pages/post/[id].tsx b/pages/post/[id].tsx 19674 deleted file mode 100644 19675 index 91a0b34..0000000 19676 --- a/pages/post/[id].tsx 19677 +++ /dev/null 19678 @@ -1,497 +0,0 @@ 19679 -import LightGallery from 'lightgallery/react'; 19680 -import 'lightgallery/css/lightgallery.css'; 19681 -import 'lightgallery/css/lg-zoom.css'; 19682 -import 'lightgallery/css/lg-thumbnail.css'; 19683 -import lgZoom from 'lightgallery/plugins/zoom'; 19684 -import lgThumbnail from 'lightgallery/plugins/thumbnail'; 19685 -import { GetServerSideProps, InferGetServerSidePropsType } from "next"; 19686 -import Head from "next/head"; 19687 -import { NextRouter, withRouter } from "next/router"; 19688 -import { PureComponent, ReactNode } from "react"; 19689 -import { ClientContext } from "../../components/ClientContext"; 19690 -import { ImageEvent, ImageGalleryEvent, MatrixEventBase, MatrixImageEvents } from "../../helpers/event_types"; 19691 -import MatrixClient, { constMatrixArtServer } from "../../helpers/matrix_client"; 19692 -import { get_data } from "../api/directory"; 19693 -import { isImageEvent, isImageGalleryEvent } from '../../components/FrontPageImage'; 19694 -import Link from 'next/link'; 19695 -import { Blurhash } from 'react-blurhash'; 19696 -import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; 19697 -import { i18n } from 'next-i18next'; 19698 -import { toast } from 'react-toastify'; 19699 -import Storage from "../../helpers/storage"; 19700 -import { getLicenseName, getLicenseUrl } from '../../helpers/utils'; 19701 - 19702 -type Props = InferGetServerSidePropsType<typeof getServerSideProps> & { 19703 - router: NextRouter; 19704 -}; 19705 - 19706 -type State = { 19707 - hasFullyLoaded: boolean; 19708 - isLoadingImages: boolean; 19709 - image_event?: MatrixImageEvents; 19710 - error?: string; 19711 - displayname: string; 19712 - avatar_url?: string; 19713 -}; 19714 - 19715 -class Post extends PureComponent<Props, State> { 19716 - declare context: React.ContextType<typeof ClientContext>; 19717 - 19718 - constructor(props: Props) { 19719 - super(props); 19720 - 19721 - this.state = { 19722 - hasFullyLoaded: props.hasFullyLoaded, 19723 - image_event: props.image_event, 19724 - displayname: props.displayname, 19725 - isLoadingImages: false, 19726 - avatar_url: props.avatar_url 19727 - }; 19728 - } 19729 - 19730 - componentDidUpdate(prevProps: Props, prevState: State) { 19731 - if (this.state.error && this.state.error !== prevState.error) { 19732 - toast.dismiss(); 19733 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 19734 - autoClose: false 19735 - }); 19736 - } 19737 - } 19738 - 19739 - async componentDidMount() { 19740 - if (!this.context.client?.accessToken) { 19741 - try { 19742 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 19743 - await this.context.client?.registerAsGuest(serverUrl); 19744 - } catch (error) { 19745 - console.error("Failed to register as guest:", error); 19746 - } 19747 - } else { 19748 - console.log("Already logged in"); 19749 - } 19750 - if (!this.context.guest_client?.accessToken) { 19751 - try { 19752 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 19753 - await this.context.guest_client?.registerAsGuest(serverUrl); 19754 - } catch (error) { 19755 - console.error("Failed to register as guest:", error); 19756 - } 19757 - } else { 19758 - console.log("Guest Already logged in"); 19759 - } 19760 - if (this.props.directory_data && this.props.event_id && this.props.event_id.startsWith("$")) { 19761 - await this.loadEvent(this.props.event_id); 19762 - } 19763 - } 19764 - 19765 - async loadEvent(event_id: string) { 19766 - const { hasFullyLoaded, isLoadingImages } = this.state; 19767 - if (isLoadingImages || hasFullyLoaded || !this.props.directory_data) { 19768 - return; 19769 - } 19770 - console.log("hi"); 19771 - const client = this.context.client?.isGuest ? this.context.client : this.context.guest_client; 19772 - this.setState({ 19773 - isLoadingImages: true, 19774 - }); 19775 - try { 19776 - // TODO fix this. It is super inefficient. 19777 - for (let user of this.props.directory_data) { 19778 - // We dont need many events 19779 - let roomId; 19780 - try { 19781 - roomId = await client?.followUser(user.public_user_room); 19782 - } catch { 19783 - this.setState({ 19784 - isLoadingImages: false, 19785 - hasFullyLoaded: true 19786 - }); 19787 - console.error("Unbable to join room"); 19788 - continue; 19789 - } 19790 - if (!roomId) { 19791 - this.setState({ 19792 - isLoadingImages: false, 19793 - hasFullyLoaded: true 19794 - }); 19795 - return; 19796 - } 19797 - const events = await client?.getTimeline(roomId, 100); // Filter events by type 19798 - const image_event = events?.find((event) => (event.type === "m.image_gallery" || event.type === "m.image") && event.event_id === event_id); 19799 - if (!image_event) { 19800 - continue; 19801 - } 19802 - try { 19803 - const profile = await client?.getProfile(image_event.sender); 19804 - this.setState({ 19805 - image_event: image_event as MatrixImageEvents, 19806 - displayname: profile?.displayname ?? image_event.sender, 19807 - }); 19808 - 19809 - } catch (error) { 19810 - console.debug(`Failed to fetch profile for user ${image_event.sender}:`, error); 19811 - this.setState({ 19812 - image_event: image_event as MatrixImageEvents, 19813 - displayname: image_event.sender, 19814 - }); 19815 - } 19816 - } 19817 - } catch (error) { 19818 - this.setState({ 19819 - error: JSON.stringify(error), 19820 - }); 19821 - } finally { 19822 - this.setState({ 19823 - isLoadingImages: false, 19824 - hasFullyLoaded: true 19825 - }); 19826 - } 19827 - } 19828 - 19829 - render() { 19830 - const { hasFullyLoaded, image_event, displayname, avatar_url } = this.state; 19831 - 19832 - if (!hasFullyLoaded) { 19833 - return ( 19834 - <> 19835 - <Head> 19836 - <title key="title">Matrix Art | {i18n?.t("Post not Found")}</title> 19837 - <meta property="og:title" content="Matrix Art | Post not Found" key="og-title" /> 19838 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 19839 - <meta name="twitter:title" content="Matrix Art | Post not Found" key="og-twitter-title" /> 19840 - <meta property="og:type" content="website" key="og-type" /> 19841 - </Head> 19842 - <div className="m-0 w-full"> 19843 - <div className="loader">{i18n?.t("Loading")}...</div> 19844 - </div> 19845 - </> 19846 - ); 19847 - } 19848 - 19849 - if (!this.props.event_id || !this.props.event_id?.startsWith("$")) { 19850 - return ( 19851 - <> 19852 - <Head> 19853 - <title key="title">Matrix Art | {i18n?.t("Post not Found")}</title> 19854 - <meta property="og:title" content="Matrix Art | Post not Found" key="og-title" /> 19855 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 19856 - <meta name="twitter:title" content="Matrix Art | Post not Found" key="og-twitter-title" /> 19857 - <meta property="og:type" content="website" key="og-type" /> 19858 - </Head> 19859 - <h1 className="text-6xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("The Post you wanted does not exist!")}</h1> 19860 - </> 19861 - ); 19862 - } 19863 - 19864 - if (image_event) { 19865 - const post_title = image_event.content['m.caption'].filter(cap => { 19866 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 19867 - const possible_text_caption = (cap as { "m.text": string; }); 19868 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") || possible_text_caption["m.text"]; 19869 - }).map(cap => { 19870 - const possible_html_caption = (cap as { body: string; mimetype: string; }); 19871 - const possible_text_caption = (cap as { "m.text": string; }); 19872 - return (possible_html_caption.body && possible_html_caption.mimetype === "text/html") ? possible_html_caption.body : possible_text_caption["m.text"]; 19873 - })[0]; 19874 - return ( 19875 - <> 19876 - <Head> 19877 - <title key="title">Matrix Art | {post_title}</title> 19878 - <meta property="og:title" content={`Matrix Art | ${post_title}`} key="og-title" /> 19879 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 19880 - <meta name="twitter:title" content={`Matrix Art | ${post_title}`} key="og-twitter-title" /> 19881 - <meta property="og:type" content="website" key="og-type" /> 19882 - <meta name="author" content={displayname} /> 19883 - <meta name="citation_authors" content={displayname} /> 19884 - <meta name="citation_journal_title" content="Matrix-Art" /> 19885 - </Head> 19886 - {isImageGalleryEvent(image_event) ? this.renderImageGalleryEvent(image_event, post_title) : (isImageEvent(image_event) ? this.renderSingleImageEvent(image_event, post_title) : <div key={(image_event as MatrixEventBase).event_id}></div>)} 19887 - <div className="grow bg-[#f8f8f8] dark:bg-[#06070D] min-h-[25rem] flex flex-col items-center"> 19888 - <div className="flex flex-col items-start lg:min-w-[60rem] lg:w-[60rem]"> 19889 - <h1 className="my-4 text-6xl text-gray-900 dark:text-gray-200 font-bold">{post_title}</h1> 19890 - <h3 className="cursor-pointer mt-0 mb-4 text-xl text-gray-900 dark:text-gray-200 font-normal inline-flex"> 19891 - {avatar_url ? <span className="block object-cover rounded-full mr-4"> <img className="object-cover rounded-full" src={this.context.client?.downloadLink(avatar_url)} height="24" width="24" alt={displayname} title={displayname} /> </span> : undefined} 19892 - <Link href={"/profile/" + encodeURIComponent(image_event.sender)} passHref><span className='hover:text-teal-400'>{displayname}</span></Link> 19893 - </h3> 19894 - {isImageEvent(image_event) ? (image_event.content['matrixart.license'] ? <h3 className='cursor-pointer mt-0 mb-4 text-l text-gray-600 dark:text-gray-400 font-normal'>{i18n?.t("License:")} <a href={getLicenseUrl(image_event.content['matrixart.license'])} title={getLicenseName(image_event.content['matrixart.license'])}>{getLicenseName(image_event.content['matrixart.license'])}</a></h3> : undefined) : undefined} 19895 - {isImageGalleryEvent(image_event) ? this.renderImageGalleryTags(image_event) : (isImageEvent(image_event) ? this.renderSingleImageTags(image_event) : <div key={(image_event as MatrixEventBase).event_id + "tags"}></div>)} 19896 - </div> 19897 - </div> 19898 - </> 19899 - ); 19900 - } else { 19901 - return ( 19902 - <> 19903 - <Head> 19904 - <title key="title">Matrix Art | {i18n?.t("Post not Found")}</title> 19905 - <meta property="og:title" content="Matrix Art | Post not Found" key="og-title" /> 19906 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 19907 - <meta name="twitter:title" content="Matrix Art | Post not Found" key="og-twitter-title" /> 19908 - <meta property="og:type" content="website" key="og-type" /> 19909 - </Head> 19910 - <h1 className="text-6xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("The Post you wanted does not exist!")}</h1> 19911 - </> 19912 - ); 19913 - } 19914 - 19915 - } 19916 - 19917 - renderTags(tags: string[], event_id: string) { 19918 - return tags.map((tag) => { 19919 - return <div className="cursor-pointer mr-2 bg-slate-800 hover:bg-slate-600 p-2 rounded-sm" key={event_id + "tags" + tag}>{tag}</div>; 19920 - }); 19921 - } 19922 - 19923 - renderSingleImageTags(imageEvent: ImageEvent): ReactNode { 19924 - const tags = this.renderTags(imageEvent.content["matrixart.tags"], (imageEvent as MatrixEventBase).event_id); 19925 - return ( 19926 - <div className="flex flex-row items-center text-gray-200 font-medium" key={(imageEvent as MatrixEventBase).event_id + "tags"}>{tags}</div> 19927 - ); 19928 - } 19929 - 19930 - renderImageGalleryTags(imageEvent: ImageGalleryEvent): ReactNode { 19931 - const tags = imageEvent.content['m.image_gallery'].flatMap(image => { 19932 - return this.renderTags(image["matrixart.tags"], (imageEvent as MatrixEventBase).event_id); 19933 - }); 19934 - return ( 19935 - <div className="flex flex-row items-center text-gray-200 font-medium" key={(imageEvent as MatrixEventBase).event_id + "tags"}>{tags}</div> 19936 - ); 19937 - } 19938 - 19939 - renderSingleImageEvent(imageEvent: ImageEvent, caption: string) { 19940 - const url = this.context.client?.downloadLink(imageEvent.content["m.file"].url); 19941 - const thumbnail_url = this.context.client?.thumbnailLink(imageEvent.content['m.file'].url, "scale", imageEvent.content['m.image'].width - 1, imageEvent.content['m.image'].height - 1); 19942 - 19943 - if (!url || !thumbnail_url) { 19944 - return <></>; 19945 - } 19946 - 19947 - const metadata = { 19948 - "@context": "https://schema.org/", 19949 - "@type": "ImageObject", 19950 - contentUrl: url, 19951 - encodingFormat: imageEvent.content['m.file'].mimetype, 19952 - // TODO get this from the event itself 19953 - license: "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19954 - author: this.state.displayname, 19955 - name: imageEvent.content['m.text'], 19956 - "width": imageEvent.content['m.image'].width, 19957 - "height": imageEvent.content['m.image'].height 19958 - }; 19959 - if (imageEvent.content['m.thumbnail']) { 19960 - if (imageEvent.content['m.thumbnail'].length > 0) { 19961 - //@ts-ignore TS is not able to figure out types here 19962 - metadata["thumbnail"] = { 19963 - "@context": "https://schema.org/", 19964 - "@type": "ImageObject", 19965 - "contentUrl": this.context.client?.downloadLink(imageEvent.content['m.thumbnail'][0].url)!, 19966 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 19967 - "author": imageEvent.content.displayname, 19968 - "name": imageEvent.content['m.text'], 19969 - }; 19970 - } 19971 - } 19972 - const blurhash = imageEvent.content['xyz.amorgan.blurhash']; 19973 - const image_html = blurhash ? ( 19974 - <div className="flex"> 19975 - <Blurhash 19976 - className="max-w-full lg:max-w-3xl max-h-[54.25rem]" 19977 - hash={blurhash} 19978 - width="100%" 19979 - height="" 19980 - /> 19981 - <img loading="eager" width={imageEvent.content['m.image'].width - 1} height={imageEvent.content['m.image'].height - 1} alt={caption} title={caption} className="h-auto w-full relative -ml-[100%] object-cover align-bottom max-h-[54.25rem]" src={thumbnail_url} /> 19982 - </div> 19983 - ) : ( 19984 - <img loading="eager" width={imageEvent.content['m.image'].width - 1} height={imageEvent.content['m.image'].height - 1} className="h-auto w-full max-h-[54.25rem]" alt={caption} title={caption} src={thumbnail_url} /> 19985 - ); 19986 - return ( 19987 - <> 19988 - <Head> 19989 - <meta property="og:image" content={url} key="og-image" /> 19990 - <meta property="og:image:type" content={imageEvent.content["m.file"].mimetype} key="og-image-type" /> 19991 - <meta property="og:image:alt" content={caption} key="og-image-alt" /> 19992 - <meta property="og:image:width" content={imageEvent.content["m.image"].width.toString()} key="og-image-width" /> 19993 - <meta property="og:image:height" content={imageEvent.content["m.image"].height.toString()} key="og-image-height" /> 19994 - <meta name="twitter:image" content={url} key="og-twitter-image" /> 19995 - <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(metadata) }} /> 19996 - </Head> 19997 - <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> 19998 - <LightGallery 19999 - plugins={[lgThumbnail, lgZoom]} 20000 - elementClassNames="shadow-2xl max-w-full lg:max-w-3xl max-h-[54.25rem] shadow-black cursor-zoom-in" 20001 - key={imageEvent.event_id} 20002 - thumbnail={true} 20003 - > 20004 - <a href={url} title={caption} data-src={url}> 20005 - {image_html} 20006 - </a> 20007 - </LightGallery> 20008 - </div> 20009 - </> 20010 - ); 20011 - } 20012 - 20013 - renderImageGalleryEvent(imageEvent: ImageGalleryEvent, caption: string) { 20014 - const metadata: { "@context": string; "@type": string; contentUrl: string; license: string; author: string; name: string; thumbnail: any; encodingFormat: string; width: number; height: number; }[] = []; 20015 - const images = imageEvent.content['m.image_gallery'].map(image => { 20016 - const url = this.context.client?.downloadLink(image["m.file"].url); 20017 - const thumbnail_url = this.context.client?.downloadLink(image['m.thumbnail'] ? (image['m.thumbnail'].length > 0 ? image['m.thumbnail'][0].url : image["m.file"].url) : image["m.file"].url); 20018 - if (!url || !thumbnail_url) { 20019 - return <></>; 20020 - } 20021 - metadata.push({ 20022 - "@context": "https://schema.org/", 20023 - "@type": "ImageObject", 20024 - contentUrl: url, 20025 - "thumbnail": image['m.thumbnail'] ? (image['m.thumbnail'].length > 0 ? { 20026 - "@context": "https://schema.org/", 20027 - "@type": "ImageObject", 20028 - "contentUrl": this.context.client?.downloadLink(image['m.thumbnail'][0].url)!, 20029 - "license": "https://creativecommons.org/licenses/by-nc-nd/4.0/", 20030 - "author": imageEvent.content.displayname, 20031 - "name": image['m.text'] 20032 - } : undefined) : undefined, 20033 - encodingFormat: image['m.file'].mimetype, 20034 - // TODO get this from the event itself 20035 - license: "https://creativecommons.org/licenses/by-nc-nd/4.0/", 20036 - author: this.state.displayname!, 20037 - name: image['m.text'], 20038 - "width": image['m.image'].width, 20039 - "height": image['m.image'].height 20040 - }); 20041 - const blurhash = image["xyz.amorgan.blurhash"]; 20042 - const image_html = blurhash ? ( 20043 - <div className="flex"> 20044 - <Blurhash 20045 - className="max-w-full lg:max-w-3xl max-h-[54.25rem]" 20046 - hash={blurhash} 20047 - width="100%" 20048 - height="" 20049 - /> 20050 - <img loading="eager" width={image['m.image'].width} height={image['m.image'].height} alt={caption} title={caption} className="h-auto w-full relative -ml-[100%] object-cover align-bottom" src={thumbnail_url} /> 20051 - </div> 20052 - ) : ( 20053 - <img loading="eager" width={image['m.image'].width} height={image['m.image'].height} className="h-auto w-full" alt={caption} title={caption} src={thumbnail_url} /> 20054 - ); 20055 - return ( 20056 - <a key={url} href={url} title={caption} data-src={url}> 20057 - {image_html} 20058 - </a> 20059 - ); 20060 - }); 20061 - return ( 20062 - <> 20063 - <Head> 20064 - <meta property="og:image" content={imageEvent.content["m.image_gallery"][0]["m.file"].url} key="og-image" /> 20065 - <meta property="og:image:type" content={imageEvent.content["m.image_gallery"][0]["m.file"].mimetype} key="og-image-type" /> 20066 - <meta property="og:image:alt" content={caption} key="og-image-alt" /> 20067 - <meta property="og:image:width" content={imageEvent.content["m.image_gallery"][0]["m.image"].width.toString()} key="og-image-width" /> 20068 - <meta property="og:image:height" content={imageEvent.content["m.image_gallery"][0]["m.image"].height.toString()} key="og-image-height" /> 20069 - <meta name="twitter:image" content={imageEvent.content["m.image_gallery"][0]["m.file"].url} key="og-twitter-image" /> 20070 - <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(metadata) }} /> 20071 - </Head> 20072 - <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> 20073 - <LightGallery 20074 - plugins={[lgThumbnail, lgZoom]} 20075 - elementClassNames="shadow-2xl max-w-full lg:max-w-3xl max-h-[54.25rem] shadow-black cursor-zoom-in" 20076 - key={imageEvent.event_id} 20077 - thumbnail={true} 20078 - > 20079 - {images} 20080 - </LightGallery> 20081 - </div> 20082 - </> 20083 - ); 20084 - } 20085 - 20086 -} 20087 - 20088 -Post.contextType = ClientContext; 20089 - 20090 -export const getServerSideProps: GetServerSideProps = async ({ res, locale, query }) => { 20091 - const event_id = decodeURIComponent(query.id as string); 20092 - 20093 - res.setHeader( 20094 - 'Cache-Control', 20095 - 'public, s-maxage=10, stale-while-revalidate=59' 20096 - ); 20097 - 20098 - const client = await MatrixClient.init(await Storage.init("main")); 20099 - if (event_id && event_id.startsWith("$")) { 20100 - try { 20101 - const data = await get_data(); 20102 - if (!client?.accessToken) { 20103 - try { 20104 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 20105 - await client?.registerAsGuest(serverUrl); 20106 - } catch (error) { 20107 - console.error("Failed to register as guest:", error); 20108 - return { 20109 - props: { 20110 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20111 - directory_data: JSON.stringify(data), 20112 - event_id: event_id, 20113 - hasFullyLoaded: false, 20114 - } 20115 - }; 20116 - } 20117 - } 20118 - // TODO fix this. It is super inefficent. 20119 - for (let user of data) { 20120 - // TODO check what happens if this is a non public image. 20121 - // We dont need many events 20122 - let roomId; 20123 - try { 20124 - roomId = await client?.followUser(user.public_user_room); 20125 - } catch { 20126 - console.error("Unbable to join room"); 20127 - continue; 20128 - } 20129 - const events = await client?.getTimeline(roomId, 100); 20130 - // Filter events by type 20131 - const image_event = events.find((event) => ((event.type == "m.image_gallery" || event.type == "m.image") && !event.unsigned?.redacted_because) && event.event_id === event_id); 20132 - if (image_event == undefined) { 20133 - continue; 20134 - } 20135 - try { 20136 - const profile = await client.getProfile(image_event.sender); 20137 - return { 20138 - props: { 20139 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20140 - image_event: image_event as MatrixImageEvents, 20141 - event_id: event_id, 20142 - hasFullyLoaded: true, 20143 - displayname: profile.displayname, 20144 - avatar_url: profile.avatar_url ?? null // eslint-disable-line unicorn/no-null 20145 - } 20146 - }; 20147 - } catch (error) { 20148 - console.debug(`Failed to fetch profile for user ${image_event.sender}:`, error); 20149 - return { 20150 - props: { 20151 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20152 - image_event: image_event as MatrixImageEvents, 20153 - event_id: event_id, 20154 - hasFullyLoaded: true, 20155 - displayname: image_event.sender 20156 - } 20157 - }; 20158 - } 20159 - } 20160 - } catch { 20161 - return { 20162 - notFound: true, props: { 20163 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20164 - } 20165 - }; 20166 - } 20167 - } 20168 - return { 20169 - notFound: true, props: { 20170 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20171 - } 20172 - }; 20173 - 20174 -}; 20175 -export default withRouter(Post); 20176 \ No newline at end of file 20177 diff --git a/pages/profile/[userid].tsx b/pages/profile/[userid].tsx 20178 deleted file mode 100644 20179 index e36d7b7..0000000 20180 --- a/pages/profile/[userid].tsx 20181 +++ /dev/null 20182 @@ -1,396 +0,0 @@ 20183 -import { GetServerSideProps, InferGetServerSidePropsType } from "next"; 20184 -import { i18n } from "next-i18next"; 20185 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 20186 -import Head from "next/head"; 20187 -import Link from "next/link"; 20188 -import { NextRouter, withRouter } from "next/router"; 20189 -import { PureComponent } from "react"; 20190 -import { toast } from "react-toastify"; 20191 -import { ClientContext } from "../../components/ClientContext"; 20192 -import { EditIcon } from "../../components/editIcon"; 20193 -import FrontPageImage from "../../components/FrontPageImage"; 20194 -import { UploadIcon } from "../../components/uploadIcon"; 20195 -import { BannerEvent, MatrixArtProfile, MatrixEvent, MatrixEventBase, MatrixImageEvents } from "../../helpers/event_types"; 20196 -import { constMatrixArtServer } from "../../helpers/matrix_client"; 20197 - 20198 -type Props = InferGetServerSidePropsType<typeof getServerSideProps> & { 20199 - router: NextRouter; 20200 - mxid: string; 20201 -}; 20202 - 20203 -type State = { 20204 - displayname: string; 20205 - avatar_url?: string; 20206 - events: MatrixEvent[] | []; 20207 - profile_event?: MatrixArtProfile; 20208 - error?: string; 20209 - isLoadingImages: boolean; 20210 - hasFullyLoaded: boolean; 20211 - isLoggedInUser: boolean; 20212 - editingUsername: boolean; 20213 - editingAbout: boolean; 20214 -}; 20215 - 20216 -class Profile extends PureComponent<Props, State> { 20217 - declare context: React.ContextType<typeof ClientContext>; 20218 - 20219 - constructor(props: Props | Readonly<Props>) { 20220 - super(props); 20221 - 20222 - this.state = { 20223 - displayname: this.props.mxid, 20224 - events: [], 20225 - isLoadingImages: false, 20226 - hasFullyLoaded: false, 20227 - isLoggedInUser: false, 20228 - editingUsername: false, 20229 - editingAbout: false, 20230 - } as State; 20231 - } 20232 - 20233 - componentDidUpdate(prevProps: Props, prevState: State) { 20234 - if (this.state.error && this.state.error !== prevState.error) { 20235 - toast.dismiss(); 20236 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 20237 - autoClose: false 20238 - }); 20239 - } 20240 - } 20241 - 20242 - async componentDidMount() { 20243 - console.log(`client: ${this.context.client}`); 20244 - // auto-register as a guest if not logged in 20245 - if (!this.context.client?.accessToken) { 20246 - await this.registerAsGuest(); 20247 - } else { 20248 - console.log("Already logged in"); 20249 - } 20250 - if (!this.context.guest_client?.accessToken) { 20251 - try { 20252 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 20253 - await this.context.guest_client?.registerAsGuest(serverUrl); 20254 - } catch (error) { 20255 - console.error("Failed to register as guest:", error); 20256 - } 20257 - } else { 20258 - console.log("Guest Already logged in"); 20259 - } 20260 - if (!this.props.mxid) { 20261 - return; 20262 - } 20263 - try { 20264 - const profile = await this.context.client?.getProfile(this.props.mxid); 20265 - this.setState({ 20266 - displayname: profile?.displayname ?? this.props.mxid, 20267 - avatar_url: profile?.avatar_url, 20268 - }); 20269 - } catch (error) { 20270 - console.debug(`Failed to fetch profile for user ${this.props.mxid}:`, error); 20271 - } 20272 - await this.loadEvents(); 20273 - 20274 - this.setState({ 20275 - isLoggedInUser: this.props.mxid === this.context.client?.userId && !this.context.client.isGuest 20276 - }); 20277 - } 20278 - 20279 - async registerAsGuest() { 20280 - try { 20281 - let serverUrl = constMatrixArtServer + "/_matrix/client"; 20282 - await this.context.client?.registerAsGuest(serverUrl); 20283 - await this.context.guest_client?.registerAsGuest(serverUrl); 20284 - } catch (error) { 20285 - console.error("Failed to register as guest:", error); 20286 - this.setState({ 20287 - error: "Failed to register as guest: " + JSON.stringify(error), 20288 - }); 20289 - } 20290 - } 20291 - 20292 - // TODO do this on server side 20293 - async loadEvents() { 20294 - const { isLoadingImages, hasFullyLoaded } = this.state; 20295 - if (isLoadingImages || hasFullyLoaded) { 20296 - return; 20297 - } 20298 - const client = this.context.client?.isGuest ? this.context.client : this.context.guest_client; 20299 - this.setState({ 20300 - isLoadingImages: true, 20301 - }); 20302 - try { 20303 - let roomId; 20304 - try { 20305 - roomId = await client?.followUser("#" + this.props.mxid); 20306 - } catch { 20307 - this.setState({ 20308 - hasFullyLoaded: true, 20309 - isLoadingImages: false 20310 - }); 20311 - console.error("Unbable to join room"); 20312 - return; 20313 - } 20314 - if (!roomId) { 20315 - this.setState({ 20316 - hasFullyLoaded: true, 20317 - isLoadingImages: false 20318 - }); 20319 - return; 20320 - } 20321 - const events = await client?.getTimeline(roomId, 100, { limit: 30, types: ["m.image", "m.image_gallery", "matrixart.profile", "matrixart.profile_banner"] }); 20322 - const profile_event = events?.find((event) => event.type === "matrixart.profile" && event.sender === this.props.mxid); 20323 - const filtered_events = events?.filter(event => event.type !== "m.room.member" && event.type !== "m.room.topic" && event.type !== "m.room.name" && event.type !== "m.room.power_levels"); 20324 - console.log("Adding", filtered_events?.length, "items"); 20325 - this.setState({ 20326 - events: filtered_events ?? [], 20327 - profile_event: profile_event as MatrixArtProfile | undefined, 20328 - }); 20329 - } catch (error) { 20330 - this.setState({ 20331 - error: JSON.stringify(error), 20332 - }); 20333 - } finally { 20334 - this.setState({ 20335 - hasFullyLoaded: true, 20336 - isLoadingImages: false 20337 - }); 20338 - } 20339 - } 20340 - 20341 - renderNotFound() { 20342 - return ( 20343 - <> 20344 - <Head> 20345 - <title key="title">Matrix Art | {i18n?.t("User not Found")}</title> 20346 - <meta property="og:title" content="Matrix Art | User not Found" key="og-title" /> 20347 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 20348 - <meta name="twitter:title" content="Matrix Art | User not Found" key="og-twitter-title" /> 20349 - <meta property="og:type" content="website" key="og-type" /> 20350 - </Head> 20351 - <h1 className="text-6xl text-gray-900 dark:text-gray-200 font-bold">{i18n?.t("The User you wanted does not exist!")}</h1> 20352 - </> 20353 - ); 20354 - } 20355 - 20356 - handleUsernameInputChange(event: { target: any; }) { 20357 - this.setState({ 20358 - displayname: event.target.value 20359 - }); 20360 - } 20361 - 20362 - async onClickEditUsername() { 20363 - if (!this.state.editingUsername) { 20364 - this.setState({ 20365 - editingUsername: true 20366 - }); 20367 - } else { 20368 - await this.context.client?.setDisplayname(this.state.displayname); 20369 - this.setState({ 20370 - editingUsername: false 20371 - }); 20372 - } 20373 - 20374 - } 20375 - 20376 - async handleAvatarUpload(event: { target: { files: FileList | null; }; }) { 20377 - const files = event.target.files; 20378 - if (!files) { 20379 - return; 20380 - } 20381 - const file = files[0]; 20382 - const mxc = await this.context.client?.uploadFile(file); 20383 - if (!mxc) { 20384 - return; 20385 - } 20386 - await this.context.client?.setAvatarUrl(mxc); 20387 - this.setState({ 20388 - avatar_url: mxc, 20389 - }); 20390 - } 20391 - 20392 - render() { 20393 - const { mxid } = this.props; 20394 - const { events, profile_event, avatar_url, displayname, isLoggedInUser, editingUsername } = this.state; 20395 - if (!mxid || !mxid?.startsWith("@")) { 20396 - return this.renderNotFound(); 20397 - } 20398 - 20399 - const banner_event = events.find(event => event.type === "matrixart.profile_banner"); 20400 - const image_events = events.filter((event) => (event.type == "m.image_gallery" || event.type == "m.image") && !event.unsigned?.redacted_because) as MatrixImageEvents[]; 20401 - // TODO opengraph shows mxid instead of displayname 20402 - return ( 20403 - <> 20404 - <Head> 20405 - <title key="title">Matrix Art | {displayname}</title> 20406 - <meta property="og:title" content={`Matrix Art | ${displayname}`} key="og-title" /> 20407 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 20408 - <meta name="twitter:title" content={`Matrix Art | ${displayname}`} key="og-twitter-title" /> 20409 - <meta property="og:type" content="website" key="og-type" /> 20410 - </Head> 20411 - {banner_event ? <div style={{ 20412 - backgroundImage: `url(${this.context.client?.thumbnailLink((banner_event as BannerEvent).content["m.file"].url, "scale", (banner_event as BannerEvent).content["m.image"].width - 1, (banner_event as BannerEvent).content["m.image"].height - 1)})` 20413 - }} 20414 - className="fixed top-14 w-full h-[32.5rem] bg-cover lg:bg-[position:50%]" 20415 - ></div> : undefined} 20416 - <div className="relative w-full"> 20417 - <div className="relative mb-0 min-h-[43.75rem]"> 20418 - <div id="transparent_gradient" className="absolute left-0 right-0 top-[39rem] bottom-0 bg-[#f8f8f8] dark:bg-[#06070D]"></div> 20419 - <div className="px-14 relative pt-[8.5rem] lg:pt-[15.5rem] pb-96 "> 20420 - <div className="relative mt-0"> 20421 - <div className="relative inline-flex z-[1] mb-10"> 20422 - <span> 20423 - <div className="block relative"> 20424 - {/* TODO fallback*/} 20425 - { 20426 - isLoggedInUser ? 20427 - ( 20428 - avatar_url ? ( 20429 - <> 20430 - <label htmlFor="avatar-upload" className="rounded-md flex justify-center items-center cursor-pointer grayscale-0 hover:grayscale transition-all ease-in-out duration-300" style={{ height: "100px", width: "100px" }}> 20431 - <img className="block object-cover rounded-md" src={this.context.client?.downloadLink(avatar_url)!} height="100" width="100" alt={displayname} title={displayname} /> 20432 - <div className="min-h-[48px] min-w-[48px] absolute left-[20%] rounded-full bg-slate-700/40 p-1 flex justify-center items-center"><EditIcon className="invert-0 duration-300 transition-all ease-in-out hover:invert" /></div> 20433 - </label> 20434 - <input className="hidden" id="avatar-upload" type="file" accept="image/*" onChange={this.handleAvatarUpload.bind(this)} /> 20435 - </> 20436 - ) : ( 20437 - <> 20438 - <label htmlFor="avatar-upload" className="rounded-md bg-slate-500 flex justify-center items-center cursor-pointer" style={{ height: "100px", width: "100px" }}> 20439 - <UploadIcon /> 20440 - </label> 20441 - <input className="hidden" id="avatar-upload" type="file" accept="image/*" onChange={this.handleAvatarUpload.bind(this)} /> 20442 - </> 20443 - ) 20444 - ) 20445 - : (avatar_url ? 20446 - <img className="block object-cover rounded-md" src={this.context.client?.downloadLink(avatar_url)!} height="100" width="100" alt={displayname} title={displayname} /> 20447 - : 20448 - <div className="rounded-md bg-slate-500 flex justify-center items-center" style={{ height: "100px", width: "100px" }}></div> 20449 - ) 20450 - } 20451 - </div> 20452 - </span> 20453 - <div className="ml-5 flex flex-col justify-center"> 20454 - <h1 className="font-extrabold text-3xl lg:text-5xl text-gray-200 mt-[-1rem] flex items-center gap-1">{editingUsername ? <input onChange={this.handleUsernameInputChange.bind(this)} className="placeholder:text-gray-900 text-gray-900 rounded py-1.5 px-2" type="text" placeholder={i18n?.t("Set a displayname")} value={displayname}></input> : <span>{displayname}</span>}{isLoggedInUser ? <EditIcon className="cursor-pointer" onClick={this.onClickEditUsername.bind(this)} /> : undefined}</h1> 20455 - </div> 20456 - </div> 20457 - </div> 20458 - <div className="relative w-full h-14"> 20459 - <div className="min-h-0"> 20460 - <nav className="w-full h-14 box-border flex items-center bg-[#f8f8f8] dark:bg-[#06070D] overflow-scroll lg:overflow-hidden"> 20461 - <span id="magic-spacer"></span> 20462 - <div className="flex items-center w-full h-full overflow-hidden whitespace-nowrap box-border min-w-fit"> 20463 - <Link href={`/profile/${encodeURIComponent(mxid)}`} passHref><a className={`text-base font-bold text-gray-900 dark:text-gray-200 capitalize ml-2 px-8 relative box-border inline-flex grow-0 shrink-[1] basis-auto items-center h-full decoration-[none] brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all`}>{i18n?.t("Home")}</a></Link> 20464 - <Link href={`/profile/${encodeURIComponent(mxid)}/gallery`} passHref><a className={`text-base font-bold text-gray-900 dark:text-[#b1b1b9] capitalize px-8 relative box-border inline-flex grow-0 shrink-[1] basis-auto items-center h-full decoration-[none] brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all`}>{i18n?.t("Gallery")}</a></Link> 20465 - <Link href={`/profile/${encodeURIComponent(mxid)}/about`} passHref><a className={`text-base font-bold text-gray-900 dark:text-[#b1b1b9] capitalize px-8 relative box-border inline-flex grow-0 shrink-[1] basis-auto items-center h-full decoration-[none] brightness-100 hover:brightness-75 duration-200 ease-in-out transition-all`}>{i18n?.t("About")}</a></Link> 20466 - </div> 20467 - <div className="pr-4"> 20468 - {/*TODO Share menu here*/} 20469 - </div> 20470 - <div> 20471 - <button id="reflection" className="min-w-[7.75rem] h-14 min-h-[2.5rem] box-border m-0 shadow-none rounded-none relative overflow-hidden z-0 border-none outline-none px-5 flex items-center justify-center cursor-pointer bg-teal-400 text-gray-900 text-sm font-bold">{i18n?.t("Follow")}</button> 20472 - </div> 20473 - </nav> 20474 - </div> 20475 - </div> 20476 - <div className="w-full bg-transparent"> 20477 - <div className="pt-5"> 20478 - <div className="flex flex-col-reverse lg:flex-row"> 20479 - <div className="mr-16 overflow-hidden pb-4 flex-[auto]"> 20480 - <div> 20481 - <section className="pb-4 block"> 20482 - <div className="w-full flex items-center mt-8 mb-4"> 20483 - <h2 className="font-bold text-lg tracking-[.3px] leading-[1.22] text-gray-900 dark:text-gray-200">{i18n?.t("Gallery")}</h2> 20484 - <div className="ml-4 flex flex-[1] items-center relative justify-end"> 20485 - <Link href={`/profile/${encodeURIComponent(mxid)}/gallery`} passHref><a className={`font-regular text-xs tracking-[1.3px] leading-[1.22] ml-6 uppercase whitespace-nowrap text-gray-900 dark:text-gray-200 hover:opacity-100 opacity-0 transition-opacity duration-[25ms]`}>See All</a></Link> 20486 - </div> 20487 - </div> 20488 - <div> 20489 - <ul className='flex flex-wrap gap-1'>{image_events.map(event => <FrontPageImage show_nsfw={true} event={event} imageHeight="286px" key={(event as MatrixEventBase).event_id} />)} 20490 - <li className='grow-[10]'></li> 20491 - </ul> 20492 - </div> 20493 - </section> 20494 - </div> 20495 - </div> 20496 - <div className="lg:w-[37.5rem] w-full flex-none"> 20497 - <div> 20498 - <section className="pb-4 block"> 20499 - <div className="w-full flex items-center mt-8 mb-4"> 20500 - <h2 className="font-bold text-gray-900 dark:text-gray-200 text-lg tracking--[.3px] leading-[1.22] max-w-[90%] mr-auto overflow-hidden text-ellipsis whitespace-nowrap">{i18n?.t("About {{displayname}}", { displayname: displayname })}</h2> 20501 - <div className="ml-4 flex flex-[1] items-center relative justify-end"> 20502 - <Link href={`/profile/${encodeURIComponent(mxid)}/about`} passHref><a className={`font-regular text-xs tracking-[1.3px] leading-[1.22] ml-6 uppercase whitespace-nowrap text-gray-900 dark:text-gray-200 hover:opacity-100 opacity-0 transition-opacity duration-[25ms]`}>{i18n?.t("More")}</a></Link> 20503 - </div> 20504 - </div> 20505 - <div className="bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95] pt-7 w-ull flex flex-col box-border tracking--[.3px] text-gray-900 dark:text-gray-200"> 20506 - {profile_event?.content["matrixart.profile.description"] ? <div className="px-8"> 20507 - <div className="mb-8 font-regular text-base leading-[1.22] whitespace-pre-wrap"> 20508 - {profile_event ? profile_event.content["matrixart.profile.description"] : undefined} 20509 - </div> 20510 - </div> : undefined} 20511 - {profile_event?.content["matrixart.profile.pronouns"] ? <div className="px-8"> 20512 - <div className="mb-8 flex items-start justify-between flex-wrap w-full"> 20513 - <div className="h-11 mb-0 text-xs flex items-center uppercase text-gray-700 dark:text-gray-400">{i18n?.t("Pronouns")}</div> 20514 - <div className="w-full justify-items-end">{profile_event ? profile_event.content["matrixart.profile.pronouns"] : undefined}</div> 20515 - </div> 20516 - </div> : undefined} 20517 - {profile_event?.content["matrixart.profile.links"] ? <div className="px-8"> 20518 - <div className="mb-8 flex items-start justify-between flex-wrap w-full"> 20519 - <div className="h-11 mb-0 text-xs flex items-center uppercase text-gray-700 dark:text-gray-400">{i18n?.t("Follow me on")}</div> 20520 - <div className="w-full max-w-[21.5rem] grid gap-4 auto-cols-[2.75rem] auto-rows-[2.75rem] grid-flow-col justify-items-end">{/*TODO Social Icons */}</div> 20521 - </div> 20522 - </div> : undefined} 20523 - {profile_event?.content["matrixart.profile.biography"] ? <div className="px-8"> 20524 - <div className="mb-8 font-regular text-base leading-[1.22] whitespace-pre-wrap"> 20525 - <div className="h-11 mb-0 text-xs flex items-center uppercase text-gray-700 dark:text-gray-400">{i18n?.t("My Bio")}</div> 20526 - <div className="text-base font-regular">{profile_event ? profile_event.content["matrixart.profile.biography"] : undefined}</div> 20527 - </div> 20528 - </div> : undefined} 20529 - </div> 20530 - </section> 20531 - </div> 20532 - </div> 20533 - </div> 20534 - </div> 20535 - </div> 20536 - </div> 20537 - </div> 20538 - </div> 20539 - </> 20540 - ); 20541 - } 20542 - 20543 -} 20544 -Profile.contextType = ClientContext; 20545 - 20546 -export const getServerSideProps: GetServerSideProps = async (context) => { 20547 - const { query, res, locale } = context; 20548 - const mxid = decodeURIComponent(query.userid as string); 20549 - 20550 - res.setHeader( 20551 - 'Cache-Control', 20552 - 'public, s-maxage=10, stale-while-revalidate=59' 20553 - ); 20554 - if (mxid && mxid.startsWith("@")) { 20555 - try { 20556 - return { 20557 - props: { 20558 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20559 - mxid: mxid 20560 - } 20561 - }; 20562 - } catch { 20563 - return { 20564 - notFound: true, props: { 20565 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20566 - } 20567 - }; 20568 - } 20569 - } 20570 - return { 20571 - notFound: true, props: { 20572 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20573 - } 20574 - }; 20575 - 20576 -}; 20577 - 20578 -export default withRouter(Profile);; 20579 \ No newline at end of file 20580 diff --git a/pages/submit.tsx b/pages/submit.tsx 20581 deleted file mode 100644 20582 index 2e3bc0c..0000000 20583 --- a/pages/submit.tsx 20584 +++ /dev/null 20585 @@ -1,138 +0,0 @@ 20586 -import { GetServerSideProps } from "next"; 20587 -import { i18n } from "next-i18next"; 20588 -import { serverSideTranslations } from "next-i18next/serverSideTranslations"; 20589 -import Head from "next/head"; 20590 -import { NextRouter, withRouter } from "next/router"; 20591 -import { PureComponent, ReactNode } from "react"; 20592 -import { FileRejection } from "react-dropzone"; 20593 -import { toast } from "react-toastify"; 20594 -import { ClientContext } from "../components/ClientContext"; 20595 -import MainSubmissionForm from "../components/submit_page/main"; 20596 -import { DropCallbacks, StartSubmit } from "../components/submit_page/start"; 20597 - 20598 -type Props = { 20599 - router: NextRouter; 20600 -}; 20601 - 20602 -type State = { 20603 - files: PreviewWithDataFile[]; 20604 - fileRejections: FileRejection[]; 20605 - error?: string; 20606 - submitState: "start" | "editing"; 20607 -}; 20608 - 20609 -export type PreviewWithDataFile = File & { 20610 - preview_url: string; 20611 -}; 20612 - 20613 -class Submit extends PureComponent<Props, State> implements DropCallbacks { 20614 - declare context: React.ContextType<typeof ClientContext>; 20615 - onDrop: (files: File[]) => void; 20616 - onDropError: (fileRejections: FileRejection[]) => void; 20617 - 20618 - async componentDidMount() { 20619 - if (this.context.client?.isGuest) { 20620 - this.props.router.replace("/login"); 20621 - } 20622 - } 20623 - 20624 - constructor(props: Props) { 20625 - super(props); 20626 - this.onDrop = async (files: File[]) => { 20627 - const files_mapped = await Promise.all(files.map(async file => Object.assign(file, { 20628 - preview_url: URL.createObjectURL(file) 20629 - }))) as PreviewWithDataFile[]; 20630 - let newState: "start" | "editing"; 20631 - switch (this.state.submitState) { 20632 - case "start": { 20633 - newState = "editing"; 20634 - break; 20635 - } 20636 - default: { 20637 - newState = this.state.submitState; 20638 - break; 20639 - } 20640 - } 20641 - this.setState({ 20642 - submitState: newState, 20643 - files: [...this.state.files, ...files_mapped] 20644 - }); 20645 - }; 20646 - 20647 - this.onDropError = (fileRejections: FileRejection[]) => { 20648 - const newRejections = fileRejections.filter(x => !this.state.fileRejections.includes(x)); 20649 - if (newRejections.length > 0) { 20650 - let errors = ""; 20651 - for (const rejection of newRejections) { 20652 - if (errors === "") { 20653 - errors = `${rejection.file.name} - ${rejection.errors.join(" & ")}`; 20654 - } else { 20655 - errors = `${errors}\n${rejection.file.name} - ${rejection.errors.join(" & ")}`; 20656 - } 20657 - } 20658 - this.setState({ 20659 - error: errors 20660 - }); 20661 - } 20662 - this.setState({ fileRejections: newRejections }); 20663 - }; 20664 - this.state = { 20665 - files: [], 20666 - fileRejections: [], 20667 - submitState: "start" 20668 - }; 20669 - } 20670 - componentDidUpdate(prevProps: Props, prevState: State) { 20671 - if (this.state.error && this.state.error !== prevState.error) { 20672 - toast.dismiss(); 20673 - toast(() => <div><h2 className="text-xl text-white">{i18n?.t("Error")}</h2><br />{this.state.error}</div>, { 20674 - autoClose: false 20675 - }); 20676 - } 20677 - } 20678 - 20679 - render(): ReactNode { 20680 - return ( 20681 - <> 20682 - <Head> 20683 - <title key="title">Matrix Art | {i18n?.t("Submit Post")}</title> 20684 - <meta property="og:title" content="Matrix Art | Submit Post" key="og-title" /> 20685 - <meta name="twitter:card" content="summary_large_image" key="og-twitter" /> 20686 - <meta name="twitter:title" content="Matrix Art | Submit Post" key="og-twitter-title" /> 20687 - <meta property="og:type" content="website" key="og-type" /> 20688 - </Head> 20689 - <div className='z-[100] sticky lg:top-[4.9rem] top-[12.5rem] bg-[#fefefe]/[.95] dark:bg-[#12161D]'> 20690 - <div className='h-16 px-10 w-full relative grid grid-cols-[1fr_auto_1fr] items-center' id='section-grid'> 20691 - <h1 className='text-xl text-gray-900 dark:text-gray-200 font-bold'>{i18n?.t("Submit Image")}</h1> 20692 - </div> 20693 - </div> 20694 - {this.renderStage()} 20695 - <div className="flex-grow"></div> 20696 - </> 20697 - ); 20698 - } 20699 - renderStage(): ReactNode { 20700 - switch (this.state.submitState) { 20701 - case "start": { 20702 - return <StartSubmit onDrop={this.onDrop} onDropError={this.onDropError} />; 20703 - } 20704 - case "editing": 20705 - return <MainSubmissionForm onDrop={this.onDrop} onDropError={this.onDropError} files={this.state.files} />; 20706 - default: { 20707 - return <></>; 20708 - } 20709 - } 20710 - } 20711 -} 20712 - 20713 -Submit.contextType = ClientContext; 20714 - 20715 -export const getServerSideProps: GetServerSideProps = async ({ locale }) => { 20716 - return { 20717 - props: { 20718 - ...(await serverSideTranslations(locale ?? 'en', ['common'])), 20719 - } 20720 - }; 20721 -}; 20722 - 20723 -export default withRouter(Submit); 20724 \ No newline at end of file 20725 diff --git a/playwright.config.ts b/playwright.config.ts 20726 deleted file mode 100644 20727 index 15814b4..0000000 20728 --- a/playwright.config.ts 20729 +++ /dev/null 20730 @@ -1,113 +0,0 @@ 20731 -import { PlaywrightTestConfig, devices } from '@playwright/test'; 20732 - 20733 -/** 20734 - * See https://playwright.dev/docs/test-configuration. 20735 - */ 20736 -const config: PlaywrightTestConfig = { 20737 - 20738 - testDir: './e2e', 20739 - 20740 - /* Maximum time one test can run for. */ 20741 - timeout: 30 * 1000, 20742 - 20743 - expect: { 20744 - 20745 - /** 20746 - * Maximum time expect() should wait for the condition to be met. 20747 - * For example in `await expect(locator).toHaveText();` 20748 - */ 20749 - timeout: 5000 20750 - }, 20751 - 20752 - /* Fail the build on CI if you accidentally left test.only in the source code. */ 20753 - forbidOnly: !!process.env.CI, 20754 - 20755 - /* Retry on CI only */ 20756 - retries: process.env.CI ? 2 : 0, 20757 - 20758 - /* Opt out of parallel tests on CI. */ 20759 - workers: process.env.CI ? 1 : undefined, 20760 - 20761 - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 20762 - reporter: process.env.CI ? 'github' : 'list', 20763 - 20764 - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ 20765 - use: { 20766 - 20767 - /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ 20768 - actionTimeout: 0, 20769 - 20770 - /* Base URL to use in actions like `await page.goto('/')`. */ 20771 - baseURL: 'http://localhost:3000', 20772 - 20773 - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ 20774 - trace: 'on-first-retry', 20775 - 20776 - video: 'retain-on-failure', 20777 - screenshot: 'on', 20778 - }, 20779 - 20780 - /* Configure projects for major browsers */ 20781 - projects: [ 20782 - { 20783 - name: 'chromium', 20784 - 20785 - /* Project-specific settings. */ 20786 - use: { 20787 - ...devices['Desktop Chrome'], 20788 - }, 20789 - }, 20790 - 20791 - { 20792 - name: 'firefox', 20793 - use: { 20794 - ...devices['Desktop Firefox'], 20795 - }, 20796 - }, 20797 - 20798 - { 20799 - name: 'webkit', 20800 - use: { 20801 - ...devices['Desktop Safari'], 20802 - }, 20803 - }, 20804 - 20805 - /* Test against mobile viewports. */ 20806 - { 20807 - name: 'Mobile Chrome', 20808 - use: { 20809 - ...devices['Pixel 5'], 20810 - }, 20811 - }, 20812 - { 20813 - name: 'Mobile Safari', 20814 - use: { 20815 - ...devices['iPhone 12'], 20816 - }, 20817 - }, 20818 - 20819 - /* Test against branded browsers. */ 20820 - { 20821 - name: 'Microsoft Edge', 20822 - use: { 20823 - channel: 'msedge', 20824 - }, 20825 - }, 20826 - { 20827 - name: 'Google Chrome', 20828 - use: { 20829 - channel: 'chrome', 20830 - }, 20831 - }, 20832 - ], 20833 - 20834 - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ 20835 - outputDir: 'test-results/', 20836 - 20837 - /* Run your local dev server before starting the tests */ 20838 - webServer: { 20839 - command: 'npm run dev', 20840 - port: 3000, 20841 - }, 20842 -}; 20843 -export default config; 20844 diff --git a/postcss.config.js b/postcss.config.js 20845 index 0c83ea1..33ad091 100644 20846 --- a/postcss.config.js 20847 +++ b/postcss.config.js 20848 @@ -1,6 +1,6 @@ 20849 module.exports = { 20850 plugins: { 20851 tailwindcss: {}, 20852 - autoprefixer: {} 20853 + autoprefixer: {}, 20854 }, 20855 } 20856 diff --git a/public/Logo_colored.svg b/public/Logo_colored.svg 20857 new file mode 100644 20858 index 0000000..fabf7a0 20859 --- /dev/null 20860 +++ b/public/Logo_colored.svg 20861 @@ -0,0 +1,93 @@ 20862 +<svg width="400" height="87" viewBox="20 10 400 87" fill="none" xmlns="http://www.w3.org/2000/svg"> 20863 + <g filter="url(#filter0_ddd_7_98)"> 20864 + <path 20865 + d="M125.562 77.1249C121 86.2499 114.516 90.8126 106.109 90.8126C97.7656 90.8126 91.7969 85.1876 88.2032 73.9376C85.8282 66.5 84.6406 57.4376 84.6406 46.75C84.6406 42.7813 84.7969 38.5781 85.1094 34.1406C78.9844 46.1094 74.2188 57.9376 70.8125 69.625H52.8594L52.9063 34.0469C46.8438 46.0469 42.1875 57.9062 38.9375 69.625H20C32.5938 50.9062 42.5156 31.0312 49.7656 10H68.5156C66.7032 21.3125 65.75 33.1562 65.6563 45.5312C71.6563 33.1875 77.125 21.3438 82.0625 10H103.391C100.047 18.5625 98.375 27.6876 98.375 37.375C98.375 38.5938 98.4219 40.1093 98.5156 41.9218C98.8282 48.2031 99.2813 52.9219 99.875 56.0782C100.75 60.7657 102.219 65.2343 104.281 69.4843C107.687 76.4843 111.719 79.9844 116.375 79.9844C121.125 79.9844 124.187 79.0312 125.562 77.1249Z" 20866 + fill="url(#paint0_linear_7_98)" /> 20867 + <path 20868 + d="M152.046 28.5625C146.765 42.2499 142.593 55.9376 139.531 69.625H123.828L124.531 67.3282C121.5 69.0469 118.391 69.9062 115.203 69.9062C110.984 69.9062 107.687 68.4532 105.312 65.5469C103.094 62.8594 101.984 59.3593 101.984 55.0468C101.984 48.4843 104.141 42.4688 108.453 37C113.078 31.1563 118.562 28.2344 124.906 28.2344C129.562 28.2344 132.953 29.7187 135.078 32.6875L136.343 28.5625H152.046ZM130.531 43.6093C130.531 40.3281 128.922 38.6875 125.703 38.6875C123.422 38.6875 121.406 39.6562 119.656 41.5938C117.906 43.5312 117.031 45.6562 117.031 47.9688C117.031 51.4062 118.734 53.125 122.14 53.125C124.546 53.125 126.578 52.125 128.234 50.125C129.765 48.25 130.531 46.0781 130.531 43.6093Z" 20869 + fill="url(#paint1_linear_7_98)" /> 20870 + <path 20871 + d="M187.531 28.2344L183.64 41.1719C180.328 41.0469 177.125 40.9376 174.031 40.8438C171.218 50.125 168.937 59.7188 167.187 69.625H149.984C152.828 62.3438 156 52.7344 159.5 40.7969C156.218 40.8907 153.046 41.0157 149.984 41.1719L153.922 28.2344C156.828 28.3907 159.875 28.4999 163.062 28.5625C164.437 23.5625 165.875 18.2188 167.375 12.5312H184.718C182.312 17.8125 180.125 23.1562 178.156 28.5625C181.156 28.4687 184.281 28.3594 187.531 28.2344Z" 20872 + fill="url(#paint2_linear_7_98)" /> 20873 + <path 20874 + d="M226.625 39.0156C224.812 38.1093 221.625 37.6562 217.062 37.6562C213.468 37.6562 210.453 38.6876 208.015 40.75C205.328 43.0313 201.64 52.4062 196.953 68.875H196.906L196.672 69.625H180.968L193.437 28.5625H200.375C202.281 27.7499 204.515 27.3438 207.078 27.3438C212.296 27.3438 218.812 31.2343 226.625 39.0156Z" 20875 + fill="url(#paint3_linear_7_98)" /> 20876 + <path 20877 + d="M251.796 19.375C251.796 21.5312 250.515 23.2656 247.953 24.5781C245.89 25.6406 243.656 26.1719 241.25 26.1719C238.812 26.1719 236.531 25.6406 234.406 24.5781C231.843 23.2968 230.562 21.5468 230.562 19.3281C230.562 17.1094 231.937 15.3594 234.687 14.0781C236.875 13.0469 239.218 12.5312 241.718 12.5312C244.187 12.5312 246.375 13.0469 248.281 14.0781C250.625 15.3594 251.796 17.125 251.796 19.375ZM246.359 28.5625L233.89 69.625H218.187L230.656 28.5625H246.359Z" 20878 + fill="url(#paint4_linear_7_98)" /> 20879 + <path 20880 + d="M291.172 28.5625L270.125 49.6562L278.656 69.625H264.546L260.187 59.5468L250.109 69.625H234.453L255.546 48.5782L246.968 28.5625H261.125L265.437 38.6875L275.562 28.5625H291.172Z" 20881 + fill="url(#paint5_linear_7_98)" /> 20882 + <path 20883 + d="M365.328 77.1249C360.765 86.2499 354.296 90.8126 345.922 90.8126C338.703 90.8126 333.25 86.9688 329.562 79.2812C326.968 73.8749 325.359 66.8907 324.734 58.3282H314.281C312.937 62.1407 311.703 65.9063 310.578 69.625H292.062C303.843 48.4375 313.781 28.5625 321.875 10H343.203C339.828 18.5938 338.14 27.7188 338.14 37.375C338.14 38.5938 338.187 40.1093 338.281 41.9218C338.593 48.2656 339.046 52.9844 339.64 56.0782C340.515 60.7344 341.984 65.2031 344.046 69.4843C347.422 76.4843 351.453 79.9844 356.14 79.9844C360.89 79.9844 363.953 79.0312 365.328 77.1249ZM324.968 33.9531C322.75 38.2343 320.718 42.5156 318.875 46.7968H324.453C324.484 42.7968 324.656 38.5156 324.968 33.9531Z" 20884 + fill="url(#paint6_linear_7_98)" /> 20885 + <path 20886 + d="M386.187 39.0156C384.375 38.1093 381.187 37.6562 376.625 37.6562C373.031 37.6562 370.015 38.6876 367.578 40.75C364.89 43.0313 361.203 52.4062 356.515 68.875H356.468L356.234 69.625H340.531L353 28.5625H359.937C361.843 27.7499 364.078 27.3438 366.64 27.3438C371.859 27.3438 378.375 31.2343 386.187 39.0156Z" 20887 + fill="url(#paint7_linear_7_98)" /> 20888 + <path 20889 + d="M419.75 28.2344L415.859 41.1719C412.546 41.0469 409.343 40.9376 406.25 40.8438C403.437 50.125 401.156 59.7188 399.406 69.625H382.203C385.046 62.3438 388.218 52.7344 391.718 40.7969C388.437 40.8907 385.265 41.0157 382.203 41.1719L386.14 28.2344C389.046 28.3907 392.093 28.4999 395.281 28.5625C396.656 23.5625 398.093 18.2188 399.593 12.5312H416.937C414.531 17.8125 412.343 23.1562 410.375 28.5625C413.375 28.4687 416.5 28.3594 419.75 28.2344Z" 20890 + fill="url(#paint8_linear_7_98)" /> 20891 + </g> 20892 + <defs> 20893 + <filter id="filter0_ddd_7_98" x="0" y="0" width="439.75" height="120.813" filterUnits="userSpaceOnUse" 20894 + color-interpolation-filters="sRGB"> 20895 + <feFlood flood-opacity="0" result="BackgroundImageFix" /> 20896 + <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" 20897 + result="hardAlpha" /> 20898 + <feOffset dy="2" /> 20899 + <feGaussianBlur stdDeviation="3" /> 20900 + <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0" /> 20901 + <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_7_98" /> 20902 + <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" 20903 + result="hardAlpha" /> 20904 + <feOffset dy="10" /> 20905 + <feGaussianBlur stdDeviation="10" /> 20906 + <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0" /> 20907 + <feBlend mode="normal" in2="effect1_dropShadow_7_98" result="effect2_dropShadow_7_98" /> 20908 + <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" 20909 + result="hardAlpha" /> 20910 + <feOffset dy="4" /> 20911 + <feGaussianBlur stdDeviation="2" /> 20912 + <feComposite in2="hardAlpha" operator="out" /> 20913 + <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0" /> 20914 + <feBlend mode="normal" in2="effect2_dropShadow_7_98" result="effect3_dropShadow_7_98" /> 20915 + <feBlend mode="normal" in="SourceGraphic" in2="effect3_dropShadow_7_98" result="shape" /> 20916 + </filter> 20917 + <linearGradient id="paint0_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20918 + <stop stop-color="#751796" /> 20919 + <stop offset="1" stop-color="#FE7223" /> 20920 + </linearGradient> 20921 + <linearGradient id="paint1_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20922 + <stop stop-color="#751796" /> 20923 + <stop offset="1" stop-color="#FE7223" /> 20924 + </linearGradient> 20925 + <linearGradient id="paint2_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20926 + <stop stop-color="#751796" /> 20927 + <stop offset="1" stop-color="#FE7223" /> 20928 + </linearGradient> 20929 + <linearGradient id="paint3_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20930 + <stop stop-color="#751796" /> 20931 + <stop offset="1" stop-color="#FE7223" /> 20932 + </linearGradient> 20933 + <linearGradient id="paint4_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20934 + <stop stop-color="#751796" /> 20935 + <stop offset="1" stop-color="#FE7223" /> 20936 + </linearGradient> 20937 + <linearGradient id="paint5_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20938 + <stop stop-color="#751796" /> 20939 + <stop offset="1" stop-color="#FE7223" /> 20940 + </linearGradient> 20941 + <linearGradient id="paint6_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20942 + <stop stop-color="#751796" /> 20943 + <stop offset="1" stop-color="#FE7223" /> 20944 + </linearGradient> 20945 + <linearGradient id="paint7_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20946 + <stop stop-color="#751796" /> 20947 + <stop offset="1" stop-color="#FE7223" /> 20948 + </linearGradient> 20949 + <linearGradient id="paint8_linear_7_98" x1="-213.5" y1="50" x2="629.5" y2="50" gradientUnits="userSpaceOnUse"> 20950 + <stop stop-color="#751796" /> 20951 + <stop offset="1" stop-color="#FE7223" /> 20952 + </linearGradient> 20953 + </defs> 20954 +</svg> 20955 \ No newline at end of file 20956 diff --git a/public/favicon.ico b/public/favicon.ico 20957 deleted file mode 100644 20958 index 718d6fe..0000000 20959 Binary files a/public/favicon.ico and /dev/null differ 20960 diff --git a/public/locales/de-DE/common.json b/public/locales/de-DE/common.json 20961 deleted file mode 100644 20962 index ebdd98e..0000000 20963 --- a/public/locales/de-DE/common.json 20964 +++ /dev/null 20965 @@ -1,60 +0,0 @@ 20966 -{ 20967 - "Search & Discover": "Suche & Entdecke", 20968 - "Join": "Beitreten", 20969 - "Log in": "Anmelden", 20970 - "Profile": "Profil", 20971 - "Logout": "Abmelden", 20972 - "Submit": "Hinzufügen", 20973 - "Setup Account": "Profil einrichten", 20974 - "Github": "Github", 20975 - "Matrix": "Matrix", 20976 - "Developer": "Entwickler", 20977 - "License:": "Lizenz:", 20978 - "Error": "Fehler", 20979 - "You are not logged in!": "Du bist nicht angemeldet!", 20980 - "You did not fill the required fields for all images. Please fix this!": "Du hast nicht all erforderlichen Felder ausgefüllt. Bitte korrigiere dies!", 20981 - "Unable to find your profile Room. Please log in again!": "Dein Profil Raum konnte nicht gefunden werden. Bitte melde dich erneut an!", 20982 - "Loading": "Lade", 20983 - "Set an image title": "Setze den Bildtitel", 20984 - "Image Title": "Bildtitel", 20985 - "Description": "Beschreibung", 20986 - "Description Text of the current image": "Beschreibung des aktuellen Bildes", 20987 - "Image Tags": "Schlagwörter des Bildes", 20988 - "Enter tags (Separate with a comma)": "Füge Schlagwörter hinzu (Trenne diese mit einem Komma)", 20989 - "License": "Lizenz", 20990 - "Select an Creative Commons License": "Wähle eine Creative Commons Lizenz", 20991 - "Mature/NSFW Content?": "Erwachsener/NSFW-Inhalt?", 20992 - "Select Yes or No": "Wähle Ja oder Nein", 20993 - "No": "Nein", 20994 - "Yes": "Ja", 20995 - "Submit Posts": "Beiträge einreichen", 20996 - "Next Image": "Nächstes Bild", 20997 - "Previous Image": "Vorheriges Bild", 20998 - "Drag 'n' drop some images here, or click to select images": "Ziehe Bilder hierher oder klicke hier, um Bilder auszuwählen", 20999 - "Home": "Startseite", 21000 - "Login": "Anmeldung", 21001 - "Log In": "Anmelden", 21002 - "Use custom Server": "Nutze eigenen Server", 21003 - "Forgot Password": "Passwort vergessen", 21004 - "Homeserver:": "Heimserver:", 21005 - "Homeserver": "Heimserver", 21006 - "Username:": "Benutzername:", 21007 - "Username": "Benutzername", 21008 - "Password:": "Passwort:", 21009 - "Password": "Passwort", 21010 - "Post not Found": "Beitrag nicht gefunden", 21011 - "The Post you wanted does not exist!": "Der Beitrag den du gesucht hast existiert nicht!", 21012 - "Create a full profile? (Cant be done later currently. This is WIP)": "Vollständiges Profil erstellen? (Kann aktuell nicht später gemacht werden. Dies ist noch in der Entwicklung)", 21013 - "User not Found": "Benutzer nicht gefunden", 21014 - "The User you wanted does not exist!": "Der Benutzer den du gesucht hast existiert nicht!", 21015 - "Set a displayname": "Setze einen Anzeigenamen", 21016 - "Gallery": "Galerie", 21017 - "About": "Über", 21018 - "Follow": "Folgen", 21019 - "About {{displayname}}": "Über {{displayname}}", 21020 - "More": "Mehr", 21021 - "Pronouns": "Pronomen", 21022 - "Follow me on": "Folge mir auf", 21023 - "Submit Post": "Beitrag einreichen", 21024 - "Submit Image": "Bild einreichen" 21025 -} 21026 diff --git a/public/locales/en/common.json b/public/locales/en/common.json 21027 deleted file mode 100644 21028 index edb0946..0000000 21029 --- a/public/locales/en/common.json 21030 +++ /dev/null 21031 @@ -1,61 +0,0 @@ 21032 -{ 21033 - "Github": "Github", 21034 - "Matrix": "Matrix", 21035 - "Developer": "Developer", 21036 - "Search & Discover": "Search & Discover", 21037 - "Join": "Join", 21038 - "Log in": "Log in", 21039 - "Profile": "Profile", 21040 - "Logout": "Logout", 21041 - "Submit": "Submit", 21042 - "Setup Account": "Setup Account", 21043 - "Error": "Error", 21044 - "You are not logged in!": "You are not logged in!", 21045 - "You did not fill the required fields for all images. Please fix this!": "You did not fill the required fields for all images. Please fix this!", 21046 - "Unable to find your profile Room. Please log in again!": "Unable to find your profile Room. Please log in again!", 21047 - "Loading": "Loading", 21048 - "Image Title": "Image Title", 21049 - "Set an image title": "Set an image title", 21050 - "Description": "Description", 21051 - "Description Text of the current image": "Description Text of the current image", 21052 - "Image Tags": "Image Tags", 21053 - "Enter tags (Separate with a comma)": "Enter tags (Separate with a comma)", 21054 - "License": "License", 21055 - "Select an Creative Commons License": "Select an Creative Commons License", 21056 - "Mature/NSFW Content?": "Mature/NSFW Content?", 21057 - "Select Yes or No": "Select Yes or No", 21058 - "No": "No", 21059 - "Yes": "Yes", 21060 - "Submit Posts": "Submit Posts", 21061 - "Next Image": "Next Image", 21062 - "Previous Image": "Previous Image", 21063 - "Drag 'n' drop some images here, or click to select images": "Drag 'n' drop some images here, or click to select images", 21064 - "Home": "Home", 21065 - "Login": "Login", 21066 - "Log In": "Log In", 21067 - "Use custom Server": "Use custom Server", 21068 - "Forgot Password": "Forgot Password", 21069 - "Homeserver:": "Homeserver:", 21070 - "Homeserver": "Homeserver", 21071 - "Username:": "Username:", 21072 - "Username": "Username", 21073 - "Password:": "Password:", 21074 - "Password": "Password", 21075 - "Create a full profile? (Cant be done later currently. This is WIP)": "Create a full profile? (Cant be done later currently. This is WIP)", 21076 - "Post not Found": "Post not Found", 21077 - "The Post you wanted does not exist!": "The Post you wanted does not exist!", 21078 - "License:": "License:", 21079 - "User not Found": "User not Found", 21080 - "The User you wanted does not exist!": "The User you wanted does not exist!", 21081 - "Set a displayname": "Set a displayname", 21082 - "Gallery": "Gallery", 21083 - "About": "About", 21084 - "Follow": "Follow", 21085 - "About {{displayname}}": "About {{displayname}}", 21086 - "More": "More", 21087 - "Pronouns": "Pronouns", 21088 - "Follow me on": "Follow me on", 21089 - "My Bio": "My Bio", 21090 - "Submit Post": "Submit Post", 21091 - "Submit Image": "Submit Image" 21092 -} 21093 \ No newline at end of file 21094 diff --git a/public/tick.svg b/public/tick.svg 21095 new file mode 100644 21096 index 0000000..ef3d100 21097 --- /dev/null 21098 +++ b/public/tick.svg 21099 @@ -0,0 +1,4 @@ 21100 +<svg viewBox="0 0 16 16" fill="white" xmlns="http://www.w3.org/2000/svg"> 21101 + <path 21102 + d="M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z" /> 21103 +</svg> 21104 \ No newline at end of file 21105 diff --git a/scripts/setup.mjs b/scripts/setup.mjs 21106 new file mode 100644 21107 index 0000000..00ce392 21108 --- /dev/null 21109 +++ b/scripts/setup.mjs 21110 @@ -0,0 +1,147 @@ 21111 +import Olm from '@matrix-org/olm'; 21112 +global.Olm = Olm; 21113 + 21114 +import inquirer from 'inquirer'; 21115 +import { 21116 + MemoryCryptoStore, 21117 + MemoryStore, 21118 + createClient, 21119 + Preset, 21120 + EventType, 21121 + RoomCreateTypeField, 21122 + RoomType, 21123 + UNSTABLE_MSC3088_PURPOSE, 21124 + UNSTABLE_MSC3089_TREE_SUBTYPE, 21125 + UNSTABLE_MSC3088_ENABLED 21126 +} from 'matrix-js-sdk'; 21127 +import { MEGOLM_ALGORITHM } from 'matrix-js-sdk/lib/crypto/olmlib.js'; 21128 +import { DEFAULT_TREE_POWER_LEVELS_TEMPLATE } from 'matrix-js-sdk/lib/models/MSC3089TreeSpace.js'; 21129 +import { AutoDiscovery } from 'matrix-js-sdk/lib/autodiscovery.js'; 21130 +import fs from 'fs'; 21131 + 21132 +console.info(`Welcome to setting up your Matrix Art instance. 21133 +This will generate the required things for your instance. 21134 +It will generate the room directory and the config file. 21135 +You will need a user account that is the admin of your instance. We recommend to use a mjolnir. 21136 +You will need to provide the following information:`); 21137 +const replies = await inquirer.prompt([ 21138 + { 21139 + type: 'input', 21140 + name: 'instance_name', 21141 + message: 'What is the instance Name?', 21142 + default: "Matrix Art", 21143 + }, 21144 + { 21145 + type: 'input', 21146 + name: 'homeserver', 21147 + message: 'What is the instance Homeserver?', 21148 + default: undefined, 21149 + }, 21150 + { 21151 + type: 'input', 21152 + name: 'admin_user', 21153 + message: 'What is the admin user\'s full MXID?', 21154 + default: undefined, 21155 + }, 21156 + { 21157 + type: 'password', 21158 + name: 'admin_password', 21159 + message: 'What is the admin user\'s password? (not going to be stored)', 21160 + default: undefined, 21161 + }, 21162 +]); 21163 + 21164 +// Check inputs 21165 +console.info("Checking inputs..."); 21166 +if (replies.homeserver === undefined || replies.admin_user === undefined || replies.admin_password === undefined || replies.instance_name === undefined) { 21167 + console.error('Please fill in all fields'); 21168 + process.exit(1); 21169 +} 21170 +if (replies.homeserver.lastIndexOf('https://', 0) !== 0 && replies.homeserver.lastIndexOf('http://', 0) !== 0) { 21171 + console.error('Please enter a valid homeserver url'); 21172 + process.exit(1); 21173 +} 21174 +if (replies.admin_user.lastIndexOf('@', 0) !== 0) { 21175 + console.error('Please enter a valid admin user'); 21176 + process.exit(1); 21177 +} 21178 + 21179 +await Olm.init(); 21180 + 21181 +// Matrix stuff 21182 +console.info("Connecting to homeserver..."); 21183 +const client = createClient({ 21184 + useAuthorizationHeader: true, 21185 + baseUrl: replies.homeserver, 21186 + userId: replies.admin_user, 21187 + deviceId: "MatrixArtSetup", 21188 + sessionStore: new MemoryStore(), 21189 + cryptoStore: new MemoryCryptoStore() 21190 +}); 21191 + 21192 +await client.loginWithPassword(replies.admin_user, replies.admin_password); 21193 +await client.initCrypto(); 21194 +await client.startClient(); 21195 + 21196 +// Create room 21197 +console.info("Creating root room..."); 21198 +await client.createRoom({ 21199 + name: replies.instance_name, 21200 + preset: Preset.PublicChat, 21201 + power_level_content_override: { 21202 + ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, 21203 + events: { 21204 + [EventType.SpaceChild]: 0, 21205 + }, 21206 + users: { 21207 + [client.getUserId()]: 100, 21208 + }, 21209 + }, 21210 + creation_content: { 21211 + [RoomCreateTypeField]: RoomType.Space, 21212 + }, 21213 + room_alias_name: replies.instance_name.replace(" ", "_"), 21214 + initial_state: [ 21215 + { 21216 + type: UNSTABLE_MSC3088_PURPOSE.name, 21217 + state_key: UNSTABLE_MSC3089_TREE_SUBTYPE.name, 21218 + content: { 21219 + [UNSTABLE_MSC3088_ENABLED.name]: true, 21220 + }, 21221 + }, 21222 + { 21223 + type: EventType.RoomEncryption, 21224 + state_key: "", 21225 + content: { 21226 + algorithm: MEGOLM_ALGORITHM, 21227 + }, 21228 + }, 21229 + { 21230 + type: EventType.RoomGuestAccess, 21231 + state_key: "", 21232 + content: { 21233 + guest_access: "can_join", 21234 + }, 21235 + }, 21236 + { 21237 + type: EventType.RoomHistoryVisibility, 21238 + state_key: "", 21239 + content: { 21240 + history_visibility: "world_readable", 21241 + }, 21242 + } 21243 + ], 21244 +}); 21245 + 21246 +const wellKnown = await AutoDiscovery.getRawClientConfig(replies.homeserver); 21247 + 21248 +// Write config 21249 +console.info("Writing config..."); 21250 +fs.writeFileSync('./.env.local', `VITE_MATRIX_SERVER_URL="${replies.homeserver}" 21251 +VITE_MATRIX_INSTANCE_ADMIN="${replies.admin_user}" 21252 +VITE_MATRIX_ROOT_FOLDER="#${replies.instance_name.replace(" ", "_")}:${wellKnown['m.homeserver']}")}"`); 21253 + 21254 +console.info("Your instance is ready! Have fun!"); 21255 +process.exit(0); 21256 + 21257 +//TODO: Allow upgrading the room with this script if the matrix art requirements change 21258 \ No newline at end of file 21259 diff --git a/src/app.tsx b/src/app.tsx 21260 new file mode 100644 21261 index 0000000..ab25585 21262 --- /dev/null 21263 +++ b/src/app.tsx 21264 @@ -0,0 +1,100 @@ 21265 +import { lazy, PureComponent, Suspense } from 'preact/compat'; 21266 +import { Home } from './pages/Home'; 21267 +import { Client } from './context'; 21268 +import { Header } from './components/header'; 21269 +import { MatrixClient } from './matrix/client'; 21270 + 21271 +// eslint-disable-next-line @typescript-eslint/ban-ts-comment 21272 +// @ts-ignore 21273 +import olmWasmPath from "@matrix-org/olm/olm.wasm?url"; 21274 +import OlmLegacy from '@matrix-org/olm/olm_legacy.js?url'; 21275 +import Olm from '@matrix-org/olm'; 21276 +import { Route, Routes } from 'react-router-dom'; 21277 + 21278 +const Join = lazy(() => import("./pages/Join")); 21279 + 21280 +type State = { 21281 + client?: MatrixClient; 21282 +}; 21283 + 21284 +export class App extends PureComponent<any, State> { 21285 + constructor() { 21286 + super(); 21287 + this.state = { 21288 + client: undefined 21289 + }; 21290 + } 21291 + 21292 + loadOlm(): Promise<void> { 21293 + /* Load Olm. We try the WebAssembly version first, and then the legacy */ 21294 + return Olm.init({ 21295 + locateFile: () => olmWasmPath, 21296 + }).then(() => { 21297 + console.log("Using WebAssembly Olm"); 21298 + }).catch((e) => { 21299 + console.log("Failed to load Olm: trying legacy version", e); 21300 + return new Promise((resolve, reject) => { 21301 + const s = document.createElement('script'); 21302 + s.src = OlmLegacy; // XXX: This should be cache-busted too 21303 + s.onload = resolve; 21304 + s.onerror = reject; 21305 + document.body.appendChild(s); 21306 + }).then(() => { 21307 + // Init window.Olm, ie. the one just loaded by the script tag, 21308 + // not 'Olm' which is still the failed wasm version. 21309 + return window.Olm.init(); 21310 + }).then(() => { 21311 + console.log("Using legacy Olm"); 21312 + }).catch((e) => { 21313 + console.log("Both WebAssembly and asm.js Olm failed!", e); 21314 + }); 21315 + }); 21316 + }; 21317 + 21318 + async loadMatrixClient() { 21319 + let client = await MatrixClient.new(); 21320 + // @ts-ignore its fine... 21321 + this.setState({ client }); 21322 + console.log("Client loaded"); 21323 + await this.state.client?.start(); 21324 + console.log("Client started"); 21325 + } 21326 + 21327 + async componentDidMount() { 21328 + try { 21329 + await this.loadOlm(); 21330 + console.log("Olm loaded"); 21331 + } catch { 21332 + console.log("Olm not loaded"); 21333 + } 21334 + await this.loadMatrixClient(); 21335 + } 21336 + 21337 + render() { 21338 + return ( 21339 + 21340 + 21341 + <Client.Provider value={ 21342 + this.state.client 21343 + }> 21344 + <Routes> 21345 + <Route path="/" element={<Home />} /> 21346 + <Route path="join" element={ 21347 + <Suspense fallback={ 21348 + <div class="flex flex-col"> 21349 + <header> 21350 + <Header /> 21351 + </header> 21352 + <main class="m-12 mt-6 flex items-center justify-center"> 21353 + <p class="text-lg text-data font-bold">Loading...</p> 21354 + </main> 21355 + </div> 21356 + }> 21357 + <Join /> 21358 + </Suspense> 21359 + } /> 21360 + </Routes> 21361 + </Client.Provider> 21362 + ); 21363 + } 21364 +} 21365 \ No newline at end of file 21366 diff --git a/src/components/header.tsx b/src/components/header.tsx 21367 new file mode 100644 21368 index 0000000..529bc8c 21369 --- /dev/null 21370 +++ b/src/components/header.tsx 21371 @@ -0,0 +1,34 @@ 21372 +import { Link } from "react-router-dom"; 21373 +import { PureComponent } from "preact/compat"; 21374 +import { Client } from "../context"; 21375 +import { MatrixClient } from "../matrix/client"; 21376 + 21377 +export class Header extends PureComponent { 21378 + render() { 21379 + const client: MatrixClient | undefined = this.context; 21380 + return ( 21381 + <div class="m-12 flex flex-col lg:flex-row items-center justify-between"> 21382 + <Link to="/"><img alt="Matrix Art" src="Logo_colored.svg" class="ease-in-out hover:scale-105 trandform transition-transform duration-300" /></Link> 21383 + <div class="flex items-center mt-8 lg:mt-0 flex-col sm:flex-row"> 21384 + <div class="flex items-center justify-between w-80 max-w-80 mx-6 ease-in-out hover:scale-105 trandform transition-transform duration-300"> 21385 + <div class="absolute ml-4"> 21386 + <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#AAB3CF"> 21387 + <path d="M0 0h24v24H0V0z" fill="none" /> 21388 + <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" /> 21389 + </svg> 21390 + </div> 21391 + <input class="search-bg shadow rounded-2xl border-0 py-3 px-4 pl-10 text-data" placeholder="Search"></input> 21392 + </div> 21393 + { 21394 + 21395 + !client?.isLoggedIn() ? <Link to="/join" class="text-white font-bold text-1xl logo-bg rounded-2xl py-3 px-12 shadow mt-4 sm:mt-0 transform transition-transform ease-in-out duration-300 hover:scale-105">Join</Link> : 21396 + <Link to="/" class="text-white font-bold text-1xl logo-bg rounded-2xl py-3 px-12 shadow mt-4 sm:mt-0 transform transition-transform ease-in-out duration-300 hover:scale-105">Post</Link> 21397 + } 21398 + 21399 + </div> 21400 + </div> 21401 + ); 21402 + } 21403 +} 21404 + 21405 +Header.contextType = Client; 21406 \ No newline at end of file 21407 diff --git a/src/components/hookHelpers.tsx b/src/components/hookHelpers.tsx 21408 new file mode 100644 21409 index 0000000..5959035 21410 --- /dev/null 21411 +++ b/src/components/hookHelpers.tsx 21412 @@ -0,0 +1,9 @@ 21413 +import { useNavigate } from "react-router-dom"; 21414 + 21415 +export const withNavigateHOC = (Component: any) => { 21416 + return (props: any) => { 21417 + const navigate = useNavigate(); 21418 + 21419 + return <Component navigate={navigate} {...props} />; 21420 + }; 21421 +}; 21422 \ No newline at end of file 21423 diff --git a/src/components/post.tsx b/src/components/post.tsx 21424 new file mode 100644 21425 index 0000000..37ff0d0 21426 --- /dev/null 21427 +++ b/src/components/post.tsx 21428 @@ -0,0 +1,49 @@ 21429 +import { PureComponent } from "preact/compat"; 21430 +import { PostData } from "../data/post"; 21431 +import { UserData } from "../data/user"; 21432 + 21433 +type Props = { 21434 + user: UserData; 21435 + post: PostData; 21436 +}; 21437 + 21438 +export class Post extends PureComponent<Props> { 21439 + constructor(props: Props) { 21440 + super(props); 21441 + } 21442 + render({ user, post }: Props) { 21443 + return ( 21444 + <div class="flex flex-col"> 21445 + <a id="gallery_click" href={post.content.file.url} class="w-full" target="_blank" rel="noreferrer"> 21446 + <img decoding="async" loading="lazy" class="rounded-3xl shadow object-cover transform transition-transform ease-in-out duration-300 hover:scale-105" src={post.content.file.url} /> 21447 + </a> 21448 + <div class="flex items-center justify-between py-4"> 21449 + <a class="flex items-center" href="#"> 21450 + <img class="w-11 h-11 rounded-full mr-4 border-2 border-[#AAB3CF]" src={user.avatar_url} /> 21451 + <p class="text-data shadow text-lg font-medium">{user.display_name}</p> 21452 + </a> 21453 + <div class="flex text-data text-lg items-center"> 21454 + <a class="mr-4 flex items-center" href="#"> 21455 + <span class="mr-2"> 21456 + <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#AAB3CF"> 21457 + <path d="M0 0h24v24H0V0z" fill="none" /> 21458 + <path d="M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z" /> 21459 + </svg> 21460 + </span> 21461 + <span>5</span> 21462 + </a> 21463 + <a class="flex items-center" href="#"> 21464 + <span class="mr-2"> 21465 + <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#AAB3CF"> 21466 + <path d="M0 0h24v24H0V0z" fill="none" /> 21467 + <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z" /> 21468 + </svg> 21469 + </span> 21470 + <span>11</span> 21471 + </a> 21472 + </div> 21473 + </div> 21474 + </div> 21475 + ); 21476 + } 21477 +} 21478 \ No newline at end of file 21479 diff --git a/src/context.ts b/src/context.ts 21480 new file mode 100644 21481 index 0000000..be0c620 21482 --- /dev/null 21483 +++ b/src/context.ts 21484 @@ -0,0 +1,4 @@ 21485 +import { MatrixClient } from "./matrix/client"; 21486 +import { createContext } from "preact/compat"; 21487 + 21488 +export const Client = createContext<MatrixClient | undefined>(undefined); 21489 \ No newline at end of file 21490 diff --git a/src/data/post.ts b/src/data/post.ts 21491 new file mode 100644 21492 index 0000000..f7fcd41 21493 --- /dev/null 21494 +++ b/src/data/post.ts 21495 @@ -0,0 +1,10 @@ 21496 +import { ImageEvent } from "../matrix/events/ImageEvent"; 21497 + 21498 +export class PostData { 21499 + public readonly event_id: string; 21500 + public readonly content: ImageEvent; 21501 + constructor(event_id: string, content: ImageEvent) { 21502 + this.event_id = event_id; 21503 + this.content = content; 21504 + } 21505 +} 21506 \ No newline at end of file 21507 diff --git a/src/data/user.ts b/src/data/user.ts 21508 new file mode 100644 21509 index 0000000..2bfd7cc 21510 --- /dev/null 21511 +++ b/src/data/user.ts 21512 @@ -0,0 +1,11 @@ 21513 +export class UserData { 21514 + public readonly mxid: string; 21515 + public readonly display_name: string; 21516 + public readonly avatar_url: string; 21517 + 21518 + constructor(mxid: string, display_name: string, avatar_url: string) { 21519 + this.mxid = mxid; 21520 + this.display_name = display_name; 21521 + this.avatar_url = avatar_url; 21522 + } 21523 +} 21524 \ No newline at end of file 21525 diff --git a/src/env.d.ts b/src/env.d.ts 21526 new file mode 100644 21527 index 0000000..226ee1f 21528 --- /dev/null 21529 +++ b/src/env.d.ts 21530 @@ -0,0 +1,11 @@ 21531 +/// <reference types="vite/client" /> 21532 + 21533 +interface ImportMetaEnv { 21534 + readonly VITE_MATRIX_SERVER_URL: string; 21535 + readonly VITE_MATRIX_ROOT_FOLDER: string; 21536 + readonly VITE_MATRIX_INSTANCE_ADMIN: string; 21537 +} 21538 + 21539 +interface ImportMeta { 21540 + readonly env: ImportMetaEnv; 21541 +} 21542 diff --git a/src/index.css b/src/index.css 21543 new file mode 100644 21544 index 0000000..fd350dd 21545 --- /dev/null 21546 +++ b/src/index.css 21547 @@ -0,0 +1,116 @@ 21548 +@tailwind base; 21549 +@tailwind components; 21550 +@tailwind utilities; 21551 + 21552 +@supports not (font-variation-settings: normal) { 21553 + @font-face { 21554 + font-family: "Inter"; 21555 + font-style: normal; 21556 + font-weight: 100; 21557 + font-display: optional; 21558 + src: url(/fonts/Inter-Thin.woff2) format("woff2") 21559 + } 21560 + 21561 + @font-face { 21562 + font-family: "Inter"; 21563 + font-style: normal; 21564 + font-weight: 200; 21565 + font-display: optional; 21566 + src: url(/fonts/Inter-ExtraLight.woff2) format("woff2") 21567 + } 21568 + 21569 + @font-face { 21570 + font-family: "Inter"; 21571 + font-style: normal; 21572 + font-weight: 300; 21573 + font-display: optional; 21574 + src: url(/fonts/Inter-Light.woff2) format("woff2") 21575 + } 21576 + 21577 + @font-face { 21578 + font-family: "Inter"; 21579 + font-style: normal; 21580 + font-weight: 400; 21581 + font-display: optional; 21582 + src: url(/fonts/Inter-Regular.woff2) format("woff2") 21583 + } 21584 + 21585 + @font-face { 21586 + font-family: "Inter"; 21587 + font-style: normal; 21588 + font-weight: 500; 21589 + font-display: optional; 21590 + src: url(/fonts/Inter-Medium.woff2) format("woff2") 21591 + } 21592 + 21593 + @font-face { 21594 + font-family: "Inter"; 21595 + font-style: normal; 21596 + font-weight: 600; 21597 + font-display: optional; 21598 + src: url(/fonts/Inter-SemiBold.woff2) format("woff2") 21599 + } 21600 + 21601 + @font-face { 21602 + font-family: "Inter"; 21603 + font-style: normal; 21604 + font-weight: 700; 21605 + font-display: optional; 21606 + src: url(/fonts/Inter-Bold.woff2) format("woff2") 21607 + } 21608 + 21609 + @font-face { 21610 + font-family: "Inter"; 21611 + font-style: normal; 21612 + font-weight: 800; 21613 + font-display: optional; 21614 + src: url(/fonts/Inter-ExtraBold.woff2) format("woff2") 21615 + } 21616 + 21617 + @font-face { 21618 + font-family: "Inter"; 21619 + font-style: normal; 21620 + font-weight: 900; 21621 + font-display: optional; 21622 + src: url(/fonts/Inter-Black.woff2) format("woff2") 21623 + } 21624 +} 21625 + 21626 +@supports (font-variation-settings: normal) { 21627 + @font-face { 21628 + font-family: "Inter"; 21629 + font-style: normal; 21630 + font-weight: 100 900; 21631 + font-display: optional; 21632 + src: url(/fonts/Inter-VariableFont_slnt,wght.woff2) format("woff2 supports variations"), 21633 + url(/fonts/Inter-VariableFont_slnt,wght.woff2) format("woff2-variations"); 21634 + } 21635 +} 21636 + 21637 + 21638 +html, body, #app { 21639 + margin: 0; 21640 + @apply h-full; 21641 +} 21642 + 21643 +body { 21644 + background-color:#424555; 21645 +} 21646 + 21647 +/*Logo gradient*/ 21648 +.logo-bg { 21649 + background: linear-gradient(90deg, #751796 -58.41%, #FE7223 152.47%); 21650 +} 21651 + 21652 +/*Search bg gradient*/ 21653 +.search-bg { 21654 + background: linear-gradient(90deg, rgba(196, 196, 196, 0.11) -33.43%, rgba(196, 196, 196, 0.07) 184.14%); 21655 +} 21656 + 21657 +/*data text*/ 21658 +.text-data { 21659 + color: #AAB3CF; 21660 +} 21661 +.placeholder-data::placeholder { 21662 + color: #AAB3CF; 21663 +} 21664 \ No newline at end of file 21665 diff --git a/src/main.tsx b/src/main.tsx 21666 new file mode 100644 21667 index 0000000..489239a 21668 --- /dev/null 21669 +++ b/src/main.tsx 21670 @@ -0,0 +1,19 @@ 21671 +import { render } from 'preact'; 21672 +import { BrowserRouter } from 'react-router-dom'; 21673 +import { App } from './app'; 21674 +import './index.css'; 21675 + 21676 + 21677 +if (import.meta.env.DEV) { 21678 + // Must use require here as import statements are only allowed 21679 + // to exist at top-level. 21680 + // @ts-ignore No types 21681 + import("preact/debug"); 21682 +} 21683 + 21684 +render( 21685 + <BrowserRouter basename={`${import.meta.env.BASE_URL}`}> 21686 + <App /> 21687 + </BrowserRouter>, 21688 + document.querySelector('#app')! 21689 +); 21690 \ No newline at end of file 21691 diff --git a/src/matrix/client.ts b/src/matrix/client.ts 21692 new file mode 100644 21693 index 0000000..3e2dc01 21694 --- /dev/null 21695 +++ b/src/matrix/client.ts 21696 @@ -0,0 +1,385 @@ 21697 +import { 21698 + createClient, 21699 + EventTimeline, 21700 + EventType, 21701 + IndexedDBCryptoStore, 21702 + IndexedDBStore, 21703 + MatrixClient as MatrixClientSdk, 21704 + MatrixEvent, MatrixEventEvent, 21705 + Preset, 21706 + RoomCreateTypeField, 21707 + RoomType, 21708 + UNSTABLE_MSC3088_ENABLED, 21709 + UNSTABLE_MSC3088_PURPOSE, 21710 + UNSTABLE_MSC3089_TREE_SUBTYPE 21711 +} from 'matrix-js-sdk'; 21712 +// @ts-ignore 21713 +import { WebStorageSessionStore } from "matrix-js-sdk/lib/store/session/webstorage"; 21714 +import { 21715 + MEGOLM_ALGORITHM 21716 +} from 'matrix-js-sdk/lib/crypto/olmlib'; 21717 +import { 21718 + DEFAULT_TREE_POWER_LEVELS_TEMPLATE, 21719 + MSC3089TreeSpace 21720 +} from 'matrix-js-sdk/lib/models/MSC3089TreeSpace'; 21721 +import { 21722 + M_IMAGE 21723 +} from './events/ImageEvent'; 21724 +// @ts-ignore - `.ts` is needed here to make TS happy 21725 +import IndexedDBWorker from "./workers/indexeddb.worker.ts?worker"; 21726 + 21727 +export class MatrixClient { 21728 + private events: MatrixEvent[] = []; 21729 + private currentUserDirectory?: MSC3089TreeSpace; 21730 + private rootDirectory?: MSC3089TreeSpace; 21731 + private constructor(private client: MatrixClientSdk) { } 21732 + 21733 + public static async new(): Promise<MatrixClient> { 21734 + // @ts-ignore Known to be a thing 21735 + if (!global.Olm) { 21736 + console.error( 21737 + "global.Olm does not seem to be present." 21738 + + " Did you forget to add olm in the out directory?" 21739 + ); 21740 + } 21741 + 21742 + let server; 21743 + if (window.localStorage.getItem("server") !== null) { 21744 + server = window.localStorage.getItem("server"); 21745 + } else { 21746 + server = import.meta.env.VITE_MATRIX_SERVER_URL; 21747 + } 21748 + 21749 + 21750 + // TODO user id and token if logged in instead of new guest all the time 21751 + if (!server) { 21752 + throw new Error("No matrix server URL defined"); 21753 + } 21754 + 21755 + let guest_client; 21756 + if (window.localStorage.getItem("mxid_guest") !== null) { 21757 + const mxid = window.localStorage.getItem("mxid_guest") ?? undefined; 21758 + const token = window.localStorage.getItem("access_token_guest") ?? undefined; 21759 + const device_id = window.localStorage.getItem("device_id_guest") ?? undefined; 21760 + 21761 + guest_client = createClient({ 21762 + useAuthorizationHeader: true, 21763 + baseUrl: server, 21764 + userId: mxid, 21765 + accessToken: token, 21766 + deviceId: device_id, 21767 + sessionStore: new WebStorageSessionStore(window.localStorage), 21768 + // @ts-ignore - The function currently comes with incorrect types 21769 + store: new IndexedDBStore({ 21770 + indexedDB: window.indexedDB, 21771 + dbName: "matrix-art-sync:guest", 21772 + localStorage: window.localStorage, 21773 + workerFactory: () => new IndexedDBWorker(), 21774 + }), 21775 + cryptoStore: new IndexedDBCryptoStore( 21776 + window.indexedDB, "matrix-art:crypto", 21777 + ), 21778 + }); 21779 + guest_client.setGuest(true); 21780 + } { 21781 + 21782 + const tmpClient = createClient(import.meta.env.VITE_MATRIX_SERVER_URL); 21783 + // @ts-ignore - The function currently comes with incorrect types 21784 + const { user_id, device_id, access_token } = await tmpClient.registerGuest(); 21785 + 21786 + guest_client = createClient({ 21787 + useAuthorizationHeader: true, 21788 + baseUrl: server, 21789 + userId: user_id, 21790 + accessToken: access_token, 21791 + deviceId: device_id, 21792 + sessionStore: new WebStorageSessionStore(window.localStorage), 21793 + // @ts-ignore - The function currently comes with incorrect types 21794 + store: new IndexedDBStore({ 21795 + indexedDB: window.indexedDB, 21796 + dbName: "matrix-art-sync:guest", 21797 + localStorage: window.localStorage, 21798 + workerFactory: () => new IndexedDBWorker(), 21799 + }), 21800 + cryptoStore: new IndexedDBCryptoStore( 21801 + window.indexedDB, "matrix-art:crypto", 21802 + ), 21803 + }); 21804 + guest_client.setGuest(true); 21805 + window.localStorage.setItem("mxid_guest", user_id); 21806 + window.localStorage.setItem("access_token_guest", access_token); 21807 + window.localStorage.setItem("device_id_guest", device_id); 21808 + window.localStorage.setItem("server", server); 21809 + } 21810 + 21811 + let client; 21812 + if (window.localStorage.getItem("mxid") !== null) { 21813 + const mxid = window.localStorage.getItem("mxid") ?? undefined; 21814 + const token = window.localStorage.getItem("access_token") ?? undefined; 21815 + const device_id = window.localStorage.getItem("device_id") ?? undefined; 21816 + 21817 + client = createClient({ 21818 + useAuthorizationHeader: true, 21819 + baseUrl: server, 21820 + userId: mxid, 21821 + accessToken: token, 21822 + deviceId: device_id, 21823 + sessionStore: new WebStorageSessionStore(window.localStorage), 21824 + // @ts-ignore - The function currently comes with incorrect types 21825 + store: new IndexedDBStore({ 21826 + indexedDB: window.indexedDB, 21827 + dbName: "matrix-art-sync:guest", 21828 + localStorage: window.localStorage, 21829 + workerFactory: () => new IndexedDBWorker(), 21830 + }), 21831 + cryptoStore: new IndexedDBCryptoStore( 21832 + window.indexedDB, "matrix-art:crypto", 21833 + ), 21834 + }); 21835 + client.setGuest(false); 21836 + } 21837 + 21838 + return new MatrixClient(client ?? guest_client); 21839 + } 21840 + 21841 + public isLoggedIn(): boolean { 21842 + return this.client.isLoggedIn() && !this.client.isGuest(); 21843 + } 21844 + 21845 + public async start(): Promise<void> { 21846 + //TODO Setup handlers 21847 + this.client.on(MatrixEventEvent.Decrypted, (event: MatrixEvent, err?: Error) => { 21848 + const ext_ev = event.unstableExtensibleEvent; 21849 + if (ext_ev?.isEquivalentTo(M_IMAGE)) { 21850 + this.events.push(event); 21851 + } 21852 + }); 21853 + 21854 + console.log("start"); 21855 + await this.client.store.startup(); 21856 + await this.client.initCrypto(); 21857 + await this.client.startClient(); 21858 + 21859 + // Load the root 21860 + const room = await this.client.joinRoom(import.meta.env.VITE_MATRIX_ROOT_FOLDER); 21861 + // FIXME: This will break if the server is slower 21862 + await delay(1000); 21863 + this.rootDirectory = new MSC3089TreeSpace(this.client, room.roomId); 21864 + console.log("started"); 21865 + } 21866 + 21867 + public async register(homeserver: string = import.meta.env.VITE_MATRIX_SERVER_URL, username: string, password: string, createProfile: boolean = false) { 21868 + this.client.stopClient(); 21869 + this.client = createClient({ 21870 + useAuthorizationHeader: true, 21871 + baseUrl: homeserver, 21872 + userId: username, 21873 + deviceId: "Matrix Art", 21874 + sessionStore: new WebStorageSessionStore(window.localStorage), 21875 + // @ts-ignore - The function currently comes with incorrect types 21876 + store: new IndexedDBStore({ 21877 + indexedDB: window.indexedDB, 21878 + dbName: "matrix-art-sync:loggedin", 21879 + localStorage: window.localStorage, 21880 + workerFactory: () => new IndexedDBWorker(), 21881 + }), 21882 + cryptoStore: new IndexedDBCryptoStore( 21883 + window.indexedDB, "matrix-art:crypto", 21884 + ), 21885 + }); 21886 + 21887 + await this.client.register(username, password, null, { type: "m.login.dummy" }); 21888 + 21889 + window.localStorage.setItem("server", homeserver); 21890 + window.localStorage.setItem("mxid", username); 21891 + window.localStorage.setItem("access_token", this.client.getAccessToken()); 21892 + window.localStorage.setItem("device_id", "Matrix Art"); 21893 + await this.start(); 21894 + if (createProfile) { 21895 + const subdirs = this.rootDirectory?.getDirectories(); 21896 + const id = this.client.getUserId().replace(":", "_"); 21897 + if (subdirs?.some((directory) => directory.room.name === id)) { 21898 + this.rootDirectory = subdirs?.find((directory) => directory.room.name === id); 21899 + } else { 21900 + await this.createProfileFolder(); 21901 + } 21902 + } 21903 + } 21904 + 21905 + // Login and create the profile if wanted 21906 + public async login(homeserver: string, username: string, password: string, createProfile: boolean = false): Promise<void> { 21907 + this.client.stopClient(); 21908 + this.client = createClient({ 21909 + useAuthorizationHeader: true, 21910 + baseUrl: homeserver, 21911 + userId: username, 21912 + deviceId: "Matrix Art", 21913 + sessionStore: new WebStorageSessionStore(window.localStorage), 21914 + // @ts-ignore - The function currently comes with incorrect types 21915 + store: new IndexedDBStore({ 21916 + indexedDB: window.indexedDB, 21917 + dbName: "matrix-art-sync:loggedin", 21918 + localStorage: window.localStorage, 21919 + workerFactory: () => new IndexedDBWorker(), 21920 + }), 21921 + cryptoStore: new IndexedDBCryptoStore( 21922 + window.indexedDB, "matrix-art:crypto", 21923 + ), 21924 + }); 21925 + await this.client.loginWithPassword(username, password); 21926 + 21927 + window.localStorage.setItem("server", homeserver); 21928 + window.localStorage.setItem("mxid", username); 21929 + window.localStorage.setItem("access_token", this.client.getAccessToken()); 21930 + window.localStorage.setItem("device_id", "Matrix Art"); 21931 + await this.start(); 21932 + if (createProfile) { 21933 + const subdirs = this.rootDirectory?.getDirectories(); 21934 + console.log(subdirs); 21935 + const id = this.client.getUserId().replace(":", "_"); 21936 + if (subdirs?.some((directory) => directory.room.name === id)) { 21937 + this.rootDirectory = subdirs?.find((directory) => directory.room.name === id); 21938 + } else { 21939 + await this.createProfileFolder(); 21940 + } 21941 + } 21942 + } 21943 + 21944 + // creates the profile 21945 + private async createProfileFolder() { 21946 + if (this.client.isGuest()) { 21947 + throw new Error("Cannot create a file tree space as a guest"); 21948 + } 21949 + // Load the root as client changed 21950 + const room = await this.client.joinRoom(import.meta.env.VITE_MATRIX_ROOT_FOLDER); 21951 + await delay(1000); 21952 + this.rootDirectory = new MSC3089TreeSpace(this.client, room.roomId); 21953 + // Create the user folder and add it to the top folder 21954 + const id = this.client.getUserId().replace(":", "_"); 21955 + this.currentUserDirectory = await this.createPublicSubDirectory(this.rootDirectory, id); 21956 + // Create the public timeline for the user. We dont need it saved as we can get it again later using the users dir. 21957 + await this.createPublicSubDirectory(this.currentUserDirectory, "Timeline"); 21958 + } 21959 + 21960 + /** 21961 + * Creates a new file tree space with the given name. The client will pick 21962 + * defaults for how it expects to be able to support the remaining API offered 21963 + * by the returned class. 21964 + * 21965 + * Note that this is UNSTABLE and may have breaking changes without notice. 21966 + * @param {string} name The name of the tree space. 21967 + * @returns {Promise<MSC3089TreeSpace>} Resolves to the created space. 21968 + * 21969 + * This is taken from https://github.com/matrix-org/matrix-js-sdk/blob/d6f1c6cfdc5a4f3d7b4ec67fe9f4d89d7319d8f7/src/client.ts#L8776 21970 + * License of the original file: Apache-2.0 21971 + */ 21972 + public async createPublicFileTree(name: string): Promise<MSC3089TreeSpace> { 21973 + if (this.client.isGuest()) { 21974 + throw new Error("Cannot create a file tree space as a guest"); 21975 + } 21976 + const { room_id: roomId } = await this.client.createRoom({ 21977 + name: name, 21978 + preset: Preset.PublicChat, 21979 + power_level_content_override: { 21980 + ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, 21981 + users: { 21982 + // We want to be able to moderate this as the instance admin for legal reasons 21983 + [import.meta.env.VITE_MATRIX_INSTANCE_ADMIN]: 100, 21984 + // We initially need to use 100 to be able to create the room... 21985 + [this.client.getUserId()]: 100, 21986 + }, 21987 + }, 21988 + invite: [ 21989 + import.meta.env.VITE_MATRIX_INSTANCE_ADMIN, 21990 + ], 21991 + creation_content: { 21992 + [RoomCreateTypeField]: RoomType.Space, 21993 + }, 21994 + initial_state: [ 21995 + { 21996 + type: UNSTABLE_MSC3088_PURPOSE.name, 21997 + state_key: UNSTABLE_MSC3089_TREE_SUBTYPE.name, 21998 + content: { 21999 + [UNSTABLE_MSC3088_ENABLED.name]: true, 22000 + }, 22001 + }, 22002 + { 22003 + type: EventType.RoomEncryption, 22004 + state_key: "", 22005 + content: { 22006 + algorithm: MEGOLM_ALGORITHM, 22007 + }, 22008 + }, 22009 + { 22010 + type: EventType.RoomGuestAccess, 22011 + state_key: "", 22012 + content: { 22013 + guest_access: "can_join", 22014 + }, 22015 + }, 22016 + { 22017 + type: EventType.RoomHistoryVisibility, 22018 + state_key: "", 22019 + content: { 22020 + history_visibility: "world_readable", 22021 + }, 22022 + } 22023 + ], 22024 + }); 22025 + // Demote ourself 22026 + const room = this.client.getRoom(roomId); 22027 + const powerLevelEvent = room?.getLiveTimeline().getState(EventTimeline.FORWARDS).getStateEvents(EventType.RoomPowerLevels, ""); 22028 + if (!powerLevelEvent) { 22029 + throw new Error("Failed to find PL event"); 22030 + } 22031 + await this.client.setPowerLevel(roomId, this.client.getUserId(), 50, powerLevelEvent); 22032 + return new MSC3089TreeSpace(this.client, roomId); 22033 + } 22034 + 22035 + /** 22036 + * Creates a directory under this tree space, represented as another tree space. 22037 + * @param {string} name The name for the directory. 22038 + * @returns {Promise<MSC3089TreeSpace>} Resolves to the created directory. 22039 + * 22040 + * This is taken from https://github.com/matrix-org/matrix-js-sdk/blob/feb83ba161c32c0519613b88027f573e22efa3aa/src/models/MSC3089TreeSpace.ts#L226 22041 + * License of the original file: Apache-2.0 22042 + */ 22043 + public async createPublicSubDirectory(topdirectory: MSC3089TreeSpace, name: string): Promise<MSC3089TreeSpace> { 22044 + const directory = await this.createPublicFileTree(name); 22045 + 22046 + await this.client.sendStateEvent(topdirectory.roomId, EventType.SpaceChild, { 22047 + via: [this.client.getDomain()], 22048 + }, directory.roomId); 22049 + 22050 + await this.client.sendStateEvent(directory.roomId, EventType.SpaceParent, { 22051 + via: [this.client.getDomain()], 22052 + }, topdirectory.roomId); 22053 + 22054 + return directory; 22055 + } 22056 +} 22057 + 22058 +/* Technical folder layout (https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/trees/proposals/3089-file-tree-structures.md) 22059 +Idea by TravisR 22060 + 22061 +Note that every user can create a user folder or delete themself from it again. 22062 +Every user owns their own user folder. 22063 + 22064 +If possible users shall never remove relations to other users folders. 22065 + 22066 ++ 📂 Matrix Art User Dir (public, m.space) 22067 + + 📂 User A (public, m.space) 22068 + + 📂 Timeline (m.space) 22069 + - 📄 Image A 22070 + = Room A (invite protected, <no type>) 22071 + - 📄 Image B (counted as under the timeline) 22072 + + 📂 User B (public, m.space) 22073 + + 📂 Timeline (m.space) 22074 + - 📄 Image C 22075 + = Room B (invite protected, <no type>) 22076 + - 📄 Image D (counted as under the timeline) 22077 +*/ 22078 + 22079 +function delay(time: number): Promise<void> { 22080 + return new Promise(resolve => setTimeout(resolve, time)); 22081 +} 22082 \ No newline at end of file 22083 diff --git a/src/matrix/events/ImageEvent.ts b/src/matrix/events/ImageEvent.ts 22084 new file mode 100644 22085 index 0000000..5b17a37 22086 --- /dev/null 22087 +++ b/src/matrix/events/ImageEvent.ts 22088 @@ -0,0 +1,171 @@ 22089 +import { 22090 + ExtensibleEvents, 22091 + IPartialEvent, 22092 + Optional, 22093 + UnstableValue, 22094 + EventType, 22095 + isEventTypeSame, 22096 + isProvided, 22097 + M_TEXT, 22098 + InvalidEventError, 22099 + isOptionalAString, 22100 + NamespacedValue, 22101 + M_MESSAGE_EVENT_CONTENT, 22102 + EitherAnd, 22103 + M_TEXT_EVENT, 22104 + ExtensibleEvent 22105 +} from "matrix-events-sdk"; 22106 + 22107 +export const M_IMAGE = new UnstableValue("m.image", "org.matrix.msc1767.image"); 22108 +export const M_FILE = new UnstableValue("m.file", "org.matrix.msc1767.file"); 22109 +export const M_THUMBNAIL = new UnstableValue("m.thumbnail", "org.matrix.msc1767.thumbnail"); 22110 +export const M_BLURHASH = new UnstableValue("blurhash", "xyz.amorgan.blurhash"); 22111 +export const MATRIX_ART_DESCRIPTION = new NamespacedValue("matrixart.description"); 22112 +export const MATRIX_ART_TAGS = new NamespacedValue("matrixart.tags"); 22113 +export const MATRIX_ART_NSFW = new NamespacedValue("matrixart.nsfw"); 22114 +export const MATRIX_ART_LICENSE = new NamespacedValue("matrixart.license"); 22115 + 22116 +type ThumbnailFileEvent = ImageFields & { 22117 + url: string; 22118 + mimetype: string; 22119 + size: number; 22120 +}; 22121 + 22122 +type ImageFields = { 22123 + width: number; 22124 + height: number; 22125 +}; 22126 + 22127 +type FileEvent = { 22128 + url: string; 22129 + name: string; 22130 + mimetype: string; 22131 + size: number; 22132 +}; 22133 + 22134 +export type M_IMAGE_EVENT = EitherAnd<{ [M_IMAGE.name]: ImageFields; }, { [M_IMAGE.altName]: ImageFields; }>; 22135 +export type M_FILE_EVENT = EitherAnd<{ [M_FILE.name]: FileEvent; }, { [M_FILE.altName]: FileEvent; }>; 22136 +export type M_THUMBNAIL_EVENT = EitherAnd<{ [M_THUMBNAIL.name]: ThumbnailFileEvent[]; }, { [M_THUMBNAIL.altName]: ThumbnailFileEvent[]; }>; 22137 +export type M_BLURHASH_EVENT = EitherAnd<{ [M_BLURHASH.name]: string; }, { [M_BLURHASH.altName]: string; }>; 22138 +export type MATRIX_ART_TAGS_EVENT = { ["matrixart.tags"]: string[]; }; 22139 +export type MATRIX_ART_DESCRIPTION_EVENT = { ["matrixart.description"]: string; }; 22140 +export type MATRIX_ART_NSFW_EVENT = { ["matrixart.nsfw"]: boolean; }; 22141 +export type MATRIX_ART_LICENSE_EVENT = { ["matrixart.license"]: string; }; 22142 +export type M_IMAGE_EVENT_CONTENT = M_MESSAGE_EVENT_CONTENT 22143 + & M_IMAGE_EVENT 22144 + & M_FILE_EVENT 22145 + & M_TEXT_EVENT 22146 + | M_BLURHASH_EVENT 22147 + | M_THUMBNAIL_EVENT 22148 + | MATRIX_ART_TAGS_EVENT 22149 + | MATRIX_ART_DESCRIPTION_EVENT 22150 + | MATRIX_ART_NSFW_EVENT 22151 + | MATRIX_ART_LICENSE_EVENT; 22152 + 22153 +export class ImageEvent extends ExtensibleEvent<M_IMAGE_EVENT_CONTENT> { 22154 + public readonly image!: ImageFields; 22155 + public readonly text!: string; 22156 + public readonly thumbnails?: ThumbnailFileEvent[]; 22157 + public readonly blurhash?: string; 22158 + public readonly file!: FileEvent; 22159 + public readonly description?: string; 22160 + public readonly tags?: string[]; 22161 + public readonly nsfw: boolean = false; 22162 + public readonly license?: string; 22163 + 22164 + 22165 + public isEquivalentTo(primaryEventType: EventType): boolean { 22166 + return isEventTypeSame(primaryEventType, M_IMAGE); 22167 + } 22168 + public serialize(): IPartialEvent<object> { 22169 + const content: M_IMAGE_EVENT_CONTENT = { 22170 + [M_TEXT.name]: this.text, 22171 + [M_FILE.name]: this.file, 22172 + [M_IMAGE.name]: this.image, 22173 + [M_THUMBNAIL.name]: this.thumbnails, 22174 + [M_BLURHASH.name]: this.blurhash, 22175 + ["matrixart.description"]: this.description, 22176 + ["matrixart.tags"]: this.tags, 22177 + ["matrixart.nsfw"]: this.nsfw, 22178 + ["matrixart.license"]: this.license, 22179 + }; 22180 + 22181 + return { 22182 + type: "m.image", 22183 + content: content, 22184 + }; 22185 + } 22186 + 22187 + constructor(wireFormat: IPartialEvent<M_IMAGE_EVENT_CONTENT>) { 22188 + super(wireFormat); 22189 + 22190 + const mimage = M_IMAGE.findIn<ImageFields>(this.wireContent); 22191 + // Probably wrong 22192 + const mtext = M_TEXT.findIn<string>(this.wireContent); 22193 + const mfile = M_FILE.findIn<FileEvent>(this.wireContent); 22194 + const mthumbnail = M_THUMBNAIL.findIn<ThumbnailFileEvent[]>(this.wireContent); 22195 + const mblurhash = M_BLURHASH.findIn<string>(this.wireContent); 22196 + const matrixart_description = MATRIX_ART_DESCRIPTION.findIn<string>(this.wireContent); 22197 + const matrixart_tags = MATRIX_ART_TAGS.findIn<string[]>(this.wireContent); 22198 + const matrixart_nsfw = MATRIX_ART_NSFW.findIn<boolean>(this.wireContent); 22199 + const matrixart_license = MATRIX_ART_LICENSE.findIn<string>(this.wireContent); 22200 + 22201 + // Required fields 22202 + if (isProvided(mimage)) { 22203 + if (!mimage) { 22204 + throw new InvalidEventError("m.image is required to be present"); 22205 + } 22206 + this.image = mimage; 22207 + } 22208 + if (isProvided(mfile)) { 22209 + if (!mfile) { 22210 + throw new InvalidEventError("m.file is required to be present"); 22211 + } 22212 + this.file = mfile; 22213 + } 22214 + if (isOptionalAString(mtext)) { 22215 + if (!mimage) { 22216 + throw new InvalidEventError("m.text is required to be present"); 22217 + } 22218 + // Safe but ts is stupid here 22219 + this.text = mtext as string; 22220 + } 22221 + 22222 + // Optional fields 22223 + if (isProvided(mthumbnail)) { 22224 + if (!Array.isArray(mthumbnail)) { 22225 + throw new InvalidEventError("m.thumbnail contents must be an array"); 22226 + } 22227 + this.thumbnails = mthumbnail; 22228 + } 22229 + if (isOptionalAString(mblurhash)) { 22230 + this.blurhash = mblurhash as string; 22231 + } 22232 + if (isOptionalAString(matrixart_description)) { 22233 + this.description = matrixart_description as string; 22234 + } 22235 + if (isProvided(matrixart_tags)) { 22236 + if (!Array.isArray(matrixart_tags)) { 22237 + throw new InvalidEventError("matrixart.tags contents must be an array"); 22238 + } 22239 + this.tags = matrixart_tags; 22240 + } 22241 + if (isProvided(matrixart_nsfw)) { 22242 + if (typeof matrixart_nsfw !== "boolean") { 22243 + throw new InvalidEventError("matrixart.tags contents must be an boolean"); 22244 + } 22245 + this.nsfw = matrixart_nsfw; 22246 + } 22247 + if (isOptionalAString(matrixart_license)) { 22248 + this.license = matrixart_license as string; 22249 + } 22250 + } 22251 +} 22252 + 22253 +function parseImageEvent(wireEvent: IPartialEvent<object>): Optional<ImageEvent> { 22254 + const event = wireEvent as IPartialEvent<M_IMAGE_EVENT_CONTENT>; 22255 + return new ImageEvent(event); 22256 +} 22257 + 22258 +ExtensibleEvents.registerInterpreter(M_IMAGE, parseImageEvent); 22259 +ExtensibleEvents.unknownInterpretOrder.push(M_IMAGE); 22260 \ No newline at end of file 22261 diff --git a/src/matrix/workers/indexeddb.worker.ts b/src/matrix/workers/indexeddb.worker.ts 22262 new file mode 100644 22263 index 0000000..4c17e2a 22264 --- /dev/null 22265 +++ b/src/matrix/workers/indexeddb.worker.ts 22266 @@ -0,0 +1,19 @@ 22267 +/* 22268 +Copyright 2017 Vector Creations Ltd 22269 +Licensed under the Apache License, Version 2.0 (the "License"); 22270 +you may not use this file except in compliance with the License. 22271 +You may obtain a copy of the License at 22272 + http://www.apache.org/licenses/LICENSE-2.0 22273 +Unless required by applicable law or agreed to in writing, software 22274 +distributed under the License is distributed on an "AS IS" BASIS, 22275 +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22276 +See the License for the specific language governing permissions and 22277 +limitations under the License. 22278 +*/ 22279 +import { IndexedDBStoreWorker } from "matrix-js-sdk/lib/indexeddb-worker"; 22280 + 22281 +const ctx: Worker = self as any; 22282 + 22283 +const remoteWorker = new IndexedDBStoreWorker(ctx.postMessage); 22284 + 22285 +ctx.onmessage = remoteWorker.onMessage; 22286 \ No newline at end of file 22287 diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx 22288 new file mode 100644 22289 index 0000000..7871edb 22290 --- /dev/null 22291 +++ b/src/pages/Home.tsx 22292 @@ -0,0 +1,65 @@ 22293 +import { PureComponent } from "preact/compat"; 22294 +import { Header } from "../components/header"; 22295 +import { Post } from "../components/post"; 22296 +// @ts-ignore no types 22297 +import { Plock } from "react-plock"; 22298 +import { UserData } from "../data/user"; 22299 +import { PostData } from "../data/post"; 22300 + 22301 +type State = { 22302 + columns: number; 22303 +}; 22304 + 22305 +export class Home extends PureComponent<any, State> { 22306 + constructor() { 22307 + super(); 22308 + this.state = { 22309 + columns: this.settingColumns(), 22310 + }; 22311 + } 22312 + 22313 + // TODO: Factor in the amount of images 22314 + // If we have less than the result then only use the number of images as columns 22315 + private settingColumns(): number { 22316 + if (window.innerWidth >= 1400) { 22317 + return 4; 22318 + } else if (window.innerWidth >= 800) { 22319 + return 3; 22320 + } else if (window.innerWidth >= 500) { 22321 + return 2; 22322 + } else { 22323 + return 1; 22324 + } 22325 + } 22326 + 22327 + componentDidMount() { 22328 + window.addEventListener('resize', () => this.setState({ columns: this.settingColumns() })); 22329 + } 22330 + 22331 + componentWillUnmount() { 22332 + window.removeEventListener('resize', () => this.setState({ columns: this.settingColumns() })); 22333 + } 22334 + 22335 + render() { 22336 + return ( 22337 + <div class="flex flex-col"> 22338 + <header> 22339 + <Header /> 22340 + </header> 22341 + <main class="m-12 mt-6"> 22342 + <h1 class="text-3xl font-bold mb-4 text-white">Explore</h1> 22343 + <div class="flex justify-center" id="gallery"> 22344 + <Plock gap={24} nColumns={this.state.columns}> 22345 + <Post user={new UserData("", "Person A", "https://unsplash.com/photos/_cvwXhGqG-o/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8OHx8ZmFjZXxlbnwwfDJ8fHwxNjQ4Nzc5NzYx")} post={new PostData("", { file: { url: "https://unsplash.com/photos/UWmrTAQ75iA/download?ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2NDg4MzI0Njg" } })} /> 22346 + <Post user={new UserData("", "Person B", "https://unsplash.com/photos/uJ8LNVCBjFQ/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTN8fGZhY2V8ZW58MHwyfHx8MTY0ODc3OTc2MQ")} post={new PostData("", { file: { url: "https://unsplash.com/photos/7ptbiEPxKMQ/download?ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2NDg4MzI0Njg" } })} /> 22347 + <Post user={new UserData("", "Person C", "https://unsplash.com/photos/u3pi6HhSYew/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTd8fGZhY2V8ZW58MHwyfHx8MTY0ODc3OTc2MQ")} post={new PostData("", { file: { url: "https://unsplash.com/photos/ZiPlVmmKEYA/download?ixid=MnwxMjA3fDB8MXxhbGx8Mzl8fHx8fHwyfHwxNjQ4ODM2MDIz" } })} /> 22348 + <Post user={new UserData("", "Person D", "https://unsplash.com/photos/TW_z_iUD_bQ/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8ODR8fHBvcnRyYWl0fGVufDB8Mnx8fDE2NDg4NDQ3MjQ")} post={new PostData("", { file: { url: "https://unsplash.com/photos/FTQJBGDxKXg/download?ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2NDg4NDMyNDY" } })} /> 22349 + <Post user={new UserData("", "Person E", "https://unsplash.com/photos/kYtN89E5ce4/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTA0fHxwb3J0cmFpdHxlbnwwfDJ8fHwxNjQ4ODQ0NzQy")} post={new PostData("", { file: { url: "https://unsplash.com/photos/zfhxiaZO3JE/download?ixid=MnwxMjA3fDB8MXxhbGx8Mjl8fHx8fHwyfHwxNjQ4ODQzMjQ1" } })} /> 22350 + <Post user={new UserData("", "Person E", "https://unsplash.com/photos/kBonaevi3yA/download?ixid=MnwxMjA3fDB8MXxzZWFyY2h8MTE5fHxwb3J0cmFpdHxlbnwwfDJ8fHwxNjQ4ODQ0NzQy")} post={new PostData("", { file: { url: "https://unsplash.com/photos/jm-JKqrAXsA/download?ixid=MnwxMjA3fDB8MXxhbGx8MTAyfHx8fHx8Mnx8MTY0ODg0MzI1NQ" } })} /> 22351 + </Plock> 22352 + </div> 22353 + </main> 22354 + </div> 22355 + ); 22356 + } 22357 +} 22358 \ No newline at end of file 22359 diff --git a/src/pages/Join.tsx b/src/pages/Join.tsx 22360 new file mode 100644 22361 index 0000000..3dba9c3 22362 --- /dev/null 22363 +++ b/src/pages/Join.tsx 22364 @@ -0,0 +1,97 @@ 22365 +import { PureComponent } from "preact/compat"; 22366 +import { Client } from "../context"; 22367 +import { Header } from "../components/header"; 22368 +import { MatrixClient } from "../matrix/client"; 22369 +import { NavigateFunction } from "react-router-dom"; 22370 +import { withNavigateHOC } from "../components/hookHelpers"; 22371 + 22372 +type Props = { 22373 + navigate: NavigateFunction; 22374 +}; 22375 + 22376 +type State = { 22377 + homeserver: string; 22378 + username: string; 22379 + password: string; 22380 + create_profile: boolean; 22381 + current_tab: "login" | "register"; 22382 +}; 22383 + 22384 +const ACTIVE_TAB_CSS = "inline-block p-4 w-full text-gray-900 bg-gray-100 hover:ring-blue-300 hover:ring-1 focus:ring-transparent focus:outline-none dark:bg-gray-700 dark:text-white"; 22385 +const TAB_CSS = "inline-block p-4 w-full bg-white hover:text-gray-700 hover:bg-gray-50 hover:ring-blue-300 hover:ring-1 focus:ring-transparent focus:outline-none dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700"; 22386 + 22387 +class Join extends PureComponent<Props, State> { 22388 + constructor(props: Props) { 22389 + super(props); 22390 + this.state = { 22391 + homeserver: "https://art.midnightthoughts.space", 22392 + username: "", 22393 + password: "", 22394 + create_profile: true, 22395 + current_tab: "login" 22396 + }; 22397 + } 22398 + 22399 + async onSubmit(e: Event) { 22400 + e.preventDefault(); 22401 + const client: MatrixClient | undefined = this.context; 22402 + if (!client) { 22403 + return; 22404 + } 22405 + if (this.state.homeserver === "" || this.state.username === "" || this.state.password === "") { 22406 + return; 22407 + } 22408 + if (this.state.current_tab === "login" && !client?.isLoggedIn()) { 22409 + await client.login(this.state.homeserver, this.state.username, this.state.password, this.state.create_profile); 22410 + } else if (this.state.current_tab === "register" && !client.isLoggedIn()) { 22411 + await client.register(this.state.homeserver, this.state.username, this.state.password, this.state.create_profile); 22412 + } 22413 + this.props.navigate('/', { replace: true }); 22414 + } 22415 + 22416 + onInput(e: Event) { 22417 + e.preventDefault(); 22418 + const target = (e.target as HTMLInputElement); 22419 + const value = target.type === 'checkbox' ? target.checked : target.value; 22420 + const name = target.name; 22421 + this.setState({ [name]: value }); 22422 + } 22423 + render(_: any, { homeserver, username, password, create_profile: create_account, current_tab }: State) { 22424 + return ( 22425 + <div class="flex flex-col"> 22426 + <header> 22427 + <Header /> 22428 + </header> 22429 + 22430 + <main class="m-12 mt-6"> 22431 + <h1 class="text-3xl font-bold mb-4 text-white">Join</h1> 22432 + <div class="flex items-center flex-col"> 22433 + <ul class="w-1/4 mb-8 hidden text-sm font-medium text-center text-gray-500 rounded-lg divide-x divide-gray-200 shadow sm:flex dark:divide-gray-700 dark:text-gray-400"> 22434 + <li class="w-full"> 22435 + <a href="#" class={current_tab === "login" ? `${ACTIVE_TAB_CSS} rounded-l-lg` : `${TAB_CSS} rounded-l-lg`} onClick={(e) => { e.preventDefault(); this.setState({ current_tab: "login" }); }}>Login</a> 22436 + </li> 22437 + <li class="w-full"> 22438 + <a href="#" class={current_tab === "register" ? `${ACTIVE_TAB_CSS} rounded-r-lg` : `${TAB_CSS} rounded-r-lg`} onClick={(e) => { e.preventDefault(); this.setState({ current_tab: "register" }); }}>Register</a> 22439 + </li> 22440 + </ul> 22441 + <form onSubmit={this.onSubmit.bind(this)} class="flex flex-col items-start w-1/4"> 22442 + <input class="search-bg shadow rounded-lg border-0 py-3 px-4 placeholder-data text-white mb-4 w-full" type="url" placeholder="Homeserver" name="homeserver" value={homeserver} onInput={this.onInput.bind(this)} /> 22443 + <input class="search-bg shadow rounded-lg border-0 py-3 px-4 placeholder-data text-white mb-4 w-full" autocomplete="username" type="text" placeholder="Username" name="username" value={username} onInput={this.onInput.bind(this)} /> 22444 + <input class="search-bg shadow rounded-lg border-0 py-3 px-4 placeholder-data text-white mb-4 w-full" autoComplete="current-password" type="password" placeholder="Password" name="password" value={password} onInput={this.onInput.bind(this)} /> 22445 + <label class="mb-4 flex items-center"> 22446 + <input class="checked:bg-blue-600 checked:border-transparent checked:bg-no-repeat checked:bg-[url('/tick.svg')] outline-none focus:outline-offset-2 focus:ring-blue-600 focus:ring-offset-2 focus:ring-offset-white p-0 inline-block align-middle box-border select-none shrink-0 shadow h-5 w-5 appearance-none rounded bg-white border-none" type="checkbox" name="create_profile" checked={create_account} onInput={this.onInput.bind(this)} /> 22447 + <span class="ml-4 text-data text-base font-medium">Create account</span> 22448 + </label> 22449 + 22450 + <button type="submit" class="text-white font-bold text-lg logo-bg rounded-xl py-2 px-10 shadow transform transition-transform ease-in-out duration-300 hover:scale-105 w-1/2 self-center">{current_tab === "login" ? "Login" : "Register"}</button> 22451 + </form> 22452 + </div> 22453 + </main > 22454 + </div > 22455 + ); 22456 + } 22457 +} 22458 + 22459 + 22460 +Join.contextType = Client; 22461 +export default withNavigateHOC(Join); 22462 \ No newline at end of file 22463 diff --git a/src/preact.d.ts b/src/preact.d.ts 22464 new file mode 100644 22465 index 0000000..bed71c7 22466 --- /dev/null 22467 +++ b/src/preact.d.ts 22468 @@ -0,0 +1,2 @@ 22469 +// eslint-disable-next-line @typescript-eslint/no-unused-vars 22470 +import JSX = preact.JSX 22471 diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts 22472 new file mode 100644 22473 index 0000000..11f02fe 22474 --- /dev/null 22475 +++ b/src/vite-env.d.ts 22476 @@ -0,0 +1 @@ 22477 +/// <reference types="vite/client" /> 22478 diff --git a/styles/globals.css b/styles/globals.css 22479 deleted file mode 100644 22480 index 62e3b65..0000000 22481 --- a/styles/globals.css 22482 +++ /dev/null 22483 @@ -1,219 +0,0 @@ 22484 -@tailwind base; 22485 -@tailwind components; 22486 -@tailwind utilities; 22487 - 22488 -@supports not (font-variation-settings: normal) { 22489 - @font-face { 22490 - font-family: "Inter"; 22491 - font-style: normal; 22492 - font-weight: 100; 22493 - font-display: optional; 22494 - src: url(/fonts/Inter-Thin.woff2) format("woff2") 22495 - } 22496 - 22497 - @font-face { 22498 - font-family: "Inter"; 22499 - font-style: normal; 22500 - font-weight: 200; 22501 - font-display: optional; 22502 - src: url(/fonts/Inter-ExtraLight.woff2) format("woff2") 22503 - } 22504 - 22505 - @font-face { 22506 - font-family: "Inter"; 22507 - font-style: normal; 22508 - font-weight: 300; 22509 - font-display: optional; 22510 - src: url(/fonts/Inter-Light.woff2) format("woff2") 22511 - } 22512 - 22513 - @font-face { 22514 - font-family: "Inter"; 22515 - font-style: normal; 22516 - font-weight: 400; 22517 - font-display: optional; 22518 - src: url(/fonts/Inter-Regular.woff2) format("woff2") 22519 - } 22520 - 22521 - @font-face { 22522 - font-family: "Inter"; 22523 - font-style: normal; 22524 - font-weight: 500; 22525 - font-display: optional; 22526 - src: url(/fonts/Inter-Medium.woff2) format("woff2") 22527 - } 22528 - 22529 - @font-face { 22530 - font-family: "Inter"; 22531 - font-style: normal; 22532 - font-weight: 600; 22533 - font-display: optional; 22534 - src: url(/fonts/Inter-SemiBold.woff2) format("woff2") 22535 - } 22536 - 22537 - @font-face { 22538 - font-family: "Inter"; 22539 - font-style: normal; 22540 - font-weight: 700; 22541 - font-display: optional; 22542 - src: url(/fonts/Inter-Bold.woff2) format("woff2") 22543 - } 22544 - 22545 - @font-face { 22546 - font-family: "Inter"; 22547 - font-style: normal; 22548 - font-weight: 800; 22549 - font-display: optional; 22550 - src: url(/fonts/Inter-ExtraBold.woff2) format("woff2") 22551 - } 22552 - 22553 - @font-face { 22554 - font-family: "Inter"; 22555 - font-style: normal; 22556 - font-weight: 900; 22557 - font-display: optional; 22558 - src: url(/fonts/Inter-Black.woff2) format("woff2") 22559 - } 22560 -} 22561 - 22562 -@supports (font-variation-settings: normal) { 22563 - @font-face { 22564 - font-family: "Inter"; 22565 - font-style: normal; 22566 - font-weight: 100 900; 22567 - font-display: optional; 22568 - src: url(/fonts/Inter-VariableFont_slnt,wght.woff2) format("woff2 supports variations"), 22569 - url(/fonts/Inter-VariableFont_slnt,wght.woff2) format("woff2-variations"); 22570 - } 22571 -} 22572 - 22573 -html, body, #__next { 22574 - margin: 0; 22575 - @apply h-full bg-[#f8f8f8] dark:bg-[#06070D]; 22576 -} 22577 - 22578 -#transparent_gradient:after { 22579 - background-image: linear-gradient(180deg,rgba(6,7,13,0) 0,#06070D 70%,#06070D); 22580 - content: ""; 22581 - display: block; 22582 - position: absolute; 22583 - width: 100%; 22584 - height: 500px; 22585 - transform: translateY(-100%); 22586 -} 22587 - 22588 -#magic-spacer:not(:focus):not(:active):not(:focus-within) { 22589 - position: absolute; 22590 - height: 1px; 22591 - width: 1px; 22592 - overflow: hidden; 22593 - clip: rect(1px,1px,1px,1px); 22594 - white-space: nowrap; 22595 -} 22596 - 22597 -#reflection:before { 22598 - position: absolute; 22599 - content: ""; 22600 - display: block; 22601 - pointer-events: none; 22602 - transition: all .1s linear; 22603 - transform-origin: 0 0; 22604 - background-image: radial-gradient(ellipse at 110% 130%,#fff,hsla(0,0%,100%,0) 80%); 22605 - background-position-y: 0; 22606 - background-repeat: no-repeat; 22607 - top: -50px; 22608 - left: 40%; 22609 - margin-left: -80px; 22610 - width: 100px; 22611 - height: 100px; 22612 - transform: rotate(-68deg) translateX(-50%); 22613 - opacity: .8; 22614 - z-index: -1; 22615 -} 22616 - 22617 -#reflection:hover::before { 22618 - left: 50%; 22619 - opacity: .5; 22620 -} 22621 - 22622 -.loader, 22623 -.loader:before, 22624 -.loader:after { 22625 - background: #ffffff; 22626 - -webkit-animation: load1 1s infinite ease-in-out; 22627 - animation: load1 1s infinite ease-in-out; 22628 - width: 1em; 22629 - height: 4em; 22630 -} 22631 -.loader { 22632 - color: #ffffff; 22633 - text-indent: -9999em; 22634 - margin: 88px auto; 22635 - position: relative; 22636 - font-size: 11px; 22637 - -webkit-transform: translateZ(0); 22638 - -ms-transform: translateZ(0); 22639 - transform: translateZ(0); 22640 - -webkit-animation-delay: -0.16s; 22641 - animation-delay: -0.16s; 22642 -} 22643 -.loader:before, 22644 -.loader:after { 22645 - position: absolute; 22646 - top: 0; 22647 - content: ''; 22648 -} 22649 -.loader:before { 22650 - left: -1.5em; 22651 - -webkit-animation-delay: -0.32s; 22652 - animation-delay: -0.32s; 22653 -} 22654 -.loader:after { 22655 - left: 1.5em; 22656 -} 22657 -@-webkit-keyframes load1 { 22658 - 0%, 22659 - 80%, 22660 - 100% { 22661 - box-shadow: 0 0; 22662 - height: 4em; 22663 - } 22664 - 40% { 22665 - box-shadow: 0 -2em; 22666 - height: 5em; 22667 - } 22668 -} 22669 -@keyframes load1 { 22670 - 0%, 22671 - 80%, 22672 - 100% { 22673 - box-shadow: 0 0; 22674 - height: 4em; 22675 - } 22676 - 40% { 22677 - box-shadow: 0 -2em; 22678 - height: 5em; 22679 - } 22680 -} 22681 - 22682 -.visually-hidden:not(:focus):not(:active) { 22683 - clip: rect(0 0 0 0); 22684 - clip-path: inset(50%); 22685 - height: 1px; 22686 - overflow: hidden; 22687 - position: absolute; 22688 - white-space: nowrap; 22689 - width: 1px; 22690 -} 22691 - 22692 - 22693 -@media only screen and (max-width: 1024px) { 22694 - .gap-1 > * { 22695 - margin: 0.25rem; 22696 - } 22697 -} 22698 - 22699 - 22700 -option[value=""][disabled] { 22701 - display: none; 22702 -} 22703 \ No newline at end of file 22704 diff --git a/tailwind.config.js b/tailwind.config.js 22705 index 5830451..e2fa04a 100644 22706 --- a/tailwind.config.js 22707 +++ b/tailwind.config.js 22708 @@ -1,7 +1,10 @@ 22709 const defaultTheme = require('tailwindcss/defaultTheme') 22710 22711 module.exports = { 22712 - content: ["./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}",], 22713 + content: [ 22714 + "./index.html", 22715 + "./src/**/*.{js,ts,jsx,tsx}", 22716 + ], 22717 theme: { 22718 extend: { 22719 fontFamily: { 22720 diff --git a/thirdparty-licenses.md b/thirdparty-licenses.md 22721 deleted file mode 100644 22722 index 7c22193..0000000 22723 --- a/thirdparty-licenses.md 22724 +++ /dev/null 22725 @@ -1,1119 +0,0 @@ 22726 ---- 22727 - 22728 -# 3rd-Party Software for [Matrix-Art](https://github.com/MTRNord/matrix-art) 22729 - 22730 - 22731 - 22732 -The following 3rd-party software packages may be used by or distributed with **Matrix-Art**. Any information relevant to third-party vendors listed below are collected using common, reasonable means. 22733 - 22734 - 22735 -Date generated | Revision ID 22736 -:------------: | :----------: 22737 -01/20/22 | 085183fb40fb6e38ef7c5e6c7fb39be9bfd5542f 22738 - 22739 ---- 22740 - 22741 - 22742 - 22743 - 22744 - 22745 - 22746 -## Dependencies 22747 - 22748 - 22749 - 22750 - 22751 -### [@babel/core (7.16.5)](https://www.npmjs.com/package/@babel/core) 22752 - 22753 - 22754 -#### Declared Licenses 22755 -MIT 22756 - 22757 - 22758 -``` 22759 -MIT License 22760 - 22761 -Copyright (c) 2014-present Sebastian McKenzie and other contributors 22762 - 22763 -Permission is hereby granted, free of charge, to any person obtaining 22764 -a copy of this software and associated documentation files (the 22765 -"Software"), to deal in the Software without restriction, including 22766 -without limitation the rights to use, copy, modify, merge, publish, 22767 -distribute, sublicense, and/or sell copies of the Software, and to 22768 -permit persons to whom the Software is furnished to do so, subject to 22769 -the following conditions: 22770 - 22771 -The above copyright notice and this permission notice shall be 22772 -included in all copies or substantial portions of the Software. 22773 - 22774 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 22775 -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22776 -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 22777 -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22778 -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22779 -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22780 -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22781 - 22782 -``` 22783 - 22784 - 22785 - 22786 - 22787 - 22788 - 22789 -#### Other Licenses 22790 - 22791 - 22792 - 22793 - 22794 - 22795 - 22796 - 22797 - 22798 - 22799 - 22800 - 22801 - 22802 - 22803 ---- 22804 - 22805 -### [cors (2.8.5)](https://www.npmjs.com/package/cors) 22806 - 22807 - 22808 -#### Declared Licenses 22809 -MIT 22810 - 22811 - 22812 -``` 22813 -(The MIT License) 22814 - 22815 -Copyright (c) 2013 Troy Goode <troygoode@gmail.com> 22816 - 22817 -Permission is hereby granted, free of charge, to any person obtaining 22818 -a copy of this software and associated documentation files (the 22819 -'Software'), to deal in the Software without restriction, including 22820 -without limitation the rights to use, copy, modify, merge, publish, 22821 -distribute, sublicense, and/or sell copies of the Software, and to 22822 -permit persons to whom the Software is furnished to do so, subject to 22823 -the following conditions: 22824 - 22825 -The above copyright notice and this permission notice shall be 22826 -included in all copies or substantial portions of the Software. 22827 - 22828 -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 22829 -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22830 -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22831 -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22832 -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22833 -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22834 -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22835 - 22836 -``` 22837 - 22838 - 22839 - 22840 - 22841 - 22842 - 22843 -#### Other Licenses 22844 - 22845 - 22846 - 22847 - 22848 - 22849 - 22850 - 22851 - 22852 - 22853 - 22854 - 22855 - 22856 - 22857 ---- 22858 - 22859 -### [lightgallery (2.3.0)](https://www.npmjs.com/package/lightgallery) 22860 - 22861 - 22862 -#### Declared Licenses 22863 -GPL-3.0-only 22864 - 22865 - 22866 -``` 22867 -Copyright (C) 2022, lightgallery Contributors 22868 -This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. 22869 -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 22870 -You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ 22871 -``` 22872 - 22873 - 22874 - 22875 - 22876 - 22877 - 22878 -#### Other Licenses 22879 -**Multi-license:**0BSD, **Multi-license:**0BSD *OR* BSD-3-Clause, **Multi-license:**0BSD *OR* MIT, **Multi-license:**BSD-3-Clause 22880 - 22881 - 22882 -``` 22883 -Copyright (C) 2006 by Rob Landley <rob@landley.net> 22884 -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. 22885 -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22886 -``` 22887 - 22888 - 22889 - 22890 - 22891 - 22892 - 22893 - 22894 - 22895 - 22896 - 22897 - 22898 - 22899 - 22900 - 22901 - 22902 - 22903 - 22904 - 22905 - 22906 - 22907 -``` 22908 -Copyright (c) 2017 Google LLC . All rights reserved. 22909 - 22910 -Redistribution and use in source and binary forms, with or without 22911 -modification, are permitted provided that the following conditions are met: 22912 - 22913 - 1. Redistributions of source code must retain the above copyright notice, 22914 - this list of conditions and the following disclaimer. 22915 - 22916 - 2. Redistributions in binary form must reproduce the above copyright notice, 22917 - this list of conditions and the following disclaimer in the documentation 22918 - and/or other materials provided with the distribution. 22919 - 22920 - 3. Neither the name of the copyright holder nor the names of its 22921 - contributors may be used to endorse or promote products derived from 22922 - this software without specific prior written permission. 22923 - 22924 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22925 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22926 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22927 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22928 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22929 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22930 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 22931 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22932 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22933 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22934 -``` 22935 - 22936 - 22937 - 22938 - 22939 - 22940 - 22941 - 22942 - 22943 - 22944 - 22945 - 22946 - 22947 - 22948 - 22949 - 22950 - 22951 ---- 22952 - 22953 -### [meilisearch (0.23.0)](https://www.npmjs.com/package/meilisearch) 22954 - 22955 - 22956 -#### Declared Licenses 22957 -MIT 22958 - 22959 - 22960 -``` 22961 -MIT License 22962 - 22963 -Copyright (c) 2019-2021 Meili 22964 - 22965 -Permission is hereby granted, free of charge, to any person obtaining a copy 22966 -of this software and associated documentation files (the "Software"), to deal 22967 -in the Software without restriction, including without limitation the rights 22968 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 22969 -copies of the Software, and to permit persons to whom the Software is 22970 -furnished to do so, subject to the following conditions: 22971 - 22972 -The above copyright notice and this permission notice shall be included in all 22973 -copies or substantial portions of the Software. 22974 - 22975 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22976 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22977 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22978 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22979 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22980 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22981 -SOFTWARE. 22982 - 22983 -``` 22984 - 22985 - 22986 - 22987 - 22988 - 22989 - 22990 -#### Other Licenses 22991 -0BSD 22992 - 22993 - 22994 -``` 22995 -Copyright (C) 2006 by Rob Landley <rob@landley.net> 22996 -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. 22997 -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22998 -``` 22999 - 23000 - 23001 - 23002 - 23003 - 23004 - 23005 - 23006 - 23007 - 23008 - 23009 - 23010 - 23011 - 23012 - 23013 - 23014 - 23015 ---- 23016 - 23017 -### [next (12.0.7)](https://www.npmjs.com/package/next) 23018 - 23019 - 23020 -#### Declared Licenses 23021 -Apache-2.0 *OR* BSD-2-Clause *OR* CC0-1.0 23022 - 23023 - 23024 - 23025 - 23026 - 23027 - 23028 - 23029 - 23030 - 23031 -#### Other Licenses 23032 -**Multi-license:**MIT, **Multi-license:**CC0-1.0 *OR* MIT, **Multi-license:**CC-BY-SA-4.0 *OR* ISC, **Multi-license:**ISC, **Multi-license:**Apache-2.0, **Multi-license:**CC0-1.0, **Multi-license:**BSD-3-Clause, **Multi-license:**BSD-2-Clause 23033 - 23034 - 23035 -``` 23036 -Copyright (c) 2017 present James Kyle <me@thejameskyle.com> 23037 -Permission is hereby granted, free of charge, to any person obtaining a copy 23038 -of this software and associated documentation files (the "Software"), to deal 23039 -in the Software without restriction, including without limitation the rights 23040 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23041 -copies of the Software, and to permit persons to whom the Software is 23042 -furnished to do so, subject to the following conditions: 23043 - 23044 -The above copyright notice and this permission notice shall be included in all 23045 -copies or substantial portions of the Software. 23046 - 23047 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23048 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23049 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23050 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23051 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23052 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23053 -SOFTWARE. 23054 -``` 23055 - 23056 - 23057 - 23058 - 23059 - 23060 - 23061 - 23062 - 23063 - 23064 - 23065 - 23066 - 23067 - 23068 - 23069 - 23070 - 23071 - 23072 - 23073 - 23074 - 23075 -``` 23076 -Copyright (c) Isaac Z. Schlueter and Contributors 23077 -Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 23078 -THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23079 -``` 23080 - 23081 - 23082 - 23083 - 23084 - 23085 - 23086 -``` 23087 -Copyright yyyy] [name of copyright owner] 23088 - 23089 -Licensed under the Apache License, Version 2.0 (the "License"); 23090 -you may not use this file except in compliance with the License. 23091 -You may obtain a copy of the License at 23092 - 23093 -http://www.apache.org/licenses/LICENSE-2.0 23094 - 23095 -Unless required by applicable law or agreed to in writing, software 23096 -distributed under the License is distributed on an "AS IS" BASIS, 23097 -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 23098 - 23099 -See the License for the specific language governing permissions and limitations under the License. 23100 -``` 23101 - 23102 - 23103 - 23104 - 23105 - 23106 - 23107 -``` 23108 -CC0 1.0 Universal<<endOptional>> 23109 -Statement of Purpose 23110 -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). 23111 -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. 23112 -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 23113 - 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: 23114 - i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; 23115 - ii. moral rights retained by the original author(s) and/or performer(s); 23116 - iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; 23117 - iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; 23118 - v. rights protecting the extraction, dissemination, use and reuse of data in a Work; 23119 - vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and 23120 - vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 23121 - 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 23122 - 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 23123 - 4. Limitations and Disclaimers. 23124 - a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. 23125 - b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. 23126 - c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. 23127 - d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 23128 -``` 23129 - 23130 - 23131 - 23132 - 23133 - 23134 - 23135 -``` 23136 -Copyright (c) 2009-2011 Mozilla Foundation and contributors . All rights reserved. 23137 - 23138 -Redistribution and use in source and binary forms, with or without 23139 -modification, are permitted provided that the following conditions are met: 23140 - 23141 - 1. Redistributions of source code must retain the above copyright notice, 23142 - this list of conditions and the following disclaimer. 23143 - 23144 - 2. Redistributions in binary form must reproduce the above copyright notice, 23145 - this list of conditions and the following disclaimer in the documentation 23146 - and/or other materials provided with the distribution. 23147 - 23148 - 3. Neither the name of the copyright holder nor the names of its 23149 - contributors may be used to endorse or promote products derived from 23150 - this software without specific prior written permission. 23151 - 23152 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23153 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23154 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23155 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23156 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23157 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23158 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23159 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23160 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23161 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23162 -``` 23163 - 23164 - 23165 - 23166 - 23167 - 23168 - 23169 -``` 23170 -Copyright (c) 2012-2018 c) Mihai Bazon <mihai.bazon@gmail.com><<beginOptional>> 23171 -All rights reserved.<<endOptional>> 23172 - 23173 -Redistribution and use in source and binary forms, with or without 23174 -modification, are permitted provided that the following conditions are met: 23175 - 23176 - 1. Redistributions of source code must retain the above copyright notice, this 23177 - list of conditions and the following disclaimer. 23178 - 23179 - 2. Redistributions in binary form must reproduce the above copyright notice, 23180 - this list of conditions and the following disclaimer in the documentation 23181 - 23182 - and/or other materials provided with the distribution. 23183 - 23184 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23185 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23186 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23187 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23188 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23189 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23190 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23191 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23192 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23193 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23194 -``` 23195 - 23196 - 23197 - 23198 - 23199 - 23200 - 23201 - 23202 - 23203 - 23204 - 23205 - 23206 - 23207 - 23208 - 23209 - 23210 - 23211 ---- 23212 - 23213 -### [node-localstorage (2.2.1)](https://www.npmjs.com/package/node-localstorage) 23214 - 23215 - 23216 -#### Declared Licenses 23217 -MIT 23218 - 23219 - 23220 -``` 23221 -Copyright (c) 2011 Lawrence S. Maccherone, Jr. 23222 - 23223 -MIT License 23224 - 23225 -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 23226 -documentation files (the "Software"), to deal in the Software without restriction, including without limitation 23227 -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 23228 -to permit persons to whom the Software is furnished to do so, subject to the following conditions: 23229 - 23230 -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 23231 - 23232 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 23233 -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23234 -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 23235 -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 23236 -IN THE SOFTWARE. 23237 -``` 23238 - 23239 - 23240 - 23241 - 23242 - 23243 - 23244 -#### Other Licenses 23245 - 23246 - 23247 - 23248 - 23249 - 23250 - 23251 - 23252 - 23253 - 23254 - 23255 - 23256 - 23257 - 23258 ---- 23259 - 23260 -### [postcss (8.4.5)](https://www.npmjs.com/package/postcss) 23261 - 23262 - 23263 -#### Declared Licenses 23264 -MIT 23265 - 23266 - 23267 -``` 23268 -The MIT License (MIT) 23269 - 23270 -Copyright 2013 Andrey Sitnik <andrey@sitnik.ru> 23271 - 23272 -Permission is hereby granted, free of charge, to any person obtaining a copy of 23273 -this software and associated documentation files (the "Software"), to deal in 23274 -the Software without restriction, including without limitation the rights to 23275 -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 23276 -the Software, and to permit persons to whom the Software is furnished to do so, 23277 -subject to the following conditions: 23278 - 23279 -The above copyright notice and this permission notice shall be included in all 23280 -copies or substantial portions of the Software. 23281 - 23282 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23283 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 23284 -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 23285 -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 23286 -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23287 -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23288 - 23289 -``` 23290 - 23291 - 23292 - 23293 - 23294 - 23295 - 23296 -#### Other Licenses 23297 - 23298 - 23299 - 23300 - 23301 - 23302 - 23303 - 23304 - 23305 - 23306 - 23307 - 23308 - 23309 - 23310 ---- 23311 - 23312 -### [pouchdb (7.2.2)](https://www.npmjs.com/package/pouchdb) 23313 - 23314 - 23315 -#### Declared Licenses 23316 -Apache-2.0 23317 - 23318 - 23319 -``` 23320 - 23321 - Apache License 23322 - Version 2.0, January 2004 23323 - http://www.apache.org/licenses/ 23324 - 23325 - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 23326 - 23327 - 1. Definitions. 23328 - 23329 - "License" shall mean the terms and conditions for use, reproduction, 23330 - and distribution as defined by Sections 1 through 9 of this document. 23331 - 23332 - "Licensor" shall mean the copyright owner or entity authorized by 23333 - the copyright owner that is granting the License. 23334 - 23335 - "Legal Entity" shall mean the union of the acting entity and all 23336 - other entities that control, are controlled by, or are under common 23337 - control with that entity. For the purposes of this definition, 23338 - "control" means (i) the power, direct or indirect, to cause the 23339 - direction or management of such entity, whether by contract or 23340 - otherwise, or (ii) ownership of fifty percent (50%) or more of the 23341 - outstanding shares, or (iii) beneficial ownership of such entity. 23342 - 23343 - "You" (or "Your") shall mean an individual or Legal Entity 23344 - exercising permissions granted by this License. 23345 - 23346 - "Source" form shall mean the preferred form for making modifications, 23347 - including but not limited to software source code, documentation 23348 - source, and configuration files. 23349 - 23350 - "Object" form shall mean any form resulting from mechanical 23351 - transformation or translation of a Source form, including but 23352 - not limited to compiled object code, generated documentation, 23353 - and conversions to other media types. 23354 - 23355 - "Work" shall mean the work of authorship, whether in Source or 23356 - Object form, made available under the License, as indicated by a 23357 - copyright notice that is included in or attached to the work 23358 - (an example is provided in the Appendix below). 23359 - 23360 - "Derivative Works" shall mean any work, whether in Source or Object 23361 - form, that is based on (or derived from) the Work and for which the 23362 - editorial revisions, annotations, elaborations, or other modifications 23363 - represent, as a whole, an original work of authorship. For the purposes 23364 - of this License, Derivative Works shall not include works that remain 23365 - separable from, or merely link (or bind by name) to the interfaces of, 23366 - the Work and Derivative Works thereof. 23367 - 23368 - "Contribution" shall mean any work of authorship, including 23369 - the original version of the Work and any modifications or additions 23370 - to that Work or Derivative Works thereof, that is intentionally 23371 - submitted to Licensor for inclusion in the Work by the copyright owner 23372 - or by an individual or Legal Entity authorized to submit on behalf of 23373 - the copyright owner. For the purposes of this definition, "submitted" 23374 - means any form of electronic, verbal, or written communication sent 23375 - to the Licensor or its representatives, including but not limited to 23376 - communication on electronic mailing lists, source code control systems, 23377 - and issue tracking systems that are managed by, or on behalf of, the 23378 - Licensor for the purpose of discussing and improving the Work, but 23379 - excluding communication that is conspicuously marked or otherwise 23380 - designated in writing by the copyright owner as "Not a Contribution." 23381 - 23382 - "Contributor" shall mean Licensor and any individual or Legal Entity 23383 - on behalf of whom a Contribution has been received by Licensor and 23384 - subsequently incorporated within the Work. 23385 - 23386 - 2. Grant of Copyright License. Subject to the terms and conditions of 23387 - this License, each Contributor hereby grants to You a perpetual, 23388 - worldwide, non-exclusive, no-charge, royalty-free, irrevocable 23389 - copyright license to reproduce, prepare Derivative Works of, 23390 - publicly display, publicly perform, sublicense, and distribute the 23391 - Work and such Derivative Works in Source or Object form. 23392 - 23393 - 3. Grant of Patent License. Subject to the terms and conditions of 23394 - this License, each Contributor hereby grants to You a perpetual, 23395 - worldwide, non-exclusive, no-charge, royalty-free, irrevocable 23396 - (except as stated in this section) patent license to make, have made, 23397 - use, offer to sell, sell, import, and otherwise transfer the Work, 23398 - where such license applies only to those patent claims licensable 23399 - by such Contributor that are necessarily infringed by their 23400 - Contribution(s) alone or by combination of their Contribution(s) 23401 - with the Work to which such Contribution(s) was submitted. If You 23402 - institute patent litigation against any entity (including a 23403 - cross-claim or counterclaim in a lawsuit) alleging that the Work 23404 - or a Contribution incorporated within the Work constitutes direct 23405 - or contributory patent infringement, then any patent licenses 23406 - granted to You under this License for that Work shall terminate 23407 - as of the date such litigation is filed. 23408 - 23409 - 4. Redistribution. You may reproduce and distribute copies of the 23410 - Work or Derivative Works thereof in any medium, with or without 23411 - modifications, and in Source or Object form, provided that You 23412 - meet the following conditions: 23413 - 23414 - (a) You must give any other recipients of the Work or 23415 - Derivative Works a copy of this License; and 23416 - 23417 - (b) You must cause any modified files to carry prominent notices 23418 - stating that You changed the files; and 23419 - 23420 - (c) You must retain, in the Source form of any Derivative Works 23421 - that You distribute, all copyright, patent, trademark, and 23422 - attribution notices from the Source form of the Work, 23423 - excluding those notices that do not pertain to any part of 23424 - the Derivative Works; and 23425 - 23426 - (d) If the Work includes a "NOTICE" text file as part of its 23427 - distribution, then any Derivative Works that You distribute must 23428 - include a readable copy of the attribution notices contained 23429 - within such NOTICE file, excluding those notices that do not 23430 - pertain to any part of the Derivative Works, in at least one 23431 - of the following places: within a NOTICE text file distributed 23432 - as part of the Derivative Works; within the Source form or 23433 - documentation, if provided along with the Derivative Works; or, 23434 - within a display generated by the Derivative Works, if and 23435 - wherever such third-party notices normally appear. The contents 23436 - of the NOTICE file are for informational purposes only and 23437 - do not modify the License. You may add Your own attribution 23438 - notices within Derivative Works that You distribute, alongside 23439 - or as an addendum to the NOTICE text from the Work, provided 23440 - that such additional attribution notices cannot be construed 23441 - as modifying the License. 23442 - 23443 - You may add Your own copyright statement to Your modifications and 23444 - may provide additional or different license terms and conditions 23445 - for use, reproduction, or distribution of Your modifications, or 23446 - for any such Derivative Works as a whole, provided Your use, 23447 - reproduction, and distribution of the Work otherwise complies with 23448 - the conditions stated in this License. 23449 - 23450 - 5. Submission of Contributions. Unless You explicitly state otherwise, 23451 - any Contribution intentionally submitted for inclusion in the Work 23452 - by You to the Licensor shall be under the terms and conditions of 23453 - this License, without any additional terms or conditions. 23454 - Notwithstanding the above, nothing herein shall supersede or modify 23455 - the terms of any separate license agreement you may have executed 23456 - with Licensor regarding such Contributions. 23457 - 23458 - 6. Trademarks. This License does not grant permission to use the trade 23459 - names, trademarks, service marks, or product names of the Licensor, 23460 - except as required for reasonable and customary use in describing the 23461 - origin of the Work and reproducing the content of the NOTICE file. 23462 - 23463 - 7. Disclaimer of Warranty. Unless required by applicable law or 23464 - agreed to in writing, Licensor provides the Work (and each 23465 - Contributor provides its Contributions) on an "AS IS" BASIS, 23466 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 23467 - implied, including, without limitation, any warranties or conditions 23468 - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 23469 - PARTICULAR PURPOSE. You are solely responsible for determining the 23470 - appropriateness of using or redistributing the Work and assume any 23471 - risks associated with Your exercise of permissions under this License. 23472 - 23473 - 8. Limitation of Liability. In no event and under no legal theory, 23474 - whether in tort (including negligence), contract, or otherwise, 23475 - unless required by applicable law (such as deliberate and grossly 23476 - negligent acts) or agreed to in writing, shall any Contributor be 23477 - liable to You for damages, including any direct, indirect, special, 23478 - incidental, or consequential damages of any character arising as a 23479 - result of this License or out of the use or inability to use the 23480 - Work (including but not limited to damages for loss of goodwill, 23481 - work stoppage, computer failure or malfunction, or any and all 23482 - other commercial damages or losses), even if such Contributor 23483 - has been advised of the possibility of such damages. 23484 - 23485 - 9. Accepting Warranty or Additional Liability. While redistributing 23486 - the Work or Derivative Works thereof, You may choose to offer, 23487 - and charge a fee for, acceptance of support, warranty, indemnity, 23488 - or other liability obligations and/or rights consistent with this 23489 - License. However, in accepting such obligations, You may act only 23490 - on Your own behalf and on Your sole responsibility, not on behalf 23491 - of any other Contributor, and only if You agree to indemnify, 23492 - defend, and hold each Contributor harmless for any liability 23493 - incurred by, or claims asserted against, such Contributor by reason 23494 - of your accepting any such warranty or additional liability. 23495 - 23496 - END OF TERMS AND CONDITIONS 23497 - 23498 - APPENDIX: How to apply the Apache License to your work. 23499 - 23500 - To apply the Apache License to your work, attach the following 23501 - boilerplate notice, with the fields enclosed by brackets "[]" 23502 - replaced with your own identifying information. (Don't include 23503 - the brackets!) The text should be enclosed in the appropriate 23504 - comment syntax for the file format. We also recommend that a 23505 - file or class name and description of purpose be included on the 23506 - same "printed page" as the copyright notice for easier 23507 - identification within third-party archives. 23508 - 23509 - Copyright [yyyy] [name of copyright owner] 23510 - 23511 - Licensed under the Apache License, Version 2.0 (the "License"); 23512 - you may not use this file except in compliance with the License. 23513 - You may obtain a copy of the License at 23514 - 23515 - http://www.apache.org/licenses/LICENSE-2.0 23516 - 23517 - Unless required by applicable law or agreed to in writing, software 23518 - distributed under the License is distributed on an "AS IS" BASIS, 23519 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 23520 - See the License for the specific language governing permissions and 23521 - limitations under the License. 23522 - 23523 -``` 23524 - 23525 - 23526 - 23527 - 23528 - 23529 - 23530 -#### Other Licenses 23531 -MIT 23532 - 23533 - 23534 -``` 23535 -Copyright (c) Joyent, Inc. and other Node contributors. 23536 -Permission is hereby granted, free of charge, to any person obtaining a copy 23537 -of this software and associated documentation files (the "Software"), to deal 23538 -in the Software without restriction, including without limitation the rights 23539 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23540 -copies of the Software, and to permit persons to whom the Software is 23541 -furnished to do so, subject to the following conditions: 23542 - 23543 -The above copyright notice and this permission notice shall be included in all 23544 -copies or substantial portions of the Software. 23545 - 23546 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23547 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23548 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23549 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23550 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23551 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23552 -SOFTWARE. 23553 -``` 23554 - 23555 - 23556 - 23557 - 23558 - 23559 - 23560 - 23561 - 23562 - 23563 - 23564 - 23565 - 23566 - 23567 - 23568 - 23569 - 23570 ---- 23571 - 23572 -### [react (17.0.2)](https://www.npmjs.com/package/react) 23573 - 23574 - 23575 -#### Declared Licenses 23576 -MIT 23577 - 23578 - 23579 -``` 23580 -MIT License 23581 - 23582 -Copyright (c) Facebook, Inc. and its affiliates. 23583 - 23584 -Permission is hereby granted, free of charge, to any person obtaining a copy 23585 -of this software and associated documentation files (the "Software"), to deal 23586 -in the Software without restriction, including without limitation the rights 23587 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23588 -copies of the Software, and to permit persons to whom the Software is 23589 -furnished to do so, subject to the following conditions: 23590 - 23591 -The above copyright notice and this permission notice shall be included in all 23592 -copies or substantial portions of the Software. 23593 - 23594 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23595 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23596 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23597 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23598 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23599 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23600 -SOFTWARE. 23601 - 23602 -``` 23603 - 23604 - 23605 - 23606 - 23607 - 23608 - 23609 -#### Other Licenses 23610 - 23611 - 23612 - 23613 - 23614 - 23615 - 23616 - 23617 - 23618 - 23619 - 23620 - 23621 - 23622 - 23623 ---- 23624 - 23625 -### [react-blurhash (0.1.3)](https://www.npmjs.com/package/react-blurhash) 23626 - 23627 - 23628 -#### Declared Licenses 23629 -MIT 23630 - 23631 - 23632 -``` 23633 -Copyright (c) 2022, react-blurhash Contributors 23634 -Permission is hereby granted, free of charge, to any person obtaining a copy 23635 -of this software and associated documentation files (the "Software"), to deal 23636 -in the Software without restriction, including without limitation the rights 23637 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23638 -copies of the Software, and to permit persons to whom the Software is 23639 -furnished to do so, subject to the following conditions: 23640 - 23641 -The above copyright notice and this permission notice shall be included in all 23642 -copies or substantial portions of the Software. 23643 - 23644 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23645 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23646 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23647 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23648 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23649 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23650 -SOFTWARE. 23651 -``` 23652 - 23653 - 23654 - 23655 - 23656 - 23657 - 23658 -#### Other Licenses 23659 - 23660 - 23661 - 23662 - 23663 - 23664 - 23665 - 23666 - 23667 - 23668 - 23669 - 23670 - 23671 - 23672 ---- 23673 - 23674 -### [react-dom (17.0.2)](https://www.npmjs.com/package/react-dom) 23675 - 23676 - 23677 -#### Declared Licenses 23678 -MIT 23679 - 23680 - 23681 -``` 23682 -MIT License 23683 - 23684 -Copyright (c) Facebook, Inc. and its affiliates. 23685 - 23686 -Permission is hereby granted, free of charge, to any person obtaining a copy 23687 -of this software and associated documentation files (the "Software"), to deal 23688 -in the Software without restriction, including without limitation the rights 23689 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23690 -copies of the Software, and to permit persons to whom the Software is 23691 -furnished to do so, subject to the following conditions: 23692 - 23693 -The above copyright notice and this permission notice shall be included in all 23694 -copies or substantial portions of the Software. 23695 - 23696 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23697 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23698 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23699 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23700 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23701 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23702 -SOFTWARE. 23703 - 23704 -``` 23705 - 23706 - 23707 - 23708 - 23709 - 23710 - 23711 -#### Other Licenses 23712 - 23713 - 23714 - 23715 - 23716 - 23717 - 23718 - 23719 - 23720 - 23721 - 23722 - 23723 - 23724 - 23725 ---- 23726 - 23727 -### [@types/node (17.0.8)](https://www.npmjs.com/package/@types/node) 23728 - 23729 - 23730 -#### Declared Licenses 23731 -MIT 23732 - 23733 - 23734 -``` 23735 - MIT License 23736 - 23737 - Copyright (c) Microsoft Corporation. 23738 - 23739 - Permission is hereby granted, free of charge, to any person obtaining a copy 23740 - of this software and associated documentation files (the "Software"), to deal 23741 - in the Software without restriction, including without limitation the rights 23742 - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23743 - copies of the Software, and to permit persons to whom the Software is 23744 - furnished to do so, subject to the following conditions: 23745 - 23746 - The above copyright notice and this permission notice shall be included in all 23747 - copies or substantial portions of the Software. 23748 - 23749 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23750 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23751 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23752 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23753 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23754 - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23755 - SOFTWARE 23756 - 23757 -``` 23758 - 23759 - 23760 - 23761 - 23762 - 23763 - 23764 -#### Other Licenses 23765 - 23766 - 23767 - 23768 - 23769 - 23770 - 23771 - 23772 - 23773 - 23774 - 23775 - 23776 - 23777 - 23778 ---- 23779 - 23780 -### [@types/pouchdb-core (7.0.9)](https://www.npmjs.com/package/@types/pouchdb-core) 23781 - 23782 - 23783 -#### Declared Licenses 23784 -MIT 23785 - 23786 - 23787 -``` 23788 - MIT License 23789 - 23790 - Copyright (c) Microsoft Corporation. 23791 - 23792 - Permission is hereby granted, free of charge, to any person obtaining a copy 23793 - of this software and associated documentation files (the "Software"), to deal 23794 - in the Software without restriction, including without limitation the rights 23795 - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23796 - copies of the Software, and to permit persons to whom the Software is 23797 - furnished to do so, subject to the following conditions: 23798 - 23799 - The above copyright notice and this permission notice shall be included in all 23800 - copies or substantial portions of the Software. 23801 - 23802 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23803 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23804 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23805 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23806 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23807 - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23808 - SOFTWARE 23809 - 23810 -``` 23811 - 23812 - 23813 - 23814 - 23815 - 23816 - 23817 -#### Other Licenses 23818 - 23819 - 23820 - 23821 - 23822 - 23823 - 23824 - 23825 - 23826 - 23827 - 23828 - 23829 - 23830 - 23831 ---- 23832 - 23833 - 23834 - 23835 - 23836 - 23837 - 23838 - 23839 - 23840 -[FOSSA]: # (Do not touch the comments below) 23841 - 23842 -[FOSSA]: # (==depsig=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855==) 23843 - 23844 - 23845 diff --git a/tsconfig.browser.json b/tsconfig.browser.json 23846 new file mode 100644 23847 index 0000000..696b924 23848 --- /dev/null 23849 +++ b/tsconfig.browser.json 23850 @@ -0,0 +1,29 @@ 23851 +{ 23852 + "compilerOptions": { 23853 + "composite": true, 23854 + "rootDir": "./src", 23855 + "target": "ESNext", 23856 + "useDefineForClassFields": true, 23857 + "lib": [ 23858 + "DOM", 23859 + "DOM.Iterable", 23860 + "ESNext" 23861 + ], 23862 + "allowJs": false, 23863 + "skipLibCheck": true, 23864 + "esModuleInterop": false, 23865 + "allowSyntheticDefaultImports": true, 23866 + "strict": true, 23867 + "forceConsistentCasingInFileNames": true, 23868 + "module": "ESNext", 23869 + "moduleResolution": "Node", 23870 + "resolveJsonModule": true, 23871 + "isolatedModules": true, 23872 + "jsx": "preserve", 23873 + "jsxFactory": "h", 23874 + "jsxFragmentFactory": "Fragment" 23875 + }, 23876 + "include": [ 23877 + "./src/**/*" 23878 + ] 23879 +} 23880 \ No newline at end of file 23881 diff --git a/tsconfig.json b/tsconfig.json 23882 index 73b5cb0..e5c8cb6 100644 23883 --- a/tsconfig.json 23884 +++ b/tsconfig.json 23885 @@ -1,33 +1,37 @@ 23886 { 23887 "compilerOptions": { 23888 - "target": "es2015", 23889 + "target": "ESNext", 23890 + "useDefineForClassFields": true, 23891 "lib": [ 23892 - "dom", 23893 - "dom.iterable", 23894 - "esnext" 23895 + "DOM", 23896 + "DOM.Iterable", 23897 + "ESNext" 23898 ], 23899 - "allowJs": true, 23900 + "allowJs": false, 23901 "skipLibCheck": true, 23902 + "esModuleInterop": false, 23903 + "allowSyntheticDefaultImports": true, 23904 "strict": true, 23905 "forceConsistentCasingInFileNames": true, 23906 - "noEmit": true, 23907 - "esModuleInterop": true, 23908 - "module": "esnext", 23909 - "moduleResolution": "node", 23910 + "module": "ESNext", 23911 + "moduleResolution": "Node", 23912 "resolveJsonModule": true, 23913 "isolatedModules": true, 23914 + "noEmit": true, 23915 "jsx": "preserve", 23916 - "incremental": true, 23917 - "allowSyntheticDefaultImports": true, 23918 - "experimentalDecorators": true, 23919 - "emitDecoratorMetadata": true 23920 + "jsxFactory": "h", 23921 + "jsxFragmentFactory": "Fragment" 23922 }, 23923 - "include": [ 23924 - "next-env.d.ts", 23925 - "**/*.ts", 23926 - "**/*.tsx" 23927 - ], 23928 "exclude": [ 23929 - "node_modules" 23930 + "./src/**/*", 23931 + "./scripts/**/*" 23932 + ], 23933 + "references": [ 23934 + { 23935 + "path": "./tsconfig.node.json" 23936 + }, 23937 + { 23938 + "path": "./tsconfig.browser.json" 23939 + } 23940 ] 23941 } 23942 \ No newline at end of file 23943 diff --git a/tsconfig.node.json b/tsconfig.node.json 23944 new file mode 100644 23945 index 0000000..bd79580 23946 --- /dev/null 23947 +++ b/tsconfig.node.json 23948 @@ -0,0 +1,11 @@ 23949 +{ 23950 + "compilerOptions": { 23951 + "composite": true, 23952 + "module": "esnext", 23953 + "moduleResolution": "node" 23954 + }, 23955 + "include": [ 23956 + "vite.config.ts", 23957 + "scripts/**/*" 23958 + ], 23959 +} 23960 \ No newline at end of file 23961 diff --git a/tsconfig.worker.json b/tsconfig.worker.json 23962 new file mode 100644 23963 index 0000000..3a26745 23964 --- /dev/null 23965 +++ b/tsconfig.worker.json 23966 @@ -0,0 +1,29 @@ 23967 +{ 23968 + "compilerOptions": { 23969 + "composite": true, 23970 + "rootDir": "./src", 23971 + "target": "ES5", 23972 + "useDefineForClassFields": true, 23973 + "lib": [ 23974 + "DOM", 23975 + "DOM.Iterable", 23976 + "ESNext" 23977 + ], 23978 + "allowJs": false, 23979 + "skipLibCheck": true, 23980 + "esModuleInterop": true, 23981 + "allowSyntheticDefaultImports": true, 23982 + "strict": true, 23983 + "forceConsistentCasingInFileNames": true, 23984 + "module": "CommonJS", 23985 + "moduleResolution": "Node", 23986 + "resolveJsonModule": true, 23987 + "isolatedModules": false, 23988 + "jsx": "preserve", 23989 + "jsxFactory": "h", 23990 + "jsxFragmentFactory": "Fragment" 23991 + }, 23992 + "include": [ 23993 + "./src/matrix/workers/**/*.ts" 23994 + ] 23995 +} 23996 \ No newline at end of file 23997 diff --git a/vite.config.ts b/vite.config.ts 23998 new file mode 100644 23999 index 0000000..b2a1232 24000 --- /dev/null 24001 +++ b/vite.config.ts 24002 @@ -0,0 +1,18 @@ 24003 +import { defineConfig, splitVendorChunkPlugin } from 'vite'; 24004 +import preact from '@preact/preset-vite'; 24005 + 24006 +// https://vitejs.dev/config/ 24007 +export default defineConfig({ 24008 + plugins: [preact(), splitVendorChunkPlugin()], 24009 + resolve: { 24010 + alias: { 24011 + react: 'preact/compat', 24012 + 'react-dom': 'preact/compat', 24013 + 'react-dom/test-utils': 'preact/test-utils', 24014 + 'react/jsx-runtime': 'preact/jsx-runtime' 24015 + } 24016 + }, 24017 + worker: { 24018 + format: 'iife', 24019 + } 24020 +});