From 8f914b8b8c41d77fade989b077f4cb357fb10842 Mon Sep 17 00:00:00 2001 From: Kyle Morel Date: Mon, 16 Oct 2023 12:45:28 -0700 Subject: [PATCH 1/6] Initial commit of teardown --- .codeclimate.yml | 57 + .dockerignore | 42 + .editorconfig | 23 + .gitattributes | 8 + .gitignore | 43 + CODE-OF-CONDUCT.md | 46 + COMPLIANCE.yaml | 11 + CONTRIBUTING.md | 9 + Dockerfile | 51 + LICENSE | 201 + LICENSE.md | 202 + SECURITY.md | 52 + _config.yml | 1 + app/.eslintrc.js | 51 + app/.gitignore | 45 + app/app.ts | 150 + app/bin/www.ts | 72 + app/config/custom-environment-variables.json | 17 + app/config/default.json | 11 + app/config/idplist-default.json | 23 + app/config/production.json | 1 + app/config/test.json | 22 + app/frontend-utils.ts | 167 + app/jest.config.js | 6 + app/lcov-fix.ts | 16 + app/package.json | 55 + app/src/components/log.ts | 104 + app/src/components/utils.ts | 56 + app/src/controllers/hello.ts | 17 + app/src/controllers/index.ts | 1 + app/src/routes/v1/hello.ts | 14 + app/src/routes/v1/index.ts | 18 + app/src/services/hello.ts | 13 + app/src/services/index.ts | 1 + app/tests/common/helper.ts | 49 + app/tests/unit/components/log.spec.ts | 39 + app/tests/unit/components/utils.spec.ts | 21 + app/tsconfig.json | 111 + bcgovpubcode.yaml | 58 + charts/bcbox/.helmignore | 23 + charts/bcbox/Chart.yaml | 42 + charts/bcbox/README.md | 81 + charts/bcbox/templates/NOTES.txt | 24 + charts/bcbox/templates/_helpers.tpl | 77 + charts/bcbox/templates/configmap.yaml | 12 + charts/bcbox/templates/deploymentconfig.yaml | 69 + charts/bcbox/templates/hpa.yaml | 37 + charts/bcbox/templates/networkpolicy.yaml | 22 + charts/bcbox/templates/route.yaml | 28 + charts/bcbox/templates/service.yaml | 16 + charts/bcbox/templates/serviceaccount.yaml | 13 + charts/bcbox/values.yaml | 124 + frontend/.eslintrc.js | 55 + frontend/.gitignore | 28 + frontend/README.md | 46 + frontend/env.d.ts | 1 + frontend/index.html | 13 + frontend/package-lock.json | 12026 ++++++++++++++++ frontend/package.json | 72 + frontend/public/favicon.ico | Bin 0 -> 22486 bytes frontend/src/App.vue | 43 + frontend/src/assets/base.css | 72 + frontend/src/assets/images/bc_logo.svg | 1 + frontend/src/assets/images/bc_logo_print.svg | 1 + frontend/src/assets/images/bc_logo_square.svg | 22 + frontend/src/assets/images/bcboxy.png | Bin 0 -> 29806 bytes frontend/src/assets/images/home_1.png | Bin 0 -> 130458 bytes frontend/src/assets/images/home_2.png | Bin 0 -> 38646 bytes frontend/src/assets/images/home_3.png | Bin 0 -> 107203 bytes frontend/src/assets/logo.svg | 1 + frontend/src/assets/main.scss | 71 + frontend/src/assets/primevue.scss | 118 + frontend/src/assets/variables.scss | 9 + .../src/components/form/CopyToClipboard.vue | 49 + frontend/src/components/form/Password.vue | 49 + frontend/src/components/form/TextInput.vue | 49 + frontend/src/components/form/index.ts | 3 + .../src/components/guards/RequireAuth.vue | 38 + frontend/src/components/guards/index.ts | 1 + frontend/src/components/layout/AppLayout.vue | 47 + frontend/src/components/layout/Footer.vue | 78 + frontend/src/components/layout/Header.vue | 57 + .../src/components/layout/LoginButton.vue | 46 + frontend/src/components/layout/Navbar.vue | 86 + .../src/components/layout/ProgressLoader.vue | 33 + frontend/src/components/layout/Spinner.vue | 18 + frontend/src/components/layout/index.ts | 7 + frontend/src/composables/useAlert.ts | 16 + frontend/src/interfaces/IAudit.ts | 6 + frontend/src/interfaces/index.ts | 1 + frontend/src/lib/primevue/index.ts | 15 + frontend/src/lib/primevue/useToast.ts | 49 + frontend/src/main.ts | 59 + frontend/src/router/index.ts | 111 + frontend/src/services/authService.ts | 115 + frontend/src/services/configService.ts | 62 + frontend/src/services/helloService.ts | 12 + frontend/src/services/index.ts | 3 + frontend/src/services/interceptors.ts | 35 + frontend/src/shims.d.ts | 5 + frontend/src/store/appStore.ts | 77 + frontend/src/store/authStore.ts | 128 + frontend/src/store/configStore.ts | 44 + frontend/src/store/helloStore.ts | 50 + frontend/src/store/index.ts | 4 + frontend/src/types/IdentityProvider.ts | 7 + frontend/src/types/index.ts | 1 + frontend/src/utils/constants.ts | 34 + frontend/src/utils/enums.ts | 8 + frontend/src/utils/formatters.ts | 39 + frontend/src/utils/utils.ts | 85 + frontend/src/views/DeveloperView.vue | 52 + frontend/src/views/Forbidden.vue | 13 + frontend/src/views/GenericView.vue | 5 + frontend/src/views/HomeView.vue | 67 + frontend/src/views/NotFound.vue | 13 + frontend/src/views/oidc/OidcCallbackView.vue | 37 + frontend/src/views/oidc/OidcLoginView.vue | 29 + frontend/src/views/oidc/OidcLogoutView.vue | 34 + frontend/tests/unit/App.spec.ts | 7 + .../unit/components/form/TextInput.spec.ts | 79 + .../unit/components/layout/Header.spec.ts | 42 + .../components/layout/LoginButton.spec.ts | 137 + frontend/tests/unit/store/appStore.spec.ts | 49 + frontend/tests/unit/store/authStore.spec.ts | 76 + frontend/tests/unit/store/configStore.spec.ts | 56 + frontend/tests/unit/utils/formatters.spec.ts | 14 + frontend/tsconfig.config.json | 12 + frontend/tsconfig.json | 126 + frontend/vite.config.ts | 46 + frontend/volar.config.js | 14 + 131 files changed, 17466 insertions(+) create mode 100644 .codeclimate.yml create mode 100644 .dockerignore create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CODE-OF-CONDUCT.md create mode 100644 COMPLIANCE.yaml create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 LICENSE.md create mode 100644 SECURITY.md create mode 100644 _config.yml create mode 100644 app/.eslintrc.js create mode 100644 app/.gitignore create mode 100644 app/app.ts create mode 100644 app/bin/www.ts create mode 100644 app/config/custom-environment-variables.json create mode 100644 app/config/default.json create mode 100644 app/config/idplist-default.json create mode 100644 app/config/production.json create mode 100644 app/config/test.json create mode 100644 app/frontend-utils.ts create mode 100644 app/jest.config.js create mode 100644 app/lcov-fix.ts create mode 100644 app/package.json create mode 100644 app/src/components/log.ts create mode 100644 app/src/components/utils.ts create mode 100644 app/src/controllers/hello.ts create mode 100644 app/src/controllers/index.ts create mode 100644 app/src/routes/v1/hello.ts create mode 100644 app/src/routes/v1/index.ts create mode 100644 app/src/services/hello.ts create mode 100644 app/src/services/index.ts create mode 100644 app/tests/common/helper.ts create mode 100644 app/tests/unit/components/log.spec.ts create mode 100644 app/tests/unit/components/utils.spec.ts create mode 100644 app/tsconfig.json create mode 100644 bcgovpubcode.yaml create mode 100644 charts/bcbox/.helmignore create mode 100644 charts/bcbox/Chart.yaml create mode 100644 charts/bcbox/README.md create mode 100644 charts/bcbox/templates/NOTES.txt create mode 100644 charts/bcbox/templates/_helpers.tpl create mode 100644 charts/bcbox/templates/configmap.yaml create mode 100644 charts/bcbox/templates/deploymentconfig.yaml create mode 100644 charts/bcbox/templates/hpa.yaml create mode 100644 charts/bcbox/templates/networkpolicy.yaml create mode 100644 charts/bcbox/templates/route.yaml create mode 100644 charts/bcbox/templates/service.yaml create mode 100644 charts/bcbox/templates/serviceaccount.yaml create mode 100644 charts/bcbox/values.yaml create mode 100644 frontend/.eslintrc.js create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/env.d.ts create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/src/App.vue create mode 100644 frontend/src/assets/base.css create mode 100644 frontend/src/assets/images/bc_logo.svg create mode 100644 frontend/src/assets/images/bc_logo_print.svg create mode 100644 frontend/src/assets/images/bc_logo_square.svg create mode 100644 frontend/src/assets/images/bcboxy.png create mode 100644 frontend/src/assets/images/home_1.png create mode 100644 frontend/src/assets/images/home_2.png create mode 100644 frontend/src/assets/images/home_3.png create mode 100644 frontend/src/assets/logo.svg create mode 100644 frontend/src/assets/main.scss create mode 100644 frontend/src/assets/primevue.scss create mode 100644 frontend/src/assets/variables.scss create mode 100644 frontend/src/components/form/CopyToClipboard.vue create mode 100644 frontend/src/components/form/Password.vue create mode 100644 frontend/src/components/form/TextInput.vue create mode 100644 frontend/src/components/form/index.ts create mode 100644 frontend/src/components/guards/RequireAuth.vue create mode 100644 frontend/src/components/guards/index.ts create mode 100644 frontend/src/components/layout/AppLayout.vue create mode 100644 frontend/src/components/layout/Footer.vue create mode 100644 frontend/src/components/layout/Header.vue create mode 100644 frontend/src/components/layout/LoginButton.vue create mode 100644 frontend/src/components/layout/Navbar.vue create mode 100644 frontend/src/components/layout/ProgressLoader.vue create mode 100644 frontend/src/components/layout/Spinner.vue create mode 100644 frontend/src/components/layout/index.ts create mode 100644 frontend/src/composables/useAlert.ts create mode 100644 frontend/src/interfaces/IAudit.ts create mode 100644 frontend/src/interfaces/index.ts create mode 100644 frontend/src/lib/primevue/index.ts create mode 100644 frontend/src/lib/primevue/useToast.ts create mode 100644 frontend/src/main.ts create mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/services/authService.ts create mode 100644 frontend/src/services/configService.ts create mode 100644 frontend/src/services/helloService.ts create mode 100644 frontend/src/services/index.ts create mode 100644 frontend/src/services/interceptors.ts create mode 100644 frontend/src/shims.d.ts create mode 100644 frontend/src/store/appStore.ts create mode 100644 frontend/src/store/authStore.ts create mode 100644 frontend/src/store/configStore.ts create mode 100644 frontend/src/store/helloStore.ts create mode 100644 frontend/src/store/index.ts create mode 100644 frontend/src/types/IdentityProvider.ts create mode 100644 frontend/src/types/index.ts create mode 100644 frontend/src/utils/constants.ts create mode 100644 frontend/src/utils/enums.ts create mode 100644 frontend/src/utils/formatters.ts create mode 100644 frontend/src/utils/utils.ts create mode 100644 frontend/src/views/DeveloperView.vue create mode 100644 frontend/src/views/Forbidden.vue create mode 100644 frontend/src/views/GenericView.vue create mode 100644 frontend/src/views/HomeView.vue create mode 100644 frontend/src/views/NotFound.vue create mode 100644 frontend/src/views/oidc/OidcCallbackView.vue create mode 100644 frontend/src/views/oidc/OidcLoginView.vue create mode 100644 frontend/src/views/oidc/OidcLogoutView.vue create mode 100644 frontend/tests/unit/App.spec.ts create mode 100644 frontend/tests/unit/components/form/TextInput.spec.ts create mode 100644 frontend/tests/unit/components/layout/Header.spec.ts create mode 100644 frontend/tests/unit/components/layout/LoginButton.spec.ts create mode 100644 frontend/tests/unit/store/appStore.spec.ts create mode 100644 frontend/tests/unit/store/authStore.spec.ts create mode 100644 frontend/tests/unit/store/configStore.spec.ts create mode 100644 frontend/tests/unit/utils/formatters.spec.ts create mode 100644 frontend/tsconfig.config.json create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts create mode 100644 frontend/volar.config.js diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..10764a4 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,57 @@ +version: "2" +exclude_patterns: + - config/ + - db/ + - dist/ + - features/ + - "**/node_modules/" + - script/ + - "**/spec/" + - "**/test/" + - "**/tests/" + - Tests/ + - "**/vendor/" + - "**/*_test.go" + - "**/*.d.ts" +plugins: + csslint: + enabled: true + editorconfig: + enabled: true + checks: + END_OF_LINE: + enabled: false + INDENTATION_SPACES: + enabled: false + INDENTATION_SPACES_AMOUNT: + enabled: false + TRAILINGSPACES: + enabled: false + eslint: + enabled: true + channel: "eslint-7" + config: + config: app/.eslintrc.js + fixme: + enabled: true + git-legal: + enabled: true + markdownlint: + enabled: true + checks: + MD002: + enabled: false + MD013: + enabled: false + MD029: + enabled: false + MD046: + enabled: false + nodesecurity: + enabled: true + sass-lint: + enabled: true + rules: + nesting-depth: + - 2 + - max-depth: 5 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d95ee2a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,42 @@ +# Editor directories and files +.DS_Store +.gradle +.nyc_output +.scannerwork +build +coverage +dist +files +**/e2e/videos +node_modules +# Ignore only top-level package-lock.json +/package-lock.json + +# Ignore Helm subcharts +charts/**/charts +Chart.lock + +# local env files +local.* +local-*.* +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.iml +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.mp4 + +# temp office files +~$* diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..689f0b8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,23 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.html] +indent_style = space +indent_size = 2 + +[*.{css,js,json,jsx,scss,ts,tsx,vue}] +indent_style = space +indent_size = 2 + +[.{babelrc,eslintrc}] +indent_style = space +indent_size = 2 + +[Jenkinsfile*] +indent_style = space +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fd57b60 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +# Autodetect text files and forces unix eols, so Windows does not break them +* text=auto eol=lf + +# Force images/fonts to be handled as binaries +*.jpg binary +*.jpeg binary +*.gif binary +*.png binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5fe9667 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Editor directories and files +.DS_Store +.gradle +.nyc_output +.scannerwork +build +coverage +dist +files +**/e2e/videos +node_modules +# Ignore only top-level package-lock.json +/package-lock.json + +# Ignore Helm subcharts +charts/**/charts +Chart.lock + +# local env files +*local.* +*local-*.* +.env.local +.env.*.local + + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.iml +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.mp4 + +# temp office files +~$* diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md new file mode 100644 index 0000000..0c1e1bb --- /dev/null +++ b/CODE-OF-CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at matthew.hall@gov.bc.ca. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/COMPLIANCE.yaml b/COMPLIANCE.yaml new file mode 100644 index 0000000..825499c --- /dev/null +++ b/COMPLIANCE.yaml @@ -0,0 +1,11 @@ +name: compliance +description: | + This document is used to track a projects PIA and STRA + compliance. +spec: + - name: PIA + status: TBD + last-updated: "2022-12-19T00:00:00.000Z" + - name: STRA + status: TBD + last-updated: "2022-12-19T00:00:00.000Z" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..43d4d4a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,9 @@ +# How to contribute + +Government employees, public and members of the private sector are encouraged to contribute to the repository by **forking and submitting a pull request**. + +(If you are new to GitHub, you might start with a [basic tutorial](https://help.github.com/articles/set-up-git) and check out a more detailed guide to [pull requests](https://help.github.com/articles/using-pull-requests/).) + +Pull requests will be evaluated by the repository guardians on a schedule and if deemed beneficial will be committed to the master. + +All contributors retain the original copyright to their stuff, but by contributing to this project, you grant a world-wide, royalty-free, perpetual, irrevocable, non-exclusive, transferable license to all users **under the terms of the [license](./LICENSE) under which this project is distributed**. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..74a2647 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +# FROM docker.io/node:16.15.0-alpine # Last known working alpine image + +# RedHat Image Catalog references +# https://catalog.redhat.com/software/containers/ubi9/nodejs-18/62e8e7ed22d1d3c2dfe2ca01 +# https://catalog.redhat.com/software/containers/ubi9/nodejs-18-minimal/62e8e919d4f57d92a9dee838 + +# +# Build the application +# +FROM registry.access.redhat.com/ubi9/nodejs-18:1-62.1692771036 as application + +ENV NO_UPDATE_NOTIFIER=true + +USER 0 +COPY app /tmp/src/app +WORKDIR /tmp/src/app +RUN chown -R 1001:0 /tmp/src/app + +USER 1001 +RUN npm ci --omit=dev + +# +# Build the frontend +# +FROM registry.access.redhat.com/ubi9/nodejs-18:1-62.1692771036 as frontend + +ENV NO_UPDATE_NOTIFIER=true + +USER 0 +COPY frontend /tmp/src/frontend +WORKDIR /tmp/src/frontend +RUN chown -R 1001:0 /tmp/src/frontend + +USER 1001 +RUN npm ci && npm run build + +# +# Create the final container image +# +FROM registry.access.redhat.com/ubi9/nodejs-18-minimal:1-67 + +ENV APP_PORT=8080 \ + NO_UPDATE_NOTIFIER=true + +COPY --from=application /tmp/src/app ${HOME} +COPY --from=frontend /tmp/src/frontend/dist ${HOME}/dist +COPY .git ${HOME}/.git +WORKDIR ${HOME} + +EXPOSE ${APP_PORT} +CMD ["npm", "run", "start"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..62dc6ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Province of British Columbia + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..427417b --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..c13f5e5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,52 @@ +# Security Policies and Procedures + +This document outlines security procedures and general policies for the BCBox +project. + +- [Supported Versions](#supported-versions) +- [Reporting a Bug](#reporting-a-bug) +- [Disclosure Policy](#disclosure-policy) +- [Comments on this Policy](#comments-on-this-policy) + +## Supported Versions + +At this time, only the latest version of BCBox is supported. + +| Version | Supported | +| ------- | ------------------ | +| 0.1.0 | :white_check_mark: | +| < 0.1.x | :x: | + +## Reporting a Bug + +The `CSS` team and community take all security bugs in `BCBox` seriously. +Thank you for improving the security of `BCBox`. We appreciate your efforts and +responsible disclosure and will make every effort to acknowledge your +contributions. + +Report security bugs by sending an email to . + +The `CSS` team will acknowledge your email within 48 hours, and will send a +more detailed response within 48 hours indicating the next steps in handling +your report. After the initial reply to your report, the security team will +endeavor to keep you informed of the progress towards a fix and full +announcement, and may ask for additional information or guidance. + +Report security bugs in third-party modules to the person or team maintaining +the module. + +## Disclosure Policy + +When the security team receives a security bug report, they will assign it to a +primary handler. This person will coordinate the fix and release process, +involving the following steps: + +- Confirm the problem and determine the affected versions. +- Audit code to find any potential similar problems. +- Prepare fixes for all releases still under maintenance. These fixes will be + released as fast as possible. + +## Comments on this Policy + +If you have suggestions on how this process could be improved please submit a +pull request. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..277f1f2 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman diff --git a/app/.eslintrc.js b/app/.eslintrc.js new file mode 100644 index 0000000..0d29dd9 --- /dev/null +++ b/app/.eslintrc.js @@ -0,0 +1,51 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution'); + +module.exports = { + root: true, + env: { + browser: true, + es2020: true, + jest: true, + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended' + ], + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + _: false + }, + parserOptions: { + ecmaVersion: 11, + }, + plugins: [ + '@typescript-eslint', + ], + rules: { + 'eol-last': ['error', 'always'], + indent: ['error', 2, { + 'SwitchCase': 1 + }], + 'linebreak-style': ['error', 'unix'], + 'max-len': ['warn', { 'code': 100, 'comments': 120, 'ignoreUrls': true }], + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', + quotes: ['error', 'single'], + semi: ['error', 'always'] + }, + overrides: [ + { + files: [ + '**/__tests__/*.{j,t}s?(x)', + '**/tests/unit/**/*.spec.{j,t}s?(x)' + ], + env: { + jest: true + } + } + ] +}; diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..c161af9 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,45 @@ +# Editor directories and files +.DS_Store +.gradle +.nyc_output +.scannerwork +build +coverage +dist +files +**/e2e/videos +node_modules +# Ignore only top-level package-lock.json +/package-lock.json + +# Ignore Helm subcharts +charts/**/charts +Chart.lock + +# local env files +local.* +local-*.* +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.iml +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.mp4 + +# temp office files +~$* + +# contains idp configuration - overrides default +idplist-override.json diff --git a/app/app.ts b/app/app.ts new file mode 100644 index 0000000..1648800 --- /dev/null +++ b/app/app.ts @@ -0,0 +1,150 @@ +import compression from 'compression'; +import config from 'config'; +import express from 'express'; +import { join } from 'path'; +// @ts-expect-error api-problem lacks a defined interface; code still works fine +import Problem from 'api-problem'; +import querystring from 'querystring'; + +import { getLogger, httpLogger } from './src/components/log'; +import { getGitRevision, readIdpList } from './src/components/utils'; +import v1Router from './src/routes/v1'; + +import type { Request, Response } from 'express'; + +const log = getLogger(module.filename); + +const state = { + gitRev: getGitRevision(), + ready: true, // No dependencies so application is always ready + shutdown: false +}; + +const appRouter = express.Router(); +const app = express(); +app.use(compression()); +app.use(express.json({ limit: config.get('server.bodyLimit') })); +app.use(express.urlencoded({ extended: true })); + +// Skip if running tests +if (process.env.NODE_ENV !== 'test') { + app.use(httpLogger); +} + +// Block requests until service is ready +app.use((_req: Request, res: Response, next: () => void): void => { + if (state.shutdown) { + new Problem(503, { details: 'Server is shutting down' }).send(res); + } else if (!state.ready) { + new Problem(503, { details: 'Server is not ready' }).send(res); + } else { + next(); + } +}); + +// Base API Directory +appRouter.get('/api', (_req: Request, res: Response): void => { + if (state.shutdown) { + throw new Error('Server shutting down'); + } else { + res.status(200).json({ + app: { + gitRev: state.gitRev, + name: process.env.npm_package_name, + nodeVersion: process.version, + version: process.env.npm_package_version + }, + endpoints: ['/api/v1'], + versions: [1] + }); + } +}); + +// Frontend configuration endpoint +appRouter.get('/config', (_req: Request, res: Response, next: (err: unknown) => void): void => { + try { + res.status(200).json({ + ...config.get('frontend'), + idpList: readIdpList() + }); + } catch (err) { + next(err); + } +}); + +// v1 Router +appRouter.use(config.get('server.apiPath'), v1Router); + +// Host the static frontend assets +appRouter.use('/', express.static(join(__dirname, 'dist'))); + +// Root level Router +app.use('/', appRouter); + +// Handle 500 +// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars +app.use((err: Problem, _req: Request, res: Response, _next: () => void): void => { + if (err.stack) { + log.error(err); + } + + if (err instanceof Problem) { + err.send(res, null); + } else { + new Problem(500, 'Server Error', { + detail: (err.message) ? err.message : err + }).send(res); + } +}); + +// Handle 404 +app.use((req: Request, res: Response): void => { + if (req.originalUrl.startsWith('/api')) { + // Return a 404 problem if attempting to access API + new Problem(404, 'Page Not Found', { + detail: req.originalUrl + }).send(res); + } else { + // Redirect any non-API requests to static frontend with redirect breadcrumb + const query = querystring.stringify({ ...req.query, r: req.path }); + res.redirect(`/?${query}`); + } +}); + +// Prevent unhandled errors from crashing application +process.on('unhandledRejection', (err: Error): void => { + if (err && err.stack) { + log.error(err); + } +}); + +// Graceful shutdown support +process.on('SIGTERM', shutdown); +process.on('SIGINT', shutdown); +process.on('SIGUSR1', shutdown); +process.on('SIGUSR2', shutdown); +process.on('exit', () => { + log.info('Exiting...'); +}); + +/** + * @function shutdown + * Shuts down this application after at least 3 seconds. + */ +function shutdown(): void { + log.info('Received kill signal. Shutting down...'); + // Wait 3 seconds before starting cleanup + if (!state.shutdown) setTimeout(cleanup, 3000); +} + +/** + * @function cleanup + * Cleans up connections in this application. + */ +function cleanup(): void { + log.info('Service no longer accepting traffic'); + state.shutdown = true; + process.exit(); +} + +export default app; diff --git a/app/bin/www.ts b/app/bin/www.ts new file mode 100644 index 0000000..1103cc3 --- /dev/null +++ b/app/bin/www.ts @@ -0,0 +1,72 @@ +#!/usr/bin/env node + +/** Module dependencies */ +import config from 'config'; +import http from 'http'; + +import app from '../app'; +import getLogger from '../src/components/log'; +const log = getLogger(module.filename); + +/** Normalize a port into a number, string, or false. */ +const normalizePort = (val: string) => { + const port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +}; + +/** Event listener for HTTP server "error" event. */ +const onError = (error: { syscall: string; code: string; }) => { + if (error.syscall !== 'listen') { + throw error; + } + + const bind = typeof port === 'string' ? + 'Pipe ' + port : + 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + log.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + log.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +}; + +/** Event listener for HTTP server "listening" event. */ +const onListening = () => { + const addr = server.address(); + const bind = typeof addr === 'string' ? + 'pipe ' + addr : + 'port ' + addr?.port; + log.info('Listening on ' + bind); +}; + +/** Get port from environment and store in Express. */ +const port = normalizePort(config.get('server.port')); +app.set('port', port); + +/** Create HTTP server. */ +const server = http.createServer(app); + +/** Listen on provided port, on all network interfaces. */ +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); diff --git a/app/config/custom-environment-variables.json b/app/config/custom-environment-variables.json new file mode 100644 index 0000000..be3f55d --- /dev/null +++ b/app/config/custom-environment-variables.json @@ -0,0 +1,17 @@ +{ + "frontend": { + "apiPath": "FRONTEND_APIPATH", + "notificationBanner": "FRONTEND_NOTIFICATION_BANNER", + "oidc": { + "authority": "FRONTEND_OIDC_AUTHORITY", + "clientId": "FRONTEND_OIDC_CLIENTID" + } + }, + "server": { + "apiPath": "SERVER_APIPATH", + "bodyLimit": "SERVER_BODYLIMIT", + "logFile": "SERVER_LOGFILE", + "logLevel": "SERVER_LOGLEVEL", + "port": "SERVER_PORT" + } +} diff --git a/app/config/default.json b/app/config/default.json new file mode 100644 index 0000000..1863dcb --- /dev/null +++ b/app/config/default.json @@ -0,0 +1,11 @@ +{ + "frontend": { + "apiPath": "api/v1" + }, + "server": { + "apiPath": "/api/v1", + "bodyLimit": "30mb", + "logLevel": "http", + "port": "8080" + } +} diff --git a/app/config/idplist-default.json b/app/config/idplist-default.json new file mode 100644 index 0000000..8be3117 --- /dev/null +++ b/app/config/idplist-default.json @@ -0,0 +1,23 @@ +[ + { + "name": "IDIR", + "elevatedRights": true, + "idp": "idir", + "identityKey": "idir_user_guid", + "searchable": true + }, + { + "name": "BCeID Basic", + "elevatedRights": false, + "idp": "bceidbasic", + "identityKey": "bceid_user_guid", + "searchable": false + }, + { + "name": "BCeID Business", + "elevatedRights": false, + "idp": "bceidbusiness", + "identityKey": "bceid_user_guid", + "searchable": false + } +] diff --git a/app/config/production.json b/app/config/production.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/app/config/production.json @@ -0,0 +1 @@ +{} diff --git a/app/config/test.json b/app/config/test.json new file mode 100644 index 0000000..1b6d8b1 --- /dev/null +++ b/app/config/test.json @@ -0,0 +1,22 @@ +{ + "frontend": { + "oidc": { + "authority": "https://some.authority", + "clientId": "client-frontend-local" + } + }, + "server": { + "keycloak": { + "clientId": "client", + "realm": "01234567", + "clientSecret": "password" + }, + "logLevel": "silent" + }, + "serviceClient": { + "commonServices": { + "username": "username", + "password": "password" + } + } +} diff --git a/app/frontend-utils.ts b/app/frontend-utils.ts new file mode 100644 index 0000000..35c76e7 --- /dev/null +++ b/app/frontend-utils.ts @@ -0,0 +1,167 @@ +// This script attempts to gracefully rebuild and update bcbox-frontend if necessary +/* eslint-disable no-console */ +import { + existsSync, + lstatSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + statSync, + writeFileSync +} from 'fs'; +import { basename, join } from 'path'; + +const FRONTEND_DIR = '../frontend'; +const DIST_DIR = 'dist'; +const TITLE = 'bcbox-frontend'; + +try { + const args = process.argv.slice(2); + switch (args[0]) { + case 'build': + buildComponents(); + break; + case 'clean': + cleanComponents(); + break; + case 'deploy': + deployComponents(); + break; + case 'purge': + console.log(`Purging "${DIST_DIR}"...`); + if (existsSync(DIST_DIR)) rmSync(DIST_DIR, { recursive: true }); + break; + default: + if (!existsSync(DIST_DIR) || !readdirSync(DIST_DIR).length) { + console.log(`${TITLE} not found under "${DIST_DIR}"`); + buildComponents(); + deployComponents(); + } else if (statSync(DIST_DIR).mtime < statSync(FRONTEND_DIR).mtime) { + console.log(`${TITLE} "${FRONTEND_DIR}" directory has been modified`); + buildComponents(); + deployComponents(); + } else { + console.log(`${TITLE} is present and up to date`); + } + } +} catch (err) { + console.log(`An error occured while managing ${TITLE}`); + process.exit(1); +} + +// +// Task Functions +// + +/** + * @function buildComponents + * @description Rebuild `bcbox-frontend` library + */ +function buildComponents() { + if (!existsSync(`${FRONTEND_DIR}/node_modules`)) { + console.warn(`${TITLE} missing dependencies. Reinstalling...`); + runSync('npm ci', FRONTEND_DIR); + } + console.log(`Rebuilding ${TITLE}...`); + runSync('npm run build', FRONTEND_DIR); + console.log(`${TITLE} has been rebuilt`); +} + +/** + * @function cleanComponents + * @description Clean `bcbox-frontend` library directory + */ +function cleanComponents() { + console.log(`Cleaning ${TITLE}...`); + runSync('npm run clean', FRONTEND_DIR); + console.log(`${TITLE} has been cleaned`); +} + +/** + * @function deployComponents + * @description Redeploy `bcbox-frontend` library + */ +function deployComponents() { + console.log(`Redeploying ${TITLE}...`); + if (existsSync(DIST_DIR)) rmSync(DIST_DIR, { recursive: true }); + copyDirRecursiveSync(`${FRONTEND_DIR}/${DIST_DIR}`, '.'); + console.log(`${TITLE} has been redeployed`); +} + +// +// Helper Functions +// + +/** + * @function runSync + * @description Execute a single shell command where `cmd` is a string + * @param {string} cmd Shell command to run + * @param {string} [cwd] Working directory of the command to run + */ +export function runSync(cmd: string, cwd: string | undefined) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { spawnSync } = require('child_process'); + const parts = cmd.split(/\s+/g); + const opts = { + cwd: cwd || undefined, + stdio: 'inherit', + shell: true + }; + + const p = spawnSync(parts[0], parts.slice(1), opts); + if (p.status) { + throw new Error(`Command "${cmd}" exited with status code "${p.status}"`); + } + if (p.signal) { + throw new Error(`Command "${cmd}" exited with signal "${p.signal}"`); + } +} + +/** + * @function copyFileSync + * @description Copies `source` file to `target` file + * @param {string} source Source file location + * @param {string} target Target file location + */ +export function copyFileSync(source: string, target: string) { + let targetFile = target; + + // If target is a directory, a new file with the same name will be created + if (existsSync(target)) { + if (lstatSync(target).isDirectory()) { + targetFile = join(target, basename(source)); + } + } + + writeFileSync(targetFile, readFileSync(source)); +} + +/** + * @function copyDirRecursiveSync + * @description Recursively copies `source` directory contents to `target` directory + * @param {string} source Source directory location + * @param {string} target Target directory location + */ +export function copyDirRecursiveSync(source: string, target: string) { + let files = []; + + // Check if folder needs to be created or integrated + const targetFolder = join(target, basename(source)); + if (!existsSync(targetFolder)) { + mkdirSync(targetFolder, { recursive: true }); + } + + // Copy + if (lstatSync(source).isDirectory()) { + files = readdirSync(source); + files.forEach(file => { + const curSource = join(source, file); + if (lstatSync(curSource).isDirectory()) { + copyDirRecursiveSync(curSource, targetFolder); + } else { + copyFileSync(curSource, targetFolder); + } + }); + } +} diff --git a/app/jest.config.js b/app/jest.config.js new file mode 100644 index 0000000..6329f3a --- /dev/null +++ b/app/jest.config.js @@ -0,0 +1,6 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + collectCoverage: true +}; diff --git a/app/lcov-fix.ts b/app/lcov-fix.ts new file mode 100644 index 0000000..7ca68c7 --- /dev/null +++ b/app/lcov-fix.ts @@ -0,0 +1,16 @@ +// Jest 25.x onwards emits coverage reports on a different source path +// https://stackoverflow.com/q/60323177 +import fs from 'fs'; +import process from 'process'; +const file = './coverage/lcov.info'; + +fs.readFile(file, 'utf8', (err, data) => { + if (err) { + return console.error(err); // eslint-disable-line no-console + } + const result = data.replace(/src/g, `${process.cwd()}/src`); + + fs.writeFile(file, result, 'utf8', err => { + if (err) return console.error(err); // eslint-disable-line no-console + }); +}); diff --git a/app/package.json b/app/package.json new file mode 100644 index 0000000..e4dca1d --- /dev/null +++ b/app/package.json @@ -0,0 +1,55 @@ +{ + "name": "vue3-scaffold-app", + "version": "0.1.0", + "private": true, + "description": "", + "author": "NR Common Service Showcase ", + "license": "Apache-2.0", + "scripts": { + "build": "ts-node ./frontend-utils.ts", + "clean": "rimraf coverage dist", + "clean:all": "npm run clean && ts-node ./frontend-utils.ts clean", + "debug": "ts-node-dev --debug --respawn --transpile-only --rs --watch bin,config,dist ./bin/www", + "lint": "eslint . **/www* --no-fix --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore", + "lint:fix": "eslint . **/www* --fix --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore", + "prelint": "npm run typecheck", + "pretest": "npm run lint", + "posttest": "ts-node ./lcov-fix.ts", + "purge": "rimraf node_modules", + "rebuild": "npm run clean && npm run build", + "reinstall": "npm run purge && npm install", + "serve": "ts-node-dev --respawn --transpile-only --rs --watch bin,config,dist ./bin/www", + "start": "ts-node --transpile-only ./bin/www", + "test": "jest --verbose --forceExit --detectOpenHandles", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "api-problem": "^9.0.1", + "axios": "^1.5.0", + "compression": "^1.7.4", + "config": "^3.3.9", + "express": "^4.18.2", + "express-winston": "^4.2.0", + "ts-node": "^10.9.1", + "winston": "^3.10.0", + "winston-transport": "^4.5.0" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.3.3", + "@types/compression": "^1.7.2", + "@types/config": "^3.3.0", + "@types/express": "^4.17.17", + "@types/jest": "^29.5.4", + "@types/node": "^20.5.7", + "@typescript-eslint/eslint-plugin": "^6.5.0", + "@typescript-eslint/parser": "^6.5.0", + "eslint": "^8.48.0", + "eslint-config-recommended": "^4.1.0", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.6.4", + "rimraf": "^5.0.1", + "ts-jest": "^29.1.1", + "ts-node-dev": "^2.0.0", + "typescript": "^5.2.2" + } +} diff --git a/app/src/components/log.ts b/app/src/components/log.ts new file mode 100644 index 0000000..01625b2 --- /dev/null +++ b/app/src/components/log.ts @@ -0,0 +1,104 @@ +import config from 'config'; +import { logger } from 'express-winston'; +// const jwt = require('jsonwebtoken'); +import { parse } from 'path'; +import { createLogger, format, transports } from 'winston'; +import Transport from 'winston-transport'; + +import type { Logger } from 'winston'; + +/** + * Class representing a winston transport writing to null + * @extends Transport + */ +export class NullTransport extends Transport { + /** + * Constructor + * @param {object} opts Winston Transport options + */ + constructor(opts: object) { + super(opts); + } + + /** + * The transport logger + * @param {object} _info Object to log + * @param {function} callback Callback function + */ + log(_info: object, callback: () => void) { + callback(); + } +} + +/** + * Main Winston Logger + * @returns {object} Winston Logger + */ +const log = createLogger({ + exitOnError: false, + format: format.combine( + format.errors({ stack: true }), // Force errors to show stacktrace + format.timestamp(), // Add ISO timestamp to each entry + format.json(), // Force output to be in JSON format + ), + level: config.get('server.logLevel') +}); + +if (process.env.NODE_ENV !== 'test') { + log.add(new transports.Console({ handleExceptions: true })); +} else { + log.add(new NullTransport({})); +} + +if (config.has('server.logFile')) { + log.add(new transports.File({ + filename: config.get('server.logFile'), + handleExceptions: true + })); +} + +/** + * Returns a Winston Logger or Child Winston Logger + * @param {string} [filename] Optional module filename path to annotate logs with + * @returns {object} A child logger with appropriate metadata if `filename` is defined. + * Otherwise returns a standard logger. + */ +export const getLogger = (filename: string | undefined): Logger => { + return filename ? log.child({ component: parse(filename).name }) : log; +}; + +/** + * Returns an express-winston middleware function for http logging + * @returns {function} An express-winston middleware function + */ +export const httpLogger = logger({ + colorize: false, + // Parses express information to insert into log output + // eslint-disable-next-line @typescript-eslint/no-explicit-any + dynamicMeta: (req, res: any) => { + // const token = jwt.decode((req.get('authorization') || '').slice(7)); + return { + // azp: token && token.azp || undefined, + contentLength: res.get('content-length'), + httpVersion: req.httpVersion, + ip: req.ip, + method: req.method, + path: req.path, + query: Object.keys(req.query).length ? req.query : undefined, + responseTime: res.responseTime, + statusCode: res.statusCode, + userAgent: req.get('user-agent') + }; + }, + expressFormat: true, // Use express style message strings + level: 'http', + meta: true, // Must be true for dynamicMeta to execute + metaField: null, // Set to null for all attributes to be at top level object + requestWhitelist: [], // Suppress default value output + responseWhitelist: [], // Suppress default value output + // Skip logging kube-probe requests + skip: (req) => !!req.get('user-agent')?.includes('kube-probe'), + winstonInstance: log, +}); + +export default getLogger; diff --git a/app/src/components/utils.ts b/app/src/components/utils.ts new file mode 100644 index 0000000..aabc9b6 --- /dev/null +++ b/app/src/components/utils.ts @@ -0,0 +1,56 @@ +import { existsSync, readFileSync } from 'fs'; +import { join } from 'path'; + +import { getLogger } from './log'; +const log = getLogger(module.filename); + +/** + * @function getGitRevision + * Gets the current git revision hash + * @see {@link https://stackoverflow.com/a/34518749} + * @returns {string} The git revision hash, or empty string + */ +export function getGitRevision(): string { + try { + const gitDir = (() => { + let dir = '.git', i = 0; + while (!existsSync(join(__dirname, dir)) && i < 5) { + dir = '../' + dir; + i++; + } + return dir; + })(); + + const head = readFileSync(join(__dirname, `${gitDir}/HEAD`), 'utf8') + .toString().trim(); + return (head.indexOf(':') === -1) + ? head + : readFileSync(join(__dirname, `${gitDir}/${head.substring(5)}`), 'utf8') + .toString().trim(); + } catch (err: any) { // eslint-disable-line @typescript-eslint/no-explicit-any + log.warn(err.message, { function: 'getGitRevision' }); + return ''; + } +} + +/** +* @function readIdpList +* Acquires the list of identity providers to be used +* @returns {object[]} A promise resolving to an array of idp provider objects +*/ +export function readIdpList(): object[] { + const configDir = '../../config'; + const defaultFile = 'idplist-default.json'; + const overrideFile = 'idplist-local.json'; + + let idpList = []; + + if (existsSync(join(__dirname, configDir, overrideFile))) { + idpList = JSON.parse(readFileSync(join(__dirname, configDir, overrideFile), 'utf8')); + } else if (existsSync(join(__dirname, configDir, defaultFile))) { + idpList = JSON.parse(readFileSync(join(__dirname, configDir, defaultFile), 'utf8')); + } + + return idpList; +} + diff --git a/app/src/controllers/hello.ts b/app/src/controllers/hello.ts new file mode 100644 index 0000000..7e11d1d --- /dev/null +++ b/app/src/controllers/hello.ts @@ -0,0 +1,17 @@ +import { helloService } from '../services'; + +import type { NextFunction, Request, Response } from 'express'; + +const controller = { + getHello: async (_req: Request, res: Response, next: NextFunction) => { + try { + const response: unknown = await helloService.getHello(); + res.status(200).send(response); + } + catch(e: unknown) { + next(e); + } + } +}; + +export default controller; diff --git a/app/src/controllers/index.ts b/app/src/controllers/index.ts new file mode 100644 index 0000000..2538acb --- /dev/null +++ b/app/src/controllers/index.ts @@ -0,0 +1 @@ +export { default as helloController } from './hello'; diff --git a/app/src/routes/v1/hello.ts b/app/src/routes/v1/hello.ts new file mode 100644 index 0000000..a82ffd5 --- /dev/null +++ b/app/src/routes/v1/hello.ts @@ -0,0 +1,14 @@ +import express from 'express'; + +import { helloController } from '../../controllers'; + +import type { NextFunction, Request, Response } from 'express'; + +const router = express.Router(); + +// Hello endpoint +router.get('/', (req: Request, res: Response, next: NextFunction): void => { + helloController.getHello(req, res, next); +}); + +export default router; diff --git a/app/src/routes/v1/index.ts b/app/src/routes/v1/index.ts new file mode 100644 index 0000000..ccba08a --- /dev/null +++ b/app/src/routes/v1/index.ts @@ -0,0 +1,18 @@ +import express from 'express'; +import hello from './hello'; + +const router = express.Router(); + +// Base v1 Responder +router.get('/', (_req, res) => { + res.status(200).json({ + endpoints: [ + '/hello', + ] + }); +}); + +/** Config Router */ +router.use('/hello', hello); + +export default router; diff --git a/app/src/services/hello.ts b/app/src/services/hello.ts new file mode 100644 index 0000000..533d278 --- /dev/null +++ b/app/src/services/hello.ts @@ -0,0 +1,13 @@ +const service = { + getHello: async () => { + try { + const response = 'Welcome to the Vue 3 Scaffold!'; + return response; + } + catch(e: unknown) { + throw e; + } + } +}; + +export default service; diff --git a/app/src/services/index.ts b/app/src/services/index.ts new file mode 100644 index 0000000..b4d4bd5 --- /dev/null +++ b/app/src/services/index.ts @@ -0,0 +1 @@ +export { default as helloService } from './hello'; diff --git a/app/tests/common/helper.ts b/app/tests/common/helper.ts new file mode 100644 index 0000000..d2f4539 --- /dev/null +++ b/app/tests/common/helper.ts @@ -0,0 +1,49 @@ +import express from 'express'; +// @ts-expect-error api-problem lacks a defined interface; code still works fine +import Problem from 'api-problem'; + +import type { Express, Request, Response } from 'express'; + +/** + * @class helper + * Provides helper utilities that are commonly used in tests + */ +const helper = { + /** + * @function expressHelper + * Creates a stripped-down simple Express server object + * @param {string} basePath The path to mount the `router` on + * @param {object} router An express router object to mount + * @returns {object} A simple express server object with `router` mounted to `basePath` + */ + expressHelper: (basePath: string, router: Express): object => { + const app = express(); + + app.use(express.json()); + app.use(express.urlencoded({ + extended: false + })); + app.use(basePath, router); + + // Handle 500 + // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars + app.use((err: Problem, _req: Request, res: Response, _next: () => void): void => { + if (err instanceof Problem) { + err.send(res); + } else { + new Problem(500, { + details: (err.message) ? err.message : err + }).send(res); + } + }); + + // Handle 404 + app.use((_req, res) => { + new Problem(404).send(res); + }); + + return app; + } +}; + +export default helper; diff --git a/app/tests/unit/components/log.spec.ts b/app/tests/unit/components/log.spec.ts new file mode 100644 index 0000000..382e59f --- /dev/null +++ b/app/tests/unit/components/log.spec.ts @@ -0,0 +1,39 @@ +// TODO: Figure out how to prevent this another way? +// Without this export line you'll see the below error, something to do with global variable clashing in TS +// Cannot redeclare block-scoped variable 'config'.ts(2451) +import config from 'config'; +import type { Logger } from 'winston'; + +import getLogger, { httpLogger } from '../../../src/components/log'; + +describe('getLogger', () => { + const assertLogger = (log: Logger): void => { + expect(log).toBeTruthy(); + expect(typeof log).toBe('object'); + expect(typeof log.pipe).toBe('function'); + expect(log.exitOnError).toBeFalsy(); + expect(log.format).toBeTruthy(); + expect(log.level).toBe(config.get('server.logLevel')); + expect(log.transports).toHaveLength(1); + }; + + it('should return a winston logger', () => { + const result = getLogger(undefined); + assertLogger(result); + }); + + it('should return a child winston logger with metadata overrides', () => { + const result = getLogger('test'); + assertLogger(result); + }); +}); + +describe('httpLogger', () => { + it('should return a winston middleware function', () => { + const result = httpLogger; + + expect(result).toBeTruthy(); + expect(typeof result).toBe('function'); + expect(result.length).toBe(3); + }); +}); diff --git a/app/tests/unit/components/utils.spec.ts b/app/tests/unit/components/utils.spec.ts new file mode 100644 index 0000000..6e3a11e --- /dev/null +++ b/app/tests/unit/components/utils.spec.ts @@ -0,0 +1,21 @@ +import { getGitRevision, readIdpList } from '../../../src/components/utils'; + +beforeEach(() => { + jest.resetAllMocks(); +}); + +afterAll(() => { + jest.restoreAllMocks(); +}); + +describe('getGitRevision', () => { + it('should return a string', () => { + expect(typeof getGitRevision()).toBe('string'); + }); +}); + +describe('readIdpList', () => { + it('should return an array of objects', () => { + expect(Array.isArray(readIdpList())).toBeTruthy(); + }); +}); diff --git a/app/tsconfig.json b/app/tsconfig.json new file mode 100644 index 0000000..a9d0c13 --- /dev/null +++ b/app/tsconfig.json @@ -0,0 +1,111 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "CommonJS" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": ".", /* Specify the base directory to resolve non-relative module names. */ + "paths": { + "@/*": [ + "src/*" + ] + }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + "preserveValueImports": false, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": false /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "src/tests", + "node_modules" + ], +} diff --git a/bcgovpubcode.yaml b/bcgovpubcode.yaml new file mode 100644 index 0000000..2fa25e1 --- /dev/null +++ b/bcgovpubcode.yaml @@ -0,0 +1,58 @@ +--- +data_management_roles: + data_custodian: Fraser Marshall + product_owner: Sharolyn Hurley +product_external_dependencies: + common_components: + - Common-Object-Management-Service + identity_authorization: + - IDIR + - BceId + - Business-BceId +product_information: + business_capabilities_standard: + - Manage Object Storage Objects (CRUD) + - Manage Object Storage Objects (Search/Filter) + - Manage Object Storage Objects (Permission Management) + - Manage Object Storage Objects (Share publicly) + ministry: + - Water, Land and Resource Stewardship + product_acronym: BCBox + product_description: >- + BCBox is a hosted user interface that serves as a common front-end consumer + of the hosted COMS API and can be used as a simple dropbox to allow file + sharing and permission management using S3. + product_name: BCBox + product_status: maturing + product_urls: + - https://bcbox.nrs.gov.bc.ca + program_area: >- + Natural Resource Information and Digital Services - Development and Digital + Services +product_technology_information: + backend_frameworks: + - name: Express + version: 4.18.2 + backend_languages_version: + - name: JavaScript + version: ecmaVersion 11 / es2020 + ci_cd_tools: + - GitHub-Actions + - Helm + frontend_frameworks: + - name: Vue + version: 3.2.47 + - name: Other + version: Pinia 2.0.32 + - name: Other + version: Primevue (3.23.0) + - name: Other + version: oidc-client-ts (2.2.1) + frontend_languages: + - name: TypeScript + version: 4.8.4 + - name: JavaScript + version: ecmaVersion 11 / es2020 + hosting_platforms: + - Private-Cloud-Openshift +version: 1 diff --git a/charts/bcbox/.helmignore b/charts/bcbox/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/bcbox/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/bcbox/Chart.yaml b/charts/bcbox/Chart.yaml new file mode 100644 index 0000000..46fecf2 --- /dev/null +++ b/charts/bcbox/Chart.yaml @@ -0,0 +1,42 @@ +apiVersion: v2 +name: bcbox +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.0.9 +kubeVersion: ">= 1.13.0" +description: A frontend UI for managing access control to S3 Objects +# A chart can be either an 'application' or a 'library' chart. +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application +keywords: + - nodejs + - javascript + - typescript + - docker + - microservice + - s3 + - document-management + - access-control + - object-storage + - domo + - vue +home: https://bcgov.github.io/bcbox +sources: + - https://github.com/bcgov/bcbox +dependencies: [] +maintainers: + - name: NR Common Service Showcase Team + email: NR.CommonServiceShowcase@gov.bc.ca + url: https://bcgov.github.io/common-service-showcase/team.html +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "0.1.0" +deprecated: false +annotations: {} diff --git a/charts/bcbox/README.md b/charts/bcbox/README.md new file mode 100644 index 0000000..9b7190b --- /dev/null +++ b/charts/bcbox/README.md @@ -0,0 +1,81 @@ +# bcbox + +![Version: 0.0.9](https://img.shields.io/badge/Version-0.0.9-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.0](https://img.shields.io/badge/AppVersion-0.4.0-informational?style=flat-square) + +A frontend UI for managing access control to S3 Objects + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| NR Common Service Showcase Team | | | + +## Source Code + +* + +## Requirements + +Kubernetes: `>= 1.13.0` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| autoscaling.behavior.scaleDown.policies[0].periodSeconds | int | `120` | | +| autoscaling.behavior.scaleDown.policies[0].type | string | `"Pods"` | | +| autoscaling.behavior.scaleDown.policies[0].value | int | `1` | | +| autoscaling.behavior.scaleDown.selectPolicy | string | `"Max"` | | +| autoscaling.behavior.scaleDown.stabilizationWindowSeconds | int | `120` | | +| autoscaling.behavior.scaleUp.policies[0].periodSeconds | int | `30` | | +| autoscaling.behavior.scaleUp.policies[0].type | string | `"Pods"` | | +| autoscaling.behavior.scaleUp.policies[0].value | int | `2` | | +| autoscaling.behavior.scaleUp.selectPolicy | string | `"Max"` | | +| autoscaling.behavior.scaleUp.stabilizationWindowSeconds | int | `0` | | +| autoscaling.enabled | bool | `false` | | +| autoscaling.maxReplicas | int | `16` | | +| autoscaling.minReplicas | int | `2` | | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| config.configMap.FRONTEND_APIPATH | string | `"api/v1"` | | +| config.configMap.FRONTEND_COMS_APIPATH | string | `nil` | | +| config.configMap.FRONTEND_OIDC_AUTHORITY | string | `nil` | | +| config.configMap.FRONTEND_OIDC_CLIENTID | string | `nil` | | +| config.configMap.SERVER_APIPATH | string | `"/api/v1"` | | +| config.configMap.SERVER_BODYLIMIT | string | `"30mb"` | | +| config.configMap.SERVER_LOGLEVEL | string | `"http"` | | +| config.configMap.SERVER_PORT | string | `"8080"` | | +| config.enabled | bool | `false` | | +| config.releaseScoped | bool | `false` | | +| failurePolicy | string | `"Retry"` | | +| fullnameOverride | string | `nil` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"ghcr.io/bcgov"` | | +| image.tag | string | `nil` | | +| imagePullSecrets | list | `[]` | | +| nameOverride | string | `nil` | | +| networkPolicy.enabled | bool | `true` | | +| podAnnotations | object | `{}` | | +| podSecurityContext | object | `{}` | | +| replicaCount | int | `2` | | +| resources.limits.cpu | string | `"200m"` | | +| resources.limits.memory | string | `"256Mi"` | | +| resources.requests.cpu | string | `"10m"` | | +| resources.requests.memory | string | `"128Mi"` | | +| route.annotations | object | `{}` | | +| route.enabled | bool | `true` | | +| route.host | string | `"chart-example.local"` | | +| route.tls.insecureEdgeTerminationPolicy | string | `"Redirect"` | | +| route.tls.termination | string | `"edge"` | | +| route.wildcardPolicy | string | `"None"` | | +| securityContext | object | `{}` | | +| service.port | int | `8080` | | +| service.portName | string | `"http"` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.enabled | bool | `false` | | +| serviceAccount.name | string | `nil` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/charts/bcbox/templates/NOTES.txt b/charts/bcbox/templates/NOTES.txt new file mode 100644 index 0000000..f05141c --- /dev/null +++ b/charts/bcbox/templates/NOTES.txt @@ -0,0 +1,24 @@ +{{- $configMapName := printf "%s-%s" (include "bcbox.configname" .) "config" }} +{{- $configMap := (lookup "v1" "ConfigMap" .Release.Namespace $configMapName ) }} +Get the application URL by running these commands: +{{- if .Values.route.enabled }} + http{{ if $.Values.route.tls }}s{{ end }}://{{ .Values.route.host }}{{ .Values.route.path }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "bcbox.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "bcbox.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "bcbox.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "bcbox.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} +{{- if not $configMap }} + +Make sure that ConfigMap "{{ $configMapName }}" is defined in the namespace; the deployment will fail to run without it! +{{- end }} diff --git a/charts/bcbox/templates/_helpers.tpl b/charts/bcbox/templates/_helpers.tpl new file mode 100644 index 0000000..c456977 --- /dev/null +++ b/charts/bcbox/templates/_helpers.tpl @@ -0,0 +1,77 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "bcbox.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "bcbox.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" $name .Release.Name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Define the config pattern of the chart based on options. +*/}} +{{- define "bcbox.configname" -}} +{{- if .Values.config.releaseScoped }} +{{- include "bcbox.fullname" . }} +{{- else }} +{{- include "bcbox.name" . }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "bcbox.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "bcbox.labels" -}} +helm.sh/chart: {{ include "bcbox.chart" . }} +app: {{ include "bcbox.fullname" . }} +{{ include "bcbox.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/component: backend +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/part-of: {{ .Release.Name }} +app.openshift.io/runtime: nodejs +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "bcbox.selectorLabels" -}} +app.kubernetes.io/name: {{ include "bcbox.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "bcbox.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "bcbox.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/bcbox/templates/configmap.yaml b/charts/bcbox/templates/configmap.yaml new file mode 100644 index 0000000..4c542f1 --- /dev/null +++ b/charts/bcbox/templates/configmap.yaml @@ -0,0 +1,12 @@ +{{- if .Values.config.enabled }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "bcbox.configname" . }}-config + {{- if not .Values.config.releaseScoped }} + annotations: + "helm.sh/resource-policy": keep + {{- end }} +data: {{ toYaml .Values.config.configMap | nindent 2 }} +{{- end }} diff --git a/charts/bcbox/templates/deploymentconfig.yaml b/charts/bcbox/templates/deploymentconfig.yaml new file mode 100644 index 0000000..132dcb4 --- /dev/null +++ b/charts/bcbox/templates/deploymentconfig.yaml @@ -0,0 +1,69 @@ +--- +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + name: {{ include "bcbox.fullname" . }} + labels: + {{- include "bcbox.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: 10 + selector: + {{- include "bcbox.selectorLabels" . | nindent 4 }} + strategy: + resources: + {{- toYaml .Values.resources | nindent 6 }} + rollingParams: + timeoutSeconds: 600 + type: Rolling + template: + metadata: + labels: {{ include "bcbox.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: {{ toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.serviceAccount.create }} + serviceAccountName: {{ include "bcbox.serviceAccountName" . }} + {{- end }} + {{- with .Values.podSecurityContext }} + securityContext: {{ toYaml . | nindent 8 }} + {{- end }} + containers: + - name: app + {{- with .Values.securityContext }} + securityContext: {{ toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.repository }}/{{ .Chart.Name }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: {{ .Values.service.port }} + protocol: TCP + livenessProbe: + failureThreshold: 3 + httpGet: + path: {{ .Values.route.path }} + port: {{ .Values.service.port }} + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: {{ .Values.route.path }} + port: {{ .Values.service.port }} + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 1 + resources: {{ toYaml .Values.resources | nindent 12 }} + env: + - name: NODE_ENV + value: production + envFrom: + - configMapRef: + name: {{ include "bcbox.configname" . }}-config + restartPolicy: Always + terminationGracePeriodSeconds: 30 + test: false + triggers: + - type: ConfigChange diff --git a/charts/bcbox/templates/hpa.yaml b/charts/bcbox/templates/hpa.yaml new file mode 100644 index 0000000..559ecb5 --- /dev/null +++ b/charts/bcbox/templates/hpa.yaml @@ -0,0 +1,37 @@ +{{- if .Values.autoscaling.enabled }} +--- +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "bcbox.fullname" . }} + labels: + {{- include "bcbox.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps.openshift.io/v1 + kind: DeploymentConfig + name: {{ include "bcbox.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} + {{- with .Values.autoscaling.behavior }} + behavior: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/bcbox/templates/networkpolicy.yaml b/charts/bcbox/templates/networkpolicy.yaml new file mode 100644 index 0000000..ab1bd2c --- /dev/null +++ b/charts/bcbox/templates/networkpolicy.yaml @@ -0,0 +1,22 @@ +{{- if .Values.networkPolicy.enabled }} +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: allow-openshift-ingress-to-{{ include "bcbox.fullname" . }}-app + labels: + {{- include "bcbox.labels" . | nindent 4 }} +spec: + ingress: + - from: + - namespaceSelector: + matchLabels: + network.openshift.io/policy-group: ingress + - podSelector: + matchLabels: {{ include "bcbox.selectorLabels" . | nindent 14 }} + ports: + - port: {{ default "8080" .Values.config.configMap.SERVER_PORT | atoi }} + protocol: TCP + podSelector: + matchLabels: {{- include "bcbox.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/charts/bcbox/templates/route.yaml b/charts/bcbox/templates/route.yaml new file mode 100644 index 0000000..a1b56f5 --- /dev/null +++ b/charts/bcbox/templates/route.yaml @@ -0,0 +1,28 @@ +{{- if .Values.route.enabled -}} +--- +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + name: {{ include "bcbox.fullname" . }} + labels: + {{- include "bcbox.labels" . | nindent 4 }} + {{- with .Values.route.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + host: {{ .Values.route.host | quote }} + {{- if .Values.route.path }} + path: {{ .Values.route.path }} + {{- end }} + port: + targetPort: {{ .Values.service.portName }} + tls: + insecureEdgeTerminationPolicy: {{ .Values.route.tls.insecureEdgeTerminationPolicy }} + termination: {{ .Values.route.tls.termination }} + to: + kind: Service + name: {{ include "bcbox.fullname" . }} + weight: 100 + wildcardPolicy: {{ .Values.route.wildcardPolicy }} +{{- end }} diff --git a/charts/bcbox/templates/service.yaml b/charts/bcbox/templates/service.yaml new file mode 100644 index 0000000..765b923 --- /dev/null +++ b/charts/bcbox/templates/service.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "bcbox.fullname" . }} + labels: + {{- include "bcbox.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - name: {{ .Values.service.portName }} + port: {{ .Values.service.port }} + protocol: TCP + targetPort: {{ .Values.service.port }} + selector: + {{- include "bcbox.selectorLabels" . | nindent 4 }} diff --git a/charts/bcbox/templates/serviceaccount.yaml b/charts/bcbox/templates/serviceaccount.yaml new file mode 100644 index 0000000..f8c092f --- /dev/null +++ b/charts/bcbox/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.enabled -}} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "bcbox.serviceAccountName" . }} + labels: + {{- include "bcbox.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/bcbox/values.yaml b/charts/bcbox/values.yaml new file mode 100644 index 0000000..8b79335 --- /dev/null +++ b/charts/bcbox/values.yaml @@ -0,0 +1,124 @@ +# Default values for bcbox. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 2 + +image: + repository: ghcr.io/bcgov + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: ~ + +imagePullSecrets: [] +nameOverride: ~ +fullnameOverride: ~ + +# DeploymentConfig pre-hook failure behavior +failurePolicy: Retry + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +autoscaling: + enabled: false + + # Directly modify scaling behavior and frequency + behavior: + scaleDown: + stabilizationWindowSeconds: 120 + selectPolicy: Max + policies: + - type: Pods + value: 1 + periodSeconds: 120 + scaleUp: + stabilizationWindowSeconds: 0 + selectPolicy: Max + policies: + - type: Pods + value: 2 + periodSeconds: 30 + minReplicas: 2 + maxReplicas: 16 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +serviceAccount: + # Specifies whether a service account should be created + enabled: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: ~ + +networkPolicy: + enabled: true + +service: + type: ClusterIP + port: 8080 + portName: http + +route: + enabled: true + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + host: chart-example.local + # path: / + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + wildcardPolicy: None + +resources: + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + limits: + cpu: 200m + memory: 256Mi + requests: + cpu: 10m + memory: 128Mi + +config: + # Set to true if you want to let Helm manage and overwrite your configmaps. + enabled: false + + # This should be set to true if and only if you require configmaps and secrets to be release + # scoped. In the event you want all instances in the same namespace to share a similar + # configuration, this should be set to false + releaseScoped: false + + # These values will be wholesale added to the configmap as is; refer to the bcbox + # documentation for what each of these values mean and whether you need them defined. + # Ensure that all values are represented explicitly as strings, as non-string values will + # not translate over as expected into container environment variables. + # For configuration keys named `*_ENABLED`, either leave them commented/undefined, or set them + # to string value "true". + configMap: + FRONTEND_APIPATH: "api/v1" + FRONTEND_COMS_APIPATH: ~ + # FRONTEND_NOTIFICATION_BANNER: ~ + FRONTEND_OIDC_AUTHORITY: ~ + FRONTEND_OIDC_CLIENTID: ~ + SERVER_APIPATH: "/api/v1" + SERVER_BODYLIMIT: "30mb" + # SERVER_STATICFILES: ~ + # SERVER_LOGFILE: ~ + SERVER_LOGLEVEL: "http" + SERVER_PORT: "8080" diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js new file mode 100644 index 0000000..2808685 --- /dev/null +++ b/frontend/.eslintrc.js @@ -0,0 +1,55 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution'); + +module.exports = { + root: true, + env: { + browser: true, + es2020: true + }, + extends: [ + '@vue/eslint-config-typescript', + 'eslint:recommended', + 'plugin:vitest-globals/recommended', + 'plugin:vue/vue3-recommended' + ], + overrides: [ + { + files: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx,vue}'], + env: { + 'vitest-globals/env': true + } + } + ], + parserOptions: { + ecmaVersion: 11, + }, + plugins: [], + rules: { + 'eol-last': ['error', 'always'], + indent: ['error', 2, { + 'SwitchCase': 1 + }], + 'linebreak-style': ['error', 'unix'], + 'max-len': ['warn', { 'code': 120, 'comments': 120, 'ignoreUrls': true }], + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', + quotes: ['error', 'single'], + semi: ['error', 'always'], + 'vue/component-tags-order': [ + 'error', + { + order: ['script', 'template', 'style'], + }, + ], + 'vue/html-self-closing': [ + 'error', + { + 'html': { + 'void': 'any' + } + } + ], + 'vue/multi-word-component-names': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + }, +}; diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..3a7949e --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,46 @@ +# app + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/frontend/env.d.ts b/frontend/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/frontend/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..c1b9063 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + BCBox + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..09452f8 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,12026 @@ +{ + "name": "vue3-scaffold-frontend", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "vue3-scaffold-frontend", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@bcgov/bc-sans": "^2.0.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/vue-fontawesome": "^3.0.3", + "axios": "^1.5.0", + "date-fns": "^2.30.0", + "filesize": "^10.0.12", + "oidc-client-ts": "^2.2.5", + "pinia": "^2.1.6", + "pinia-plugin-persistedstate": "^3.2.0", + "primeflex": "^3.3.1", + "primeicons": "^6.0.1", + "primevue": "^3.32.2", + "qrcode.vue": "^3.4.1", + "vee-validate": "^4.11.3", + "vue": "^3.3.4", + "vue-router": "^4.2.4", + "yup": "^1.2.0" + }, + "devDependencies": { + "@pinia/testing": "^0.1.3", + "@rushstack/eslint-patch": "^1.3.3", + "@testing-library/vue": "^7.0.0", + "@tsconfig/node18": "^2.0.1", + "@types/node": "~18.16.16", + "@vitejs/plugin-vue": "^4.3.4", + "@vitejs/plugin-vue-jsx": "^3.0.2", + "@vitest/coverage-c8": "^0.33.0", + "@vitest/coverage-istanbul": "^0.34.3", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/test-utils": "^2.4.1", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.48.0", + "eslint-plugin-vitest-globals": "^1.4.0", + "eslint-plugin-vue": "^9.17.0", + "jsdom": "^22.1.0", + "rimraf": "^5.0.1", + "sass": "^1.66.1", + "ts-node": "^10.9.1", + "typescript": "~4.8.4", + "vite": "^4.4.9", + "vitest": "^0.34.3", + "volar-service-eslint": "^0.0.11", + "vue-tsc": "^1.8.8" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", + "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.11", + "@babel/parser": "^7.22.11", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.10", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", + "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", + "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", + "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", + "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", + "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.11", + "@babel/types": "^7.22.11", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", + "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcgov/bc-sans": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-2.0.0.tgz", + "integrity": "sha512-hgCYDEwVWZ0t/yzmo802D1oF3hhzDjsjpgB82EZcDEiLPxjV2x9qALv4mBNKAiWDK4ezvBL1VrD99NnIbxG5Vw==" + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pinia/testing": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.3.tgz", + "integrity": "sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "pinia": ">=2.1.5" + } + }, + "node_modules/@pinia/testing/node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", + "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@testing-library/dom": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", + "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/vue": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-7.0.0.tgz", + "integrity": "sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0", + "@testing-library/dom": "^9.0.1", + "@vue/test-utils": "^2.3.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@vue/compiler-sfc": ">= 3", + "vue": ">= 3" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node18": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", + "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", + "dev": true + }, + "node_modules/@types/aria-query": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", + "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.16.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", + "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", + "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/type-utils": "5.59.1", + "@typescript-eslint/utils": "5.59.1", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", + "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", + "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", + "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/utils": "5.59.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", + "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", + "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", + "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", + "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", + "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.2.tgz", + "integrity": "sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.10", + "@babel/plugin-transform-typescript": "^7.22.10", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vitest/coverage-c8": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.33.0.tgz", + "integrity": "sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==", + "deprecated": "v8 coverage is moved to @vitest/coverage-v8 package", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "c8": "^7.14.0", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.30.0 <1" + } + }, + "node_modules/@vitest/coverage-istanbul": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.34.3.tgz", + "integrity": "sha512-RdEGzydbbalyDLmmJ5Qm+T3Lrubw/U9iCnhzM2B1V57t4cVa1t6uyfIHdv68d1au4PRzkLhY7Xouwuhb7BeG+Q==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "test-exclude": "^6.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.32.0 <1" + } + }, + "node_modules/@vitest/expect": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.3.tgz", + "integrity": "sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.34.3", + "@vitest/utils": "0.34.3", + "chai": "^4.3.7" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.3.tgz", + "integrity": "sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.34.3", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.3.tgz", + "integrity": "sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/snapshot/node_modules/pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@vitest/spy": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.3.tgz", + "integrity": "sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.3.tgz", + "integrity": "sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/utils/node_modules/pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@volar/language-core": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz", + "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.10.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz", + "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz", + "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.10.1" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", + "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", + "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "@vue/babel-helper-vue-transform-on": "^1.1.5", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.8.tgz", + "integrity": "sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.10.0", + "@volar/source-map": "~1.10.0", + "@vue/compiler-dom": "^3.3.0", + "@vue/reactivity": "^3.3.0", + "@vue/shared": "^3.3.0", + "minimatch": "^9.0.0", + "muggle-string": "^0.3.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vue/test-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.1.tgz", + "integrity": "sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==", + "dev": true, + "dependencies": { + "js-beautify": "1.14.9", + "vue-component-type-helpers": "1.8.4" + }, + "peerDependencies": { + "@vue/server-renderer": "^3.0.1", + "vue": "^3.0.1" + }, + "peerDependenciesMeta": { + "@vue/server-renderer": { + "optional": true + } + } + }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "node_modules/@vue/typescript": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.8.tgz", + "integrity": "sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.10.0", + "@vue/language-core": "1.8.8" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/c8": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/c8/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001524", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", + "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-equal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", + "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.0", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.505", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", + "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vitest-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", + "integrity": "sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==", + "dev": true + }, + "node_modules/eslint-plugin-vue": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", + "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filesize": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.12.tgz", + "integrity": "sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==", + "engines": { + "node": ">= 10.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/happy-dom": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", + "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "iconv-lite": "^0.6.3", + "node-fetch": "^2.x.x", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-beautify": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", + "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^8.1.0", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", + "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mlly": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.1.tgz", + "integrity": "sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", + "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oidc-client-ts": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.2.5.tgz", + "integrity": "sha512-omAHoLdFcylnwZeHJahOnJBwd0r78JzhmVAmsQjLGrexAnQKiHW9Ilr9FlRD5qjMikmabvaucI4k49AbQLXhmQ==", + "dependencies": { + "crypto-js": "^4.1.1", + "jwt-decode": "^3.1.2" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", + "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", + "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/primeflex": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz", + "integrity": "sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ==" + }, + "node_modules/primeicons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" + }, + "node_modules/primevue": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.32.2.tgz", + "integrity": "sha512-BEDhIb+VqfjjIF9+G+dCRsE542afz5Xl01XHbViYR13T7ZreBMWsPcJCCTyKzouwJHr6HTskJXJnrkTmOI1vKg==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode.vue": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz", + "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "dependencies": { + "glob": "^10.2.5" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", + "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz", + "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", + "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "dev": true + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + }, + "node_modules/tinybench": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", + "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", + "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", + "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vee-validate": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.11.3.tgz", + "integrity": "sha512-YhWORdZRE1GL6vXKj3r9f+Y8fJH5JMwMUJ4DFS44+WcTtiNXggyE3pyJPlZBqS9AgYGZ47EOv4UczkLxHqufiw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "type-fest": "^4.2.0" + }, + "peerDependencies": { + "vue": "^3.3.4" + } + }, + "node_modules/vee-validate/node_modules/type-fest": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", + "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.3.tgz", + "integrity": "sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.3.tgz", + "integrity": "sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.3", + "@vitest/runner": "0.34.3", + "@vitest/snapshot": "0.34.3", + "@vitest/spy": "0.34.3", + "@vitest/utils": "0.34.3", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.34.3", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/volar-service-eslint": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/volar-service-eslint/-/volar-service-eslint-0.0.11.tgz", + "integrity": "sha512-H0MP5x//x1mFnbKuAvl9B/feNG3Wve0FgsqPrJ4NJG9aEDFfPkQ0ruOpXvFwrVTVwUhUqcEVqaeJsqJgSIzc0g==", + "dev": true, + "peerDependencies": { + "@volar/language-service": "~1.10.0", + "eslint": "*" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-component-type-helpers": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz", + "integrity": "sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==", + "dev": true + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-router": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", + "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.8.tgz", + "integrity": "sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==", + "dev": true, + "dependencies": { + "@vue/language-core": "1.8.8", + "@vue/typescript": "1.8.8", + "semver": "^7.3.8" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-tsc/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", + "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/yup/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true + }, + "@babel/core": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", + "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.11", + "@babel/parser": "^7.22.11", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "dev": true, + "requires": { + "@babel/types": "^7.22.10", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", + "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", + "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11" + } + }, + "@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", + "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==" + }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", + "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + } + }, + "@babel/runtime": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/traverse": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", + "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.11", + "@babel/types": "^7.22.11", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", + "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + } + }, + "@bcgov/bc-sans": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-2.0.0.tgz", + "integrity": "sha512-hgCYDEwVWZ0t/yzmo802D1oF3hhzDjsjpgB82EZcDEiLPxjV2x9qALv4mBNKAiWDK4ezvBL1VrD99NnIbxG5Vw==" + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@eslint/js": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "dev": true + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.2" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.2" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", + "requires": {} + }, + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "@pinia/testing": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.3.tgz", + "integrity": "sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==", + "dev": true, + "requires": { + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "dev": true, + "requires": {} + } + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@rushstack/eslint-patch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", + "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@testing-library/dom": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", + "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "^5.0.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/vue": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-7.0.0.tgz", + "integrity": "sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.21.0", + "@testing-library/dom": "^9.0.1", + "@vue/test-utils": "^2.3.1" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@tsconfig/node18": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", + "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", + "dev": true + }, + "@types/aria-query": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", + "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "dev": true + }, + "@types/chai": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", + "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "18.16.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", + "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", + "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/type-utils": "5.59.1", + "@typescript-eslint/utils": "5.59.1", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", + "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", + "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", + "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/utils": "5.59.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", + "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", + "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", + "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", + "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-vue": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", + "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "dev": true, + "requires": {} + }, + "@vitejs/plugin-vue-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.2.tgz", + "integrity": "sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==", + "dev": true, + "requires": { + "@babel/core": "^7.22.10", + "@babel/plugin-transform-typescript": "^7.22.10", + "@vue/babel-plugin-jsx": "^1.1.5" + } + }, + "@vitest/coverage-c8": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.33.0.tgz", + "integrity": "sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.1", + "c8": "^7.14.0", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3" + } + }, + "@vitest/coverage-istanbul": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.34.3.tgz", + "integrity": "sha512-RdEGzydbbalyDLmmJ5Qm+T3Lrubw/U9iCnhzM2B1V57t4cVa1t6uyfIHdv68d1au4PRzkLhY7Xouwuhb7BeG+Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "test-exclude": "^6.0.0" + } + }, + "@vitest/expect": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.3.tgz", + "integrity": "sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==", + "dev": true, + "requires": { + "@vitest/spy": "0.34.3", + "@vitest/utils": "0.34.3", + "chai": "^4.3.7" + } + }, + "@vitest/runner": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.3.tgz", + "integrity": "sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==", + "dev": true, + "requires": { + "@vitest/utils": "0.34.3", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "dependencies": { + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@vitest/snapshot": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.3.tgz", + "integrity": "sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==", + "dev": true, + "requires": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } + } + }, + "@vitest/spy": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.3.tgz", + "integrity": "sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==", + "dev": true, + "requires": { + "tinyspy": "^2.1.1" + } + }, + "@vitest/utils": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.3.tgz", + "integrity": "sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==", + "dev": true, + "requires": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } + } + }, + "@volar/language-core": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz", + "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==", + "dev": true, + "requires": { + "@volar/source-map": "1.10.1" + } + }, + "@volar/source-map": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz", + "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==", + "dev": true, + "requires": { + "muggle-string": "^0.3.1" + } + }, + "@volar/typescript": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz", + "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==", + "dev": true, + "requires": { + "@volar/language-core": "1.10.1" + } + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", + "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", + "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "@vue/babel-helper-vue-transform-on": "^1.1.5", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "requires": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "requires": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "requires": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + } + }, + "@vue/language-core": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.8.tgz", + "integrity": "sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==", + "dev": true, + "requires": { + "@volar/language-core": "~1.10.0", + "@volar/source-map": "~1.10.0", + "@vue/compiler-dom": "^3.3.0", + "@vue/reactivity": "^3.3.0", + "@vue/shared": "^3.3.0", + "minimatch": "^9.0.0", + "muggle-string": "^0.3.1", + "vue-template-compiler": "^2.7.14" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "requires": { + "@vue/shared": "3.3.4" + } + }, + "@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "requires": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "requires": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "requires": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "@vue/test-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.1.tgz", + "integrity": "sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==", + "dev": true, + "requires": { + "js-beautify": "1.14.9", + "vue-component-type-helpers": "1.8.4" + } + }, + "@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "@vue/typescript": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.8.tgz", + "integrity": "sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==", + "dev": true, + "requires": { + "@volar/typescript": "~1.10.0", + "@vue/language-core": "1.8.8" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + } + }, + "c8": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", + "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001524", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", + "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", + "dev": true + }, + "chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "optional": true, + "peer": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "requires": { + "rrweb-cssom": "^0.6.0" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "dependencies": { + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "requires": { + "punycode": "^2.3.0" + } + }, + "whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", + "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.0", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "requires": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "electron-to-chromium": { + "version": "1.4.505", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", + "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + } + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-vitest-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", + "integrity": "sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", + "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filesize": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.12.tgz", + "integrity": "sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "happy-dom": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", + "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "iconv-lite": "^0.6.3", + "node-fetch": "^2.x.x", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "js-beautify": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", + "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^8.1.0", + "nopt": "^6.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "requires": { + "punycode": "^2.3.0" + } + }, + "whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true + }, + "magic-string": { + "version": "0.30.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", + "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + } + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true + }, + "mlly": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.1.tgz", + "integrity": "sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==", + "dev": true, + "requires": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", + "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "oidc-client-ts": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.2.5.tgz", + "integrity": "sha512-omAHoLdFcylnwZeHJahOnJBwd0r78JzhmVAmsQjLGrexAnQKiHW9Ilr9FlRD5qjMikmabvaucI4k49AbQLXhmQ==", + "requires": { + "crypto-js": "^4.1.1", + "jwt-decode": "^3.1.2" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-scurry": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "dev": true + } + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pinia": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", + "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "requires": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "requires": {} + } + } + }, + "pinia-plugin-persistedstate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", + "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", + "requires": {} + }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "primeflex": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz", + "integrity": "sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ==" + }, + "primeicons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" + }, + "primevue": { + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.32.2.tgz", + "integrity": "sha512-BEDhIb+VqfjjIF9+G+dCRsE542afz5Xl01XHbViYR13T7ZreBMWsPcJCCTyKzouwJHr6HTskJXJnrkTmOI1vKg==", + "requires": {} + }, + "property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "qrcode.vue": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz", + "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==", + "requires": {} + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "requires": { + "glob": "^10.2.5" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", + "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + } + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true + } + } + }, + "rollup": { + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz", + "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.66.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", + "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "dev": true + }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "requires": { + "internal-slot": "^1.0.4" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "requires": { + "acorn": "^8.8.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + }, + "tinybench": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", + "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "dev": true + }, + "tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true + }, + "tinyspy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", + "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, + "tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "optional": true, + "peer": true + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "devOptional": true + }, + "ufo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", + "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "dev": true + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "vee-validate": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.11.3.tgz", + "integrity": "sha512-YhWORdZRE1GL6vXKj3r9f+Y8fJH5JMwMUJ4DFS44+WcTtiNXggyE3pyJPlZBqS9AgYGZ47EOv4UczkLxHqufiw==", + "requires": { + "@vue/devtools-api": "^6.5.0", + "type-fest": "^4.2.0" + }, + "dependencies": { + "type-fest": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", + "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==" + } + } + }, + "vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-node": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.3.tgz", + "integrity": "sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + } + }, + "vitest": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.3.tgz", + "integrity": "sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==", + "dev": true, + "requires": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.3", + "@vitest/runner": "0.34.3", + "@vitest/snapshot": "0.34.3", + "@vitest/spy": "0.34.3", + "@vitest/utils": "0.34.3", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.34.3", + "why-is-node-running": "^2.2.2" + } + }, + "volar-service-eslint": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/volar-service-eslint/-/volar-service-eslint-0.0.11.tgz", + "integrity": "sha512-H0MP5x//x1mFnbKuAvl9B/feNG3Wve0FgsqPrJ4NJG9aEDFfPkQ0ruOpXvFwrVTVwUhUqcEVqaeJsqJgSIzc0g==", + "dev": true, + "requires": {} + }, + "vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "requires": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "vue-component-type-helpers": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz", + "integrity": "sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==", + "dev": true + }, + "vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "vue-router": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", + "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", + "requires": { + "@vue/devtools-api": "^6.5.0" + } + }, + "vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-tsc": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.8.tgz", + "integrity": "sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==", + "dev": true, + "requires": { + "@vue/language-core": "1.8.8", + "@vue/typescript": "1.8.8", + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "requires": {} + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "yup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", + "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", + "requires": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..5e38fec --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,72 @@ +{ + "name": "vue3-scaffold-frontend", + "version": "0.1.0", + "private": true, + "description": "", + "author": "NR Common Service Showcase ", + "license": "Apache-2.0", + "scripts": { + "build": "vite build", + "build:dts": "vue-tsc --declaration --emitDeclarationOnly", + "clean": "rimraf coverage dist", + "debug": "vite --mode debug", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --no-fix --ignore-path .gitignore", + "lint:fix": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "preview": "vite preview", + "prebuild": "npm run lint", + "prelint": "npm run typecheck", + "pretest": "npm run lint", + "purge": "rimraf node_modules", + "rebuild": "npm run clean && npm run build", + "reinstall": "npm run purge && npm install", + "serve": "vite", + "test": "vitest run --coverage", + "typecheck": "vue-tsc --noEmit" + }, + "dependencies": { + "@bcgov/bc-sans": "^2.0.0", + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/vue-fontawesome": "^3.0.3", + "axios": "^1.5.0", + "date-fns": "^2.30.0", + "filesize": "^10.0.12", + "oidc-client-ts": "^2.2.5", + "pinia": "^2.1.6", + "pinia-plugin-persistedstate": "^3.2.0", + "primeflex": "^3.3.1", + "primeicons": "^6.0.1", + "primevue": "^3.32.2", + "qrcode.vue": "^3.4.1", + "vee-validate": "^4.11.3", + "vue": "^3.3.4", + "vue-router": "^4.2.4", + "yup": "^1.2.0" + }, + "devDependencies": { + "@pinia/testing": "^0.1.3", + "@rushstack/eslint-patch": "^1.3.3", + "@testing-library/vue": "^7.0.0", + "@tsconfig/node18": "^2.0.1", + "@types/node": "~18.16.16", + "@vitejs/plugin-vue": "^4.3.4", + "@vitejs/plugin-vue-jsx": "^3.0.2", + "@vitest/coverage-c8": "^0.33.0", + "@vitest/coverage-istanbul": "^0.34.3", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/test-utils": "^2.4.1", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.48.0", + "eslint-plugin-vitest-globals": "^1.4.0", + "eslint-plugin-vue": "^9.17.0", + "jsdom": "^22.1.0", + "rimraf": "^5.0.1", + "sass": "^1.66.1", + "ts-node": "^10.9.1", + "typescript": "~4.8.4", + "vite": "^4.4.9", + "vitest": "^0.34.3", + "volar-service-eslint": "^0.0.11", + "vue-tsc": "^1.8.8" + } +} diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1841396d21ce974cdec16f7414c88683cd36af16 GIT binary patch literal 22486 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 C+3a-y literal 0 HcmV?d00001 diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..3e45751 --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,43 @@ + + + diff --git a/frontend/src/assets/base.css b/frontend/src/assets/base.css new file mode 100644 index 0000000..b7c0884 --- /dev/null +++ b/frontend/src/assets/base.css @@ -0,0 +1,72 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +/* @media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} */ + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: color 0.5s, background-color 0.5s; + line-height: 1.6; + font-family: BCSans, Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/frontend/src/assets/images/bc_logo.svg b/frontend/src/assets/images/bc_logo.svg new file mode 100644 index 0000000..5ba3bb5 --- /dev/null +++ b/frontend/src/assets/images/bc_logo.svg @@ -0,0 +1 @@ +bc_logo diff --git a/frontend/src/assets/images/bc_logo_print.svg b/frontend/src/assets/images/bc_logo_print.svg new file mode 100644 index 0000000..aae06ff --- /dev/null +++ b/frontend/src/assets/images/bc_logo_print.svg @@ -0,0 +1 @@ +bc_logo_print diff --git a/frontend/src/assets/images/bc_logo_square.svg b/frontend/src/assets/images/bc_logo_square.svg new file mode 100644 index 0000000..8d228dc --- /dev/null +++ b/frontend/src/assets/images/bc_logo_square.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/assets/images/bcboxy.png b/frontend/src/assets/images/bcboxy.png new file mode 100644 index 0000000000000000000000000000000000000000..3a450669ec6c426846ba86b0ee61a39266031e51 GIT binary patch literal 29806 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/images/home_1.png b/frontend/src/assets/images/home_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5fdeab274067fbd18076f9396c9b04db2ac9d8 GIT binary patch literal 130458 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

4882pvpE^AxF5Zp+-t(?jlR#N?Y=(yPX6@F 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 \ No newline at end of file diff --git a/frontend/src/assets/main.scss b/frontend/src/assets/main.scss new file mode 100644 index 0000000..9429bc7 --- /dev/null +++ b/frontend/src/assets/main.scss @@ -0,0 +1,71 @@ +@import "./base.css"; +@import "./primevue.scss"; +@import "./variables.scss"; + +#app { + margin: 0 auto; + font-weight: normal; +} + +a, +a:visited { + color: $app-link-text; + text-decoration: underline; + &:hover { + color: $app-link-text-hover; + } +} + +.p-button, +.p-inputswitch-slider { + &:hover { + opacity: 0.8; + } +} +// underline button text +.p-button:hover { + text-decoration: underline; +} +// don't underline button icons +.p-button .p-button-icon:before { + text-decoration: none; + display: inline-block; +} + +// wrap text +.wrap-block { + display: inline-block; + overflow-wrap: break-word; + width: 100%; +} + +td .wrap-block { + width: inherit; +} + +.gov-footer { + background-color: #003366 !important; + border-top: 2px solid #fcba19; + flex-shrink: 0; + min-height: 2.5rem; + min-width: 100%; + padding-bottom: 0; + padding-top: 0; + + a { + color: #ffffff; + font-size: 1rem; + text-decoration: none; + &:focus { + outline: none; + } + } + + .button > span { + color: #ffffff; + font-size: 1rem; + font-weight: normal; + text-decoration: none; + text-transform: none; + } +} diff --git a/frontend/src/assets/primevue.scss b/frontend/src/assets/primevue.scss new file mode 100644 index 0000000..7c3d0d5 --- /dev/null +++ b/frontend/src/assets/primevue.scss @@ -0,0 +1,118 @@ +.header-center .p-column-header-content { + justify-content: center; +} + +.header-right .p-column-header-content { + justify-content: right; +} + +.p-dialog-footer { + display: flex; + flex-direction: row-reverse; +} + +.p-datatable { + .p-datatable-thead > tr > th { + background-color: transparent !important; + } + + &.p-datatable-striped .p-datatable-tbody > tr { + &:nth-child(even) { + background-color: $app-table-stripe-background; + } + } + + tbody { + tr { + &.p-highlight { + background: $app-highlight-background !important; + } + + &:focus { + outline: none !important; + } + } + } + + .p-checkbox { + .p-checkbox-box.p-highlight { + background-color: $app-primary; + border-color: $app-primary !important; + + &:hover { + background-color: darken($app-primary, 20%) !important; + } + } + } + + .p-column-title { + font-weight: bold; + } + + .p-paginator { + justify-content: right; + } + + .action-buttons .p-button.p-button-lg { + padding: 0; + margin-left: 1rem; + } +} + +// Primary color overrides for buttons and action items (checkboxes etc) +// Note this could be eventually replaced by a custom themeing (which has JUST been introduced in Primevue) +// once it is more settled implementation-wise +.p-button { + &:not( + .p-button-secondary, + .p-button-success, + .p-button-info, + .p-button-warning, + .p-button-help, + .p-button-danger + ) { + color: $app-primary !important; + + &:not(.p-button-outlined, .p-button-text) { + background-color: $app-primary; + border-color: $app-primary; + color: $app-outline-on-primary !important; + } + + &:hover { + border-color: $app-primary !important; + color: $app-outline-on-primary !important; + background-color: $app-primary !important; + } + } +} + +.p-checkbox, +.p-radiobutton { + &.p-checkbox-checked, + &.p-radiobutton-checked { + .p-checkbox-box, + .p-radiobutton-box { + background-color: $app-primary; + border-color: $app-primary !important; + + &:hover { + background-color: darken($app-primary, 20%) !important; + } + } + } +} + +.p-inputswitch.p-inputswitch-checked { + .p-inputswitch-slider { + background-color: $app-primary; + } + + &:not(.p-disabled) { + &:hover { + .p-inputswitch-slider { + background-color: darken($app-primary, 10%) !important; + } + } + } +} diff --git a/frontend/src/assets/variables.scss b/frontend/src/assets/variables.scss new file mode 100644 index 0000000..7768aa2 --- /dev/null +++ b/frontend/src/assets/variables.scss @@ -0,0 +1,9 @@ +// General font/etc colors +$app-primary: #036; +$app-link-text: #1a5a96; +$app-link-text-hover: #00f; +$app-outline-on-primary: #fff; + +// Panel/row/etc backgrounds +$app-highlight-background: #d9e1e8; +$app-table-stripe-background: #f2f2f2; diff --git a/frontend/src/components/form/CopyToClipboard.vue b/frontend/src/components/form/CopyToClipboard.vue new file mode 100644 index 0000000..ea89092 --- /dev/null +++ b/frontend/src/components/form/CopyToClipboard.vue @@ -0,0 +1,49 @@ + + + diff --git a/frontend/src/components/form/Password.vue b/frontend/src/components/form/Password.vue new file mode 100644 index 0000000..919e73c --- /dev/null +++ b/frontend/src/components/form/Password.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/frontend/src/components/form/TextInput.vue b/frontend/src/components/form/TextInput.vue new file mode 100644 index 0000000..45486a3 --- /dev/null +++ b/frontend/src/components/form/TextInput.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/frontend/src/components/form/index.ts b/frontend/src/components/form/index.ts new file mode 100644 index 0000000..0573f1d --- /dev/null +++ b/frontend/src/components/form/index.ts @@ -0,0 +1,3 @@ +export { default as CopyToClipboard } from './CopyToClipboard.vue'; +export { default as Password } from './Password.vue'; +export { default as TextInput } from './TextInput.vue'; diff --git a/frontend/src/components/guards/RequireAuth.vue b/frontend/src/components/guards/RequireAuth.vue new file mode 100644 index 0000000..92b64bf --- /dev/null +++ b/frontend/src/components/guards/RequireAuth.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/frontend/src/components/guards/index.ts b/frontend/src/components/guards/index.ts new file mode 100644 index 0000000..f828c29 --- /dev/null +++ b/frontend/src/components/guards/index.ts @@ -0,0 +1 @@ +export { default as RequireAuth } from './RequireAuth.vue'; diff --git a/frontend/src/components/layout/AppLayout.vue b/frontend/src/components/layout/AppLayout.vue new file mode 100644 index 0000000..0b8f2e7 --- /dev/null +++ b/frontend/src/components/layout/AppLayout.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/frontend/src/components/layout/Footer.vue b/frontend/src/components/layout/Footer.vue new file mode 100644 index 0000000..06a8f81 --- /dev/null +++ b/frontend/src/components/layout/Footer.vue @@ -0,0 +1,78 @@ + + + diff --git a/frontend/src/components/layout/Header.vue b/frontend/src/components/layout/Header.vue new file mode 100644 index 0000000..9286f07 --- /dev/null +++ b/frontend/src/components/layout/Header.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/frontend/src/components/layout/LoginButton.vue b/frontend/src/components/layout/LoginButton.vue new file mode 100644 index 0000000..ec2a6f8 --- /dev/null +++ b/frontend/src/components/layout/LoginButton.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/frontend/src/components/layout/Navbar.vue b/frontend/src/components/layout/Navbar.vue new file mode 100644 index 0000000..636b210 --- /dev/null +++ b/frontend/src/components/layout/Navbar.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/frontend/src/components/layout/ProgressLoader.vue b/frontend/src/components/layout/ProgressLoader.vue new file mode 100644 index 0000000..6fb748a --- /dev/null +++ b/frontend/src/components/layout/ProgressLoader.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/frontend/src/components/layout/Spinner.vue b/frontend/src/components/layout/Spinner.vue new file mode 100644 index 0000000..4104b7a --- /dev/null +++ b/frontend/src/components/layout/Spinner.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/frontend/src/components/layout/index.ts b/frontend/src/components/layout/index.ts new file mode 100644 index 0000000..41285fe --- /dev/null +++ b/frontend/src/components/layout/index.ts @@ -0,0 +1,7 @@ +export { default as AppLayout } from './AppLayout.vue'; +export { default as Footer } from './Footer.vue'; +export { default as Header } from './Header.vue'; +export { default as LoginButton } from './LoginButton.vue'; +export { default as Spinner } from './Spinner.vue'; +export { default as Navbar } from './Navbar.vue'; +export { default as ProgressLoader } from './ProgressLoader.vue'; diff --git a/frontend/src/composables/useAlert.ts b/frontend/src/composables/useAlert.ts new file mode 100644 index 0000000..9ad86ca --- /dev/null +++ b/frontend/src/composables/useAlert.ts @@ -0,0 +1,16 @@ +import { useConfirm } from '@/lib/primevue'; + +export function useAlert(header: string, message: string) { + const confirm = useConfirm(); + + const show = () => { + confirm.require({ + header: header, + message: message, + acceptLabel: 'OK', + rejectClass: 'hidden' + }); + }; + + return { show }; +} diff --git a/frontend/src/interfaces/IAudit.ts b/frontend/src/interfaces/IAudit.ts new file mode 100644 index 0000000..c46da84 --- /dev/null +++ b/frontend/src/interfaces/IAudit.ts @@ -0,0 +1,6 @@ +export interface IAudit { + createdBy?: string; + createdAt?: string; + updatedBy?: string; + updatedAt?: string; +} diff --git a/frontend/src/interfaces/index.ts b/frontend/src/interfaces/index.ts new file mode 100644 index 0000000..9db66e9 --- /dev/null +++ b/frontend/src/interfaces/index.ts @@ -0,0 +1 @@ +export type { IAudit } from './IAudit'; diff --git a/frontend/src/lib/primevue/index.ts b/frontend/src/lib/primevue/index.ts new file mode 100644 index 0000000..4e9f417 --- /dev/null +++ b/frontend/src/lib/primevue/index.ts @@ -0,0 +1,15 @@ +// Add imports as needed +export { default as Button } from 'primevue/button'; +export { default as ConfirmDialog } from 'primevue/confirmdialog'; +export { default as Dialog } from 'primevue/dialog'; +export { default as InputText } from 'primevue/inputtext'; +export { default as Message } from 'primevue/message'; +export { default as Password } from 'primevue/password'; +export { default as ProgressBar } from 'primevue/progressbar'; +export { default as ProgressSpinner } from 'primevue/progressspinner'; +export { default as Toast } from 'primevue/toast'; +export { default as Toolbar } from 'primevue/toolbar'; + +export { useConfirm } from 'primevue/useconfirm'; + +export { useToast } from './useToast'; diff --git a/frontend/src/lib/primevue/useToast.ts b/frontend/src/lib/primevue/useToast.ts new file mode 100644 index 0000000..451594d --- /dev/null +++ b/frontend/src/lib/primevue/useToast.ts @@ -0,0 +1,49 @@ +import { ToastTimeout } from '@/utils/constants'; +import type { ToastMessageOptions } from 'primevue/toast'; +import { useToast as useToastPrimevue } from 'primevue/usetoast'; + +export const useToast = () => { + const toast = useToastPrimevue(); + + const error = (title: string, msg: string = '', options: ToastMessageOptions = {}) => { + const { + severity = 'error', + summary = `Error: ${title}`, + detail = msg, + life = ToastTimeout.ERROR + } = options; + toast.add({ severity: severity, summary: summary, detail: detail, life: life }); + }; + + const info = (title: string, msg: string = '', options: ToastMessageOptions = {}) => { + const { + severity = 'info', + summary = `Info: ${title}`, + detail = msg, + life = ToastTimeout.INFO + } = options; + toast.add({ severity: severity, summary: summary, detail: detail, life: life }); + }; + + const success = (title: string, msg: string = '', options: ToastMessageOptions = {}) => { + const { + severity = 'success', + summary = `Success: ${title}`, + detail = msg, + life = ToastTimeout.SUCCESS + } = options; + toast.add({ severity: severity, summary: summary, detail: detail, life: life }); + }; + + const warn = (title: string, msg: string = '', options: ToastMessageOptions = {}) => { + const { + severity = 'warn', + summary = `Warning: ${title}`, + detail = msg, + life = ToastTimeout.WARNING + } = options; + toast.add({ severity: severity, summary: summary, detail: detail, life: life }); + }; + + return { error, info, success, warn }; +}; diff --git a/frontend/src/main.ts b/frontend/src/main.ts new file mode 100644 index 0000000..1ae6d41 --- /dev/null +++ b/frontend/src/main.ts @@ -0,0 +1,59 @@ +import { library } from '@fortawesome/fontawesome-svg-core'; +import { fas } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'; +import PrimeVue from 'primevue/config'; +import ConfirmationService from 'primevue/confirmationservice'; +import ToastService from 'primevue/toastservice'; +import Tooltip from 'primevue/tooltip'; +import { createPinia } from 'pinia'; +import { createPersistedState } from 'pinia-plugin-persistedstate'; +import { createApp } from 'vue'; + +import App from '@/App.vue'; +import getRouter from '@/router'; +import { AuthService, ConfigService } from '@/services'; + +import '@bcgov/bc-sans/css/BCSans.css'; +import 'primevue/resources/themes/saga-blue/theme.css'; +import 'primevue/resources/primevue.min.css'; +import 'primeicons/primeicons.css'; +import 'primeflex/primeflex.css'; +import '@/assets/main.scss'; + +/** + * @function initializeApp + * Initializes and mounts the Vue instance + */ +function initializeApp(): void { + library.add(fas); + + const app = createApp(App); + const pinia = createPinia(); + pinia.use(createPersistedState({ + key: id => `bcbox.${id}` + })); + + app.use(pinia); + app.use(getRouter()); + app.use(PrimeVue); + app.use(ToastService); + app.use(ConfirmationService); + app.component('FontAwesomeIcon', FontAwesomeIcon); + app.directive('tooltip', Tooltip); + + app.mount('#app'); +} + +/** + * @function initializeServices + * Initializes and mounts the service singletons + * Services must load in the following order: config, auth, then app. + * @param {Function} [next=undefined] Optional callback function + */ +async function initializeServices(next?: Function): Promise { + await ConfigService.init(); + await AuthService.init(); + if (next) next(); +} + +initializeServices(initializeApp); diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts new file mode 100644 index 0000000..4708c72 --- /dev/null +++ b/frontend/src/router/index.ts @@ -0,0 +1,111 @@ +import { createRouter, createWebHistory } from 'vue-router'; + +import { AuthService } from '@/services'; +import { useAppStore } from '@/store'; +import { RouteNames, StorageKey } from '@/utils/constants'; + +import type { RouteRecordRaw } from 'vue-router'; + +/** + * @function createProps + * Parses the route query and params to generate vue props + * @param {object} route The route object + * @returns {object} a Vue props object + */ +function createProps(route: { query: any; params: any; }): object { + return { ...route.query, ...route.params }; +} + +const routes: Array = [ + { + path: '/', + name: RouteNames.HOME, + component: () => import('../views/HomeView.vue'), + meta: { title: 'Home' } + }, + { + path: '/developer', + name: RouteNames.DEVELOPER, + component: () => import('@/views/DeveloperView.vue'), + meta: { requiresAuth: true, title: 'Developer' } + }, + { + path: '/oidc', + component: () => import('@/views/GenericView.vue'), + children: [ + { + path: 'callback', + name: RouteNames.CALLBACK, + component: () => import('@/views/oidc/OidcCallbackView.vue'), + meta: { title: 'Authenticating...' } + }, + { + path: 'login', + name: RouteNames.LOGIN, + component: () => import('@/views/oidc/OidcLoginView.vue'), + meta: { title: 'Logging in...' }, + beforeEnter: () => { + const entrypoint = `${window.location.pathname}${window.location.search}${window.location.hash}`; + window.sessionStorage.setItem(StorageKey.AUTH, entrypoint); + } + }, + { + path: 'logout', + name: RouteNames.LOGOUT, + component: () => import('@/views/oidc/OidcLogoutView.vue'), + meta: { title: 'Logging out...' } + }, + ] + }, + { + path: '/forbidden', + name: RouteNames.FORBIDDEN, + component: () => import('@/views/Forbidden.vue'), + meta: { title: 'Forbidden' } + }, + { + path: '/:pathMatch(.*)*', + name: 'NotFound', + component: () => import('@/views/NotFound.vue'), + meta: { title: 'Not Found' } + } +]; + +export default function getRouter() { + const appStore = useAppStore(); + const authService = new AuthService(); + const router = createRouter({ + history: createWebHistory(), + routes + }); + + router.beforeEach(async (to) => { + appStore.beginDeterminateLoading(); + + // Backend Redirection Handler + if (to.query?.r) { + router.replace({ + path: (to.query.r) ? to.query.r.toString() : to.path, + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars + query: (({ r, ...q }) => q)(to.query) + }); + } + + // Authentication Guard + if (to.meta.requiresAuth) { + const user = await authService.getUser(); + if (!user || user.expired) { + router.replace({ name: RouteNames.LOGIN }); + } + } + }); + + router.afterEach((to) => { + // Update document title + document.title = to.meta.title ? `Vue 3 Scaffold - ${to.meta.title}` : 'Vue 3 Scaffold'; + + appStore.endDeterminateLoading(); + }); + + return router; +} diff --git a/frontend/src/services/authService.ts b/frontend/src/services/authService.ts new file mode 100644 index 0000000..703d4de --- /dev/null +++ b/frontend/src/services/authService.ts @@ -0,0 +1,115 @@ +import { Log, UserManager, WebStorageStateStore } from 'oidc-client-ts'; + +import ConfigService from './configService'; + +import type { User, UserManagerSettings } from 'oidc-client-ts'; + +const isDebugMode: boolean = import.meta.env.MODE.toUpperCase() === 'DEBUG'; + +/** + * @class AuthService + * A singleton wrapper for managing user authentication + */ +export default class AuthService { + private static _instance: AuthService; + private static _userManager: UserManager; + + /** + * @constructor + */ + constructor() { + if (!AuthService._instance) { + AuthService._instance = this; + AuthService._userManager = new UserManager(this.getOidcSettings()); + + Log.setLogger(console); + Log.setLevel(isDebugMode ? Log.DEBUG : Log.INFO); + } + + return AuthService._instance; + } + + /** + * @function getOidcSettings + * Acquires OIDC settings from config + * @returns {UserManagerSettings} Yields OIDC settings + * @throws If OIDC configuration is missing or incomplete + */ + public getOidcSettings(): UserManagerSettings { + const config = new ConfigService().getConfig(); + + if (!config?.oidc?.authority || !config?.oidc?.clientId) { + throw new Error('OIDC is misconfigured'); + } + + return { + automaticSilentRenew: true, + authority: config.oidc.authority, + client_id: config.oidc.clientId, + redirect_uri: `${window.location.protocol}//${window.location.host}/oidc/callback`, + loadUserInfo: true, + post_logout_redirect_uri: `${window.location.protocol}//${window.location.host}/oidc/logout`, + userStore: new WebStorageStateStore({ store: window.localStorage }), + }; + } + + /** + * @function init + * Initializes the AuthService singleton + * @returns {Promise} An instance of AuthService + */ + public static async init(): Promise { + return new Promise((resolve) => { + const authService = new AuthService(); + resolve(authService); + }); + } + + /** + * @function getUser + * Returns the raw OIDC current user information + * @returns {Promise} Returns a user object if logged in, null otherwise + */ + public async getUser(): Promise { + return AuthService._userManager.getUser(); + } + + /** + * @function getUserManager + * Returns the OIDC user manager + * @returns {Promise} Returns a user object if logged in, null otherwise + */ + public getUserManager(): UserManager { + return AuthService._userManager; + } + + /** + * @function login + * Performs the OIDC user login flow + * @returns {Promise} + */ + public async login(): Promise { + return AuthService._userManager.signinRedirect({ redirectMethod: 'replace' }); + } + + /** + * @function loginCallback + * Handles the OIDC callback user login flow + * @returns {Promise} Resolves upon completion + */ + public async loginCallback(): Promise { + // Register and store user to local storage + await AuthService._userManager.signinRedirectCallback(); + // signinRedirectCallback appears to do this already? + // await AuthService._userManager.storeUser(user); + } + + /** + * @function logout + * Performs the OIDC user logout flow + * @returns {Promise} + */ + public async logout(): Promise { + return AuthService._userManager.signoutRedirect({ redirectMethod: 'replace' }); + } +} diff --git a/frontend/src/services/configService.ts b/frontend/src/services/configService.ts new file mode 100644 index 0000000..e0963a7 --- /dev/null +++ b/frontend/src/services/configService.ts @@ -0,0 +1,62 @@ +import axios from 'axios'; + +import { StorageKey } from '@/utils/constants'; + +const storageType = window.sessionStorage; + +/** + * @class ConfigService + * A singleton wrapper for acquiring and storing configuration data + * in session storage + */ +export default class ConfigService { + private static _instance: ConfigService; + + /** + * @constructor + */ + constructor() { + if (!ConfigService._instance) { + ConfigService._instance = this; + } + + return ConfigService._instance; + } + + /** + * @function init + * Initializes the ConfigService singleton + * @returns {Promise} An instance of ConfigService + */ + public static async init(): Promise { + return new Promise((resolve, reject) => { + if (storageType.getItem(StorageKey.CONFIG) === null) { + axios.get('/config').then(({ data }) => { + storageType.setItem(StorageKey.CONFIG, JSON.stringify(data)); + resolve(new ConfigService()); + }).catch(err => { + storageType.removeItem(StorageKey.CONFIG); + reject(`Failed to initialize configuration: ${err}`); + }); + } else { + resolve(new ConfigService()); + } + }); + } + + /** + * @function getConfig + * Fetches and returns the config object if available + * @returns {any | undefined} The config object if available + */ + public getConfig(): any | undefined { + try { + const cfgString = storageType.getItem(StorageKey.CONFIG); + return cfgString ? JSON.parse(cfgString) : undefined; + } catch (err: unknown) { + // eslint-disable-next-line no-console + console.error(`Missing configuration: ${err}`); + return undefined; + } + } +} diff --git a/frontend/src/services/helloService.ts b/frontend/src/services/helloService.ts new file mode 100644 index 0000000..cf91c39 --- /dev/null +++ b/frontend/src/services/helloService.ts @@ -0,0 +1,12 @@ +import { appAxios } from './interceptors'; + +export default { + /** + * @function helloWorld + * Returns the home page header + * @returns {Promise} An axios response + */ + helloWorld() { + return appAxios().get('hello'); + }, +}; diff --git a/frontend/src/services/index.ts b/frontend/src/services/index.ts new file mode 100644 index 0000000..230f0e0 --- /dev/null +++ b/frontend/src/services/index.ts @@ -0,0 +1,3 @@ +export { default as AuthService } from './authService'; +export { default as ConfigService } from './configService'; +export { default as helloService } from './helloService'; diff --git a/frontend/src/services/interceptors.ts b/frontend/src/services/interceptors.ts new file mode 100644 index 0000000..99226cb --- /dev/null +++ b/frontend/src/services/interceptors.ts @@ -0,0 +1,35 @@ +import axios from 'axios'; + +import { AuthService, ConfigService } from './index'; + +import type { AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios'; + +/** + * @function appAxios + * Returns an Axios instance for the application API + * @param {AxiosRequestConfig} options Axios request config options + * @returns {AxiosInstance} An axios instance + */ +export function appAxios(options: AxiosRequestConfig = {}): AxiosInstance { + const instance = axios.create({ + baseURL: new ConfigService().getConfig().apiPath, + timeout: 10000, + ...options + }); + + instance.interceptors.request.use( + async (cfg: InternalAxiosRequestConfig) => { + const authService = new AuthService(); + const user = await authService.getUser(); + if (!!user && !user.expired) { + cfg.headers.Authorization = `Bearer ${user.access_token}`; + } + return Promise.resolve(cfg); + }, + (error: Error) => { + return Promise.reject(error); + } + ); + + return instance; +} diff --git a/frontend/src/shims.d.ts b/frontend/src/shims.d.ts new file mode 100644 index 0000000..506bf2e --- /dev/null +++ b/frontend/src/shims.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/frontend/src/store/appStore.ts b/frontend/src/store/appStore.ts new file mode 100644 index 0000000..2959921 --- /dev/null +++ b/frontend/src/store/appStore.ts @@ -0,0 +1,77 @@ +import { defineStore } from 'pinia'; +import { computed, ref } from 'vue'; + +import type { Ref } from 'vue'; + +export type AppStoreState = { + loadingCalls: Ref + loadingInterval: Ref | undefined> + loadingMode: Ref<'determinate' | 'indeterminate'> + loadingValue: Ref +} + +export const useAppStore = defineStore('app', () => { + // State + const state: AppStoreState = { + loadingCalls: ref(0), + loadingInterval: ref(undefined), + loadingMode: ref('indeterminate'), + loadingValue: ref(0) + }; + + // Getters + const getters = { + getIsLoading: computed(() => state.loadingCalls.value > 0), + getLoadingCalls: computed(() => state.loadingCalls.value), + getLoadingMode: computed(() => state.loadingMode.value), + getLoadingValue: computed(() => state.loadingValue.value) + }; + + // Actions + function beginDeterminateLoading() { + state.loadingValue.value = 0; + ++state.loadingCalls.value; + state.loadingMode.value = 'determinate'; + state.loadingInterval.value = setInterval(() => { + let newValue = state.loadingValue.value + Math.floor(Math.random() * 10) + 1; + if (newValue >= 100) newValue = 100; + state.loadingValue.value = newValue; + }, 1000); + } + + function beginIndeterminateLoading() { + ++state.loadingCalls.value; + state.loadingMode.value = 'indeterminate'; + } + + function endDeterminateLoading() { + state.loadingValue.value = 100; + setTimeout(() => { + clearInterval(state.loadingInterval.value); + state.loadingInterval.value = undefined; + --state.loadingCalls.value; + }, 300); + } + + function endIndeterminateLoading() { + setTimeout(() => { + --state.loadingCalls.value; + }, 300); + } + + return { + // State + ...state, + + // Getters + ...getters, + + // Actions + beginDeterminateLoading, + beginIndeterminateLoading, + endDeterminateLoading, + endIndeterminateLoading + }; +}); + +export default useAppStore; diff --git a/frontend/src/store/authStore.ts b/frontend/src/store/authStore.ts new file mode 100644 index 0000000..091a60c --- /dev/null +++ b/frontend/src/store/authStore.ts @@ -0,0 +1,128 @@ +import { defineStore } from 'pinia'; +import { computed, ref } from 'vue'; + +import { AuthService, ConfigService } from '@/services'; + +import type { IdTokenClaims, User } from 'oidc-client-ts'; +import type { Ref } from 'vue'; + +import type { IdentityProvider } from '@/types'; + +export type AuthStoreState = { + accessToken: Ref, + expiresAt: Ref, + identityId: Ref, + idToken: Ref, + isAuthenticated: Ref, + profile: Ref, + refreshToken: Ref, + scope: Ref, + user: Ref, + userId: Ref +} + +export const useAuthStore = defineStore('auth', () => { + const configService = new ConfigService(); + const authService = new AuthService(); + const userManager = authService.getUserManager(); + + // State + const state: AuthStoreState = { + accessToken: ref(undefined), + expiresAt: ref(0), + identityId: ref(undefined), + idToken: ref(undefined), + isAuthenticated: ref(false), + profile: ref(undefined), + refreshToken: ref(undefined), + scope: ref(undefined), + user: ref(null), + userId: ref(undefined) + }; + + // Getters + const getters = { + getAccessToken: computed(() => state.accessToken.value), + getExpiresAt: computed(() => state.expiresAt.value), + getIdentityId: computed(() => state.identityId.value), + getIdToken: computed(() => state.idToken.value), + getIsAuthenticated: computed(() => state.isAuthenticated.value), + getProfile: computed(() => state.profile.value), + getRefreshToken: computed(() => state.refreshToken.value), + getScope: computed(() => state.scope.value), + getUser: computed(() => state.user.value), + getUserId: computed(() => state.userId.value) + }; + + // Actions + function _registerEvents() { + userManager.events.addAccessTokenExpired(_updateState); + userManager.events.addAccessTokenExpiring(_updateState); + userManager.events.addSilentRenewError(_updateState); + userManager.events.addUserLoaded(_updateState); + userManager.events.addUserSessionChanged(_updateState); + userManager.events.addUserSignedIn(_updateState); + userManager.events.addUserSignedOut(_updateState); + userManager.events.addUserUnloaded(_updateState); + } + + async function _updateState() { + const user = await authService.getUser(); + const profile = user?.profile; + const isAuthenticated = !!user && !user.expired; + const identityId = configService.getConfig().idpList + .map((provider: IdentityProvider) => profile + ? profile[provider.identityKey] + : undefined) + .filter((item?: string) => item)[0]; + + state.accessToken.value = user?.access_token; + state.expiresAt.value = user?.expires_at; + state.identityId.value = identityId; + state.idToken.value = user?.id_token; + state.isAuthenticated.value = isAuthenticated; + state.profile.value = profile; + state.refreshToken.value = user?.refresh_token; + state.scope.value = user?.scope; + state.user.value = user; + state.userId.value = (isAuthenticated && identityId) + ? '64595a82-ec73-4708-a21d-9c64f0a22f7e' // Random GUID. Do a user lookup here! + : undefined; + } + + async function init() { + await AuthService.init(); + _registerEvents(); + await _updateState(); + } + + async function login() { + return authService.login(); + } + + async function loginCallback() { + return authService.loginCallback(); + } + + async function logout() { + return authService.logout(); + } + + return { + // State + ...state, + + // Getters + ...getters, + + // Actions + _registerEvents, + _updateState, + init, + login, + loginCallback, + logout + }; +}); + +export default useAuthStore; diff --git a/frontend/src/store/configStore.ts b/frontend/src/store/configStore.ts new file mode 100644 index 0000000..ceee638 --- /dev/null +++ b/frontend/src/store/configStore.ts @@ -0,0 +1,44 @@ +import { defineStore } from 'pinia'; +import { computed, ref } from 'vue'; + +import { ConfigService } from '@/services'; + +import type { Ref } from 'vue'; + +export type ConfigStoreState = { + config: Ref +} + +export const useConfigStore = defineStore('config', () => { + const configService = new ConfigService(); + + // State + const state: ConfigStoreState = { + config: ref(null), + }; + + // Getters + const getters = { + getConfig: computed(() => state.config.value) + }; + + // Actions + async function init(): Promise { + await ConfigService.init(); + + state.config.value = configService.getConfig(); + } + + return { + // State + ...state, + + // Getters + ...getters, + + // Actions + init + }; +}); + +export default useConfigStore; diff --git a/frontend/src/store/helloStore.ts b/frontend/src/store/helloStore.ts new file mode 100644 index 0000000..1a1756e --- /dev/null +++ b/frontend/src/store/helloStore.ts @@ -0,0 +1,50 @@ +import { defineStore } from 'pinia'; +import { computed, ref } from 'vue'; + +import { helloService } from '@/services'; +import { useAppStore } from '@/store'; + +import type { Ref } from 'vue'; + +export type HelloStoreState = { + hello: Ref +} + +export const useHelloStore = defineStore('hello', () => { + // Store + const appStore = useAppStore(); + + // State + const state: HelloStoreState = { + hello: ref(null), + }; + + // Getters + const getters = { + getHello: computed(() => state.hello.value) + }; + + // Actions + async function helloWorld() { + try { + appStore.beginIndeterminateLoading(); + state.hello.value = (await helloService.helloWorld()).data; + } + finally { + appStore.endIndeterminateLoading(); + } + } + + return { + // State + ...state, + + // Getters + ...getters, + + // Actions + helloWorld, + }; +}); + +export default useHelloStore; diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts new file mode 100644 index 0000000..e5f768f --- /dev/null +++ b/frontend/src/store/index.ts @@ -0,0 +1,4 @@ +export { default as useAppStore } from './appStore'; +export { default as useAuthStore } from './authStore'; +export { default as useConfigStore } from './configStore'; +export { default as useHelloStore } from './helloStore'; diff --git a/frontend/src/types/IdentityProvider.ts b/frontend/src/types/IdentityProvider.ts new file mode 100644 index 0000000..12f36ed --- /dev/null +++ b/frontend/src/types/IdentityProvider.ts @@ -0,0 +1,7 @@ +export type IdentityProvider = { + name: string; + elevatedRights: boolean; + identityKey: string; + idp: string; + searchable: boolean; +} diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts new file mode 100644 index 0000000..e3fbf23 --- /dev/null +++ b/frontend/src/types/index.ts @@ -0,0 +1 @@ +export type { IdentityProvider } from './IdentityProvider'; diff --git a/frontend/src/utils/constants.ts b/frontend/src/utils/constants.ts new file mode 100644 index 0000000..847d4fd --- /dev/null +++ b/frontend/src/utils/constants.ts @@ -0,0 +1,34 @@ +/** + * Default string delimiter + */ +export const DELIMITER = '/'; + +/** + * Route names + */ +export const RouteNames = Object.freeze({ + CALLBACK: 'callback', + DEVELOPER: 'developer', + FORBIDDEN: 'forbidden', + HOME: 'home', + LOGIN: 'login', + LOGOUT: 'logout' +}); + +/** + * Application storage keys + */ +export const StorageKey = Object.freeze({ + AUTH: 'entrypoint', + CONFIG: 'config' +}); + +/** + * Default toast message display times + */ +export const ToastTimeout = Object.freeze({ + ERROR: 5000, + INFO: 3000, + SUCCESS: 3000, + WARNING: 5000 +}); diff --git a/frontend/src/utils/enums.ts b/frontend/src/utils/enums.ts new file mode 100644 index 0000000..ff86ef9 --- /dev/null +++ b/frontend/src/utils/enums.ts @@ -0,0 +1,8 @@ +/* eslint-disable no-unused-vars */ // TODO: Remove this blanket disable +// Enums that represent general app-wide values + +// Which way to display a button that can appear in multiple modes +export enum ButtonMode { + BUTTON = 'BUTTON', + ICON = 'ICON', +} diff --git a/frontend/src/utils/formatters.ts b/frontend/src/utils/formatters.ts new file mode 100644 index 0000000..ad06587 --- /dev/null +++ b/frontend/src/utils/formatters.ts @@ -0,0 +1,39 @@ +import { format, parseJSON } from 'date-fns'; + +function _dateFnsFormat(value: string, formatter: string) { + const formatted = ''; + try { + if (value) { + return format(parseJSON(value), formatter); + } + } catch (error) { + // eslint-disable-next-line no-console + console.error(`_dateFnsFormat: Error parsing ${value} to ${error}`); + } + return formatted; +} + +/** + * @function formatDate + * Converts a date to an 'MMMM D YYYY' formatted string + * @param {String} value A string representation of a date + * @returns {String} A string representation of `value` + */ +export function formatDate(value: string) { + return _dateFnsFormat(value, 'MMMM d yyyy'); +} + +/** + * @function formatDateLong + * Converts a date to an 'MMMM D yyyy, h:mm:ss a' formatted string + * @param {String} value A string representation of a date + * @returns {String} A string representation of `value` + */ +export function formatDateLong(value: string) { + return _dateFnsFormat(value, 'MMMM d yyyy, h:mm:ss a'); +} + +export function toKebabCase(str: string | null) { + const strs = str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g); + return strs ? strs.join('-').toLocaleLowerCase() : ''; +} diff --git a/frontend/src/utils/utils.ts b/frontend/src/utils/utils.ts new file mode 100644 index 0000000..94b79d7 --- /dev/null +++ b/frontend/src/utils/utils.ts @@ -0,0 +1,85 @@ +import { DELIMITER } from '@/utils/constants'; + +/** + * @function differential + * Create a key/value differential from source against comparer + * @param {object} source Source object + * @param {object} comparer The object to be compared against + * @returns {object} Object containing the non-matching key/value pairs in the source object + */ +export function differential(source: any, comparer: any): any { + return Object.fromEntries(Object.entries(source) + .filter(([key, value]) => comparer[key] !== value) + ); +} + +/** + * @function isDebugMode + * Checks if the app is currently running in debug mode + * @returns {boolean} True if in debug, false otherwise + */ +export function isDebugMode(): boolean { + return import.meta.env.MODE.toUpperCase() === 'DEBUG'; +} + +/** + * @function joinPath + * Joins a set of string arguments to yield a string path + * @param {...string} items The strings to join on + * @returns {string} A path string with the specified delimiter + */ +export function joinPath(...items: Array): string { + if (items && items.length) { + const parts: Array = []; + items.forEach(p => { + if (p) p.split(DELIMITER).forEach(x => { + if (x && x.trim().length) parts.push(x); + }); + }); + return parts.join(DELIMITER); + } + else return ''; +} + +/** + * @function partition + * Partitions an array into two array sets depending on conditional + * @see {@link https://stackoverflow.com/a/71247432} + * @param {Array} arr The array to partition + * @param {Function} predicate The predicate function + * @returns + */ +export function partition( + arr: Array, + // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars + predicate: (v: T, i: number, ar: Array) => boolean +): [Array, Array] { + return arr.reduce( + (acc, item, index, array) => { + acc[+!predicate(item, index, array)].push(item); + return acc; + }, + [[], []] as [Array, Array] + ); +} + +/** + * @function setDispositionHeader + * Constructs a valid RFC 6266 'Content-Disposition' header + * and optionally handles RFC 8187 UTF-8 encoding when necessary + * @param {string} filename The file name to check if encoding is needed + * @returns {string} The value for the key 'Content-Disposition' + */ +export function setDispositionHeader(filename: string) { + const dispositionHeader = `attachment; filename="${filename}"`; + const encodedFilename = encodeURIComponent(filename).replace( + /[!'()*]/g, + (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, + ); + + if (filename === encodedFilename) { + return dispositionHeader; + } else { + return dispositionHeader.concat(`; filename*=UTF-8''${encodedFilename}`); + } +} diff --git a/frontend/src/views/DeveloperView.vue b/frontend/src/views/DeveloperView.vue new file mode 100644 index 0000000..597baa5 --- /dev/null +++ b/frontend/src/views/DeveloperView.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/frontend/src/views/Forbidden.vue b/frontend/src/views/Forbidden.vue new file mode 100644 index 0000000..3fabce5 --- /dev/null +++ b/frontend/src/views/Forbidden.vue @@ -0,0 +1,13 @@ + + + diff --git a/frontend/src/views/NotFound.vue b/frontend/src/views/NotFound.vue new file mode 100644 index 0000000..aef7578 --- /dev/null +++ b/frontend/src/views/NotFound.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/frontend/src/views/oidc/OidcLoginView.vue b/frontend/src/views/oidc/OidcLoginView.vue new file mode 100644 index 0000000..3f3cb31 --- /dev/null +++ b/frontend/src/views/oidc/OidcLoginView.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/frontend/src/views/oidc/OidcLogoutView.vue b/frontend/src/views/oidc/OidcLogoutView.vue new file mode 100644 index 0000000..04efc3c --- /dev/null +++ b/frontend/src/views/oidc/OidcLogoutView.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/frontend/tests/unit/App.spec.ts b/frontend/tests/unit/App.spec.ts new file mode 100644 index 0000000..3bed12b --- /dev/null +++ b/frontend/tests/unit/App.spec.ts @@ -0,0 +1,7 @@ +import { ValidationMessages } from '@/utils/constants'; + +describe('App', () => { + it('working', () => { + expect(ValidationMessages).toBeTruthy(); + }); +}); diff --git a/frontend/tests/unit/components/form/TextInput.spec.ts b/frontend/tests/unit/components/form/TextInput.spec.ts new file mode 100644 index 0000000..95ac6e4 --- /dev/null +++ b/frontend/tests/unit/components/form/TextInput.spec.ts @@ -0,0 +1,79 @@ +import { shallowMount } from '@vue/test-utils'; + +import PrimeVue from 'primevue/config'; +import TextInput from '@/components/form/TextInput.vue'; + +describe('TextInput.vue', () => { + it('renders', () => { + const wrapper = shallowMount(TextInput, { + props: { + name: 'test', + }, + global: { + plugins: [PrimeVue] + } + }); + + expect(wrapper).toBeTruthy(); + }); + + it('displays the label', () => { + const wrapper = shallowMount(TextInput, { + props: { + label: 'testlabel', + name: 'test', + }, + global: { + plugins: [PrimeVue] + } + }); + + const label = wrapper.find('label'); + expect(label.text()).toBe('testlabel'); + }); + + it('displays the help text', () => { + const wrapper = shallowMount(TextInput, { + props: { + helpText: 'some help text', + name: 'test', + }, + global: { + plugins: [PrimeVue] + } + }); + + const help = wrapper.find('small'); + expect(help.text()).toBe('some help text'); + }); + + it('sets the placeholder text', () => { + const wrapper = shallowMount(TextInput, { + props: { + name: 'test', + placeholder: 'some placeholder text' + }, + global: { + plugins: [PrimeVue] + } + }); + + const input = wrapper.getComponent({ name: 'InputText' }); + expect(input.attributes('placeholder')).toBe('some placeholder text'); + }); + + it('sets the disabled attribute', () => { + const wrapper = shallowMount(TextInput, { + props: { + disabled: true, + name: 'test', + }, + global: { + plugins: [PrimeVue] + } + }); + + const input = wrapper.getComponent({ name: 'InputText' }); + expect(input.attributes('disabled')).toBeDefined(); + }); +}); diff --git a/frontend/tests/unit/components/layout/Header.spec.ts b/frontend/tests/unit/components/layout/Header.spec.ts new file mode 100644 index 0000000..55ab19d --- /dev/null +++ b/frontend/tests/unit/components/layout/Header.spec.ts @@ -0,0 +1,42 @@ +import { createTestingPinia } from '@pinia/testing'; +import { shallowMount } from '@vue/test-utils'; + +import PrimeVue from 'primevue/config'; +import Header from '@/components/layout/Header.vue'; +import { StorageKey } from '@/utils/constants'; + +// Mock router calls +vi.mock('vue-router', () => ({ + useRouter: () => ({ + push: vi.fn(), + }), +})); + +beforeEach(() => { + sessionStorage.setItem(StorageKey.CONFIG, JSON.stringify( + { + oidc: { + authority: 'abc', + clientId: '123' + } + } + )); + + vi.clearAllMocks(); +}); + +afterEach(() => { + sessionStorage.clear(); +}); + +// TODO: Figure out Auth service mocking +describe('Header.vue', () => { + it('renders', () => { + const wrapper = shallowMount(Header, { + global: { + plugins: [createTestingPinia(), PrimeVue], + }, + }); + expect(wrapper).toBeTruthy(); + }); +}); diff --git a/frontend/tests/unit/components/layout/LoginButton.spec.ts b/frontend/tests/unit/components/layout/LoginButton.spec.ts new file mode 100644 index 0000000..8679e9a --- /dev/null +++ b/frontend/tests/unit/components/layout/LoginButton.spec.ts @@ -0,0 +1,137 @@ +import { createTestingPinia } from '@pinia/testing'; +import { mount, shallowMount } from '@vue/test-utils'; +import { useRouter, useRoute } from 'vue-router'; + +import PrimeVue from 'primevue/config'; +import LoginButton from '@/components/layout/LoginButton.vue'; +import { StorageKey } from '@/utils/constants'; +import { RouteNames } from '@/utils/constants'; + +// Mock router calls +vi.mock('vue-router', () => ({ + useRoute: vi.fn(), + useRouter: vi.fn(() => ({ + push: () => { } + })) +})); + +beforeEach(() => { + sessionStorage.setItem(StorageKey.CONFIG, JSON.stringify( + { + oidc: { + authority: 'abc', + clientId: '123' + } + } + )); + + vi.clearAllMocks(); +}); + +afterEach(() => { + sessionStorage.clear(); +}); + +describe('LoginButton.vue', () => { + it('renders', () => { + const wrapper = shallowMount(LoginButton, { + global: { + plugins: [createTestingPinia({ + initialState: { + auth: { user: {} } + } + }), PrimeVue], + }, + }); + expect(wrapper).toBeTruthy(); + }); + + describe('unauthenticated', () => { + it('renders login button', () => { + const wrapper = mount(LoginButton, { + global: { + plugins: [createTestingPinia({ + initialState: { + auth: { isAuthenticated: false } + } + }), PrimeVue], + }, + }); + + const btn = wrapper.getComponent({ name: 'Button' }); + expect(btn.text()).toBe('Log in'); + }); + + it('navigates to login on click', async () => { + (useRoute as any).mockImplementation(() => ({ + params: { name: RouteNames.LOGIN } + })); + + const push = vi.fn(); + (useRouter as any).mockImplementation(() => ({ + push + })); + + const wrapper = shallowMount(LoginButton, { + global: { + plugins: [createTestingPinia({ + initialState: { + auth: { isAuthenticated: false } + } + }), PrimeVue], + stubs: ['router-link', 'router-view'], + }, + }); + + const btn = wrapper.getComponent({ name: 'Button' }); + await btn.trigger('click'); + expect(push).toBeCalledTimes(1); + expect(push).toBeCalledWith({ name: RouteNames.LOGIN }); + }); + }); + + + describe('authenticated', () => { + it('renders logout button', () => { + const wrapper = mount(LoginButton, { + global: { + plugins: [createTestingPinia({ + initialState: { + auth: { isAuthenticated: true } + } + }), PrimeVue], + }, + }); + + const btn = wrapper.getComponent({ name: 'Button' }); + expect(btn.text()).toBe('Log out'); + }); + + it('navigates to logout on click', async () => { + (useRoute as any).mockImplementation(() => ({ + params: { name: RouteNames.LOGOUT } + })); + + const push = vi.fn(); + (useRouter as any).mockImplementation(() => ({ + push + })); + + const wrapper = shallowMount(LoginButton, { + global: { + plugins: [createTestingPinia({ + initialState: { + auth: { isAuthenticated: true } + } + }), PrimeVue], + stubs: ['router-link', 'router-view'], + }, + }); + + const btn = wrapper.getComponent({ name: 'Button' }); + await btn.trigger('click'); + expect(push).toBeCalledTimes(1); + expect(push).toBeCalledWith({ name: RouteNames.LOGOUT }); + }); + }); +}); diff --git a/frontend/tests/unit/store/appStore.spec.ts b/frontend/tests/unit/store/appStore.spec.ts new file mode 100644 index 0000000..4893256 --- /dev/null +++ b/frontend/tests/unit/store/appStore.spec.ts @@ -0,0 +1,49 @@ +import { setActivePinia, createPinia } from 'pinia'; + +import { useAppStore } from '@/store'; + +import type { StoreGeneric } from 'pinia'; + +beforeEach(() => { + setActivePinia(createPinia()); + vi.clearAllMocks(); +}); + +describe('App Store', () => { + + let appStore: StoreGeneric; + + beforeEach(() => { + appStore = useAppStore(); + }); + + it('beginDeterminateLoading', () => { + appStore.beginDeterminateLoading(); + expect(appStore.getLoadingValue).toBe(0); + expect(appStore.getLoadingCalls).toBe(1); + expect(appStore.getLoadingMode).toBe('determinate'); + expect(appStore.getIsLoading).toBeTruthy(); + }); + + it('beginIndeterminateLoading', () => { + appStore.beginIndeterminateLoading(); + expect(appStore.getLoadingCalls).toBe(1); + expect(appStore.getLoadingMode).toBe('indeterminate'); + expect(appStore.getIsLoading).toBeTruthy(); + }); + + it('endDeterminateLoading', () => { + appStore.endDeterminateLoading(); + expect(appStore.getLoadingValue).toBe(100); + setTimeout(() => { + expect(appStore.getLoadingCalls).toBe(-1); + }, 300); + }); + + it('endIndeterminateLoading', () => { + appStore.endIndeterminateLoading(); + setTimeout(() => { + expect(appStore.getLoadingCalls).toBe(-1); + }, 300); + }); +}); diff --git a/frontend/tests/unit/store/authStore.spec.ts b/frontend/tests/unit/store/authStore.spec.ts new file mode 100644 index 0000000..d455450 --- /dev/null +++ b/frontend/tests/unit/store/authStore.spec.ts @@ -0,0 +1,76 @@ +import { setActivePinia, createPinia } from 'pinia'; + +// import { useAuthStore } from '@/store'; +// import { AuthService } from '@/services'; + +describe.skip('Auth Store', () => { + //const noop = () => { }; + + beforeEach(() => { + // Creates a fresh pinia and make it active so it's automatically picked + // up by any useStore() call without having to pass it to it: + // `useStore(pinia)` + setActivePinia(createPinia()); + }); + + it('_registerEvents', () => { + // const p = AuthService.prototype; + // const o = p.getOidcSettings; + // const oo = o(); + // const store = useAuthStore(); + // const userManager = AuthService.getUserManager(); + + // const addAccessTokenExpiredSpy = jest.spyOn(userManager.events, 'addAccessTokenExpired'); + // const addAccessTokenExpiringSpy = jest.spyOn(userManager.events, 'addAccessTokenExpiring'); + // const addSilentRenewErrorSpy = jest.spyOn(userManager.events, 'addSilentRenewError'); + // const addUserLoadedSpy = jest.spyOn(userManager.events, 'addUserLoaded'); + // const addUserSessionChangedSpy = jest.spyOn(userManager.events, 'addUserSessionChanged'); + // const addUserSignedInSpy = jest.spyOn(userManager.events, 'addUserSignedIn'); + // const addUserSignedOutSpy = jest.spyOn(userManager.events, 'addUserSignedOut'); + // const addUserUnloadedSpy = jest.spyOn(userManager.events, 'addUserUnloaded'); + + // addAccessTokenExpiredSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addAccessTokenExpiringSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addSilentRenewErrorSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addUserLoadedSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addUserSessionChangedSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addUserSignedInSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addUserSignedOutSpy.mockImplementation(() => { + // return jest.fn(); + // }); + // addUserUnloadedSpy.mockImplementation(() => { + // return jest.fn(); + // }); + + // addAccessTokenExpiredSpy.mockReturnValue(noop); + // addAccessTokenExpiringSpy.mockReturnValue(noop); + // addSilentRenewErrorSpy.mockReturnValue(noop); + // addUserLoadedSpy.mockReturnValue(noop); + // addUserSessionChangedSpy.mockReturnValue(noop); + // addUserSignedInSpy.mockReturnValue(noop); + // addUserSignedOutSpy.mockReturnValue(noop); + // addUserUnloadedSpy.mockReturnValue(noop); + + // store._registerEvents(); + // expect(addAccessTokenExpiredSpy).toHaveBeenCalledTimes(1); + // expect(addAccessTokenExpiringSpy).toHaveBeenCalledTimes(1); + // expect(addSilentRenewErrorSpy).toHaveBeenCalledTimes(1); + // expect(addUserLoadedSpy).toHaveBeenCalledTimes(1); + // expect(addUserSessionChangedSpy).toHaveBeenCalledTimes(1); + // expect(addUserSignedInSpy).toHaveBeenCalledTimes(1); + // expect(addUserSignedOutSpy).toHaveBeenCalledTimes(1); + // expect(addUserUnloadedSpy).toHaveBeenCalledTimes(1); + }); +}); diff --git a/frontend/tests/unit/store/configStore.spec.ts b/frontend/tests/unit/store/configStore.spec.ts new file mode 100644 index 0000000..0636eaf --- /dev/null +++ b/frontend/tests/unit/store/configStore.spec.ts @@ -0,0 +1,56 @@ +import { setActivePinia, createPinia } from 'pinia'; + +import { ConfigService } from '@/services'; +import { useConfigStore } from '@/store'; +import { StorageKey } from '@/utils/constants'; + +import type { StoreGeneric } from 'pinia'; +import type { SpyInstance } from 'vitest'; + +beforeEach(() => { + setActivePinia(createPinia()); + + sessionStorage.setItem(StorageKey.CONFIG, JSON.stringify( + { + oidc: { + authority: 'abc', + clientId: '123' + } + } + )); + + vi.clearAllMocks(); +}); + +afterEach(() => { + sessionStorage.clear(); +}); + +describe('Config Store', () => { + + let configService: ConfigService; + let configStore: StoreGeneric; + + let configServiceInitSpy: SpyInstance; + let configServiceGetConfigSpy: SpyInstance; + + beforeEach(() => { + configService = new ConfigService(); + configStore = useConfigStore(); + + configServiceInitSpy = vi.spyOn(ConfigService, 'init'); + configServiceGetConfigSpy = vi.spyOn(configService, 'getConfig'); + }); + + describe('init', () => { + it('initializes the service and sets the state', async () => { + configServiceGetConfigSpy.mockReturnValue(sessionStorage.getItem(StorageKey.CONFIG)); + + await configStore.init(); + + expect(configServiceInitSpy).toHaveBeenCalledTimes(1); + expect(configServiceGetConfigSpy).toHaveBeenCalledTimes(1); + expect(configStore.getConfig).toStrictEqual(sessionStorage.getItem(StorageKey.CONFIG)); + }); + }); +}); diff --git a/frontend/tests/unit/utils/formatters.spec.ts b/frontend/tests/unit/utils/formatters.spec.ts new file mode 100644 index 0000000..73d3cb8 --- /dev/null +++ b/frontend/tests/unit/utils/formatters.spec.ts @@ -0,0 +1,14 @@ +import { toKebabCase } from '@/utils/formatters'; + +describe('formatters.ts toKebabCase', () => { + it('returns the expected UUID values', () => { + expect(toKebabCase('descriptive Variable name')).toEqual('descriptive-variable-name'); + expect(toKebabCase('INTERESTING FILE')).toEqual('interesting-file'); + expect(toKebabCase('abc')).toEqual('abc'); + }); + + it('returns blanks if blank provided', () => { + expect(toKebabCase('')).toEqual(''); + expect(toKebabCase(null)).toEqual(''); + }); +}); diff --git a/frontend/tsconfig.config.json b/frontend/tsconfig.config.json new file mode 100644 index 0000000..8a74e46 --- /dev/null +++ b/frontend/tsconfig.config.json @@ -0,0 +1,12 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true + } +} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..aee1fb3 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,126 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "ES2020", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": ".", /* Specify the base directory to resolve non-relative module names. */ + "paths": { + "@/*": [ + "src/*" + ] + }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "types": [ + "vite/client", + "vitest/globals", + "node" + ], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + "preserveValueImports": false, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "node_modules" + ], + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts" + ], + "references": [ + { + "path": "./tsconfig.config.json" + } + ] +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..1957225 --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,46 @@ +/// +import { fileURLToPath, URL } from 'node:url'; +import { defineConfig } from 'vite'; +import { configDefaults } from 'vitest/config'; +import vue from '@vitejs/plugin-vue'; +import vueJsx from '@vitejs/plugin-vue-jsx'; + +const proxyObject = { + target: 'http://localhost:8080', + ws: true, + changeOrigin: true, +}; + +// https://vitejs.dev/config/ +export default defineConfig({ + // base: './', + css: { + preprocessorOptions: { + scss: { + additionalData: '@import \'@/assets/variables.scss\';', + }, + }, + }, + plugins: [vue(), vueJsx()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + server: { + proxy: { + '/api': proxyObject, + '/config': proxyObject, + }, + }, + test: { + globals: true, + environment: 'jsdom', + include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx,vue}'], + exclude: [...configDefaults.exclude, 'packages/template/*'], + coverage: { + provider: 'istanbul', // 'istanbul' or 'c8' + reporter: ['text', 'json', 'html', 'clover', 'lcov'], + }, + }, +}); diff --git a/frontend/volar.config.js b/frontend/volar.config.js new file mode 100644 index 0000000..7d9d494 --- /dev/null +++ b/frontend/volar.config.js @@ -0,0 +1,14 @@ +const baseConfig = require('./.eslintrc.js'); + +module.exports = { + plugins: [ + require('volar-service-eslint').default(program => ({ + ...baseConfig, + ignorePatterns: ['**/*.vue.*'], // ignore virtual files: *.vue.ts, *.vue.html, *.vue.css + parserOptions: { + ...baseConfig.parserOptions, + programs: [program], // replace eslint typescript program + }, + })), + ], +}; From e7b856a0fa03f7f1b334f64e7c368bdbbba72bd6 Mon Sep 17 00:00:00 2001 From: Kyle Morel Date: Thu, 26 Oct 2023 11:27:28 -0700 Subject: [PATCH 2/6] New views. Authentication. Package updates. --- .gitignore | 1 - .vscode/extensions.json | 14 + .vscode/settings.json | 26 + Dockerfile | 58 +- README.md | 43 +- SECURITY.md | 12 +- app/.eslintrc.js | 30 +- app/.prettierignore | 29 + app/.prettierrc | 13 + app/app.ts | 9 +- app/config/custom-environment-variables.json | 9 + app/config/idplist-default.json | 12 +- app/{frontend-utils.ts => deploy-utils.ts} | 23 +- app/package.json | 44 +- app/src/components/constants.ts | 15 + app/src/components/log.ts | 14 +- app/src/components/utils.ts | 31 +- app/src/controllers/hello.ts | 3 +- app/src/middleware/authentication.ts | 72 + app/src/middleware/requireSomeAuth.ts | 27 + app/src/routes/v1/hello.ts | 3 +- app/src/routes/v1/index.ts | 6 +- app/src/services/hello.ts | 11 +- app/src/types/CurrentUser.ts | 6 + app/src/types/Request.d.ts | 6 + app/tests/common/helper.ts | 10 +- app/tsconfig.json | 32 +- bcgovpubcode.yaml | 8 +- charts/bcbox/.helmignore | 23 - charts/bcbox/Chart.yaml | 42 - charts/bcbox/README.md | 81 - charts/bcbox/templates/NOTES.txt | 24 - charts/bcbox/templates/_helpers.tpl | 77 - charts/bcbox/templates/configmap.yaml | 12 - charts/bcbox/templates/deploymentconfig.yaml | 69 - charts/bcbox/templates/hpa.yaml | 37 - charts/bcbox/templates/networkpolicy.yaml | 22 - charts/bcbox/templates/route.yaml | 28 - charts/bcbox/templates/service.yaml | 16 - charts/bcbox/templates/serviceaccount.yaml | 13 - charts/bcbox/values.yaml | 124 - frontend/.eslintrc.js | 37 +- frontend/.prettierignore | 29 + frontend/.prettierrc | 13 + frontend/index.html | 23 +- frontend/package-lock.json | 7961 +++-------------- frontend/package.json | 55 +- frontend/src/assets/base.css | 18 +- frontend/src/assets/main.scss | 6 +- frontend/src/assets/primevue.scss | 9 +- .../src/components/form/CopyToClipboard.vue | 13 +- frontend/src/components/form/Password.vue | 4 +- frontend/src/components/form/TextInput.vue | 4 +- .../src/components/guards/RequireAuth.vue | 7 +- frontend/src/components/layout/AppLayout.vue | 3 + frontend/src/components/layout/Footer.vue | 56 +- frontend/src/components/layout/Navbar.vue | 12 +- frontend/src/components/layout/Spinner.vue | 4 +- frontend/src/lib/primevue/useToast.ts | 28 +- frontend/src/main.ts | 8 +- frontend/src/router/index.ts | 16 +- frontend/src/services/authService.ts | 2 +- frontend/src/services/configService.ts | 17 +- frontend/src/services/helloService.ts | 4 +- frontend/src/store/appStore.ts | 10 +- frontend/src/store/authStore.ts | 37 +- frontend/src/store/configStore.ts | 6 +- frontend/src/store/helloStore.ts | 13 +- frontend/src/types/IdentityProvider.ts | 4 +- frontend/src/utils/constants.ts | 3 +- frontend/src/utils/enums.ts | 2 +- frontend/src/utils/utils.ts | 18 +- frontend/src/views/Forbidden.vue | 4 +- frontend/src/views/HomeView.vue | 63 +- frontend/src/views/NotFound.vue | 4 +- frontend/src/views/SecuredView.vue | 31 + frontend/src/views/oidc/OidcCallbackView.vue | 1 + frontend/tests/unit/App.spec.ts | 7 - .../unit/components/form/TextInput.spec.ts | 8 +- .../unit/components/layout/Header.spec.ts | 17 +- .../components/layout/LoginButton.spec.ts | 91 +- frontend/tests/unit/store/appStore.spec.ts | 1 - frontend/tests/unit/store/authStore.spec.ts | 4 - frontend/tests/unit/store/configStore.spec.ts | 10 +- frontend/tsconfig.json | 43 +- frontend/vite.config.ts | 24 +- 86 files changed, 2145 insertions(+), 7720 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 app/.prettierignore create mode 100644 app/.prettierrc rename app/{frontend-utils.ts => deploy-utils.ts} (89%) create mode 100644 app/src/components/constants.ts create mode 100644 app/src/middleware/authentication.ts create mode 100644 app/src/middleware/requireSomeAuth.ts create mode 100644 app/src/types/CurrentUser.ts create mode 100644 app/src/types/Request.d.ts delete mode 100644 charts/bcbox/.helmignore delete mode 100644 charts/bcbox/Chart.yaml delete mode 100644 charts/bcbox/README.md delete mode 100644 charts/bcbox/templates/NOTES.txt delete mode 100644 charts/bcbox/templates/_helpers.tpl delete mode 100644 charts/bcbox/templates/configmap.yaml delete mode 100644 charts/bcbox/templates/deploymentconfig.yaml delete mode 100644 charts/bcbox/templates/hpa.yaml delete mode 100644 charts/bcbox/templates/networkpolicy.yaml delete mode 100644 charts/bcbox/templates/route.yaml delete mode 100644 charts/bcbox/templates/service.yaml delete mode 100644 charts/bcbox/templates/serviceaccount.yaml delete mode 100644 charts/bcbox/values.yaml create mode 100644 frontend/.prettierignore create mode 100644 frontend/.prettierrc create mode 100644 frontend/src/views/SecuredView.vue delete mode 100644 frontend/tests/unit/App.spec.ts diff --git a/.gitignore b/.gitignore index 5fe9667..1b45267 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,6 @@ yarn-error.log* # Editor directories and files .idea -.vscode *.iml *.suo *.ntvs* diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8e31fb9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,14 @@ +{ + "recommendations": [ + "bierner.markdown-preview-github-styles", + "davidanson.vscode-markdownlint", + "dbaeumer.vscode-eslint", + "eamodio.gitlens", + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "redhat.vscode-yaml", + "ryanluker.vscode-coverage-gutters", + "vue.volar", + "vue.vscode-typescript-vue-plugin" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bc775e8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "[html]": { + "editor.defaultFormatter": "vscode.html-language-features" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + "[jsonc]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "coverage-gutters.showGutterCoverage": false, + "coverage-gutters.showLineCoverage": true, + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.formatOnSave": true, + "eslint.format.enable": true, + "files.insertFinalNewline": true +} diff --git a/Dockerfile b/Dockerfile index 74a2647..9653a4d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,51 +1,49 @@ -# FROM docker.io/node:16.15.0-alpine # Last known working alpine image - -# RedHat Image Catalog references -# https://catalog.redhat.com/software/containers/ubi9/nodejs-18/62e8e7ed22d1d3c2dfe2ca01 -# https://catalog.redhat.com/software/containers/ubi9/nodejs-18-minimal/62e8e919d4f57d92a9dee838 - -# -# Build the application -# -FROM registry.access.redhat.com/ubi9/nodejs-18:1-62.1692771036 as application - -ENV NO_UPDATE_NOTIFIER=true - -USER 0 -COPY app /tmp/src/app -WORKDIR /tmp/src/app -RUN chown -R 1001:0 /tmp/src/app - -USER 1001 -RUN npm ci --omit=dev +ARG APP_ROOT=/opt/app-root/src +ARG BASE_IMAGE=docker.io/node:18.18.2-alpine # # Build the frontend # -FROM registry.access.redhat.com/ubi9/nodejs-18:1-62.1692771036 as frontend +FROM ${BASE_IMAGE} as frontend +ARG APP_ROOT ENV NO_UPDATE_NOTIFIER=true -USER 0 -COPY frontend /tmp/src/frontend -WORKDIR /tmp/src/frontend -RUN chown -R 1001:0 /tmp/src/frontend +# NPM Permission Fix +RUN mkdir -p /.npm +RUN chown -R 1001:0 /.npm +# Build Frontend +COPY frontend ${APP_ROOT} +RUN chown -R 1001:0 ${APP_ROOT} USER 1001 +WORKDIR ${APP_ROOT} RUN npm ci && npm run build # # Create the final container image # -FROM registry.access.redhat.com/ubi9/nodejs-18-minimal:1-67 +FROM ${BASE_IMAGE} +ARG APP_ROOT ENV APP_PORT=8080 \ NO_UPDATE_NOTIFIER=true -COPY --from=application /tmp/src/app ${HOME} -COPY --from=frontend /tmp/src/frontend/dist ${HOME}/dist -COPY .git ${HOME}/.git -WORKDIR ${HOME} +# NPM Permission Fix +RUN mkdir -p /.npm +RUN chown -R 1001:0 /.npm + +# Install File Structure +COPY --from=frontend ${APP_ROOT}/dist ${APP_ROOT}/dist +COPY .git ${APP_ROOT}/.git +COPY app ${APP_ROOT} +WORKDIR ${APP_ROOT} + +# Install Application +RUN chown -R 1001:0 ${APP_ROOT} +USER 1001 +WORKDIR ${APP_ROOT}/app +RUN npm ci --omit=dev EXPOSE ${APP_PORT} CMD ["npm", "run", "start"] diff --git a/README.md b/README.md index 8d048a6..7b92186 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ - -# BCBox +# Vue 3 Scaffold [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Lifecycle:Maturing](https://img.shields.io/badge/Lifecycle-Maturing-007EC6)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md) -![Tests](https://github.com/bcgov/bcbox/workflows/Tests/badge.svg) -[![Maintainability](https://api.codeclimate.com/v1/badges/bfaf1cdb7fe730c10840/maintainability)](https://codeclimate.com/github/bcgov/bcbox/maintainability) -[![Test Coverage](https://api.codeclimate.com/v1/badges/bfaf1cdb7fe730c10840/test_coverage)](https://codeclimate.com/github/bcgov/bcbox/test_coverage) +![Tests](https://github.com/bcgov/vue3-scaffold/workflows/Tests/badge.svg) +[![Maintainability](https://api.codeclimate.com/v1/badges/bfaf1cdb7fe730c10840/maintainability)](https://codeclimate.com/github/bcgov/vue3-scaffold/maintainability) +[![Test Coverage](https://api.codeclimate.com/v1/badges/bfaf1cdb7fe730c10840/test_coverage)](https://codeclimate.com/github/bcgov/vue3-scaffold/test_coverage) A frontend UI for managing access control to S3 Objects @@ -15,15 +14,15 @@ To learn more about the **Common Services** available visit the [Common Services ## Directory Structure ```txt -.github/ - PR, Issue templates and CI/CD .vscode/ - VSCode environment configurations app/ - Application Root ├── src/ - Node.js web application │ └── components/ - Components Layer +| └── controllers/ - Controller Layer +| └── routes/ - Routes Layer +| └── services/ - Services Layer +│ ├── types/ - Typescript type definitions └── tests/ - Node.js web application tests -chart/ - General Helm Charts -└── bcbox/ - BCBox Helm Chart Repository - └── templates/ - BCBox Helm Chart Template manifests frontend/ - Frontend Root ├── src/ - Node.js web application │ ├── assets/ - Static File Assets @@ -49,14 +48,30 @@ SECURITY.md - Security Policy and Reporting ## Documentation -* [Application Readme](frontend/README.md) -* [Product Roadmap](https://github.com/bcgov/bcbox/wiki/Product-Roadmap) -* [Product Wiki](https://github.com/bcgov/bcbox/wiki) -* [Security Reporting](SECURITY.md) +- [Application Readme](frontend/README.md) +- [Product Roadmap](https://github.com/bcgov/vue3-scaffold/wiki/Product-Roadmap) +- [Product Wiki](https://github.com/bcgov/vue3-scaffold/wiki) +- [Security Reporting](SECURITY.md) + +## Quick Start Dev Guide + +You can quickly run this application in development mode after cloning by opening two terminal windows and running the following commands (assuming you have already set up local configuration as well). Refer to the [Application Readme](app/README.md) and [Frontend Readme](app/frontend/README.md) for more details. + +``` +cd app +npm i +npm run serve +``` + +``` +cd frontend +npm i +npm run serve +``` ## Getting Help or Reporting an Issue -To report bugs/issues/features requests, please file an [issue](https://github.com/bcgov/bcbox/issues). +To report bugs/issues/features requests, please file an [issue](https://github.com/bcgov/vue3-scaffold/issues). ## How to Contribute diff --git a/SECURITY.md b/SECURITY.md index c13f5e5..8be0f3e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,6 +1,6 @@ # Security Policies and Procedures -This document outlines security procedures and general policies for the BCBox +This document outlines security procedures and general policies for the Vue 3 Scaffold project. - [Supported Versions](#supported-versions) @@ -10,17 +10,17 @@ project. ## Supported Versions -At this time, only the latest version of BCBox is supported. +At this time, only the latest version of Vue 3 Scaffold is supported. | Version | Supported | | ------- | ------------------ | -| 0.1.0 | :white_check_mark: | -| < 0.1.x | :x: | +| 0.4.0 | :white_check_mark: | +| < 0.4.x | :x: | ## Reporting a Bug -The `CSS` team and community take all security bugs in `BCBox` seriously. -Thank you for improving the security of `BCBox`. We appreciate your efforts and +The `CSS` team and community take all security bugs in `Vue 3 Scaffold` seriously. +Thank you for improving the security of `Vue 3 Scaffold`. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. diff --git a/app/.eslintrc.js b/app/.eslintrc.js index 0d29dd9..9bd438c 100644 --- a/app/.eslintrc.js +++ b/app/.eslintrc.js @@ -1,15 +1,13 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution'); - module.exports = { root: true, env: { browser: true, es2020: true, jest: true, - node: true, + node: true }, extends: [ + 'prettier', 'eslint:recommended', 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended' @@ -19,19 +17,18 @@ module.exports = { SharedArrayBuffer: 'readonly', _: false }, - parserOptions: { - ecmaVersion: 11, - }, - plugins: [ - '@typescript-eslint', - ], + plugins: ['@typescript-eslint'], rules: { 'eol-last': ['error', 'always'], - indent: ['error', 2, { - 'SwitchCase': 1 - }], + indent: [ + 'error', + 2, + { + SwitchCase: 1 + } + ], 'linebreak-style': ['error', 'unix'], - 'max-len': ['warn', { 'code': 100, 'comments': 120, 'ignoreUrls': true }], + 'max-len': ['warn', { code: 120, comments: 120, ignoreUrls: true }], 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', quotes: ['error', 'single'], @@ -39,10 +36,7 @@ module.exports = { }, overrides: [ { - files: [ - '**/__tests__/*.{j,t}s?(x)', - '**/tests/unit/**/*.spec.{j,t}s?(x)' - ], + files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'], env: { jest: true } diff --git a/app/.prettierignore b/app/.prettierignore new file mode 100644 index 0000000..53d7d11 --- /dev/null +++ b/app/.prettierignore @@ -0,0 +1,29 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +build +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/app/.prettierrc b/app/.prettierrc new file mode 100644 index 0000000..e5f42d7 --- /dev/null +++ b/app/.prettierrc @@ -0,0 +1,13 @@ +{ + "arrowParens": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "ignore", + "printWidth": 120, + "semi": true, + "singleAttributePerLine": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "none", + "useTabs": false +} diff --git a/app/app.ts b/app/app.ts index 1648800..0cea4a5 100644 --- a/app/app.ts +++ b/app/app.ts @@ -1,11 +1,14 @@ import compression from 'compression'; import config from 'config'; +import cors from 'cors'; import express from 'express'; +import helmet from 'helmet'; import { join } from 'path'; // @ts-expect-error api-problem lacks a defined interface; code still works fine import Problem from 'api-problem'; import querystring from 'querystring'; +import { DEFAULTCORS } from './src/components/constants'; import { getLogger, httpLogger } from './src/components/log'; import { getGitRevision, readIdpList } from './src/components/utils'; import v1Router from './src/routes/v1'; @@ -23,8 +26,10 @@ const state = { const appRouter = express.Router(); const app = express(); app.use(compression()); +app.use(cors(DEFAULTCORS)); app.use(express.json({ limit: config.get('server.bodyLimit') })); app.use(express.urlencoded({ extended: true })); +app.use(helmet()); // Skip if running tests if (process.env.NODE_ENV !== 'test') { @@ -89,10 +94,10 @@ app.use((err: Problem, _req: Request, res: Response, _next: () => void): void => } if (err instanceof Problem) { - err.send(res, null); + err.send(res, undefined); } else { new Problem(500, 'Server Error', { - detail: (err.message) ? err.message : err + detail: err.message ? err.message : err }).send(res); } }); diff --git a/app/config/custom-environment-variables.json b/app/config/custom-environment-variables.json index be3f55d..97a6847 100644 --- a/app/config/custom-environment-variables.json +++ b/app/config/custom-environment-variables.json @@ -10,6 +10,15 @@ "server": { "apiPath": "SERVER_APIPATH", "bodyLimit": "SERVER_BODYLIMIT", + "oidc": { + "enabled": "SERVER_OIDC_ENABLED", + "clientId": "SERVER_OIDC_CLIENTID", + "clientSecret": "SERVER_OIDC_CLIENTSECRET", + "identityKey": "SERVER_OIDC_IDENTITYKEY", + "publicKey": "SERVER_OIDC_PUBLICKEY", + "realm": "SERVER_OIDC_REALM", + "serverUrl": "SERVER_OIDC_SERVERURL" + }, "logFile": "SERVER_LOGFILE", "logLevel": "SERVER_LOGLEVEL", "port": "SERVER_PORT" diff --git a/app/config/idplist-default.json b/app/config/idplist-default.json index 8be3117..34c9950 100644 --- a/app/config/idplist-default.json +++ b/app/config/idplist-default.json @@ -1,23 +1,17 @@ [ { "name": "IDIR", - "elevatedRights": true, "idp": "idir", - "identityKey": "idir_user_guid", - "searchable": true + "identityKey": "idir_user_guid" }, { "name": "BCeID Basic", - "elevatedRights": false, "idp": "bceidbasic", - "identityKey": "bceid_user_guid", - "searchable": false + "identityKey": "bceid_user_guid" }, { "name": "BCeID Business", - "elevatedRights": false, "idp": "bceidbusiness", - "identityKey": "bceid_user_guid", - "searchable": false + "identityKey": "bceid_user_guid" } ] diff --git a/app/frontend-utils.ts b/app/deploy-utils.ts similarity index 89% rename from app/frontend-utils.ts rename to app/deploy-utils.ts index 35c76e7..3f773b5 100644 --- a/app/frontend-utils.ts +++ b/app/deploy-utils.ts @@ -1,20 +1,11 @@ -// This script attempts to gracefully rebuild and update bcbox-frontend if necessary +// This script attempts to gracefully rebuild and update vue3-scaffold-frontend if necessary /* eslint-disable no-console */ -import { - existsSync, - lstatSync, - mkdirSync, - readdirSync, - readFileSync, - rmSync, - statSync, - writeFileSync -} from 'fs'; +import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'fs'; import { basename, join } from 'path'; const FRONTEND_DIR = '../frontend'; const DIST_DIR = 'dist'; -const TITLE = 'bcbox-frontend'; +const TITLE = 'vue3-scaffold-frontend'; try { const args = process.argv.slice(2); @@ -56,7 +47,7 @@ try { /** * @function buildComponents - * @description Rebuild `bcbox-frontend` library + * @description Rebuild `vue3-scaffold-frontend` library */ function buildComponents() { if (!existsSync(`${FRONTEND_DIR}/node_modules`)) { @@ -70,7 +61,7 @@ function buildComponents() { /** * @function cleanComponents - * @description Clean `bcbox-frontend` library directory + * @description Clean `vue3-scaffold-frontend` library directory */ function cleanComponents() { console.log(`Cleaning ${TITLE}...`); @@ -80,7 +71,7 @@ function cleanComponents() { /** * @function deployComponents - * @description Redeploy `bcbox-frontend` library + * @description Redeploy `bcvue3-scaffoldbox-frontend` library */ function deployComponents() { console.log(`Redeploying ${TITLE}...`); @@ -155,7 +146,7 @@ export function copyDirRecursiveSync(source: string, target: string) { // Copy if (lstatSync(source).isDirectory()) { files = readdirSync(source); - files.forEach(file => { + files.forEach((file) => { const curSource = join(source, file); if (lstatSync(curSource).isDirectory()) { copyDirRecursiveSync(curSource, targetFolder); diff --git a/app/package.json b/app/package.json index e4dca1d..32e2f06 100644 --- a/app/package.json +++ b/app/package.json @@ -6,12 +6,12 @@ "author": "NR Common Service Showcase ", "license": "Apache-2.0", "scripts": { - "build": "ts-node ./frontend-utils.ts", + "build": "ts-node ./deploy-utils.ts", "clean": "rimraf coverage dist", - "clean:all": "npm run clean && ts-node ./frontend-utils.ts clean", + "clean:all": "npm run clean && ts-node ./deploy-utils.ts clean", "debug": "ts-node-dev --debug --respawn --transpile-only --rs --watch bin,config,dist ./bin/www", + "format": "prettier ./src --write", "lint": "eslint . **/www* --no-fix --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore", - "lint:fix": "eslint . **/www* --fix --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore", "prelint": "npm run typecheck", "pretest": "npm run lint", "posttest": "ts-node ./lcov-fix.ts", @@ -24,30 +24,36 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "api-problem": "^9.0.1", - "axios": "^1.5.0", + "api-problem": "^9.0.2", + "axios": "^1.5.1", "compression": "^1.7.4", "config": "^3.3.9", + "cors": "^2.8.5", "express": "^4.18.2", "express-winston": "^4.2.0", + "helmet": "^7.0.0", + "jsonwebtoken": "^9.0.2", "ts-node": "^10.9.1", - "winston": "^3.10.0", - "winston-transport": "^4.5.0" + "winston": "^3.11.0", + "winston-transport": "^4.6.0" }, "devDependencies": { - "@rushstack/eslint-patch": "^1.3.3", - "@types/compression": "^1.7.2", - "@types/config": "^3.3.0", - "@types/express": "^4.17.17", - "@types/jest": "^29.5.4", - "@types/node": "^20.5.7", - "@typescript-eslint/eslint-plugin": "^6.5.0", - "@typescript-eslint/parser": "^6.5.0", - "eslint": "^8.48.0", + "@types/compression": "^1.7.4", + "@types/config": "^3.3.2", + "@types/cors": "^2.8.15", + "@types/express": "^4.17.20", + "@types/jest": "^29.5.6", + "@types/jsonwebtoken": "^9.0.4", + "@types/node": "^18.18.1", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", "eslint-config-recommended": "^4.1.0", - "eslint-plugin-prettier": "^5.0.0", - "jest": "^29.6.4", - "rimraf": "^5.0.1", + "eslint-plugin-prettier": "^5.0.1", + "jest": "^29.7.0", + "prettier": "^3.0.3", + "rimraf": "^5.0.5", "ts-jest": "^29.1.1", "ts-node-dev": "^2.0.0", "typescript": "^5.2.2" diff --git a/app/src/components/constants.ts b/app/src/components/constants.ts new file mode 100644 index 0000000..23f95cf --- /dev/null +++ b/app/src/components/constants.ts @@ -0,0 +1,15 @@ +/** Current user authentication type */ +export const AuthType = Object.freeze({ + /** OIDC JWT Authentication header provided */ + BEARER: 'BEARER', + /** No Authentication header provided */ + NONE: 'NONE' +}); + +/** Default CORS settings used across the entire application */ +export const DEFAULTCORS = Object.freeze({ + /** Tells browsers to cache preflight requests for Access-Control-Max-Age seconds */ + maxAge: 600, + /** Set true to dynamically set Access-Control-Allow-Origin based on Origin */ + origin: true +}); diff --git a/app/src/components/log.ts b/app/src/components/log.ts index 01625b2..faeb704 100644 --- a/app/src/components/log.ts +++ b/app/src/components/log.ts @@ -39,7 +39,7 @@ const log = createLogger({ format: format.combine( format.errors({ stack: true }), // Force errors to show stacktrace format.timestamp(), // Add ISO timestamp to each entry - format.json(), // Force output to be in JSON format + format.json() // Force output to be in JSON format ), level: config.get('server.logLevel') }); @@ -51,10 +51,12 @@ if (process.env.NODE_ENV !== 'test') { } if (config.has('server.logFile')) { - log.add(new transports.File({ - filename: config.get('server.logFile'), - handleExceptions: true - })); + log.add( + new transports.File({ + filename: config.get('server.logFile'), + handleExceptions: true + }) + ); } /** @@ -98,7 +100,7 @@ export const httpLogger = logger({ responseWhitelist: [], // Suppress default value output // Skip logging kube-probe requests skip: (req) => !!req.get('user-agent')?.includes('kube-probe'), - winstonInstance: log, + winstonInstance: log }); export default getLogger; diff --git a/app/src/components/utils.ts b/app/src/components/utils.ts index aabc9b6..2efaf62 100644 --- a/app/src/components/utils.ts +++ b/app/src/components/utils.ts @@ -13,7 +13,8 @@ const log = getLogger(module.filename); export function getGitRevision(): string { try { const gitDir = (() => { - let dir = '.git', i = 0; + let dir = '.git', + i = 0; while (!existsSync(join(__dirname, dir)) && i < 5) { dir = '../' + dir; i++; @@ -22,22 +23,29 @@ export function getGitRevision(): string { })(); const head = readFileSync(join(__dirname, `${gitDir}/HEAD`), 'utf8') - .toString().trim(); - return (head.indexOf(':') === -1) - ? head - : readFileSync(join(__dirname, `${gitDir}/${head.substring(5)}`), 'utf8') - .toString().trim(); - } catch (err: any) { // eslint-disable-line @typescript-eslint/no-explicit-any + .toString() + .trim(); + + let fileRead: string = ''; + if (head.indexOf(':') === -1) { + fileRead = readFileSync(join(__dirname, `${gitDir}/${head.substring(5)}`), 'utf8') + .toString() + .trim(); + } + + return head.indexOf(':') === -1 ? head : (fileRead as string); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (err: any) { log.warn(err.message, { function: 'getGitRevision' }); return ''; } } /** -* @function readIdpList -* Acquires the list of identity providers to be used -* @returns {object[]} A promise resolving to an array of idp provider objects -*/ + * @function readIdpList + * Acquires the list of identity providers to be used + * @returns {object[]} A promise resolving to an array of idp provider objects + */ export function readIdpList(): object[] { const configDir = '../../config'; const defaultFile = 'idplist-default.json'; @@ -53,4 +61,3 @@ export function readIdpList(): object[] { return idpList; } - diff --git a/app/src/controllers/hello.ts b/app/src/controllers/hello.ts index 7e11d1d..fb1fb53 100644 --- a/app/src/controllers/hello.ts +++ b/app/src/controllers/hello.ts @@ -7,8 +7,7 @@ const controller = { try { const response: unknown = await helloService.getHello(); res.status(200).send(response); - } - catch(e: unknown) { + } catch (e: unknown) { next(e); } } diff --git a/app/src/middleware/authentication.ts b/app/src/middleware/authentication.ts new file mode 100644 index 0000000..b8f188c --- /dev/null +++ b/app/src/middleware/authentication.ts @@ -0,0 +1,72 @@ +// @ts-expect-error api-problem lacks a defined interface; code still works fine +import Problem from 'api-problem'; +import config from 'config'; +import jwt from 'jsonwebtoken'; + +import { AuthType } from '../components/constants'; + +import type { CurrentUser } from '../types/CurrentUser'; +import type { NextFunction, Request, Response } from 'express'; + +/** + * @function _spkiWrapper + * Wraps an SPKI key with PEM header and footer + * @param {string} spki The PEM-encoded Simple public-key infrastructure string + * @returns {string} The PEM-encoded SPKI with PEM header and footer + */ +export const _spkiWrapper = (spki: string) => `-----BEGIN PUBLIC KEY-----\n${spki}\n-----END PUBLIC KEY-----`; + +/** + * @function currentUser + * Injects a currentUser object to the request if there exists valid authentication artifacts. + * Subsequent logic should check `req.currentUser.authType` for authentication method if needed. + * @param {Request} req Express request object + * @param {Response} res Express response object + * @param {NextFunction} next The next callback function + * @returns {function} Express middleware function + * @throws The error encountered upon failure + */ +export const currentUser = async (req: Request, res: Response, next: NextFunction) => { + const authorization = req.get('Authorization'); + const currentUser: CurrentUser = { + authType: AuthType.NONE, + tokenPayload: null + }; + + if (authorization) { + // OIDC JWT Authorization + if (authorization.toLowerCase().startsWith('bearer ')) { + currentUser.authType = AuthType.BEARER; + + try { + const bearerToken = authorization.substring(7); + let isValid: string | jwt.JwtPayload; + + if (config.has('server.oidc.publicKey')) { + const publicKey: string = config.get('server.oidc.publicKey'); + const pemKey = publicKey.startsWith('-----BEGIN') ? publicKey : _spkiWrapper(publicKey); + isValid = jwt.verify(bearerToken, pemKey, { + issuer: `${config.get('server.oidc.serverUrl')}/realms/${config.get('server.oidc.realm')}` + }); + } else { + throw new Error('OIDC environment variable SERVER_OIDC_PUBLICKEY or server.oidc.publicKey must be defined'); + } + + if (isValid) { + currentUser.tokenPayload = typeof isValid === 'object' ? isValid : jwt.decode(bearerToken); + } else { + throw new Error('Invalid authorization token'); + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (err: any) { + return next(new Problem(403, { detail: err.message, instance: req.originalUrl })); + } + } + } + + // Inject currentUser data into request + req.currentUser = Object.freeze(currentUser); + + // Continue middleware + next(); +}; diff --git a/app/src/middleware/requireSomeAuth.ts b/app/src/middleware/requireSomeAuth.ts new file mode 100644 index 0000000..f487f68 --- /dev/null +++ b/app/src/middleware/requireSomeAuth.ts @@ -0,0 +1,27 @@ +// @ts-expect-error api-problem lacks a defined interface; code still works fine +import Problem from 'api-problem'; +import { AuthType } from '../components/constants'; + +import type { NextFunction, Request, Response } from 'express'; + +/** + * @function requireSomeAuth + * Rejects the request if there is no authorization in the appropriate mode + * @param {object} req Express request object + * @param {object} _res Express response object + * @param {function} next The next callback function + * @returns {function} Express middleware function + * @throws The error encountered upon failure + */ +export const requireSomeAuth = (req: Request, _res: Response, next: NextFunction) => { + const authType: string | undefined = req.currentUser ? req.currentUser.authType : undefined; + + if (!authType || authType === AuthType.NONE) { + throw new Problem(403, { + detail: 'User lacks permission to complete this action', + instance: req.originalUrl + }); + } + + next(); +}; diff --git a/app/src/routes/v1/hello.ts b/app/src/routes/v1/hello.ts index a82ffd5..31736b0 100644 --- a/app/src/routes/v1/hello.ts +++ b/app/src/routes/v1/hello.ts @@ -1,10 +1,11 @@ import express from 'express'; - import { helloController } from '../../controllers'; +import { requireSomeAuth } from '../../middleware/requireSomeAuth'; import type { NextFunction, Request, Response } from 'express'; const router = express.Router(); +router.use(requireSomeAuth); // Hello endpoint router.get('/', (req: Request, res: Response, next: NextFunction): void => { diff --git a/app/src/routes/v1/index.ts b/app/src/routes/v1/index.ts index ccba08a..c1446c9 100644 --- a/app/src/routes/v1/index.ts +++ b/app/src/routes/v1/index.ts @@ -1,14 +1,14 @@ +import { currentUser } from '../../middleware/authentication'; import express from 'express'; import hello from './hello'; const router = express.Router(); +router.use(currentUser); // Base v1 Responder router.get('/', (_req, res) => { res.status(200).json({ - endpoints: [ - '/hello', - ] + endpoints: ['/hello'] }); }); diff --git a/app/src/services/hello.ts b/app/src/services/hello.ts index 533d278..432db71 100644 --- a/app/src/services/hello.ts +++ b/app/src/services/hello.ts @@ -1,13 +1,14 @@ +/* eslint-disable no-useless-catch */ + const service = { getHello: async () => { try { - const response = 'Welcome to the Vue 3 Scaffold!'; - return response; - } - catch(e: unknown) { + const response = 'Hello world!'; + return response; + } catch (e: unknown) { throw e; } } }; - + export default service; diff --git a/app/src/types/CurrentUser.ts b/app/src/types/CurrentUser.ts new file mode 100644 index 0000000..f22d6f7 --- /dev/null +++ b/app/src/types/CurrentUser.ts @@ -0,0 +1,6 @@ +import jwt from 'jsonwebtoken'; + +export type CurrentUser = { + authType: string; + tokenPayload: string | jwt.JwtPayload | null; +}; diff --git a/app/src/types/Request.d.ts b/app/src/types/Request.d.ts new file mode 100644 index 0000000..8400f79 --- /dev/null +++ b/app/src/types/Request.d.ts @@ -0,0 +1,6 @@ +declare namespace Express { + // Extend the Express Request interface + export interface Request { + currentUser?: import('./CurrentUser').CurrentUser; + } +} diff --git a/app/tests/common/helper.ts b/app/tests/common/helper.ts index d2f4539..314eb0a 100644 --- a/app/tests/common/helper.ts +++ b/app/tests/common/helper.ts @@ -20,9 +20,11 @@ const helper = { const app = express(); app.use(express.json()); - app.use(express.urlencoded({ - extended: false - })); + app.use( + express.urlencoded({ + extended: false + }) + ); app.use(basePath, router); // Handle 500 @@ -32,7 +34,7 @@ const helper = { err.send(res); } else { new Problem(500, { - details: (err.message) ? err.message : err + details: err.message ? err.message : err }).send(res); } }); diff --git a/app/tsconfig.json b/app/tsconfig.json index a9d0c13..bbb0568 100644 --- a/app/tsconfig.json +++ b/app/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Projects */ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ @@ -9,9 +8,8 @@ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + //"target": "" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ @@ -23,17 +21,12 @@ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Modules */ - "module": "CommonJS" /* Specify what module code is generated. */, + "module": "Node16" /* Specify what module code is generated. */, // "rootDir": "./", /* Specify the root folder within your source files. */ // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - "baseUrl": ".", /* Specify the base directory to resolve non-relative module names. */ - "paths": { - "@/*": [ - "src/*" - ] - }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ // "types": [], /* Specify type package names to be included without being referenced in a source file. */ @@ -41,19 +34,17 @@ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ // "resolveJsonModule": true, /* Enable importing .json files. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Emit */ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist" /* Specify an output folder for all emitted files. */, + "outDir": "./dist" /* Specify an output folder for all emitted files. */, // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ @@ -70,17 +61,15 @@ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - "preserveValueImports": false, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - + "preserveValueImports": false /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */, /* Interop Constraints */ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, + "strict": true /* Enable all strict type-checking options. */, // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ @@ -99,13 +88,12 @@ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": false /* Skip type checking all .d.ts files. */ + "skipLibCheck": false /* Skip type checking all .d.ts files. */ }, "exclude": [ "src/tests", "node_modules" - ], + ] } diff --git a/bcgovpubcode.yaml b/bcgovpubcode.yaml index 2fa25e1..147e709 100644 --- a/bcgovpubcode.yaml +++ b/bcgovpubcode.yaml @@ -17,15 +17,13 @@ product_information: - Manage Object Storage Objects (Share publicly) ministry: - Water, Land and Resource Stewardship - product_acronym: BCBox + product_acronym: Vue3Scaffold product_description: >- - BCBox is a hosted user interface that serves as a common front-end consumer + Vue 3 Scaffold is a hosted user interface that serves as a common front-end consumer of the hosted COMS API and can be used as a simple dropbox to allow file sharing and permission management using S3. - product_name: BCBox + product_name: Vue 3 Scaffold product_status: maturing - product_urls: - - https://bcbox.nrs.gov.bc.ca program_area: >- Natural Resource Information and Digital Services - Development and Digital Services diff --git a/charts/bcbox/.helmignore b/charts/bcbox/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/charts/bcbox/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/bcbox/Chart.yaml b/charts/bcbox/Chart.yaml deleted file mode 100644 index 46fecf2..0000000 --- a/charts/bcbox/Chart.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v2 -name: bcbox -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.9 -kubeVersion: ">= 1.13.0" -description: A frontend UI for managing access control to S3 Objects -# A chart can be either an 'application' or a 'library' chart. -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application -keywords: - - nodejs - - javascript - - typescript - - docker - - microservice - - s3 - - document-management - - access-control - - object-storage - - domo - - vue -home: https://bcgov.github.io/bcbox -sources: - - https://github.com/bcgov/bcbox -dependencies: [] -maintainers: - - name: NR Common Service Showcase Team - email: NR.CommonServiceShowcase@gov.bc.ca - url: https://bcgov.github.io/common-service-showcase/team.html -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "0.1.0" -deprecated: false -annotations: {} diff --git a/charts/bcbox/README.md b/charts/bcbox/README.md deleted file mode 100644 index 9b7190b..0000000 --- a/charts/bcbox/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# bcbox - -![Version: 0.0.9](https://img.shields.io/badge/Version-0.0.9-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.4.0](https://img.shields.io/badge/AppVersion-0.4.0-informational?style=flat-square) - -A frontend UI for managing access control to S3 Objects - -**Homepage:** - -## Maintainers - -| Name | Email | Url | -| ---- | ------ | --- | -| NR Common Service Showcase Team | | | - -## Source Code - -* - -## Requirements - -Kubernetes: `>= 1.13.0` - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| autoscaling.behavior.scaleDown.policies[0].periodSeconds | int | `120` | | -| autoscaling.behavior.scaleDown.policies[0].type | string | `"Pods"` | | -| autoscaling.behavior.scaleDown.policies[0].value | int | `1` | | -| autoscaling.behavior.scaleDown.selectPolicy | string | `"Max"` | | -| autoscaling.behavior.scaleDown.stabilizationWindowSeconds | int | `120` | | -| autoscaling.behavior.scaleUp.policies[0].periodSeconds | int | `30` | | -| autoscaling.behavior.scaleUp.policies[0].type | string | `"Pods"` | | -| autoscaling.behavior.scaleUp.policies[0].value | int | `2` | | -| autoscaling.behavior.scaleUp.selectPolicy | string | `"Max"` | | -| autoscaling.behavior.scaleUp.stabilizationWindowSeconds | int | `0` | | -| autoscaling.enabled | bool | `false` | | -| autoscaling.maxReplicas | int | `16` | | -| autoscaling.minReplicas | int | `2` | | -| autoscaling.targetCPUUtilizationPercentage | int | `80` | | -| config.configMap.FRONTEND_APIPATH | string | `"api/v1"` | | -| config.configMap.FRONTEND_COMS_APIPATH | string | `nil` | | -| config.configMap.FRONTEND_OIDC_AUTHORITY | string | `nil` | | -| config.configMap.FRONTEND_OIDC_CLIENTID | string | `nil` | | -| config.configMap.SERVER_APIPATH | string | `"/api/v1"` | | -| config.configMap.SERVER_BODYLIMIT | string | `"30mb"` | | -| config.configMap.SERVER_LOGLEVEL | string | `"http"` | | -| config.configMap.SERVER_PORT | string | `"8080"` | | -| config.enabled | bool | `false` | | -| config.releaseScoped | bool | `false` | | -| failurePolicy | string | `"Retry"` | | -| fullnameOverride | string | `nil` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"ghcr.io/bcgov"` | | -| image.tag | string | `nil` | | -| imagePullSecrets | list | `[]` | | -| nameOverride | string | `nil` | | -| networkPolicy.enabled | bool | `true` | | -| podAnnotations | object | `{}` | | -| podSecurityContext | object | `{}` | | -| replicaCount | int | `2` | | -| resources.limits.cpu | string | `"200m"` | | -| resources.limits.memory | string | `"256Mi"` | | -| resources.requests.cpu | string | `"10m"` | | -| resources.requests.memory | string | `"128Mi"` | | -| route.annotations | object | `{}` | | -| route.enabled | bool | `true` | | -| route.host | string | `"chart-example.local"` | | -| route.tls.insecureEdgeTerminationPolicy | string | `"Redirect"` | | -| route.tls.termination | string | `"edge"` | | -| route.wildcardPolicy | string | `"None"` | | -| securityContext | object | `{}` | | -| service.port | int | `8080` | | -| service.portName | string | `"http"` | | -| service.type | string | `"ClusterIP"` | | -| serviceAccount.annotations | object | `{}` | | -| serviceAccount.enabled | bool | `false` | | -| serviceAccount.name | string | `nil` | | - ----------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/charts/bcbox/templates/NOTES.txt b/charts/bcbox/templates/NOTES.txt deleted file mode 100644 index f05141c..0000000 --- a/charts/bcbox/templates/NOTES.txt +++ /dev/null @@ -1,24 +0,0 @@ -{{- $configMapName := printf "%s-%s" (include "bcbox.configname" .) "config" }} -{{- $configMap := (lookup "v1" "ConfigMap" .Release.Namespace $configMapName ) }} -Get the application URL by running these commands: -{{- if .Values.route.enabled }} - http{{ if $.Values.route.tls }}s{{ end }}://{{ .Values.route.host }}{{ .Values.route.path }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "bcbox.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "bcbox.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "bcbox.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "bcbox.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT -{{- end }} -{{- if not $configMap }} - -Make sure that ConfigMap "{{ $configMapName }}" is defined in the namespace; the deployment will fail to run without it! -{{- end }} diff --git a/charts/bcbox/templates/_helpers.tpl b/charts/bcbox/templates/_helpers.tpl deleted file mode 100644 index c456977..0000000 --- a/charts/bcbox/templates/_helpers.tpl +++ /dev/null @@ -1,77 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "bcbox.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "bcbox.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" $name .Release.Name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Define the config pattern of the chart based on options. -*/}} -{{- define "bcbox.configname" -}} -{{- if .Values.config.releaseScoped }} -{{- include "bcbox.fullname" . }} -{{- else }} -{{- include "bcbox.name" . }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "bcbox.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "bcbox.labels" -}} -helm.sh/chart: {{ include "bcbox.chart" . }} -app: {{ include "bcbox.fullname" . }} -{{ include "bcbox.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/component: backend -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: {{ .Release.Name }} -app.openshift.io/runtime: nodejs -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "bcbox.selectorLabels" -}} -app.kubernetes.io/name: {{ include "bcbox.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "bcbox.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "bcbox.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/charts/bcbox/templates/configmap.yaml b/charts/bcbox/templates/configmap.yaml deleted file mode 100644 index 4c542f1..0000000 --- a/charts/bcbox/templates/configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.config.enabled }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "bcbox.configname" . }}-config - {{- if not .Values.config.releaseScoped }} - annotations: - "helm.sh/resource-policy": keep - {{- end }} -data: {{ toYaml .Values.config.configMap | nindent 2 }} -{{- end }} diff --git a/charts/bcbox/templates/deploymentconfig.yaml b/charts/bcbox/templates/deploymentconfig.yaml deleted file mode 100644 index 132dcb4..0000000 --- a/charts/bcbox/templates/deploymentconfig.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -apiVersion: apps.openshift.io/v1 -kind: DeploymentConfig -metadata: - name: {{ include "bcbox.fullname" . }} - labels: - {{- include "bcbox.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: 10 - selector: - {{- include "bcbox.selectorLabels" . | nindent 4 }} - strategy: - resources: - {{- toYaml .Values.resources | nindent 6 }} - rollingParams: - timeoutSeconds: 600 - type: Rolling - template: - metadata: - labels: {{ include "bcbox.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.serviceAccount.create }} - serviceAccountName: {{ include "bcbox.serviceAccountName" . }} - {{- end }} - {{- with .Values.podSecurityContext }} - securityContext: {{ toYaml . | nindent 8 }} - {{- end }} - containers: - - name: app - {{- with .Values.securityContext }} - securityContext: {{ toYaml . | nindent 12 }} - {{- end }} - image: "{{ .Values.image.repository }}/{{ .Chart.Name }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - containerPort: {{ .Values.service.port }} - protocol: TCP - livenessProbe: - failureThreshold: 3 - httpGet: - path: {{ .Values.route.path }} - port: {{ .Values.service.port }} - scheme: HTTP - initialDelaySeconds: 10 - timeoutSeconds: 1 - readinessProbe: - failureThreshold: 3 - httpGet: - path: {{ .Values.route.path }} - port: {{ .Values.service.port }} - scheme: HTTP - initialDelaySeconds: 10 - timeoutSeconds: 1 - resources: {{ toYaml .Values.resources | nindent 12 }} - env: - - name: NODE_ENV - value: production - envFrom: - - configMapRef: - name: {{ include "bcbox.configname" . }}-config - restartPolicy: Always - terminationGracePeriodSeconds: 30 - test: false - triggers: - - type: ConfigChange diff --git a/charts/bcbox/templates/hpa.yaml b/charts/bcbox/templates/hpa.yaml deleted file mode 100644 index 559ecb5..0000000 --- a/charts/bcbox/templates/hpa.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if .Values.autoscaling.enabled }} ---- -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "bcbox.fullname" . }} - labels: - {{- include "bcbox.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps.openshift.io/v1 - kind: DeploymentConfig - name: {{ include "bcbox.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} - {{- with .Values.autoscaling.behavior }} - behavior: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/charts/bcbox/templates/networkpolicy.yaml b/charts/bcbox/templates/networkpolicy.yaml deleted file mode 100644 index ab1bd2c..0000000 --- a/charts/bcbox/templates/networkpolicy.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.networkPolicy.enabled }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: allow-openshift-ingress-to-{{ include "bcbox.fullname" . }}-app - labels: - {{- include "bcbox.labels" . | nindent 4 }} -spec: - ingress: - - from: - - namespaceSelector: - matchLabels: - network.openshift.io/policy-group: ingress - - podSelector: - matchLabels: {{ include "bcbox.selectorLabels" . | nindent 14 }} - ports: - - port: {{ default "8080" .Values.config.configMap.SERVER_PORT | atoi }} - protocol: TCP - podSelector: - matchLabels: {{- include "bcbox.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/charts/bcbox/templates/route.yaml b/charts/bcbox/templates/route.yaml deleted file mode 100644 index a1b56f5..0000000 --- a/charts/bcbox/templates/route.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if .Values.route.enabled -}} ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "bcbox.fullname" . }} - labels: - {{- include "bcbox.labels" . | nindent 4 }} - {{- with .Values.route.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - host: {{ .Values.route.host | quote }} - {{- if .Values.route.path }} - path: {{ .Values.route.path }} - {{- end }} - port: - targetPort: {{ .Values.service.portName }} - tls: - insecureEdgeTerminationPolicy: {{ .Values.route.tls.insecureEdgeTerminationPolicy }} - termination: {{ .Values.route.tls.termination }} - to: - kind: Service - name: {{ include "bcbox.fullname" . }} - weight: 100 - wildcardPolicy: {{ .Values.route.wildcardPolicy }} -{{- end }} diff --git a/charts/bcbox/templates/service.yaml b/charts/bcbox/templates/service.yaml deleted file mode 100644 index 765b923..0000000 --- a/charts/bcbox/templates/service.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "bcbox.fullname" . }} - labels: - {{- include "bcbox.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP - targetPort: {{ .Values.service.port }} - selector: - {{- include "bcbox.selectorLabels" . | nindent 4 }} diff --git a/charts/bcbox/templates/serviceaccount.yaml b/charts/bcbox/templates/serviceaccount.yaml deleted file mode 100644 index f8c092f..0000000 --- a/charts/bcbox/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.enabled -}} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "bcbox.serviceAccountName" . }} - labels: - {{- include "bcbox.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/charts/bcbox/values.yaml b/charts/bcbox/values.yaml deleted file mode 100644 index 8b79335..0000000 --- a/charts/bcbox/values.yaml +++ /dev/null @@ -1,124 +0,0 @@ -# Default values for bcbox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 2 - -image: - repository: ghcr.io/bcgov - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: ~ - -imagePullSecrets: [] -nameOverride: ~ -fullnameOverride: ~ - -# DeploymentConfig pre-hook failure behavior -failurePolicy: Retry - -podAnnotations: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -autoscaling: - enabled: false - - # Directly modify scaling behavior and frequency - behavior: - scaleDown: - stabilizationWindowSeconds: 120 - selectPolicy: Max - policies: - - type: Pods - value: 1 - periodSeconds: 120 - scaleUp: - stabilizationWindowSeconds: 0 - selectPolicy: Max - policies: - - type: Pods - value: 2 - periodSeconds: 30 - minReplicas: 2 - maxReplicas: 16 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -serviceAccount: - # Specifies whether a service account should be created - enabled: false - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: ~ - -networkPolicy: - enabled: true - -service: - type: ClusterIP - port: 8080 - portName: http - -route: - enabled: true - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - host: chart-example.local - # path: / - tls: - insecureEdgeTerminationPolicy: Redirect - termination: edge - wildcardPolicy: None - -resources: - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - limits: - cpu: 200m - memory: 256Mi - requests: - cpu: 10m - memory: 128Mi - -config: - # Set to true if you want to let Helm manage and overwrite your configmaps. - enabled: false - - # This should be set to true if and only if you require configmaps and secrets to be release - # scoped. In the event you want all instances in the same namespace to share a similar - # configuration, this should be set to false - releaseScoped: false - - # These values will be wholesale added to the configmap as is; refer to the bcbox - # documentation for what each of these values mean and whether you need them defined. - # Ensure that all values are represented explicitly as strings, as non-string values will - # not translate over as expected into container environment variables. - # For configuration keys named `*_ENABLED`, either leave them commented/undefined, or set them - # to string value "true". - configMap: - FRONTEND_APIPATH: "api/v1" - FRONTEND_COMS_APIPATH: ~ - # FRONTEND_NOTIFICATION_BANNER: ~ - FRONTEND_OIDC_AUTHORITY: ~ - FRONTEND_OIDC_CLIENTID: ~ - SERVER_APIPATH: "/api/v1" - SERVER_BODYLIMIT: "30mb" - # SERVER_STATICFILES: ~ - # SERVER_LOGFILE: ~ - SERVER_LOGLEVEL: "http" - SERVER_PORT: "8080" diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index 2808685..b31e8ad 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -1,6 +1,3 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution'); - module.exports = { root: true, env: { @@ -8,10 +5,11 @@ module.exports = { es2020: true }, extends: [ - '@vue/eslint-config-typescript', + 'prettier', 'eslint:recommended', - 'plugin:vitest-globals/recommended', - 'plugin:vue/vue3-recommended' + '@vue/eslint-config-typescript', + 'plugin:vue/vue3-recommended', + 'plugin:vitest-globals/recommended' ], overrides: [ { @@ -21,17 +19,18 @@ module.exports = { } } ], - parserOptions: { - ecmaVersion: 11, - }, plugins: [], rules: { 'eol-last': ['error', 'always'], - indent: ['error', 2, { - 'SwitchCase': 1 - }], + indent: [ + 'error', + 2, + { + SwitchCase: 1 + } + ], 'linebreak-style': ['error', 'unix'], - 'max-len': ['warn', { 'code': 120, 'comments': 120, 'ignoreUrls': true }], + 'max-len': ['warn', { code: 120, comments: 120, ignoreUrls: true }], 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', quotes: ['error', 'single'], @@ -39,17 +38,19 @@ module.exports = { 'vue/component-tags-order': [ 'error', { - order: ['script', 'template', 'style'], - }, + order: ['script', 'template', 'style'] + } ], 'vue/html-self-closing': [ 'error', { - 'html': { - 'void': 'any' + html: { + void: 'any' } } ], + 'vue/html-indent': 'off', 'vue/multi-word-component-names': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - }, + 'vue/singleline-html-element-content-newline': 'off' + } }; diff --git a/frontend/.prettierignore b/frontend/.prettierignore new file mode 100644 index 0000000..53d7d11 --- /dev/null +++ b/frontend/.prettierignore @@ -0,0 +1,29 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +build +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/.prettierrc b/frontend/.prettierrc new file mode 100644 index 0000000..e5f42d7 --- /dev/null +++ b/frontend/.prettierrc @@ -0,0 +1,13 @@ +{ + "arrowParens": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "ignore", + "printWidth": 120, + "semi": true, + "singleAttributePerLine": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "none", + "useTabs": false +} diff --git a/frontend/index.html b/frontend/index.html index c1b9063..b2e3bf2 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,13 +1,16 @@ - - - - - BCBox - - -

- - + + + + + + Vue 3 Scaffold + + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 09452f8..df821d3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,7 +1,7 @@ { "name": "vue3-scaffold-frontend", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,50 +9,51 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@bcgov/bc-sans": "^2.0.0", + "@bcgov/bc-sans": "^2.1.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/vue-fontawesome": "^3.0.3", - "axios": "^1.5.0", + "axios": "^1.5.1", "date-fns": "^2.30.0", - "filesize": "^10.0.12", - "oidc-client-ts": "^2.2.5", - "pinia": "^2.1.6", + "filesize": "^10.1.0", + "oidc-client-ts": "^2.3.0", + "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.0", "primeflex": "^3.3.1", "primeicons": "^6.0.1", - "primevue": "^3.32.2", + "primevue": "~3.34.1", "qrcode.vue": "^3.4.1", - "vee-validate": "^4.11.3", - "vue": "^3.3.4", - "vue-router": "^4.2.4", - "yup": "^1.2.0" + "vee-validate": "^4.11.8", + "vue": "^3.3.7", + "vue-router": "^4.2.5", + "yup": "^1.3.2" }, "devDependencies": { "@pinia/testing": "^0.1.3", - "@rushstack/eslint-patch": "^1.3.3", "@testing-library/vue": "^7.0.0", - "@tsconfig/node18": "^2.0.1", - "@types/node": "~18.16.16", - "@vitejs/plugin-vue": "^4.3.4", + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.18.1", + "@vitejs/plugin-vue": "^4.4.0", "@vitejs/plugin-vue-jsx": "^3.0.2", "@vitest/coverage-c8": "^0.33.0", - "@vitest/coverage-istanbul": "^0.34.3", - "@vue/eslint-config-typescript": "^11.0.3", + "@vitest/coverage-istanbul": "^0.34.6", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.4.1", "@vue/tsconfig": "^0.4.0", - "eslint": "^8.48.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-vitest-globals": "^1.4.0", - "eslint-plugin-vue": "^9.17.0", - "jsdom": "^22.1.0", - "rimraf": "^5.0.1", - "sass": "^1.66.1", + "eslint-plugin-vue": "^9.18.0", + "happy-dom": "^12.9.1", + "prettier": "3.0.3", + "rimraf": "^5.0.5", + "sass": "^1.69.4", "ts-node": "^10.9.1", - "typescript": "~4.8.4", - "vite": "^4.4.9", - "vitest": "^0.34.3", - "volar-service-eslint": "^0.0.11", - "vue-tsc": "^1.8.8" + "typescript": "^5.2.2", + "vite": "^4.5.0", + "vitest": "^0.34.6", + "volar-service-eslint": "^0.0.15", + "vue-tsc": "^1.8.21" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -90,32 +91,103 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -130,12 +202,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -157,13 +229,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -172,31 +244,16 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.22.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -211,22 +268,22 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -245,40 +302,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -309,13 +366,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -371,44 +428,44 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -416,10 +473,81 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", - "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -458,13 +586,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", - "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5" }, @@ -476,44 +604,44 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", - "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -522,13 +650,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -536,9 +664,9 @@ } }, "node_modules/@bcgov/bc-sans": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-2.0.0.tgz", - "integrity": "sha512-hgCYDEwVWZ0t/yzmo802D1oF3hhzDjsjpgB82EZcDEiLPxjV2x9qALv4mBNKAiWDK4ezvBL1VrD99NnIbxG5Vw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-2.1.0.tgz", + "integrity": "sha512-1MesF4NAVpM5dywoJ68wNcBylHbPqg1dDV/FNuQm0BbspETGlPmfX8LG8rtrCjCAPhWuL2qRT/lBYDUMvFTUnw==" }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", @@ -936,9 +1064,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -968,9 +1096,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -982,10 +1110,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1034,12 +1174,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1061,9 +1201,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1107,6 +1247,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -1175,9 +1338,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1193,19 +1356,18 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -1265,9 +1427,9 @@ } }, "node_modules/@pinia/testing/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "dev": true, "hasInstallScript": true, "bin": { @@ -1300,12 +1462,6 @@ "node": ">=14" } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", - "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==", - "dev": true - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1313,15 +1469,15 @@ "dev": true }, "node_modules/@testing-library/dom": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", - "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", @@ -1331,108 +1487,29 @@ "node": ">=14" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@testing-library/vue": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-7.0.0.tgz", + "integrity": "sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/runtime": "^7.21.0", + "@testing-library/dom": "^9.0.1", + "@vue/test-utils": "^2.3.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@vue/compiler-sfc": ">= 3", + "vue": ">= 3" } }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/vue": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-7.0.0.tgz", - "integrity": "sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0", - "@testing-library/dom": "^9.0.1", - "@vue/test-utils": "^2.3.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@vue/compiler-sfc": ">= 3", - "vue": ">= 3" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", @@ -1447,89 +1524,93 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "node_modules/@tsconfig/node18": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", - "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", "dev": true }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz", + "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==", "dev": true }, "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", "dev": true, "dependencies": { "@types/chai": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/node": { - "version": "18.16.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", - "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", - "dev": true + "version": "18.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.7.tgz", + "integrity": "sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1537,6 +1618,18 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -1552,26 +1645,33 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1580,16 +1680,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1597,25 +1697,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1624,12 +1724,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1637,21 +1737,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -1663,6 +1763,18 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -1678,30 +1790,47 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { @@ -1719,27 +1848,39 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-vue": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", - "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz", + "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==", "dev": true, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -1788,9 +1929,9 @@ } }, "node_modules/@vitest/coverage-istanbul": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.34.3.tgz", - "integrity": "sha512-RdEGzydbbalyDLmmJ5Qm+T3Lrubw/U9iCnhzM2B1V57t4cVa1t6uyfIHdv68d1au4PRzkLhY7Xouwuhb7BeG+Q==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.34.6.tgz", + "integrity": "sha512-5KaBNZPDSk2ybavC3rZ1pWGniw7sJ5usuwVGRUYzJwiBfWvnLpuUer7bjw7qUCRGdKJXrBgb/Dsgif9rkwMX/A==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.2.0", @@ -1798,6 +1939,7 @@ "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^4.0.1", "istanbul-reports": "^3.1.5", + "picocolors": "^1.0.0", "test-exclude": "^6.0.0" }, "funding": { @@ -1808,26 +1950,26 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.3.tgz", - "integrity": "sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.3", - "@vitest/utils": "0.34.3", - "chai": "^4.3.7" + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.3.tgz", - "integrity": "sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.3", + "@vitest/utils": "0.34.6", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -1863,9 +2005,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.3.tgz", - "integrity": "sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, "dependencies": { "magic-string": "^0.30.1", @@ -1889,9 +2031,9 @@ } }, "node_modules/@vitest/snapshot/node_modules/pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", @@ -1909,9 +2051,9 @@ "dev": true }, "node_modules/@vitest/spy": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.3.tgz", - "integrity": "sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -1921,9 +2063,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.3.tgz", - "integrity": "sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -1947,9 +2089,9 @@ } }, "node_modules/@vitest/utils/node_modules/pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", @@ -1967,30 +2109,30 @@ "dev": true }, "node_modules/@volar/language-core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz", - "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.5.tgz", + "integrity": "sha512-xD71j4Ee0Ycq8WsiAE6H/aCThGdTobiZZeD+jFD+bvmbopa1Az296pqJysr3Ck8c7n5+GGF+xlKCS3WxRFYgSQ==", "dev": true, "dependencies": { - "@volar/source-map": "1.10.1" + "@volar/source-map": "1.10.5" } }, "node_modules/@volar/source-map": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz", - "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.5.tgz", + "integrity": "sha512-s4kgo66SA1kMzYvF9HFE6Vc1rxtXLUmcLrT2WKnchPDvLne+97Kw+xoR2NxJFmsvHoL18vmu/YGXYcN+Q5re1g==", "dev": true, "dependencies": { "muggle-string": "^0.3.1" } }, "node_modules/@volar/typescript": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz", - "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.5.tgz", + "integrity": "sha512-kfDehpeLJku9i1BgsFOYIczPmFFH4herl+GZrLGdvX5urTqeCKsKYlF36iNmFaADzjMb9WlENcUZzPjK8MxNrQ==", "dev": true, "dependencies": { - "@volar/language-core": "1.10.1" + "@volar/language-core": "1.10.5" } }, "node_modules/@vue/babel-helper-vue-transform-on": { @@ -2020,65 +2162,65 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", + "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", + "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", - "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", + "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-ssr": "3.3.7", + "@vue/reactivity-transform": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", + "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" }, "node_modules/@vue/eslint-config-typescript": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", - "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "vue-eslint-parser": "^9.1.1" + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -2095,17 +2237,17 @@ } }, "node_modules/@vue/language-core": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.8.tgz", - "integrity": "sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==", + "version": "1.8.21", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.21.tgz", + "integrity": "sha512-dKQJc1xfWIZfv6BeXyxz3SSNrC7npJpDIN/VOb1rodAm4o247TElrXOHYAJdV9x1KilaEUo3YbnQE+WA3vQwMw==", "dev": true, "dependencies": { - "@volar/language-core": "~1.10.0", - "@volar/source-map": "~1.10.0", + "@volar/language-core": "~1.10.5", + "@volar/source-map": "~1.10.5", "@vue/compiler-dom": "^3.3.0", - "@vue/reactivity": "^3.3.0", "@vue/shared": "^3.3.0", - "minimatch": "^9.0.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", "muggle-string": "^0.3.1", "vue-template-compiler": "^2.7.14" }, @@ -2143,60 +2285,60 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", + "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", "dependencies": { - "@vue/shared": "3.3.4" + "@vue/shared": "3.3.7" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", + "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", + "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", "dependencies": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/reactivity": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", + "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", "dependencies": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@vue/runtime-core": "3.3.7", + "@vue/shared": "3.3.7", + "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", + "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", "dependencies": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-ssr": "3.3.7", + "@vue/shared": "3.3.7" }, "peerDependencies": { - "vue": "3.3.4" + "vue": "3.3.7" } }, "node_modules/@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", + "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" }, "node_modules/@vue/test-utils": { "version": "2.4.1", @@ -2223,22 +2365,6 @@ "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", "dev": true }, - "node_modules/@vue/typescript": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.8.tgz", - "integrity": "sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==", - "dev": true, - "dependencies": { - "@volar/typescript": "~1.10.0", - "@vue/language-core": "1.8.8" - } - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -2275,18 +2401,6 @@ "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2313,21 +2427,24 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -2407,9 +2524,9 @@ } }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -2460,9 +2577,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -2479,10 +2596,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -2517,6 +2634,26 @@ "node": ">=10.12.0" } }, + "node_modules/c8/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/c8/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2542,13 +2679,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2576,9 +2714,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001524", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", - "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", + "version": "1.0.30001554", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", + "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", "dev": true, "funding": [ { @@ -2596,42 +2734,47 @@ ] }, "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -2686,39 +2829,22 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/combined-stream": { @@ -2741,6 +2867,12 @@ "node": ">=14" } }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2758,9 +2890,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "node_modules/create-require": { @@ -2784,17 +2916,15 @@ } }, "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/cssesc": { "version": "3.0.0", @@ -2808,62 +2938,11 @@ "node": ">=4" } }, - "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", - "dev": true, - "dependencies": { - "rrweb-cssom": "^0.6.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -2902,12 +2981,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -2921,15 +2994,15 @@ } }, "node_modules/deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -2955,12 +3028,27 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -3027,18 +3115,6 @@ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3072,6 +3148,18 @@ "balanced-match": "^1.0.0" } }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/editorconfig/node_modules/minimatch": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", @@ -3102,16 +3190,22 @@ "node": ">=10" } }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.505", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", - "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==", + "version": "1.4.567", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz", + "integrity": "sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w==", "dev": true }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/entities": { @@ -3193,27 +3287,31 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3255,6 +3353,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-plugin-vitest-globals": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", @@ -3262,9 +3372,9 @@ "dev": true }, "node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz", + "integrity": "sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -3282,108 +3392,40 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { + "node_modules/eslint-plugin-vue/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/eslint/node_modules/eslint-scope": { + "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", @@ -3399,19 +3441,22 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3423,25 +3468,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=10" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/espree": { @@ -3462,9 +3498,9 @@ } }, "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3473,15 +3509,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3494,7 +3521,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -3503,15 +3530,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -3533,9 +3551,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3573,9 +3591,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -3594,9 +3612,9 @@ } }, "node_modules/filesize": { - "version": "10.0.12", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.12.tgz", - "integrity": "sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", + "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", "engines": { "node": ">= 10.4.0" } @@ -3630,16 +3648,37 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flat-cache/node_modules/rimraf": { @@ -3658,15 +3697,15 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -3724,9 +3763,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -3738,11 +3777,14 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -3771,44 +3813,43 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3826,6 +3867,27 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -3867,12 +3929,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3880,34 +3936,19 @@ "dev": true }, "node_modules/happy-dom": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", - "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", + "version": "12.9.1", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-12.9.1.tgz", + "integrity": "sha512-UvQ3IwKn1G3iiNCdTrhijdLGqf8Vj7d3OpmYcPwlKakjFy83oYbW6TmOKDLMTVLO9whmOC1HIpS09wf/14k7cA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "css.escape": "^1.5.1", - "he": "^1.2.0", + "entities": "^4.5.0", "iconv-lite": "^0.6.3", - "node-fetch": "^2.x.x", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -3918,21 +3959,21 @@ } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3977,6 +4018,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3986,18 +4039,6 @@ "he": "bin/he" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -4016,33 +4057,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -4056,18 +4070,18 @@ } }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, "node_modules/import-fresh": { @@ -4118,13 +4132,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -4300,12 +4314,6 @@ "node": ">=8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -4374,16 +4382,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -4436,9 +4440,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -4451,6 +4455,18 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -4466,6 +4482,12 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-instrument/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", @@ -4480,27 +4502,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -4516,9 +4517,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -4529,9 +4530,9 @@ } }, "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -4566,46 +4567,6 @@ "node": ">=12" } }, - "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4624,73 +4585,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", - "decimal.js": "^10.4.3", - "domexception": "^4.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.6.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4703,6 +4597,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4738,6 +4638,15 @@ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4791,24 +4700,21 @@ "dev": true }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/lz-string": { @@ -4821,9 +4727,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -4831,11 +4737,6 @@ "node": ">=12" } }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -4851,6 +4752,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/make-dir/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -4866,6 +4779,12 @@ "node": ">=10" } }, + "node_modules/make-dir/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4926,18 +4845,18 @@ } }, "node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mlly": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.1.tgz", - "integrity": "sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", "dev": true, "dependencies": { "acorn": "^8.10.0", @@ -4981,34 +4900,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -5051,16 +4942,10 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", - "dev": true - }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5110,9 +4995,9 @@ } }, "node_modules/oidc-client-ts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.2.5.tgz", - "integrity": "sha512-omAHoLdFcylnwZeHJahOnJBwd0r78JzhmVAmsQjLGrexAnQKiHW9Ilr9FlRD5qjMikmabvaucI4k49AbQLXhmQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.3.0.tgz", + "integrity": "sha512-7RUKU+TJFQo+4X9R50IGJAIDF18uRBaFXyZn4VVCfwmwbSUhKcdDnw4zgeut3uEXkiD3NqURq+d88sDPxjf1FA==", "dependencies": { "crypto-js": "^4.1.1", "jwt-decode": "^3.1.2" @@ -5189,18 +5074,6 @@ "node": ">=6" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5229,13 +5102,13 @@ } }, "node_modules/path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -5245,9 +5118,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -5295,9 +5168,9 @@ } }, "node_modules/pinia": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", - "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", "dependencies": { "@vue/devtools-api": "^6.5.0", "vue-demi": ">=0.14.5" @@ -5328,9 +5201,9 @@ } }, "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "hasInstallScript": true, "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", @@ -5364,9 +5237,9 @@ } }, "node_modules/postcss": { - "version": "8.4.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", - "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -5412,6 +5285,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -5449,17 +5337,17 @@ "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" }, "node_modules/primevue": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.32.2.tgz", - "integrity": "sha512-BEDhIb+VqfjjIF9+G+dCRsE542afz5Xl01XHbViYR13T7ZreBMWsPcJCCTyKzouwJHr6HTskJXJnrkTmOI1vKg==", + "version": "3.34.1", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.34.1.tgz", + "integrity": "sha512-5QPy8I+TMYSQgC0Bs/9vINsOVjgCOQFAr6uz49Wzcj8u04qJ2mG/z6OhAana+f4yKTTHVwHLVnuGkrIp/nI9DA==", "peerDependencies": { "vue": "^3.0.0" } }, "node_modules/property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" }, "node_modules/proto-list": { "version": "1.2.4", @@ -5472,12 +5360,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -5495,12 +5377,6 @@ "vue": "^3.0.0" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5540,19 +5416,19 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -5570,12 +5446,6 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5596,15 +5466,15 @@ } }, "node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dev": true, "dependencies": { - "glob": "^10.2.5" + "glob": "^10.3.7" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" + "rimraf": "dist/esm/bin.mjs" }, "engines": { "node": ">=14" @@ -5639,19 +5509,19 @@ } }, "node_modules/rimraf/node_modules/glob": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", - "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -5661,9 +5531,9 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -5676,9 +5546,9 @@ } }, "node_modules/rimraf/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { "node": ">=14" @@ -5688,9 +5558,9 @@ } }, "node_modules/rollup": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz", - "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -5703,12 +5573,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5739,9 +5603,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "version": "1.69.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz", + "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -5755,18 +5619,6 @@ "node": ">=14.0.0" } }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -5776,6 +5628,35 @@ "semver": "bin/semver.js" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5874,20 +5755,17 @@ } }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -5905,39 +5783,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5976,27 +5821,27 @@ } }, "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", "dev": true, "dependencies": { - "acorn": "^8.8.2" + "acorn": "^8.10.0" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/svg-tags": { @@ -6005,12 +5850,6 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -6025,6 +5864,26 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6037,9 +5896,9 @@ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, "node_modules/tinybench": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", - "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", "dev": true }, "node_modules/tinypool": { @@ -6052,9 +5911,9 @@ } }, "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", "dev": true, "engines": { "node": ">=14.0.0" @@ -6086,29 +5945,18 @@ "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, "engines": { - "node": ">=6" + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -6152,27 +6000,6 @@ } } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6195,49 +6022,45 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.6.0.tgz", + "integrity": "sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", "dev": true }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -6273,16 +6096,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6296,46 +6109,35 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/vee-validate": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.11.3.tgz", - "integrity": "sha512-YhWORdZRE1GL6vXKj3r9f+Y8fJH5JMwMUJ4DFS44+WcTtiNXggyE3pyJPlZBqS9AgYGZ47EOv4UczkLxHqufiw==", + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.11.8.tgz", + "integrity": "sha512-ZuVpw0axWYBM3aVTD/bm94hcWHumqeUgNjptOqfBT0gyqyHaGYCrm0tSD/0bygEbWUDwEPJOQaEKaUGM82j8TQ==", "dependencies": { "@vue/devtools-api": "^6.5.0", - "type-fest": "^4.2.0" + "type-fest": "^4.3.1" }, "peerDependencies": { "vue": "^3.3.4" } }, - "node_modules/vee-validate/node_modules/type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -6388,9 +6190,9 @@ } }, "node_modules/vite-node": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.3.tgz", - "integrity": "sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -6398,7 +6200,7 @@ "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -6411,23 +6213,23 @@ } }, "node_modules/vitest": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.3.tgz", - "integrity": "sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.3", - "@vitest/runner": "0.34.3", - "@vitest/snapshot": "0.34.3", - "@vitest/spy": "0.34.3", - "@vitest/utils": "0.34.3", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", - "chai": "^4.3.7", + "chai": "^4.3.10", "debug": "^4.3.4", "local-pkg": "^0.4.3", "magic-string": "^0.30.1", @@ -6437,8 +6239,8 @@ "strip-literal": "^1.0.1", "tinybench": "^2.5.0", "tinypool": "^0.7.0", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.34.3", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", "why-is-node-running": "^2.2.2" }, "bin": { @@ -6488,9 +6290,9 @@ } }, "node_modules/volar-service-eslint": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/volar-service-eslint/-/volar-service-eslint-0.0.11.tgz", - "integrity": "sha512-H0MP5x//x1mFnbKuAvl9B/feNG3Wve0FgsqPrJ4NJG9aEDFfPkQ0ruOpXvFwrVTVwUhUqcEVqaeJsqJgSIzc0g==", + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/volar-service-eslint/-/volar-service-eslint-0.0.15.tgz", + "integrity": "sha512-ReuHchtapO55ovp9wSe26riqeLydnfSsQsSuZFJDbUrtLDhXgAQKEm1r7wVLylb5tA5ptMJ87nBkm0Njzjotlg==", "dev": true, "peerDependencies": { "@volar/language-service": "~1.10.0", @@ -6503,15 +6305,23 @@ } }, "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", + "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-sfc": "3.3.7", + "@vue/runtime-dom": "3.3.7", + "@vue/server-renderer": "3.3.7", + "@vue/shared": "3.3.7" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/vue-component-type-helpers": { @@ -6521,9 +6331,9 @@ "dev": true }, "node_modules/vue-eslint-parser": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", - "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -6544,26 +6354,16 @@ "eslint": ">=6.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">=10" } }, "node_modules/vue-eslint-parser/node_modules/semver": { @@ -6581,10 +6381,16 @@ "node": ">=10" } }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/vue-router": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", - "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", "dependencies": { "@vue/devtools-api": "^6.5.0" }, @@ -6596,9 +6402,9 @@ } }, "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "version": "2.7.15", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", + "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", "dev": true, "dependencies": { "de-indent": "^1.0.2", @@ -6606,14 +6412,14 @@ } }, "node_modules/vue-tsc": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.8.tgz", - "integrity": "sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==", + "version": "1.8.21", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.21.tgz", + "integrity": "sha512-gc9e+opdeF0zKixaadXT5v2s+x+77oqpuza/vwqDhdDyEeLZUOmZaVeb9noZpkdhFaLq7t7ils/7lFU8E/Hgew==", "dev": true, "dependencies": { - "@vue/language-core": "1.8.8", - "@vue/typescript": "1.8.8", - "semver": "^7.3.8" + "@volar/typescript": "~1.10.5", + "@vue/language-core": "1.8.21", + "semver": "^7.5.4" }, "bin": { "vue-tsc": "bin/vue-tsc.js" @@ -6622,33 +6428,39 @@ "typescript": "*" } }, - "node_modules/vue-tsc/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/vue-tsc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/vue-tsc/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "xml-name-validator": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=14" + "node": ">=10" } }, + "node_modules/vue-tsc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -6679,26 +6491,6 @@ "node": ">=12" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6746,17 +6538,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -6816,139 +6607,12 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -6958,12 +6622,6 @@ "node": ">=12" } }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -6974,9 +6632,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yargs": { @@ -7006,26 +6664,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -7048,9 +6686,9 @@ } }, "node_modules/yup": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", - "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.3.2.tgz", + "integrity": "sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ==", "dependencies": { "property-expr": "^2.0.5", "tiny-case": "^1.0.3", @@ -7069,4958 +6707,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - } - }, - "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true - }, - "@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", - "dev": true, - "requires": { - "@babel/types": "^7.22.10", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" - } - }, - "@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz", - "integrity": "sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==" - }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", - "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - } - }, - "@babel/runtime": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", - "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@bcgov/bc-sans": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-2.0.0.tgz", - "integrity": "sha512-hgCYDEwVWZ0t/yzmo802D1oF3hhzDjsjpgB82EZcDEiLPxjV2x9qALv4mBNKAiWDK4ezvBL1VrD99NnIbxG5Vw==" - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", - "dev": true - }, - "@fortawesome/fontawesome-common-types": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", - "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==" - }, - "@fortawesome/fontawesome-svg-core": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", - "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.4.2" - } - }, - "@fortawesome/free-solid-svg-icons": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", - "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.4.2" - } - }, - "@fortawesome/vue-fontawesome": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", - "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", - "requires": {} - }, - "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true - }, - "@pinia/testing": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.3.tgz", - "integrity": "sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==", - "dev": true, - "requires": { - "vue-demi": ">=0.14.5" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "dev": true, - "requires": {} - } - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@rushstack/eslint-patch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", - "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==", - "dev": true - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "@testing-library/dom": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", - "integrity": "sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@testing-library/vue": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-7.0.0.tgz", - "integrity": "sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.21.0", - "@testing-library/dom": "^9.0.1", - "@vue/test-utils": "^2.3.1" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@tsconfig/node18": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", - "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", - "dev": true - }, - "@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", - "dev": true - }, - "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.16.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", - "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@vitejs/plugin-vue": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", - "integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==", - "dev": true, - "requires": {} - }, - "@vitejs/plugin-vue-jsx": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.2.tgz", - "integrity": "sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==", - "dev": true, - "requires": { - "@babel/core": "^7.22.10", - "@babel/plugin-transform-typescript": "^7.22.10", - "@vue/babel-plugin-jsx": "^1.1.5" - } - }, - "@vitest/coverage-c8": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.33.0.tgz", - "integrity": "sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.1", - "c8": "^7.14.0", - "magic-string": "^0.30.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3" - } - }, - "@vitest/coverage-istanbul": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.34.3.tgz", - "integrity": "sha512-RdEGzydbbalyDLmmJ5Qm+T3Lrubw/U9iCnhzM2B1V57t4cVa1t6uyfIHdv68d1au4PRzkLhY7Xouwuhb7BeG+Q==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.1.5", - "test-exclude": "^6.0.0" - } - }, - "@vitest/expect": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.3.tgz", - "integrity": "sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==", - "dev": true, - "requires": { - "@vitest/spy": "0.34.3", - "@vitest/utils": "0.34.3", - "chai": "^4.3.7" - } - }, - "@vitest/runner": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.3.tgz", - "integrity": "sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==", - "dev": true, - "requires": { - "@vitest/utils": "0.34.3", - "p-limit": "^4.0.0", - "pathe": "^1.1.1" - }, - "dependencies": { - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - } - } - }, - "@vitest/snapshot": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.3.tgz", - "integrity": "sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==", - "dev": true, - "requires": { - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } - } - }, - "@vitest/spy": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.3.tgz", - "integrity": "sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==", - "dev": true, - "requires": { - "tinyspy": "^2.1.1" - } - }, - "@vitest/utils": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.3.tgz", - "integrity": "sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==", - "dev": true, - "requires": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } - } - }, - "@volar/language-core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz", - "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==", - "dev": true, - "requires": { - "@volar/source-map": "1.10.1" - } - }, - "@volar/source-map": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz", - "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==", - "dev": true, - "requires": { - "muggle-string": "^0.3.1" - } - }, - "@volar/typescript": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz", - "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==", - "dev": true, - "requires": { - "@volar/language-core": "1.10.1" - } - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", - "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", - "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "@vue/babel-helper-vue-transform-on": "^1.1.5", - "camelcase": "^6.3.0", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" - } - }, - "@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", - "requires": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", - "requires": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" - } - }, - "@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", - "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", - "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" - } - }, - "@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" - }, - "@vue/eslint-config-typescript": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", - "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "vue-eslint-parser": "^9.1.1" - } - }, - "@vue/language-core": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.8.tgz", - "integrity": "sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw==", - "dev": true, - "requires": { - "@volar/language-core": "~1.10.0", - "@volar/source-map": "~1.10.0", - "@vue/compiler-dom": "^3.3.0", - "@vue/reactivity": "^3.3.0", - "@vue/shared": "^3.3.0", - "minimatch": "^9.0.0", - "muggle-string": "^0.3.1", - "vue-template-compiler": "^2.7.14" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", - "requires": { - "@vue/shared": "3.3.4" - } - }, - "@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", - "requires": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" - } - }, - "@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", - "requires": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" - } - }, - "@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", - "requires": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" - } - }, - "@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", - "requires": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" - } - }, - "@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" - }, - "@vue/test-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.1.tgz", - "integrity": "sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==", - "dev": true, - "requires": { - "js-beautify": "1.14.9", - "vue-component-type-helpers": "1.8.4" - } - }, - "@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", - "dev": true - }, - "@vue/typescript": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.8.tgz", - "integrity": "sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==", - "dev": true, - "requires": { - "@volar/typescript": "~1.10.0", - "@vue/language-core": "1.8.8" - } - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" - } - }, - "c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001524", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", - "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", - "dev": true - }, - "chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "optional": true, - "peer": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", - "dev": true, - "requires": { - "rrweb-cssom": "^0.6.0" - } - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" - }, - "dependencies": { - "tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "requires": { - "punycode": "^2.3.0" - } - }, - "whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "requires": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { - "@babel/runtime": "^7.21.0" - } - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-equal": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", - "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true - }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "requires": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "electron-to-chromium": { - "version": "1.4.505", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz", - "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, - "es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - } - }, - "esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-plugin-vitest-globals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", - "integrity": "sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==", - "dev": true - }, - "eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "filesize": { - "version": "10.0.12", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.12.tgz", - "integrity": "sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "happy-dom": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-8.9.0.tgz", - "integrity": "sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "css.escape": "^1.5.1", - "he": "^1.2.0", - "iconv-lite": "^0.6.3", - "node-fetch": "^2.x.x", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true - }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "js-beautify": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", - "dev": true, - "requires": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", - "glob": "^8.1.0", - "nopt": "^6.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsdom": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", - "decimal.js": "^10.4.3", - "domexception": "^4.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.6.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" - }, - "dependencies": { - "tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "requires": { - "punycode": "^2.3.0" - } - }, - "whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "requires": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true - }, - "magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - } - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", - "dev": true - }, - "mlly": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.1.tgz", - "integrity": "sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==", - "dev": true, - "requires": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "muggle-string": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", - "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", - "dev": true - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", - "dev": true - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "oidc-client-ts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-2.2.5.tgz", - "integrity": "sha512-omAHoLdFcylnwZeHJahOnJBwd0r78JzhmVAmsQjLGrexAnQKiHW9Ilr9FlRD5qjMikmabvaucI4k49AbQLXhmQ==", - "requires": { - "crypto-js": "^4.1.1", - "jwt-decode": "^3.1.2" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", - "dev": true, - "requires": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", - "dev": true - } - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pinia": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", - "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", - "requires": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", - "requires": {} - } - } - }, - "pinia-plugin-persistedstate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", - "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", - "requires": {} - }, - "pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", - "dev": true, - "requires": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, - "postcss": { - "version": "8.4.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", - "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "primeflex": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz", - "integrity": "sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ==" - }, - "primeicons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", - "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" - }, - "primevue": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.32.2.tgz", - "integrity": "sha512-BEDhIb+VqfjjIF9+G+dCRsE542afz5Xl01XHbViYR13T7ZreBMWsPcJCCTyKzouwJHr6HTskJXJnrkTmOI1vKg==", - "requires": {} - }, - "property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "qrcode.vue": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz", - "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==", - "requires": {} - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", - "dev": true, - "requires": { - "glob": "^10.2.5" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", - "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" - } - }, - "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true - } - } - }, - "rollup": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz", - "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true - }, - "std-env": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", - "dev": true - }, - "stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "requires": { - "internal-slot": "^1.0.4" - } - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "requires": { - "acorn": "^8.8.2" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tiny-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" - }, - "tinybench": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", - "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", - "dev": true - }, - "tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", - "dev": true - }, - "tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "optional": true, - "peer": true - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "devOptional": true - }, - "ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", - "dev": true - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - } - }, - "vee-validate": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.11.3.tgz", - "integrity": "sha512-YhWORdZRE1GL6vXKj3r9f+Y8fJH5JMwMUJ4DFS44+WcTtiNXggyE3pyJPlZBqS9AgYGZ47EOv4UczkLxHqufiw==", - "requires": { - "@vue/devtools-api": "^6.5.0", - "type-fest": "^4.2.0" - }, - "dependencies": { - "type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==" - } - } - }, - "vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", - "dev": true, - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - } - }, - "vite-node": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.3.tgz", - "integrity": "sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==", - "dev": true, - "requires": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.4.0", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" - } - }, - "vitest": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.3.tgz", - "integrity": "sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==", - "dev": true, - "requires": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.3", - "@vitest/runner": "0.34.3", - "@vitest/snapshot": "0.34.3", - "@vitest/spy": "0.34.3", - "@vitest/utils": "0.34.3", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.34.3", - "why-is-node-running": "^2.2.2" - } - }, - "volar-service-eslint": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/volar-service-eslint/-/volar-service-eslint-0.0.11.tgz", - "integrity": "sha512-H0MP5x//x1mFnbKuAvl9B/feNG3Wve0FgsqPrJ4NJG9aEDFfPkQ0ruOpXvFwrVTVwUhUqcEVqaeJsqJgSIzc0g==", - "dev": true, - "requires": {} - }, - "vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", - "requires": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" - } - }, - "vue-component-type-helpers": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz", - "integrity": "sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==", - "dev": true - }, - "vue-eslint-parser": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", - "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "vue-router": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", - "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", - "requires": { - "@vue/devtools-api": "^6.5.0" - } - }, - "vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "vue-tsc": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.8.tgz", - "integrity": "sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ==", - "dev": true, - "requires": { - "@vue/language-core": "1.8.8", - "@vue/typescript": "1.8.8", - "semver": "^7.3.8" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dev": true, - "requires": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "yup": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", - "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", - "requires": { - "property-expr": "^2.0.5", - "tiny-case": "^1.0.3", - "toposort": "^2.0.2", - "type-fest": "^2.19.0" - }, - "dependencies": { - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" - } - } - } } } diff --git a/frontend/package.json b/frontend/package.json index 5e38fec..0951f8a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,8 +10,8 @@ "build:dts": "vue-tsc --declaration --emitDeclarationOnly", "clean": "rimraf coverage dist", "debug": "vite --mode debug", + "format": "prettier ./src --write", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --no-fix --ignore-path .gitignore", - "lint:fix": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", "preview": "vite preview", "prebuild": "npm run lint", "prelint": "npm run typecheck", @@ -24,49 +24,50 @@ "typecheck": "vue-tsc --noEmit" }, "dependencies": { - "@bcgov/bc-sans": "^2.0.0", + "@bcgov/bc-sans": "^2.1.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/vue-fontawesome": "^3.0.3", - "axios": "^1.5.0", + "axios": "^1.5.1", "date-fns": "^2.30.0", - "filesize": "^10.0.12", - "oidc-client-ts": "^2.2.5", - "pinia": "^2.1.6", + "filesize": "^10.1.0", + "oidc-client-ts": "^2.3.0", + "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.0", "primeflex": "^3.3.1", "primeicons": "^6.0.1", - "primevue": "^3.32.2", + "primevue": "~3.34.1", "qrcode.vue": "^3.4.1", - "vee-validate": "^4.11.3", - "vue": "^3.3.4", - "vue-router": "^4.2.4", - "yup": "^1.2.0" + "vee-validate": "^4.11.8", + "vue": "^3.3.7", + "vue-router": "^4.2.5", + "yup": "^1.3.2" }, "devDependencies": { "@pinia/testing": "^0.1.3", - "@rushstack/eslint-patch": "^1.3.3", "@testing-library/vue": "^7.0.0", - "@tsconfig/node18": "^2.0.1", - "@types/node": "~18.16.16", - "@vitejs/plugin-vue": "^4.3.4", + "@tsconfig/node18": "^18.2.2", + "@types/node": "^18.18.1", + "@vitejs/plugin-vue": "^4.4.0", "@vitejs/plugin-vue-jsx": "^3.0.2", "@vitest/coverage-c8": "^0.33.0", - "@vitest/coverage-istanbul": "^0.34.3", - "@vue/eslint-config-typescript": "^11.0.3", + "@vitest/coverage-istanbul": "^0.34.6", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.4.1", "@vue/tsconfig": "^0.4.0", - "eslint": "^8.48.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-vitest-globals": "^1.4.0", - "eslint-plugin-vue": "^9.17.0", - "jsdom": "^22.1.0", - "rimraf": "^5.0.1", - "sass": "^1.66.1", + "eslint-plugin-vue": "^9.18.0", + "happy-dom": "^12.9.1", + "prettier": "3.0.3", + "rimraf": "^5.0.5", + "sass": "^1.69.4", "ts-node": "^10.9.1", - "typescript": "~4.8.4", - "vite": "^4.4.9", - "vitest": "^0.34.3", - "volar-service-eslint": "^0.0.11", - "vue-tsc": "^1.8.8" + "typescript": "^5.2.2", + "vite": "^4.5.0", + "vitest": "^0.34.6", + "volar-service-eslint": "^0.0.15", + "vue-tsc": "^1.8.21" } } diff --git a/frontend/src/assets/base.css b/frontend/src/assets/base.css index b7c0884..e910a75 100644 --- a/frontend/src/assets/base.css +++ b/frontend/src/assets/base.css @@ -62,9 +62,23 @@ body { min-height: 100vh; color: var(--color-text); background: var(--color-background); - transition: color 0.5s, background-color 0.5s; + transition: + color 0.5s, + background-color 0.5s; line-height: 1.6; - font-family: BCSans, Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: + BCSans, + Inter, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + Oxygen, + Ubuntu, + Cantarell, + 'Fira Sans', + 'Droid Sans', + 'Helvetica Neue', sans-serif; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; diff --git a/frontend/src/assets/main.scss b/frontend/src/assets/main.scss index 9429bc7..f3e81e1 100644 --- a/frontend/src/assets/main.scss +++ b/frontend/src/assets/main.scss @@ -1,6 +1,6 @@ -@import "./base.css"; -@import "./primevue.scss"; -@import "./variables.scss"; +@import './base.css'; +@import './primevue.scss'; +@import './variables.scss'; #app { margin: 0 auto; diff --git a/frontend/src/assets/primevue.scss b/frontend/src/assets/primevue.scss index 7c3d0d5..03ab335 100644 --- a/frontend/src/assets/primevue.scss +++ b/frontend/src/assets/primevue.scss @@ -63,14 +63,7 @@ // Note this could be eventually replaced by a custom themeing (which has JUST been introduced in Primevue) // once it is more settled implementation-wise .p-button { - &:not( - .p-button-secondary, - .p-button-success, - .p-button-info, - .p-button-warning, - .p-button-help, - .p-button-danger - ) { + &:not(.p-button-secondary, .p-button-success, .p-button-info, .p-button-warning, .p-button-help, .p-button-danger) { color: $app-primary !important; &:not(.p-button-outlined, .p-button-text) { diff --git a/frontend/src/components/form/CopyToClipboard.vue b/frontend/src/components/form/CopyToClipboard.vue index ea89092..fbf7ff9 100644 --- a/frontend/src/components/form/CopyToClipboard.vue +++ b/frontend/src/components/form/CopyToClipboard.vue @@ -6,8 +6,8 @@ import { ButtonMode } from '@/utils/enums'; // Props type Props = { - mode?: ButtonMode, - toCopy?: string + mode?: ButtonMode; + toCopy?: string; }; const props = withDefaults(defineProps(), { @@ -19,7 +19,7 @@ const props = withDefaults(defineProps(), { const toast = useToast(); const copyToClipboard = () => { - if( props.toCopy ) { + if (props.toCopy) { navigator.clipboard.writeText(props.toCopy); toast.info('Copied to clipboard'); } @@ -32,9 +32,7 @@ const copyToClipboard = () => { class="p-button-rounded p-button-secondary p-button-outlined" @click="copyToClipboard" > - + diff --git a/frontend/src/components/form/Password.vue b/frontend/src/components/form/Password.vue index 919e73c..1598b41 100644 --- a/frontend/src/components/form/Password.vue +++ b/frontend/src/components/form/Password.vue @@ -36,9 +36,7 @@ const { errorMessage, value } = useField(toRef(props, 'name')); toggle-mask /> {{ helptext }} - + diff --git a/frontend/src/components/form/TextInput.vue b/frontend/src/components/form/TextInput.vue index 45486a3..3005374 100644 --- a/frontend/src/components/form/TextInput.vue +++ b/frontend/src/components/form/TextInput.vue @@ -36,9 +36,7 @@ const { errorMessage, value } = useField(toRef(props, 'name')); :disabled="disabled" /> {{ helpText }} - + diff --git a/frontend/src/components/guards/RequireAuth.vue b/frontend/src/components/guards/RequireAuth.vue index 92b64bf..ea39b0f 100644 --- a/frontend/src/components/guards/RequireAuth.vue +++ b/frontend/src/components/guards/RequireAuth.vue @@ -17,11 +17,10 @@ const ready: Ref = ref(false); // Actions const router = useRouter(); -onBeforeMount( async () => { - if( !getIsAuthenticated.value ) { +onBeforeMount(async () => { + if (!getIsAuthenticated.value) { router.push({ name: RouteNames.LOGIN }); - } - else { + } else { ready.value = true; } }); diff --git a/frontend/src/components/layout/AppLayout.vue b/frontend/src/components/layout/AppLayout.vue index 0b8f2e7..63916a4 100644 --- a/frontend/src/components/layout/AppLayout.vue +++ b/frontend/src/components/layout/AppLayout.vue @@ -29,10 +29,12 @@ import { Header, Footer } from '@/components/layout'; align-items: flex-start; min-height: 100vh; width: 100%; + .layout-head { flex: 0; width: 100%; } + .layout-container { flex: 1; padding-top: 20px; @@ -40,6 +42,7 @@ import { Header, Footer } from '@/components/layout'; padding-right: 100px; width: 100%; } + .layout-footer { width: 100%; } diff --git a/frontend/src/components/layout/Footer.vue b/frontend/src/components/layout/Footer.vue index 06a8f81..5be78fd 100644 --- a/frontend/src/components/layout/Footer.vue +++ b/frontend/src/components/layout/Footer.vue @@ -11,61 +11,61 @@ const { getConfig } = storeToRefs(useConfigStore());