diff --git a/.codespellrc b/.codespellrc index 936d804777..db81b9217c 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,6 +1,6 @@ [codespell] # Ref: https://github.com/codespell-project/codespell#using-a-config-file -skip = .git*,*.svg,*.css,*.min.*,.codespellrc +skip = .git*,*.svg,*.css,*.min.*,.codespellrc,package-lock.json,dist,coverage,node_modules check-hidden = true # case sensitive etc, also assume very long lines manufactured ignore-regex = \b(afterAll|userR|Leary|thirdParty)\b|.{300,}|keywords: ".* diff --git a/.eslintrc.js b/.eslintrc.js index 8fd610c206..30a8e01c8b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,71 +2,100 @@ module.exports = { root: true, env: { node: true, - jest: true + es2022: true, }, - "extends": [ - "plugin:vue/recommended", - "eslint:recommended" + extends: [ + "plugin:vue/vue3-recommended", + "eslint:recommended", + "plugin:vue/base", + "plugin:vuetify/base", + "prettier", ], - "plugins": ["simple-import-sort"], rules: { - 'no-console': process.env.NODE_ENV === "production" ? "error" : "off", - 'no-debugger': process.env.NODE_ENV === "production" ? "error" : "off", - "simple-import-sort/imports": "error", - "simple-import-sort/exports": "error", - 'vue/multi-word-component-names': "off", - "vue/order-in-components": ["error", { - "order": [ - "el", - "name", - "key", - "parent", - "functional", - ["delimiters", "comments"], - ["components", "directives", "filters"], - "extends", - "mixins", - ["provide", "inject"], - "ROUTER_GUARDS", - "layout", - "middleware", - "validate", - "scrollToTop", - "transition", - "loading", - "inheritAttrs", - "model", - ["props", "propsData"], - "emits", - "setup", - "asyncData", - "data", - "fetch", - "head", - "computed", - "watch", - "watchQuery", - "LIFECYCLE_HOOKS", - "methods", - ["template", "render"], - "renderError" - ] - } - ] + "no-console": process.env.VITE_NODE_ENV === "production" ? "error" : "off", + "no-debugger": process.env.VITE_NODE_ENV === "production" ? "error" : "off", + "vue/multi-word-component-names": "off", + "quote-props": ["error", "as-needed"], + "vue/order-in-components": [ + "error", + { + order: [ + "el", + "name", + "key", + "parent", + "functional", + ["delimiters", "comments"], + ["components", "directives", "filters"], + "extends", + "mixins", + ["provide", "inject"], + "ROUTER_GUARDS", + "layout", + "middleware", + "validate", + "scrollToTop", + "transition", + "loading", + "inheritAttrs", + "model", + ["props", "propsData"], + "emits", + "setup", + "asyncData", + "data", + "beforeRouteEnter", + "fetch", + "head", + "computed", + "watch", + "watchQuery", + "LIFECYCLE_HOOKS", + "methods", + ["template", "render"], + "renderError", + ], + }, + ], + "brace-style": [ + "error", + "stroustrup", + { + allowSingleLine: true, + }, + ], + indent: ["error", 2], + "space-in-parens": ["error", "never"], }, parser: "vue-eslint-parser", parserOptions: { - parser: "@babel/eslint-parser" + // parser: '@babel/eslint-parser', + // babelOptions: { + // parserOpts: { + // plugins: ["jsx"] + // } + // } }, overrides: [ { files: [ "**/__tests__/*.{j,t}s?(x)", - "**/tests/unit/**/*.spec.{j,t}s?(x)" + "**/tests/unit/**/*.spec.{j,t}s?(x)", ], env: { - jest: true - } - } - ] + // jest: true + // vitest: true, + }, + }, + ], + globals: { + describe: "readonly", + it: "readonly", + expect: "readonly", + vi: "readonly", + beforeEach: "readonly", + afterEach: "readonly", + beforeAll: "readonly", + afterAll: "readonly" + } }; diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 570f6481d1..969b6147f0 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -3,24 +3,24 @@ name: Doc on: push: branches-ignore: - - 'master' + - 'master' jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - name: Install Dependencies - run: npm install - - name: Run the documentation - run: npm run doc:full - - name: Commit changes - uses: elstudio/actions-js-build/commit@v2 - with: - commitMessage: 'Autogenerated documentation files' - wdPath: documentation - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + - name: Install Dependencies + run: npm install + - name: Run the documentation + run: npm run doc:full + - name: Commit changes + uses: elstudio/actions-js-build/commit@v2 + with: + commitMessage: 'Autogenerated documentation files' + wdPath: documentation + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/njsscan-analysis.yml b/.github/workflows/njsscan-analysis.yml index 0aab762a53..8b65f121e4 100644 --- a/.github/workflows/njsscan-analysis.yml +++ b/.github/workflows/njsscan-analysis.yml @@ -15,7 +15,7 @@ jobs: name: njsscan code scanning steps: - name: Checkout the code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: nodejsscan scan id: njsscan uses: ajinabraham/njsscan-action@master diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 0fe5671518..6db7898048 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -1,6 +1,11 @@ -name: Build +name: Test and Coverage -on: [push] +on: [ push, pull_request ] + +# CRITICAL: Give the action permission to write PR comments +permissions: + pull-requests: write + contents: read jobs: build: @@ -8,18 +13,37 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - name: Install Dependencies - run: npm install - - name: Run npm unit tests - run: npm run test:unit - - name: Update coverage to coveralls - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - path-to-lcov: './coverage/lcov.info' - - name: Update coverage to codacy - run: npm run codacy ${{ secrets.CODACY_PROJECT_TOKEN }} + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + # Optional: Speeds up the workflow + cache: 'npm' + - name: Install Dependencies + # 'npm ci' is strictly better than 'npm install' for pipelines + run: npm ci + # 1. Run the test script + - name: Run Tests with Coverage + run: npm run test:coverage + + # 2. Add the PR Comment Action + - name: Report Coverage in PR + if: always() # Run even if coverage drops below 90% + uses: davelosert/vitest-coverage-report-action@v2 + + # 3. Upload to Coveralls + # This uses the official Codacy Action + - name: Update coverage to coveralls + if: always() # CRITICAL: Uploads report even if the 90% threshold fails + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: './coverage/lcov.info' + # 3. Upload to Codacy + # This uses the official Codacy Action + - name: Run Codacy Coverage Reporter + if: always() # CRITICAL: Uploads report even if the 90% threshold fails + uses: codacy/codacy-coverage-reporter-action@v1 + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: coverage/lcov.info \ No newline at end of file diff --git a/.gitignore b/.gitignore index f0687a876b..f7cd6ae89a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,10 @@ node_modules docTemp /dist /source/index.html -package-lock.json +# package-lock.json //npm ci is strictly designed for automated environments and requires a package-lock.json coverage out +yarn.lock # local env files .env.local diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..593cb75bc5 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20.16.0 \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..a8007a4442 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,16 @@ +# Ignore artifacts: +build +coverage + +# Ignore all HTML files: +**/*.html +documentation/* +.eslintrc.js +.github/* +babel.config.js +package.json +README.md +vite.config.mjs +vitest.config.js +vue.config.js +webpack.config.js diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000000..b05edfe280 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,12 @@ +{ + "plugins": ["stylelint-scss"], + "rules": { + "at-rule-no-unknown": null, + "scss/at-rule-no-unknown": [ + true, + { + "ignoreAtRules": ["tailwind", "keyframes"] + } + ] + } +} diff --git a/documentation/doc.conf.json b/documentation/doc.conf.json index 85e4922ee6..b86e2102bc 100644 --- a/documentation/doc.conf.json +++ b/documentation/doc.conf.json @@ -1,7 +1,6 @@ { "plugins": [ "node_modules/jsdoc-vuejs", - "jsdoc-vuex-plugin", "plugins/markdown" ], "source": { diff --git a/documentation/html/ExternalRESTClients.html b/documentation/html/ExternalRESTClients.html index b0da3d7ff6..7635d589e5 100644 --- a/documentation/html/ExternalRESTClients.html +++ b/documentation/html/ExternalRESTClients.html @@ -161,7 +161,7 @@

ne @@ -311,7 +311,7 @@

Parameters:
@@ -414,7 +414,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/GraphQLClient.html b/documentation/html/GraphQLClient.html index eb7715421b..dad548a118 100644 --- a/documentation/html/GraphQLClient.html +++ b/documentation/html/GraphQLClient.html @@ -162,7 +162,7 @@

new Grap @@ -344,7 +344,7 @@

Parameters:
@@ -507,7 +507,7 @@
Parameters:
@@ -665,7 +665,7 @@
Parameters:
@@ -829,7 +829,7 @@
Parameters:
@@ -912,7 +912,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/RESTClient.html b/documentation/html/RESTClient.html index 024e77335f..d51a114f6d 100644 --- a/documentation/html/RESTClient.html +++ b/documentation/html/RESTClient.html @@ -9053,7 +9053,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/Static.html b/documentation/html/Static.html index e922602cd8..a0115f5baa 100644 --- a/documentation/html/Static.html +++ b/documentation/html/Static.html @@ -237,7 +237,7 @@
Type:
@@ -391,7 +391,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/classes.list.html b/documentation/html/classes.list.html index e42ec44dbc..8320a7cba5 100644 --- a/documentation/html/classes.list.html +++ b/documentation/html/classes.list.html @@ -235,7 +235,7 @@

<constant> buildFace @@ -305,7 +305,7 @@

<constant> buildFil @@ -387,7 +387,7 @@

Type:
@@ -468,7 +468,7 @@
Type:
@@ -538,7 +538,7 @@

<constant> para @@ -619,7 +619,7 @@

Type:
@@ -771,7 +771,7 @@
Type:
@@ -925,7 +925,7 @@
Properties:
@@ -1008,7 +1008,7 @@

hackSearch( @@ -1265,7 +1265,7 @@

isAllowe @@ -1373,7 +1373,7 @@

isBluesky()< @@ -1589,7 +1589,7 @@

isEmailOr @@ -1697,7 +1697,7 @@

isImage()

@@ -1855,7 +1855,7 @@
Parameters:
@@ -1963,7 +1963,7 @@

isMastodon( @@ -2071,7 +2071,7 @@

isOrcid()

@@ -2179,7 +2179,7 @@

isRequired( @@ -2287,7 +2287,7 @@

isUrl()

@@ -2469,7 +2469,7 @@
Parameters:
@@ -2879,7 +2879,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_CuratorRecordsAwaitingApproval.vue.html b/documentation/html/components_Curators_CuratorRecordsAwaitingApproval.vue.html index 99d25e7d21..8c0aea820d 100644 --- a/documentation/html/components_Curators_CuratorRecordsAwaitingApproval.vue.html +++ b/documentation/html/components_Curators_CuratorRecordsAwaitingApproval.vue.html @@ -96,19 +96,19 @@

Source: components/Curators/CuratorRecordsAwaitingApprova <v-card-text v-if="approvalRequiredProcessed"> <v-card-title id="text-curator-search-0" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b>CURATOR EDITS AWAITING APPROVAL</b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> <v-card-text v-if="error.general"> @@ -117,161 +117,161 @@

Source: components/Curators/CuratorRecordsAwaitingApprova {{ error.general }} </v-alert> </v-card-text> + <v-data-table - :loading="loading" :headers="headerItems" :items="approvalRequiredProcessed" + :items-per-page-options="[10, 20, 30, 40, 50]" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" - sort-by="" > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="{ item }"> <tr> <td> - {{ props.item.updatedAt }} + {{ item.updatedAt }} </td> <td> <div class="priorityTag"> - {{ props.item.priority }} + {{ item.priority }} </div> </td> <td> <v-menu> - <template #activator="{ on: menu, attrs }"> - <v-tooltip bottom> - <template #activator="{ on: tooltip }"> - <v-icon - class="clickable" - small + <template #activator="{ props: menuProps }"> + <v-tooltip location="bottom"> + <template #activator="{ props: tooltipProps }"> + <span + class="clickable text-decoration-underline" color="nordnetBlue" - v-bind="attrs" - v-on="{ ...tooltip, ...menu }" + size="small" + v-bind="mergeProps(menuProps, tooltipProps)" > - {{ props.item.curator }} - </v-icon> + {{ item.curator || "Assign Curator" }} + </span> </template> <span>Assign a new curator</span> </v-tooltip> </template> <v-list> <v-list-item - v-for="(item, index) in curatorList" + v-for="(curator, index) in curatorList" :key="index" class="thelistCurators" @click=" - assignCurator(props.item.id, item.id, item.userName) + assignCurator(item.id, curator.id, curator.userName) " > - <v-list-item-title>{{ item.userName }}</v-list-item-title> + <v-list-item-title> + {{ curator.userName }} + </v-list-item-title> </v-list-item> </v-list> </v-menu> </td> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > - <Icon - :item="props.item.type" - :height="40" - wrapper-class="" - /> + <v-avatar v-if="item.type" class="mr-2" size="40"> + <Icon :height="40" :item="item.type" wrapper-class="" /> </v-avatar> - <a :href="'/' + props.item.id"> - {{ props.item.recordName }} + <a :href="'/' + item.id"> + {{ item.recordName }} </a> </div> </td> <td> - <div v-if="props.item.lastEditor === 'unknown'"> - {{ props.item.lastEditor }} + <div v-if="item.lastEditor === 'unknown'"> + {{ item.lastEditor }} </div> <div v-else> - <a :href="'/users/' + props.item.idLastEditor"> - {{ props.item.lastEditor }} + <a :href="'/users/' + item.idLastEditor"> + {{ item.lastEditor }} </a> </div> </td> <td> - <v-edit-dialog - :return-value.sync="props.item.processingNotes" - large - @save=" - saveProcessingNotes(props.item.id, props.item.processingNotes) - " + <v-menu + :close-on-content-click="false" + location="bottom" + min-width="400" > - {{ props.item.processingNotes }} - <template #input> - <div class="dialogProcNotesEdit"> - <div class="mt-4 title"> + <template #activator="{ props: menuProps }"> + <span style="cursor: pointer" v-bind="menuProps"> + {{ item.processingNotes || "Click to edit..." }} + </span> + </template> + <template #default="{ isActive }"> + <v-card class="pa-2"> + <v-card-title class="mt-2 text-h6"> Update Processing Notes - </div> - <v-textarea - v-model="props.item.processingNotes" - width="1200px" - label="Edit (not long words)" - filled - /> - </div> + </v-card-title> + <v-card-text class="pt-2"> + <v-textarea + v-model="item.processingNotes" + hide-details + label="Edit (not long words)" + variant="filled" + /> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + color="primary" + variant="text" + @click=" + saveProcessingNotes(item.id, item.processingNotes); + isActive.value = false; + " + > + Save + </v-btn> + </v-card-actions> + </v-card> </template> - </v-edit-dialog> + </v-menu> </td> <td> - <v-icon - color="blue" - dark - left - @click.stop=" - approveChangesMenu( - props.item.recordName, - props.item.id, - props.item.hidden - ) - " - > - far fa-check-circle - </v-icon> - {{ props.item.actions }} - <v-icon - color="red" - dark - right - small - @click="deleteRecordMenu(props.item.recordName, props.item.id)" - > - fas fa-trash - </v-icon> - <v-tooltip bottom> - <template #activator="{ on, attrs }"> - <span - v-bind="attrs" - v-on="on" - > - <a - :href="'/' + props.item.id + '/edit'" - style="padding-left: 12px" - > - Edit - </a> - </span> - </template> - <span>If edits are saved, record is approved.</span> - </v-tooltip> + <div class="d-flex"> + <v-icon + color="blue" + start + @click.stop=" + approveChangesMenu(item.recordName, item.id, item.rawhidden) + " + > + far fa-check-circle + </v-icon> + {{ item.actions }} + <v-icon + color="red" + end + size="small" + @click="deleteRecordMenu(item.recordName, item.id)" + > + fas fa-trash + </v-icon> + <v-tooltip location="bottom"> + <template #activator="{ props }"> + <span v-bind="props"> + <a + :href="'/' + item.id + '/edit'" + style="padding-left: 12px" + > + Edit + </a> + </span> + </template> + <span>If edits are saved, record is approved.</span> + </v-tooltip> + </div> </td> <td> - {{ props.item.createdAt }}, - <div v-if="props.item.creator === 'unknown'"> - {{ props.item.creator }} + {{ item.createdAt }}, + <div v-if="item.creator === 'unknown'"> + {{ item.creator }} </div> <div v-else> - <a :href="'/users/' + props.item.idCreator"> - {{ props.item.creator }} + <a :href="'/users/' + item.idCreator"> + {{ item.creator }} </a> </div> </td> @@ -279,112 +279,101 @@

Source: components/Curators/CuratorRecordsAwaitingApprova </template> </v-data-table> </v-card-text> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.approveChanges" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Are you sure you want to - <span style="color: blue; padding-left: 5px; padding-right: 1px"> - ACCEPT/APPROVE CHANGES - </span> - record? - <ul style="list-style-type: none"> - <li> - {{ dialogs.recordName }} - </li> - </ul> - </v-card-title> - <v-card-actions> - <v-spacer /> - <v-btn - :disabled="dialogs.disableButton === true" - color="blue darken-1" - text - @click="closeApproveChangesMenu()" - > - Cancel - </v-btn> - <v-btn - color="blue darken-1" - text - @click="confirmApproval()" - > - OK - </v-btn> - <v-spacer /> - <v-switch - v-model="dialogs.createReview" - color="green" - label="Create Review" - class="pr-3" - /> - <v-switch - v-model="dialogs.recordHidden" - color="purple" - label="Hide record" - /> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.deleteRecord" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Are you sure you want to - <span style="color: red; padding-left: 5px; padding-right: 5px"> - DELETE - </span> - this record? - <ul style="list-style-type: none"> - <li> - {{ dialogs.recordName }} - </li> - </ul> - </v-card-title> - <v-card-actions> - <v-spacer /> - <v-btn - :disabled="dialogs.disableButton === true" - color="blue darken-1" - text - @click="closeDeleteMenu()" - > - Cancel - </v-btn> - <v-btn - :disabled=" - dialogs.disableDelButton === true || - dialogs.disableButton === true - " - color="blue darken-1" - text - @click="confirmDelete()" - > - OK - </v-btn> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> + + <v-dialog v-model="dialogs.approveChanges" max-width="900px"> + <v-card> + <v-card-title class="text-h5" style="white-space: normal"> + Are you sure you want to + <span style="color: blue; padding-left: 5px; padding-right: 1px"> + ACCEPT/APPROVE CHANGES + </span> + record? + <ul style="list-style-type: none"> + <li> + {{ dialogs.recordName }} + </li> + </ul> + </v-card-title> + <v-card-actions> + <v-spacer /> + <v-btn + :disabled="dialogs.disableButton === true" + color="red-darken-1" + variant="elevated" + @click="closeApproveChangesMenu()" + > + Cancel + </v-btn> + <v-btn + color="blue-darken-1" + variant="elevated" + @click="confirmApproval()" + > + OK + </v-btn> + <v-spacer /> + <v-switch + v-model="dialogs.createReview" + class="pr-3" + color="green" + hide-details + label="Create Review" + /> + <v-switch + v-model="dialogs.recordHidden" + color="purple" + hide-details + label="Hide record" + /> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> + + <v-dialog v-model="dialogs.deleteRecord" max-width="900px"> + <v-card> + <v-card-title class="text-h5" style="white-space: normal"> + Are you sure you want to + <span style="color: red; padding-left: 5px; padding-right: 5px"> + DELETE + </span> + this record? + <ul style="list-style-type: none"> + <li> + {{ dialogs.recordName }} + </li> + </ul> + </v-card-title> + <v-card-actions> + <v-spacer /> + <v-btn + :disabled="dialogs.disableButton === true" + color="red-darken-1" + variant="elevated" + @click="closeDeleteMenu()" + > + Cancel + </v-btn> + <v-btn + :disabled=" + dialogs.disableDelButton === true || + dialogs.disableButton === true + " + color="blue-darken-1" + variant="elevated" + @click="confirmDelete()" + > + OK + </v-btn> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> </v-card> </template> <script> +import { mergeProps } from "vue"; import { mapActions, mapState } from "vuex"; import Icon from "@/components/Icon"; @@ -443,7 +432,7 @@

Source: components/Curators/CuratorRecordsAwaitingApprova watch: { approvalRequired: function () { this.approvalRequiredProcessed = JSON.parse( - JSON.stringify(this.approvalRequired) + JSON.stringify(this.approvalRequired), ); }, "dialogs.approveChanges"(val) { @@ -462,11 +451,12 @@

Source: components/Curators/CuratorRecordsAwaitingApprova let hiddenRecords = await client.executeQuery(getHiddenRecords); this.prepareApprovalRequired(data, listOfCurators, hiddenRecords); this.approvalRequiredProcessed = JSON.parse( - JSON.stringify(this.approvalRequired) + JSON.stringify(this.approvalRequired), ); this.loading = false; }, methods: { + mergeProps, ...mapActions("record", ["updateRecord"]), /** @@ -492,24 +482,28 @@

Source: components/Curators/CuratorRecordsAwaitingApprova if (rec.creator) { object.creator = rec.creator.username.substring(0, 10); object.idCreator = rec.creator.id; - } else { + } + else { object.creator = "unknown"; } if (rec.priority) { object.priority = "Priority"; - } else { + } + else { object.priority = ""; } const index = hiddenRecords.hiddenRecords.findIndex( - (element) => element.id === rec.id + (element) => element.id === rec.id, ); + /* v8 ignore next 3 */ if (index >= 0) { object.hidden = true; } if (rec.lastEditor) { object.lastEditor = rec.lastEditor.username; object.idLastEditor = rec.lastEditor.id; - } else { + } + else { object.lastEditor = "unknown"; } this.approvalRequired.push(object); @@ -518,10 +512,10 @@

Source: components/Curators/CuratorRecordsAwaitingApprova this.approvalRequired.sort(this.compareRecordDescUpdate); for (let i = 0; i < this.approvalRequired.length; i++) { this.approvalRequired[i].updatedAt = this.formatDate( - this.approvalRequired[i].updatedAt + this.approvalRequired[i].updatedAt, ); this.approvalRequired[i].createdAt = this.formatDate( - this.approvalRequired[i].createdAt + this.approvalRequired[i].createdAt, ); } let curators = listOfCurators.curatorList; @@ -535,7 +529,8 @@

Source: components/Curators/CuratorRecordsAwaitingApprova let role = item.role.name; if (role === "super_curator") { listSuper.push(object); - } else if (role === "curator") { + } + else if (role === "curator") { listCurator.push(object); } }); @@ -575,7 +570,8 @@

Source: components/Curators/CuratorRecordsAwaitingApprova let preparedRecord = {}; if (nameUser === "none") { preparedRecord.curator_id = null; - } else { + } + else { preparedRecord.curator_id = idUser; } let data = { @@ -589,11 +585,11 @@

Source: components/Curators/CuratorRecordsAwaitingApprova _module.error.recordID = idRecord; } const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === idRecord + (element) => element.id === idRecord, ); _module.approvalRequiredProcessed[index].curator = nameUser.substring( 0, - 6 + 6, ); }, @@ -628,9 +624,10 @@

Source: components/Curators/CuratorRecordsAwaitingApprova if (_module.recordUpdate.error) { _module.error.general = _module.recordUpdate.message; _module.error.recordID = _module.dialogs.recordID; - } else { + } + else { const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === _module.dialogs.recordID + (element) => element.id === _module.dialogs.recordID, ); _module.approvalRequiredProcessed.splice(index, 1); } @@ -643,14 +640,15 @@

Source: components/Curators/CuratorRecordsAwaitingApprova _module.dialogs.disableButton = true; let data = await restClient.deleteRecord( _module.dialogs.recordID, - this.user().credentials.token + this.user().credentials.token, ); if (data.error) { _module.error.general = "error deleting record"; _module.error.recordID = _module.dialogs.recordID; - } else { + } + else { const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === _module.dialogs.recordID + (element) => element.id === _module.dialogs.recordID, ); _module.approvalRequiredProcessed.splice(index, 1); } @@ -699,9 +697,14 @@

Source: components/Curators/CuratorRecordsAwaitingApprova overflow-y: auto; } -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + +.v-data-table :deep(thead th) { + opacity: 1; +} + .searchField { width: 100%; max-width: 400px; @@ -752,7 +755,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_DownLoadRecordsComponents_CuratorSummaryStatistics.vue.html b/documentation/html/components_Curators_DownLoadRecordsComponents_CuratorSummaryStatistics.vue.html index 4334adf3b1..9fbfd4371e 100644 --- a/documentation/html/components_Curators_DownLoadRecordsComponents_CuratorSummaryStatistics.vue.html +++ b/documentation/html/components_Curators_DownLoadRecordsComponents_CuratorSummaryStatistics.vue.html @@ -95,25 +95,16 @@

Source: components/Curators/DownLoadRecordsComponents/Cur <v-col cols12> <v-card class="mb-2"> <v-card-text> - <v-card-title - id="download-curator-summary" - class="green white--text" - > + <v-card-title id="download-curator-summary" class="bg-green text-white"> CURATOR SUMMARY STATISTICS - <v-btn - class="info ml-5" - :loading="loading" - > + <v-btn :loading="loading" class="bg-info ml-5"> <a v-if="downloadCuratorContent" :href="downloadCuratorContent" download="curatorSummaryStatistics.txt" > - <v-icon - color="white" - class="mr-1" - > fa fa-download </v-icon> - <span class="white--text">Obtain file</span> + <v-icon class="mr-1" color="white"> fas fa-download</v-icon> + <span class="text-white">Obtain file</span> </a> </v-btn> </v-card-title> @@ -126,7 +117,8 @@

Source: components/Curators/DownLoadRecordsComponents/Cur import { mapState } from "vuex"; import GraphClient from "@/lib/GraphClient/GraphClient"; -import getCuratorSummaryStatistics from "@/lib/GraphClient/queries/curators/getCuratorSummaryStatistics.json" +import getCuratorSummaryStatistics from "@/lib/GraphClient/queries/curators/getCuratorSummaryStatistics.json"; + const client = new GraphClient(); export default { @@ -150,16 +142,14 @@

Source: components/Curators/DownLoadRecordsComponents/Cur this.loading = false; }, methods: { - /** - * Method to download file having records having curator - * summary statistics + * Method to download file having records having curator summary statistics */ async obtainFileRecordsCuratorSummary(data) { let curatorSummary = data.curatorSummaryStatistics || []; this.downloadCuratorContent = - "data:text/json;charset=utf-8," + - encodeURIComponent(curatorSummary.join("\n")); + "data:text/json;charset=utf-8," + + encodeURIComponent(curatorSummary.join("\n")); }, }, }; @@ -209,7 +199,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordEditsByMonth.vue.html b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordEditsByMonth.vue.html index d95a497bc8..de6129d90b 100644 --- a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordEditsByMonth.vue.html +++ b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordEditsByMonth.vue.html @@ -95,25 +95,16 @@

Source: components/Curators/DownLoadRecordsComponents/Rec <v-col cols12> <v-card class="mb-2"> <v-card-text> - <v-card-title - id="download-curator-summary" - class="green white--text" - > + <v-card-title id="download-curator-summary" class="bg-green text-white"> RECORD EDITS BY MONTH - <v-btn - class="info ml-5" - :loading="loading" - > + <v-btn :loading="loading" class="bg-info ml-5"> <a v-if="downloadEditsByMonth" :href="downloadEditsByMonth" download="editsPerformedByMonth.txt" > - <v-icon - color="white" - class="mr-1" - > fa fa-download </v-icon> - <span class="white--text">Obtain file</span> + <v-icon class="mr-1" color="white"> fas fa-download</v-icon> + <span class="text-white">Obtain file</span> </a> </v-btn> </v-card-title> @@ -126,6 +117,7 @@

Source: components/Curators/DownLoadRecordsComponents/Rec import { mapState } from "vuex"; import RestClient from "@/lib/Client/RESTClient"; + const restClient = new RestClient(); export default { @@ -146,7 +138,6 @@

Source: components/Curators/DownLoadRecordsComponents/Rec this.loading = false; }, methods: { - /** * Method to download file having record edits by month */ @@ -154,11 +145,11 @@

Source: components/Curators/DownLoadRecordsComponents/Rec let data = await restClient.getEditByMonth(this.user().credentials.token); if (data) { let content = JSON.stringify(data) - .replace(/^\[(.+)\]$/, "$1") - .replace(/","/g, '"\r\n"') - .replace(/['"]+/g, ""); + .replace(/^\[(.+)\]$/, "$1") + .replace(/","/g, '"\r\n"') + .replace(/['"]+/g, ""); this.downloadEditsByMonth = - "data:text/json;charset=utf-8," + encodeURIComponent(content); + "data:text/json;charset=utf-8," + encodeURIComponent(content); } else { this.downloadEditsByMonth = "data:text/json;charset=utf-8," + ""; } @@ -211,7 +202,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsCreatedByMonth.vue.html b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsCreatedByMonth.vue.html index 2711d258c9..c246ae5875 100644 --- a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsCreatedByMonth.vue.html +++ b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsCreatedByMonth.vue.html @@ -95,25 +95,16 @@

Source: components/Curators/DownLoadRecordsComponents/Rec <v-col cols12> <v-card class="mb-2"> <v-card-text> - <v-card-title - id="download-curator-summary" - class="green white--text" - > + <v-card-title id="download-curator-summary" class="bg-green text-white"> RECORDS CREATED BY MONTH - <v-btn - class="info ml-5" - :loading="loading" - > + <v-btn :loading="loading" class="bg-info ml-5"> <a v-if="downloadRecordsByMonth" :href="downloadRecordsByMonth" download="recordsCreatedByMonth.txt" > - <v-icon - color="white" - class="mr-1" - > fa fa-download </v-icon> - <span class="white--text">Obtain file</span> + <v-icon class="mr-1" color="white"> fas fa-download</v-icon> + <span class="text-white">Obtain file</span> </a> </v-btn> </v-card-title> @@ -126,6 +117,7 @@

Source: components/Curators/DownLoadRecordsComponents/Rec import { mapState } from "vuex"; import RestClient from "@/lib/Client/RESTClient"; + const restClient = new RestClient(); export default { @@ -146,21 +138,20 @@

Source: components/Curators/DownLoadRecordsComponents/Rec this.loading = false; }, methods: { - /** * Method to download file having records created by month */ async obtainFileRecordCreatedByMonth() { let data = await restClient.getRecordCreatedByMonth( - this.user().credentials.token + this.user().credentials.token, ); if (data) { let content = JSON.stringify(data) - .replace(/^\[(.+)\]$/, "$1") - .replace(/","/g, '"\r\n"') - .replace(/['"]+/g, ""); + .replace(/^\[(.+)\]$/, "$1") + .replace(/","/g, '"\r\n"') + .replace(/['"]+/g, ""); this.downloadRecordsByMonth = - "data:text/json;charset=utf-8," + encodeURIComponent(content); + "data:text/json;charset=utf-8," + encodeURIComponent(content); } else { this.downloadRecordsByMonth = "data:text/json;charset=utf-8," + ""; } @@ -213,7 +204,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsNeedingReview.vue.html b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsNeedingReview.vue.html index 449fa0a63d..6e09ef28d9 100644 --- a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsNeedingReview.vue.html +++ b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsNeedingReview.vue.html @@ -95,25 +95,16 @@

Source: components/Curators/DownLoadRecordsComponents/Rec <v-col cols12> <v-card class="mb-2"> <v-card-text> - <v-card-title - id="download-review-needed" - class="green white--text" - > + <v-card-title id="download-review-needed" class="bg-green text-white"> RECORDS NEEDING REVIEW - <v-btn - class="info ml-5" - :loading="loading" - > + <v-btn :loading="loading" class="bg-info ml-5"> <a v-if="downloadReviewContent" :href="downloadReviewContent" download="recordsNeedingReview.txt" > - <v-icon - color="white" - class="mr-1" - > fa fa-download </v-icon> - <span class="white--text">Obtain file</span> + <v-icon class="mr-1" color="white"> fas fa-download</v-icon> + <span class="text-white">Obtain file</span> </a> </v-btn> </v-card-title> @@ -126,7 +117,8 @@

Source: components/Curators/DownLoadRecordsComponents/Rec import { mapState } from "vuex"; import GraphClient from "@/lib/GraphClient/GraphClient"; -import getNeedsReview from "@/lib/GraphClient/queries/curators/getNeedsReview.json" +import getNeedsReview from "@/lib/GraphClient/queries/curators/getNeedsReview.json"; + const client = new GraphClient(); export default { @@ -150,7 +142,6 @@

Source: components/Curators/DownLoadRecordsComponents/Rec this.loading = false; }, methods: { - /** * Method to download file having records which needs to be * reviewed @@ -158,7 +149,7 @@

Source: components/Curators/DownLoadRecordsComponents/Rec async obtainFileRecordsNeedTOBeReviewed(data) { let review = data.needsReview || []; this.downloadReviewContent = - "data:text/json;charset=utf-8," + encodeURIComponent(review.join("\n")); + "data:text/json;charset=utf-8," + encodeURIComponent(review.join("\n")); }, }, }; @@ -208,7 +199,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsWithoutDois.vue.html b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsWithoutDois.vue.html index 0904a2e541..86c3ef2a2b 100644 --- a/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsWithoutDois.vue.html +++ b/documentation/html/components_Curators_DownLoadRecordsComponents_RecordsWithoutDois.vue.html @@ -96,25 +96,16 @@

Source: components/Curators/DownLoadRecordsComponents/Rec <!-- Records without DOIs --> <v-card class="mb-2"> <v-card-text> - <v-card-title - id="text-curator-search-1" - class="green white--text" - > + <v-card-title id="text-curator-search-1" class="bg-green text-white"> RECORDS WITHOUT DOIS - <v-btn - class="info ml-5" - :loading="loading" - > + <v-btn :loading="loading" class="bg-info ml-5"> <a v-if="downloadContent" :href="downloadContent" download="recordWithoutDOIs.txt" > - <v-icon - color="white" - class="mr-1" - > fa fa-download </v-icon> - <span class="white--text">Obtain file</span> + <v-icon class="mr-1" color="white"> fas fa-download</v-icon> + <span class="text-white">Obtain file</span> </a> </v-btn> </v-card-title> @@ -148,21 +139,20 @@

Source: components/Curators/DownLoadRecordsComponents/Rec this.loading = false; }, methods: { - /** * Method to download file having records without DOI */ async obtainFileRecordsWODois() { let data = await restClient.getRecordsWoDOIs( - this.user().credentials.token + this.user().credentials.token, ); if (data) { let content = JSON.stringify(data) - .replace(/^\[(.+)\]$/, "$1") - .replace(/","/g, '"\r\n"') - .replace(/['"]+/g, ""); + .replace(/^\[(.+)\]$/, "$1") + .replace(/","/g, '"\r\n"') + .replace(/['"]+/g, ""); this.downloadContent = - "data:text/json;charset=utf-8," + encodeURIComponent(content); + "data:text/json;charset=utf-8," + encodeURIComponent(content); } else { this.downloadContent = "data:text/json;charset=utf-8," + ""; } @@ -215,7 +205,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_HiddenRecords.vue.html b/documentation/html/components_Curators_HiddenRecords.vue.html index 12cab90698..677d149934 100644 --- a/documentation/html/components_Curators_HiddenRecords.vue.html +++ b/documentation/html/components_Curators_HiddenRecords.vue.html @@ -97,43 +97,36 @@

Source: components/Curators/HiddenRecords.vue

<v-card-text v-if="hiddenRecords"> <v-card-title id="text-curator-search-2" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b> HIDDEN RECORDS </b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> <v-data-table - :loading="loading" + :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" :headers="headerItems" :items="hiddenRecords" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="props"> <tr> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > + <v-avatar v-if="props.item.type" class="mr-2" size="40"> <Icon - :item="props.item.type" :height="40" + :item="props.item.type" wrapper-class="" /> </v-avatar> @@ -171,7 +164,7 @@

Source: components/Curators/HiddenRecords.vue

import Icon from "@/components/Icon"; import GraphClient from "@/lib/GraphClient/GraphClient"; -import getHiddenRecords from "@/lib/GraphClient/queries/curators/getHiddenRecords.json" +import getHiddenRecords from "@/lib/GraphClient/queries/curators/getHiddenRecords.json"; import formatDate from "@/utils/generalUtils"; const client = new GraphClient(); @@ -182,15 +175,15 @@

Source: components/Curators/HiddenRecords.vue

Icon, }, mixins: [formatDate], - props:{ + props: { headerItems: { type: Array, - default: null + default: null, }, }, data: () => { return { - hiddenRecords:[], + hiddenRecords: [], searches: "", recordType: {}, loading: false, @@ -205,11 +198,10 @@

Source: components/Curators/HiddenRecords.vue

client.setHeader(this.user().credentials.token); //Fetching hidden records let hiddenRecords = await client.executeQuery(getHiddenRecords); - this.prepareHiddenRecords(hiddenRecords) + this.prepareHiddenRecords(hiddenRecords); this.loading = false; }, methods: { - /** * Method to fetch hidden records * @param dataCuration @@ -225,13 +217,15 @@

Source: components/Curators/HiddenRecords.vue

object.createdAt = this.formatDate(item.createdAt); if (item.curator) { object.curator = item.curator.username; - } else { + } + else { object.curator = "none"; } if (item.creator) { object.creator = item.creator.username; object.idCreator = item.creator.id; - } else { + } + else { object.creator = "unknown"; } this.hiddenRecords.push(object); @@ -242,14 +236,16 @@

Source: components/Curators/HiddenRecords.vue

</script> <style scoped> -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + .searchField { width: 100%; - max-width: 400px + max-width: 400px; } -</style> +</style> + @@ -294,7 +290,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_IncompleteRecords.vue.html b/documentation/html/components_Curators_IncompleteRecords.vue.html index e787174270..36500a2cc5 100644 --- a/documentation/html/components_Curators_IncompleteRecords.vue.html +++ b/documentation/html/components_Curators_IncompleteRecords.vue.html @@ -94,16 +94,10 @@

Source: components/Curators/IncompleteRecords.vue

class="sunlight-highlight-javascript linenums"><template> <v-col cols12> <div> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.deleteRecord" - max-width="700px" - > + <v-layout justify-center row> + <v-dialog v-model="dialogs.deleteRecord" max-width="700px"> <v-card> - <v-card-title class="headline"> + <v-card-title class="text-h5"> Are you sure you want to <span style="color: red; padding-left: 5px; padding-right: 5px"> DELETE @@ -114,8 +108,8 @@

Source: components/Curators/IncompleteRecords.vue

<v-spacer /> <v-btn :disabled="dialogs.disableButton === true" - color="blue darken-1" - text + color="blue-darken-1" + variant="text" @click="closeDeleteMenu()" > Cancel @@ -123,10 +117,10 @@

Source: components/Curators/IncompleteRecords.vue

<v-btn :disabled=" dialogs.disableDelButton === true || - dialogs.disableButton === true + dialogs.disableButton === true " - color="blue darken-1" - text + color="blue-darken-1" + variant="text" @click="confirmDelete()" > OK @@ -141,43 +135,36 @@

Source: components/Curators/IncompleteRecords.vue

<v-card-text v-if="incompleteRecords"> <v-card-title id="text-curator-search-2" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b> INCOMPLETE RECORDS </b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> <v-data-table - :loading="loading" + :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" :headers="headerItems" :items="incompleteRecords" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="props"> <tr> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > + <v-avatar v-if="props.item.type" class="mr-2" size="40"> <Icon - :item="props.item.type" :height="40" + :item="props.item.type" wrapper-class="" /> </v-avatar> @@ -190,20 +177,19 @@

Source: components/Curators/IncompleteRecords.vue

{{ props.item.createdAt }} </td> <td> - {{ props.item.required }} + {{ props.item.required.replace(/_/g, " ") }} </td> <td> - {{ props.item.recommended }} + {{ props.item.recommended.replace(/_/g, " ") }} </td> <td> - {{ props.item.optional }} + {{ props.item.optional.replace(/_/g, " ") }} </td> <td> <v-icon color="red" - dark - right - small + end + size="small" @click="deleteRecordMenu(props.item.id)" > fas fa-trash @@ -223,7 +209,7 @@

Source: components/Curators/IncompleteRecords.vue

import Icon from "@/components/Icon"; import RestClient from "@/lib/Client/RESTClient"; import GraphClient from "@/lib/GraphClient/GraphClient"; -import getIncompleteRecords from "@/lib/GraphClient/queries/curators/getIncompleteRecords.json" +import getIncompleteRecords from "@/lib/GraphClient/queries/curators/getIncompleteRecords.json"; import formatDateIso from "@/utils/generalUtils"; const client = new GraphClient(); @@ -235,15 +221,15 @@

Source: components/Curators/IncompleteRecords.vue

Icon, }, mixins: [formatDateIso], - props:{ + props: { headerItems: { type: Array, - default: null + default: null, }, }, data: () => { return { - incompleteRecords:[], + incompleteRecords: [], searches: "", recordType: {}, loading: false, @@ -264,11 +250,10 @@

Source: components/Curators/IncompleteRecords.vue

client.setHeader(this.user().credentials.token); //Fetching incomplete records let records = await client.executeQuery(getIncompleteRecords); - this.prepareIncompleteRecords(records) + this.prepareIncompleteRecords(records); this.loading = false; }, methods: { - /** * Method to fetch incomplete records * @param dataCuration @@ -277,24 +262,25 @@

Source: components/Curators/IncompleteRecords.vue

let records = dataCuration.incompleteRecords; records.forEach((item) => { let recommended = []; - item.incomplete.recommended.forEach(rec => { - recommended.push(rec.field) + item.incomplete.recommended.forEach((rec) => { + recommended.push(rec.field); }); let required = []; - item.incomplete.required.forEach(req => { - required.push(req.field) + item.incomplete.required.forEach((req) => { + required.push(req.field); }); let optional = []; - item.incomplete.optional.forEach(req => { - optional.push(req.field) + item.incomplete.optional.forEach((req) => { + /* v8 ignore next */ + optional.push(req.field); }); let object = { recordNameID: `${item.name} (${item.id})`, type: item.type, id: item.id, - recommended: recommended.sort().join(', '), - required: required.sort().join(', '), - optional: optional.sort().join(', ') + recommended: recommended.sort().join(", "), + required: required.sort().join(", "), + optional: optional.sort().join(", "), }; object.createdAt = this.formatDateIso(item.createdAt); this.incompleteRecords.push(object); @@ -306,14 +292,15 @@

Source: components/Curators/IncompleteRecords.vue

_module.dialogs.disableDelButton = true; let data = await restClient.deleteRecord( _module.dialogs.recordID, - this.user().credentials.token + this.user().credentials.token, ); if (data.error) { _module.error.general = "error deleting record"; _module.error.recordID = _module.dialogs.recordID; - } else { + } + else { const index = _module.incompleteRecords.findIndex( - (element) => element.id === _module.dialogs.recordID + (element) => element.id === _module.dialogs.recordID, ); _module.incompleteRecords.splice(index, 1); } @@ -340,14 +327,16 @@

Source: components/Curators/IncompleteRecords.vue

</script> <style scoped> -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + .searchField { width: 100%; - max-width: 400px + max-width: 400px; } -</style> +</style> + @@ -392,7 +381,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_MaintenanceRequests.vue.html b/documentation/html/components_Curators_MaintenanceRequests.vue.html index 1f6123e06c..6d7fab7f78 100644 --- a/documentation/html/components_Curators_MaintenanceRequests.vue.html +++ b/documentation/html/components_Curators_MaintenanceRequests.vue.html @@ -97,19 +97,19 @@

Source: components/Curators/MaintenanceRequests.vue

<v-card-text v-if="maintenanceRequestsProcessed"> <v-card-title id="text-curator-search-5" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b> OWNERSHIP REQUESTS </b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> <v-card-text v-if="error.general"> @@ -119,31 +119,23 @@

Source: components/Curators/MaintenanceRequests.vue

</v-alert> </v-card-text> <v-data-table - :loading="loading" + :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" :headers="headerItems" :items="maintenanceRequestsProcessed" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" - sort-by="" > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="props"> <tr> <td> {{ props.item.createdAt }} </td> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > + <v-avatar v-if="props.item.type" class="mr-2" size="40"> <Icon - :item="props.item.type" :height="40" + :item="props.item.type" wrapper-class="" /> </v-avatar> @@ -158,80 +150,99 @@

Source: components/Curators/MaintenanceRequests.vue

</a> </td> <td> - <v-edit-dialog - :return-value.sync="props.item.processingNotes" - large - @save=" - saveProcessingNotes( - props.item.id, - props.item.processingNotes - ) - " + <v-menu + :close-on-content-click="false" + location="bottom" + min-width="400" > - {{ props.item.processingNotes }} - <template #input> - <div class="testDialog"> - <div class="mt-4 title"> + <template #activator="{ props: menuProps }"> + <span + style="cursor: pointer; border-bottom: 1px dashed grey" + v-bind="menuProps" + > + {{ props.item.processingNotes || "Click to edit..." }} + </span> + </template> + <template #default="{ isActive }"> + <v-card class="pa-2"> + <v-card-title class="text-h6"> Update Processing Notes - </div> - <v-textarea - v-model="props.item.processingNotes" - width="1200px" - label="Edit (not long words)" - filled - /> - </div> + </v-card-title> + + <v-card-text class="pt-2"> + <v-textarea + v-model="props.item.processingNotes" + hide-details + label="Edit (not long words)" + variant="filled" + /> + </v-card-text> + + <v-card-actions> + <v-spacer /> + <v-btn + color="primary" + variant="text" + @click=" + saveProcessingNotes( + props.item.id, + props.item.processingNotes, + ); + isActive.value = false; + " + > + Save + </v-btn> + </v-card-actions> + </v-card> </template> - </v-edit-dialog> + </v-menu> </td> <td> - <v-icon - color="blue" - dark - left - @click.stop=" - assignMaintenanceOwner( - props.item.recordName, - props.item.id, - props.item.userName, - props.item.requestID - ) - " - > - far fa-check-circle - </v-icon> - {{ props.item.actions }} - <v-icon - color="red" - dark - right - @click=" - rejectMaintenanceOwner( - props.item.recordName, - props.item.id, - props.item.userName, - props.item.requestID - ) - " - > - fas fa-ban - </v-icon> + <div class="d-flex"> + <v-icon + color="blue" + start + @click.stop=" + assignMaintenanceOwner( + props.item.recordName, + props.item.id, + props.item.userName, + props.item.requestID, + ) + " + > + far fa-check-circle + </v-icon> + {{ props.item.actions }} + <v-icon + color="red" + end + @click=" + rejectMaintenanceOwner( + props.item.recordName, + props.item.id, + props.item.userName, + props.item.requestID, + ) + " + > + fas fa-ban + </v-icon> + </div> </td> </tr> </template> </v-data-table> </v-card-text> - <v-layout - row - justify-center - > + <v-layout justify-center row> <v-dialog v-model="dialogs.confirmAssignment" max-width="700px" persistent > <v-card> - <v-card-title class="headline"> + <v-card-title class="text-h5"> Are you sure you want to <span style="color: blue; padding-left: 5px; padding-right: 5px"> ACCEPT @@ -239,15 +250,11 @@

Source: components/Curators/MaintenanceRequests.vue

this ownership? <ul style="list-style-type: none"> <li> - <span style="color: gray"> - Record: - </span> + <span style="color: gray"> Record: </span> {{ dialogs.recordName }} </li> <li> - <span style="color: gray"> - User: - </span> + <span style="color: gray"> User: </span> {{ dialogs.userName }} </li> </ul> @@ -256,18 +263,18 @@

Source: components/Curators/MaintenanceRequests.vue

<v-spacer /> <v-btn :disabled="dialogs.disableDelButton === true" - color="blue darken-1" - text + color="red-darken-1" persistent + variant="elevated" @click="closeMaintenanceAssign()" > Cancel </v-btn> <v-btn :disabled="dialogs.disableDelButton === true" - color="blue darken-1" - text + color="blue-darken-1" persistent + variant="elevated" @click="assignMaintenanceOwnConfirm('approved')" > OK @@ -277,17 +284,14 @@

Source: components/Curators/MaintenanceRequests.vue

</v-card> </v-dialog> </v-layout> - <v-layout - row - justify-center - > + <v-layout justify-center row> <v-dialog v-model="dialogs.rejectAssignment" max-width="700px" persistent > <v-card> - <v-card-title class="headline"> + <v-card-title class="text-h5"> Are you sure you want to <span style="color: red; padding-left: 5px; padding-right: 5px"> REJECT @@ -295,15 +299,11 @@

Source: components/Curators/MaintenanceRequests.vue

this ownership? <ul style="list-style-type: none"> <li> - <span style="color: gray"> - Record: - </span> + <span style="color: gray"> Record: </span> {{ dialogs.recordName }} </li> <li> - <span style="color: gray"> - User: - </span> + <span style="color: gray"> User: </span> {{ dialogs.userName }} </li> </ul> @@ -312,18 +312,18 @@

Source: components/Curators/MaintenanceRequests.vue

<v-spacer /> <v-btn :disabled="dialogs.disableDelButton === true" - color="blue darken-1" - text + color="blue-darken-1" persistent + variant="text" @click="closeMaintenanceReject()" > Cancel </v-btn> <v-btn :disabled="dialogs.disableDelButton === true" - color="blue darken-1" - text + color="blue-darken-1" persistent + variant="text" @click="assignMaintenanceOwnConfirm('rejected')" > OK @@ -355,10 +355,10 @@

Source: components/Curators/MaintenanceRequests.vue

Icon, }, mixins: [formatDate], - props:{ + props: { headerItems: { type: Array, - default: null + default: null, }, }, data: () => { @@ -391,7 +391,7 @@

Source: components/Curators/MaintenanceRequests.vue

watch: { maintenanceRequests: function () { this.maintenanceRequestsProcessed = JSON.parse( - JSON.stringify(this.maintenanceRequests) + JSON.stringify(this.maintenanceRequests), ); }, "dialogs.confirmAssignment"(val) { @@ -408,7 +408,7 @@

Source: components/Curators/MaintenanceRequests.vue

let data = await client.executeQuery(getPendingMaintenanceRequests); this.prepareMaintenanceRequests(data); this.maintenanceRequestsProcessed = JSON.parse( - JSON.stringify(this.maintenanceRequests) + JSON.stringify(this.maintenanceRequests), ); this.loading = false; }, @@ -437,7 +437,7 @@

Source: components/Curators/MaintenanceRequests.vue

this.maintenanceRequests.sort(this.compareRecordDesc); for (let i = 0; i < this.maintenanceRequests.length; i++) { this.maintenanceRequests[i].createdAt = this.formatDate( - this.maintenanceRequests[i].createdAt + this.maintenanceRequests[i].createdAt, ); } }, @@ -485,38 +485,42 @@

Source: components/Curators/MaintenanceRequests.vue

general: null, }; let data = await restClient.updateStatusMaintenanceRequest( - _module.dialogs.requestId, - newStatus, - this.user().credentials.token + _module.dialogs.requestId, + newStatus, + this.user().credentials.token, ); + /* v8 ignore start */ if (!data.error) { const index = _module.maintenanceRequestsProcessed.findIndex( - (element) => element.requestID === _module.dialogs.requestId + (element) => element.requestID === _module.dialogs.requestId, ); _module.maintenanceRequestsProcessed.splice(index, 1); if ( - _module.approvalRequired.findIndex( - (element) => element.id === _module.dialogs.recordID - ) < 0 + _module.approvalRequired.findIndex( + (element) => element.id === _module.dialogs.recordID, + ) < 0 ) { if ( - _module.maintenanceRequestsProcessed.findIndex( - (element) => element.id === _module.dialogs.recordID - ) < 0 + _module.maintenanceRequestsProcessed.findIndex( + (element) => element.id === _module.dialogs.recordID, + ) < 0 ) { await _module.saveProcessingNotes(_module.dialogs.recordID, null); } } - } else { + } + else { _module.error.general = "error assigning " + newStatus; _module.error.recordID = _module.dialogs.recordID; } if (newStatus === "approved") { _module.dialogs.confirmAssignment = false; - } else { + } + else { _module.dialogs.rejectAssignment = false; } }, + /* v8 ignore end */ rejectMaintenanceOwner(recordName, recordID, userNameID, requestID) { const _module = this; _module.dialogs.disableDelButton = false; @@ -533,7 +537,8 @@

Source: components/Curators/MaintenanceRequests.vue

compareRecordDesc(a, b) { if (a.createdAt > b.createdAt) { return -1; - } else { + } + else { return 1; } }, @@ -543,20 +548,22 @@

Source: components/Curators/MaintenanceRequests.vue

<style scoped> #text-curator-search-5 -div.theme--light.v-input:not(.v-input--is-disabled) -input { + div.theme--light.v-input:not(.v-input--is-disabled) + input { color: #fff; } + .testDialog { width: 600px !important; } -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + .searchField { width: 100%; - max-width: 400px + max-width: 400px; } </style> @@ -604,7 +611,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_RecentCuratorCreation.vue.html b/documentation/html/components_Curators_RecentCuratorCreation.vue.html index ab0680b791..8df5df3156 100644 --- a/documentation/html/components_Curators_RecentCuratorCreation.vue.html +++ b/documentation/html/components_Curators_RecentCuratorCreation.vue.html @@ -97,43 +97,36 @@

Source: components/Curators/RecentCuratorCreation.vue

<v-card-title id="text-curator-search-3" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b> RECORDS CREATED BY CURATORS IN THE PAST WEEK </b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> <v-data-table - :loading="loading" + :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" :headers="headerItems" :items="recordsCreatedCuratorsLastWeek" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="props"> <tr> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > + <v-avatar v-if="props.item.type" :height="40" class="mr-2"> <Icon - :item="props.item.type" :height="40" + :item="props.item.type" wrapper-class="" /> </v-avatar> @@ -168,7 +161,7 @@

Source: components/Curators/RecentCuratorCreation.vue

Source: components/Curators/RecentCuratorCreation.vue { return { - recordsCreatedCuratorsLastWeek:[], + recordsCreatedCuratorsLastWeek: [], searches: "", recordType: {}, loading: false, @@ -201,12 +194,16 @@

Source: components/Curators/RecentCuratorCreation.vue

Source: components/Curators/RecentCuratorCreation.vueSource: components/Curators/RecentCuratorCreation.vue <style scoped> -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + .searchField { width: 100%; - max-width: 400px + max-width: 400px; } </style> @@ -287,7 +286,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_SystemMessages.vue.html b/documentation/html/components_Curators_SystemMessages.vue.html index bd6ba5ba9e..b35ac0242b 100644 --- a/documentation/html/components_Curators_SystemMessages.vue.html +++ b/documentation/html/components_Curators_SystemMessages.vue.html @@ -93,7 +93,7 @@

Source: components/Curators/SystemMessages.vue

<template>
   <div>
-    <v-col cols12>
+    <v-col cols="12">
       <v-card
         v-if="user().role === 'super_curator' || user().role === 'developer'"
         class="mb-2"
@@ -101,77 +101,85 @@ 

Source: components/Curators/SystemMessages.vue

<v-card-text v-if="systemMessages"> <v-card-title id="system-messages" - class="green white--text" + class="bg-green text-white d-flex align-center" > SYSTEM MESSAGES - <v-btn - class="info ml-5" - @click.stop="showAddMessage()" - > - <v-icon - color="white" - class="mr-1" - > - fa fa-plus - </v-icon> - <span class="white--text">Add message</span> + <v-btn class="bg-info ml-5" @click.stop="showAddMessage()"> + <v-icon class="mr-1" color="white" icon="fas fa-plus" /> + <span class="text-white">Add message</span> </v-btn> <v-spacer /> </v-card-title> + <v-data-table - :loading="loading" :headers="headerItems" :items="systemMessages" - :footer-props="{ 'items-per-page-options': [5, 10, 20, 25, 30] }" + :items-per-page-options="[5, 10, 20, 25, 30]" + :loading="loading" > - <template - v-if="systemMessages" - #item="props" - > + <template v-if="systemMessages" #item="{ item }"> <tr> <td> - {{ props.item.id }} + {{ item.id }} </td> <td> - <v-edit-dialog - :return-value.sync="props.item.message" - large - @save=" - saveEditedMessage(props.item.id, props.item.message) - " + <v-menu + :close-on-content-click="false" + location="bottom" + min-width="400" > - {{ props.item.message }} - <template #input> - <div class="dialogMessageEdit"> - <div class="mt-4 title"> + <template #activator="{ props: menuProps }"> + <span + style="cursor: pointer; border-bottom: 1px dashed grey" + v-bind="menuProps" + > + {{ item.message || "Click to edit..." }} + </span> + </template> + <template #default="{ isActive }"> + <v-card class="pa-2"> + <v-card-title class="mt-2 text-h6"> Update Message - </div> - <v-textarea - v-model="props.item.message" - width="1200px" - label="Edit away!" - filled - /> - </div> + </v-card-title> + <v-card-text class="pt-2"> + <v-textarea + v-model="item.message" + hide-details + label="Edit away!" + variant="filled" + /> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + color="primary" + variant="text" + @click=" + saveEditedMessage(item.id, item.message); + isActive.value = false; + " + > + Save + </v-btn> + </v-card-actions> + </v-card> </template> - </v-edit-dialog> + </v-menu> </td> <td> - {{ props.item.created_at }} + {{ item.created_at }} </td> <td> - {{ props.item.updated_at }} + {{ item.updated_at }} </td> <td> <v-icon color="red" - dark - right - small - @click="deleteMessage(props.item.id)" - > - fas fa-trash - </v-icon> + end + icon="fas fa-trash" + size="small" + @click="deleteMessage(item.id)" + /> </td> </tr> </template> @@ -179,93 +187,75 @@

Source: components/Curators/SystemMessages.vue

</v-card-text> </v-card> </v-col> - <!-- this shouldn't appear as an unauthorised user shouldn't be here --> + <v-row> - <!-- dialogs --> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.addMessage" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Add new message - </v-card-title> - <v-card-text> - <v-textarea - v-model="dialogs.newMessage" - name="new-message-field" - label="New message" - placeholder="Type a message here..." - regular - clearable - /> - </v-card-text> - <v-card-actions> - <v-spacer /> - <v-btn - color="blue darken-1" - text - @click="closeAddMessageMenu()" - > - Cancel - </v-btn> - <v-btn - color="blue darken-1" - text - :disabled="!dialogs.newMessage" - @click="addMessage()" - > - OK - </v-btn> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.deleteMessage" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Are you sure you want to - <span style="color: red; padding-left: 5px; padding-right: 5px"> - DELETE - </span> - this message? - <ul style="list-style-type: none"> - <li>ID: {{ dialogs.messageId }}</li> - </ul> - </v-card-title> - <v-card-actions> - <v-spacer /> - <v-btn - color="blue darken-1" - text - @click="closeDeleteMessageMenu()" - > - Cancel - </v-btn> - <v-btn - color="blue darken-1" - text - @click="confirmDeleteMessage()" - > - OK - </v-btn> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> + <v-dialog v-model="dialogs.addMessage" max-width="700px"> + <v-card> + <v-card-title class="text-h5"> Add new message</v-card-title> + <v-card-text> + <v-textarea + v-model="dialogs.newMessage" + clearable + label="New message" + name="new-message-field" + placeholder="Type a message here..." + regular + /> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + color="red-darken-1" + variant="elevated" + @click="closeAddMessageMenu()" + > + Cancel + </v-btn> + <v-btn + :disabled="!dialogs.newMessage" + color="blue-darken-1" + variant="elevated" + @click="addMessage()" + > + OK + </v-btn> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> + + <v-dialog v-model="dialogs.deleteMessage" max-width="700px"> + <v-card> + <v-card-title class="text-h5"> + Are you sure you want to + <span style="color: red; padding-left: 5px; padding-right: 5px"> + DELETE + </span> + this message? + <ul style="list-style-type: none"> + <li>ID: {{ dialogs.messageId }}</li> + </ul> + </v-card-title> + <v-card-actions> + <v-spacer /> + <v-btn + color="red-darken-1" + variant="elevated" + @click="closeDeleteMessageMenu()" + > + Cancel + </v-btn> + <v-btn + color="blue-darken-1" + variant="elevated" + @click="confirmDeleteMessage()" + > + OK + </v-btn> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> </v-row> </div> </template> @@ -275,7 +265,7 @@

Source: components/Curators/SystemMessages.vue

import RestClient from "@/lib/Client/RESTClient"; import GraphClient from "@/lib/GraphClient/GraphClient"; -import getMessages from "@/lib/GraphClient/queries/getMessages.json" +import getMessages from "@/lib/GraphClient/queries/getMessages.json"; import store from "@/store"; import formatDate from "@/utils/generalUtils"; @@ -285,15 +275,15 @@

Source: components/Curators/SystemMessages.vue

export default { name: "SystemMessages", mixins: [formatDate], - props:{ + props: { headerItems: { type: Array, - default: null + default: null, }, }, data: () => { return { - systemMessages:[], + systemMessages: [], loading: false, dialogs: { id: null, @@ -317,17 +307,19 @@

Source: components/Curators/SystemMessages.vue

client.setHeader(this.user().credentials.token); //Fetching hidden records let messages = await client.executeQuery(getMessages); - this.prepareSystemMessages(messages) + this.prepareSystemMessages(messages); this.loading = false; }, methods: { - /** * Method to fetch messages from system * @param dataCuration */ prepareSystemMessages(dataCuration) { - if(Array.isArray(dataCuration.messages) && dataCuration.messages.length) { + if ( + Array.isArray(dataCuration.messages) && + dataCuration.messages.length + ) { dataCuration.messages.forEach((item) => { this.systemMessages.push({ id: item.id, @@ -351,12 +343,13 @@

Source: components/Curators/SystemMessages.vue

message: message, }; let response = await restClient.updateMessage( - data, - this.user().credentials.token + data, + this.user().credentials.token, ); if (response.error) { _module.error.general = response.error; - } else { + } + else { _module.systemMessages.forEach(function (m) { if (m.id === id) { m.message = message; @@ -383,12 +376,13 @@

Source: components/Curators/SystemMessages.vue

message: _module.dialogs.newMessage, }; let response = await restClient.createMessage( - data, - this.user().credentials.token + data, + this.user().credentials.token, ); if (response.error) { _module.error.general = response.error; - } else { + } + else { _module.systemMessages.push({ id: response.id, message: response.message, @@ -410,12 +404,13 @@

Source: components/Curators/SystemMessages.vue

async confirmDeleteMessage() { const _module = this; let response = await restClient.deleteMessage( - _module.dialogs.messageId, - this.user().credentials.token + _module.dialogs.messageId, + this.user().credentials.token, ); if (response.error) { _module.error.general = response.error; - } else { + } + else { let filtered = _module.systemMessages.filter(function (f) { return f.id !== _module.dialogs.messageId; }); @@ -430,7 +425,7 @@

Source: components/Curators/SystemMessages.vue

</script> <style scoped> -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } </style> @@ -479,7 +474,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Curators_UserRecordsAwaitingApproval.vue.html b/documentation/html/components_Curators_UserRecordsAwaitingApproval.vue.html index 2d92e673b5..2d767a82ff 100644 --- a/documentation/html/components_Curators_UserRecordsAwaitingApproval.vue.html +++ b/documentation/html/components_Curators_UserRecordsAwaitingApproval.vue.html @@ -96,182 +96,184 @@

Source: components/Curators/UserRecordsAwaitingApproval.v <v-card-text v-if="approvalRequiredProcessed"> <v-card-title id="text-curator-search-0" - class="green white--text" + class="bg-green text-white d-flex align-center" > <b> USER EDITS AWAITING APPROVAL </b> <v-spacer /> <v-text-field v-model="searches" - label="Search" - color="white" - single-line - hide-details - solo class="searchField" clearable + color="white" + hide-details + label="Search" + single-line + variant="solo" /> </v-card-title> + <v-card-text v-if="error.general"> <v-alert type="error"> Problem saving/updating record with id: {{ error.recordID }} {{ error.general }} </v-alert> </v-card-text> + <v-data-table - :loading="loading" :headers="headerItems" :items="approvalRequiredProcessed" + :items-per-page-options="[10, 20, 30, 40, 50]" + :loading="loading" :search="searches" - :footer-props="{ 'items-per-page-options': [10, 20, 30, 40, 50] }" - sort-by="" + return-object > - <template - v-if="recordType" - #item="props" - > + <template v-if="recordType" #item="{ item }"> <tr> <td> - {{ props.item.updatedAt }} + {{ item.updatedAt }} </td> <td> <div class="priorityTag"> - {{ props.item.priority }} + {{ item.priority }} </div> </td> <td> <v-menu> - <template #activator="{ on: menu, attrs }"> - <v-tooltip bottom> - <template #activator="{ on: tooltip }"> - <v-icon - class="clickable" - small + <template #activator="{ props: menuProps }"> + <v-tooltip location="bottom"> + <template #activator="{ props: tooltipProps }"> + <span + class="clickable text-decoration-underline" color="nordnetBlue" - v-bind="attrs" - v-on="{ ...tooltip, ...menu }" + size="small" + v-bind="mergeProps(menuProps, tooltipProps)" > - {{ props.item.curator }} - </v-icon> + {{ item.curator || "Assign Curator" }} + </span> </template> <span>Assign a new curator</span> </v-tooltip> </template> <v-list> <v-list-item - v-for="(item, index) in curatorList" + v-for="(curator, index) in curatorList" :key="index" class="thelistCurators" @click=" - assignCurator(props.item.id, item.id, item.userName) + assignCurator(item.id, curator.id, curator.userName) " > - <v-list-item-title>{{ item.userName }}</v-list-item-title> + <v-list-item-title> + {{ curator.userName }} + </v-list-item-title> </v-list-item> </v-list> </v-menu> </td> <td> <div class="d-flex align-center"> - <v-avatar - v-if="props.item.type" - class="mr-2" - :height="40" - > - <Icon - :item="props.item.type" - :height="40" - wrapper-class="" - /> + <v-avatar v-if="item.type" class="mr-2" size="40"> + <Icon :height="40" :item="item.type" wrapper-class="" /> </v-avatar> - <a :href="'/' + props.item.id"> - {{ props.item.recordName }} + <a :href="'/' + item.id"> + {{ item.recordName }} </a> </div> </td> <td> - <div v-if="props.item.lastEditor === 'unknown'"> - {{ props.item.lastEditor }} + <div v-if="item.lastEditor === 'unknown'"> + {{ item.lastEditor }} </div> <div v-else> - <a :href="'/users/' + props.item.idLastEditor"> - {{ props.item.lastEditor }} + <a :href="'/users/' + item.idLastEditor"> + {{ item.lastEditor }} </a> </div> </td> <td> - <v-edit-dialog - :return-value.sync="props.item.processingNotes" - large - @save=" - saveProcessingNotes(props.item.id, props.item.processingNotes) - " + <v-menu + :close-on-content-click="false" + location="bottom" + min-width="400" > - {{ props.item.processingNotes }} - <template #input> - <div class="dialogProcNotesEdit"> - <div class="mt-4 title"> + <template #activator="{ props: menuProps }"> + <span style="cursor: pointer" v-bind="menuProps"> + {{ item.processingNotes || "Click to edit..." }} + </span> + </template> + <template #default="{ isActive }"> + <v-card class="pa-2"> + <v-card-title class="mt-2 text-h6"> Update Processing Notes - </div> - <v-textarea - v-model="props.item.processingNotes" - width="1200px" - label="Edit (not long words)" - filled - /> - </div> + </v-card-title> + <v-card-text class="pt-2"> + <v-textarea + v-model="item.processingNotes" + hide-details + label="Edit (not long words)" + variant="filled" + /> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + color="primary" + variant="text" + @click=" + saveProcessingNotes(item.id, item.processingNotes); + isActive.value = false; + " + > + Save + </v-btn> + </v-card-actions> + </v-card> </template> - </v-edit-dialog> + </v-menu> </td> <td> - <v-icon - color="blue" - dark - left - @click.stop=" - approveChangesMenu( - props.item.recordName, - props.item.id, - props.item.hidden - ) - " - > - far fa-check-circle - </v-icon> - {{ props.item.actions }} - <v-icon - color="red" - dark - right - small - @click="deleteRecordMenu(props.item.recordName, props.item.id)" - > - fas fa-trash - </v-icon> - <v-tooltip bottom> - <template #activator="{ on, attrs }"> - <span - v-bind="attrs" - v-on="on" - > - <a - :href="'/' + props.item.id + '/edit'" - style="padding-left: 12px" - > - Edit - </a> - </span> - </template> - <span>If edits are saved, record is approved.</span> - </v-tooltip> + <div class="d-flex"> + <v-icon + color="blue" + start + @click.stop=" + approveChangesMenu(item.recordName, item.id, item.hidden) + " + > + fas fa-check-circle + </v-icon> + {{ item.actions }} + <v-icon + color="red" + end + size="small" + @click="deleteRecordMenu(item.recordName, item.id)" + > + fas fa-trash + </v-icon> + <v-tooltip location="bottom"> + <template #activator="{ props }"> + <span v-bind="props"> + <a + :href="'/' + item.id + '/edit'" + style="padding-left: 12px" + > + Edit + </a> + </span> + </template> + <span>If edits are saved, record is approved.</span> + </v-tooltip> + </div> </td> <td> - {{ props.item.createdAt }}, - <div v-if="props.item.creator === 'unknown'"> - {{ props.item.creator }} + {{ item.createdAt }}, + <div v-if="item.creator === 'unknown'"> + {{ item.creator }} </div> <div v-else> - <a :href="'/users/' + props.item.idCreator"> - {{ props.item.creator }} + <a :href="'/users/' + item.idCreator"> + {{ item.creator }} </a> </div> </td> @@ -279,112 +281,101 @@

Source: components/Curators/UserRecordsAwaitingApproval.v </template> </v-data-table> </v-card-text> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.approveChanges" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Are you sure you want to - <span style="color: blue; padding-left: 5px; padding-right: 1px"> - ACCEPT/APPROVE CHANGES - </span> - record? - <ul style="list-style-type: none"> - <li> - {{ dialogs.recordName }} - </li> - </ul> - </v-card-title> - <v-card-actions> - <v-spacer /> - <v-btn - :disabled="dialogs.disableButton === true" - color="blue darken-1" - text - @click="closeApproveChangesMenu()" - > - Cancel - </v-btn> - <v-btn - color="blue darken-1" - text - @click="confirmApproval()" - > - OK - </v-btn> - <v-spacer /> - <v-switch - v-model="dialogs.createReview" - color="green" - label="Create Review" - class="pr-3" - /> - <v-switch - v-model="dialogs.recordHidden" - color="purple" - label="Hide record" - /> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> - <v-layout - row - justify-center - > - <v-dialog - v-model="dialogs.deleteRecord" - max-width="700px" - > - <v-card> - <v-card-title class="headline"> - Are you sure you want to - <span style="color: red; padding-left: 5px; padding-right: 5px"> - DELETE - </span> - this record? - <ul style="list-style-type: none"> - <li> - {{ dialogs.recordName }} - </li> - </ul> - </v-card-title> - <v-card-actions> - <v-spacer /> - <v-btn - :disabled="dialogs.disableButton === true" - color="blue darken-1" - text - @click="closeDeleteMenu()" - > - Cancel - </v-btn> - <v-btn - :disabled=" - dialogs.disableDelButton === true || - dialogs.disableButton === true - " - color="blue darken-1" - text - @click="confirmDelete()" - > - OK - </v-btn> - <v-spacer /> - </v-card-actions> - </v-card> - </v-dialog> - </v-layout> + + <v-dialog v-model="dialogs.approveChanges" max-width="900px"> + <v-card> + <v-card-title class="text-h5" style="white-space: normal"> + Are you sure you want to + <span style="color: blue; padding-left: 5px; padding-right: 1px"> + ACCEPT/APPROVE CHANGES + </span> + record? + <ul style="list-style-type: none"> + <li> + {{ dialogs.recordName }} + </li> + </ul> + </v-card-title> + <v-card-actions> + <v-spacer /> + <v-btn + :disabled="dialogs.disableButton === true" + color="red-darken-1" + variant="elevated" + @click="closeApproveChangesMenu()" + > + Cancel + </v-btn> + <v-btn + color="blue-darken-1" + variant="elevated" + @click="confirmApproval()" + > + OK + </v-btn> + <v-spacer /> + <v-switch + v-model="dialogs.createReview" + class="pr-3" + color="green" + hide-details + label="Create Review" + /> + <v-switch + v-model="dialogs.recordHidden" + color="purple" + hide-details + label="Hide record" + /> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> + + <v-dialog v-model="dialogs.deleteRecord" max-width="900px"> + <v-card> + <v-card-title class="text-h5" style="white-space: normal"> + Are you sure you want to + <span style="color: red; padding-left: 5px; padding-right: 5px"> + DELETE + </span> + this record? + <ul style="list-style-type: none"> + <li> + {{ dialogs.recordName }} + </li> + </ul> + </v-card-title> + <v-card-actions> + <v-spacer /> + <v-btn + :disabled="dialogs.disableButton === true" + color="red-darken-1" + variant="elevated" + @click="closeDeleteMenu()" + > + Cancel + </v-btn> + <v-btn + :disabled=" + dialogs.disableDelButton === true || + dialogs.disableButton === true + " + color="blue-darken-1" + variant="elevated" + @click="confirmDelete()" + > + OK + </v-btn> + <v-spacer /> + </v-card-actions> + </v-card> + </v-dialog> </v-card> </template> <script> +import { mergeProps } from "vue"; import { mapActions, mapState } from "vuex"; import Icon from "@/components/Icon"; @@ -443,7 +434,7 @@

Source: components/Curators/UserRecordsAwaitingApproval.v watch: { approvalRequired: function () { this.approvalRequiredProcessed = JSON.parse( - JSON.stringify(this.approvalRequired) + JSON.stringify(this.approvalRequired), ); }, "dialogs.approveChanges"(val) { @@ -462,11 +453,12 @@

Source: components/Curators/UserRecordsAwaitingApproval.v let hiddenRecords = await client.executeQuery(getHiddenRecords); this.prepareApprovalRequired(data, listOfCurators, hiddenRecords); this.approvalRequiredProcessed = JSON.parse( - JSON.stringify(this.approvalRequired) + JSON.stringify(this.approvalRequired), ); this.loading = false; }, methods: { + mergeProps, ...mapActions("record", ["updateRecord"]), /** @@ -492,24 +484,28 @@

Source: components/Curators/UserRecordsAwaitingApproval.v if (rec.creator) { object.creator = rec.creator.username.substring(0, 10); object.idCreator = rec.creator.id; - } else { + } + else { object.creator = "unknown"; } if (rec.priority) { object.priority = "Priority"; - } else { + } + else { object.priority = ""; } const index = hiddenRecords.hiddenRecords.findIndex( - (element) => element.id === rec.id + (element) => element.id === rec.id, ); + /* v8 ignore next 3 */ if (index >= 0) { object.hidden = true; } if (rec.lastEditor) { object.lastEditor = rec.lastEditor.username; object.idLastEditor = rec.lastEditor.id; - } else { + } + else { object.lastEditor = "unknown"; } this.approvalRequired.push(object); @@ -518,10 +514,10 @@

Source: components/Curators/UserRecordsAwaitingApproval.v this.approvalRequired.sort(this.compareRecordDescUpdate); for (let i = 0; i < this.approvalRequired.length; i++) { this.approvalRequired[i].updatedAt = this.formatDate( - this.approvalRequired[i].updatedAt + this.approvalRequired[i].updatedAt, ); this.approvalRequired[i].createdAt = this.formatDate( - this.approvalRequired[i].createdAt + this.approvalRequired[i].createdAt, ); } let curators = listOfCurators.curatorList; @@ -535,7 +531,8 @@

Source: components/Curators/UserRecordsAwaitingApproval.v let role = item.role.name; if (role === "super_curator") { listSuper.push(object); - } else if (role === "curator") { + } + else if (role === "curator") { listCurator.push(object); } }); @@ -575,7 +572,8 @@

Source: components/Curators/UserRecordsAwaitingApproval.v let preparedRecord = {}; if (nameUser === "none") { preparedRecord.curator_id = null; - } else { + } + else { preparedRecord.curator_id = idUser; } let data = { @@ -589,11 +587,11 @@

Source: components/Curators/UserRecordsAwaitingApproval.v _module.error.recordID = idRecord; } const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === idRecord + (element) => element.id === idRecord, ); _module.approvalRequiredProcessed[index].curator = nameUser.substring( 0, - 6 + 6, ); }, @@ -628,9 +626,10 @@

Source: components/Curators/UserRecordsAwaitingApproval.v if (_module.recordUpdate.error) { _module.error.general = _module.recordUpdate.message; _module.error.recordID = _module.dialogs.recordID; - } else { + } + else { const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === _module.dialogs.recordID + (element) => element.id === _module.dialogs.recordID, ); _module.approvalRequiredProcessed.splice(index, 1); } @@ -643,14 +642,15 @@

Source: components/Curators/UserRecordsAwaitingApproval.v _module.dialogs.disableButton = true; let data = await restClient.deleteRecord( _module.dialogs.recordID, - this.user().credentials.token + this.user().credentials.token, ); if (data.error) { _module.error.general = "error deleting record"; _module.error.recordID = _module.dialogs.recordID; - } else { + } + else { const index = _module.approvalRequiredProcessed.findIndex( - (element) => element.id === _module.dialogs.recordID + (element) => element.id === _module.dialogs.recordID, ); _module.approvalRequiredProcessed.splice(index, 1); } @@ -699,9 +699,10 @@

Source: components/Curators/UserRecordsAwaitingApproval.v overflow-y: auto; } -::v-deep .v-data-table-header tr th { +:deep(.v-data-table-header tr th) { white-space: nowrap; } + .searchField { width: 100%; max-width: 400px; @@ -752,7 +753,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Ontologies_OntologySunburst.vue.html b/documentation/html/components_Ontologies_OntologySunburst.vue.html new file mode 100644 index 0000000000..8bc676be5d --- /dev/null +++ b/documentation/html/components_Ontologies_OntologySunburst.vue.html @@ -0,0 +1,538 @@ + + + + + + + FAIRsharing.org Source: components/Ontologies/OntologySunburst.vue + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +

Source: components/Ontologies/OntologySunburst.vue

+ +
+
+
<template>
+  <highcharts v-if="!loadingData" :options="sunburstOptions" />
+</template>
+
+<script>
+import { mapActions, mapGetters, mapState } from "vuex";
+import { useTheme } from "vuetify";
+import Highcharts from "highcharts";
+import Sunburst from "highcharts/modules/sunburst";
+import Exporting from "highcharts/modules/exporting";
+
+//Implement Sunburst module for Highcharts
+// check if Sunburst is a function, if not try .default
+if (typeof Sunburst === "function") {
+  Sunburst(Highcharts);
+} else if (typeof Sunburst.default === "function") {
+  Sunburst.default(Highcharts);
+}
+
+if (typeof Exporting === "function") {
+  Exporting(Highcharts);
+} else if (typeof Exporting.default === "function") {
+  Exporting.default(Highcharts);
+}
+
+export default {
+  name: "OntologySunburst",
+  props: {
+    itemClicked: { default: null, type: Object },
+  },
+  emits: ["subjectNode"],
+  setup() {
+    const theme = useTheme();
+    return { theme };
+  },
+  data() {
+    return {
+      options: {
+        chart: {
+          borderWidth: 0,
+          borderColor: "#DD7920",
+          backgroundColor: "#F9F9F9",
+          height: "100%",
+          style: {
+            fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
+          },
+        },
+        credits: {
+          enabled: false,
+        },
+        breadcrumbs: {
+          enabled: false,
+        },
+        title: {
+          text: "Subject Browser",
+          style: { color: "#DD7920", fontSize: "26px", fontWeight: 500 },
+        },
+        subtitle: {
+          text:
+            "Clicking a term will drilldown the children terms and adjust the levels in the left panel. " +
+            "If a term has no children it will display information about that term.",
+          style: { fontSize: "18px" },
+        },
+        series: [
+          {
+            stickyTracking: false,
+            turboThreshold: 2000,
+            colors: [
+              "white",
+              this.theme.computedThemes.value.fairSharingTheme.colors
+                .subject_topLevel_3, // here
+              "white",
+              "white",
+              this.theme.computedThemes.value.fairSharingTheme.colors
+                .subject_topLevel_1, // here
+              "white",
+              "white",
+              "white",
+              this.theme.computedThemes.value.fairSharingTheme.colors
+                .subject_topLevel_2, // here
+            ],
+            type: "sunburst",
+            allowDrillToNode: true,
+            cursor: "pointer",
+            color: "transparent",
+            dataLabels: {
+              format: "{point.name}",
+              filter: {
+                property: "innerArcLength",
+                operator: ">",
+                value: 16,
+              },
+              rotationMode: "circular",
+            },
+            levels: [
+              {
+                level: 1,
+                levelIsConstant: false,
+                dataLabels: {
+                  filter: {
+                    property: "outerArcLength",
+                    operator: ">",
+                    value: 64,
+                  },
+                },
+                levelSize: { value: 2.3 },
+              },
+              {
+                level: 2,
+                colorByPoint: true,
+                levelSize: { value: 3 },
+              },
+              {
+                level: 3,
+                colorVariation: { key: "brightness", to: -0.5 },
+                levelSize: { value: 3 },
+              },
+              {
+                level: 4,
+                colorVariation: { key: "brightness", to: 0.2 },
+                levelSize: { value: 3 },
+              },
+              {
+                level: 5,
+                colorVariation: { key: "brightness", to: 0.5 },
+                levelSize: { value: 2 },
+              },
+              {
+                level: 6,
+                colorVariation: {
+                  key: "brightness",
+                  to: 0.2,
+                },
+              },
+              {
+                level: 7,
+                colorVariation: {
+                  key: "brightness",
+                  to: 0.5,
+                },
+              },
+              {
+                level: 8,
+                colorVariation: {
+                  key: "brightness",
+                  to: 0.5,
+                },
+              },
+            ],
+          },
+        ],
+        tooltip: {
+          hideDelay: 1,
+          followPointer: true,
+          useHTML: true,
+          backgroundColor: "white",
+        },
+        exporting: {
+          sourceWidth: 1500,
+          sourceHeight: 1600,
+          scale: 1,
+          filename: "SRAO-Sunburst",
+        },
+      },
+      exporting: {
+        enabled: true, // explicit enable
+        sourceWidth: 1500,
+        sourceHeight: 1600,
+        scale: 1,
+        filename: "FAIRsharing Subject Sunburst",
+        buttons: {
+          contextButton: {
+            // You can customize the menu symbol or position here if needed
+            // symbol: 'menu',
+            // align: 'right',
+          },
+        },
+      },
+      subjectsArrList: [],
+      nodeClicked: "",
+    };
+  },
+  computed: {
+    sunburstOptions() {
+      const _client = this;
+      let options = { ..._client.options };
+      options.series[0].data = _client.sunburstData;
+      /* istanbul ignore next */
+      options.series[0].point = {
+        events: {
+          click: function () {
+            _client.processClickEvent(this);
+          },
+        },
+      };
+      /* istanbul ignore next */
+      options.tooltip.formatter = function () {
+        return _client.getTooltip(this.point);
+      };
+      return options;
+    },
+    ...mapState("ontologyBrowser", [
+      "sunburstData",
+      "loadingData",
+      "tree",
+      "flattenedTree",
+    ]),
+  },
+  mounted() {
+    this.flattenedOriginalTree(this.tree);
+  },
+  methods: {
+    /**
+     * Recursively flattens a hierarchical tree structure into a single array of nodes.
+     * Each node is added to the `subjectsArrList` array. If a node has children,
+     * the method is called recursively on the children.
+     *
+     * @param {Array<Object>} tree - The hierarchical tree structure to be flattened. Each node may have a `children` property containing an array of child nodes.
+     * @return {void} This method does not return a value. It modifies the `subjectsArrList` array in place.
+     */
+    flattenedOriginalTree(tree) {
+      tree.forEach((item) => {
+        this.subjectsArrList.push(item);
+        if (item["children"] && item["children"].length) {
+          this.flattenedOriginalTree(item["children"]);
+        }
+      });
+    },
+
+    /**
+     * Handles click events on a node and performs routing or emits a selected subject node to the parent component.
+     *
+     * @param {Object} node - The node object that was clicked. This object contains properties such as `descendants_count`,`name`, `identifier`, and `ancestors` which are used in processing the click event.
+     * @return {void} This method does not return any value. It performs routing or emits an event based on the clicked node.
+     */
+    processClickEvent(node) {
+      if (node.name !== "Subject") {
+        if (node.descendants_count === 0) {
+          let currentTerm = this.$route.query.term
+            ? decodeURIComponent(this.$route.query.term)
+            : null;
+          if (!currentTerm || currentTerm !== node.name) {
+            this.$router.push({
+              path: this.$route.path,
+              query: { term: encodeURIComponent(node.name) },
+            });
+          }
+        }
+
+        //If the node is clicked for the first time emit node, if the same node is clicked second time while it is active this means that node was already open.
+        //Hence it's ancestor should be passed.
+        if (node["ancestors"] && !node["ancestors"].length) {
+          this.$emit("subjectNode", []);
+        } else {
+          if (this.nodeClicked !== node["identifier"]) {
+            this.nodeClicked = node["identifier"];
+          } else {
+            let nodeAncestor = node["ancestors"].pop();
+            this.nodeClicked = nodeAncestor;
+          }
+
+          //Filter the selected subject from the arrayList and emit to the parent component
+          let selectedSubject = this.subjectsArrList.filter(
+            (n) => n.identifier === this.nodeClicked,
+          );
+
+          //Adding key-value pair
+          if (
+            selectedSubject[0]["children"] &&
+            selectedSubject[0]["children"].length
+          ) {
+            selectedSubject[0]["hasChildren"] = true;
+            selectedSubject[0]["isSunburst"] = true;
+          }
+
+          this.$emit("subjectNode", selectedSubject);
+        }
+      }
+    },
+
+    /**
+     * Get ToolTip
+     * @param point
+     * @return {boolean|string}
+     */
+    getTooltip(point) {
+      return point.name === "Subjects"
+        ? false
+        : '<div class="HC-tooltip">' + point.name + "</div>";
+    },
+    ...mapActions("ontologyBrowser", ["openTerms"]),
+    ...mapGetters("ontologyBrowser", ["getAncestors"]),
+  },
+};
+</script>
+
+<style>
+.HC-tooltip {
+  min-width: 100px;
+  text-align: justify;
+  font-size: 20px;
+}
+
+.highcharts-breadcrumbs-group,
+.highcharts-button-traverse-up {
+  display: none !important;
+}
+</style>
+
+
+
+ + + + + +
+
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/html/components_Records_Record_Collections.vue.html b/documentation/html/components_Records_Record_Collections.vue.html index ae24e365f3..4ab8f7ad72 100644 --- a/documentation/html/components_Records_Record_Collections.vue.html +++ b/documentation/html/components_Records_Record_Collections.vue.html @@ -91,14 +91,14 @@

Source: components/Records/Record/Collections.vue

<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+            class="sunlight-highlight-javascript linenums"><template>
   <v-card
     v-if="!tabsDataExist"
-    class="pa-4 d-flex flex-column"
-    outlined
     :color="backColor"
-    tile
+    border
+    class="pa-4 d-flex flex-column overflow-initial"
     elevation="3"
+    tile
   >
     <SectionTitle title="Collections &amp; Recommendations" />
     <div class="d-flex flex-column ml-2 min-height-40">
@@ -107,21 +107,29 @@ 

Source: components/Records/Record/Collections.vue

<v-autocomplete v-if="!tabsDataExist" v-model="selectedValues" - :disabled="tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data.length<5" + :disabled=" + tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data + .length < 5 + " :items="getValues" - solo - :attach="true" - dense - clearable - prepend-inner-icon="fa-search" + :menu-props="{ attach: true }" :placeholder="`Search through ${cleanString(Object.keys(tabsData.tabs)[tabsData.selectedTab])}`" - item-text="name" + clearable + density="compact" + item-title="name" item-value="name" + prepend-inner-icon="fas fa-search" + style="z-index: 2" + variant="solo" > - <template #item="data"> - <span class="filterValueName"> - {{ data.item.name }} - </span> + <template #item="{ props, item }"> + <v-list class="cursor-pointer pl-5 item-name"> + <div v-bind="props"> + <span> + {{ item.raw.name }} + </span> + </div> + </v-list> </template> </v-autocomplete> </div> @@ -129,76 +137,88 @@

Source: components/Records/Record/Collections.vue

<v-tabs v-if="!tabsDataExist" v-model="tabsData.selectedTab" - :show-arrows="$vuetify.breakpoint.mdAndDown" - background-color="transparent" - grow + :hide-slider=" + tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]] + .type === 'conforming_resources' + ? !currentRecord['fairsharingRecord'].savedSearches.length + : tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]] + .data.length === 0 + " + :show-arrows="$vuetify.display.mdAndDown" + bg-color="transparent" + class="mb-5" color="accent3" + grow slider-color="accent3" - class="mb-5" - :hide-slider="tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].type === 'conforming_resources'? !currentRecord['fairsharingRecord'].savedSearches.length : tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data.length===0" > <v-tab - v-for="(tabName,tabIndex) in Object.keys(tabsData.tabs)" - :key="tabName+'_'+tabIndex" - :disabled="tabName === 'conforming_resources' ? !currentRecord['fairsharingRecord'].savedSearches.length : tabsData.tabs[tabName].data.length===0" - @change="selectedValues=null" + v-for="(tabName, tabIndex) in Object.keys(tabsData.tabs)" + :key="tabName + '_' + tabIndex" + :disabled=" + tabName === 'conforming_resources' + ? !currentRecord['fairsharingRecord'].savedSearches.length + : tabsData.tabs[tabName].data.length === 0 + " + @group:selected="selectedValues = null" > - {{ cleanString(tabName) }} ({{ tabName === 'conforming_resources' ? currentRecord['fairsharingRecord'].savedSearches.length : tabsData.tabs[tabName].count }}) + {{ cleanString(tabName) }} ({{ + tabName === "conforming_resources" + ? currentRecord["fairsharingRecord"].savedSearches.length + : tabsData.tabs[tabName].count + }}) </v-tab> </v-tabs> <!-- tab content --> - <v-tabs-items + <v-tabs-window v-if="!tabsDataExist" v-model="tabsData.selectedTab" - :class="['transparent',tabsDataExist]" + :class="['transparent', tabsDataExist]" > - <v-tab-item - v-for="(tabItem,tabItemIndex) in filterList" - :key="tabItem+'_'+tabItemIndex" + <v-tabs-window-item + v-for="(tabItem, tabItemIndex) in filterList" + :key="tabItem + '_' + tabItemIndex" > - <SavedSearches - v-if="tabItem.type === 'conforming_resources'" - /> + <SavedSearches v-if="tabItem.type === 'conforming_resources'" /> <v-virtual-scroll v-else :items="tabItem.data" + class="ma-4 overflow-x-hidden" height="400" item-height="130" - class="ma-4 overflow-x-hidden" > - <template #default="{ item,index }"> + <template #default="{ item, index }"> <router-link - :to="'/'+item.id" - @click.native="()=>$scrollTo('body',0,{})" + :to="'/' + item.id" + @click="() => $scrollTo('body', 0, {})" > <v-card :key="item.id + '_' + index" + border class="pa-4 d-flex flex-column v-card-hover mx-2 height-120" flat - outlined > <div class="d-flex align-center"> - <record-status - :record="item" - :show-status="false" - /> - <div class="ml-10 underline-effect text-ellipses-height-2lines line-height-20"> + <record-status :record="item" :show-status="false" /> + <div + class="ml-10 underline-effect text-ellipses-height-2lines line-height-20" + > {{ item.name }} </div> </div> - <p class="grey--text relation-style text-ellipses-height-2lines line-height-14 pr-5"> + <p + class="text-grey relation-style text-ellipses-height-2lines line-height-14 pr-5" + > {{ item.object }} - <v-tooltip top> - <template #activator="{ on }"> - <span - class="red--text mouse-info" - v-on="on" - > + <v-tooltip location="top"> + <template #activator="{ props }"> + <span class="text-red mouse-info" v-bind="props"> {{ item.recordAssociationLabel }} </span> </template> - <span>{{ relationDefinition[item.recordAssociationLabel] }}</span> + <span>{{ + relationDefinition[item.recordAssociationLabel] + }}</span> </v-tooltip> {{ item.subject }} </p> @@ -206,35 +226,35 @@

Source: components/Records/Record/Collections.vue

</router-link> </template> </v-virtual-scroll> - </v-tab-item> - </v-tabs-items> + </v-tabs-window-item> + </v-tabs-window> </div> </v-card> </template> <script> -import {mapState} from "vuex"; +import { mapState } from "vuex"; -import SavedSearches from '@/components/Records/Record/GeneralInfo/SavedSearches' -import SectionTitle from '@/components/Records/Record/SectionTitle'; +import SavedSearches from "@/components/Records/Record/GeneralInfo/SavedSearches"; +import SectionTitle from "@/components/Records/Record/SectionTitle"; import RecordStatus from "@/components/Records/Shared/RecordStatus"; import recordRelationShipsDefinitions from "@/data/RecordRelationShipsDefinitions.json"; import recordTabUtils from "@/utils/recordTabUtils"; -import stringUtils from "@/utils/stringUtils" +import stringUtils from "@/utils/stringUtils"; export default { name: "Collections", components: { RecordStatus, SectionTitle, - SavedSearches + SavedSearches, }, mixins: [stringUtils, recordTabUtils], - props:{ - backColor:{ - default:null, + props: { + backColor: { + default: null, type: String, - } + }, }, data: () => { return { @@ -243,125 +263,160 @@

Source: components/Records/Record/Collections.vue

tabsData: { selectedTab: 0, tabs: { - in_collections: {relation: 'collects', data: [], count:0} - } + in_collections: { relation: "collects", data: [], count: 0 }, + }, }, - } + }; }, computed: { ...mapState("record", ["currentRecord"]), }, - watch:{ + watch: { currentRecord() { - let _module = this - Object.keys(_module.tabsData.tabs).forEach(tabName => { + let _module = this; + Object.keys(_module.tabsData.tabs).forEach((tabName) => { //Update the count of the conforming resources after unlinking saved search - if (tabName === 'conforming_resources') { - _module.tabsData.tabs[tabName].count = _module.currentRecord['fairsharingRecord'].savedSearches.length; + if (tabName === "conforming_resources") { + _module.tabsData.tabs[tabName].count = + _module.currentRecord["fairsharingRecord"].savedSearches.length; } //If no saved search is available in conforming resources tab - if(!_module.currentRecord['fairsharingRecord'].savedSearches.length) { + if (!_module.currentRecord["fairsharingRecord"].savedSearches.length) { //If no conforming resources is available then shift focus to Related Policies tab - if(tabName === "related_policies") { - if(_module.tabsData.tabs[tabName].data.length) { - this.tabsData.selectedTab = 1 + if (tabName === "related_policies") { + if (_module.tabsData.tabs[tabName].data.length) { + this.tabsData.selectedTab = 1; } } //If no related policies is available then shift focus to In collections tab - else if(tabName === "in_collections") { - if(_module.tabsData.tabs[tabName].data.length) { - this.tabsData.selectedTab = 0 + else if (tabName === "in_collections") { + if (_module.tabsData.tabs[tabName].data.length) { + this.tabsData.selectedTab = 0; } } //If nothing is available make all tabs section disabled with its initial value i.e null else { - this.selectedValues = null + this.selectedValues = null; } } - }) - } + }); + }, }, methods: { /** Dynamically sets data for each tabs based on the data received from recordAssociations and reverseAssociations*/ prepareTabsData() { const _module = this; // There are different tabs for policies vs. other registries. - if (_module.currentRecord['fairsharingRecord'].registry === 'Policy') { + if (_module.currentRecord["fairsharingRecord"].registry === "Policy") { _module.tabsData.tabs.related_policies = { - registry: ['Policy'], + registry: ["Policy"], data: [], - count:0 - } + count: 0, + }; _module.tabsData.tabs.conforming_resources = { - registry: ['Policy'], + registry: ["Policy"], data: [], - count:0, - type:'conforming_resources' - } - } - else { + count: 0, + type: "conforming_resources", + }; + } else { _module.tabsData.tabs.in_policies = { - relation: 'recommends', + relation: "recommends", data: [], - count:0 - } + count: 0, + }; } - if (Object.keys(_module.currentRecord['fairsharingRecord']).includes('recordAssociations') || - Object.keys(_module.currentRecord['fairsharingRecord']).includes('reverseRecordAssociations')) { + if ( + Object.keys(_module.currentRecord["fairsharingRecord"]).includes( + "recordAssociations", + ) || + Object.keys(_module.currentRecord["fairsharingRecord"]).includes( + "reverseRecordAssociations", + ) + ) { /* * In this case the related_policies tab could have relations going either way. */ - if (_module.currentRecord['fairsharingRecord'].registry === 'Policy') { - Object.keys(_module.tabsData.tabs).forEach(tabName => { + if (_module.currentRecord["fairsharingRecord"].registry === "Policy") { + Object.keys(_module.tabsData.tabs).forEach((tabName) => { // All policy relations, incoming or outgoing. - if (tabName === 'related_policies') { - _module.tabsData.tabs[tabName].data = _module.prepareAssociations( - _module.currentRecord['fairsharingRecord'].recordAssociations, - _module.currentRecord['fairsharingRecord'].reverseRecordAssociations - ).filter( - item => _module.tabsData.tabs[tabName].registry.includes(item.registry) - ).filter( - item => item.recordAssociationLabel !== 'collects' - ) - _module.tabsData.tabs[tabName].count = _module.tabsData.tabs[tabName].data.length; + if (tabName === "related_policies") { + _module.tabsData.tabs[tabName].data = _module + .prepareAssociations( + _module.currentRecord["fairsharingRecord"].recordAssociations, + _module.currentRecord["fairsharingRecord"] + .reverseRecordAssociations, + ) + .filter((item) => + _module.tabsData.tabs[tabName].registry.includes( + item.registry, + ), + ) + .filter((item) => item.recordAssociationLabel !== "collects"); + _module.tabsData.tabs[tabName].count = + _module.tabsData.tabs[tabName].data.length; } //Save searches for the policy - else if (tabName === 'conforming_resources') { + else if (tabName === "conforming_resources") { _module.tabsData.tabs[tabName].data = - _module.currentRecord['fairsharingRecord'].savedSearches + _module.currentRecord["fairsharingRecord"].savedSearches; - _module.tabsData.tabs[tabName].count = _module.currentRecord['fairsharingRecord'].savedSearches.length; + _module.tabsData.tabs[tabName].count = + _module.currentRecord["fairsharingRecord"].savedSearches.length; } // All incoming collections. else { - _module.tabsData.tabs[tabName].data = _module.prepareAssociations( + _module.tabsData.tabs[tabName].data = _module + .prepareAssociations( [], - _module.currentRecord['fairsharingRecord']['reverseRecordAssociations'] - ).filter(item => item.recordAssociationLabel === _module.tabsData.tabs[tabName].relation); - _module.tabsData.tabs[tabName].count = _module.tabsData.tabs[tabName].data.length; + _module.currentRecord["fairsharingRecord"][ + "reverseRecordAssociations" + ], + ) + .filter( + (item) => + item.recordAssociationLabel === + _module.tabsData.tabs[tabName].relation, + ); + _module.tabsData.tabs[tabName].count = + _module.tabsData.tabs[tabName].data.length; } - }) - } - /* - * Here, only incoming recommends or collects relations are expected. - */ - else { - Object.keys(_module.tabsData.tabs).forEach(tabName => { - _module.tabsData.tabs[tabName].data = _module.prepareAssociations( + }); + } else { + /* + * Here, only incoming recommends or collects relations are expected. + */ + Object.keys(_module.tabsData.tabs).forEach((tabName) => { + _module.tabsData.tabs[tabName].data = _module + .prepareAssociations( [], - _module.currentRecord['fairsharingRecord']['reverseRecordAssociations'] - ).filter(item => item.recordAssociationLabel === _module.tabsData.tabs[tabName].relation); - _module.tabsData.tabs[tabName].count = _module.tabsData.tabs[tabName].data.length; - }) + _module.currentRecord["fairsharingRecord"][ + "reverseRecordAssociations" + ], + ) + .filter( + (item) => + item.recordAssociationLabel === + _module.tabsData.tabs[tabName].relation, + ); + _module.tabsData.tabs[tabName].count = + _module.tabsData.tabs[tabName].data.length; + }); } - } - else { - return false + } else { + return false; } }, + }, +}; +</script> +<style lang="scss" scoped> +.item-name { + &:hover { + background-color: #00000008; } } -</script> +</style>
@@ -407,7 +462,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Record_GeneralInfo_SavedSearches.vue.html b/documentation/html/components_Records_Record_GeneralInfo_SavedSearches.vue.html index 6d19736bde..3631380bf0 100644 --- a/documentation/html/components_Records_Record_GeneralInfo_SavedSearches.vue.html +++ b/documentation/html/components_Records_Record_GeneralInfo_SavedSearches.vue.html @@ -92,16 +92,22 @@

Source: components/Records/Record/GeneralInfo/SavedSearch
<template>
-  <div
-    v-if="getField('savedSearches') && getField('savedSearches').length"
-  >
+  <div v-if="getField('savedSearches') && getField('savedSearches').length">
     <p>
-      This policy has certain requirements and recommendations that have been used to create a conformant FAIRsharing search. The searches listed within this section will provide an initial filtering of the FAIRsharing registries. Clicking on a saved search will take you to a set of search results which you may further refine according to your needs and any additional policy requirements. If you are logged in, you may also save any search results to your own profile. More information on Conforming Resources and Saved Searches can be found in our <a
+      This policy has certain requirements and recommendations that have been
+      used to create a conformant FAIRsharing search. The searches listed within
+      this section will provide an initial filtering of the FAIRsharing
+      registries. Clicking on a saved search will take you to a set of search
+      results which you may further refine according to your needs and any
+      additional policy requirements. If you are logged in, you may also save
+      any search results to your own profile. More information on Conforming
+      Resources and Saved Searches can be found in our
+      <a
         href="https://fairsharing.gitbook.io/fairsharing/how-to/advanced-search"
         target="_blank"
       >
-        Gitbook
-        documentation</a>.
+        Gitbook documentation</a
+      >.
     </p>
     <div
       v-for="search in getSavedSearches"
@@ -111,7 +117,7 @@ 

Source: components/Records/Record/GeneralInfo/SavedSearch <v-card class="pa-4 d-flex flex-column v-card-hover mx-2 height-120 my-3 full-width" flat - outlined + border > <div class="d-flex align-center"> <record-status @@ -125,17 +131,18 @@

Source: components/Records/Record/GeneralInfo/SavedSearch <a :href="search.url">{{ search.name }}</a> </div> <p class="text-body-2 ml-10"> - (Created by: <a + (Created by: + <a class="underline-effect" :href="`/users/${search.creator['id']}`" - >{{ search.creator["username"] }}</a>) + >{{ search.creator["username"] }}</a + >) </p> </div> </div> - <p - class="grey--text relation-style text-ellipses-height-2lines line-height-14 pr-5" + class="text-grey relation-style text-ellipses-height-2lines line-height-14 pr-5" > {{ search.comments }} </p> @@ -143,39 +150,32 @@

Source: components/Records/Record/GeneralInfo/SavedSearch <v-btn v-if="user().is_super_curator" rounded - text + variant="text" @click="confirmUnlinkSavedSearch(search)" > <v-icon>mdi-link-off</v-icon> </v-btn> </div> - <!-- Unlink dialog box --> - <v-dialog - v-model="confirmUnlink" - max-width="700px" - persistent - > + <v-dialog v-model="confirmUnlink" max-width="700px" persistent> <!-- Unlink saved search --> <v-card v-if="unlinkSavedSearchCard"> - <v-card-title class="text-h5"> - Unlinking saved search - </v-card-title> + <v-card-title class="text-h5"> Unlinking saved search </v-card-title> <v-card-text> This is will unlink instance of the search from this policy record. </v-card-text> <v-card-actions> <v-spacer /> <v-btn - class="white--text" + class="text-white" color="accent3" @click="unlinkSavedSearch(false)" > Cancel </v-btn> <v-btn - class="white--text" + class="text-white" color="success" :loading="unlinkLoader" @click="unlinkSavedSearch(true)" @@ -237,23 +237,28 @@

Source: components/Records/Record/GeneralInfo/SavedSearch if (del) { this.unlinkLoader = true; //Filter the currentRecord to unlink - let linkRecord = this.selectedItem.fairsharingRecords.filter(({id}) => id !== this.currentRecord.fairsharingRecord.id); + let linkRecord = this.selectedItem.fairsharingRecords.filter( + ({ id }) => id !== this.currentRecord.fairsharingRecord.id, + ); //Array of id of the remaining record - linkRecord = linkRecord.map(({id}) => id) + linkRecord = linkRecord.map(({ id }) => id); let saveSearchObj = { fairsharing_record_ids: linkRecord, }; let updatedSearchResult = await restClient.updateSaveSearch( - this.selectedItem["id"], - saveSearchObj, - this.user().credentials.token + this.selectedItem["id"], + saveSearchObj, + this.user().credentials.token, ); //Commit the updated result to store - saveSearch.commit("saveSearch/setSaveSearchResult", updatedSearchResult); + saveSearch.commit( + "saveSearch/setSaveSearchResult", + updatedSearchResult, + ); //Update the page after unlinking the savedSearch await this.fetchRecord({ @@ -266,11 +271,11 @@

Source: components/Records/Record/GeneralInfo/SavedSearch this.unlinkLoader = false; this.unlinkSavedSearchCard = false; this.confirmUnlink = false; - }, }, }; -</script>

+</script> +

@@ -315,7 +320,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Record_RelatedContent.vue.html b/documentation/html/components_Records_Record_RelatedContent.vue.html index b9ae1a93fa..0971a6f190 100644 --- a/documentation/html/components_Records_Record_RelatedContent.vue.html +++ b/documentation/html/components_Records_Record_RelatedContent.vue.html @@ -91,14 +91,14 @@

Source: components/Records/Record/RelatedContent.vue

<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+            class="sunlight-highlight-javascript linenums"><template>
   <v-card
     v-if="!tabsDataExist"
-    class="pa-4 d-flex flex-column"
-    outlined
     :color="backColor"
-    tile
+    border
+    class="pa-4 d-flex flex-column overflow-initial"
     elevation="3"
+    tile
   >
     <SectionTitle title="Related Content" />
     <div class="d-flex flex-column ml-2 min-height-40">
@@ -107,22 +107,31 @@ 

Source: components/Records/Record/RelatedContent.vue

<v-autocomplete v-if="!tabsDataExist" v-model="selectedValues" - :disabled="tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data.length<5" + :custom-filter="nameAbbrFilter" + :disabled=" + tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data + .length < 5 + " :items="getValues" - solo - :attach="true" - dense - clearable - prepend-inner-icon="fa-search" + :menu-props="{ attach: true }" :placeholder="`Search through ${cleanString(Object.keys(tabsData.tabs)[tabsData.selectedTab])}`" - item-text="name" + clearable + color="primary" + density="compact" + item-title="name" item-value="name" - :filter="nameAbbrFilter" + prepend-inner-icon="fas fa-search" + style="z-index: 2" + variant="solo" > - <template #item="data"> - <span class="filterValueName"> - {{ data.item.name }} - </span> + <template #item="{ props, item }"> + <v-list class="cursor-pointer pl-5 item-name"> + <div class="" v-bind="props"> + <span> + {{ item.raw.name }} + </span> + </div> + </v-list> </template> </v-autocomplete> </div> @@ -130,85 +139,114 @@

Source: components/Records/Record/RelatedContent.vue

<v-tabs v-if="!tabsDataExist" v-model="tabsData.selectedTab" - :show-arrows="$vuetify.breakpoint.mdAndDown" - background-color="transparent" - grow + :hide-slider=" + tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data + .length === 0 + " + :show-arrows="$vuetify.display.mdAndDown" + bg-color="transparent" + class="mb-5" color="accent3" + grow slider-color="accent3" - class="mb-5" - :hide-slider="tabsData.tabs[Object.keys(tabsData.tabs)[tabsData.selectedTab]].data.length===0" > <v-tab - v-for="(tabName,tabIndex) in Object.keys(tabsData.tabs)" - :key="tabName+'_'+tabIndex" - :disabled="tabsData.tabs[tabName].data.length===0" - @change="selectedValues=null" + v-for="(tabName, tabIndex) in Object.keys(tabsData.tabs)" + :key="tabName + '_' + tabIndex" + :disabled="tabsData.tabs[tabName].data.length === 0" + :value="tabIndex" + @click="selectedValues = null" > {{ cleanString(tabName) }} ({{ tabsData.tabs[tabName].count }}) </v-tab> </v-tabs> <!-- tab content --> - <v-tabs-items + <v-tabs-window v-if="!tabsDataExist" v-model="tabsData.selectedTab" - class="transparent height-430" + class="bg-transparent height-430" > - <v-tab-item - v-for="(tabItem,tabItemIndex) in filterList" - :key="tabItem+'_'+tabItemIndex" + <v-tabs-window-item + v-for="(tabItem, tabItemIndex) in filterList" + :key="tabItem + '_' + tabItemIndex" > <v-virtual-scroll :items="tabItem.data" + class="ma-4 overflow-x-hidden" height="400" item-height="130" - class="ma-4 overflow-x-hidden" > - <template #default="{ item,index }"> + <template #default="{ item, index }"> <router-link - :to="'/'+item.id" - @click.native="()=>$scrollTo('body',0,{})" + :to="'/' + item.id" + @click="() => $scrollTo('body', 0, {})" > <v-card :key="item.id + '_' + index" + border class="pa-4 d-flex flex-column v-card-hover mx-2 height-120" flat - outlined > <div class="d-flex align-center"> - <record-status - :record="item" - :show-status="false" - /> - <div class="ml-10 underline-effect text-ellipses-height-2lines line-height-20"> + <record-status :record="item" :show-status="false" /> + <div + class="ml-10 underline-effect text-ellipses-height-2lines line-height-20" + > {{ item.name }} </div> </div> - <p class="grey--text relation-style text-ellipses-height-2lines line-height-14 pr-5"> + <p + class="text-grey relation-style text-ellipses-height-2lines line-height-14 pr-5" + > {{ item.object }} - <v-tooltip top> - <template #activator="{ on }"> + <v-tooltip location="top"> + <template #activator="{ props }"> <span v-for="(label, indexLabel) in item.recordAssocLabel" - :key="label+'_'+ indexLabel" - class="red--text mouse-info" - v-on="on" + :key="label + '_' + indexLabel" + class="text-red mouse-info" + v-bind="props" > {{ label }} <span - v-if="indexLabel !== 0 && item.recordAssocLabel.length!==1" - style="color: black!important" - >and</span> + v-if=" + indexLabel !== 0 && + item.recordAssocLabel.length !== 1 + " + style="color: black !important" + >and</span + > </span> </template> <span - v-for="(label2,indexHint) in item.recordAssocLabel" - :key="label2+'_'+indexHint" + v-for="(label2, indexHint) in item.recordAssocLabel" + :key="label2 + '_' + indexHint" > - <span>{{ indexHint !== 0 && item.recordAssocLabel.length>1?relationDefinition[item.recordAssocLabel[item.recordAssocLabel.length-1-indexHint]].toLowerCase():relationDefinition[item.recordAssocLabel[item.recordAssocLabel.length-1-indexHint]] }} + <span + >{{ + indexHint !== 0 && item.recordAssocLabel.length > 1 + ? relationDefinition[ + item.recordAssocLabel[ + item.recordAssocLabel.length - 1 - indexHint + ] + ].toLowerCase() + : relationDefinition[ + item.recordAssocLabel[ + item.recordAssocLabel.length - 1 - indexHint + ] + ] + }} <span - v-if="indexHint !== item.recordAssocLabel.length-1 && item.recordAssocLabel.length!==1" - style="color: white!important;margin-left: -2px!important;" - >; </span> + v-if=" + indexHint !== item.recordAssocLabel.length - 1 && + item.recordAssocLabel.length !== 1 + " + style=" + color: white !important; + margin-left: -2px !important; + " + >; + </span> </span> </span> </v-tooltip> @@ -218,16 +256,16 @@

Source: components/Records/Record/RelatedContent.vue

</router-link> </template> </v-virtual-scroll> - </v-tab-item> - </v-tabs-items> + </v-tabs-window-item> + </v-tabs-window> </div> </v-card> </template> <script> -import {mapState} from "vuex"; +import { mapState } from "vuex"; -import SectionTitle from '@/components/Records/Record/SectionTitle'; +import SectionTitle from "@/components/Records/Record/SectionTitle"; import RecordStatus from "@/components/Records/Shared/RecordStatus"; import recordRelationShipsDefinitions from "@/data/RecordRelationShipsDefinitions.json"; import recordTabUtils from "@/utils/recordTabUtils"; @@ -239,12 +277,12 @@

Source: components/Records/Record/RelatedContent.vue

RecordStatus, SectionTitle, }, - mixins:[stringUtils,recordTabUtils], - props:{ - backColor:{ - default:null, + mixins: [stringUtils, recordTabUtils], + props: { + backColor: { + default: null, type: String, - } + }, }, data: () => { return { @@ -253,11 +291,11 @@

Source: components/Records/Record/RelatedContent.vue

tabsData: { selectedTab: 0, tabs: { - related_standards: {registry: ["Standard"], data: [], count:0}, - related_databases: {registry: ["Database"], data: [], count:0} - } - } - } + related_standards: { registry: ["Standard"], data: [], count: 0 }, + related_databases: { registry: ["Database"], data: [], count: 0 }, + }, + }, + }; }, computed: { ...mapState("record", ["currentRecord"]), @@ -269,28 +307,50 @@

Source: components/Records/Record/RelatedContent.vue

prepareTabsData() { const _module = this; // A policy may recommend collections; other records may be collected. - if (_module.currentRecord['fairsharingRecord'].registry === 'Policy') { - _module.$set(_module.tabsData.tabs, 'related_collections', {registry: ["Collection"], data: [], count:0}); + if (_module.currentRecord["fairsharingRecord"].registry === "Policy") { + _module.tabsData.tabs["related_collections"] = { + registry: ["Collection"], + data: [], + count: 0, + }; } - if (_module.currentRecord['fairsharingRecord'].registry === 'FAIRassist' || - _module.currentRecord['fairsharingRecord'].registry === 'Database' || - _module.currentRecord['fairsharingRecord'].registry === 'Standard') { - _module.$set(_module.tabsData.tabs, 'related_fairassist_components', {registry: ["FAIRassist"], data: [], count:0}); + if ( + _module.currentRecord["fairsharingRecord"].registry === "FAIRassist" || + _module.currentRecord["fairsharingRecord"].registry === "Standard" + ) { + _module.tabsData.tabs["related_fairassist_components"] = { + registry: ["FAIRassist"], + data: [], + count: 0, + }; } - if (Object.keys(_module.currentRecord['fairsharingRecord']).includes('recordAssociations') || - Object.keys(_module.currentRecord['fairsharingRecord']).includes('reverseRecordAssociations')) { - Object.keys(_module.tabsData.tabs).forEach(tabName => { - _module.tabsData.tabs[tabName].data = _module.prepareAssociations( - _module.currentRecord['fairsharingRecord'].recordAssociations, - _module.currentRecord['fairsharingRecord'].reverseRecordAssociations - ).filter(item => _module.tabsData.tabs[tabName].registry.includes(item.registry)) + if ( + Object.keys(_module.currentRecord["fairsharingRecord"]).includes( + "recordAssociations", + ) || + Object.keys(_module.currentRecord["fairsharingRecord"]).includes( + "reverseRecordAssociations", + ) + ) { + Object.keys(_module.tabsData.tabs).forEach((tabName) => { + _module.tabsData.tabs[tabName].data = _module + .prepareAssociations( + _module.currentRecord["fairsharingRecord"].recordAssociations, + _module.currentRecord["fairsharingRecord"] + .reverseRecordAssociations, + ) + .filter((item) => + _module.tabsData.tabs[tabName].registry.includes(item.registry), + ); // This replacement code is rather clunky, as it performs an operation in three stages, but it is at // least readable (well, by this non-javascript-programmer). // 0. This hack is related to this commenthttps://www.jcmilitaria.com/search_stock.asp?start=0&offset=8: // https://github.com/FAIRsharing/fairsharing.github.io/pull/2255#issuecomment-1963978178 - if (tabName === 'related_collections') { - _module.tabsData.tabs['related_collections'].data = _module.tabsData.tabs['related_collections'].data - .filter((item) => item.recordAssociationLabel === 'recommends'); + if (tabName === "related_collections") { + _module.tabsData.tabs["related_collections"].data = + _module.tabsData.tabs["related_collections"].data.filter( + (item) => item.recordAssociationLabel === "recommends", + ); } // 1. Create a hash with keys for each linked record ID of all the relations, containing an // array of all relations. @@ -302,41 +362,53 @@

Source: components/Records/Record/RelatedContent.vue

if (!duplicates[item.id].includes(item.recordAssociationLabel)) { duplicates[item.id].push(item.recordAssociationLabel); } - }) + }); // 2. Update the tabs data with the duplicated labels. _module.tabsData.tabs[tabName].data.forEach((item) => { item.recordAssocLabel = duplicates[item.id]; - }) + }); // 3. Delete extraneous entries. // Thanks, Stack Overflow! // https://stackoverflow.com/questions/2218999/how-to-remove-all-duplicates-from-an-array-of-objects#comment72641733_36744732 - _module.tabsData.tabs[tabName].data = _module.tabsData.tabs[tabName].data.filter((thing, index, self) => self.findIndex(t => t.id === thing.id) === index); + _module.tabsData.tabs[tabName].data = _module.tabsData.tabs[ + tabName + ].data.filter( + (thing, index, self) => + self.findIndex((t) => t.id === thing.id) === index, + ); // Duplicates removed, now do the count. - _module.tabsData.tabs[tabName].count = _module.tabsData.tabs[tabName].data.length; + _module.tabsData.tabs[tabName].count = + _module.tabsData.tabs[tabName].data.length; }); - } - else { - return false + } else { + return false; } }, - nameAbbrFilter(item, queryText) { - const search = queryText.toLowerCase() - const name = item.name.toLowerCase(); + nameAbbrFilter(itemTitle, queryText, item) { + const search = queryText.toLowerCase(); + const name = item.raw.name.toLowerCase(); - if (item.abbreviation == null) { - let answer = name.indexOf(search) > -1 + if (item.raw.abbreviation === null) { + let answer = name.indexOf(search) > -1; return answer; - } - else { - let answer = (name.indexOf(search) > -1 || item.abbreviation.toLowerCase().indexOf(search) > -1) + } else { + let answer = + name.indexOf(search) > -1 || + item.raw.abbreviation.toLowerCase().indexOf(search) > -1; return answer; } - } + }, + }, +}; +</script> +<style lang="scss" scoped> +.item-name { + &:hover { + background-color: #00000008; } } -</script> - +</style>
@@ -382,7 +454,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Header_FilterChips.vue.html b/documentation/html/components_Records_Search_Header_FilterChips.vue.html index 7f007331b5..52a2439319 100644 --- a/documentation/html/components_Records_Search_Header_FilterChips.vue.html +++ b/documentation/html/components_Records_Search_Header_FilterChips.vue.html @@ -92,38 +92,36 @@

Source: components/Records/Search/Header/FilterChips.vue<
<template>
-  <v-row class="mr-2 ml-2 pb-3">
+  <v-row class="mr-2 ml-2 align-center">
     <v-chip
       v-if="getChips.length"
-      class="ma-2 mt-5"
+      class="text-white mr-4"
       color="red"
-      text-color="white"
+      variant="flat"
       @click="removeAllParams"
     >
       Clear All
     </v-chip>
-    <div
-      v-for="(chip, index) in getChips"
-      :key="'Chips_' + index"
-    >
+    <v-chip-group v-for="chip in getChips" :key="'Chips_' + chip.paramVal">
       <v-chip
-        class="ma-2 mt-5"
-        close
-        color="white"
-        text-color="secondary"
+        class="bg-white text-secondary"
+        closable
+        variant="outlined"
         @click:close="removeParam(chip.paramName, chip.paramVal)"
       >
-        {{ getFilteredLabel[chip.paramName] }}:<b class="ml-1"> {{ decodeURIComponent(chip.paramVal).replace(/_/g, " ") }}</b>
+        {{ getFilteredLabel[chip.paramName] }}:<b class="ml-1">
+          {{ decodeURIComponent(chip.paramVal).replace(/_/g, " ") }}</b
+        >
       </v-chip>
-    </div>
+    </v-chip-group>
   </v-row>
 </template>
 
 <script>
-import {throttle} from "lodash"
+import { throttle } from "lodash";
 
-import extraFilterChips from "@/data/extraFilterChips.json"
-import filterMapping from "@/data/FiltersLabelMapping.json"
+import extraFilterChips from "@/data/extraFilterChips.json";
+import filterMapping from "@/data/FiltersLabelMapping.json";
 import filterChipsUtils from "@/utils/filterChipsUtils";
 
 export default {
@@ -137,7 +135,7 @@ 

Source: components/Records/Search/Header/FilterChips.vue< getFilteredLabel: function () { let filterLabels = { q: "Query string", - userDefinedTags: "User defined tags" + userDefinedTags: "User defined tags", }; Object.keys(filterMapping["autocomplete"]).forEach((filterName) => { let field = filterMapping["autocomplete"][filterName]; @@ -147,12 +145,12 @@

Source: components/Records/Search/Header/FilterChips.vue< * These labels are specific to the FAIRsharing Wizard and aren't normally required in the search sidebar, * so they are defined here rather than in filterMapping. */ - extraFilterChips.forEach(function(extra) { - let key = Object.keys(extra)[0] + extraFilterChips.forEach(function (extra) { + let key = Object.keys(extra)[0]; filterLabels[key] = extra[key]; - }) + }); return filterLabels; - } + }, }, methods: { /** @@ -165,8 +163,8 @@

Source: components/Records/Search/Header/FilterChips.vue< let query = this.buildNewQuery(paramName, paramVal); await _module.$router.push({ name: _module.$route.name, - query: query - }) + query: query, + }); }, 2000), /** * Removes all the parameters value from the router query with a 2000ms throttle @@ -176,8 +174,8 @@

Source: components/Records/Search/Header/FilterChips.vue< let query = {}; await _module.$router.push({ name: _module.$route.name, - query: query - }) + query: query, + }); }, 2000), /** * Build the new query given a parameter name a value by getting the current query and removing the key/value given @@ -190,13 +188,12 @@

Source: components/Records/Search/Header/FilterChips.vue< let query = {}; Object.keys(_module.$route.query).forEach(function (queryParam) { if (queryParam !== paramName) { - query[queryParam] = _module.$route.query[queryParam] - } - else { - if (_module.$route.query[queryParam].includes(',')) { + query[queryParam] = _module.$route.query[queryParam]; + } else { + if (_module.$route.query[queryParam].includes(",")) { let currentValues = _module.$route.query[queryParam].split(","); if (currentValues.includes(paramVal)) { - currentValues.splice(currentValues.indexOf(paramVal), 1) + currentValues.splice(currentValues.indexOf(paramVal), 1); } query[paramName] = currentValues.join(","); } @@ -204,9 +201,9 @@

Source: components/Records/Search/Header/FilterChips.vue< }); query["page"] = 1; return query; - } - } -} + }, + }, +}; </script>

@@ -253,7 +250,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Header_Pagination.vue.html b/documentation/html/components_Records_Search_Header_Pagination.vue.html index 203a1351b1..1d1f5f2554 100644 --- a/documentation/html/components_Records_Search_Header_Pagination.vue.html +++ b/documentation/html/components_Records_Search_Header_Pagination.vue.html @@ -95,114 +95,114 @@

Source: components/Records/Search/Header/Pagination.vue </template> <script> - import {throttle} from 'lodash'; - - /** Component to handle the advanced search filters for the searchFairsharingRecords query. - * @vue-prop {Number} [totalPages = 0] - the total number of pages to display - * @vue-data {Number} [currentQuery = null] - the current page number +import { throttle } from "lodash"; + +/** Component to handle the advanced search filters for the searchFairsharingRecords query. + * @vue-prop {Number} [totalPages = 0] - the total number of pages to display + * @vue-data {Number} [currentQuery = null] - the current page number + */ +export default { + name: "Pagination", + props: { + totalPages: { + type: Number, + default: 0, + }, + currentPage: { + type: Number, + default: 1, + }, + }, + data() { + return { + currentPageLocal: null, + allowPaginate: true, + disable: false, + page: 1, + }; + }, + watch: { + "$route.name": function () { + this.currentPageLocal = 1; + }, + "$route.query": { + handler: function (newVal) { + let _module = this; + if (!Object.prototype.hasOwnProperty.call(newVal, "page")) { + _module.currentPageLocal = 1; + _module.page = _module.currentPageLocal; + } else { + _module.currentPageLocal = Number(newVal.page); + _module.page = _module.currentPageLocal; + } + }, + immediate: true, + }, + page: function (newPage) { + this.paginate(newPage); + }, + }, + created() { + let _module = this; + if (!Object.prototype.hasOwnProperty.call(_module.$route.query, "page")) { + _module.currentPageLocal = 1; + _module.page = _module.currentPageLocal; + } else { + _module.currentPageLocal = Number(_module.$route.query.page); + _module.page = _module.currentPageLocal; + } + }, + methods: { + /** + * Set the current query page parameter value to the given input for vueJs router + * @param {Number} pageNumber - the page to go to */ - export default { - name: "Pagination", - props: { - totalPages: { - type: Number, - default: 0 - }, - currentPage: { - type: Number, - default: 1 - } - }, - data() { - return { - currentPageLocal: null, - allowPaginate: true, - disable: false, - page: 1 - } - }, - watch: { - '$route.name': function () { - this.currentPageLocal = 1; - }, - '$route.query': { - handler: function (newVal) { - let _module = this; - if (!Object.prototype.hasOwnProperty.call(newVal, "page")) { - _module.currentPageLocal = 1; - _module.page = _module.currentPageLocal; - } else { - _module.currentPageLocal = Number(newVal.page); - _module.page = _module.currentPageLocal; - } - }, - immediate: true - }, - 'page': function (newPage) { - this.paginate(newPage); - } - }, - created() { + paginate: async function (pageNumber) { + if (this.allowPaginate) { + if (pageNumber !== this.currentPageLocal && this.allowPaginate) { let _module = this; - if (!Object.prototype.hasOwnProperty.call(_module.$route.query, "page")) { - _module.currentPageLocal = 1; - _module.page = _module.currentPageLocal; - } - else { - _module.currentPageLocal = Number(_module.$route.query.page); - _module.page = _module.currentPageLocal; - } - }, - methods: { - /** - * Set the current query page parameter value to the given input for vueJs router - * @param {Number} pageNumber - the page to go to - */ - paginate: async function (pageNumber) { - if (this.allowPaginate) { - if (pageNumber !== this.currentPageLocal && this.allowPaginate) { - let _module = this; - let currentQuery = {}; - _module.currentPageLocal = pageNumber; - Object.keys(_module.$route.query).forEach(function (param) { - currentQuery[param] = _module.$route.query[param] - }); - currentQuery.page = pageNumber; - this.disableThrottle(this.disable); - await _module.$router.push({ - name: _module.$route.name, - query: currentQuery - }); - } - } - }, - /** - * Postpone the pagination buttons to be clickable - */ - PaginatePermission: throttle(function () { - this.allowPaginate = true - }, 1200), - - /** - * Set the environment ready for testing or development - * @param {Boolean} disable - should disable or not the throttle for the next call - */ - disableThrottle: function (disable) { - if (!disable) { - this.allowPaginate = false; - this.PaginatePermission(); - } - else { - this.allowPaginate = true; - } - } - }, - } + let currentQuery = {}; + _module.currentPageLocal = pageNumber; + Object.keys(_module.$route.query).forEach(function (param) { + currentQuery[param] = _module.$route.query[param]; + }); + currentQuery.page = pageNumber; + this.disableThrottle(this.disable); + await _module.$router.push({ + name: _module.$route.name, + query: currentQuery, + }); + } + } + }, + /** + * Postpone the pagination buttons to be clickable + */ + PaginatePermission: throttle(function () { + this.allowPaginate = true; + }, 1200), + + /** + * Set the environment ready for testing or development + * @param {Boolean} disable - should disable or not the throttle for the next call + */ + disableThrottle: function (disable) { + if (!disable) { + this.allowPaginate = false; + this.PaginatePermission(); + } else { + this.allowPaginate = true; + } + }, + }, +}; </script> <style scoped> @@ -259,7 +259,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Header_Sorting.vue.html b/documentation/html/components_Records_Search_Header_Sorting.vue.html index c8cbd86a06..a98064c82f 100644 --- a/documentation/html/components_Records_Search_Header_Sorting.vue.html +++ b/documentation/html/components_Records_Search_Header_Sorting.vue.html @@ -96,7 +96,9 @@

Source: components/Records/Search/Header/Sorting.vue

<v-list-item v-for="(item, index) in getFilters()" :key="'sorter_' + index" - :class="{'v-list-item--active': activeFilter === item.name + ',' + item.order}" + :class="{ + 'v-list-item--active': activeFilter === item.name + ',' + item.order, + }" @click="applySortQuery(item.name, item.order)" > <v-list-item-title> @@ -107,68 +109,70 @@

Source: components/Records/Search/Header/Sorting.vue

</template> <script> - export default { - name: "Sorting", - data() { - return { - sortFilters: [ - {name: 'name', label: 'name', active: false}, - {name: 'abbreviation', label: 'abbreviation', active: false}, - {name: '_score', label: 'best-match', active: false}, - ], - activeFilter: null - } - }, - mounted(){ - const _module = this; - _module.activeFilter = (_module.$route.query.orderBy) ? _module.$route.query.orderBy : '_score,asc'; - }, - methods: { - /** - * Set the orderBy parameter value to the given input for vueJs router - * @param {string} activeSortFilterName - sorting under this name - * @param {string} sortMethod - can be either ASC or DESC - */ - applySortQuery: async function (activeSortFilterName, sortMethod) { - let _module = this; - let inputOrderBy = `${activeSortFilterName},${sortMethod}`; - let currentQuery = JSON.parse(JSON.stringify(_module.$route.query)); - currentQuery["orderBy"] = inputOrderBy; - if (inputOrderBy !== _module.activeFilter){ - await _module.$router.push({ - name: _module.$route.name, - query: currentQuery - }); - } - }, - getFilters: function(){ - let filters = []; - this.sortFilters.forEach(function(filter){ - filters.push({ - label: filter.label, - name: filter.name, - order: "asc", - orderLabel: "ascending" - }); - if (filter.name !== '_score') { - filters.push({ - label: filter.label, - name: filter.name, - order: "desc", - orderLabel: "descending" - }) - } - }); - return filters; - } +export default { + name: "Sorting", + data() { + return { + sortFilters: [ + { name: "name", label: "name", active: false }, + { name: "abbreviation", label: "abbreviation", active: false }, + { name: "_score", label: "best-match", active: false }, + ], + activeFilter: null, + }; + }, + mounted() { + const _module = this; + _module.activeFilter = _module.$route.query.orderBy + ? _module.$route.query.orderBy + : "_score,asc"; + }, + methods: { + /** + * Set the orderBy parameter value to the given input for vueJs router + * @param {string} activeSortFilterName - sorting under this name + * @param {string} sortMethod - can be either ASC or DESC + */ + applySortQuery: async function (activeSortFilterName, sortMethod) { + let _module = this; + let inputOrderBy = `${activeSortFilterName},${sortMethod}`; + let currentQuery = JSON.parse(JSON.stringify(_module.$route.query)); + currentQuery["orderBy"] = inputOrderBy; + if (inputOrderBy !== _module.activeFilter) { + await _module.$router.push({ + name: _module.$route.name, + query: currentQuery, + }); + } + }, + getFilters: function () { + let filters = []; + this.sortFilters.forEach(function (filter) { + filters.push({ + label: filter.label, + name: filter.name, + order: "asc", + orderLabel: "ascending", + }); + if (filter.name !== "_score") { + filters.push({ + label: filter.label, + name: filter.name, + order: "desc", + orderLabel: "descending", + }); } - } + }); + return filters; + }, + }, +}; </script> <style scoped> - .highlighted { - color: red !important; - } +.highlighted { + color: red !important; +} </style> @@ -215,7 +219,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_AdvancedSearchDialogBox.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_AdvancedSearchDialogBox.vue.html index 7796ee254f..96ef5ab3a6 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_AdvancedSearchDialogBox.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_AdvancedSearchDialogBox.vue.html @@ -94,68 +94,57 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad class="sunlight-highlight-javascript linenums"><template> <v-row justify="center"> <v-dialog - :value="dialog" + :model-value="dialog" + :retain-focus="false" fullscreen persistent - :retain-focus="false" @keydown.esc="closeDialog()" > <v-card> <div - class="d-flex pt-6 px-6 justify-space-between" :class="{ - 'flex-column align-end': $vuetify.breakpoint.smAndDown, + 'flex-column align-end': $vuetify.display.smAndDown, }" + class="d-flex pt-6 px-6 justify-space-between" > <!--Close Button --> - <div - class="order-md-3" - style="padding-left: 14.4%" - > - <v-btn - icon - dark - @click="closeDialog()" - > - <v-icon - color="black" - size="40px" - > - mdi-close - </v-icon> + <div class="order-md-3" style="padding-left: 14.4%"> + <v-btn icon @click="closeDialog()"> + <v-icon icon="fas fa-xmark fa-solid" size="40" /> </v-btn> </div> <!--FAIRsharing Logo --> <router-link - to="/" - class="mt-n5 order-md-1" :class="{ - 'mt-n15 mx-auto': $vuetify.breakpoint.smAndDown, + 'mt-n15 mx-auto': $vuetify.display.smAndDown, }" + class="mt-n5 order-md-1" + to="/" > <img - src="/assets/fairsharing-logo.svg" alt="FAIRsharing logo" + src="/assets/fairsharing-logo.svg" @click="closeDialog()" - > + /> </router-link> <!--Advanced Search Header Text --> <div class="order-sm-2" style="text-align: center; margin: 0 auto 0 auto" > - <h2 class="primary--text"> + <h2 class="text-primary"> Advanced filtering and searching for FAIRsharing records </h2> <p style="text-align: center"> Find out more about our Advanced Search in our <a + class="text-decoration-underline" href="https://fairsharing.gitbook.io/fairsharing/how-to/advanced-search" target="_blank" - class="text-decoration-underline" - >gitbook documentation<v-icon x-small> - {{ "fa fa-link" }} - </v-icon> + >gitbook documentation + <v-icon size="x-small"> + {{ "fas fa-link" }} + </v-icon> </a> </p> </div> @@ -168,33 +157,30 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad <!-- </span>--> <!-- </div>--> - <div class="d-flex full-width"> + <div class="d-flex full-width align-center"> <TooltipComponent :tool-tip-text="toolTipText" - text-colour="black--text" + text-colour="text-black" /> <v-text-field v-if="!getEditDialogStatus" ref="inputRef" - class="text-h5" + class="text-h5 full-width" clearable - full-width - outlined hide-details label="Add Search text" - @change="updateSearchText($event)" + variant="outlined" + @update:model-value="updateSearchText($event)" /> <v-text-field v-else - class="text-h5" + :model-value="updatedAdvancedSearchText" + class="text-h5 full-width" clearable - full-width - outlined hide-details label="Add Search text" - :value="getAdvancedSearchText" - @input="updateSearchText($event)" - @change="updateSearchText($event)" + variant="outlined" + @update:model-value="updateSearchText($event)" /> </div> </v-card-title> @@ -202,29 +188,29 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad <QueryBuilderView :is-dialog="dialog" /> </v-card-text> <v-card-actions - class="px-6 justify-space-between" :class="{ - 'flex-column align-center': $vuetify.breakpoint.smAndDown, + 'flex-column align-center': $vuetify.display.smAndDown, }" + class="px-6 justify-space-between" > <v-btn - color="green" - variant="text" - class="white--text order-md-2" :class="{ - 'mb-3': $vuetify.breakpoint.smAndDown, + 'mb-3': $vuetify.display.smAndDown, }" :disabled="isContinue" - :width="$vuetify.breakpoint.smAndDown ? '100%' : '250'" + :width="$vuetify.display.smAndDown ? '100%' : '250'" + class="text-white order-md-2 bg-green" + elevation="2" + variant="text" @click="goToAdvancedSearch()" > Proceed </v-btn> <v-btn - color="accent3" + :width="$vuetify.display.smAndDown ? '100%' : '250'" + class="order-md-1 ml-0 bg-accent3" + elevation="2" variant="text" - class="white--text order-md-1 ml-0" - :width="$vuetify.breakpoint.smAndDown ? '100%' : '250'" @click="closeDialog()" > Close @@ -253,6 +239,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad type: String, }, }, + emits: ["clearSearchField"], data: () => { return { dialog: false, @@ -283,7 +270,9 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad ) { this.getAdvancedSearch["children"].forEach(({ children }) => { if (children && children.length) { - isTrue = children.every(({ value }) => value.length || isBoolean(value)); + isTrue = children.every( + ({ value }) => value.length || isBoolean(value), + ); isTrueArr.push(isTrue); } }); @@ -298,12 +287,16 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad watch: { getEditDialogStatus(newValue) { this.dialog = newValue; - this.updatedAdvancedSearchText = this.getAdvancedSearchText + this.updatedAdvancedSearchText = this.getAdvancedSearchText; }, getAdvancedSearchDialogStatus(newValue) { this.dialog = newValue; //Reset searchText field - if (newValue && this.$refs.inputRef !== undefined) { + if ( + newValue && + this.$refs.inputRef !== undefined && + this.$refs.inputRef !== null + ) { this.$refs.inputRef.reset(); } }, @@ -314,7 +307,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad if (this.$route.fullPath.toLowerCase() === "/advancedsearch") { advancedSearch.commit( "advancedSearch/setAdvancedSearchDialogStatus", - true + true, ); } }, @@ -322,16 +315,17 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad ...mapActions("advancedSearch", ["fetchAdvancedSearchResults"]), closeDialog() { - this.dialog = false; advancedSearch.commit("advancedSearch/setEditDialogStatus", false); advancedSearch.commit( "advancedSearch/setAdvancedSearchDialogStatus", - false + false, ); // Redirecting to home page after closing if (this.$route.fullPath.toLowerCase() === "/advancedsearch") { this.$router.push("/"); } + + this.dialog = false; }, isAdvancedSearchTerm(queryString) { @@ -360,12 +354,13 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad } else { this.fetchAdvancedSearchResults(this.advancedSearchTerm); } - this.closeDialog(); + //Clear search text field flag this.$emit("clearSearchField", true); this.advancedSearchQueryString(); this.advancedSearchNavigation(this.queryString); + this.closeDialog(); }, /** @@ -387,7 +382,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Ad this.queryString += params["identifier"]; this.queryString += "="; if (Array.isArray(params["value"])) { - this.queryString += params["value"].join('+'); + this.queryString += params["value"].join("+"); } else if (params["value"]) { this.queryString += params["value"]; } @@ -485,7 +480,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Countries.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Countries.vue.html index c53364eed2..ca9c577b47 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Countries.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Countries.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchCountries"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchCountries"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import countriesSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Countries", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -131,7 +129,10 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }, computed: { - ...mapGetters("countriesSearch", ["getSearchCountries", "getLoadingStatus"]), + ...mapGetters("countriesSearch", [ + "getSearchCountries", + "getLoadingStatus", + ]), ...mapGetters("advancedSearch", ["getEditDialogStatus"]), model: { @@ -157,7 +158,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (this.value && this.value.length) { countriesSearch.commit( "countriesSearch/setSearchCountries", - this.value + this.value, ); } } @@ -226,7 +227,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Domains.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Domains.vue.html index 093048efbc..06c4cc5d72 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Domains.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Domains.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchDomains"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchDomains"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import domainsSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Domains", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -223,7 +221,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Licences.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Licences.vue.html index a6b26f6cce..f3e88e4077 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Licences.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Licences.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchLicences"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchLicences"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import licencesSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Licences", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -157,7 +155,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (this.value && this.value.length) { licencesSearch.commit( "licencesSearch/setSearchLicences", - this.value + this.value, ); } } @@ -226,7 +224,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_ObjectTypes.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_ObjectTypes.vue.html index b7f1895956..735bb6e77a 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_ObjectTypes.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_ObjectTypes.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="typeList()"
-      :loading="getLoadingData"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getObjectTypes"
+    :item-value="itemValue"
+    :loading="getLoadingData"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import objectTypes from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "ObjectTypes", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -155,10 +153,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu handler(open) { if (open) { if (this.value && this.value.length) { - objectTypes.commit( - "objectTypes/setObjectTypes", - this.value - ); + objectTypes.commit("objectTypes/setObjectTypes", this.value); } } }, @@ -178,13 +173,6 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu getResults(queryParams) { if (queryParams) this.fetchObjectTypes(queryParams); }, - typeList() { - let items = []; - this.getObjectTypes.forEach((item) => { - items.push(item.label); - }) - return items; - } }, }; </script> @@ -233,7 +221,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Organisations.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Organisations.vue.html index 725922e04d..73b84e7d57 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Organisations.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Organisations.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="orgNames"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="orgNames"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import organisationSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Organisations", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -130,7 +128,10 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; }, computed: { - ...mapGetters("organisationSearch", ["getSearchOrganisations", "getLoadingStatus"]), + ...mapGetters("organisationSearch", [ + "getSearchOrganisations", + "getLoadingStatus", + ]), ...mapGetters("advancedSearch", ["getEditDialogStatus"]), model: { @@ -143,7 +144,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }, orgNames() { return this.getSearchOrganisations.map(({ name }) => name); - } + }, }, watch: { itemSelected(newValue) { @@ -159,7 +160,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (this.value && this.value.length) { organisationSearch.commit( "organisationSearch/setSearchOrganisations", - this.value + this.value, ); } } @@ -230,7 +231,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Subject.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Subject.vue.html index 4fd6ddab99..b77c521000 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Subject.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Subject.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchSubjects"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchSubjects"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import subjectSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Subject", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -177,9 +175,6 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }, }; </script> -<style lang="scss" scoped> -@import "@/styles/advancedSearchComponents"; -</style>

@@ -225,7 +220,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Taxonomies.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Taxonomies.vue.html index e5d1dbc44a..abbee1a797 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Taxonomies.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_Taxonomies.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchTaxonomies"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchTaxonomies"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import taxonomiesSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "Taxonomies", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -131,7 +129,10 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }, computed: { - ...mapGetters("taxonomiesSearch", ["getSearchTaxonomies", "getLoadingStatus"]), + ...mapGetters("taxonomiesSearch", [ + "getSearchTaxonomies", + "getLoadingStatus", + ]), ...mapGetters("advancedSearch", ["getEditDialogStatus"]), model: { @@ -157,7 +158,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (this.value && this.value.length) { taxonomiesSearch.commit( "taxonomiesSearch/setSearchTaxonomies", - this.value + this.value, ); } } @@ -226,7 +227,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_UserDefinedTag.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_UserDefinedTag.vue.html index 2449cc44d2..9ac4a940a6 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_UserDefinedTag.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GeneralComponents_UserDefinedTag.vue.html @@ -92,17 +92,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <div class="d-flex width-90">
-    <TooltipComponent :tool-tip-text="toolTipText" />
-    <AutoCompleteComponent
-      v-model="model"
-      :item-value="itemValue"
-      :item-list="getSearchUserDefinedTags"
-      :loading="getLoadingStatus"
-      @input="selectedValue"
-      @fetchData="getResults"
-    />
-  </div>
+  <AutoCompleteComponent
+    v-model="model"
+    :item-list="getSearchUserDefinedTags"
+    :item-value="itemValue"
+    :loading="getLoadingStatus"
+    :tool-tip-text="toolTipText"
+    @input="selectedValue"
+    @fetch-data="getResults"
+  />
 </template>
 <script>
 import { mapActions, mapGetters } from "vuex";
@@ -110,17 +108,17 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu import userDefinedTagsSearch from "@/store"; import AutoCompleteComponent from "../UtilComponents/AutoCompleteComponent.vue"; -import TooltipComponent from "../UtilComponents/TooltipComponent.vue"; export default { name: "UserDefinedTag", - components: { TooltipComponent, AutoCompleteComponent }, + components: { AutoCompleteComponent }, props: { value: { type: Array, default: () => [], }, }, + emits: ["input"], data: () => { return { itemSelected: [], @@ -131,7 +129,10 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }, computed: { - ...mapGetters("userDefinedTagsSearch", ["getSearchUserDefinedTags", "getLoadingStatus"]), + ...mapGetters("userDefinedTagsSearch", [ + "getSearchUserDefinedTags", + "getLoadingStatus", + ]), ...mapGetters("advancedSearch", ["getEditDialogStatus"]), model: { @@ -157,7 +158,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (this.value && this.value.length) { userDefinedTagsSearch.commit( "userDefinedTagsSearch/setSearchUserDefinedTags", - this.value + this.value, ); } } @@ -226,7 +227,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_DatabaseRule.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_DatabaseRule.vue.html index b26740f4d2..bdebc52567 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_DatabaseRule.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_DatabaseRule.vue.html @@ -91,19 +91,13 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
-<template>
+            class="sunlight-highlight-javascript linenums"><template>
   <div class="d-flex ruleWrapper">
     <select
       v-model="selectedDatabaseRule"
       class="query-builder-group-slot__rule-selection"
     >
-      <option
-        disabled
-        value=""
-      >
-        Select a database rule
-      </option>
+      <option disabled value="">Select a database rule</option>
       <option
         v-for="rule in databaseQueryBuilderComponents()"
         :key="rule.identifier"
@@ -122,7 +116,7 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu </template> <script> -import { sortBy } from "lodash" +import { sortBy } from "lodash"; import { AccessMethods, @@ -139,15 +133,15 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu DataProcessesAndConditions, DataVersioning, ResourceSustainability, - UsesPersistentIdentifier + UsesPersistentIdentifier, } from "../index"; export default { name: "DatabaseRule", props: { groupCtrl: { type: Object, - default: null - } + default: null, + }, }, data: () => { return { @@ -155,7 +149,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; }, - methods:{ + methods: { databaseQueryBuilderComponents() { let databaseRecordType = [ { @@ -164,101 +158,104 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu component: DatabaseRecordType, initialValue: () => [], }, - ] + ]; - return databaseRecordType.concat(this.sortedArrayList()) + return databaseRecordType.concat(this.sortedArrayList()); }, /** * Sort Array list by name */ sortedArrayList() { - return sortBy([ - { - identifier: "accessMethods", - name: "Access Methods", - component: AccessMethods, - initialValue: () => [], - }, - { - identifier: "dataCuration", - name: "Data Curation", - component: DataCuration, - initialValue: () => [], - }, - { - identifier: "dataDepositionCondition", - name: "Data Deposition Condition", - component: DataDepositionCondition, - initialValue: () => [], - }, - { - identifier: "dataAccessCondition", - name: "Data Access Condition ", - component: DataAccessCondition, - initialValue: () => [], - }, - { - identifier: "citationToRelatedPublications", - name: "Citation To Related Publications", - component: CitationToRelatedPublications, - initialValue: () => [], - }, - { - identifier: "dataAccessForPrePublicationReview", - name: "Data Access For Pre Publication Review", - component: DataAccessForPrePublicationReview, - initialValue: () => [], - }, - { - identifier: "dataContactInformation", - name: "Data Contact Information", - component: DataContactInformation, - initialValue: () => [], - }, - { - identifier: "dataVersioning", - name: "Data Versioning", - component: DataVersioning, - initialValue: () => [], - }, - { - identifier: "associatedTools", - name: "Associated Tools", - component: AssociatedTools, - initialValue: "", - }, - { - identifier: "certificationsAndCommunityBadges", - name: "Certifications And Community Badges", - component: CertificationsAndCommunityBadges, - initialValue: "", - }, - { - identifier: "dataProcessesAndConditions", - name: "Data Processes And Conditions", - component: DataProcessesAndConditions, - initialValue: "", - }, - { - identifier: "dataPreservationPolicy", - name: "Data Preservation Policy", - component: DataPreservationPolicy, - initialValue: "", - }, - { - identifier: "resourceSustainability", - name: "Resource Sustainability", - component: ResourceSustainability, - initialValue: "", - }, - { - identifier: "usesPersistentIdentifier", - name: "Uses Persistent Identifier", - component: UsesPersistentIdentifier, - initialValue: "", - }, - ], "name") + return sortBy( + [ + { + identifier: "accessMethods", + name: "Access Methods", + component: AccessMethods, + initialValue: () => [], + }, + { + identifier: "dataCuration", + name: "Data Curation", + component: DataCuration, + initialValue: () => [], + }, + { + identifier: "dataDepositionCondition", + name: "Data Deposition Condition", + component: DataDepositionCondition, + initialValue: () => [], + }, + { + identifier: "dataAccessCondition", + name: "Data Access Condition ", + component: DataAccessCondition, + initialValue: () => [], + }, + { + identifier: "citationToRelatedPublications", + name: "Citation To Related Publications", + component: CitationToRelatedPublications, + initialValue: () => [], + }, + { + identifier: "dataAccessForPrePublicationReview", + name: "Data Access For Pre Publication Review", + component: DataAccessForPrePublicationReview, + initialValue: () => [], + }, + { + identifier: "dataContactInformation", + name: "Data Contact Information", + component: DataContactInformation, + initialValue: () => [], + }, + { + identifier: "dataVersioning", + name: "Data Versioning", + component: DataVersioning, + initialValue: () => [], + }, + { + identifier: "associatedTools", + name: "Associated Tools", + component: AssociatedTools, + initialValue: "", + }, + { + identifier: "certificationsAndCommunityBadges", + name: "Certifications And Community Badges", + component: CertificationsAndCommunityBadges, + initialValue: "", + }, + { + identifier: "dataProcessesAndConditions", + name: "Data Processes And Conditions", + component: DataProcessesAndConditions, + initialValue: "", + }, + { + identifier: "dataPreservationPolicy", + name: "Data Preservation Policy", + component: DataPreservationPolicy, + initialValue: "", + }, + { + identifier: "resourceSustainability", + name: "Resource Sustainability", + component: ResourceSustainability, + initialValue: "", + }, + { + identifier: "usesPersistentIdentifier", + name: "Uses Persistent Identifier", + component: UsesPersistentIdentifier, + initialValue: "", + }, + ], + "name", + ); }, /** @@ -267,13 +264,12 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu * @param selectedRule - String */ addNewRule(item, selectedRule) { - item.addRule(selectedRule) - this.selectedDatabaseRule = '' + item.addRule(selectedRule); + this.selectedDatabaseRule = ""; }, - } + }, }; </script> -

@@ -319,7 +315,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_FairassistRule.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_FairassistRule.vue.html index 18dcee6481..e3d65489f0 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_FairassistRule.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_FairassistRule.vue.html @@ -97,12 +97,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu v-model="selectedFairassistRule" class="query-builder-group-slot__rule-selection" > - <option - disabled - value="" - > - Select a FAIRassist rule - </option> + <option disabled value="">Select a FAIRassist rule</option> <option v-for="rule in fairassistQueryBuilderComponents()" :key="rule.identifier" @@ -129,7 +124,8 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu FairassistRecordType, IndeterminateExamples, NegativeExamples, - PositiveExamples} from "../index"; + PositiveExamples, +} from "../index"; export default { name: "FairassistRule", props: { @@ -195,7 +191,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu initialValue: "", }, ], - "name" + "name", ); }, @@ -256,7 +252,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GeneralRule.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GeneralRule.vue.html index b40cf1f359..3256c61373 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GeneralRule.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GeneralRule.vue.html @@ -91,19 +91,13 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
-<template>
+            class="sunlight-highlight-javascript linenums"><template>
   <div class="d-flex ruleWrapper">
     <select
       v-model="selectedGeneralRule"
       class="query-builder-group-slot__rule-selection"
     >
-      <option
-        disabled
-        value=""
-      >
-        Select a generic rule
-      </option>
+      <option disabled value="">Select a generic rule</option>
       <option
         v-for="rule in generalQueryBuilderComponents()"
         :key="rule.identifier"
@@ -133,15 +127,15 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu Registry, Subject, Taxonomies, - UserDefinedTag + UserDefinedTag, } from "../index"; export default { name: "GeneralRule", props: { groupCtrl: { type: Object, - default: null - } + default: null, + }, }, data: () => { return { @@ -149,7 +143,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; }, - methods:{ + methods: { generalQueryBuilderComponents() { return [ { @@ -218,7 +212,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu component: ObjectTypes, initialValue: () => [], }, - ] + ]; }, /** @@ -227,13 +221,12 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu * @param selectedRule - String */ addNewRule(item, selectedRule) { - item.addRule(selectedRule) - this.selectedGeneralRule = '' + item.addRule(selectedRule); + this.selectedGeneralRule = ""; }, - } + }, }; </script> -

@@ -279,7 +272,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GroupCtrlSlot.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GroupCtrlSlot.vue.html index ddcba87500..159d3011f7 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GroupCtrlSlot.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_GroupCtrlSlot.vue.html @@ -94,7 +94,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu class="sunlight-highlight-javascript linenums"><template> <div class="query-builder-group-slot__group-control pa-4 d-flex" - :class="{ 'flex-column': $vuetify.breakpoint.smAndDown }" + :class="{ 'flex-column': $vuetify.display.smAndDown }" > <!-- General Component --> <GeneralRule :group-ctrl="groupCtrl" /> @@ -199,7 +199,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_PolicyRule.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_PolicyRule.vue.html index 7da6b59e0d..94abec0a0d 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_PolicyRule.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_PolicyRule.vue.html @@ -91,19 +91,13 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
-<template>
+            class="sunlight-highlight-javascript linenums"><template>
   <div class="d-flex ruleWrapper">
     <select
       v-model="selectedPolicyRule"
       class="query-builder-group-slot__rule-selection"
     >
-      <option
-        disabled
-        value=""
-      >
-        Select a policy rule
-      </option>
+      <option disabled value="">Select a policy rule</option>
       <option
         v-for="rule in policyQueryBuilderComponents()"
         :key="rule.identifier"
@@ -122,7 +116,7 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu </template> <script> -import { sortBy } from "lodash" +import { sortBy } from "lodash"; import { DataAvailabilityStatement, @@ -140,15 +134,16 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu RecommendsStandard, SharingResearchSoftware, SupportedCosts, - TimingOfDmp, UpdatingOfDmp + TimingOfDmp, + UpdatingOfDmp, } from "../index"; export default { name: "PolicyRule", props: { groupCtrl: { type: Object, - default: null - } + default: null, + }, }, data: () => { return { @@ -156,120 +151,124 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; }, - methods:{ + methods: { policyQueryBuilderComponents() { let policyRecordType = [ - { - identifier: "policytype", - name: "Policy Record Type", - component: PolicyRecordType, - initialValue: () => [], - }, - ] - return policyRecordType.concat(this.sortedArrayList()) + { + identifier: "policytype", + name: "Policy Record Type", + component: PolicyRecordType, + initialValue: () => [], + }, + ]; + return policyRecordType.concat(this.sortedArrayList()); }, /** * Sort Array list by name */ - sortedArrayList(){ - return sortBy([{ - identifier: "dataAvailabilityStatement", - name: "Data Availability Statement", - component: DataAvailabilityStatement, - initialValue: "", - }, - { - identifier: "dataProtection", - name: "Data Protection", - component: DataProtection, - initialValue: "", - }, - { - identifier: "dataCitation", - name: "Data Citation", - component: DataCitation, - initialValue: "", - }, - { - identifier: "dataPreservation", - name: "Data Preservation", - component: DataPreservation, - initialValue: "", - }, - { - identifier: "exceptionsToDataSharing", - name: "Exceptions To Data Sharing", - component: ExceptionsToDataSharing, - initialValue: "", - }, - { - identifier: "licencesForOutputs", - name: "Licences For Outputs", - component: LicencesForOutputs, - initialValue: "", - }, - { - identifier: "supportedCosts", - name: "Supported Costs", - component: SupportedCosts, - initialValue: "", - }, - { - identifier: "mandatedDataSharing", - name: "Mandated Data Sharing", - component: MandatedDataSharing, - initialValue: () => [], - }, - { - identifier: "mandatedDmpCreation", - name: "Mandated DMP Creation", - component: MandatedDmpCreation, - initialValue: () => [], - }, - { - identifier: "sharingResearchSoftware", - name: "Sharing Research Software", - component: SharingResearchSoftware, - initialValue: () => [], - }, - { - identifier: "timingOfDmp", - name: "Timing Of DMP", - component: TimingOfDmp, - initialValue: () => [], - }, - { - identifier: "guidanceToHelpEnableCompliance", - name: "Guidance To Help Enable Compliance", - component: GuidanceToHelpEnableCompliance, - initialValue: "", - }, - { - identifier: "monitoringOfCompliance", - name: "Monitoring Of Compliance", - component: MonitoringOfCompliance, - initialValue: "", - }, - { - identifier: "recommendsDatabase", - name: "Recommends At Least One Database", - component: RecommendsDatabase, - initialValue: "", - }, - { - identifier: "recommendsStandard", - name: "Recommends At Least One Standard", - component: RecommendsStandard, - initialValue: "", - }, - { - identifier: "updatingOfDmp", - name: "Updating of DMP", - component: UpdatingOfDmp, - initialValue: "", - }, - ], "name") + sortedArrayList() { + return sortBy( + [ + { + identifier: "dataAvailabilityStatement", + name: "Data Availability Statement", + component: DataAvailabilityStatement, + initialValue: "", + }, + { + identifier: "dataProtection", + name: "Data Protection", + component: DataProtection, + initialValue: "", + }, + { + identifier: "dataCitation", + name: "Data Citation", + component: DataCitation, + initialValue: "", + }, + { + identifier: "dataPreservation", + name: "Data Preservation", + component: DataPreservation, + initialValue: "", + }, + { + identifier: "exceptionsToDataSharing", + name: "Exceptions To Data Sharing", + component: ExceptionsToDataSharing, + initialValue: "", + }, + { + identifier: "licencesForOutputs", + name: "Licences For Outputs", + component: LicencesForOutputs, + initialValue: "", + }, + { + identifier: "supportedCosts", + name: "Supported Costs", + component: SupportedCosts, + initialValue: "", + }, + { + identifier: "mandatedDataSharing", + name: "Mandated Data Sharing", + component: MandatedDataSharing, + initialValue: () => [], + }, + { + identifier: "mandatedDmpCreation", + name: "Mandated DMP Creation", + component: MandatedDmpCreation, + initialValue: () => [], + }, + { + identifier: "sharingResearchSoftware", + name: "Sharing Research Software", + component: SharingResearchSoftware, + initialValue: () => [], + }, + { + identifier: "timingOfDmp", + name: "Timing Of DMP", + component: TimingOfDmp, + initialValue: () => [], + }, + { + identifier: "guidanceToHelpEnableCompliance", + name: "Guidance To Help Enable Compliance", + component: GuidanceToHelpEnableCompliance, + initialValue: "", + }, + { + identifier: "monitoringOfCompliance", + name: "Monitoring Of Compliance", + component: MonitoringOfCompliance, + initialValue: "", + }, + { + identifier: "recommendsDatabase", + name: "Recommends At Least One Database", + component: RecommendsDatabase, + initialValue: "", + }, + { + identifier: "recommendsStandard", + name: "Recommends At Least One Standard", + component: RecommendsStandard, + initialValue: "", + }, + { + identifier: "updatingOfDmp", + name: "Updating of DMP", + component: UpdatingOfDmp, + initialValue: "", + }, + ], + "name", + ); }, /** @@ -278,13 +277,12 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu * @param selectedRule - String */ addNewRule(item, selectedRule) { - item.addRule(selectedRule) - this.selectedPolicyRule = '' + item.addRule(selectedRule); + this.selectedPolicyRule = ""; }, - } + }, }; </script> -

@@ -330,7 +328,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_StandardRule.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_StandardRule.vue.html index 8d99ba8362..a7d0e6a5d2 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_StandardRule.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderComponents_GroupCtrlSlot_StandardRule.vue.html @@ -91,19 +91,13 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
-<template>
+            class="sunlight-highlight-javascript linenums"><template>
   <div class="d-flex ruleWrapper">
     <select
       v-model="selectedStandardRule"
       class="query-builder-group-slot__rule-selection"
     >
-      <option
-        disabled
-        value=""
-      >
-        Select a standards rule
-      </option>
+      <option disabled value="">Select a standards rule</option>
       <option
         v-for="rule in standardQueryBuilderComponents()"
         :key="rule.identifier"
@@ -122,20 +116,20 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu </template> <script> - import { GloballyUnique, IsImplemented, Persistent, Resolvable, - StandardRecordType} from "../index"; + StandardRecordType, +} from "../index"; export default { name: "StandardRule", props: { groupCtrl: { type: Object, - default: null - } + default: null, + }, }, data: () => { return { @@ -143,7 +137,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; }, - methods:{ + methods: { standardQueryBuilderComponents() { return [ { @@ -175,8 +169,8 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu name: "Resolvable", component: Resolvable, initialValue: "", - } - ] + }, + ]; }, /** @@ -185,13 +179,12 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu * @param selectedRule - String */ addNewRule(item, selectedRule) { - item.addRule(selectedRule) - this.selectedStandardRule = '' + item.addRule(selectedRule); + this.selectedStandardRule = ""; }, - } + }, }; </script> -

@@ -237,7 +230,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderView.vue.html b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderView.vue.html index 6e1601d1cb..6d335c7c22 100644 --- a/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderView.vue.html +++ b/documentation/html/components_Records_Search_Input_AdvancedSearch_QueryBuilderView.vue.html @@ -92,38 +92,26 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu
<template>
-  <query-builder
-    v-model="query"
-    :config="config"
-  >
+  <query-builder v-model="query" :config="config">
     <!-- To use the custom text instead of default text 'Operator' -->
 
     <template #groupOperator="props">
       <div class="query-builder-group__group-selection">
         <div class="tooltip">
-          <v-icon
-            small
-            class="mr-1 white--text tooltipIcon"
-          >
-            fa-question-circle
+          <v-icon class="mr-1 text-white tooltipIcon" size="small">
+            fas fa-question-circle
           </v-icon>
           <span class="tooltiptext" />
         </div>
         <span class="query-builder-group__group-operator">
           Select an Operator to apply across all groups
         </span>
-
         <select
-          class="operatorSelect"
           :value="props.currentOperator"
+          class="operatorSelect"
           @input="props.updateCurrentOperator($event.target.value)"
         >
-          <option
-            disabled
-            value=""
-          >
-            Select an operator
-          </option>
+          <option disabled value="">Select an operator</option>
           <option
             v-for="operator in props.operators"
             :key="operator.identifier"
@@ -140,7 +128,7 @@ 

Source: components/Records/Search/Input/AdvancedSearch/Qu </template> <script> -import QueryBuilder from "query-builder-vue"; +import QueryBuilder from "query-builder-vue-3"; import { mapGetters } from "vuex"; import advancedSearch from "@/store"; @@ -202,6 +190,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu UserDefinedTag, UsesPersistentIdentifier, } from "./QueryBuilderComponents"; + export default { name: "QueryBuilderView", components: { QueryBuilder, GroupCtrlSlot }, @@ -589,6 +578,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu watch: { query(newValue) { + newValue = JSON.parse(JSON.stringify(newValue)); advancedSearch.commit("advancedSearch/setAdvancedSearch", newValue); //Updating edit advanced search only if newValue has some data if (newValue["children"] && newValue["children"].length) { @@ -596,7 +586,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu if (item["children"] && item["children"].length) { advancedSearch.commit( "advancedSearch/setEditAdvancedSearch", - newValue + newValue, ); } }); @@ -641,8 +631,7 @@

Source: components/Records/Search/Input/AdvancedSearch/Qu }; </script> <style lang="scss" scoped> -@import "~vuetify/src/styles/settings/_variables.scss"; -@import "@/styles/queryBuilderView"; +@use "vuetify/settings"; </style>

@@ -689,7 +678,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_FilterAutocomplete.vue.html b/documentation/html/components_Records_Search_Input_FilterAutocomplete.vue.html index 816fd2944e..e15d86dbd8 100644 --- a/documentation/html/components_Records_Search_Input_FilterAutocomplete.vue.html +++ b/documentation/html/components_Records_Search_Input_FilterAutocomplete.vue.html @@ -94,80 +94,113 @@

Source: components/Records/Search/Input/FilterAutocomplet class="sunlight-highlight-javascript linenums"><template> <v-expansion-panel v-if="filter.filterName" - :id="filter.filterName + 'AutocompleteList' " + :id="filter.filterName + 'AutocompleteList'" > - <v-expansion-panel-header> {{ filter.filterLabel }}</v-expansion-panel-header> - <v-expansion-panel-content class="pl-5 pr-5"> - <div :class="['d-flex',{'flex-column':$vuetify.breakpoint.mdAndDown}]"> - <v-autocomplete - v-model="selectedValues" - :attach="true" - :items="getValues" - solo - dense - clearable - multiple - prepend-inner-icon="fa-search" - :placeholder="`Search`" - item-text="key" - item-value="key" - @focus="scrollTo(filter.filterName)" - @click:clear="reset(filter)" - > - <template #selection="data"> - <v-chip class="blue white--text mb-1 "> - <span class="chipsValueName"> - {{ cleanString(data.item.key) }} - </span> - </v-chip> - </template> - <template #item="data"> - <div class="d-flex full-width"> - <span class="filterValueName"> {{ cleanString(data.item.key) }}</span> - <span class="filterValueCount"> {{ data.item['doc_count'] }}</span> - </div> - </template> - </v-autocomplete> - <v-btn - color="primary" - class="ml-lg-2 custom-btn" - @click="applyFilters(filter)" - > - Apply - </v-btn> - </div> - </v-expansion-panel-content> + <v-expansion-panel-title> {{ filter.filterLabel }}</v-expansion-panel-title> + + <v-expansion-panel-text class="pl-5 pr-5"> + <v-row no-gutters> + <v-col cols="12"> + <div + :class="['d-flex', { 'flex-column': $vuetify.display.mdAndDown }]" + > + <v-combobox + v-model="selectedValues" + :items="getValues" + :menu-props="{ maxWidth: '50' }" + chips + class="text-capitalize" + clearable + closable-chips + color="primary" + density="compact" + hide-details="auto" + hide-no-data + item-title="key" + item-value="key" + multiple + placeholder="Search" + prepend-inner-icon="fas fa-search" + return-object + variant="solo" + @focus="scrollTo(filter.filterName)" + @click:clear="reset(filter)" + > + <template #chip="{ props, item }"> + <v-chip color="blue" v-bind="props" variant="flat"> + {{ item.title.replace(/_/g, " ") }} + <v-tooltip activator="parent" location="bottom"> + {{ item.title.replace(/_/g, " ") }} + </v-tooltip> + </v-chip> + </template> + + <template #item="{ props, item }"> + <v-list-item v-bind="props"> + <template #prepend="{ isActive }"> + <v-list-item-action start> + <v-checkbox-btn + :model-value="isActive" + readonly + ></v-checkbox-btn> + </v-list-item-action> + </template> + + <span v-if="item.raw.key" class="text-capitalize"> + {{ item.raw.key.replace(/_/g, " ") }} + </span> + + <template #append> + <span class="filterValueCount">{{ + item.raw.doc_count + }}</span> + </template> + </v-list-item> + </template> + </v-combobox> + <v-btn + class="ml-lg-2 custom-btn" + color="primary" + @click="applyFilters(filter)" + > + Apply + </v-btn> + </div> + </v-col> + </v-row> + </v-expansion-panel-text> </v-expansion-panel> </template> <script> -import {mapGetters, mapState} from 'vuex' +import { mapGetters, mapState } from "vuex"; -import clearString from '@/utils/stringUtils' +import clearString from "@/utils/stringUtils"; +import { capitalize } from "lodash"; export default { name: "FilterAutocomplete", mixins: [clearString], props: { - filter: {default: null, type: Object}, - lastItem:{default:false, type:Boolean} + filter: { default: null, type: Object }, + lastItem: { default: false, type: Boolean }, }, data: () => { return { - selectedValues: [] - } + selectedValues: [], + }; }, computed: { - ...mapGetters('records', ['getFilter']), - ...mapState('uiController', ['stickToTop']), + ...mapGetters("records", ["getFilter"]), + ...mapState("uiController", ["stickToTop"]), getValues: function () { let _module = this; let output = _module.getFilter(this.filter.filterName); - if (output.values && typeof output.values === 'object') { + if (output.values && typeof output.values === "object") { return output.values; } - return [] - } + return []; + }, }, methods: { /** @@ -178,37 +211,44 @@

Source: components/Records/Search/Input/FilterAutocomplet let filterName = _module.filter.filterName; let currentParams = JSON.parse(JSON.stringify(_module.$route.query)); + _module.selectedValues = _module.selectedValues.map(({ key }) => key); if (Object.keys(currentParams).indexOf(filterName) === -1) { - if (_module.selectedValues !== null && _module.selectedValues.length > 0) { + if ( + _module.selectedValues !== null && + _module.selectedValues.length > 0 + ) { if (_module.selectedValues.length === 1) { - currentParams[filterName] = encodeURIComponent(_module.selectedValues.join(',')); - } - else { + currentParams[filterName] = encodeURIComponent( + _module.selectedValues.join(","), + ); + } else { let newParam = []; _module.selectedValues.forEach(function (val) { newParam.push(encodeURIComponent(val)); }); currentParams[filterName] = newParam.join(","); } - currentParams['page'] = 1; + currentParams["page"] = 1; _module.$router.push({ name: _module.$route.name, - query: currentParams + query: currentParams, }); } - } - else { - if (_module.selectedValues === null || _module.selectedValues.length === 0) { + } else { + if ( + _module.selectedValues === null || + _module.selectedValues.length === 0 + ) { delete currentParams[_module.filter.filterName]; - currentParams['page'] = 1; + currentParams["page"] = 1; _module.$router.push({ name: _module.$route.name, - query: currentParams + query: currentParams, }); - } - else { + } else { let newParams = []; - let existingValues = currentParams[_module.filter.filterName].split(","); + let existingValues = + currentParams[_module.filter.filterName].split(","); _module.selectedValues.forEach(function (selectedValue) { const filterVal = encodeURIComponent(selectedValue); if (existingValues.indexOf(filterVal) === -1) { @@ -217,10 +257,10 @@

Source: components/Records/Search/Input/FilterAutocomplet }); currentParams[_module.filter.filterName] += `,${newParams.join(",")}`; if (newParams.length > 0) { - currentParams['page'] = 1; + currentParams["page"] = 1; _module.$router.push({ name: _module.$route.name, - query: currentParams + query: currentParams, }); } } @@ -236,16 +276,24 @@

Source: components/Records/Search/Input/FilterAutocomplet /* istanbul ignore next */ scrollTo(name) { let _module = this; - _module.$scrollTo("#" + name + 'AutocompleteList', 450, { - container: '#scrollable-holder', - easing: 'ease-in', - }) - } - } -} + _module.$scrollTo("#" + name + "AutocompleteList", 450, { + container: "#scrollable-holder", + easing: "ease-in", + }); + }, + + itemProps(item) { + return { + key: item.key, + title: capitalize(this.cleanString(item.key)), + subtitle: item.doc_count, + }; + }, + }, +}; </script> -<style scoped> +<style lang="scss" scoped> .filterValueName { text-overflow: ellipsis; overflow: hidden; @@ -261,7 +309,7 @@

Source: components/Records/Search/Input/FilterAutocomplet } .filterValueCount { - background: #2196F3; + background: #2196f3; color: white; padding: 0 7px; } @@ -269,6 +317,16 @@

Source: components/Records/Search/Input/FilterAutocomplet .custom-btn { height: 38px; } + +.v-field { + .v-chip { + height: inherit; + } +} + +:deep(.v-list-item-title) { + display: none; +} </style>

@@ -315,7 +373,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_FilterButton.vue.html b/documentation/html/components_Records_Search_Input_FilterButton.vue.html index 144d80ade5..fed241bf9b 100644 --- a/documentation/html/components_Records_Search_Input_FilterButton.vue.html +++ b/documentation/html/components_Records_Search_Input_FilterButton.vue.html @@ -93,26 +93,28 @@

Source: components/Records/Search/Input/FilterButton.vue<
<template>
   <v-tooltip
-    bottom
-    :disabled="itemModified.tooltip===undefined || $vuetify.breakpoint.smAndDown"
+    location="bottom"
+    :disabled="itemModified.tooltip === undefined || $vuetify.display.smAndDown"
   >
-    <template #activator="{ on }">
+    <template #activator="{ props }">
       <v-btn
         color="primary"
         class="mr-1 mr-lg-2"
-        :outlined="!itemModified.active"
-        :class="[isFirstItem && !doubleItems ? 'first-child' : 'flex-1', {'button-style-md-screens' : mdScreens, 'buttons-md-style' : multipleItems && !isFirstItem}]"
+        :variant="!itemModified.active ? 'outlined' : 'flat'"
+        :class="[
+          isFirstItem && !doubleItems ? 'first-child' : 'flex-1',
+          {
+            'button-style-md-screens': mdScreens,
+            'buttons-md-style': multipleItems && !isFirstItem,
+          },
+        ]"
+        v-bind="props"
         @click="selectFilter(itemModified)"
-        v-on="on"
       >
-        <span v-if="itemModified.title!=='ALL'">{{ itemModified.title }}</span>
-        <v-icon
-          v-else
-          small
-          color="primary"
-        >
-          {{ $vuetify.icons.values.loading }}
-        </v-icon>
+        <span v-if="itemModified.title !== 'ALL'">{{
+          itemModified.title
+        }}</span>
+        <v-icon v-else size="large" color="primary"> fas fa-sync </v-icon>
       </v-btn>
     </template>
     <span>{{ itemModified.tooltip }}</span>
@@ -120,119 +122,122 @@ 

Source: components/Records/Search/Input/FilterButton.vue< </template> <script> - import { isEqual } from "lodash"; - import { mapActions } from 'vuex' - - import currentParameter from "@/utils/currentParameterMixin.js" - - export default { - name: "FilterButton", - mixins: [currentParameter], - props: { - item: {default: null, type: Object}, - isFirstItem: {default: false, type: Boolean}, - mdScreens: {default: null, type: Boolean}, - itemParentIndex: {default: 0, type: Number}, - multipleItems: {default: false, type: Boolean}, - doubleItems: {default: false, type: Boolean}, - }, - data: () => { - return { - itemModified: {default: null, type: Object} - } - }, - watch: { - currentParameter: { - handler(newVal) { - const _module = this; - const fieldName = _module.itemModified.filterName; - const fieldValue = newVal[fieldName]; - const currentValue = _module.itemModified.value; - const title = _module.itemModified.title; - _module.checkCurrentParameters(title, fieldValue, currentValue); - }, - deep: true - } - }, - mounted(){ - this.$nextTick(function () { - const _module = this; - _module.itemModified = JSON.parse(JSON.stringify(this.item)); - const fieldValue = _module.currentParameter[this.itemModified.filterName]; - const currentValue = _module.itemModified.value; - const title = _module.itemModified.title; - _module.checkCurrentParameters(title, fieldValue, currentValue); - }); - }, - methods: { - checkCurrentParameters: function(title, fieldValue, currentValue) { - if (fieldValue === null) { - this.itemModified.active = title === 'all' || title === 'match all terms'; - } - else { - if (currentValue === undefined) { - this.itemModified.active = false; - } - else { - this.itemModified.active = currentValue.toString() === fieldValue; - } - } - }, - /** - * Apply the filters by building the new query parameters using the form data. - */ - applyFilters: function (selectedItem) { - const _module = this; - let currentQuery = {}; - let oldQuery = {}; - Object.keys(_module.$route.query).forEach(function (param) { - currentQuery[param] = _module.$route.query[param]; - oldQuery[param] = _module.$route.query[param] - }); - - Object.prototype.hasOwnProperty.call(selectedItem, 'value') ? currentQuery[selectedItem.filterName] = encodeURIComponent(selectedItem.value) - : delete currentQuery[selectedItem.filterName]; - if (!isEqual(currentQuery, oldQuery)) { - currentQuery['page'] = 1; - this.$router.push({ - name: _module.$route.name, - query: currentQuery - }); - } - }, - selectFilter: function (selectedItem) { - let _module = this; - _module.resetFilterButtons(_module.itemParentIndex); - _module.activateButton({ - 'activeItem': selectedItem, - 'itemParentIndex': _module.itemParentIndex - }); - this.applyFilters(selectedItem); - }, - ...mapActions("searchFilters", ["resetFilterButtons", "activateButton"]) +import { isEqual } from "lodash"; +import { mapActions } from "vuex"; +import customIcons from "@/plugins/icons"; + +import currentParameter from "@/utils/currentParameterMixin.js"; + +export default { + name: "FilterButton", + mixins: [currentParameter], + props: { + item: { default: null, type: Object }, + isFirstItem: { default: false, type: Boolean }, + mdScreens: { default: null, type: Boolean }, + itemParentIndex: { default: 0, type: Number }, + multipleItems: { default: false, type: Boolean }, + doubleItems: { default: false, type: Boolean }, + }, + data: () => { + return { + itemModified: { default: null, type: Object }, + customIcons: customIcons, + }; + }, + watch: { + currentParameter: { + handler(newVal) { + const _module = this; + const fieldName = _module.itemModified.filterName; + const fieldValue = newVal[fieldName]; + const currentValue = _module.itemModified.value; + const title = _module.itemModified.title; + _module.checkCurrentParameters(title, fieldValue, currentValue); + }, + deep: true, + }, + }, + mounted() { + this.$nextTick(function () { + const _module = this; + _module.itemModified = JSON.parse(JSON.stringify(this.item)); + const fieldValue = _module.currentParameter[this.itemModified.filterName]; + const currentValue = _module.itemModified.value; + const title = _module.itemModified.title; + _module.checkCurrentParameters(title, fieldValue, currentValue); + }); + }, + methods: { + ...mapActions("searchFilters", ["resetFilterButtons", "activateButton"]), + checkCurrentParameters: function (title, fieldValue, currentValue) { + if (fieldValue === null) { + this.itemModified.active = + title === "all" || title === "match all terms"; + } else { + if (currentValue === undefined) { + this.itemModified.active = false; + } else { + this.itemModified.active = currentValue.toString() === fieldValue; } - } + } + }, + /** + * Apply the filters by building the new query parameters using the form data. + */ + applyFilters: function (selectedItem) { + const _module = this; + let currentQuery = {}; + let oldQuery = {}; + + Object.keys(_module.$route.query).forEach(function (param) { + currentQuery[param] = _module.$route.query[param]; + oldQuery[param] = _module.$route.query[param]; + }); + Object.prototype.hasOwnProperty.call(selectedItem, "value") + ? (currentQuery[selectedItem.filterName] = encodeURIComponent( + selectedItem.value, + )) + : delete currentQuery[selectedItem.filterName]; + if (!isEqual(currentQuery, oldQuery)) { + currentQuery["page"] = 1; + this.$router.push({ + name: _module.$route.name, + query: currentQuery, + }); + } + }, + selectFilter: function (selectedItem) { + let _module = this; + _module.resetFilterButtons(_module.itemParentIndex); + _module.activateButton({ + activeItem: selectedItem, + itemParentIndex: _module.itemParentIndex, + }); + this.applyFilters(selectedItem); + }, + }, +}; </script> <style scoped> - .button-style-md-screens { - font-size: 9px !important; - } - - .first-child { - font-size: 11px; - width: 16.5%; - } - - .flex-1 { - font-size: 11px; - flex: 1; - } - - .buttons-md-style { - min-width: 32px !important; - } - +.button-style-md-screens { + font-size: 9px !important; +} + +.first-child { + font-size: 11px; + width: 16.5%; +} + +.flex-1 { + font-size: 11px; + flex: 1; +} + +.buttons-md-style { + min-width: 32px !important; +} </style>

@@ -279,7 +284,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_Input_SearchInput.vue.html b/documentation/html/components_Records_Search_Input_SearchInput.vue.html index 88df2f85c8..d775894875 100644 --- a/documentation/html/components_Records_Search_Input_SearchInput.vue.html +++ b/documentation/html/components_Records_Search_Input_SearchInput.vue.html @@ -94,8 +94,11 @@

Source: components/Records/Search/Input/SearchInput.vue<template> <v-card id="scrollable-holder" - :class="['pa-2', ($vuetify.breakpoint.mdAndUp) ? responsiveClassObject : 'fullHeight']" - outlined + :class="[ + 'pa-2 overflow-auto', + $vuetify.display.mdAndUp ? responsiveClassObject : 'fullHeight', + ]" + border tile elevation="3" width="100%" @@ -108,22 +111,18 @@

Source: components/Records/Search/Input/SearchInput.vue - <hr - v-if="showSearchBox" - class="mb-3 mr-2 ml-2 custom-hr" - > + <hr v-if="showSearchBox" class="mb-3 mr-2 ml-2 custom-hr" /> <!-- Filter Buttons --> <FilterButtons /> <!-- expansion Panels --> <v-expansion-panels - v-if="getFilters.length>0" + v-if="getFilters.length > 0" v-model="panel" multiple flat - hover - accordion + variant="accordion" > <filter-autocomplete v-for="filter in setup" @@ -135,7 +134,7 @@

Source: components/Records/Search/Input/SearchInput.vue <script> -import {mapGetters, mapState} from "vuex" +import { mapGetters, mapState } from "vuex"; import StringSearch from "@/components/Records/Search/Input/StringSearch"; import filterMapping from "@/data/FiltersLabelMapping.json"; @@ -145,20 +144,20 @@

Source: components/Records/Search/Input/SearchInput.vueSource: components/Records/Search/Input/SearchInput.vue i) + this.panel = [...Array(this.getFilters.length).keys()].map((k, i) => i); }, resetPanel() { - this.panel = [] + this.panel = []; }, createIndexForFilters: function () { - this.getFilters.forEach(item => { + this.getFilters.forEach((item) => { this.filterSelected[item.filterName] = []; }); }, @@ -190,10 +190,10 @@

Source: components/Records/Search/Input/SearchInput.vueSource: components/Records/Search/Input/SearchInput.vue <style scoped> @@ -217,7 +217,7 @@

Source: components/Records/Search/Input/SearchInput.vueSource: components/Records/Search/Input/SearchInput.vue

@@ -285,7 +284,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_SaveSearchButton.vue.html b/documentation/html/components_Records_Search_SaveSearch_SaveSearchButton.vue.html index 9201067c56..99cf262bfb 100644 --- a/documentation/html/components_Records_Search_SaveSearch_SaveSearchButton.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_SaveSearchButton.vue.html @@ -93,9 +93,9 @@

Source: components/Records/Search/SaveSearch/SaveSearchBu
<template>
   <v-btn
-    class="mb-2 white--text saveSearchResults"
+    class="mb-2 text-white saveSearchResults font-12"
     color="accent2"
-    small
+    size="small"
     @click="!user().isLoggedIn ? goToLogin() : saveSearchResults()"
   >
     Save Search Results
@@ -182,7 +182,7 @@ 
 
 	Documentation generated by JSDoc 4.0.5
 	
-		on Fri Mar 20th 2026
+		on Fri Apr 10th 2026
 	
 	using the DocStrap template.
 
diff --git a/documentation/html/components_Records_Search_SaveSearch_SaveSearchStepper.vue.html b/documentation/html/components_Records_Search_SaveSearch_SaveSearchStepper.vue.html
index 7bb7459ab9..2e43a434f8 100644
--- a/documentation/html/components_Records_Search_SaveSearch_SaveSearchStepper.vue.html
+++ b/documentation/html/components_Records_Search_SaveSearch_SaveSearchStepper.vue.html
@@ -94,191 +94,186 @@ 

Source: components/Records/Search/SaveSearch/SaveSearchSt class="sunlight-highlight-javascript linenums"><template> <v-row justify="center"> <v-dialog - :value="stepperDialog" - width="900" - persistent + :model-value="stepperDialog" :retain-focus="false" + persistent + width="900" @keydown.esc="closeStepperDialog()" > <!--Dialog Header --> - <StepperDialogHeader @restartStepper="restartStepper" /> + <StepperDialogHeader @restart-stepper="restartStepper" /> <!--Stepper Form --> <div v-if="getShowStepper"> - <v-stepper - v-model="steps" - non-linear - class="rounded-t-0" - > + <v-stepper :model-value="steps" class="rounded-t-0" non-linear> <!--Stepper Header --> <v-stepper-header class="rounded-0"> <!--Header 1 --> - <v-stepper-step - editable + <v-stepper-item :complete="steps > 1" - step="1" + :value="1" + editable + subtitle="Optional" + title="Create Policy Link" + @click="steps = 1" > - Create Policy Link - <small>Optional</small> - </v-stepper-step> + </v-stepper-item> <v-divider /> <!--Header 2 --> - <v-stepper-step + <v-stepper-item v-if="user().is_super_curator" - editable :complete="steps > 2" - step="2" + :value="2" + editable + subtitle="Optional" + title="Create Organisation Link" + @click="steps = 2" > - Create Organisation Link - <small>Optional</small> - </v-stepper-step> + </v-stepper-item> <v-divider v-if="user().is_super_curator" /> <!--Header 3 --> - <v-stepper-step + <v-stepper-item v-if="user().is_super_curator" - editable :complete="steps > 3" - step="3" + :value="3" + editable + subtitle="Optional" + title="Create User Link" + @click="steps = 3" > - Create User Link - <small>Optional</small> - </v-stepper-step> + </v-stepper-item> <v-divider v-if="user().is_super_curator" /> <!--Header 4 --> - <v-stepper-step + <v-stepper-item + :value="user().is_super_curator ? 4 : 2" editable - :step="user().is_super_curator ? 4 : 2" + @click="steps = user().is_super_curator ? 4 : 2" > Save Search - </v-stepper-step> + </v-stepper-item> </v-stepper-header> <!--Stepper Body --> - <v-stepper-items> + <v-window :model-value="steps" class="ma-6"> <!--Stepper Content 1 Policy List--> - <v-stepper-content step="1"> + <v-window-item :value="1"> <PolicyStepper /> <v-btn + :class="{ 'full-width': $vuetify.display.smAndDown }" class="float-md-right my-3" - :class="{ 'full-width': $vuetify.breakpoint.smAndDown }" color="primary" + variant="elevated" @click="steps = 2" > Continue </v-btn> - </v-stepper-content> + </v-window-item> <!--Stepper Content 2 Organisation List--> - <v-stepper-content - v-if="user().is_super_curator" - step="2" - > + <v-window-item v-if="user().is_super_curator" :value="2"> <OrganisationStepper /> <div class="d-flex flex-column flex-md-row justify-md-space-between my-3" > <v-btn - class="order-md-2" :class="{ - 'mb-3': $vuetify.breakpoint.smAndDown, + 'mb-3': $vuetify.display.smAndDown, }" + class="order-md-2" color="primary" + variant="elevated" @click="steps = 3" > Continue </v-btn> <v-btn - class="white--text order-md-1" + class="text-white order-md-1" color="accent3" + variant="elevated" @click="steps = 1" > Back </v-btn> </div> - </v-stepper-content> + </v-window-item> <!--Stepper Content 3 Save Search Form--> - <v-stepper-content - v-if="user().is_super_curator" - step="3" - > + <v-window-item v-if="user().is_super_curator" :value="3"> <UserStepper /> <div class="d-flex flex-column flex-md-row justify-md-space-between my-3" > <v-btn - class="order-md-2" :class="{ - 'mb-3': $vuetify.breakpoint.smAndDown, + 'mb-3': $vuetify.display.smAndDown, }" + class="order-md-2" color="primary" + variant="elevated" @click="steps = 4" > Continue </v-btn> <v-btn - class="white--text order-md-1" + class="text-white order-md-1" color="accent3" + variant="elevated" @click="steps = 2" > Back </v-btn> </div> - </v-stepper-content> + </v-window-item> <!--Stepper Content 4 Save Search Form--> - <v-stepper-content :step="user().is_super_curator ? 4 : 2"> - <v-form - ref="searchFormRef" - v-model="searchForm" - > + <v-window-item :value="user().is_super_curator ? 4 : 2"> + <v-form ref="searchFormRef" v-model="searchForm"> <v-text-field v-model="searchName" - label="Search Name" :rules="[isRequired()]" + label="Search Name" /> <v-text-field v-model="searchComment" :counter="100" - maxlength="100" label="Comments" + maxlength="100" /> </v-form> <div class="d-flex flex-column flex-md-row justify-md-space-between my-3" > <v-btn - class="order-md-2" :class="{ - 'mb-3': $vuetify.breakpoint.smAndDown, + 'mb-3': $vuetify.display.smAndDown, }" - color="success order-md-1" :disabled="!searchForm" :loading="loading" + class="order-md-2" + color="success order-md-1" + variant="elevated" @click="saveSearch" > Save </v-btn> <v-btn - class="white--text" + class="text-white" color="accent3" + variant="elevated" @click="steps = user().is_super_curator ? 3 : 1" > Back </v-btn> </div> - </v-stepper-content> - </v-stepper-items> + </v-window-item> + </v-window> </v-stepper> </div> - <ResultCard - v-else - @restartStepper="restartStepper" - /> + <ResultCard v-else @restart-stepper="restartStepper" /> </v-dialog> </v-row> </template> @@ -312,7 +307,7 @@

Source: components/Records/Search/SaveSearch/SaveSearchSt data() { return { stepperDialog: false, - steps: 1, + steps: 0, policySelected: [], organisationSelected: [], policyList: [], @@ -380,7 +375,7 @@

Source: components/Records/Search/SaveSearch/SaveSearchSt const searchResult = await restClient.saveSearch( saveSearchObj, - this.user().credentials.token + this.user().credentials.token, ); //Hide stepper and show result section @@ -416,7 +411,7 @@

Source: components/Records/Search/SaveSearch/SaveSearchSt /** * Restart the Save Search from step 1 - * @param value - Step number 1 + * @param value - Value number 1 */ restartStepper(value) { this.steps = value; @@ -469,7 +464,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_OrganisationStepper.vue.html b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_OrganisationStepper.vue.html index b50635a488..281e5caff8 100644 --- a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_OrganisationStepper.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_OrganisationStepper.vue.html @@ -96,43 +96,26 @@

Source: components/Records/Search/SaveSearch/StepperCompo <template v-if="user().is_super_curator"> <v-autocomplete v-model="organisationSelected" + v-model:search="searchOrganisation" :items="getSearchOrganisations" - :search-input.sync="searchOrganisation" - class="mb-7" :loading="getLoadingStatus" - hide-details - multiple - cache-items chips - deletable-chips + class="mb-7 full-width stepperField" + closable-chips + color="primary" + flat + hide-details="auto" + item-title="name" item-value="id" - item-text="name" label="Enter text to search for organisation(s) to associate with this saved search" + multiple + variant="underlined" > - <template #selection="data"> - <v-chip - v-bind="data.attrs" - :input-value="data.item['id']" - close - @click="data.select" - @click:close="remove(data.item['id'])" - > - {{ data.item["name"] }} - </v-chip> - </template> <template #no-data> - <div - v-show="!getLoadingStatus" - class="py-3 px-4" - > + <div v-show="!getLoadingStatus" class="py-3 px-4"> No organisation found </div> - <div - v-show="getLoadingStatus" - class="py-3 px-4" - > - Loading... - </div> + <div v-show="getLoadingStatus" class="py-3 px-4">Loading...</div> </template> </v-autocomplete> </template> @@ -140,9 +123,9 @@

Source: components/Records/Search/SaveSearch/StepperCompo <v-progress-linear :active="loading" :indeterminate="loading" + color="primary" height="6" rounded - color="primary" /> <template v-if="organisationList && organisationList.length"> <v-checkbox @@ -154,9 +137,7 @@

Source: components/Records/Search/SaveSearch/StepperCompo /> </template> <template v-else> - <p v-if="!loading"> - No organisation found - </p> + <p v-if="!loading">No organisation found</p> </template> </template> </div> @@ -278,7 +259,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_PolicyStepper.vue.html b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_PolicyStepper.vue.html index 107e26cac0..29ff59c0ca 100644 --- a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_PolicyStepper.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_PolicyStepper.vue.html @@ -96,43 +96,26 @@

Source: components/Records/Search/SaveSearch/StepperCompo <template v-if="user().is_super_curator"> <v-autocomplete v-model="policySelected" + v-model:search="searchPolicy" :items="getPolicyRecords" - :search-input.sync="searchPolicy" - class="mb-7" :loading="getLoadingStatus" - hide-details - multiple - cache-items chips - deletable-chips + class="mb-7 full-width stepperField" + closable-chips + color="primary" + flat + hide-details="auto" + item-title="name" item-value="id" - item-text="name" label="Enter text to search for policy record(s) to associate with this saved search" + multiple + variant="underlined" > - <template #selection="data"> - <v-chip - v-bind="data.attrs" - :input-value="data.item['id']" - close - @click="data.select" - @click:close="remove(data.item['id'])" - > - {{ data.item["name"] }} - </v-chip> - </template> <template #no-data> - <div - v-show="!getLoadingStatus" - class="py-3 px-4" - > + <div v-show="!getLoadingStatus" class="py-3 px-4"> No Policy found </div> - <div - v-show="getLoadingStatus" - class="py-3 px-4" - > - Loading... - </div> + <div v-show="getLoadingStatus" class="py-3 px-4">Loading...</div> </template> </v-autocomplete> </template> @@ -140,9 +123,9 @@

Source: components/Records/Search/SaveSearch/StepperCompo <v-progress-linear :active="loading" :indeterminate="loading" + color="primary" height="6" rounded - color="primary" /> <template v-if="policyList && policyList.length"> <v-checkbox @@ -154,9 +137,7 @@

Source: components/Records/Search/SaveSearch/StepperCompo /> </template> <template v-else> - <p v-if="!loading"> - No policy found - </p> + <p v-if="!loading">No policy found</p> </template> </template> </div> @@ -212,12 +193,11 @@

Source: components/Records/Search/SaveSearch/StepperCompo */ async fetchUserPolicyRecordData() { await this.getUser(); - let maintainedRecordsArr = await this.getUserRecords.user[ - "maintainedRecords" - ]; + let maintainedRecordsArr = + await this.getUserRecords.user["maintainedRecords"]; if (maintainedRecordsArr && maintainedRecordsArr.length) { return maintainedRecordsArr.filter( - (record) => record["registry"] === "Policy" + (record) => record["registry"] === "Policy", ); } return []; @@ -279,7 +259,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_ResultCard.vue.html b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_ResultCard.vue.html index 8d0d027867..ffc450e100 100644 --- a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_ResultCard.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_ResultCard.vue.html @@ -92,85 +92,84 @@

Source: components/Records/Search/SaveSearch/StepperCompo
<template>
-  <!--Success -->
-  <v-card
-    v-if="getSaveSearchStatus"
-    class="mx-auto rounded-t-0 pb-2"
-  >
-    <v-card-title
-      class="justify-center white--text mb-4"
-      style="background-color: green"
-    >
-      Success !!
-    </v-card-title>
-    <v-card-text class="pb-0">
-      <p class="text-body-1">
-        Your search was saved successfully. Please check the saved search table under profile page.
-      </p>
-    </v-card-text>
-
-    <v-card-actions
-      class="flex-column flex-md-row justify-md-space-between my-3"
-    >
-      <v-btn
-        class="white--text order-md-2"
-        :class="{
-          'mb-3': $vuetify.breakpoint.smAndDown,
-        }"
-        color="accent2"
-        to="/accounts/profile"
-        @click="resetSaveSearchDialog()"
+  <div>
+    <!--Success -->
+    <v-card v-if="getSaveSearchStatus" class="mx-auto rounded-t-0 pb-2">
+      <v-card-title
+        class="justify-center text-white mb-4 text-center"
+        style="background-color: green"
       >
-        Goto Profile page
-      </v-btn>
-      <v-btn
-        class="white--text order-md-1"
-        color="accent3"
-        @click="closeStepperDialog"
+        Success !!
+      </v-card-title>
+      <v-card-text class="pb-0 px-6">
+        <p class="text-body-1">
+          Your search was saved successfully. Please check the saved search
+          table under profile page.
+        </p>
+      </v-card-text>
+
+      <v-card-actions
+        class="flex-column flex-md-row justify-md-space-between my-3 px-6"
       >
-        Close
-      </v-btn>
-    </v-card-actions>
-  </v-card>
-
-  <!-- Error -->
-  <v-card
-    v-else-if="!getSaveSearchStatus"
-    class="mx-auto pb-2"
-  >
-    <v-card-title
-      class="justify-center white--text mb-4"
-      style="background-color: darkred"
-    >
-      Error
-    </v-card-title>
-    <v-card-text class="pb-0">
-      <p class="text-body-1">
-        Something went wrong. Please try again.
-      </p>
-    </v-card-text>
-    <v-card-actions
-      class="flex-column flex-md-row justify-md-space-between my-3"
-    >
-      <v-btn
-        class="white--text order-md-2"
-        :class="{
-          'mb-3': $vuetify.breakpoint.smAndDown,
-        }"
-        color="accent2"
-        @click="restartStepper"
+        <v-btn
+          :class="{
+            'mb-3': $vuetify.display.smAndDown,
+          }"
+          class="text-white order-md-2"
+          color="accent2"
+          to="/accounts/profile"
+          variant="elevated"
+          @click="resetSaveSearchDialog()"
+        >
+          Goto Profile page
+        </v-btn>
+        <v-btn
+          class="text-white order-md-1"
+          color="accent3"
+          variant="elevated"
+          @click="closeStepperDialog"
+        >
+          Close
+        </v-btn>
+      </v-card-actions>
+    </v-card>
+
+    <!-- Error -->
+    <v-card v-else-if="!getSaveSearchStatus" class="mx-auto pb-2">
+      <v-card-title
+        class="justify-center text-white mb-4 text-center"
+        style="background-color: darkred"
       >
-        Start Again
-      </v-btn>
-      <v-btn
-        class="white--text order-md-1"
-        color="secondary"
-        @click="closeStepperDialog"
+        Error
+      </v-card-title>
+      <v-card-text class="pb-0 px-6">
+        <p class="text-body-1">Something went wrong. Please try again.</p>
+      </v-card-text>
+      <v-card-actions
+        class="flex-column flex-md-row justify-md-space-between my-3 px-6"
       >
-        Close
-      </v-btn>
-    </v-card-actions>
-  </v-card>
+        <v-btn
+          :class="{
+            'mb-3': $vuetify.display.smAndDown,
+          }"
+          class="text-white order-md-2"
+          color="accent2"
+          data-test="restart-btn"
+          @click="restartStepper"
+        >
+          Start Again
+        </v-btn>
+        <v-btn
+          class="text-white order-md-1"
+          color="secondary"
+          data-test="close-btn"
+          @click="closeStepperDialog"
+        >
+          Close
+        </v-btn>
+      </v-card-actions>
+    </v-card>
+  </div>
 </template>
 
 <script>
@@ -180,6 +179,7 @@ 

Source: components/Records/Search/SaveSearch/StepperCompo export default { name: "ResultCard", + emits: ["restartStepper"], data() { return {}; }, @@ -209,7 +209,7 @@

Source: components/Records/Search/SaveSearch/StepperCompo } saveSearch.commit("saveSearch/setSaveSearchStepperDialog", false); this.resetSaveSearchDialog(); - this.$emit("restartStepper", 1); + this.$emit("restartStepper", 0); }, }, }; @@ -259,7 +259,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_StepperDialogHeader.vue.html b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_StepperDialogHeader.vue.html index 160ffd87e8..0e99956e1c 100644 --- a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_StepperDialogHeader.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_StepperDialogHeader.vue.html @@ -92,38 +92,31 @@

Source: components/Records/Search/SaveSearch/StepperCompo
<template>
-  <div
-    class="rounded-0 white py-3"
-    style="position: relative"
-  >
-    <h2 class="text-center">
-      Save Your Search
-    </h2>
+  <div class="rounded-0 bg-white py-3" style="position: relative">
+    <h2 class="text-center">Save Your Search</h2>
 
     <v-btn
+      elevation="0"
       icon
-      dark
       style="position: absolute; top: 10px; right: 15px"
     >
       <v-icon
-        color="
-          black"
+        icon="fas fa-xmark fa-solid"
         size="40px"
         @click="closeStepperDialog()"
-      >
-        mdi-close
-      </v-icon>
+      />
     </v-btn>
   </div>
 </template>
 
 <script>
-import {mapActions, mapGetters} from "vuex";
+import { mapActions, mapGetters } from "vuex";
 
 import saveSearch from "@/store";
 
 export default {
   name: "StepperDialogHeader",
+  emits: ["restartStepper"],
 
   computed: {
     ...mapGetters("saveSearch", ["getSaveSearchStatus"]),
@@ -137,7 +130,7 @@ 

Source: components/Records/Search/SaveSearch/StepperCompo closeStepperDialog() { if (this.getSaveSearchStatus) { this.resetSaveSearchDialog(); - this.$emit("restartStepper", 1); + this.$emit("restartStepper", 0); } saveSearch.commit("saveSearch/setSaveSearchStepperDialog", false); }, @@ -189,7 +182,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_UserStepper.vue.html b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_UserStepper.vue.html index 0694179691..2c88be3262 100644 --- a/documentation/html/components_Records_Search_SaveSearch_StepperComponents_UserStepper.vue.html +++ b/documentation/html/components_Records_Search_SaveSearch_StepperComponents_UserStepper.vue.html @@ -96,43 +96,24 @@

Source: components/Records/Search/SaveSearch/StepperCompo <template v-if="user().is_super_curator"> <v-autocomplete v-model="userSelected" + v-model:search="searchUser" :items="usersList" - :search-input.sync="searchUser" - class="mb-7" :loading="loading" - hide-details - multiple - cache-items chips - deletable-chips + class="mb-7 full-width stepperField" + closable-chips + color="primary" + flat + hide-details="auto" + item-title="username" item-value="id" - item-text="username" label="Enter text to search for additional user(s) to associate with this saved search" + multiple + variant="underlined" > - <template #selection="data"> - <v-chip - v-bind="data.attrs" - :input-value="data.item['id']" - close - @click="data.select" - @click:close="remove(data.item['id'])" - > - {{ data.item["username"] }} - </v-chip> - </template> <template #no-data> - <div - v-show="!loading" - class="py-3 px-4" - > - No User found - </div> - <div - v-show="loading" - class="py-3 px-4" - > - Loading... - </div> + <div v-show="!loading" class="py-3 px-4">No User found</div> + <div v-show="loading" class="py-3 px-4">Loading...</div> </template> </v-autocomplete> </template> @@ -230,7 +211,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/components_Users_Profiles_Private_ViewSavedSearchesTable.vue.html b/documentation/html/components_Users_Profiles_Private_ViewSavedSearchesTable.vue.html index 8e61f3d827..28c90ec3ff 100644 --- a/documentation/html/components_Users_Profiles_Private_ViewSavedSearchesTable.vue.html +++ b/documentation/html/components_Users_Profiles_Private_ViewSavedSearchesTable.vue.html @@ -103,18 +103,14 @@

Source: components/Users/Profiles/Private/ViewSavedSearch mobile-breakpoint="960" > <template #[`item.creator`]="{ item }"> - <a :href="`/users/${item.creator['id']}`">{{ item.creator["username"] }} + <a :href="`/users/${item.creator['id']}`" + >{{ item.creator["username"] }} </a> </template> <template #[`item.additionalUser`]="{ item }"> <ul class="pl-0"> - <li - v-for="user in additionalUsers(item)" - :key="user.id" - class="mb-2" - > - <a :href="`/users/${user['id']}`">{{ user["username"] }} - </a> + <li v-for="user in additionalUsers(item)" :key="user.id" class="mb-2"> + <a :href="`/users/${user['id']}`">{{ user["username"] }} </a> </li> </ul> </template> @@ -134,8 +130,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch :key="record.id" class="my-2" > - <a :href="`/${record['id']}`">{{ record["name"] }} - </a> + <a :href="`/${record['id']}`">{{ record["name"] }} </a> </li> </ul> </template> @@ -146,7 +141,8 @@

Source: components/Users/Profiles/Private/ViewSavedSearch :key="organisation.id" class="my-2" > - <a :href="`/organisations/${organisation['id']}`">{{ organisation["name"] }} + <a :href="`/organisations/${organisation['id']}`" + >{{ organisation["name"] }} </a> </li> </ul> @@ -167,12 +163,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch mdi-link-off </v-icon> <!--User is on its account profile page--> - <v-icon - v-else - @click="deleteItem(item)" - > - mdi-delete - </v-icon> + <v-icon v-else @click="deleteItem(item)"> mdi-delete </v-icon> </template> <template #no-data> <div> @@ -182,10 +173,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch </template> </v-data-table> <!--Delete action dialog box --> - <v-dialog - v-model="modifyDialog" - max-width="500px" - > + <v-dialog v-model="modifyDialog" max-width="500px"> <!--Delete --> <v-card v-if="deleteSavedSearch"> <v-card-title class="text-h5"> @@ -193,15 +181,11 @@

Source: components/Users/Profiles/Private/ViewSavedSearch </v-card-title> <v-card-actions> <v-spacer /> - <v-btn - class="white--text" - color="accent3" - @click="closeDialog" - > + <v-btn class="text-white" color="accent3" @click="closeDialog"> Cancel </v-btn> <v-btn - class="white--text" + class="text-white" color="success" :loading="loading" @click="deleteItemConfirm()" @@ -218,15 +202,11 @@

Source: components/Users/Profiles/Private/ViewSavedSearch </v-card-title> <v-card-actions> <v-spacer /> - <v-btn - class="white--text" - color="accent3" - @click="closeDialog" - > + <v-btn class="text-white" color="accent3" @click="closeDialog"> Cancel </v-btn> <v-btn - class="white--text" + class="text-white" color="success" :loading="loading" @click="unlinkItemConfirm()" @@ -253,7 +233,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch name: "ViewSavedSearchesTable", props: { createdSearches: { type: Array, default: null }, - savedSearches: { type: Array, default: null } + savedSearches: { type: Array, default: null }, }, data: () => { return { @@ -276,18 +256,43 @@

Source: components/Users/Profiles/Private/ViewSavedSearch ...mapGetters("users", ["getUserRecords"]), headers() { let headers = [ - { text: "Creator", value: "creator", align: "center", sortable: false }, - { text: "Date", value: "date", align: "center", sortable: false }, - { text: "Name", value: "name", align: "center", sortable: false }, - { text: "Comments", value: "comments", align: "center", sortable: false }, - { text: "Record", value: "record", align: "center", sortable: false }, - { text: "Organisation", value: "organisation", align: "center", sortable: false }, + { + title: "Creator", + value: "creator", + align: "center", + sortable: false, + }, + { title: "Date", value: "date", align: "center", sortable: false }, + { title: "Name", value: "name", align: "center", sortable: false }, + { + title: "Comments", + value: "comments", + align: "center", + sortable: false, + }, + { title: "Record", value: "record", align: "center", sortable: false }, + { + title: "Organisation", + value: "organisation", + align: "center", + sortable: false, + }, ]; if (this.user().isLoggedIn) { - headers.push({ text: "Actions", value: "actions", align: "center", sortable: false },) + headers.push({ + text: "Actions", + value: "actions", + align: "center", + sortable: false, + }); } - if(this.user().is_super_curator) { - headers.splice(1,0, { text: "Additional User", value: "additionalUser", align: "center", sortable: false },) + if (this.user().is_super_curator) { + headers.splice(1, 0, { + text: "Additional User", + value: "additionalUser", + align: "center", + sortable: false, + }); } return headers; }, @@ -304,21 +309,19 @@

Source: components/Users/Profiles/Private/ViewSavedSearch * page */ async combinedSearches(searchDeleted, searchUnlinked) { - let createdSearches, savedSearches + let createdSearches, savedSearches; if (searchDeleted) { await this.getUser(); createdSearches = this.getUserRecords.user["createdSearches"]; savedSearches = this.getUserRecords.user["savedSearches"]; - } - else if (searchUnlinked) { + } else if (searchUnlinked) { let userId = this.$route.params.id; let userR = await this.getPublicUser(userId); await this.getUser(); createdSearches = userR.user["createdSearches"]; savedSearches = userR.user["savedSearches"]; - } - else { + } else { createdSearches = this.createdSearches; savedSearches = this.savedSearches; } @@ -330,10 +333,9 @@

Source: components/Users/Profiles/Private/ViewSavedSearch } //Reversed array to show latest entry first let searchValues = [...mapSearches.values()]; - this.totalSearches = searchValues.sort((a, b) => new Date(b.createdAt) - - new Date(a.createdAt) + this.totalSearches = searchValues.sort( + (a, b) => new Date(b.createdAt) - new Date(a.createdAt), ); - }, /** @@ -355,7 +357,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch this.loading = true; let data = await restClient.deleteSavedSearch( this.selectedItem["id"], - this.user().credentials.token + this.user().credentials.token, ); if (data["message"] === "success") { @@ -383,22 +385,24 @@

Source: components/Users/Profiles/Private/ViewSavedSearch */ async unlinkItemConfirm() { this.loading = true; - let additionalUsersArr = this.additionalUsers(this.selectedItem) + let additionalUsersArr = this.additionalUsers(this.selectedItem); //Filter the user to unlink - let linkedUser = additionalUsersArr.filter(({id}) => id !== Number(this.$route.params.id)) + let linkedUser = additionalUsersArr.filter( + ({ id }) => id !== Number(this.$route.params.id), + ); //Array of id of the remaining users - linkedUser = linkedUser.map(({id}) => id) + linkedUser = linkedUser.map(({ id }) => id); let saveSearchObj = { user_ids: linkedUser, }; let updatedSearchResult = await restClient.updateSaveSearch( - this.selectedItem["id"], - saveSearchObj, - this.user().credentials.token + this.selectedItem["id"], + saveSearchObj, + this.user().credentials.token, ); //Commit the updated result to store @@ -409,7 +413,6 @@

Source: components/Users/Profiles/Private/ViewSavedSearch this.loading = false; this.unlinkSavedSearch = false; this.closeDialog(); - }, /** @@ -424,7 +427,7 @@

Source: components/Users/Profiles/Private/ViewSavedSearch openAdvancedSearch() { advancedSearch.commit( "advancedSearch/setAdvancedSearchDialogStatus", - true + true, ); }, /** @@ -433,30 +436,30 @@

Source: components/Users/Profiles/Private/ViewSavedSearch * @return {Array} - additional user list without creator */ additionalUsers(item) { - let additionalUsersList = item["users"].filter((e) => { - return e['id'] !== item.creator['id'] - }) + let additionalUsersList = item["users"].filter((e) => { + return e["id"] !== item.creator["id"]; + }); return additionalUsersList; }, - }, }; </script> <style lang="scss" scoped> -@import '~vuetify/src/styles/settings/_variables.scss'; -.userProfileSavedSearches::v-deep { +@use "sass:map"; +@use "vuetify/settings" as v; +.userProfileSavedSearches:deep(*) { table { tbody { tr { - td { - word-break: break-all; - @media #{map-get($display-breakpoints, 'md-and-up')} { - width: 100px; - min-width: 100px; - max-width: 100px; - } + td { + word-break: break-all; + @media #{map.get(v.$display-breakpoints, 'md-and-up')} { + width: 100px; + min-width: 100px; + max-width: 100px; } + } } } } @@ -507,7 +510,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/global.html b/documentation/html/global.html index a0e20509bf..392ed0bf5d 100644 --- a/documentation/html/global.html +++ b/documentation/html/global.html @@ -215,7 +215,7 @@

<constant> buildFace @@ -285,7 +285,7 @@

<constant> buildFil @@ -367,7 +367,7 @@

Type:
@@ -448,7 +448,7 @@
Type:
@@ -518,7 +518,7 @@

<constant> para @@ -599,7 +599,7 @@

Type:
@@ -751,7 +751,7 @@
Type:
@@ -905,7 +905,7 @@
Properties:
@@ -988,7 +988,7 @@

hackSearch( @@ -1245,7 +1245,7 @@

isAllowe @@ -1353,7 +1353,7 @@

isBluesky()< @@ -1569,7 +1569,7 @@

isEmailOr @@ -1677,7 +1677,7 @@

isImage()

@@ -1835,7 +1835,7 @@
Parameters:
@@ -1943,7 +1943,7 @@

isMastodon( @@ -2051,7 +2051,7 @@

isOrcid()

@@ -2159,7 +2159,7 @@

isRequired( @@ -2267,7 +2267,7 @@

isUrl()

@@ -2449,7 +2449,7 @@
Parameters:
@@ -2859,7 +2859,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/index.html b/documentation/html/index.html index bc3ad990af..7fc292aeb6 100644 --- a/documentation/html/index.html +++ b/documentation/html/index.html @@ -175,7 +175,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/lib_Client_ExternalClients.js.html b/documentation/html/lib_Client_ExternalClients.js.html index dacb13b83b..01a6d49517 100644 --- a/documentation/html/lib_Client_ExternalClients.js.html +++ b/documentation/html/lib_Client_ExternalClients.js.html @@ -91,95 +91,95 @@

Source: lib/Client/ExternalClients.js

import axios from "axios"
+            class="sunlight-highlight-javascript linenums">import axios from "axios";
 
 class ExternalRESTClients {
-
-    /**
-     * The RESTClient is a singleton class that handles the connection and data exchange from the back-end
-     * REST API.
-     */
-    constructor() {
-        if (ExternalRESTClients._instance) {
-            return ExternalRESTClients._instance
-        }
-        ExternalRESTClients._instance = this;
-        this.doiBaseURL = 'https://dx.doi.org/';
-        this.headers = {
-            'Accept': 'application/x-bibtex',
-        };
-        this.pmidBaseURL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json&id=";
-        this.tessBaseURL = "https://tess.elixir-europe.org/materials.json?q=";
-        this.orcidBaseURL = "https://pub.orcid.org/v2.0/";
-        this.rorOrganisationsBaseURL = "https://api.ror.org/v2/organizations?query=";
-    }
-
-    async getDOI(doi){
-        let localHeaders = this.headers;
-        localHeaders['Accept'] = 'application/json';
-        const request = {
-            url: this.doiBaseURL + doi,
-            headers: localHeaders
-        };
-        let response = await this.executeQuery(request);
-        return response.data;
-    }
-
-    async getPMID(id){
-        const request = {
-            url: this.pmidBaseURL + id,
-            headers: {
-                'Accept': 'application/json',
-            }
-        };
-        let response = await this.executeQuery(request);
-        return response.data;
-    }
-
-    async getTessRecords(string){
-        const request = {
-            url: this.tessBaseURL + string,
-            headers: this.headers
-        };
-        let response = await this.executeQuery(request);
-        return response.data;
-    }
-
-    async getOrcidUser(user){
-        this.headers['Accept'] = "application/orcid+json";
-        const request = {
-            url: this.orcidBaseURL + user,
-            headers: this.headers
-        };
-        let response = await this.executeQuery(request);
-        this.headers['Accept'] = 'application/x-bibtex';
-        return response.data;
+  /**
+   * The RESTClient is a singleton class that handles the connection and data exchange from the back-end
+   * REST API.
+   */
+  constructor() {
+    if (ExternalRESTClients._instance) {
+      return ExternalRESTClients._instance;
     }
-
-    async getROROrganisation(organisation){
-        let localHeaders = this.headers;
-        localHeaders['Accept'] = 'application/json';
-        const request = {
-            url: this.rorOrganisationsBaseURL + organisation,
-            headers: localHeaders
-        };
-        let response = await this.executeQuery(request);
-        return response.data;
-    }
-
-    /**
-     * Trigger the given query with Axios
-     * @param query
-     * @returns {Promise<*>}
-     */
-    async executeQuery(query) {
-        try {
-            return await axios.get(query.url, {headers: query.headers});
-        }
-        catch(e){
-            return({data: {error: e}});
-        }
+    ExternalRESTClients._instance = this;
+    this.doiBaseURL = "https://dx.doi.org/";
+    this.headers = {
+      Accept: "application/x-bibtex",
+    };
+    this.pmidBaseURL =
+      "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json&id=";
+    this.tessBaseURL = "https://tess.elixir-europe.org/materials.json?q=";
+    this.orcidBaseURL = "https://pub.orcid.org/v2.0/";
+    this.rorOrganisationsBaseURL =
+      "https://api.ror.org/v2/organizations?query=";
+  }
+
+  async getDOI(doi) {
+    let localHeaders = this.headers;
+    localHeaders["Accept"] = "application/json";
+    const request = {
+      url: this.doiBaseURL + doi,
+      headers: localHeaders,
+    };
+    let response = await this.executeQuery(request);
+    return response.data;
+  }
+
+  async getPMID(id) {
+    const request = {
+      url: this.pmidBaseURL + id,
+      headers: {
+        Accept: "application/json",
+      },
+    };
+    let response = await this.executeQuery(request);
+    return response.data;
+  }
+
+  async getTessRecords(string) {
+    const request = {
+      url: this.tessBaseURL + string,
+      headers: this.headers,
+    };
+    let response = await this.executeQuery(request);
+    return response.data;
+  }
+
+  async getOrcidUser(user) {
+    this.headers["Accept"] = "application/orcid+json";
+    const request = {
+      url: this.orcidBaseURL + user,
+      headers: this.headers,
+    };
+    let response = await this.executeQuery(request);
+    this.headers["Accept"] = "application/x-bibtex";
+    return response.data;
+  }
+
+  async getROROrganisation(organisation) {
+    let localHeaders = this.headers;
+    localHeaders["Accept"] = "application/json";
+    const request = {
+      url: this.rorOrganisationsBaseURL + organisation,
+      headers: localHeaders,
+    };
+    let response = await this.executeQuery(request);
+    return response.data;
+  }
+
+  /**
+   * Trigger the given query with Axios
+   * @param query
+   * @returns {Promise<*>}
+   */
+  async executeQuery(query) {
+    try {
+      return await axios.get(query.url, { headers: query.headers });
+    } catch (e) {
+      return { data: { error: e } };
     }
+  }
 }
 
 export default ExternalRESTClients;
@@ -228,7 +228,7 @@ 
 
 	Documentation generated by JSDoc 4.0.5
 	
-		on Fri Mar 20th 2026
+		on Fri Apr 10th 2026
 	
 	using the DocStrap template.
 
diff --git a/documentation/html/lib_Client_RESTClient.js.html b/documentation/html/lib_Client_RESTClient.js.html
index 1946e81253..4e5ebb8823 100644
--- a/documentation/html/lib_Client_RESTClient.js.html
+++ b/documentation/html/lib_Client_RESTClient.js.html
@@ -104,13 +104,13 @@ 

Source: lib/Client/RESTClient.js

return RESTClient._instance; } RESTClient._instance = this; - this.baseURL = process.env.VUE_APP_API_ENDPOINT; + this.baseURL = import.meta.env.VITE_API_ENDPOINT; this.headers = { Accept: "application/json", "Content-Type": "application/json", "Cache-Control": "no-cache", }; - this.headers["X-Client-Id"] = process.env.VUE_APP_CLIENT_ID; + this.headers["X-Client-Id"] = import.meta.env.VITE_CLIENT_ID; } /* USERS: all methods below related to handling user authentication */ @@ -851,7 +851,7 @@

Source: lib/Client/RESTClient.js

async updateStatusMaintenanceRequest( maintenanceRequest, newStatus, - userToken + userToken, ) { let _client = this; const request = { @@ -1230,7 +1230,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/lib_GraphClient_GraphClient.js.html b/documentation/html/lib_GraphClient_GraphClient.js.html index edccc3019a..19e434827e 100644 --- a/documentation/html/lib_GraphClient_GraphClient.js.html +++ b/documentation/html/lib_GraphClient_GraphClient.js.html @@ -91,8 +91,7 @@

Source: lib/GraphClient/GraphClient.js

const axios = require("axios");
-
+            class="sunlight-highlight-javascript linenums">import axios from "axios";
 import Fragments from "./queries/fragments/fragments.json";
 
 class GraphQLClient {
@@ -107,7 +106,7 @@ 

Source: lib/GraphClient/GraphClient.js

return GraphQLClient._instance; } GraphQLClient._instance = this; - this.url = process.env.VUE_APP_API_ENDPOINT + "/graphql"; + this.url = import.meta.env.VITE_API_ENDPOINT + "/graphql"; } /** @@ -232,7 +231,7 @@

Source: lib/GraphClient/GraphClient.js

Accept: "application/json", "Content-Type": "application/json", }; - this.headers["X-Client-Id"] = process.env.VUE_APP_CLIENT_ID; + this.headers["X-Client-Id"] = import.meta.env.VITE_CLIENT_ID; /* istanbul ignore if */ if (this.headers["X-Client-Id"] === undefined) { delete this.headers["X-Client-Id"]; @@ -286,7 +285,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-Home.html b/documentation/html/module-Home.html index 2f7787c54a..d0beaeed69 100644 --- a/documentation/html/module-Home.html +++ b/documentation/html/module-Home.html @@ -220,7 +220,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-Login.html b/documentation/html/module-Login.html index ee8303dea7..607c14e729 100644 --- a/documentation/html/module-Login.html +++ b/documentation/html/module-Login.html @@ -220,7 +220,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-NewRecord.html b/documentation/html/module-NewRecord.html index 0ce36f2676..9133b76365 100644 --- a/documentation/html/module-NewRecord.html +++ b/documentation/html/module-NewRecord.html @@ -220,7 +220,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-Pagination.html b/documentation/html/module-Pagination.html index ad80900ee5..ad2532d6cd 100644 --- a/documentation/html/module-Pagination.html +++ b/documentation/html/module-Pagination.html @@ -306,7 +306,7 @@
Parameters:
@@ -444,7 +444,7 @@
Parameters:
@@ -527,7 +527,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-Signup.html b/documentation/html/module-Signup.html index fae0b818eb..bd2fa5012f 100644 --- a/documentation/html/module-Signup.html +++ b/documentation/html/module-Signup.html @@ -220,7 +220,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/module-User.html b/documentation/html/module-User.html index e589887297..471322d048 100644 --- a/documentation/html/module-User.html +++ b/documentation/html/module-User.html @@ -228,7 +228,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/modules.list.html b/documentation/html/modules.list.html index b8a77b2a13..7a1765751f 100644 --- a/documentation/html/modules.list.html +++ b/documentation/html/modules.list.html @@ -235,7 +235,7 @@

<constant> buildFace @@ -305,7 +305,7 @@

<constant> buildFil @@ -387,7 +387,7 @@

Type:
@@ -468,7 +468,7 @@
Type:
@@ -538,7 +538,7 @@

<constant> para @@ -619,7 +619,7 @@

Type:
@@ -771,7 +771,7 @@
Type:
@@ -925,7 +925,7 @@
Properties:
@@ -1008,7 +1008,7 @@

hackSearch( @@ -1265,7 +1265,7 @@

isAllowe @@ -1373,7 +1373,7 @@

isBluesky()< @@ -1589,7 +1589,7 @@

isEmailOr @@ -1697,7 +1697,7 @@

isImage()

@@ -1855,7 +1855,7 @@
Parameters:
@@ -1963,7 +1963,7 @@

isMastodon( @@ -2071,7 +2071,7 @@

isOrcid()

@@ -2179,7 +2179,7 @@

isRequired( @@ -2287,7 +2287,7 @@

isUrl()

@@ -2469,7 +2469,7 @@
Parameters:
@@ -2879,7 +2879,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/namespaces.list.html b/documentation/html/namespaces.list.html index 00d27f4ca2..f0a0a68821 100644 --- a/documentation/html/namespaces.list.html +++ b/documentation/html/namespaces.list.html @@ -235,7 +235,7 @@

<constant> buildFace @@ -305,7 +305,7 @@

<constant> buildFil @@ -387,7 +387,7 @@

Type:
@@ -468,7 +468,7 @@
Type:
@@ -538,7 +538,7 @@

<constant> para @@ -619,7 +619,7 @@

Type:
@@ -771,7 +771,7 @@
Type:
@@ -925,7 +925,7 @@
Properties:
@@ -1008,7 +1008,7 @@

hackSearch( @@ -1265,7 +1265,7 @@

isAllowe @@ -1373,7 +1373,7 @@

isBluesky()< @@ -1589,7 +1589,7 @@

isEmailOr @@ -1697,7 +1697,7 @@

isImage()

@@ -1855,7 +1855,7 @@
Parameters:
@@ -1963,7 +1963,7 @@

isMastodon( @@ -2071,7 +2071,7 @@

isOrcid()

@@ -2179,7 +2179,7 @@

isRequired( @@ -2287,7 +2287,7 @@

isUrl()

@@ -2469,7 +2469,7 @@
Parameters:
@@ -2879,7 +2879,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/quicksearch.html b/documentation/html/quicksearch.html index a762ecfa85..abeafebd9a 100644 --- a/documentation/html/quicksearch.html +++ b/documentation/html/quicksearch.html @@ -7,7 +7,7 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/html/views_CreateRecord_NewRecord.vue.html b/documentation/html/views_CreateRecord_NewRecord.vue.html index 8c63989804..5d8541546f 100644 --- a/documentation/html/views_CreateRecord_NewRecord.vue.html +++ b/documentation/html/views_CreateRecord_NewRecord.vue.html @@ -92,96 +92,76 @@

Source: views/CreateRecord/NewRecord.vue

<template>
-  <v-container
-    id="createRecord"
-    fluid
-  >
-    <v-form
-      id="createRecord"
-      ref="createRecord"
-      v-model="formValid"
-    >
+  <v-container id="createRecord" fluid>
+    <v-form id="createRecord" ref="createRecord" v-model="formValid">
       <v-row>
         <v-col cols="12">
           <v-card v-if="loaded">
-            <v-card-title class="primary white--text">
-              <h3
-                v-if="fairassistOnly"
-                class="white--text"
-              >
+            <v-card-title class="bg-primary text-white">
+              <h3 v-if="fairassistOnly" class="text-white">
                 Creating a new FAIRassist record
               </h3>
-              <h3
-                v-else
-              >
-                Creating a new FAIRsharing record
-              </h3>
+              <h3 v-else>Creating a new FAIRsharing record</h3>
             </v-card-title>
-            <v-card-text
-              v-if="message.error"
-              class="pt-4"
-            >
+            <v-card-text v-if="message.error" class="pt-4">
               <v-alert type="error">
-                {{ message.value }}<v-icon class="px-3">
-                  fa-arrow-right
-                </v-icon> {{ message.value.response.data }}
+                {{ message.value }}
+                <v-icon class="px-3">fas fa-arrow-right</v-icon>
+                {{ message.value.response.data }}
               </v-alert>
             </v-card-text>
             <v-card-text class="pt-3">
               <v-container fluid>
-                <v-row>
-                  <base-fields
-                    :create-mode="true"
-                    :submit-record="submitAnyway"
-                    :loading="loading"
-                    @submission="setSubmitAnyway()"
-                    @clearing="tryAgain()"
-                    @createnewrecord="createRecord()"
-                  />
-                </v-row>
+                <base-fields
+                  :create-mode="true"
+                  :loading="loading"
+                  :submit-record="submitAnyway"
+                  @clearing="tryAgain()"
+                  @createnewrecord="createRecord()"
+                  @submission="setSubmitAnyway()"
+                />
               </v-container>
             </v-card-text>
           </v-card>
 
           <v-fade-transition>
-            <v-overlay
-              v-if="!loaded"
-              :absolute="false"
-              opacity="0.8"
-            >
-              <loaders />
-            </v-overlay>
+            <div>
+              <v-overlay
+                v-if="!loaded"
+                :absolute="false"
+                class="align-center justify-center"
+                opacity="0.8"
+              >
+                <loaders />
+              </v-overlay>
+            </div>
           </v-fade-transition>
         </v-col>
       </v-row>
     </v-form>
-    <v-dialog
-      v-model="recordCreated"
-      max-width="700px"
-    >
+    <v-dialog v-model="recordCreated" max-width="700px">
       <v-card>
-        <v-card-title
-          class="headline"
-        >
+        <v-card-title class="text-h5">
           <p>
             <b>Draft submission saved!</b>
           </p>
         </v-card-title>
         <v-card-text>
           <p>
-            We'll email you confirmation, including  details of the
-            remaining fields you'll need to add for your record. Our curators
-            won't check your record until it is complete. 
+            We'll email you confirmation, including details of the remaining
+            fields you'll need to add for your record. Our curators won't check
+            your record until it is complete.
           </p>
           <p>
-            Click the button below to carry on adding information to your record.
+            Click the button below to carry on adding information to your
+            record.
           </p>
         </v-card-text>
         <v-card-actions>
           <v-spacer />
           <v-btn
-            color="blue darken-1"
-            text
+            class="bg-primary"
+            variant="elevated"
             @click="redirectToEdit(newRecord)"
           >
             OK
@@ -193,172 +173,180 @@ 

Source: views/CreateRecord/NewRecord.vue

</template> <script> - import { mapActions, mapGetters,mapState } from "vuex" - - import status from "@/data/status.json" - import RESTClient from "@/lib/Client/RESTClient.js" - import { isUrl } from "@/utils/rules.js" - - import BaseFields from "../../components/Editor/GeneralInformation/BaseFields"; - import Loaders from "../../components/Navigation/Loaders"; - - let restClient = new RESTClient(); - - /** Component to generate the new record page and its buttons to redirect to new collection, standard, policy and database - * - */ - export default { - name: "NewRecordPage", - components: {Loaders, BaseFields}, - props: { - fairassistOnly: { type: Boolean, default: false } +import { mapActions, mapGetters, mapState } from "vuex"; + +import status from "@/data/status.json"; +import RESTClient from "@/lib/Client/RESTClient.js"; +import { isUrl } from "@/utils/rules.js"; + +import BaseFields from "../../components/Editor/GeneralInformation/BaseFields"; +import Loaders from "../../components/Navigation/Loaders"; + +let restClient = new RESTClient(); + +/** Component to generate the new record page and its buttons to redirect to new collection, standard, policy and database + * + */ +export default { + name: "NewRecordPage", + components: { Loaders, BaseFields }, + props: { + fairassistOnly: { type: Boolean, default: false }, + }, + data() { + return { + record: {}, + newRecord: {}, + recordsTypes: [], + formValid: false, + loaded: false, + message: { + error: false, + value: null, }, - data(){ - return { - record: {}, - newRecord: {}, - recordsTypes: [], - formValid: false, - loaded: false, - message: { - error: false, - value: null - }, - rules: { - isUrl: function(){return isUrl()} - }, - submitAnyway: false, - recordCreated: false, - loading: false, - } + rules: { + isUrl: function () { + return isUrl(); }, - computed: { - ...mapState('users', ["user"]), - ...mapState('editor', ['possibleDuplicates', 'objectTypes']), - ...mapGetters('record', ['getSection']) - }, - async mounted(){ - this.$nextTick(async function () { - this.loaded = false; - this.resetRecord(); - await this.getData(); - this.loaded = true; - this.$store.commit("editor/clearPossibleDuplicates"); - this.$store.commit("record/setCreatingNewRecord"); - }); - }, - methods: { - ...mapActions("editor", - ["getCountries", - "getRecordTypes", - "getTags", - "getObjectTypes", - "getPossibleDuplicates", - "cleanEditorStore" - ]), - ...mapActions("record", ["resetRecord"]), - async getData(){ - await this.getCountries(); - await this.getRecordTypes(this.fairassistOnly); - await this.getTags(); - await this.getObjectTypes(); - }, - async createRecord(){ - this.message = { - error: false, - value: null - }; - - let record = JSON.parse(JSON.stringify(this.getSection("generalInformation").data)); - // The user has not specified to ignore the warning of duplicate records. - // So, a check is made to see if the server reports any possibilities - if (!this.submitAnyway) { - record = await this.checkForDups(record); - } - - if (this.submitAnyway) { - if (this.possibleDuplicates.length > 0) { - record.dups_suspected = true; - } - else { - record.dups_suspected = false; - } - } - else { - if (this.possibleDuplicates.length > 0) { - return; - } - } - - this.loading = true; - - record.record_type_id = record.type.id; - record.metadata.status = status; - record.country_ids = record.countries.map(obj => obj.id); - record.metadata.status = record.status; - - delete record.status; - delete record.countries; - delete record.type; - let new_record = await restClient.createRecord(record, this.user().credentials.token); - if (new_record.error) { - this.message = { - error: true, - value: new_record.error - } - } - else { - this.recordCreated = true; - this.newRecord = new_record; - } - }, - redirectToEdit(record) { - this.recordCreated = false; - this.$router.push({ - path: record.data.id + "/edit" - }); - }, - async checkForDups(record) { - const _module = this; - // run the dup check query, using stored_name, stored_abbreviation or stored_homepage; any that - // are over three characters in length. - let fieldsToQuery = []; - // These are only queried if they are at least 6 characters... - [record.metadata.name, record.metadata.abbreviation].forEach(function(val) { - /* istanbul ignore else */ - if (val === null) { - return; - } - if (val.trim().length >= 3) { - fieldsToQuery.push(val); - } - }); - // ...whereas any length URL will do if it is valid. - let urlCheck = _module.rules.isUrl(); - /* istanbul ignore next */ - if (urlCheck(record.metadata.homepage)) { - fieldsToQuery.push(record.metadata.homepage) - } - /* istanbul ignore if */ - if (fieldsToQuery.length === 0) { - return; - } - // Now send the query. - await _module.getPossibleDuplicates({fields: fieldsToQuery}); - if (_module.possibleDuplicates.length > 0) { - record.dups_suspected = true; - } - return record; - }, - setSubmitAnyway() { - this.submitAnyway = true; - }, - tryAgain() { - this.submitAnyway = false; - this.$store.commit("editor/clearPossibleDuplicates"); - } + }, + submitAnyway: false, + recordCreated: false, + loading: false, + }; + }, + computed: { + ...mapState("users", ["user"]), + ...mapState("editor", ["possibleDuplicates", "objectTypes"]), + ...mapGetters("record", ["getSection"]), + }, + async mounted() { + this.$nextTick(async function () { + this.loaded = false; + this.resetRecord(); + await this.getData(); + this.loaded = true; + this.$store.commit("editor/clearPossibleDuplicates"); + this.$store.commit("record/setCreatingNewRecord"); + }); + }, + methods: { + ...mapActions("editor", [ + "getCountries", + "getRecordTypes", + "getTags", + "getObjectTypes", + "getPossibleDuplicates", + "cleanEditorStore", + ]), + ...mapActions("record", ["resetRecord"]), + async getData() { + await this.getCountries(); + await this.getRecordTypes(this.fairassistOnly); + await this.getTags(); + await this.getObjectTypes(); + }, + async createRecord() { + this.message = { + error: false, + value: null, + }; + + let record = JSON.parse( + JSON.stringify(this.getSection("generalInformation").data), + ); + // The user has not specified to ignore the warning of duplicate records. + // So, a check is made to see if the server reports any possibilities + if (!this.submitAnyway) { + record = await this.checkForDups(record); + } + + if (this.submitAnyway) { + if (this.possibleDuplicates.length > 0) { + record.dups_suspected = true; + } + else { + record.dups_suspected = false; } - } + } + else { + if (this.possibleDuplicates.length > 0) { + return; + } + } + + this.loading = true; + record.record_type_id = record.type.id; + record.metadata.status = status; + record.country_ids = record.countries.map((obj) => obj.id); + record.metadata.status = record.status; + + delete record.status; + delete record.countries; + delete record.type; + let new_record = await restClient.createRecord( + record, + this.user().credentials.token, + ); + if (new_record.error) { + this.message = { + error: true, + value: new_record.error, + }; + } + else { + this.recordCreated = true; + this.newRecord = new_record; + } + }, + redirectToEdit(record) { + this.recordCreated = false; + this.$router.push({ + path: record.data.id + "/edit", + }); + }, + async checkForDups(record) { + const _module = this; + // run the dup check query, using stored_name, stored_abbreviation or stored_homepage; any that + // are over three characters in length. + let fieldsToQuery = []; + // These are only queried if they are at least 6 characters... + [record.metadata.name, record.metadata.abbreviation].forEach( + function (val) { + /* istanbul ignore else */ + if (val === null) { + return; + } + if (val.trim().length >= 3) { + fieldsToQuery.push(val); + } + }, + ); + // ...whereas any length URL will do if it is valid. + let urlCheck = _module.rules.isUrl(); + /* istanbul ignore next */ + if (urlCheck(record.metadata.homepage)) { + fieldsToQuery.push(record.metadata.homepage); + } + /* istanbul ignore if */ + if (fieldsToQuery.length === 0) { + return; + } + // Now send the query. + await _module.getPossibleDuplicates({ fields: fieldsToQuery }); + if (_module.possibleDuplicates.length > 0) { + record.dups_suspected = true; + } + return record; + }, + setSubmitAnyway() { + this.submitAnyway = true; + }, + tryAgain() { + this.submitAnyway = false; + this.$store.commit("editor/clearPossibleDuplicates"); + }, + }, +}; </script> <style scoped> @@ -416,7 +404,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Home_Home.vue.html b/documentation/html/views_Home_Home.vue.html index 568a210c85..726394a2dc 100644 --- a/documentation/html/views_Home_Home.vue.html +++ b/documentation/html/views_Home_Home.vue.html @@ -93,10 +93,7 @@

Source: views/Home/Home.vue

<template>
   <v-main>
-    <v-container
-      fluid
-      class="text-center pa-0"
-    >
+    <v-container fluid class="text-center pa-0">
       <Carousel />
       <InfoBlock class="mb-12" />
       <SearchBlock />
@@ -108,10 +105,13 @@ 

Source: views/Home/Home.vue

</v-container> <!-- This html is from a safe source --> <!-- eslint-disable vue/no-v-html --> - <script - type="application/ld+json" - v-html="JSONLD" - /> + <!-- <script--> + <!-- type="application/ld+json"--> + <!-- v-html="JSONLD"--> + <!-- />--> + <component :is="'script'" type="application/ld+json"> + <span v-html="JSONLD" /> + </component> <!-- eslint-enable vue/no-v-html --> </v-main> </template> @@ -123,7 +123,7 @@

Source: views/Home/Home.vue

import InfoBlock from "@/components/Home/InfoBlock"; import SearchBlock from "@/components/Home/SearchBlock"; import StatisticsBlock from "@/components/Home/StatisticsBlock"; -import RestClient from "@/lib/Client/RESTClient.js" +import RestClient from "@/lib/Client/RESTClient.js"; const restClient = new RestClient(); @@ -132,23 +132,30 @@

Source: views/Home/Home.vue

*/ export default { name: "Home", - components:{Carousel, InfoBlock, SearchBlock, CategoryBlock, StatisticsBlock, CommunityBlock }, + components: { + Carousel, + InfoBlock, + SearchBlock, + CategoryBlock, + StatisticsBlock, + CommunityBlock, + }, data() { return { - JSONLD: {} - } + JSONLD: {}, + }; }, mounted() { this.getJsonld(); }, - destroyed() { - this.$scrollTo('body',0,{}); + unmounted() { + this.$scrollTo("body", 0, {}); }, methods: { async getJsonld() { this.JSONLD = await restClient.getHomepageJsonld(); }, - } + }, }; </script>
@@ -196,7 +203,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Organisations_Organisation.vue.html b/documentation/html/views_Organisations_Organisation.vue.html index 3908b09022..36336bfe49 100644 --- a/documentation/html/views_Organisations_Organisation.vue.html +++ b/documentation/html/views_Organisations_Organisation.vue.html @@ -94,36 +94,47 @@

Source: views/Organisations/Organisation.vue

class="sunlight-highlight-javascript linenums"><template> <v-container id="organisationPage" + class="standard bg-grey-lighten-3 pb-10" fluid - class="standard grey lighten-3 pb-10" > - <Loaders - v-if="loading" - /> + <v-fade-transition> + <div> + <v-overlay + v-model="loading" + :absolute="false" + class="align-center justify-center" + opacity="0.8" + > + <loaders /> + </v-overlay> + </div> + </v-fade-transition> <div v-if="error && !loading"> <NotFound /> </div> <div v-else> <!-- new stuff below here --> <v-card - class="pa-4 mt-2 ml-7 mr-7 d-flex flex-column" - outlined - :color="$vuetify.theme.themes.bg_organisation_record_card" - tile + :color=" + theme.computedThemes.value.fairSharingTheme.colors + .bg_organisation_record_card + " + class="pa-4 mt-2 ml-7 mr-7 d-flex flex-column overflow-initial bg-white" elevation="3" + rounded="0" + tile + variant="outlined" > <SectionTitle title="Organisation" /> <!-- TODO: This image refuses to go anywhere but centrally on the page --> <v-img v-if="logoUrl" :src="logoUrl" - contain aspect-ratio="1" + class="contain" height="120px" /> - <h2 - class="mt-3" - > + <h2 class="mt-3"> {{ organisation.name }} </h2> <!-- alternative names --> @@ -150,8 +161,8 @@

Source: views/Organisations/Organisation.vue

<v-chip v-for="type in organisation.types" :key="type + '_type'" - variant="elevated" class="ma-1" + variant="flat" > {{ type }} </v-chip> @@ -168,9 +179,9 @@

Source: views/Organisations/Organisation.vue

v-for="parent in organisation.parentOrganisations" :key="'parent_' + parent.id" :href="orgUrl() + parent.id" + class="ma-1" color="light-blue" variant="elevated" - class="ma-1" > {{ parent.name }} </v-chip> @@ -187,9 +198,9 @@

Source: views/Organisations/Organisation.vue

v-for="child in organisation.childOrganisations" :key="'child_' + child.id" :href="orgUrl() + child.id" + class="ma-1" color="light-blue" variant="elevated" - class="ma-1" > {{ child.name }} </v-chip> @@ -206,9 +217,9 @@

Source: views/Organisations/Organisation.vue

v-for="user in organisation.users" :key="'user_' + user.id" :href="getUserLink() + user.id" + class="ma-1" color="light-blue" variant="elevated" - class="ma-1" > {{ formatUser(user) }} </v-chip> @@ -224,8 +235,8 @@

Source: views/Organisations/Organisation.vue

<v-chip v-for="country in organisation.countries" :key="'country_' + country.id" - variant="elevated" class="ma-1" + variant="flat" > {{ country.name }} </v-chip> @@ -245,18 +256,15 @@

Source: views/Organisations/Organisation.vue

class="ma-1" variant="elevated" > - <a - class="black--text" - :href="search.url" - > + <a :href="search.url" class="text-black"> {{ search.name }} </a> <v-icon - v-if="user().is_super_curator? true:false" - right + v-if="user().is_super_curator ? true : false" class="ml-4" - size="20" color="error" + end + size="20" @click="confirmUnlinkSavedSearch(search)" > mdi-link-off @@ -265,295 +273,254 @@

Source: views/Organisations/Organisation.vue

</div> </div> - <!-- ror link --> <p v-if="organisation.rorLink" class="d-flex flex-row mt-4 mb-0 align-center" > - <img - src="/assets/icons/ror-icon-rbg-32.png" - class="mr-1" - > - <a - :href="organisation.rorLink" - > + <img class="mr-1" src="/assets/icons/ror-icon-rbg-32.png" /> + <a :href="organisation.rorLink"> {{ organisation.rorLink }} </a> </p> <!-- edit --> - <p - v-if="user().is_curator" - class="mt-4" - > - <v-btn - class="warning" - @click="startEditing" - > + <p v-if="user().is_curator" class="mt-4"> + <v-btn class="bg-warning" @click="startEditing"> Edit Organisation </v-btn> - <v-btn - class="error ml-2" - @click="confirmDeleteOrganisation" - > + <v-btn class="bg-error ml-2" @click="confirmDeleteOrganisation"> Delete Organisation </v-btn> </p> </v-card> - <SearchOrganisationRecords id="searchOrganisationRecords" - class="mb-10 ma-4" :organisation="organisation" + class="mb-10 ma-4" /> - <v-col - v-if="!loading" - cols="12" - > - <v-container - fluid - class="py-0" - /> + <v-col v-if="!loading" cols="12"> + <v-container class="py-0" fluid /> <v-fade-transition> - <v-overlay - v-if="loading" - :absolute="false" - opacity="0.8" - > - <loaders /> - </v-overlay> + <div> + <v-overlay + v-model="loading" + :absolute="false" + class="align-center justify-center" + opacity="0.8" + > + <loaders /> + </v-overlay> + </div> </v-fade-transition> </v-col> </div> <!-- Edit existing organisation --> - <v-expand-transition> - <v-dialog - v-model="showEditDialog" - height="100%" + <v-dialog v-model="showEditDialog" height="100%"> + <v-form + id="editOrganisation" + ref="editOrganisation" + v-model="editFormValid" > - <v-form - id="editOrganisation" - ref="editOrganisation" - v-model="editFormValid" - > - <v-card> - <v-card-text> - <v-container fluid> - <v-row> - <v-col - cols="12" - class="pb-0" - > - <v-text-field - v-model="editedOrganisation.name" - label="Name" - outlined - :rules="[rules.isRequired()]" - /> - </v-col> - <v-col - cols="12" - class="pb-0" - > - <v-text-field - v-model="editedOrganisation.homepage" - label="Homepage" - outlined - :rules="[rules.isRequired(), rules.isURL()]" - /> - </v-col> - <v-col - cols="12" - class="pb-0" - > - <v-text-field - v-model="editedOrganisation.rorLink" - label="ROR Link" - outlined - :rules="[rules.isURL()]" - /> - </v-col> - <v-col - cols="12" - class="pb-0" - > - <v-text-field - v-model="editedOrganisation.alternativeNames" - outlined - item-text="name" - item-value="id" - return-object - label="Alternative names" - :rules="[]" - /> - </v-col> - <!-- TODO insert parent and child organisations here --> - <v-col - cols="12" - class="pb-0" - > - <v-autocomplete - v-model="editedOrganisation.types" - :items="organisationsTypes" - multiple - outlined - item-text="name" - item-value="id" - return-object - label="Select an organisation type(s)" - :rules="[rules.isRequired()]" - > - <!-- autocomplete selected --> - <template #selection="data"> - <v-chip - class="blue white--text removeStyle" - close - @click:close="removeType(data.item)" - > - {{ data.item.name }} - </v-chip> - </template> - </v-autocomplete> - </v-col> - <v-col - cols="12" - class="pb-0" + <v-card> + <v-card-text> + <v-container fluid> + <v-row> + <v-col class="pb-0" cols="12"> + <v-text-field + v-model="editedOrganisation.name" + :rules="[rules.isRequired()]" + label="Name" + variant="outlined" + /> + </v-col> + <v-col class="pb-0" cols="12"> + <v-text-field + v-model="editedOrganisation.homepage" + :rules="[rules.isRequired(), rules.isURL()]" + label="Homepage" + variant="outlined" + /> + </v-col> + <v-col class="pb-0" cols="12"> + <v-text-field + v-model="editedOrganisation.rorLink" + :rules="[rules.isURL()]" + label="ROR Link" + variant="outlined" + /> + </v-col> + <v-col class="pb-0" cols="12"> + <v-text-field + v-model="editedOrganisation.alternativeNames" + :rules="[]" + item-text="name" + item-value="id" + label="Alternative names" + return-object + variant="outlined" + /> + </v-col> + <!-- TODO insert parent and child organisations here --> + <v-col class="pb-0" cols="12"> + <v-autocomplete + v-model="editedOrganisation.types" + :items="organisationsTypes" + :rules="[rules.isRequired()]" + chips + clearable + closable-chips + item-title="name" + item-value="id" + label="Select an organisation type(s)" + multiple + return-object + variant="outlined" > - <v-autocomplete - v-model="editedOrganisation.countries" - label="Countries" - :items="countries" - item-text="name" - item-value="name" - multiple - outlined - return-object - :rules="[editedOrganisation.countries && - !(editedOrganisation.countries === 0)]" - > - <template #prepend> - <v-tooltip - bottom - max-width="300px" - class="text-justify" - > - <template #activator="{ on }"> - <v-icon v-on="on"> - fa-question-circle - </v-icon> - </template> - {{ tooltips['countries'] }} - </v-tooltip> - </template> - - <!-- autocomplete selected --> - <template #selection="data"> - <v-chip - class="blue white--text removeStyle" - close - @click:close="removeCountry( data.item )" - > - {{ data.item.name }} - </v-chip> - </template> - - <!-- autocomplete data --> - <template #item="data"> - <country-flag - v-if="data.item.code !== null" - :country="data.item.code" - size="normal" - /> - <img - v-else - src="@/assets/placeholders/country.png" - class="ml-4 mr-3" - > - <div> {{ data.item.name }} </div> - </template> - </v-autocomplete> - </v-col> - <v-col - cols="12" - class="pb-0" + <!-- autocomplete selected --> + <template #chip="{ props, item }"> + <v-chip + :text="item.raw.name" + color="blue" + v-bind="props" + variant="flat" + ></v-chip> + </template> + </v-autocomplete> + </v-col> + <v-col class="pb-0" cols="12"> + <v-autocomplete + v-model="editedOrganisation.countries" + :items="countries" + :rules="[ + editedOrganisation.countries && + !(editedOrganisation.countries === 0), + ]" + item-title="name" + item-value="name" + label="Countries" + multiple + return-object + variant="outlined" > - <v-file-input - v-model="editedOrganisation.logo" - :rules="[rules.isImage(), imageSizeCorrect]" - clearable - :loading="logoLoading" - accept="image/png,image/jpeg" - label="Logo" - prepend-icon="fa-image" - /> - <span>JPEG or PNG, max. file size 3MB.</span> - </v-col> - <v-col - cols="12" - class="pb-0" - > - <v-img - v-if="logoUrl" - :src="logoUrl" - contain - aspect-ratio="1" - height="120px" - /> - </v-col> - </v-row> - </v-container> - </v-card-text> - <v-card-actions> - <v-btn - class="error" - @click="showEditDialog = false" - > - Cancel - </v-btn> - <v-btn - class="success" - :disabled="!editFormValid || imageTooBig" - @click="editOrganisation()" - > - Save - </v-btn> - </v-card-actions> - </v-card> - </v-form> - </v-dialog> - </v-expand-transition> + <template #prepend> + <v-tooltip + class="text-justify" + location="bottom" + max-width="300px" + > + <template #activator="{ props }"> + <v-icon v-bind="props"> + fas fa-question-circle + </v-icon> + </template> + {{ tooltips["countries"] }} + </v-tooltip> + </template> + + <!-- Item selected --> + <template #chip="data"> + <v-chip + class="bg-blue text-white removeStyle" + closable + @click:close="removeCountry(data.item.raw)" + > + {{ data.item.raw.name }} + </v-chip> + </template> + + <!-- autocomplete data --> + <template #item="{ props, item }"> + <v-list-item v-bind="props"> + <template #prepend> + <country-flag + v-if="item.raw.code !== null" + :country="item.raw.code" + class="mr-1 mt-n2" + size="normal" + /> + <v-img + v-else + class="ml-4 mr-3" + src="@/assets/placeholders/country.png" + /> + </template> + <span>{{ item.raw.name }}</span> + </v-list-item> + </template> + </v-autocomplete> + </v-col> + <v-col class="pb-0" cols="12"> + <v-file-input + v-model="editedOrganisation.logo" + :loading="logoLoading" + :rules="[rules.isImage(), imageSizeCorrect]" + accept="image/png,image/jpeg" + clearable + label="Logo" + prepend-icon="fas fa-image" + /> + <span>JPEG or PNG, max. file size 3MB.</span> + </v-col> + <v-col class="pb-0" cols="12"> + <v-img + v-if="logoUrl" + :src="logoUrl" + aspect-ratio="1" + class="contain" + height="120px" + /> + </v-col> + </v-row> + </v-container> + </v-card-text> + <v-card-actions class="justify-center"> + <v-btn + class="bg-error" + variant="elevated" + width="200" + @click="showEditDialog = false" + > + Cancel + </v-btn> + <v-btn + :disabled="!editFormValid || imageTooBig" + class="bg-success" + variant="elevated" + width="200" + @click="editOrganisation()" + > + Save + </v-btn> + </v-card-actions> + </v-card> + </v-form> + </v-dialog> <!-- Delete dialog box --> - <v-dialog - v-model="confirmDelete" - max-width="700px" - persistent - > + <v-dialog v-model="confirmDelete" max-width="500px" persistent> <!-- Delete organisation --> <v-card v-if="deleteOrganisationCard"> - <v-card-title - class="headline" + <v-card-title class="text-h5 font-weight-bold"> + Deleting organisation!</v-card-title > - Deleting organisation! - </v-card-title> - <v-card-text> - <p> - <b>Are you sure you want to do that? It will be permanently deleted.</b> - </p> + <v-card-text class="font-weight-bold"> + Are you sure you want to do that? It will be permanently deleted. </v-card-text> <v-card-actions> <v-spacer /> <v-btn - class="info" + class="bg-info text-white" + variant="elevated" @click="deleteOrganisation(false)" > Cancel </v-btn> <v-btn - class="error" + class="bg-error text-white" + variant="elevated" @click="deleteOrganisation(true)" > Delete @@ -563,23 +530,21 @@

Source: views/Organisations/Organisation.vue

</v-card> <!-- Unlink saved search --> <v-card v-if="unlinkSavedSearchCard"> - <v-card-title class="text-h5"> - Unlinking saved search - </v-card-title> - <v-card-text>This is will unlink saved search from this organisaton</v-card-text> + <v-card-title class="text-h5"> Unlinking saved search</v-card-title> + <v-card-text + >This will unlink the saved search from this organisation. + </v-card-text> <v-card-actions> <v-spacer /> <v-btn - class="white--text" - color="accent3" + class="bg-grey-darken-1 text-white" @click="unlinkSavedSearch(false)" > Cancel </v-btn> <v-btn - class="white--text" - color="success" :loading="deleteLoader" + class="bg-success text-white" @click="unlinkSavedSearch(true)" > OK @@ -592,28 +557,41 @@

Source: views/Organisations/Organisation.vue

</template> <script> -import {mapActions, mapState} from "vuex"; +import { mapActions, mapState } from "vuex"; import Loaders from "@/components/Navigation/Loaders"; import SearchOrganisationRecords from "@/components/Organisations/SearchOrganisationRecords.vue"; import SectionTitle from "@/components/Records/Record/SectionTitle.vue"; -import GraphClient from "@/lib/GraphClient/GraphClient.js" -import getOrganisationQuery from "@/lib/GraphClient/queries/Organisations/getOrganisation.json" +import GraphClient from "@/lib/GraphClient/GraphClient.js"; +import getOrganisationQuery from "@/lib/GraphClient/queries/Organisations/getOrganisation.json"; import saveSearch from "@/store"; -import { isImage, isRequired, isUrl } from "@/utils/rules.js" -import { cleanString } from "@/utils/stringUtils" -import NotFound from "@/views/Errors/404" +import { isImage, isRequired, isUrl } from "@/utils/rules.js"; +import stringUtils from "@/utils/stringUtils"; +import NotFound from "@/views/Errors/404"; +import RestClient from "@/lib/Client/RESTClient.js"; +import { toBase64 } from "@/utils/generalUtils"; +import CountryFlag from "vue-country-flag-next"; +import { useTheme } from "vuetify/framework"; let graphClient = new GraphClient(); -import RestClient from "@/lib/Client/RESTClient.js" -import {toBase64} from "@/utils/generalUtils"; const restClient = new RestClient(); export default { name: "Organisation", - components: {SearchOrganisationRecords, SectionTitle, NotFound, Loaders}, - mixins: [cleanString], + components: { + CountryFlag, + SearchOrganisationRecords, + SectionTitle, + NotFound, + Loaders, + }, + mixins: [stringUtils], + emits: ["imageTooBig"], + setup() { + const theme = useTheme(); + return { theme }; + }, data: () => { return { error: true, @@ -624,11 +602,11 @@

Source: views/Organisations/Organisation.vue

users: [], parentOrganisations: [], childOrganisations: [], - countries: [] + countries: [], }, editedOrganisation: { - name: '', - homepage: '', + name: "", + homepage: "", types: [], logo: null, countries: [], @@ -641,48 +619,59 @@

Source: views/Organisations/Organisation.vue

logoLoading: false, imageTooBig: true, perPage: 10, - footer: {'items-per-page-options': [10]}, + footer: { "items-per-page-options": [10] }, showOverlay: false, targetID: null, testEnvironment: false, headers: [ - {text: 'Name', value: 'name', align: 'center'}, - {text: 'Status', value: 'status', align: 'center'}, - {text: 'Relation', value: 'relation', align: 'center'}, - {text: 'Grant', value: 'grant', align: 'center'}, - {text: 'Actions', value: 'actions', align: 'center', sortable: false} + { title: "Name", value: "name", align: "center" }, + { title: "Status", value: "status", align: "center" }, + { title: "Relation", value: "relation", align: "center" }, + { title: "Grant", value: "grant", align: "center" }, + { + title: "Actions", + value: "actions", + align: "center", + sortable: false, + }, ], userHeaders: [ - {text: 'Username', value: 'username', align: 'center'}, - {text: 'Email address', value: 'email', align: 'center'}, - {text: 'ORCID ID', value: 'orcid', align: 'center'} + { title: "Username", value: "username", align: "center" }, + { title: "Email address", value: "email", align: "center" }, + { title: "ORCID ID", value: "orcid", align: "center" }, ], showEditDialog: false, editFormValid: false, rules: { - isRequired: function(){return isRequired() }, - isURL: function(){ return isUrl() }, - isImage: function(){ return isImage() } + isRequired: function () { + return isRequired(); + }, + isURL: function () { + return isUrl(); + }, + isImage: function () { + return isImage(); + }, }, confirmDelete: false, deleteOrganisationCard: false, unlinkSavedSearchCard: false, selectedItem: {}, - deleteLoader: false - } + deleteLoader: false, + }; }, computed: { - ...mapState('users', ['user']), + ...mapState("users", ["user"]), ...mapState("editor", ["organisationsTypes", "countries", "tooltips"]), currentRoute() { - return this.$route.params['id']; + return this.$route.params["id"]; }, logoUrl() { if (this.organisation.urlForLogo) { - return process.env.VUE_APP_API_ENDPOINT + this.organisation.urlForLogo; + return import.meta.env.VITE_API_ENDPOINT + this.organisation.urlForLogo; } return null; - } + }, }, watch: { async currentRoute() { @@ -692,12 +681,19 @@

Source: views/Organisations/Organisation.vue

async created() { await this.getOrganisation(); }, + async mounted() { + await Promise.all([ + await this.getOrganisationsTypes(), + await this.getCountries(), + ]); + }, methods: { ...mapActions("editor", ["getOrganisationsTypes", "getCountries"]), async getOrganisation() { try { // testEnvironment variable is only for test case. - if (this.testEnvironment) throw new Error("an error occurred while fetching data") + if (this.testEnvironment) + throw new Error("an error occurred while fetching data"); this.loading = true; getOrganisationQuery.queryParam.id = parseInt(this.$route.params.id); let org = await graphClient.executeQuery(getOrganisationQuery); @@ -707,28 +703,39 @@

Source: views/Organisations/Organisation.vue

this.editedOrganisation.homepage = this.organisation.homepage; this.editedOrganisation.rorLink = this.organisation.rorLink; this.editedOrganisation.countries = this.organisation.countries; - this.editedOrganisation.alternativeNames = this.organisation.alternativeNames; + // In Vuetify 3, text fields usually expect a string, not an array of objects + this.editedOrganisation.alternativeNames = this.organisation + .alternativeNames + ? this.organisation.alternativeNames.join(", ") + : ""; + this.error = false; this.error = false; } this.loading = false; - } catch (e) { + } + catch (e) { this.errors = e.message; + this.loading = false; } }, async editOrganisation() { // TODO complete organisation input // A Ruby-style map would be better here. Please feel free to refactor if you know how! ;-) - let type_ids = [] + let type_ids = []; this.editedOrganisation.types.forEach((type) => { - type_ids.push(type.id) - }) - let country_ids = [] - this.editedOrganisation.countries.forEach((country) => { - country_ids.push(country.id) - }) + type_ids.push(type.id); + }); + let country_ids = []; + if (this.editedOrganisation.countries) { + this.editedOrganisation.countries.forEach((country) => { + country_ids.push(country.id); + }); + } let alt_names; try { - alt_names = this.editedOrganisation.alternativeNames.split(','); + alt_names = this.editedOrganisation.alternativeNames + .split(",") + .map((item) => item.trim()); } catch { alt_names = []; @@ -740,17 +747,22 @@

Source: views/Organisations/Organisation.vue

organisation_type_ids: type_ids, country_ids: country_ids, ror_link: this.editedOrganisation.rorLink, - alternative_names: alt_names - } + alternative_names: alt_names, + }; + if (this.editedOrganisation.logo) { let convertedFile = await toBase64(this.editedOrganisation.logo); organisationInput.logo = { filename: this.editedOrganisation.logo.name, content_type: this.editedOrganisation.logo.type, - data: convertedFile - } + data: convertedFile, + }; } - let data = await restClient.editOrganisation(organisationInput, this.organisation.id, this.user().credentials.token); + let data = await restClient.editOrganisation( + organisationInput, + this.organisation.id, + this.user().credentials.token, + ); if (!data.error) { // Reload to get the new data. await this.getOrganisation(); @@ -767,76 +779,79 @@

Source: views/Organisations/Organisation.vue

this.imageTooBig = false; return true; } - this.$emit('imageTooBig', true); + this.$emit("imageTooBig", true); this.imageTooBig = true; - return false; + return "Image is too large (max 3MB)."; }, goToEdit(id) { - this.$router.push({path: `/${id}/edit`}) + this.$router.push({ path: `/${id}/edit` }); }, previewRecord(id) { this.targetID = id; this.showOverlay = true; }, goToRecord(id) { - window.open("/" + id, '_blank'); + window.open("/" + id, "_blank"); }, hideOverlay() { this.showOverlay = false; this.targetID = null; }, filterRecords() { - const params = {organisations: encodeURIComponent(this.organisation.name.toLowerCase())} + const params = { + organisations: encodeURIComponent(this.organisation.name.toLowerCase()), + }; this.$router.push({ - name: 'search', - query: params + name: "search", + query: params, }); }, getAltNames(org) { - if (org.alternativeNames.length > 0) { - return org.alternativeNames.join(', '); + if (org.alternativeNames && org.alternativeNames.length > 0) { + return org.alternativeNames.join(", "); } return null; }, formatUser(user) { if (user.orcid) { - return `${user.username} (${user.orcid})` + return `${user.username} (${user.orcid})`; } else { return user.username; } }, getUserLink() { - return process.env.VUE_APP_HOSTNAME + 'users/' + return import.meta.env.VITE_HOSTNAME + "users/"; }, orgUrl() { - return process.env.VUE_APP_HOSTNAME + 'organisations/' + return import.meta.env.VITE_HOSTNAME + "organisations/"; }, removeType(type) { - this.editedOrganisation.types = this.editedOrganisation.types.filter(obj => - obj.label !== type.name && obj.id !== type.id + this.editedOrganisation.types = this.editedOrganisation.types.filter( + (obj) => obj.label !== type.name && obj.id !== type.id, ); }, removeCountry(country) { - this.editedOrganisation.countries = this.editedOrganisation.countries.filter(obj => - obj.label !== country.name && obj.id !== country.id - ); + this.editedOrganisation.countries = + this.editedOrganisation.countries.filter( + (obj) => obj.label !== country.name && obj.id !== country.id, + ); }, async startEditing() { this.loading = true; this.showEditDialog = true; - await this.getOrganisationsTypes(); - this.editedOrganisation.types = this.organisationsTypes.filter(obj => - this.organisation.types.indexOf(obj.name) > -1 + // await this.getOrganisationsTypes(); + this.editedOrganisation.types = this.organisationsTypes.filter( + (obj) => this.organisation.types.indexOf(obj.name) > -1, ); - await this.getCountries(); + // await this.getCountries(); this.loading = false; }, /** * Confirmation dialog to delete the organisation */ - confirmDeleteOrganisation(){ + confirmDeleteOrganisation() { this.confirmDelete = true; this.deleteOrganisationCard = true; this.unlinkSavedSearchCard = false; @@ -848,11 +863,14 @@

Source: views/Organisations/Organisation.vue

async deleteOrganisation(del) { this.unlinkSavedSearchCard = false; if (del) { - let data = await restClient.deleteOrganisation(this.organisation.id, this.user().credentials.token); + let data = await restClient.deleteOrganisation( + this.organisation.id, + this.user().credentials.token, + ); if (!data.error) { // Redirects to organisations page. - window.location.pathname = '/organisations' + window.location.pathname = "/organisations"; } } this.deleteOrganisationCard = false; @@ -862,7 +880,7 @@

Source: views/Organisations/Organisation.vue

/** * Confirmation dialog to unlink the saved search */ - confirmUnlinkSavedSearch(item){ + confirmUnlinkSavedSearch(item) { this.selectedItem = item; this.confirmDelete = true; this.deleteOrganisationCard = false; @@ -877,40 +895,46 @@

Source: views/Organisations/Organisation.vue

if (del) { this.deleteLoader = true; //Filter the currentOrganisation to unlink - let linkOrganisation = this.selectedItem.organisations - .filter(({id}) => id !== this.organisation.id); + let linkOrganisation = this.selectedItem.organisations.filter( + ({ id }) => id !== this.organisation.id, + ); //Array of id of the remaining organisation - linkOrganisation = linkOrganisation.map(({id}) => id) + linkOrganisation = linkOrganisation.map(({ id }) => id); let saveSearchObj = { organisation_ids: linkOrganisation, }; let updatedSearchResult = await restClient.updateSaveSearch( - this.selectedItem["id"], - saveSearchObj, - this.user().credentials.token + this.selectedItem["id"], + saveSearchObj, + this.user().credentials.token, ); //Commit the updated result to store - saveSearch.commit("saveSearch/setSaveSearchResult", updatedSearchResult); - await this.getOrganisation(); + saveSearch.commit( + "saveSearch/setSaveSearchResult", + updatedSearchResult, + ); + await this.getOrganisation(); } this.deleteLoader = false; this.unlinkSavedSearchCard = false; this.confirmDelete = false; }, }, - - -} +}; </script> -<style scoped> +<style lang="scss" scoped> .card-class { min-width: 500px; overflow-x: scroll; overflow-y: hidden; } + +:deep(.v-list-item-title) { + display: none; +} </style>
@@ -957,7 +981,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Records_NetworkGraph.vue.html b/documentation/html/views_Records_NetworkGraph.vue.html new file mode 100644 index 0000000000..f1c3fe53f6 --- /dev/null +++ b/documentation/html/views_Records_NetworkGraph.vue.html @@ -0,0 +1,828 @@ + + + + + + + FAIRsharing.org Source: views/Records/NetworkGraph.vue + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +

Source: views/Records/NetworkGraph.vue

+ +
+
+
<template>
+  <v-container fluid>
+    <div v-if="error">
+      <NotFound />
+    </div>
+    <v-row v-else>
+      <v-col class="pt-0 mt-2" cols="12" lg="3" md="3" sm="12" xl="3" xs="12">
+        <v-card height="100%">
+          <v-card-title class="bg-blue text-white">
+            Legend and configuration
+          </v-card-title>
+          <v-card-text class="pt-3">
+            <v-container fluid>
+              <v-row no-gutters>
+                <v-col cols="12">
+                  The graph's centre is shown in
+                  <span class="text-red">red.</span>
+                </v-col>
+                <v-col class="mt-2" cols="12">
+                  Click on any point to re-draw the graph with that point as the
+                  centre. Click on the centre to view the record. Hover over to
+                  view direct connections. Use the mouse/trackpad to scroll and
+                  zoom.
+                </v-col>
+                <v-col class="mt-2" cols="12">
+                  For more information, please see the
+                  <a
+                    href="https://fairsharing.gitbook.io/fairsharing/about-our-records/network-graphs"
+                    target="_blank"
+                  >
+                    documentation </a
+                  >.
+                </v-col>
+              </v-row>
+
+              <v-row class="mt-3" no-gutters>
+                <v-col cols="12">
+                  Relations between records are coloured as follows:
+                </v-col>
+                <v-col cols="12">
+                  <v-list density="compact">
+                    <v-list-item
+                      v-for="legendItem in networkGraph['legend']"
+                      :key="legendItem['name']"
+                    >
+                      <template #prepend>
+                        <v-icon :color="legendItem['color']" class="mr-2">
+                          fas fa-long-arrow-alt-right
+                        </v-icon>
+                      </template>
+                      <v-list-item-title
+                        class="font-weight-regular text-body-2"
+                      >
+                        {{ legendItem["name"] }}
+                      </v-list-item-title>
+                    </v-list-item>
+                  </v-list>
+                </v-col>
+              </v-row>
+
+              <v-divider class="my-3" />
+
+              <div>
+                <h3 class="mb-4">Registry</h3>
+                <v-row
+                  :class="{
+                    'd-flex justify-space-around': $vuetify.display.smOnly,
+                  }"
+                  no-gutters
+                >
+                  <v-col
+                    :class="
+                      $vuetify.display.smOnly
+                        ? 'flex-row align-center flex-grow-0 flex-shrink-1'
+                        : 'flex-column'
+                    "
+                    class="d-flex justify-center"
+                    cols="12"
+                    fluid
+                    lg="12"
+                    md="12"
+                    sm="3"
+                    xl="12"
+                    xs="12"
+                  >
+                    <v-btn
+                      v-for="registryItem in networkGraph['registry']"
+                      :key="registryItem['name']"
+                      :class="[
+                        $vuetify.display.xsOnly
+                          ? 'full-width'
+                          : 'button-filters',
+                        registryItem['active'] ? 'text-white' : 'text-black ',
+                      ]"
+                      :color="
+                        registryItem['active'] ? registryItem['color'] : 'gray'
+                      "
+                      :disabled="!buttonsActive"
+                      class="status_style mx-3 mb-2"
+                      @click="toggleClick(registryItem)"
+                    >
+                      {{ registryItem["name"] }}
+                    </v-btn>
+                  </v-col>
+                </v-row>
+              </div>
+
+              <v-divider class="my-3" />
+
+              <div>
+                <!-- Color definition meaning in NetworkGraph -->
+                <h3 class="mb-4">Status (shown on mouseover)</h3>
+                <v-row
+                  :class="{
+                    'd-flex justify-space-around': $vuetify.display.smOnly,
+                  }"
+                  no-gutters
+                >
+                  <v-col
+                    :class="
+                      $vuetify.display.smOnly
+                        ? 'flex-row align-center flex-grow-0 flex-shrink-1'
+                        : 'flex-column'
+                    "
+                    class="d-flex justify-center"
+                    cols="12"
+                    fluid
+                    lg="12"
+                    md="12"
+                    sm="3"
+                    xl="12"
+                    xs="12"
+                  >
+                    <v-btn
+                      v-for="status in networkGraph['status']"
+                      :key="status['name']"
+                      :class="[
+                        $vuetify.display.xsOnly
+                          ? 'full-width'
+                          : 'button-filters',
+                        status['active'] ? 'text-white' : 'text-black',
+                      ]"
+                      :color="status['active'] ? status['color'] : 'gray'"
+                      :disabled="!buttonsActive"
+                      class="status_style mx-3 mb-2"
+                      @click="toggleClick(status)"
+                    >
+                      {{ status["name"] }}
+                    </v-btn>
+                  </v-col>
+                </v-row>
+              </div>
+              <v-divider />
+              <div>
+                <!-- buttons here -->
+                <h3 class="mb-4">Distance from centre</h3>
+                <v-row
+                  :class="{
+                    'd-flex justify-space-around': $vuetify.display.smOnly,
+                  }"
+                  no-gutters
+                >
+                  <v-col
+                    :class="
+                      $vuetify.display.smOnly
+                        ? 'flex-row align-center flex-grow-0 flex-shrink-1'
+                        : 'flex-column'
+                    "
+                    class="d-flex justify-center"
+                    cols="12"
+                    fluid
+                    lg="12"
+                    md="12"
+                    sm="3"
+                    xl="12"
+                    xs="12"
+                  >
+                    <v-btn
+                      v-for="distance in networkGraph['distance']"
+                      :id="`distance_${distance['hops']}`"
+                      :key="distance['name']"
+                      :class="[
+                        $vuetify.display.xsOnly
+                          ? 'full-width'
+                          : 'button-filters',
+                        distance['active'] ? 'text-white ' : 'text-black ',
+                      ]"
+                      :color="getLengthColour(distance['hops'])"
+                      :disabled="!buttonsActive"
+                      class="status_style mx-3 mb-2"
+                      @click="lengthLimit(distance)"
+                    >
+                      {{ distance["name"] }}
+                    </v-btn>
+                  </v-col>
+                </v-row>
+              </div>
+            </v-container>
+          </v-card-text>
+        </v-card>
+      </v-col>
+      <v-col class="pt-0 mt-2" cols="12" lg="9" md="9" sm="12" xl="9" xs="12">
+        <v-btn :to="`/${$route.params.id}`" class="ml-2 my-2 bg-white">
+          <v-icon :class="`text-primary`"> fas fa-arrow-left</v-icon>
+          <span :class="`text-primary ml-3`"> Go to Record</span>
+        </v-btn>
+        <div v-if="noData">
+          <v-card-title class="bg-blue text-white">
+            No graph found!
+          </v-card-title>
+        </div>
+        <div v-else>
+          <v-card-title v-if="!loading" class="bg-blue text-white pb-0 pt-4">
+            {{ graphData.name }} ({{ graphData.id }})
+          </v-card-title>
+          <v-card-subtitle
+            v-if="!loading"
+            class="bg-blue text-white opacity-100 pb-4"
+          >
+            {{ registry }}/{{ type }}
+          </v-card-subtitle>
+        </div>
+
+        <v-card height="100%">
+          <div v-if="noData" height="100%">
+            <v-card-text class="pt-3">
+              <v-container fluid>
+                <v-row no-gutters>
+                  <v-col cols="12">
+                    <p>
+                      No data were found showing links between this record and
+                      others. This could be because:
+                    </p>
+                    <ul style="list-style-type: square">
+                      <li>
+                        The record has just been created and the graph data are
+                        still being generated.
+                      </li>
+                      <li>This record has no links to other records.</li>
+                      <li>Something went wrong.</li>
+                    </ul>
+                    <br />
+                    <p>
+                      If you need assistance, please
+                      <a href="mailto:contact@fairsharing.org">contact us</a>.
+                    </p>
+                  </v-col>
+                </v-row>
+              </v-container>
+            </v-card-text>
+          </div>
+          <div id="sigma-container" />
+        </v-card>
+
+        <v-fade-transition>
+          <div>
+            <v-overlay
+              v-model="layoutRendering"
+              :absolute="false"
+              class="align-center justify-center"
+              opacity="0.8"
+              persistent
+              scroll-strategy="none"
+            >
+              <Loaders />
+            </v-overlay>
+          </div>
+        </v-fade-transition>
+      </v-col>
+    </v-row>
+  </v-container>
+</template>
+
+<script>
+import Graph from "graphology";
+import forceAtlas2 from "graphology-layout-forceatlas2";
+import Sigma from "sigma";
+import getNodeProgramImage from "sigma/rendering/webgl/programs/node.image";
+
+import Loaders from "@/components/Navigation/Loaders";
+import networkGraph from "@/data/networkGraph.json";
+import relationColors from "@/data/RelationsColors.json";
+import GraphClient from "@/lib/GraphClient/GraphClient.js";
+import graphQuery from "@/lib/GraphClient/queries/getGraphRelations.json";
+import NotFound from "@/views/Errors/404.vue";
+
+const graphClient = new GraphClient();
+const graph = new Graph();
+let container;
+let renderer;
+
+export default {
+  name: "NetworkGraph",
+  components: {
+    Loaders,
+    NotFound,
+  },
+  data() {
+    return {
+      error: false,
+      loading: false,
+      noData: false,
+      initialized: false,
+      depth: [1, 2, 3],
+      registry: "unknown",
+      type: "unknown",
+      relations: null,
+      relations_colors: relationColors,
+      legend: {
+        relations: {},
+        types: {
+          circle: false,
+          square: false,
+          triangle: false,
+          diamond: false,
+        },
+      },
+      typesFound: [],
+      graphData: {},
+      chart: null,
+      cancelCurrentAnimation: null,
+      sensibleSettings: null,
+      highlighted: 0, // ID of currently-hovered node.
+      state: {},
+      selectedLengths: {
+        1: true,
+        2: false,
+        3: false,
+      },
+      active: {
+        database: true,
+        collection: true,
+        standard: true,
+        policy: true,
+        fairassist: true,
+        ready: true,
+        in_development: true,
+        uncertain: true,
+        deprecated: true,
+      },
+      buttonsActive: false,
+      networkGraph: networkGraph,
+      layoutRendering: false,
+    };
+  },
+  computed: {
+    currentRoute() {
+      return this.target || this.$route.params["id"];
+    },
+  },
+  watch: {
+    async currentRoute() {
+      await this.getData();
+    },
+    active: {
+      async handler() {
+        this.toggleGraph();
+      },
+      deep: true,
+    },
+    selectedLengths: {
+      async handler() {
+        this.toggleGraph();
+      },
+      deep: true,
+    },
+  },
+  async mounted() {
+    let _module = this;
+    this.$nextTick(async function () {
+      await this.getData();
+      if (_module.error) {
+        return;
+      }
+      container = document.getElementById("sigma-container");
+      await _module.plotGraph();
+    });
+  },
+  methods: {
+    async getData() {
+      this.loading = true;
+      this.legend.types = {
+        circle: false,
+        square: false,
+        triangle: false,
+        diamond: false,
+      };
+      /* A maxPathLength of 1-3 may be specified (API's default is 2).
+       Higher values may make the resulting graph rather large... */
+      graphQuery.queryParam = { id: parseInt(this.$route.params.id) };
+
+      try {
+        const response = await graphClient.executeQuery(graphQuery);
+
+        if (
+          Array.isArray(response) &&
+          response[0].message === "record not found"
+        ) {
+          this.error = true;
+        } else if (
+          !response.fairsharingGraph ||
+          !response.fairsharingGraph.data ||
+          response.fairsharingGraph.data.length === 0 ||
+          Object.keys(response.fairsharingGraph.data).length === 0
+        ) {
+          this.loading = false;
+          this.noData = true;
+          this.registry = "N/A";
+          this.type = "N/A";
+          this.initialized = true;
+        } else {
+          this.graphData = response.fairsharingGraph.data;
+          this.loading = false;
+          this.registry = this.graphData.registry;
+          this.type = this.graphData.type;
+        }
+      } catch (e) {
+        console.error("Graph Data Error:", e);
+        this.error = true;
+        this.loading = false;
+      }
+    },
+    async plotGraph() {
+      let _module = this;
+      _module.layoutRendering = true;
+      graph.clear();
+      graph.import(this.graphData);
+
+      // Graphology implementation of Force Atlas 2 in a web worker
+      _module.sensibleSettings = forceAtlas2.inferSettings(graph);
+      forceAtlas2.assign(graph, {
+        iterations: 50,
+        settings: this.sensibleSettings,
+      });
+
+      // eslint-disable-next-line no-unused-vars
+      renderer = new Sigma(graph, container, {
+        allowInvalidContainer: true,
+        nodeProgramClasses: {
+          image: getNodeProgramImage(),
+        },
+      });
+
+      // Attempt to highlight nodes on hover...
+      renderer.on("enterNode", ({ node }) => {
+        _module.state.hoveredNode = node;
+        _module.state.hoveredNeighbors = new Set(graph.neighbors(node));
+        renderer.refresh();
+      });
+      renderer.on("leaveNode", () => {
+        _module.state.hoveredNode = undefined;
+        _module.state.hoveredNeighbors = undefined;
+        renderer.refresh();
+      });
+      renderer.setSetting("nodeReducer", (node, data) => {
+        const res = { ...data };
+
+        // This is for hiding everything except the node being hovered over.
+        if (
+          _module.state.hoveredNeighbors &&
+          !_module.state.hoveredNeighbors.has(node) &&
+          _module.state.hoveredNode !== node
+        ) {
+          if (parseInt(node) !== parseInt(_module.$route.params.id)) {
+            res.hidden = true;
+          }
+        }
+
+        if (_module.state.selectedNode === node) {
+          _module.res.highlighted = true;
+        }
+
+        // Hide nodes which are further away than the path length.
+        if (_module.selectedLengths[res.length] === false) {
+          res.hidden = true;
+        }
+
+        // Hide nodes when their registry is not selected
+        if (
+          !this.active[res.registry] &&
+          parseInt(_module.$route.params.id) !== parseInt(node)
+        ) {
+          res.hidden = true;
+        }
+
+        // Hide nodes when their status is not selected
+        if (
+          !this.active[res.status] &&
+          parseInt(_module.$route.params.id) !== parseInt(node)
+        ) {
+          res.hidden = true;
+        }
+
+        return res;
+      });
+
+      // This is for hiding everything except the node being hovered over.
+      renderer.setSetting("edgeReducer", (edge, data) => {
+        const res = { ...data };
+        if (
+          _module.state.hoveredNode &&
+          !graph.hasExtremity(edge, _module.state.hoveredNode)
+        ) {
+          res.hidden = true;
+        }
+        return res;
+      });
+
+      // This is to link to another record's graph.
+      renderer.on("clickNode", ({ node }) => {
+        this.setClickedNode(node);
+      });
+
+      renderer.refresh();
+
+      await new Promise((r) => setTimeout(r, 10000));
+      _module.buttonsActive = true;
+      _module.layoutRendering = false;
+    },
+    setClickedNode(node) {
+      // node is the fairsharing_record_id
+      // TODO: This window.location.assign hackery is not great, but does at least cause
+      // TODO: the correct graph to load and render.
+      let _module = this;
+      if (parseInt(_module.$route.params.id) === parseInt(node)) {
+        this.loading = true;
+        window.location.assign("/" + node);
+        //this.loading = false;
+      } else {
+        this.loading = true;
+        window.location.assign("/graph/" + node);
+        //this.loading = false;
+      }
+    },
+    lengthLimit(item) {
+      item.active = !item.active;
+      this.layoutRendering = true;
+      setTimeout(() => {
+        const itemLength = item.hops;
+        this.selectedLengths[itemLength] = !this.selectedLengths[itemLength];
+      }, 100);
+    },
+    getLengthColour(len) {
+      if (this.selectedLengths[len] === true) {
+        return "#27aae1";
+      } else {
+        return "gray";
+      }
+    },
+    /**
+     * Toggles the graph rendering on a button click.
+     * @param item
+     */
+    toggleClick(item) {
+      item.active = !item.active;
+      this.layoutRendering = true;
+      setTimeout(() => {
+        let itemName = item.name.toLowerCase();
+        if (itemName === "in development") itemName = "in_development";
+        this.active[itemName] = !this.active[itemName];
+      }, 100);
+    },
+
+    /**
+     * Toggles the graph rendering.
+     */
+    toggleGraph() {
+      graph.clear();
+      graph.import(this.graphData);
+
+      // Graphology implementation of Force Atlas 2 in a web worker
+      this.sensibleSettings = forceAtlas2.inferSettings(graph);
+      forceAtlas2.assign(graph, {
+        iterations: 50,
+        settings: this.sensibleSettings,
+      });
+      setTimeout(() => {
+        this.layoutRendering = false;
+      }, 2000);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+#sigma-container {
+  width: 100%;
+  height: 100%;
+  min-height: 1000px;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+}
+
+.button-filters {
+  width: 150px;
+}
+</style>
+
+
+
+ + + + + +
+
+ +
+ + + +
+
+ + + + + +
+ + + + DocStrap Copyright © 2012-2015 The contributors to the JSDoc3 and DocStrap projects. + + + + Documentation generated by JSDoc 4.0.5 + + on Fri Apr 10th 2026 + + using the DocStrap template. + +
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/html/views_Records_Record.vue.html b/documentation/html/views_Records_Record.vue.html index 2441fb31c9..257a370286 100644 --- a/documentation/html/views_Records_Record.vue.html +++ b/documentation/html/views_Records_Record.vue.html @@ -91,60 +91,71 @@

Source: views/Records/Record.vue

<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
+            class="sunlight-highlight-javascript linenums"><template>
   <main>
-    <v-container
-      v-if="queryTriggered"
-      fluid
-    >
+    <v-fade-transition>
+      <div>
+        <v-overlay
+          v-model="loading"
+          :absolute="false"
+          class="align-center justify-center"
+          opacity="0.8"
+        >
+          <Loaders />
+        </v-overlay>
+      </div>
+    </v-fade-transition>
+    <v-container v-if="queryTriggered" fluid>
       <!--   error   -->
       <div v-if="error">
         <NotFound />
       </div>
 
       <!--   Action Menu & Alert   -->
-      <v-row
-        v-if="!target && queryTriggered"
-        class="mx-1"
-      >
-        <v-col
-          cols="12"
-        >
-          <!-- alerts         -->
+      <v-row v-if="!target && queryTriggered" class="mx-1">
+        <v-col cols="12">
+          <!-- alerts -->
           <record-alert
-            v-for="(alert,key,index) in alerts"
-            :key="key+'_'+alert.message+'_'+index"
-            :type="alert.type"
+            v-for="(alert, key, index) in alerts"
+            :key="key + '_' + alert.message + '_' + index"
             :message="alert.message"
+            :type="alert.type"
           />
 
-          <!--  snackbars        -->
+          <!-- snackbars -->
           <record-snackbar
-            v-for="(snackbar,index) in snackbars"
-            :key="snackbar.message+'_'+index"
+            v-for="(snackbar, index) in snackbars"
+            :key="snackbar.message + '_' + index"
             :message="snackbar.message"
-            :type="snackbar.type"
             :model="convertStringToLocalVar(snackbar.model)"
+            :type="snackbar.type"
           />
 
           <!-- Menu component -->
           <record-menu
-            v-if="currentRecord.fairsharingRecord['isHidden']!==undefined && !error && !recordHidden"
+            v-if="
+              currentRecord.fairsharingRecord['isHidden'] !== undefined &&
+              !error &&
+              !recordHidden
+            "
             :buttons="buttons"
             :read-only-mode="readOnlyMode"
           />
         </v-col>
       </v-row>
 
-      <!--  CuratorsNotes   -->
+      <!-- CuratorsNotes -->
       <CuratorNotes
         id="curatorNotes"
-        class="ma-4 mb-7"
         :back-color="getRecordCardBackground"
+        class="ma-4 mb-7"
       />
 
       <Tombstone
-        v-if="currentRecord['fairsharingRecord'] && currentRecord['fairsharingRecord'].metadata.tombstone"
+        v-if="
+          currentRecord['fairsharingRecord'] &&
+          currentRecord['fairsharingRecord'].metadata.tombstone
+        "
         id="tombStone"
         :record="currentRecord['fairsharingRecord']"
       />
@@ -152,47 +163,74 @@ 

Source: views/Records/Record.vue

<Hidden v-if="recordHidden" id="hidden" - :record-name="currentRecord['fairsharingRecord'].metadata.name" :is-logged-in="user().isLoggedIn" + :record-name="currentRecord['fairsharingRecord'].metadata.name" /> <!-- handle situations where the record is hidden --> <!-- Content --> - <div v-if="currentRecord['fairsharingRecord'] && !error && !recordHidden && !currentRecord['fairsharingRecord'].metadata.tombstone"> + <div + v-if=" + currentRecord['fairsharingRecord'] && + !error && + !recordHidden && + !currentRecord['fairsharingRecord'].metadata.tombstone + " + > <!-- Top Block --> <GeneralInfo id="generalInfo" - :class="['ma-4',{'mb-10':currentRecord.fairsharingRecord.registry==='Collection'}]" - :can-claim="canClaim" :back-color="getRecordCardBackground" - @requestOwnership="requestOwnership" + :can-claim="canClaim" + :class="[ + 'ma-4', + { + 'mb-10': + currentRecord.fairsharingRecord.registry === 'Collection', + }, + ]" + @request-ownership="requestOwnership" /> <!-- Dynamic Block --> <v-row no-gutters> - <v-col :cols="$vuetify.breakpoint.mdAndDown?'12':'6'"> + <v-col :cols="$vuetify.display.mdAndDown ? '12' : '6'"> <!--Left Block--> - <div v-if="currentRecord.fairsharingRecord.registry!=='Collection'"> + <div + v-if="currentRecord.fairsharingRecord.registry !== 'Collection'" + > <component :is="block" - v-for="(block,index) in currentDynamicBlock.leftBlock" + v-for="(block, index) in currentDynamicBlock.leftBlock" :id="block.toLowerCase()" :key="block" :back-color="getRecordCardBackground" - :class="['ma-4',index===currentDynamicBlock.rightBlock.length-1?'mb-4':'mb-8']" + :class="[ + 'ma-4', + index === currentDynamicBlock.rightBlock.length - 1 + ? 'mb-4' + : 'mb-8', + ]" /> </div> </v-col> <!--Right Block--> - <v-col :cols="$vuetify.breakpoint.mdAndDown?'12':'6'"> - <div v-if="currentRecord.fairsharingRecord.registry!=='Collection'"> + <v-col :cols="$vuetify.display.mdAndDown ? '12' : '6'"> + <div + v-if="currentRecord.fairsharingRecord.registry !== 'Collection'" + > <component :is="block" - v-for="(block,index) in currentDynamicBlock.rightBlock" + v-for="(block, index) in currentDynamicBlock.rightBlock" :id="block.toLowerCase()" :key="block" :back-color="getRecordCardBackground" - :class="['ma-4',index===currentDynamicBlock.rightBlock.length-1?'mb-4':'mb-8']" + :class="[ + 'ma-4', + index === currentDynamicBlock.rightBlock.length - 1 + ? 'mb-4' + : 'mb-8', + ]" /> </div> </v-col> @@ -201,19 +239,25 @@

Source: views/Records/Record.vue

<!-- Bottom Block --> <Publications id="publications" - :class="['ma-4 mb-8', {'mb-10 mt-0':currentRecord.fairsharingRecord.registry==='Collection'}]" :back-color="getRecordCardBackground" + :class="[ + 'ma-4 mb-8', + { + 'mb-10 mt-0': + currentRecord.fairsharingRecord.registry === 'Collection', + }, + ]" /> <!-- Additional Information --> <AdditionalInfo - v-if="currentRecord.fairsharingRecord.registry!=='Collection'" + v-if="currentRecord.fairsharingRecord.registry !== 'Collection'" id="additionalInfo" - class="mb-8 ma-4" :back-color="getRecordCardBackground" + class="mb-8 ma-4" /> <!-- Search Collection --> <SearchCollection - v-if="currentRecord.fairsharingRecord.registry==='Collection'" + v-if="currentRecord.fairsharingRecord.registry === 'Collection'" id="searchCollection" class="mb-10 ma-4" /> @@ -221,31 +265,31 @@

Source: views/Records/Record.vue

</v-container> <!-- This html is from a safe source --> <!-- eslint-disable vue/no-v-html --> - <script - type="application/ld+json" - v-html="JSONLD" - /> + <!-- <script--> + <!-- type="application/ld+json"--> + <!-- v-html="JSONLD"--> + <!-- />--> + <component :is="'script'" type="application/ld+json"> + <span v-html="JSONLD" /> + </component> <!-- eslint-enable vue/no-v-html --> - <v-dialog - v-model="history.show" - fullscreen - class="pa-0" - persistent - no-click-animation - > + <v-dialog v-model="history.show" class="pa-0" fullscreen persistent> <v-card> <v-card-title - class="blue white--text pb-4" - style="border-radius: 0 !important;" + class="bg-blue text-white pb-4 pt-4 pl-6 d-flex align-center" + rounded="0" > - {{ getField("name") }} history logs + <span>{{ getField("name") }} history logs</span> <v-spacer /> <v-btn - x-small - fab + class="bg-white mr-3" + color="black" + icon + size="30" + variant="elevated" @click="closeHistory()" > - <v-icon> fa-times </v-icon> + <v-icon icon="fas fa-xmark fa-solid" size="20" /> </v-btn> </v-card-title> <v-card-text class="pt-2"> @@ -259,22 +303,15 @@

Source: views/Records/Record.vue

</v-card-text> </v-card> </v-dialog> - <v-dialog - v-model="dialogs.deleteRecord" - max-width="650px" - > + <v-dialog v-model="dialogs.deleteRecord" max-width="650px"> <v-card> - <v-card-title - class="headline" - > + <v-card-title class="text-h5"> Are you sure you want to - <span - style="color:red; padding-left: 5px; padding-right: 5px;" - > + <span style="color: red; padding-left: 5px; padding-right: 5px"> DELETE </span> (without DOI) or tombstone (with DOI) this record? - <ul style="list-style-type:none;"> + <ul style="list-style-type: none"> <li> {{ dialogs.recordName }} </li> @@ -284,16 +321,19 @@

Source: views/Records/Record.vue

<v-spacer /> <v-btn :disabled="dialogs.disableButton === true" - color="blue darken-1" - text + color="blue-darken-1" + variant="text" @click="closeDeleteMenu()" > Cancel </v-btn> <v-btn - :disabled="dialogs.disableDelButton === true || dialogs.disableButton === true" - color="blue darken-1" - text + :disabled=" + dialogs.disableDelButton === true || + dialogs.disableButton === true + " + color="blue-darken-1" + variant="text" @click="confirmDelete()" > DELETE @@ -302,42 +342,48 @@

Source: views/Records/Record.vue

</v-card-actions> </v-card> </v-dialog> - <v-dialog - v-model="dialogs.claimRecord" - max-width="700px" - > + <v-dialog v-model="dialogs.claimRecord" max-width="700px"> <v-card> - <v-card-title - class="headline" - > + <v-card-title class="text-h5"> <p class="claimtext"> - <b>Please confirm that you would like to request ownership of this record.</b> + <b + >Please confirm that you would like to request ownership of this + record.</b + > </p> <p class="claimtext"> - We encourage resource developers to claim ownership of their FAIRsharing record; doing so - allows them to make updates and provides them with a visible means of attribution for their efforts. - However, please note that for this request to be approved, you must be associated with the institutions(s) - that develop this resource. + We encourage resource developers to claim ownership of their + FAIRsharing record; doing so allows them to make updates and + provides them with a visible means of attribution for their efforts. + However, please note that for this request to be approved, you must + be associated with the institutions(s) that develop this resource. </p> <p class="claimtext"> - Please also see our <a href="https://fairsharing.gitbook.io/fairsharing/#claiming-a-record"> - documentation on requesting ownership</a>. + Please also see our + <a + href="https://fairsharing.gitbook.io/fairsharing/#claiming-a-record" + > + documentation on requesting ownership</a + >. </p> </v-card-title> <v-card-actions> <v-spacer /> <v-btn :disabled="dialogs.disableButton === true" - color="blue darken-1" - text + color="blue-darken-1" + variant="text" @click="closeClaimMenu()" > Cancel </v-btn> <v-btn - :disabled="dialogs.disableDelButton === true || dialogs.disableButton === true" - color="blue darken-1" - text + :disabled=" + dialogs.disableDelButton === true || + dialogs.disableButton === true + " + color="blue-darken-1" + variant="text" @click="requestOwnership()" > OK @@ -346,16 +392,14 @@

Source: views/Records/Record.vue

</v-card-actions> </v-card> </v-dialog> - <v-dialog - v-model="dialogs.stopMaintainRecord" - max-width="700px" - > + <v-dialog v-model="dialogs.stopMaintainRecord" max-width="700px"> <v-card> - <v-card-title - class="headline" - > + <v-card-title class="text-h5"> <p class="claimtext"> - <b>Please confirm that you would like to stop maintaining this record:</b> + <b + >Please confirm that you would like to stop maintaining this + record:</b + > </p> <p class="claimtext"> <b>&ldquo;{{ dialogs.recordName }}&rdquo;</b> @@ -365,16 +409,19 @@

Source: views/Records/Record.vue

<v-spacer /> <v-btn :disabled="dialogs.disableButton === true" - color="blue darken-1" - text + color="blue-darken-1" + variant="text" @click="closeMaintainMenu()" > Cancel </v-btn> <v-btn - :disabled="dialogs.disableDelButton === true || dialogs.disableButton === true" - color="blue darken-1" - text + :disabled=" + dialogs.disableDelButton === true || + dialogs.disableButton === true + " + color="blue-darken-1" + variant="text" @click="removeMaintainer()" > OK @@ -387,33 +434,34 @@

Source: views/Records/Record.vue

</template> <script> -import {mapActions, mapGetters, mapMutations, mapState} from 'vuex' +import { mapActions, mapGetters, mapMutations, mapState } from "vuex"; import Loaders from "@/components/Navigation/Loaders"; import AdditionalInfo from "@/components/Records/Record/AdditionalInfo"; import SearchCollection from "@/components/Records/Record/CollectionRecord/SearchCollection"; import Collections from "@/components/Records/Record/Collections"; import CuratorNotes from "@/components/Records/Record/CuratorNotes"; -import DataProcessesAndConditions from '@/components/Records/Record/DataProcessesAndConditions'; +import DataProcessesAndConditions from "@/components/Records/Record/DataProcessesAndConditions"; import GeneralInfo from "@/components/Records/Record/GeneralInfo"; import RecordHistory from "@/components/Records/Record/History/RecordHistory"; import Organisations from "@/components/Records/Record/Organisations"; -import Publications from '@/components/Records/Record/Publications'; +import Publications from "@/components/Records/Record/Publications"; import RecordAlert from "@/components/Records/Record/RecordAlert"; import RecordMenu from "@/components/Records/Record/RecordMenu"; import RecordSnackbar from "@/components/Records/Record/RecordSnackBar"; import RelatedContent from "@/components/Records/Record/RelatedContent"; -import Support from '@/components/Records/Record/Support'; -import Tools from '@/components/Records/Record/Tools'; +import Support from "@/components/Records/Record/Support"; +import Tools from "@/components/Records/Record/Tools"; import AlertBuilder from "@/lib/AlertBuilder/AlertBuilder"; -import RestClient from "@/lib/Client/RESTClient.js" -import Client from '@/lib/GraphClient/GraphClient.js' +import RestClient from "@/lib/Client/RESTClient.js"; +import Client from "@/lib/GraphClient/GraphClient.js"; import getHostname from "@/utils/generalUtils"; -import stringUtils from '@/utils/stringUtils'; -import NotFound from "@/views/Errors/404" +import stringUtils from "@/utils/stringUtils"; +import NotFound from "@/views/Errors/404"; import Hidden from "../Errors/Hidden"; import Tombstone from "../Errors/Tombstone"; +import { useTheme } from "vuetify"; const client = new RestClient(); export default { @@ -437,11 +485,16 @@

Source: views/Records/Record.vue

DataProcessesAndConditions, Publications, Support, - NotFound + NotFound, }, mixins: [stringUtils, getHostname], props: { - target: {type: Number, default: null} + target: { type: Number, default: null }, + }, + emits: ["updateHead", "showDialog"], + setup() { + const theme = useTheme(); + return { theme }; }, data: () => { return { @@ -452,9 +505,9 @@

Source: views/Records/Record.vue

canEdit: false, canClaim: false, alreadyClaimed: false, - noClaimRegistered:false, + noClaimRegistered: false, ownershipApproved: false, - ownershipApprovalStatus:null, + ownershipApprovalStatus: null, claimedTriggered: false, reviewSuccess: false, reviewFail: false, @@ -463,36 +516,39 @@

Source: views/Records/Record.vue

buttons: [], history: { show: false, - loading: false + loading: false, }, tombstone: false, - alerts:{}, + alerts: {}, snackbars: [ { model: "claimedTriggered", type: "success", - message: "Thank you for claiming this record. We will be getting back to you between 48 and 72h." + message: + "Thank you for claiming this record. We will be getting back to you between 48 and 72h.", }, { model: "reviewSuccess", type: "success", - message: "Thank you for reviewing this record." + message: "Thank you for reviewing this record.", }, { model: "reviewFail", type: "warning", - message: "Sorry, it was not possibly to save a review for this record." + message: + "Sorry, it was not possibly to save a review for this record.", }, { model: "stopMaintainSuccess", type: "success", - message: "You have been removed as maintainer of this record." + message: "You have been removed as maintainer of this record.", }, { model: "stopMaintainFailure", type: "warning", - message: "You could not be removed as maintainer. Please email for assistance." - } + message: + "You could not be removed as maintainer. Please email for assistance.", + }, ], dialogs: { recordName: "", @@ -501,12 +557,13 @@

Source: views/Records/Record.vue

disableDelButton: true, disableButton: false, claimRecord: false, - stopMaintainRecord: false + stopMaintainRecord: false, }, - } + loading: false, + }; }, head: { - link: function() { + link: function () { if (this.recordID) { let results = []; let citeAsUrl; @@ -514,114 +571,126 @@

Source: views/Records/Record.vue

// Mysteriously not covered even if a doi value is provided in tests. /* istanbul ignore if */ if (this.currentRecord.fairsharingRecord.doi) { - citeAsUrl = "https://doi.org/" + this.currentRecord.fairsharingRecord.doi; - describedByUrl = this.getHostname() + this.currentRecord.fairsharingRecord.doi.split(/\//)[1]; - } - else { + citeAsUrl = + "https://doi.org/" + this.currentRecord.fairsharingRecord.doi; + describedByUrl = + this.getHostname() + + this.currentRecord.fairsharingRecord.doi.split(/\//)[1]; + } else { citeAsUrl = this.getHostname() + this.recordID; describedByUrl = this.getHostname() + this.recordId; } results.push({ - rel: 'cite-as', + rel: "cite-as", type: "application/html", - href: citeAsUrl + href: citeAsUrl, + }); + results.push({ + rel: "describedby", + type: "application/json", + href: describedByUrl, + }); + results.push({ + rel: "describedby", + type: "application/ld+json", + href: describedByUrl, }); - results.push( - { - rel: 'describedby', - type: "application/json", - href: describedByUrl - } - ) - results.push( - { - rel: 'describedby', - type: "application/ld+json", - href: describedByUrl - } - ) return results; } - } + }, }, computed: { - ...mapState('record', ["currentRecord", "currentRecordHistory"]), - ...mapState('users', ["user", "messages"]), + ...mapState("record", ["currentRecord", "currentRecordHistory"]), + ...mapState("users", ["user", "messages"]), ...mapGetters("record", ["getField"]), - ...mapState('introspection', ["readOnlyMode"]), + ...mapState("introspection", ["readOnlyMode"]), recordHidden() { - let _module = this; - if (_module.currentRecord.fairsharingRecord.isHidden) { - if (!_module.user().isLoggedIn) { - return true; - } - else { - if (!_module.canEdit) { - return true; - } - } + let _module = this; + if (_module.currentRecord.fairsharingRecord.isHidden) { + if (!_module.user().isLoggedIn) { + return true; + } else { + if (!_module.canEdit) { + return true; + } } - return false; + } + return false; }, getRecordCardBackground() { - let finalCardBackColor + let finalCardBackColor; switch (this.currentRecord.fairsharingRecord.registry) { - case 'Standard': - finalCardBackColor = this.$vuetify.theme.themes.light.bg_standard_record_card; + case "Standard": + finalCardBackColor = + this.theme.computedThemes.value.fairSharingTheme + .bg_standard_record_card; break; - case 'Database': - finalCardBackColor = this.$vuetify.theme.themes.light.bg_database_record_card; + case "Database": + finalCardBackColor = + this.theme.computedThemes.value.fairSharingTheme.colors + .bg_database_record_card; break; - case 'Policy': - finalCardBackColor = this.$vuetify.theme.themes.light.bg_policy_record_card; + case "Policy": + finalCardBackColor = + this.theme.computedThemes.value.fairSharingTheme.colors + .bg_policy_record_card; break; - case 'Collection': - finalCardBackColor = this.$vuetify.theme.themes.light.bg_collection_record_card; + case "Collection": + finalCardBackColor = + this.theme.computedThemes.value.fairSharingTheme.colors + .bg_collection_record_card; break; } - return finalCardBackColor + return finalCardBackColor; }, - JSONLD () { + JSONLD() { return this.$sanitize(JSON.stringify(this.getField("schemaOrg"))); }, currentRoute() { - let id = this.$route.params['id']; - if (id.includes("FAIRsharing.")) { + let id = this.$route.params["id"]; + if (id !== undefined && id.includes("FAIRsharing.")) { return "10.25504/" + id; } - return this.target || this.$route.params['id']; + return this.target || this.$route.params["id"]; }, - userIsLoggedIn(){ + userIsLoggedIn() { return this.user().isLoggedIn; }, getTitle() { - return 'FAIRsharing | ' + this.currentRoute; + return "FAIRsharing | " + this.currentRoute; }, maintainsRecord() { let _module = this; - if (!_module.userIsLoggedIn){ - return false + if (!_module.userIsLoggedIn) { + return false; } // Is the current_user's ID in the array of maintainer objects? - if (typeof _module.currentRecord['fairsharingRecord']['maintainers'] === 'undefined') { + if ( + typeof _module.currentRecord["fairsharingRecord"]["maintainers"] === + "undefined" + ) { return false; } - if (_module.currentRecord['fairsharingRecord']['maintainers'].length === 0) { + if ( + _module.currentRecord["fairsharingRecord"]["maintainers"].length === 0 + ) { return false; } - return _module.currentRecord['fairsharingRecord']['maintainers'].some(({ id }) => id === _module.user().id); + return _module.currentRecord["fairsharingRecord"]["maintainers"].some( + ({ id }) => id === _module.user().id, + ); }, currentDynamicBlock() { - if (this.$vuetify.breakpoint.name === 'md') { + if (this.$vuetify.display.name === "md") { return { leftBlock: ["Collections", "RelatedContent", "Support"], - rightBlock: ["DataProcessesAndConditions", "Tools", "Organisations"] - } + rightBlock: ["DataProcessesAndConditions", "Tools", "Organisations"], + }; } else { return { leftBlock: ["Collections", "Support", "DataProcessesAndConditions"], - rightBlock: ["RelatedContent", "Tools", "Organisations"] - } + rightBlock: ["RelatedContent", "Tools", "Organisations"], + }; } }, }, @@ -634,7 +703,7 @@

Source: views/Records/Record.vue

await this.getMenuButtons(); } await this.$nextTick(); - await this.$scrollTo(this.$route.hash || 'body') + // await this.$scrollTo(this.$route.hash || 'body') }, async target() { await this.getData(); @@ -644,37 +713,37 @@

Source: views/Records/Record.vue

await this.getMenuButtons(); } await this.$nextTick(); - await this.$scrollTo(this.$route.hash || 'body') + await this.$scrollTo(this.$route.hash || "body"); }, async userIsLoggedIn() { await this.canEditRecord(); //await this.checkClaimStatus(); await this.getMenuButtons(); await this.checkAlerts(); - } - }, - destroyed() { - // minor change in the y axis can fix a serious bug after going back to records.. - this.$scrollTo('body',5,{}) + }, }, + // unmounted() { + // // minor change in the y axis can fix a serious bug after going back to records.. + // this.$scrollTo('body',5,{}) + // }, async mounted() { - let _module = this; - _module.client = new Client(); - await _module.getData(); - _module.recordID = this.currentRecord.fairsharingRecord.id; - _module.$emit('updateHead'); - if (!_module.error) { - await _module.canEditRecord(); - await _module.checkClaimStatus(); - await _module.getMenuButtons() - } - await _module.$nextTick(); - await _module.checkAlerts(); + let _module = this; + _module.loading = true; + _module.client = new Client(); + await _module.getData(); + _module.recordID = this.currentRecord.fairsharingRecord.id; + _module.$emit("updateHead"); + if (!_module.error) { + await _module.canEditRecord(); + await _module.checkClaimStatus(); + await _module.getMenuButtons(); + } + await _module.$nextTick(); + await _module.checkAlerts(); try { - await _module.$scrollTo(_module.$route.hash || 'body') + await _module.$scrollTo(_module.$route.hash || "body"); // eslint-disable-next-line no-empty - } - catch (e) { + } catch (e) { // This serves to prevent warnings when tests are run on Github (trying to scroll with no DOM etc.). #1201 } // update the UI padding and margin after DOM is fully loaded. @@ -684,217 +753,231 @@

Source: views/Records/Record.vue

if (!(query === undefined || query === null)) { // TODO: This does work but yet again the test refuses to acknowledge this. /* istanbul ignore if */ - if (query.history === 'show') { + if (query.history === "show") { _module.history = { show: true, - loading: true + loading: true, }; await _module.getHistory(); _module.history.loading = false; } } + _module.loading = false; + _module.$emit("showDialog", !_module.loading); }, methods: { closeHistory() { this.history.show = false; - this.$router.replace({query: {}}); + this.$router.replace({ query: {} }); }, async checkAlerts() { let _module = this; // here order of calling functions matters in presentation first we stack blue alerts(no-auth needed ones) // and then curators alerts(auth-needed orange ones) so blue ones stack, // then orange and then red/green [approval/rejection] ones. - let alertBuilder = new AlertBuilder(_module.currentRecord, this.user()) - .isAwaitingApproval() - .isWatching(this.isWatching()) - .isNeedingReview(this.needsReviewing(), this.error) - .isNeedingReviewAndBeenReviewed(this.reviewsPresent()) - .isAlreadyClaimed(this.alreadyClaimed) - .isHidden() - .isIncomplete() - .isMissingRecommendedFields() - .isOwnerShipApproved(this.ownershipApprovalStatus, this.isBannerExpired()); + let alertBuilder = new AlertBuilder(_module.currentRecord, this.user()) + .isAwaitingApproval() + .isWatching(this.isWatching()) + .isNeedingReview(this.needsReviewing(), this.error) + .isNeedingReviewAndBeenReviewed(this.reviewsPresent()) + .isAlreadyClaimed(this.alreadyClaimed) + .isHidden() + .isIncomplete() + .isMissingRecommendedFields() + .isOwnerShipApproved( + this.ownershipApprovalStatus, + this.isBannerExpired(), + ); _module.alerts = alertBuilder.getAlerts(); }, - ...mapActions('record', ['fetchRecord', 'fetchRecordHistory', 'fetchPreviewRecord']), - ...mapActions('users', ['updateWatchedRecords']), - ...mapMutations('users', ['changeWatched']), + ...mapActions("record", [ + "fetchRecord", + "fetchRecordHistory", + "fetchPreviewRecord", + ]), + ...mapActions("users", ["updateWatchedRecords"]), + ...mapMutations("users", ["changeWatched"]), async getMenuButtons() { let _module = this; - this.buttons = [] + this.buttons = []; let initial_buttons = [ { - name: function() { return "Edit record" }, - isDisabled: function(){ - if (!_module.userIsLoggedIn){ - return false + name: function () { + return "Edit record"; + }, + isDisabled: function () { + if (!_module.userIsLoggedIn) { + return false; } - return !_module.canEdit + return !_module.canEdit; + }, + method: function () { + return _module.goToEdit(); }, - method: function(){return _module.goToEdit()} }, { - name: function() { return "Request ownership" }, - isDisabled: function(){ - if (!_module.userIsLoggedIn){ - return false + name: function () { + return "Request ownership"; + }, + isDisabled: function () { + if (!_module.userIsLoggedIn) { + return false; } return !_module.canClaim; }, - method: async function(){ - if (!_module.userIsLoggedIn){ + method: async function () { + if (!_module.userIsLoggedIn) { _module.$router.push({ path: "/accounts/login", query: { - goTo: `/${_module.currentRecord['fairsharingRecord'].id}` - } - }) - } - else { + goTo: `/${_module.currentRecord["fairsharingRecord"].id}`, + }, + }); + } else { _module.claimRecordMenu( - _module.currentRecord['fairsharingRecord'].name, - _module.currentRecord['fairsharingRecord'].id, + _module.currentRecord["fairsharingRecord"].name, + _module.currentRecord["fairsharingRecord"].id, ); } - } + }, }, { name: () => { - if (!_module.userIsLoggedIn){ - return "Watch record" - } - else { - if (!_module.isWatching()){ - return "Watch record" - } - else { - return "Unwatch record" + if (!_module.userIsLoggedIn) { + return "Watch record"; + } else { + if (!_module.isWatching()) { + return "Watch record"; + } else { + return "Unwatch record"; } } }, - isDisabled: function() { return false }, - method: function(){ - if (!_module.userIsLoggedIn){ + isDisabled: function () { + return false; + }, + method: function () { + if (!_module.userIsLoggedIn) { _module.$router.push({ path: "/accounts/login", query: { - goTo: `/${_module.currentRecord['fairsharingRecord'].id}` - } - }) - } - else { + goTo: `/${_module.currentRecord["fairsharingRecord"].id}`, + }, + }); + } else { if (_module.isWatching()) { _module.changeWatchRecord(false); - } - else { + } else { _module.changeWatchRecord(true); } } - } + }, }, { - name: function() { - if (_module.currentRecord['fairsharingRecord'].hasGraph) { - return "View Relation Graph" + name: function () { + if (_module.currentRecord["fairsharingRecord"].hasGraph) { + return "View Relation Graph"; } - return "No graph available" + return "No graph available"; }, - isDisabled: function(){ - if (_module.currentRecord['fairsharingRecord'].hasGraph) { + isDisabled: function () { + if (_module.currentRecord["fairsharingRecord"].hasGraph) { return false; } return true; }, - method: function(){ + method: function () { _module.$router.push({ - path: "/graph/" + _module.currentRecord['fairsharingRecord'].id - }) - } + path: "/graph/" + _module.currentRecord["fairsharingRecord"].id, + }); + }, }, { - name: function() { return "View record history" }, - isDisabled: function(){return false}, + name: function () { + return "View record history"; + }, + isDisabled: function () { + return false; + }, method: async () => { this.history = { show: true, - loading: true + loading: true, }; await this.getHistory(); this.history.loading = false; - } + }, }, { name: function () { - return "Have a suggestion/question ?" + return "Have a suggestion/question ?"; }, isDisabled: function () { return false; }, method: function () { - parent.location = "mailto:contact@fairsharing.org?subject=[FAIRsharing][Feedback] Comments on " + _module.currentRecord.fairsharingRecord.name; - } - } + parent.location = + "mailto:contact@fairsharing.org?subject=[FAIRsharing][Feedback] Comments on " + + _module.currentRecord.fairsharingRecord.name; + }, + }, ]; if (_module.user().is_curator && _module.needsReviewing()) { - initial_buttons.push( - { - name: function () { - return "Review this record" - }, - isDisabled: function () { - // Only to be seen by logged-in curators. - // So, this line shouldn't really be encountered... - /* istanbul ignore if */ - if (!_module.userIsLoggedIn) { - return true; - } - return !_module.user().is_curator; - }, - method: async function () { - await _module.reviewRecord(); - } + initial_buttons.push({ + name: function () { + return "Review this record"; + }, + isDisabled: function () { + // Only to be seen by logged-in curators. + // So, this line shouldn't really be encountered... + /* istanbul ignore if */ + if (!_module.userIsLoggedIn) { + return true; } - ) + return !_module.user().is_curator; + }, + method: async function () { + await _module.reviewRecord(); + }, + }); } if (_module.user().is_super_curator) { - initial_buttons.push( - { - name: function () { - return "Delete this record" - }, - isDisabled: function () { - return !_module.user().is_super_curator; - }, - method: /* istanbul ignore next */ async function () { - _module.deleteRecordMenu( - _module.currentRecord['fairsharingRecord'].name, - _module.currentRecord['fairsharingRecord'].id, - ); - } - } - ) + initial_buttons.push({ + name: function () { + return "Delete this record"; + }, + isDisabled: function () { + return !_module.user().is_super_curator; + }, + method: /* istanbul ignore next */ async function () { + _module.deleteRecordMenu( + _module.currentRecord["fairsharingRecord"].name, + _module.currentRecord["fairsharingRecord"].id, + ); + }, + }); } if (_module.maintainsRecord) { let _module = this; - initial_buttons.push( - { - name: function() { return "Stop maintaining"}, - isDisabled: function() { - return false; - }, - method: async function () { - _module.stopMaintainRecordMenu( - _module.currentRecord['fairsharingRecord'].name, - _module.currentRecord['fairsharingRecord'].id, - ); - } - }, - ) + initial_buttons.push({ + name: function () { + return "Stop maintaining"; + }, + isDisabled: function () { + return false; + }, + method: async function () { + _module.stopMaintainRecordMenu( + _module.currentRecord["fairsharingRecord"].name, + _module.currentRecord["fairsharingRecord"].id, + ); + }, + }); } this.buttons = initial_buttons; }, - convertStringToLocalVar(stringVarName){ - return this[stringVarName] + convertStringToLocalVar(stringVarName) { + return this[stringVarName]; }, /* useful methods for communicating from child to parent // please keep these as reference @@ -905,14 +988,16 @@

Source: views/Records/Record.vue

this[name](value) }, */ - async confirmDelete(){ + async confirmDelete() { const _module = this; _module.dialogs.disableButton = true; - let data = await client.deleteRecord(_module.dialogs.recordID, this.user().credentials.token); - if (data.error){ + let data = await client.deleteRecord( + _module.dialogs.recordID, + this.user().credentials.token, + ); + if (data.error) { _module.error = "error deleting record"; - } - else{ + } else { // Redirect to current record to show it has gone... this.$router.go(); } @@ -921,7 +1006,7 @@

Source: views/Records/Record.vue

claimRecordMenu(recordName, recordID) { const _module = this; _module.dialogs.disableButton = false; - _module.dialogs.disableDelButton = true + _module.dialogs.disableDelButton = true; _module.dialogs.recordName = recordName; _module.dialogs.recordID = recordID; _module.dialogs.claimRecord = true; @@ -932,7 +1017,7 @@

Source: views/Records/Record.vue

stopMaintainRecordMenu(recordName, recordID) { const _module = this; _module.dialogs.disableButton = false; - _module.dialogs.disableDelButton = true + _module.dialogs.disableDelButton = true; _module.dialogs.recordName = recordName; _module.dialogs.recordID = recordID; _module.dialogs.stopMaintainRecord = true; @@ -940,10 +1025,10 @@

Source: views/Records/Record.vue

_module.dialogs.disableDelButton = false; }, 5000); }, - deleteRecordMenu(recordName, recordID){ + deleteRecordMenu(recordName, recordID) { const _module = this; _module.dialogs.disableButton = false; - _module.dialogs.disableDelButton = true + _module.dialogs.disableDelButton = true; _module.dialogs.recordName = recordName; _module.dialogs.recordID = recordID; _module.dialogs.deleteRecord = true; @@ -951,38 +1036,40 @@

Source: views/Records/Record.vue

_module.dialogs.disableDelButton = false; }, 5000); }, - closeDeleteMenu () { + closeDeleteMenu() { this.dialogs.disableButton = true; this.dialogs.deleteRecord = false; }, - closeClaimMenu () { + closeClaimMenu() { this.dialogs.disableButton = true; this.dialogs.claimRecord = false; }, - closeMaintainMenu () { + closeMaintainMenu() { this.dialogs.disableButton = true; this.dialogs.stopMaintainRecord = false; }, - goToEdit(){ + goToEdit() { let _module = this; - const recordID = '/' + _module.currentRecord['fairsharingRecord'].id; + const recordID = "/" + _module.currentRecord["fairsharingRecord"].id; if (_module.userIsLoggedIn) { this.$router.push({ - path: recordID + '/edit', - params: { - fromRecordPage: true - } - }) - } - else { + path: recordID + "/edit", + /** + * Pushing artificial param breaks app + * Ref: https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 + */ + // params: { + // fromRecordPage: true + // } + }); + } else { this.$router.push({ path: "/accounts/login", query: { - goTo: `/${_module.currentRecord['fairsharingRecord'].id}` - } - }) + goTo: `/${_module.currentRecord["fairsharingRecord"].id}`, + }, + }); } - }, /** * Method to create a maintenance_request; sets canClaim and (on fail) error. @@ -990,14 +1077,17 @@

Source: views/Records/Record.vue

* */ async requestOwnership() { let _module = this; - const recordID = _module.currentRecord['fairsharingRecord'].id; - const claim = await client.claimRecord(recordID, _module.user().credentials.token); + const recordID = _module.currentRecord["fairsharingRecord"].id; + const claim = await client.claimRecord( + recordID, + _module.user().credentials.token, + ); /* istanbul ignore else */ if (claim.error) { - _module.error = "Sorry, your request to claim this record failed. Please contact us."; + _module.error = + "Sorry, your request to claim this record failed. Please contact us."; _module.canClaim = false; - } - else { + } else { // show modal here _module.canClaim = false; _module.claimedTriggered = true; @@ -1012,22 +1102,27 @@

Source: views/Records/Record.vue

* */ async removeMaintainer() { let _module = this; - const recordID = _module.currentRecord['fairsharingRecord'].id; + const recordID = _module.currentRecord["fairsharingRecord"].id; // TODO: Write new function to remove claim. - const unclaim = await client.removeMaintainer(recordID, _module.user().credentials.token); + const unclaim = await client.removeMaintainer( + recordID, + _module.user().credentials.token, + ); if (unclaim.error) { - _module.error = "Sorry, your request to be removed as a maintainer of this record failed. Please contact us."; + _module.error = + "Sorry, your request to be removed as a maintainer of this record failed. Please contact us."; _module.stopMaintainFailure = true; - } - else { + } else { // Display a toast here. _module.stopMaintainSuccess = true; // remove maintainer from local data - let newMaintainers = _module.currentRecord['fairsharingRecord']['maintainers'].filter(maintainer => { - return maintainer.id !== _module.user().id - } - ) - _module.currentRecord['fairsharingRecord']['maintainers'] = newMaintainers; + let newMaintainers = _module.currentRecord["fairsharingRecord"][ + "maintainers" + ].filter((maintainer) => { + return maintainer.id !== _module.user().id; + }); + _module.currentRecord["fairsharingRecord"]["maintainers"] = + newMaintainers; } _module.dialogs.stopMaintainRecord = false; }, @@ -1038,13 +1133,24 @@

Source: views/Records/Record.vue

async checkClaimStatus() { let _module = this; if (_module.user().isLoggedIn) { - const recordID = _module.currentRecord['fairsharingRecord'].id; + const recordID = _module.currentRecord["fairsharingRecord"].id; _module.canClaim = false; try { - const claim = await client.canClaim(recordID, _module.user().credentials.token); + const claim = await client.canClaim( + recordID, + _module.user().credentials.token, + ); if (claim.error) { - if (claim.error.response.data.existing && claim.error.response.data.status === 'pending') { - let maintainer = _module.getField("maintainers").filter(maintainer => maintainer.username === _module.user().credentials.username); + if ( + claim.error.response.data.existing && + claim.error.response.data.status === "pending" + ) { + let maintainer = _module + .getField("maintainers") + .filter( + (maintainer) => + maintainer.username === _module.user().credentials.username, + ); if (maintainer.length === 0) { //alreadyClaimed: this is the situation where the current record has been already claimed by user to be maintained. _module.alreadyClaimed = true; @@ -1054,21 +1160,22 @@

Source: views/Records/Record.vue

_module.ownershipApprovalStatus = claim.error.response.data.status; // assign expiring date for approval/rejection banner--- - if (_module.ownershipApprovalStatus === 'approved' || _module.ownershipApprovalStatus === 'rejected') { + if ( + _module.ownershipApprovalStatus === "approved" || + _module.ownershipApprovalStatus === "rejected" + ) { _module.setBannerExpiry(); } _module.canClaim = false; - } - else { + } else { // show modal here _module.canClaim = !claim.existing; } - if(!claim.error) { + if (!claim.error) { //noClaimRegistered: this is the situation where the current record is not requested to be maintained by user _module.noClaimRegistered = true; } - } - catch (e) { + } catch (e) { /* istanbul ignore next */ _module.canClaim = false; } @@ -1087,15 +1194,17 @@

Source: views/Records/Record.vue

this.tombstone = false; try { if (this.target) await _module.fetchPreviewRecord(this.target); - else await _module.fetchRecord({ - id: this.currentRoute, - token: (_module.user().credentials) ? _module.user().credentials.token : null - }); + else + await _module.fetchRecord({ + id: this.currentRoute, + token: _module.user().credentials + ? _module.user().credentials.token + : null, + }); // UNCOMMENT ME TO TEST TOMBSTONE PAGE // Or, set tombstone to true on a record, if using a local server. // this.currentRecord['fairsharingRecord'].metadata.tombstone = true; - } - catch (e) { + } catch (e) { this.error = e.message; } this.queryTriggered = true; @@ -1106,26 +1215,28 @@

Source: views/Records/Record.vue

* */ async getHistory() { await this.$store.dispatch("record/fetchRecordHistory", { - id: this.currentRoute, token: this.user().credentials.token - } - ); + id: this.currentRoute, + token: this.user().credentials.token, + }); }, /** * Test if the current user can edit the current record * @returns {Promise<void>} */ - async canEditRecord(){ + async canEditRecord() { const _module = this; _module.canEdit = false; if (_module.user().isLoggedIn) { - const recordID = _module.currentRecord['fairsharingRecord'].id; + const recordID = _module.currentRecord["fairsharingRecord"].id; if (!recordID) { return false; } - const canEdit = await client.canEdit(recordID, _module.user().credentials.token); + const canEdit = await client.canEdit( + recordID, + _module.user().credentials.token, + ); _module.canEdit = !canEdit.error; - } - else { + } else { return false; } }, @@ -1140,24 +1251,21 @@

Source: views/Records/Record.vue

let operation; let records = _module.user().watchedRecords.slice(); if (watch) { - operation = 'add'; - records.push(_module.currentRecord['fairsharingRecord'].id); - } - else { - operation = 'remove'; - records = records.filter(function(value){ - return value !== _module.currentRecord['fairsharingRecord'].id; + operation = "add"; + records.push(_module.currentRecord["fairsharingRecord"].id); + } else { + operation = "remove"; + records = records.filter(function (value) { + return value !== _module.currentRecord["fairsharingRecord"].id; }); } - let response = await this.updateWatchedRecords( - { - recordID: _module.currentRecord['fairsharingRecord'].id, - operation: operation - } - ); + let response = await this.updateWatchedRecords({ + recordID: _module.currentRecord["fairsharingRecord"].id, + operation: operation, + }); // Refresh user data to reload followed record status. /* istanbul ignore else */ - if (response.message.indexOf('success') !== -1){ + if (response.message.indexOf("success") !== -1) { _module.changeWatched(records); } this.loading = false; @@ -1171,18 +1279,28 @@

Source: views/Records/Record.vue

if (this.user().watchedRecords === undefined) { return false; } - return this.currentRecord['fairsharingRecord'].id - && this.user().watchedRecords.includes(this.currentRecord['fairsharingRecord'].id) || false; + return ( + (this.currentRecord["fairsharingRecord"].id && + this.user().watchedRecords.includes( + this.currentRecord["fairsharingRecord"].id, + )) || + false + ); }, setBannerExpiry() { const _module = this; - let bannerExpiryDate = {...JSON.parse(localStorage.getItem("bannerExpiryDate"))}; + let bannerExpiryDate = { + ...JSON.parse(localStorage.getItem("bannerExpiryDate")), + }; if (!bannerExpiryDate[_module.getField("id")]) { bannerExpiryDate = { ...JSON.parse(localStorage.getItem("bannerExpiryDate")), - [_module.getField("id")]: new Date() - } - localStorage.setItem("bannerExpiryDate", JSON.stringify(bannerExpiryDate)); + [_module.getField("id")]: new Date(), + }; + localStorage.setItem( + "bannerExpiryDate", + JSON.stringify(bannerExpiryDate), + ); } }, isBannerExpired() { @@ -1193,7 +1311,10 @@

Source: views/Records/Record.vue

if (temp) { const expiryDate = new Date(temp[id]); // very important line: instead of adding if its been expired I directly assigned to variable so test can be passed much easier. - return !(expiryDate.getTime() + (DAY * 24 * 60 * 60 * 1000) < now.getTime()); + return !( + expiryDate.getTime() + DAY * 24 * 60 * 60 * 1000 < + now.getTime() + ); } return true; }, @@ -1203,27 +1324,28 @@

Source: views/Records/Record.vue

let d = new Date(); let pastYear = d.getFullYear() - 1; d.setFullYear(pastYear); - if (!_module.reviewsPresent()){ + if (!_module.reviewsPresent()) { return !_module.reviewsPresent(); - } - else { + } else { // Creating a date from the string returned by the API. // See: https://stackoverflow.com/a/11658343/1195207 - _module.currentRecord['fairsharingRecord']['reviews'].forEach(function (review) { - let rawDate = review['createdAt'].split('T')[0].split('-'); - if (new Date(rawDate[0], rawDate[1]-1, rawDate[2]) > d) { - need = false; - } - }) + _module.currentRecord["fairsharingRecord"]["reviews"].forEach( + function (review) { + let rawDate = review["createdAt"].split("T")[0].split("-"); + if (new Date(rawDate[0], rawDate[1] - 1, rawDate[2]) > d) { + need = false; + } + }, + ); } return need; }, reviewsPresent() { const _module = this; - if (!_module.currentRecord['fairsharingRecord']['reviews']) { + if (!_module.currentRecord["fairsharingRecord"]["reviews"]) { return false; } - if(_module.currentRecord['fairsharingRecord']['reviews'].length === 0) { + if (_module.currentRecord["fairsharingRecord"]["reviews"].length === 0) { return false; } return true; @@ -1231,77 +1353,80 @@

Source: views/Records/Record.vue

async reviewRecord() { // Post a review to the server. const _module = this; - const recordID = _module.currentRecord['fairsharingRecord'].id; - const reviewRecord = await client.reviewRecord(recordID, _module.user().credentials.token); + const recordID = _module.currentRecord["fairsharingRecord"].id; + const reviewRecord = await client.reviewRecord( + recordID, + _module.user().credentials.token, + ); if (reviewRecord.error) { _module.reviewFail = true; - } - else { + } else { _module.reviewSuccess = true; await this.getData(); } // Re-display the menu. await this.getMenuButtons(); await this.checkAlerts(); - } + }, }, metaInfo() { try { let id; if (this.currentRecord.fairsharingRecord.doi) { - id = this.currentRecord.fairsharingRecord.doi.split('/')[1]; - } - else { + id = this.currentRecord.fairsharingRecord.doi.split("/")[1]; + } else { id = this.currentRecord.fairsharingRecord.id; } if (this.currentRecord.fairsharingRecord.abbreviation) { return { - title: 'FAIRsharing | ' + this.currentRecord.fairsharingRecord.abbreviation, + title: + "FAIRsharing | " + + this.currentRecord.fairsharingRecord.abbreviation, meta: [ { - name: 'description', - content: `FAIRsharing record for ${this.currentRecord.fairsharingRecord.name} (${this.currentRecord.fairsharingRecord.abbreviation})` + name: "description", + content: `FAIRsharing record for ${this.currentRecord.fairsharingRecord.name} (${this.currentRecord.fairsharingRecord.abbreviation})`, }, { - name: 'link', - content: `${process.env.VUE_APP_HOSTNAME}${id}`, - rel: 'canonical' - } - ] - } - } - else { + name: "link", + content: `${import.meta.env.VITE_HOSTNAME}${id}`, + rel: "canonical", + }, + ], + }; + } else { return { - title: 'FAIRsharing | ' + this.currentRecord.fairsharingRecord.name, + title: "FAIRsharing | " + this.currentRecord.fairsharingRecord.name, meta: [ { - name: 'description', - content: `FAIRsharing record for ${this.currentRecord.fairsharingRecord.name}` + name: "description", + content: `FAIRsharing record for ${this.currentRecord.fairsharingRecord.name}`, }, { - name: 'link', - content: `${process.env.VUE_APP_HOSTNAME}${id}`, - rel: 'canonical' - } - ] - } + name: "link", + content: `${import.meta.env.VITE_HOSTNAME}${id}`, + rel: "canonical", + }, + ], + }; } } catch (e) { //error } - } -} + }, +}; </script> <style scoped> - -.fade-enter-active, .fade-leave-active { +.fade-enter-active, +.fade-leave-active { transition: opacity 1s; transition-delay: 1s; } .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { opacity: 0; } -ul,li { +ul, +li { padding: 0; } @@ -1309,7 +1434,6 @@

Source: views/Records/Record.vue

word-break: keep-all; font-size: 70%; } - </style>
@@ -1356,7 +1480,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Records_Records.vue.html b/documentation/html/views_Records_Records.vue.html index 5fdb5de0d2..1fcd217dd5 100644 --- a/documentation/html/views_Records_Records.vue.html +++ b/documentation/html/views_Records_Records.vue.html @@ -93,17 +93,11 @@

Source: views/Records/Records.vue

<template>
   <v-main>
-    <transition name="fade">
-      <jump-to-top v-if="scrollStatus" />
-    </transition>
-    <v-container
-      fluid
-      class="pa-0"
-    >
+    <v-container fluid class="pa-0">
       <!--  Content  -->
       <v-row no-gutters>
         <v-col
-          v-if="$vuetify.breakpoint.lgAndUp"
+          v-if="$vuetify.display.lgAndUp"
           cols="12"
           lg="4"
           md="4"
@@ -114,29 +108,18 @@ 

Source: views/Records/Records.vue

:class="[ 'search-input-mb', { - 'left-panel-fixed-lg': stickToTop && $vuetify.breakpoint.xlOnly, - 'left-panel-default-lg': - !stickToTop && $vuetify.breakpoint.xlOnly, - 'left-panel-default': - !stickToTop && !$vuetify.breakpoint.xlOnly, - 'left-panel-fixed': stickToTop && !$vuetify.breakpoint.xlOnly, + 'left-panel-fixed-lg': stickToTop && $vuetify.display.xlOnly, + 'left-panel-default-lg': !stickToTop && $vuetify.display.xlOnly, + 'left-panel-default': !stickToTop && !$vuetify.display.xlOnly, + 'left-panel-fixed': stickToTop && !$vuetify.display.xlOnly, }, ]" /> </v-col> - <v-col - v-else - cols="12" - class="ml-3 mt-2" - > - <v-btn - class="info" - @click="showFiltersSM = true" - > + <v-col v-else cols="12" class="ml-3 mt-2"> + <v-btn class="bg-info" @click="showFiltersSM = true"> <span class="mr-2">Show filters</span> - <v-icon small> - fa-filter - </v-icon> + <v-icon size="small"> fas fa-filter </v-icon> </v-btn> </v-col> @@ -147,37 +130,33 @@

Source: views/Records/Records.vue

</v-container> <v-fade-transition> - <v-dialog - v-model="showFiltersSM" - fullscreen - hide-overlay - scrollable - > - <v-card> - <v-card-title class="primary white--text pb-5"> - Add a filter - <v-spacer /> - <v-btn - fab - x-small - @click="showFiltersSM = false" - > - <v-icon>fa-times</v-icon> - </v-btn> - </v-card-title> - <SearchInput class="pa-5" /> - </v-card> - </v-dialog> + <div> + <v-dialog v-model="showFiltersSM" fullscreen :scrim="false" scrollable> + <v-card> + <v-card-title class="bg-primary text-white pb-5"> + Add a filter + <v-spacer /> + <v-btn size="x-small" @click="showFiltersSM = false"> + <v-icon>fas fa-times</v-icon> + </v-btn> + </v-card-title> + <SearchInput class="pa-5" /> + </v-card> + </v-dialog> + </div> </v-fade-transition> <v-fade-transition> - <v-overlay - v-if="isLoading" - :absolute="false" - opacity="0.8" - > - <Loaders /> - </v-overlay> + <div> + <v-overlay + v-model="isLoading" + :absolute="false" + opacity="0.8" + class="align-center justify-center" + > + <Loaders /> + </v-overlay> + </div> </v-fade-transition> </v-main> </template> @@ -185,7 +164,6 @@

Source: views/Records/Records.vue

<script> import { mapActions, mapMutations, mapState } from "vuex"; -import JumpToTop from "@/components/Navigation/jumpToTop"; import Loaders from "@/components/Navigation/Loaders"; import SearchInput from "@/components/Records/Search/Input/SearchInput"; import SearchOutput from "@/components/Records/Search/Output/SearchOutput"; @@ -195,7 +173,7 @@

Source: views/Records/Records.vue

export default { name: "Records", - components: { Loaders, JumpToTop, SearchOutput, SearchInput }, + components: { Loaders, SearchOutput, SearchInput }, mixins: [filterChipsUtils, onScrollUtil], data: () => ({ searchTerm: "", @@ -218,20 +196,20 @@

Source: views/Records/Records.vue

getTitle: function () { const flipRecordTypes = Object.entries(this.recordTypes).reduce( (obj, [key, value]) => ({ ...obj, [value]: key }), - {} + {}, ); let title = "Search"; /* istanbul ignore else */ if ( Object.prototype.hasOwnProperty.call( this.$route.query, - "fairsharingRegistry" + "fairsharingRegistry", ) ) { if ( Object.prototype.hasOwnProperty.call( flipRecordTypes, - this.$route.query.fairsharingRegistry + this.$route.query.fairsharingRegistry, ) ) { title = flipRecordTypes[this.$route.query.fairsharingRegistry]; @@ -240,6 +218,7 @@

Source: views/Records/Records.vue

return title; }, currentPath: function () { + document.title = "FAIRsharing | " + this.getTitle; // Setting up the metaInfo of the page let title = this.$route.path.replace("/", ""); const client = this; let queryParams = {}; @@ -281,10 +260,10 @@

Source: views/Records/Records.vue

} }); }, - beforeDestroy() { + beforeUnmount() { this.cleanRecordsStore(); }, - destroyed() { + unmounted() { this.$scrollTo("body", 50, {}); window.removeEventListener("scroll", () => { this.onScroll(this.records); @@ -308,6 +287,7 @@

Source: views/Records/Records.vue

if (Object.keys(this.recordTypes).includes(this.$route.name)) { let fairsharingRegistry = this.recordTypes[this.$route.name]; let query = this.$route.query; + /* istanbul ignore else */ if (query && query !== {}) { query.fairsharingRegistry = fairsharingRegistry; @@ -335,15 +315,14 @@

Source: views/Records/Records.vue

// To make sure that any lingering values from having viewed a collection are cleared out. // See SummaryDownload.vue for the code which looks for collection IDs when downloading a // summary of search results. - this.$store.commit('records/setCollectionIdsParam', []); + this.$store.commit("records/setCollectionIdsParam", []); try { this.showFiltersSM = false; let token; - if(this.user().credentials !== undefined) { - token = this.user().credentials.token - } - else { - token = "" + if (this.user().credentials !== undefined) { + token = this.user().credentials.token; + } else { + token = ""; } await _module.fetchRecords({ params: this.getParameters(), @@ -361,19 +340,10 @@

Source: views/Records/Records.vue

*/ getParameters: function () { return this.$store.getters["introspection/buildQueryParameters"]( - this.currentPath + this.currentPath, ); }, }, - /** - * Setting up the metaInfo of the page - * @returns {{title: String}} - * */ - metaInfo() { - return { - title: "FAIRsharing | " + this.getTitle, - }; - }, }; </script> @@ -468,7 +438,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Static_Community_Community.vue.html b/documentation/html/views_Static_Community_Community.vue.html index 1988d0b363..c3d1c94bda 100644 --- a/documentation/html/views_Static_Community_Community.vue.html +++ b/documentation/html/views_Static_Community_Community.vue.html @@ -92,70 +92,73 @@

Source: views/Static/Community/Community.vue

<template>
-  <main :class="applyCss?'pa-15 mb-10':''">
+  <main :class="applyCss ? 'pa-15 mb-10' : ''">
     <!--  main_title_2 -->
     <!-- eslint-disable vue/no-v-html -->
     <h1 class="mb-5">
-      FAIRsharing is a community-driven resource with users and collaborators across all disciplines.
-      We work together with our stakeholders to enable the <a
+      FAIRsharing is a community-driven resource with users and collaborators
+      across all disciplines. We work together with our stakeholders to enable
+      the
+      <a
+        class="underline-effect"
         href="https://www.nature.com/articles/sdata201618"
         target="_blank"
-        class="underline-effect"
-      >FAIR Principles</a> by promoting the value and the use of standards,
-      databases and policies.
+        >FAIR Principles</a
+      >
+      by promoting the value and the use of standards, databases and policies.
     </h1>
 
     <p class="text-h5">
-      How to cite us: use the DOI for the <a
+      How to cite us: use the DOI for the
+      <a
+        class="underline-effect"
         href="https://doi.org/10.25504/FAIRsharing.2abjs5"
         target="_blank"
+        >FAIRsharing record</a
+      >, or our
+      <a
         class="underline-effect"
-      >FAIRsharing record</a>, or our <a
         href="https://doi.org/10.1038/s41587-019-0080-8"
         target="_blank"
-        class="underline-effect"
-      >publication.</a>
+        >publication.</a
+      >
     </p>
 
     <!-- Adopters, activities, Governance tabs-->
     <v-container class="my-10">
-      <v-row
-        class="block-category"
-      >
+      <v-row class="block-category">
         <v-col
-          v-for="(tab,index) in contentTabs"
-          :key="tab.name+'_'+index"
+          v-for="(tab, index) in contentTabs"
+          :key="tab.name + '_' + index"
           cols="12"
-          sm="12"
-          md="4"
           lg="4"
+          md="4"
+          sm="12"
         >
           <v-card
             class="mx-auto block-category__card cursor-pointer"
-            max-width="350"
             height="300"
+            max-width="350"
             @click="jumpToAnchor(tab.name.toLowerCase())"
           >
-            <div class="white--text d-flex flex-column justify-center block-category__card__gradient">
+            <div
+              class="text-white d-flex flex-column justify-center block-category__card__gradient"
+            >
               <div
+                class="d-flex justify-center align-center"
                 style="height: 136px"
-                class="d-flex justify-center"
               >
-                <v-icon
-                  size="80"
-                  color="white"
-                  style="opacity: .7"
-                >
-                  {{ $vuetify.icons.values[tab.icon].icon }}
+                <v-icon color="white" size="80" style="opacity: 0.7">
+                  {{ customIcons.values[tab.icon].icon }}
                 </v-icon>
               </div>
-              <v-card-title class="d-inline text-h4 text-center text-md-h5 text-lg-h4">
+              <v-card-title
+                class="d-inline text-h4 text-center text-md-h5 text-lg-h4"
+              >
                 {{ tab.name }}
               </v-card-title>
             </div>
-            <v-card-text
-              class="text--primary text-justify"
-            >
+            <v-card-text class="text--primary text-justify">
               <p class="text-center">
                 {{ tab.description }}
               </p>
@@ -167,330 +170,307 @@ 

Source: views/Static/Community/Community.vue

<!-- Adopters --> <section id="adopters"> - <h3 class="text-h3 mb-4 mt-5"> - Adopters - </h3> + <h3 class="text-h3 mb-4 mt-5">Adopters</h3> <p> - A broad range of <a href="/stakeholders">stakeholders</a> come to FAIRsharing from across all research domains. - However, adopters use FAIRsharing specifically to do one or more of the following: + A broad range of <a href="/stakeholders">stakeholders</a> come to + FAIRsharing from across all research domains. However, adopters use + FAIRsharing specifically to do one or more of the following: </p> <ol type="i"> <li> - Educate their users/community on the variety of existing standards, repositories and policies that exist in - FAIRsharing and actively encourage them to submit/claim records, where relevant; + Educate their users/community on the variety of existing standards, + repositories and policies that exist in FAIRsharing and actively + encourage them to submit/claim records, where relevant; </li> <li> - Recommend resources by registering their data policy, and then link it to standards and/or databases - <a href="/search?page=1&isRecommended=true">recommended</a> in the policy; + Recommend resources by registering their data policy, and then link it + to standards and/or databases + <a href="/search?page=1&isRecommended=true">recommended</a> in the + policy; </li> <li> - Create a <a href="/collections">Collection</a> that pulls together a list of standards and/or databases - around a given domain of interest relevant to them. + Create a <a href="/collections">Collection</a> that pulls together a + list of standards and/or databases around a given domain of interest + relevant to them. </li> </ol> <p> - Adopters are generally representatives of institutions, libraries, journal publishers, infrastructure - programmes, societies and other organisations or projects that in turn serve and guide individual - researchers or other stakeholders on research data management matters. Adopters display a FAIRsharing logo - on their websites with a link from their website to our homepage. + Adopters are generally representatives of institutions, libraries, + journal publishers, infrastructure programmes, societies and other + organisations or projects that in turn serve and guide individual + researchers or other stakeholders on research data management matters. + Adopters display a FAIRsharing logo on their websites with a link from + their website to our homepage. </p> <p> - In general, our adopters fall into the following broad categories. If you don't see your project on the - list of adopters, please <a href="mailto:contact@fairsharing.org">get in touch</a>. + In general, our adopters fall into the following broad categories. If + you don't see your project on the list of adopters, please + <a href="mailto:contact@fairsharing.org">get in touch</a>. </p> <div class="text-center"> - <v-btn - class="ma-2 text-white" - > + <v-btn class="ma-2" color="primary" variant="elevated"> <router-link v-scroll-to="'#funders'" + style="color: white" to="#funders" - text-color="white" > Funders </router-link> </v-btn> - <v-btn - class="ma-2 text-white" - > + <v-btn class="ma-2" color="primary" variant="elevated"> <router-link v-scroll-to="'#publishers'" + style="color: white" to="#publishers" - text-color="white" > Publishers </router-link> </v-btn> - <v-btn - class="ma-2 text-white" - > + <v-btn class="ma-2" color="primary" variant="elevated"> <router-link v-scroll-to="'#organisations'" + style="color: white" to="#organisations" - text-color="white" > Organisations </router-link> </v-btn> - <v-btn - class="ma-2 text-white" - > - <router-link - v-scroll-to="'#tools'" - to="#tools" - text-color="white" - > + <v-btn class="ma-2" color="primary" variant="elevated"> + <router-link v-scroll-to="'#tools'" style="color: white" to="#tools"> Tools </router-link> </v-btn> </div> - <h4 class="text-h4 mb-4 mt-5 pt-10"> - Funders - </h4> + <h4 class="text-h4 mb-4 mt-5 pt-10">Funders</h4> <p id="funders" - :class="['mb-0 mt-10 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 mt-10 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - A selection of official reports from funders and other organisations that recommend the use of FAIRsharing as a key asset for all stakeholders to enable FAIR data: + A selection of official reports from funders and other organisations + that recommend the use of FAIRsharing as a key asset for all + stakeholders to enable FAIR data: </p> <!-- External Links --> - <v-row - class="my-2" - > + <v-row class="my-2"> <v-col - v-for="(item,index) in externalLinks" - :key="index+'_'+item.titleLink" + v-for="(item, index) in externalLinks" + :key="index + '_' + item.titleLink" + :class="[ + 'pa-5 links', + { 'max-width-32-percent': $vuetify.display.mdAndUp }, + ]" cols="12" - md="12" lg="4" - :class="['pa-5 links',{'max-width-32-percent':$vuetify.breakpoint.mdAndUp}]" + md="12" > - <a - :href="item.titleLink" - target="_blank" - > + <a :href="item.titleLink" target="_blank"> <p - :class="['mb-0 lato-font-medium lato-text-sm underline-effect',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 lato-font-medium lato-text-sm underline-effect', + { 'lato-text-md': $vuetify.display.xl }, + ]" > {{ item.title }} </p> </a> <i - :class="['mb-0 word-break lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 word-break lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" v-html="$sanitize(item.text)" /> </v-col> </v-row> - <h4 class="text-h4 mb-4 mt-5 pt-10"> - Publishers - </h4> + <h4 class="text-h4 mb-4 mt-5 pt-10">Publishers</h4> <p id="publishers" - :class="['mb-0 mt-10 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 mt-10 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - A selection of the publishers that use FAIRsharing to define and refine their data policies: + A selection of the publishers that use FAIRsharing to define and refine + their data policies: </p> <!--Adopter table--> - <v-row - class="mt-2 ml-0" - > + <v-row class="mt-2 ml-0"> <v-col - v-for="(item,index) in tables.adopterTable.data" - :key="index+'_'+item.adopter" + v-for="(item, index) in tables.adopterTable.data" + :key="index + '_' + item.adopter" + :class="[ + 'pa-5 links', + { 'max-width-32-percent': $vuetify.display.mdAndUp }, + ]" cols="12" - md="12" lg="4" - :class="['pa-5 links',{'max-width-32-percent':$vuetify.breakpoint.mdAndUp}]" + md="12" > <v-img v-if="item.image" - max-width="250px" - max-height="250px" :src="item.image" + class="contain" height="120" - contain - style="filter: grayscale(1);" + max-height="250px" + max-width="250px" + style="filter: grayscale(1)" /> </v-col> </v-row> - <h4 class="text-h4 mt-5 pt-10"> - Other Organisations - </h4> + <h4 class="text-h4 mt-5 pt-10">Other Organisations</h4> <p id="organisations" - :class="['mb-0 mt-10 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 mt-10 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > Some other organisations using FAIRsharing. </p> - <v-row - class="mt-2 ml-0" - > + <v-row class="mt-2 ml-0"> <v-col - v-for="(item,index) in tables.globalOrganisationTable.data" + v-for="(item, index) in tables.globalOrganisationTable.data" :key="`${item.adopter}_${index}`" - :class="['pa-5 links full-width',{'max-width-24-percent':$vuetify.breakpoint.mdAndUp}]" + :class="[ + 'pa-5 links full-width', + { 'max-width-24-percent': $vuetify.display.mdAndUp }, + ]" cols="12" - md="12" lg="4" + md="12" > <v-img v-if="item.image" - max-width="250px" - max-height="250px" :src="item.image" + class="contain" height="120" - contain - style="filter: grayscale(1);" + max-height="250px" + max-width="250px" + style="filter: grayscale(1)" /> </v-col> </v-row> </section> <!-- new tools section --> - <h4 class="text-h4 mt-5 pt-10"> - Tools - </h4> + <h4 class="text-h4 mt-5 pt-10">Tools</h4> <p v-if="tables.toolsTable.data.length" id="tools" - :class="['mb-0 mt-10 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-0 mt-10 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - Tools that make use of FAIRsharing content. If you would like your tool included in this list, please use + Tools that make use of FAIRsharing content. If you would like your tool + included in this list, please use <a href="https://docs.google.com/forms/d/e/1FAIpQLSdl1lKj9xlgN5Od_LyqWfnqBl-8aOLXhdFQa2nfm5CBmZ1TgQ/viewform?usp=sf_link" target="_blank" - >this form</a> + >this form</a + > to let us know how you're using FAIRsharing. </p> <!-- Tools table begins --> - <v-row - v-if="tables.toolsTable.data.length" - dense - > + <v-row v-if="tables.toolsTable.data.length" dense> <v-col v-for="tool in tables.toolsTable.data" :key="tool.id" cols="12" - sm="12" - md="4" lg="3" + md="4" + sm="12" xl="2" > - <v-card - class="full-width" - > + <v-card class="full-width"> <v-img - :src="tool.logo ? `/assets/Community/tools/${tool.logo}` : '/assets/Community/tools/toolplaceholder.png'" - class="white--text align-end" - gradient="to top, rgba(0, 0, 0, 0.9), rgba(255, 255, 255, 0.9)" - cover + :src=" + tool.logo + ? `/assets/Community/tools/${tool.logo}` + : '/assets/Community/tools/toolplaceholder.png' + " aspect-ratio="1" + class="text-white align-end" + cover + gradient="to top, rgba(0, 0, 0, 0.9), rgba(255, 255, 255, 0.9)" > <v-card-title> <h4 style="word-break: initial"> - <a - :id="tool.id" - :href="tool.homepage" - > + <a :id="tool.id" :href="tool.homepage" target="_blank"> {{ tool.name }} </a> </h4> </v-card-title> - <v-card-subtitle - v-if="tool.description" - > + <v-card-subtitle v-if="tool.description"> {{ tool.description }} </v-card-subtitle> </v-img> <v-card-text + :style=" + $vuetify.display.xl + ? 'height: 320px' + : $vuetify.display.mdAndUp + ? 'height: 350px' + : 'height: 100%' + " class="text--primary" style="height: 100%" - :style="$vuetify.breakpoint.xl ? 'height: 320px': $vuetify.breakpoint.mdAndUp ? 'height: 350px' : 'height: 100%'" > <div v-if="tool.organisations && tool.organisations.length"> Organisation : - <span - v-for="(org, i) in tool.organisations" - :key="org.id" - > - <v-tooltip - v-if="org.tooltip" - bottom - > - <template #activator="{ on }"> - <a - :href="orgUrl(org)" - class="d-inline-block" - v-on="on" - >{{ org.name }} + <span v-for="(org, i) in tool.organisations" :key="org.id"> + <v-tooltip v-if="org.tooltip" location="bottom"> + <template #activator="{ props }"> + <a :href="orgUrl(org)" class="d-inline-block" v-bind="props" + >{{ org.name }} </a> </template> <span>{{ org.tooltip }}</span> </v-tooltip> - <a - v-else - :href="orgUrl(org)" - class="d-inline-block" - >{{ org.name }} + <a v-else :href="orgUrl(org)" class="d-inline-block" + >{{ org.name }} </a> - <span v-if="i+1 < tool.organisations.length">, </span> + <span v-if="i + 1 < tool.organisations.length">, </span> </span> </div> - <div v-if="tool.status"> - Status: {{ tool.status }} - </div> + <div v-if="tool.status">Status: {{ tool.status }}</div> <div v-if="tool.contacts && tool.contacts.length"> - Contacts:<br> - <span - v-for="(contact) in tool.contacts" - :key="contact.id" - > - <v-chip - class="ma-2" - x-small - > + Contacts:<br /> + <span v-for="contact in tool.contacts" :key="contact.id"> + <v-chip class="ma-2" size="x-small"> <a :href="contact.url">{{ contact.name }}</a> </v-chip> </span> </div> <div v-if="tool.methods && tool.methods.length"> - Methods of using FAIRsharing:<br> - <span - v-for="(method) in tool.methods" - :key="tool.name + method" - > - <v-chip - class="ma-2" - x-small - > + Methods of using FAIRsharing:<br /> + <span v-for="method in tool.methods" :key="tool.name + method"> + <v-chip class="ma-2" size="x-small"> {{ method }} </v-chip> </span> </div> <div v-if="tool.types && tool.types.length"> - Type of resource:<br> - <span - v-for="(type) in tool.types" - :key="tool.name + type" - > - <v-chip - class="ma-2" - x-small - > + Type of resource:<br /> + <span v-for="type in tool.types" :key="tool.name + type"> + <v-chip class="ma-2" size="x-small"> {{ type }} </v-chip> </span> @@ -501,61 +481,80 @@

Source: views/Static/Community/Community.vue

</v-row> <!-- Tools table ends --> - <!-- Activities --> <section id="activities"> - <h3 class="text-h4 my-4"> - Activities - </h3> + <h3 class="text-h4 my-4">Activities</h3> <p - :class="['mb-2 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-2 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - FAIRsharing is not just a registry. The team behind FAIRsharing is involved in a number of FAIR-enabling activities, delivering guidance, tools and services with and for a variety of stakeholders. As these activities mature, we will implement or connect them in/to the FAIRsharing resource itself. + FAIRsharing is not just a registry. The team behind FAIRsharing is + involved in a number of FAIR-enabling activities, delivering guidance, + tools and services with and for a variety of stakeholders. As these + activities mature, we will implement or connect them in/to the + FAIRsharing resource itself. </p> <p - :class="['mb-2 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-2 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - Some of these activities are part of funded projects and of national or international consortia, while others are volunteer efforts that fall under a variety of umbrella organisations, such as working groups (WG) and learned societies. + Some of these activities are part of funded projects and of national or + international consortia, while others are volunteer efforts that fall + under a variety of umbrella organisations, such as working groups (WG) + and learned societies. </p> <b - :class="['mb-2 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-2 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - Our activities are classified using the three GO-FAIR pillar structures (change, build, train) and are outlined here. + Our activities are classified using the three GO-FAIR pillar structures + (change, build, train) and are outlined here. </b> <!--Activities table--> <ActivitiesStaticTable class="mb-16 mt-2" /> </section> - <!-- Governance --> <section id="governance"> - <h3 class="text-h4 mb-4"> - Governance - </h3> + <h3 class="text-h4 mb-4">Governance</h3> <!-- Meet the team --> <a id="team" /> <h4 class="text-h5 mb-2"> {{ meettheteam.title }} </h4> <p - :class="['mb-5 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-5 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" v-html="$sanitize(meettheteam.description)" /> <ul class="d-flex flex-wrap pl-0"> <li - v-for="(profileItem,index) in meettheteam.profiles" + v-for="(profileItem, index) in meettheteam.profiles" :key="`${profileItem}_${index}`" - :class="['text-center width-250 height-400 mb-10',$vuetify.breakpoint.mdAndDown?'mx-auto':'']" + :class="[ + 'text-center width-250 height-400 mb-10', + $vuetify.display.mdAndDown ? 'mx-auto' : '', + ]" > <v-avatar size="160"> - <v-img - :src="profileItem.profileImg" - style="filter: grayscale(1);" - /> + <v-img :src="profileItem.profileImg" style="filter: grayscale(1)" /> </v-avatar> <p - class="text-center primary--text lato-font-bold mt-2 ma-0" - style="font-size: 1.5rem;min-height: 80px;display: flex;flex-direction: column;" + class="text-center text-primary lato-font-bold mt-2 ma-0" + style=" + font-size: 1.5rem; + min-height: 80px; + display: flex; + flex-direction: column; + " v-html="$sanitize(profileItem.name)" /> <i class="small d-block height-75"> @@ -563,18 +562,22 @@

Source: views/Static/Community/Community.vue

</i> <div class="text-center mt-2 d-flex justify-center"> <span - v-for="(socialItem,socialIndex) in profileItem.social" + v-for="(socialItem, socialIndex) in profileItem.social" :key="`${socialItem}_${socialIndex}`" > <a + :href=" + socialItem.link.includes('@') + ? `mailto:${socialItem.link}` + : socialItem.link + " class="pr-2" - :href="socialItem.link.includes('@')?`mailto:${socialItem.link}`:socialItem.link" target="_blank" > <Icon - class="mr-1" :item="socialItem.icon" - :height="25" + class="mr-1" + height="25" size="30" wrapper-class="" /> @@ -586,76 +589,80 @@

Source: views/Static/Community/Community.vue

<!-- Advisory Board --> <a id="board" /> <div - v-for="(governanceItem,key,index) in governance" - :key="Object.keys(governanceItem)[index]+'_'+'index'" + v-for="(governanceItem, key, index) in governance" + :key="Object.keys(governanceItem)[index] + '_' + 'index'" > <div class="mb-10"> <h4 class="text-h5 mb-8"> {{ key }} </h4> <div - v-for="(itemText,itemIndex) in governance_text" - :key="itemText+'_'+itemIndex" + v-for="(itemText, itemIndex) in governance_text" + :key="itemText + '_' + itemIndex" > - <p - class="ma-1" - v-html="$sanitize(itemText.text)" - /> + <p class="ma-1" v-html="$sanitize(itemText.text)" /> </div> <div - v-for="(item,itemIndex) in governanceItem" - :key="item.title+'_'+itemIndex" + v-for="(item, itemIndex) in governanceItem" + :key="item.title + '_' + itemIndex" class="mt-5" > <div class="mb-5"> - <ul :class="['mt-2',{'column-count':$vuetify.breakpoint.mdAndUp}]"> + <ul + :class="['mt-2', { 'column-count': $vuetify.display.mdAndUp }]" + > <li - v-for="(itemData,itemDataIndex) in item.data" - :key="itemData+'_'+itemDataIndex" - :class="['mb-1',{'d-flex':isArray(itemData)===true && $vuetify.breakpoint.lgAndUp}]" + v-for="(itemData, itemDataIndex) in item.data" + :key="itemData + '_' + itemDataIndex" + :class="[ + 'mb-1', + { + 'd-flex': + isArray(itemData) === true && $vuetify.display.lgAndUp, + }, + ]" > - <div - v-if="!isArray(itemData)" - class="d-flex mb-2" - > - <p - class="ma-0" - v-html="$sanitize(itemData.text)" - /> + <div v-if="!isArray(itemData)" class="d-flex mb-2"> + <p class="ma-0" v-html="$sanitize(itemData.text)" /> <a v-if="itemData.link" + :href=" + itemData.link.toString().includes('@') + ? `mailto:${itemData.link}` + : itemData.link + " class="ml-2 pr-2" - :href="itemData.link.toString().includes('@')?`mailto:${itemData.link}`:itemData.link" target="_blank" > <Icon class="mr-1" + height="25" item="Orcid" - :height="25" size="30" wrapper-class="" /> </a> </div> <div - v-for="(itemDataArray,itemDataArrayIndex) in itemData" + v-for="(itemDataArray, itemDataArrayIndex) in itemData" v-else - :key="itemDataArray.link+'_'+itemDataArrayIndex" + :key="itemDataArray.link + '_' + itemDataArrayIndex" class="d-flex mb-2" > - <p - class="ma-0" - v-html="$sanitize(itemDataArray.text)" - /> + <p class="ma-0" v-html="$sanitize(itemDataArray.text)" /> <a + :href=" + itemDataArray.link.toString().includes('@') + ? `mailto:${itemDataArray.link}` + : itemDataArray.link + " class="ml-2 pr-2" - :href="itemDataArray.link.toString().includes('@')?`mailto:${itemDataArray.link}`:itemDataArray.link" target="_blank" > <Icon class="mr-1" + height="25" item="Orcid" - :height="25" size="30" wrapper-class="" /> @@ -673,44 +680,44 @@

Source: views/Static/Community/Community.vue

{{ rda.title }} </h4> <p - :class="['mb-5 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-5 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" v-html="$sanitize(rda.description)" /> <div - v-for="(item,itemIndex) in rda.subsections" - :key="item.title+'_'+itemIndex" + v-for="(item, itemIndex) in rda.subsections" + :key="item.title + '_' + itemIndex" class="ml-8" > <div class="mb-5"> <h4 class="text-h5"> {{ item.title }} </h4> - <div - v-if="isArray(item.data)" - > - <ul :class="['mt-2',{'column-count':$vuetify.breakpoint.mdAndUp}]"> + <div v-if="isArray(item.data)"> + <ul :class="['mt-2', { 'column-count': $vuetify.display.mdAndUp }]"> <li - v-for="(itemData,itemDataIndex) in item.data" - :key="itemData+'_'+itemDataIndex" - :class="['mb-1',{'d-flex': $vuetify.breakpoint.lgAndUp}]" + v-for="(itemData, itemDataIndex) in item.data" + :key="itemData + '_' + itemDataIndex" + :class="['mb-1', { 'd-flex': $vuetify.display.lgAndUp }]" > - <div - class="d-flex mb-2" - > - <p - class="ma-0" - v-html="$sanitize(itemData.text)" - /> + <div class="d-flex mb-2"> + <p class="ma-0" v-html="$sanitize(itemData.text)" /> <a v-if="itemData.link" + :href=" + itemData.link.toString().includes('@') + ? `mailto:${itemData.link}` + : itemData.link + " class="ml-2 pr-2" - :href="itemData.link.toString().includes('@')?`mailto:${itemData.link}`:itemData.link" target="_blank" > <Icon class="mr-1" + height="25" item="Orcid" - :height="25" size="30" wrapper-class="" /> @@ -721,7 +728,10 @@

Source: views/Static/Community/Community.vue

</div> <div v-else> <p - :class="['mb-5 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-5 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" v-html="$sanitize(item.data)" /> </div> @@ -729,25 +739,25 @@

Source: views/Static/Community/Community.vue

</div> <div> <p - :class="['mb-5 lato-font-medium lato-text-sm',{'lato-text-md':$vuetify.breakpoint.xlOnly }]" + :class="[ + 'mb-5 lato-font-medium lato-text-sm', + { 'lato-text-md': $vuetify.display.xl }, + ]" > - <a - href="https://zulip.com/" - target="_blank" - > + <a href="https://zulip.com/" target="_blank"> <img height="27px" - width="27px" src="/assets/icons/zulip-icon.png" - > + width="27px" + /> </a> - We'd like to thank <a - href="https://zulip.com/" - target="_blank" - class="underline-effect" - >Zulip</a> - for access to their community plan, which helps both our core team and our champions. - Zulip is an open-source modern team chat app designed to keep both live and asynchronous conversations organized. + We'd like to thank + <a class="underline-effect" href="https://zulip.com/" target="_blank" + >Zulip</a + > + for access to their community plan, which helps both our core team and + our champions. Zulip is an open-source modern team chat app designed + to keep both live and asynchronous conversations organized. </p> </div> </section> @@ -761,11 +771,22 @@

Source: views/Static/Community/Community.vue

* All static pages will be handle through this namespace * @namespace Static */ -import {isArray} from "lodash"; +import { isArray } from "lodash"; import Icon from "@/components/Icon"; import ActivitiesStaticTable from "@/components/Static/Community/ActivitiesStaticTable"; -import communityData from "@/data/communityPageData.json" +import communityData from "@/data/communityPageData.json"; +import customIcons from "@/plugins/icons"; + +const handleScroll = () => { + // Check if we are at the top + // Only run this if there is actually a hash to remove + if (window.scrollY < 2 && window.location.hash) { + // We use replaceState so we don't clutter the history stack + history.replaceState(history.state, null, window.location.pathname); + } +}; + /** This component handles the sign-up/register page * @memberOf Static * @name Community @@ -773,63 +794,73 @@

Source: views/Static/Community/Community.vue

* @instance * */ export default { - name: "Community", - components: {Icon, ActivitiesStaticTable}, - title: "This will be the community page", - data: () => { - return { - contentTabs: communityData.contentTabs, - externalLinks: communityData.externalLinks, - governance: communityData.governance, - governance_text: communityData.governance_text, - meettheteam: communityData.meettheteam, - rda: communityData.rda, - tables: communityData.tables, - applyCss: false, - currentAnchor:'', - Icon - } + name: "Community", + components: { Icon, ActivitiesStaticTable }, + title: "This will be the community page", + data: () => { + return { + contentTabs: communityData.contentTabs, + externalLinks: communityData.externalLinks, + governance: communityData.governance, + governance_text: communityData.governance_text, + meettheteam: communityData.meettheteam, + rda: communityData.rda, + tables: communityData.tables, + applyCss: false, + currentAnchor: "", + Icon, + customIcons: customIcons, + }; + }, + watch: { + $route: { + deep: true, + handler() { + this.applyCss = false; + this.$nextTick(() => { + this.applyCss = true; + }); + }, }, - watch: { - $route: { - deep:true, - handler() { - this.applyCss = false - this.$nextTick(() => { - this.applyCss = true - }) - } - } + }, + created() { + this.$nextTick(() => { + // update the UI padding and margin after DOM is fully loaded. + this.applyCss = true; + }); + }, + + mounted() { + window.addEventListener("scroll", handleScroll); + }, + unmounted() { + //CRITICAL: If you skip this, the event listener keeps running forever in the background! + window.removeEventListener("scroll", handleScroll); + }, + methods: { + jumpToAnchor(selectedAnchor) { + let anchorElement = document.getElementById(selectedAnchor); + if (selectedAnchor !== this.currentAnchor) { + anchorElement.scrollIntoView({ behavior: "smooth", block: "start" }); + history.pushState(null, null, `#${selectedAnchor}`); + this.currentAnchor = selectedAnchor; + } }, - created() { - this.$nextTick(() => { - // update the UI padding and margin after DOM is fully loaded. - this.applyCss = true - }) + isArray(input) { + return isArray(input); }, - methods: { - jumpToAnchor(selectedAnchor) { - if (selectedAnchor !== this.currentAnchor) { - this.$router.push({hash: `${selectedAnchor}`}); - this.currentAnchor = selectedAnchor; - } - }, - isArray(input){ - return isArray(input) - }, - orgUrl(org) { - if (org.id) { - return `/organisations/${org.id}`; - } - else { - return org.url; - } - } - } -} + orgUrl(org) { + if (org.id) { + return `/organisations/${org.id}`; + } else { + return org.url; + } + }, + }, +}; </script> -<style scoped lang="scss"> +<style lang="scss" scoped> .links { border: 1px #d4d4d4 solid; margin: 2px; @@ -837,14 +868,14 @@

Source: views/Static/Community/Community.vue

.block-category { &__card { - transition: all .2ms ease; - -webkit-transition: all .2s ease; - -moz-transition: all .2s ease; - -o-transition: all .2s ease; - box-shadow: 0 1rem 2rem rgba(black, .15) !important; - -webkit-box-shadow: 0 1rem 2rem rgba(black, .15) !important; - -moz-box-shadow: 0 1rem 2rem rgba(black, .15) !important; - -o-box-shadow: 0 1rem 2rem rgba(black, .15) !important; + transition: all 0.2ms ease; + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + box-shadow: 0 1rem 2rem rgba(black, 0.15) !important; + -webkit-box-shadow: 0 1rem 2rem rgba(black, 0.15) !important; + -moz-box-shadow: 0 1rem 2rem rgba(black, 0.15) !important; + -o-box-shadow: 0 1rem 2rem rgba(black, 0.15) !important; &:hover { transform: scale(1.05); @@ -856,10 +887,26 @@

Source: views/Static/Community/Community.vue

&__gradient { height: 200px; background: rgb(171, 171, 171); - background: linear-gradient(50deg, rgb(204, 204, 204) 0%, rgb(135, 135, 135) 100%); - background: -webkit-linear-gradient(50deg, rgb(204, 204, 204) 0%, rgb(135, 135, 135) 100%); - background: -o-linear-gradient(50deg, rgb(204, 204, 204) 0%, rgb(135, 135, 135) 100%); - background: -ms-linear-gradient(50deg, rgb(204, 204, 204) 0%, rgb(135, 135, 135) 100%); + background: linear-gradient( + 50deg, + rgb(204, 204, 204) 0%, + rgb(135, 135, 135) 100% + ); + background: -webkit-linear-gradient( + 50deg, + rgb(204, 204, 204) 0%, + rgb(135, 135, 135) 100% + ); + background: -o-linear-gradient( + 50deg, + rgb(204, 204, 204) 0%, + rgb(135, 135, 135) 100% + ); + background: -ms-linear-gradient( + 50deg, + rgb(204, 204, 204) 0%, + rgb(135, 135, 135) 100% + ); } } } @@ -869,11 +916,11 @@

Source: views/Static/Community/Community.vue

} .border-bottom { - border-bottom: 1px solid #ECF0F1 !important; + border-bottom: 1px solid #ecf0f1 !important; } .border-left { - border-left: 1px solid #ECF0F1 !important; + border-left: 1px solid #ecf0f1 !important; } a:hover { @@ -884,12 +931,13 @@

Source: views/Static/Community/Community.vue

-o-transform: scale(1.1); } } + td { - font-size: 1rem!important; + font-size: 1rem !important; } .column-count { - column-count:2; + column-count: 2; -moz-column-count: 2; -webkit-column-count: 2; } @@ -897,8 +945,8 @@

Source: views/Static/Community/Community.vue

.word-break { white-space: break-spaces; } - -</style>
+</style> +
@@ -943,7 +991,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Static_Timeline_Timeline.vue.html b/documentation/html/views_Static_Timeline_Timeline.vue.html index b3be508651..8aa7df9f08 100644 --- a/documentation/html/views_Static_Timeline_Timeline.vue.html +++ b/documentation/html/views_Static_Timeline_Timeline.vue.html @@ -96,20 +96,19 @@

Source: views/Static/Timeline/Timeline.vue

</template> <script> - /** This component handles the sign-up/register page - * @memberOf Static - * @name Timeline - * @type module - * @instance - * */ - export default { - name: "Timeline" - } +/** This component handles the sign-up/register page + * @memberOf Static + * @name Timeline + * @type module + * @instance + * */ +export default { + name: "Timeline", +}; </script> -<style scoped> - -</style>
+<style scoped></style> +
@@ -154,7 +153,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Users_Login_Login.vue.html b/documentation/html/views_Users_Login_Login.vue.html index 77ab58aea9..dea9fd1c1a 100644 --- a/documentation/html/views_Users_Login_Login.vue.html +++ b/documentation/html/views_Users_Login_Login.vue.html @@ -96,25 +96,28 @@

Source: views/Users/Login/Login.vue

id="loginPage" ref="loginPage" v-model="formValid" - class="login mb-9" + class="login mb-9 elevation-10 rounded" style="background: white" > <v-container> <!-- forms --> <v-row justify="center"> <v-col - cols="12" - sm="12" - :md="!popUp ? '8' : '12'" :lg="!popUp ? '8' : '12'" + :md="!popUp ? '8' : '12'" :xl="!popUp ? '5' : '12'" + cols="12" + sm="12" > <v-card :flat="popUp"> <v-card-title - :class="{ 'blue white--text mb-5': !popUp, 'py-0 mb-5': popUp }" + :class="{ + 'bg-blue text-white mb-5 text-center': !popUp, + 'py-0 mb-5': popUp, + }" > <h2 class="ma-0"> - {{ currentPanel | capitalize }} + {{ currentPanel }} </h2> </v-card-title> @@ -123,12 +126,9 @@

Source: views/Users/Login/Login.vue

<MessageHandler field="login" /> <!-- button to re-send confirmation if login failed --> - <div - v-if="resendButton" - class="d-flex flex-row justify-center" - > + <div v-if="resendButton" class="d-flex flex-row justify-center"> <v-btn - class="text-center teal white--text px-2" + class="text-center bg-teal text-white px-2" href="/users/resendConfirmation" @click=" () => { @@ -139,31 +139,26 @@

Source: views/Users/Login/Login.vue

Resend me the confirmation email </v-btn> </div> - <v-divider - v-if="resendButton" - class="pb-0 mb-0" - /> + <v-divider v-if="resendButton" class="pb-0 mb-0" opacity="0.9" /> <!-- OAUTH --> <v-list v-if="checkEndpoint()" + class="d-flex flex-column align-center" > <v-list-item v-for="(provider, providerIndex) in oauthLogin" :key="'provider_' + providerIndex" - style="justify-content: center" > <v-btn - width="250px" :class="provider.color" - class="text-left" :href="provider.callback + getCurrentLocation()" + class="text-left" + elevation="3" + width="250px" > <v-layout width="100%"> - <v-icon - left - class="mr-5" - > + <v-icon class="mr-5" start> {{ "fab fa-" + provider.name.toLowerCase() }} </v-icon> <v-layout>with {{ provider.name }}</v-layout> @@ -174,33 +169,30 @@

Source: views/Users/Login/Login.vue

</v-card-text> <!-- card content // Form --> - <v-card-text v-if="currentPanel === 'login'"> - <v-form - id="loginForm" - ref="loginForm" - v-model="formValid" - > + <v-card-text v-if="currentPanel === 'Login'"> + <v-form id="loginForm" ref="loginForm" v-model="formValid"> <!-- account --> <v-text-field v-model="loginData.name" + :rules="[rules.isRequired()]" label="Username or email" required - outlined - :rules="[rules.isRequired()]" + variant="outlined" @keyup.enter="logUser()" /> <!-- password --> <v-text-field v-model="loginData.password" - :append-icon="show1 ? 'fa-eye' : 'fa-eye-slash'" + :append-inner-icon="show1 ? 'fas fa-eye' : 'fas fa-eye-slash'" + :rules="[rules.isRequired()]" :type="show1 ? 'text' : 'password'" - label="Password" + autocomplete="off" counter + label="Password" required - outlined - :rules="[rules.isRequired()]" - @click:append="show1 = !show1" + variant="outlined" + @click:append-inner="show1 = !show1" @keyup.enter="logUser()" /> @@ -212,9 +204,10 @@

Source: views/Users/Login/Login.vue

$emit('ClosePopup', true); } " - >Forgotten your password?</span> + >Forgotten your password?</span + > </router-link> - <v-divider /> + <v-divider opacity="0.9" /> <router-link to="/accounts/signup"> <span @click=" @@ -222,9 +215,10 @@

Source: views/Users/Login/Login.vue

$emit('ClosePopup', true); } " - >Need to create a new account?</span> + >Need to create a new account?</span + > </router-link> - <v-divider /> + <v-divider opacity="0.9" /> <a href="https://fairsharing.gitbook.io/fairsharing/#accessing-fairsharing-through-3rd-party-accounts" target="_blank" @@ -235,16 +229,16 @@

Source: views/Users/Login/Login.vue

$emit('ClosePopup', true); } " - >Can't login with ORCID or Github?</span> + >Can't login with ORCID or Github?</span + > </a> </v-card-text> <v-card-actions class="mt-2 justify-center"> <v-btn - class="px-4" - light - color="primary" :disabled="!formValid" + class="px-4 bg-primary" + elevation="2" @click="logUser()" > LOGIN @@ -260,11 +254,11 @@

Source: views/Users/Login/Login.vue

</template> <script> -import {mapActions, mapState} from 'vuex' +import { mapActions, mapState } from "vuex"; import MessageHandler from "@/components/Users/MessageHandler"; -import { isRequired } from "@/utils/rules.js" -import stringUtils from '@/utils/stringUtils'; +import { isRequired } from "@/utils/rules.js"; +import stringUtils from "@/utils/stringUtils"; /** This component handles the login page * @@ -283,22 +277,31 @@

Source: views/Users/Login/Login.vue

default: false, }, }, + emits: ["ClosePopup"], data: () => { return { show1: false, resendButton: false, - currentPanel: "login", + currentPanel: "Login", loginData: {}, oauthLogin: [ { name: "ORCID", - color: "green white--text", - callback: process.env.VUE_APP_API_ENDPOINT + "/users/auth/orcid", + color: "bg-green text-white", + callback: import.meta.env.VITE_API_ENDPOINT + "/users/auth/orcid", }, + // See: https://github.com/FAIRsharing/fairsharing.github.io/issues/2184 + /* + { + name: "Twitter", + color: "blue text-white", + callback: import.meta.env.VITE_API_ENDPOINT + "/users/auth/twitter", + }, + */ { name: "GitHub", - color: "black white--text", - callback: process.env.VUE_APP_API_ENDPOINT + "/users/auth/github", + color: "bg-black text-white", + callback: import.meta.env.VITE_API_ENDPOINT + "/users/auth/github", }, ], rules: { @@ -332,12 +335,39 @@

Source: views/Users/Login/Login.vue

} else { const goTo = _module.$route.query.goTo; + let target = {}; if (_module.redirect) { if (goTo) { - _module.$router.push({ - path: goTo, - }); - } else { + //Added if condition as path was trimming query params in path in vue-router 4 + if (goTo.includes("?")) { + const url = goTo.split("?"); + const queryURLArr = url[1].split("&"); + queryURLArr.forEach((pair) => { + if (pair !== "") { + let splitpair = pair.split("="); + let key = splitpair[0]; + target[key] = splitpair[1]; + + //For advancedSearch only + if (url[0] === "/advancedsearch" && pair.includes("fields")) { + const [key, ...rest] = pair.split("="); + const value = rest.join("="); + target[key] = decodeURIComponent(value); + } + } + }); + _module.$router.push({ + path: url[0], + query: target, + }); + } + else { + _module.$router.push({ + path: goTo, + }); + } + } + else { _module.$router.push({ path: "/accounts/profile", }); @@ -356,7 +386,10 @@

Source: views/Users/Login/Login.vue

getCurrentLocation() { let loc = this.$router.currentRoute.path; let params = this.$route.query; - let query = Object.keys(params).map(k=>`${k}=${params[k]}`).join('&').replace("next=",""); + let query = Object.keys(params) + .map((k) => `${k}=${params[k]}`) + .join("&") + .replace("next=", ""); let origin; if (params.length > 0) { origin = encodeURI(`${loc}`); @@ -367,18 +400,19 @@

Source: views/Users/Login/Login.vue

return `?origin=${origin}`; }, checkEndpoint() { - if (process.env.VUE_APP_API_ENDPOINT === 'https://api.fairsharing.org' || - process.env.VUE_APP_API_ENDPOINT === 'http://127.0.0.1:3000' - ) { + if ( + import.meta.env.VITE_API_ENDPOINT === "https://api.fairsharing.org" || + import.meta.env.VITE_API_ENDPOINT === "http://127.0.0.1:3000" + ) { return true; } return false; - } + }, }, }; </script> -<style scoped> +<style lang="scss" scoped> #loginPage a { text-decoration: none !important; } @@ -432,7 +466,7 @@ Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/documentation/html/views_Users_Signup.vue.html b/documentation/html/views_Users_Signup.vue.html index f4bbfbebf2..609737864e 100644 --- a/documentation/html/views_Users_Signup.vue.html +++ b/documentation/html/views_Users_Signup.vue.html @@ -96,14 +96,14 @@

Source: views/Users/Signup.vue

</template> <script> - import Register from "../../components/Users/Register"; - /** This component handles the sign-up/register page - * - */ - export default { - name: "Signup", - components: {Register} - } +import Register from "../../components/Users/Register"; +/** This component handles the sign-up/register page + * + */ +export default { + name: "Signup", + components: { Register }, +}; </script>
@@ -150,7 +150,7 @@

Documentation generated by JSDoc 4.0.5 - on Fri Mar 20th 2026 + on Fri Apr 10th 2026 using the DocStrap template. diff --git a/index.html b/index.html new file mode 100644 index 0000000000..3f3e7f5e84 --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + + + + FAIRsharing + + + + + +
+ + + + diff --git a/jest-setup.js b/jest-setup.js deleted file mode 100644 index 564cfb634a..0000000000 --- a/jest-setup.js +++ /dev/null @@ -1,6 +0,0 @@ -import Particles from "@tsparticles/vue2"; -import Vue from 'vue' -import Vuetify from 'vuetify' - -Vue.use(Particles); -Vue.use(Vuetify); \ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index b258cf18dd..0000000000 --- a/jest.config.js +++ /dev/null @@ -1,33 +0,0 @@ -module.exports = { - preset: "@vue/cli-plugin-unit-jest", - collectCoverage: true, - coverageReporters: ["lcov"], - collectCoverageFrom: [ - "src/**/*.{js,vue}", - "!src/main.js", - "!src/utils/utils.js", - "!src/documentation/process_doc.js", - "!src/store/index.js", - "!src/plugins/**", - "!src/router/routes.js", - "!views/Records/NetworkGraph.vue", - "!src/components/Records/Search/Input/AdvancedSearch/QueryBuilderComponents/index.js", - "!src/components/Records/Search/SaveSearch/StepperComponents/index.js", - "!src/components/Curators/index.js", - ], - testMatch: [ - "**/**.spec.js", - "**/**/**.spec.js", - "tests/**/**.spec.js", - "tests/**/**/**.spec.js", - ], - setupFiles: ["./jest-setup.js", "trace-unhandled/register"], - moduleFileExtensions: ["js", "json", "vue"], - transform: { - "^.*\\.js$": "babel-jest", - ".*\\.(vue)$": "vue-jest", - }, - transformIgnorePatterns: [ - "node_modules/(?!vue-router|@babel|vuetify|@tsparticles/vue2)", - ], -}; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000000..0745e954dc --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,4 @@ +{ + "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, + "exclude": ["node_modules", "dist"] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..248311f625 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18254 @@ +{ + "name": "fairsharing.github.io", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fairsharing.github.io", + "version": "0.1.0", + "dependencies": { + "-": "^0.0.1", + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@tsparticles/vue3": "^3.0.1", + "@vue/compat": "^3.3.4", + "axios": "^1.3.1", + "bibtex": "^0.9.0", + "bootstrap": "^4.5.2", + "bootstrap-vue": "^2.16.0", + "core-js": "^3.28.0", + "deep-object-diff": "^1.1.0", + "dompurify": "^3.3.1", + "dotenv": "^16.0.3", + "graphology": "^0.26.0", + "graphology-layout": "^0.6.1", + "graphology-layout-forceatlas2": "^0.10.1", + "highcharts": "12.1.2", + "highcharts-vue": "2.0.1", + "jquery": "^3.5.1", + "json-to-graphql-query": "^2.2.5", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "node-gyp": "^3.8.0", + "npm-check": "^6.0.1", + "prettier": "^2.8.6", + "query-builder-vue": "^1.2.0", + "query-builder-vue-3": "^1.0.1", + "regenerator-runtime": "^0.14.1", + "roboto-fontface": "*", + "sigma": "^2.4.0", + "simple-analytics-vue": "^3.0.2", + "trace-unhandled": "^2.0.1", + "tsparticles": "^3.5.0", + "vite-plugin-vuetify": "^2.0.4", + "vue": "^3.4.35", + "vue-3-sanitize": "^0.1.4", + "vue-code-highlight": "^0.7.8", + "vue-country-flag-next": "^2.3.2", + "vue-eslint-parser": "^9.4.3", + "vue-gtag": "^2.1.0", + "vue-json-pretty": "^2.6.0", + "vue-loader": "^17.4.2", + "vue-meta": "^3.0.0-alpha.10", + "vue-moment": "^4.1.0", + "vue-router": "^4.4.3", + "vue-scrollto": "^2.20.0", + "vuetify": "^3.6.14", + "vuex": "^4.1.0", + "webpack": "^5.93.0" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/preset-env": "^7.25.8", + "@fortawesome/fontawesome-free": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@vitejs/plugin-vue": "^5.1.4", + "@vitest/coverage-v8": "^2.1.4", + "@vitest/ui": "^2.1.4", + "@vue/babel-preset-app": "^5.0.8", + "@vue/test-utils": "^2.4.6", + "autoprefixer": "^10.4.20", + "baseline-browser-mapping": "^2.9.11", + "compression-webpack-plugin": "11.1.0", + "css-loader": "^7.1.2", + "deepmerge": "^4.2.2", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-vue": "^9.27.0", + "eslint-plugin-vuetify": "^2.4.0", + "eslint-webpack-plugin": "^4.2.0", + "fs": "*", + "happy-dom": "^20.0.10", + "ink-docstrap": "^1.3.2", + "jsdoc": "^4.0.4", + "jsdoc-vuejs": "^4.0.0", + "linkifyjs": "^3.0.5", + "lint-staged": "^9.5.0", + "path": "*", + "postcss": "^8.4.21", + "prettier": "3.4.2", + "resize-observer-polyfill": "^1.5.1", + "sass": "^1.77.8", + "sinon": "^18.0.0", + "stylelint": "^16.12.0", + "stylelint-scss": "^6.10.0", + "taffydb": "^2.7.3", + "vite": "^5.4.10", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-eslint": "^1.8.1", + "vite-plugin-node-polyfills": "^0.22.0", + "vitest": "^2.1.4", + "vue-3-linkify": "^1.1.0", + "vue-cli-plugin-vuetify": "~2.5.8", + "vue-template-compiler": "^2.7.15", + "webpack-bundle-analyzer": "^4.10.2" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/-": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/-/-/--0.0.1.tgz", + "integrity": "sha512-3HfneK3DGAm05fpyj20sT3apkNcvPpCuccOThOPdzz8sY7GgQGe0l93XH9bt+YzibcTIgUAIMoyVJI740RtgyQ==", + "license": "UNLICENSED" + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.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.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", + "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", + "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", + "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", + "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", + "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.6", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.6", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/@cacheable/memory": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.7.tgz", + "integrity": "sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.3.3", + "@keyv/bigmap": "^1.3.0", + "hookified": "^1.14.0", + "keyv": "^5.5.5" + } + }, + "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.3.tgz", + "integrity": "sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.3.0", + "keyv": "^5.5.5" + } + }, + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz", + "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@devexpress/error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@devexpress/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/JounQin" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "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/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "dev": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "dev": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.1.3.tgz", + "integrity": "sha512-OHHUTLPEzdwP8kcYIzhioUdUOjZ4zzmi+midwa4bqscza4OJCOvTKJEHkXNz8PgZ23kWci1HkKVX0bm8f9t9gQ==", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6 || ~7", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.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==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "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, + "license": "ISC", + "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.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdoc/salty": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", + "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v12.0.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.3.tgz", + "integrity": "sha512-6IKCd+gP0HliixqZT/p8nW3tucD6Sv/u/eR2A9X4rxT/6hXlMzA4GZQzq4d2qnBAwSwGpmKyzkyTjNjrhaA25A==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.7" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": 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, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "deprecated": "Deprecated: no longer maintained and no longer used by Sinon packages. See\n https://github.com/sinonjs/nise/issues/243 for replacement details.", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@tsparticles/basic": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/basic/-/basic-3.9.1.tgz", + "integrity": "sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1", + "@tsparticles/move-base": "3.9.1", + "@tsparticles/plugin-hex-color": "3.9.1", + "@tsparticles/plugin-hsl-color": "3.9.1", + "@tsparticles/plugin-rgb-color": "3.9.1", + "@tsparticles/shape-circle": "3.9.1", + "@tsparticles/updater-color": "3.9.1", + "@tsparticles/updater-opacity": "3.9.1", + "@tsparticles/updater-out-modes": "3.9.1", + "@tsparticles/updater-size": "3.9.1" + } + }, + "node_modules/@tsparticles/engine": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/engine/-/engine-3.9.1.tgz", + "integrity": "sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/@tsparticles/interaction-external-attract": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-attract/-/interaction-external-attract-3.9.1.tgz", + "integrity": "sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-bounce": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bounce/-/interaction-external-bounce-3.9.1.tgz", + "integrity": "sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-bubble": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-bubble/-/interaction-external-bubble-3.9.1.tgz", + "integrity": "sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-connect": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-connect/-/interaction-external-connect-3.9.1.tgz", + "integrity": "sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-grab": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-grab/-/interaction-external-grab-3.9.1.tgz", + "integrity": "sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-pause": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-pause/-/interaction-external-pause-3.9.1.tgz", + "integrity": "sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-push": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-push/-/interaction-external-push-3.9.1.tgz", + "integrity": "sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-remove": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-remove/-/interaction-external-remove-3.9.1.tgz", + "integrity": "sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-repulse": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-repulse/-/interaction-external-repulse-3.9.1.tgz", + "integrity": "sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-slow": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-slow/-/interaction-external-slow-3.9.1.tgz", + "integrity": "sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-external-trail": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-external-trail/-/interaction-external-trail-3.9.1.tgz", + "integrity": "sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-particles-attract": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-attract/-/interaction-particles-attract-3.9.1.tgz", + "integrity": "sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-particles-collisions": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-collisions/-/interaction-particles-collisions-3.9.1.tgz", + "integrity": "sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/interaction-particles-links": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/interaction-particles-links/-/interaction-particles-links-3.9.1.tgz", + "integrity": "sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/move-base": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/move-base/-/move-base-3.9.1.tgz", + "integrity": "sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/move-parallax": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/move-parallax/-/move-parallax-3.9.1.tgz", + "integrity": "sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-absorbers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-absorbers/-/plugin-absorbers-3.9.1.tgz", + "integrity": "sha512-q9SQllpbPPgw1+euxHPYCFawOVUazQkkwnleiIgpYSiimlCyjIdwGnFPSNe1Sypzqmr2h6oOyX2vkK5ZVNEu8A==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-easing-quad": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-easing-quad/-/plugin-easing-quad-3.9.1.tgz", + "integrity": "sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-emitters": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters/-/plugin-emitters-3.9.1.tgz", + "integrity": "sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-circle": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-circle/-/plugin-emitters-shape-circle-3.9.1.tgz", + "integrity": "sha512-z+9MsAPWr++sNz6N6303rRDjusW0BIPhHY51E5eXGDcRdOqrESDs6y99AJ/6Kdb/PpibCIYjFY9jVi2JJADPRA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1", + "@tsparticles/plugin-emitters": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-emitters-shape-square": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-emitters-shape-square/-/plugin-emitters-shape-square-3.9.1.tgz", + "integrity": "sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1", + "@tsparticles/plugin-emitters": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-hex-color": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-hex-color/-/plugin-hex-color-3.9.1.tgz", + "integrity": "sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-hsl-color": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-hsl-color/-/plugin-hsl-color-3.9.1.tgz", + "integrity": "sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/plugin-rgb-color": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/plugin-rgb-color/-/plugin-rgb-color-3.9.1.tgz", + "integrity": "sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-circle": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-circle/-/shape-circle-3.9.1.tgz", + "integrity": "sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-emoji": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-emoji/-/shape-emoji-3.9.1.tgz", + "integrity": "sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-image": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.9.1.tgz", + "integrity": "sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-line": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-line/-/shape-line-3.9.1.tgz", + "integrity": "sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-polygon": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-polygon/-/shape-polygon-3.9.1.tgz", + "integrity": "sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-square": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-square/-/shape-square-3.9.1.tgz", + "integrity": "sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-star": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-star/-/shape-star-3.9.1.tgz", + "integrity": "sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/shape-text": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/shape-text/-/shape-text-3.9.1.tgz", + "integrity": "sha512-oNsLHI0lGkIXoUw3W598iwd7dtoHCDrwpwJRGnQzgfk6T5a9dCpSD5vDeQN89lr3BUbVui4lhxq+/TyC64oAqA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/slim": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/slim/-/slim-3.9.1.tgz", + "integrity": "sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/basic": "3.9.1", + "@tsparticles/engine": "3.9.1", + "@tsparticles/interaction-external-attract": "3.9.1", + "@tsparticles/interaction-external-bounce": "3.9.1", + "@tsparticles/interaction-external-bubble": "3.9.1", + "@tsparticles/interaction-external-connect": "3.9.1", + "@tsparticles/interaction-external-grab": "3.9.1", + "@tsparticles/interaction-external-pause": "3.9.1", + "@tsparticles/interaction-external-push": "3.9.1", + "@tsparticles/interaction-external-remove": "3.9.1", + "@tsparticles/interaction-external-repulse": "3.9.1", + "@tsparticles/interaction-external-slow": "3.9.1", + "@tsparticles/interaction-particles-attract": "3.9.1", + "@tsparticles/interaction-particles-collisions": "3.9.1", + "@tsparticles/interaction-particles-links": "3.9.1", + "@tsparticles/move-parallax": "3.9.1", + "@tsparticles/plugin-easing-quad": "3.9.1", + "@tsparticles/shape-emoji": "3.9.1", + "@tsparticles/shape-image": "3.9.1", + "@tsparticles/shape-line": "3.9.1", + "@tsparticles/shape-polygon": "3.9.1", + "@tsparticles/shape-square": "3.9.1", + "@tsparticles/shape-star": "3.9.1", + "@tsparticles/updater-life": "3.9.1", + "@tsparticles/updater-rotate": "3.9.1", + "@tsparticles/updater-stroke-color": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-color": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-color/-/updater-color-3.9.1.tgz", + "integrity": "sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-destroy": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-destroy/-/updater-destroy-3.9.1.tgz", + "integrity": "sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-life": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-life/-/updater-life-3.9.1.tgz", + "integrity": "sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-opacity": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-opacity/-/updater-opacity-3.9.1.tgz", + "integrity": "sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-out-modes": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-out-modes/-/updater-out-modes-3.9.1.tgz", + "integrity": "sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-roll": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-roll/-/updater-roll-3.9.1.tgz", + "integrity": "sha512-zl4JeM3gUBJ0uttmIsond3lrZ3f3AkItFeS0Lhj/7jiCKfUoRyyOMrcBk8R1AhW7lI+7ko1iBs3jhO0jnxz9vg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-rotate": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-rotate/-/updater-rotate-3.9.1.tgz", + "integrity": "sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-size": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-size/-/updater-size-3.9.1.tgz", + "integrity": "sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-stroke-color": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-stroke-color/-/updater-stroke-color-3.9.1.tgz", + "integrity": "sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-tilt": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-tilt/-/updater-tilt-3.9.1.tgz", + "integrity": "sha512-PB2yaoyXRmSk4iIVgjtRrzOxXMK9mjeAQHIJGtT4faq46Z8cbIIEFgjTwqrUV8qOrNg/h4sm5NE/s0qsTYjp1Q==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-twinkle": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-twinkle/-/updater-twinkle-3.9.1.tgz", + "integrity": "sha512-xgTcYr6LmP44IPIBeQmEExN2Y5Nfl3ikmC08eOh5nZy/ta6ORP+JTsprrnfuv/O2DwTyoqFLkZ16hZfkdc1yOQ==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/updater-wobble": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@tsparticles/updater-wobble/-/updater-wobble-3.9.1.tgz", + "integrity": "sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==", + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1" + } + }, + "node_modules/@tsparticles/vue3": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@tsparticles/vue3/-/vue3-3.0.1.tgz", + "integrity": "sha512-BxaSZ0wtxq33SDsrqLkLWoV88Jd5BnBoYjyVhKSNzOLOesCiG8Z5WQC1QZGTez79l/gBe0xaCDF0ng1e2iKJvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "^3.0.3", + "vue": "^3.3.13" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz", + "integrity": "sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==", + "deprecated": "This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.24.tgz", + "integrity": "sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/sortablejs": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz", + "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/whatwg-mimetype": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", + "integrity": "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.9.tgz", + "integrity": "sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.7", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.12", + "magicast": "^0.3.5", + "std-env": "^3.8.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "2.1.9", + "vitest": "2.1.9" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", + "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.9", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", + "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.1.9", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", + "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/ui": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.1.9.tgz", + "integrity": "sha512-izzd2zmnk8Nl5ECYkW27328RbQ1nKvkm6Bb5DAaz1Gk59EbLkiCMa6OLT0NoaAYTjOFS6N+SMYW1nh4/9ljPiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.1.9", + "fflate": "^0.8.2", + "flatted": "^3.3.1", + "pathe": "^1.1.2", + "sirv": "^3.0.0", + "tinyglobby": "^0.2.10", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "2.1.9" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.9", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz", + "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz", + "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.2", + "@vue/babel-helper-vue-transform-on": "1.5.0", + "@vue/babel-plugin-resolve-type": "1.5.0", + "@vue/shared": "^3.5.18" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz", + "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/parser": "^7.28.0", + "@vue/compiler-sfc": "^3.5.18" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.9.tgz", + "integrity": "sha512-0rKOF4s/AhaRMJLybxOCgXfwtYhO3pwDSL/q/W8wRs1LzmHAc77FyTXWlun6VyKiSKwSdtH7CvOiWqq+DfofdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compat": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.5.27.tgz", + "integrity": "sha512-bhHNJO8i4uCNwAiogolSMu4vdrWBi+1KTMeLoKojbQSVdQ+iip9ZC76osUuXEgCaEScv7T+XTAZq8KOx45VOUA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + }, + "peerDependencies": { + "vue": "3.5.27" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.27.tgz", + "integrity": "sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.27", + "entities": "^7.0.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz", + "integrity": "sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz", + "integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.27", + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz", + "integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.27.tgz", + "integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.27.tgz", + "integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.27", + "@vue/shared": "3.5.27" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz", + "integrity": "sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.27", + "@vue/runtime-core": "3.5.27", + "@vue/shared": "3.5.27", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.27.tgz", + "integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.27", + "@vue/shared": "3.5.27" + }, + "peerDependencies": { + "vue": "3.5.27" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.27.tgz", + "integrity": "sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==", + "license": "MIT" + }, + "node_modules/@vue/test-utils": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz", + "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" + } + }, + "node_modules/@vuetify/loader-shared": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.1.1.tgz", + "integrity": "sha512-jSZTzTYaoiv8iwonFCVZQ0YYX/M+Uyl4ng+C4egMJT0Hcmh9gIxJL89qfZICDeo3g0IhqrvipW2FFKKRDMtVcA==", + "license": "MIT", + "dependencies": { + "upath": "^2.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0", + "vuetify": "^3.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/@yomguithereal/helpers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@yomguithereal/helpers/-/helpers-1.1.1.tgz", + "integrity": "sha512-UYvAq/XCA7xoh1juWDYsq3W0WywOB+pz8cgVnE1b45ZfdMhBvHDrgmSFG3jXeZSr2tMTYLGHFHON+ekG05Jebg==", + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.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==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/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==", + "license": "MIT" + }, + "node_modules/ansi-align/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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==", + "license": "Python-2.0" + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", + "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.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==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bezier-easing": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bezier-easing/-/bezier-easing-2.1.0.tgz", + "integrity": "sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==", + "license": "MIT" + }, + "node_modules/bibtex": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/bibtex/-/bibtex-0.9.0.tgz", + "integrity": "sha512-2YsG89+ZtFD04Dd+KDDUxjtEdiQMW4lbGsXzs5sa+nCpmOrauyChkOAdbLegVSAH2JKEfgu7SFESIVRKQCfD9Q==", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "license": "ISC", + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "ISC" + }, + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/bootstrap-vue": { + "version": "2.23.1", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.23.1.tgz", + "integrity": "sha512-SEWkG4LzmMuWjQdSYmAQk1G/oOKm37dtNfjB5kxq0YafnL2W6qUAmeDTcIZVbPiQd2OQlIkWOMPBRGySk/zGsg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "^0.3.2", + "bootstrap": "^4.6.1", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + } + }, + "node_modules/bootstrap-vue/node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/bootstrap-vue/node_modules/portal-vue": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", + "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==", + "license": "MIT", + "peerDependencies": { + "vue": "^2.5.18" + } + }, + "node_modules/bootstrap-vue/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/bootstrap-vue/node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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==", + "license": "MIT" + }, + "node_modules/boxen/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/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==", + "license": "MIT", + "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/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-rsa/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/browserify-sign": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.2.tgz", + "integrity": "sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.0.7", + "@cacheable/utils": "^2.3.3", + "hookified": "^1.15.0", + "keyv": "^5.5.5", + "qified": "^0.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "license": "MIT" + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "engines": { + "node": "*" + } + }, + "node_modules/callsite-record": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-4.1.5.tgz", + "integrity": "sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==", + "license": "MIT", + "dependencies": { + "@devexpress/error-stack-parser": "^2.0.6", + "@types/lodash": "^4.14.72", + "callsite": "^1.0.0", + "chalk": "^2.4.0", + "highlight-es": "^1.0.0", + "lodash": "4.6.1 || ^4.16.1", + "pinkie-promise": "^2.0.0" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT" + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/callsite-record/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "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" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "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/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chokidar/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cipher-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "license": "MIT", + "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/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/compression-webpack-plugin": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", + "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/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==", + "license": "ISC" + }, + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "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, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.26.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "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, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz", + "integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "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, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/deep-object-diff": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/depcheck": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@vue/compiler-sfc": "^3.3.4", + "callsite": "^1.0.0", + "camelcase": "^6.3.0", + "cosmiconfig": "^7.1.0", + "debug": "^4.3.4", + "deps-regex": "^0.2.0", + "findup-sync": "^5.0.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.0", + "js-yaml": "^3.14.1", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "minimatch": "^7.4.6", + "multimatch": "^5.0.0", + "please-upgrade-node": "^3.2.0", + "readdirp": "^3.6.0", + "require-package-name": "^2.0.1", + "resolve": "^1.22.3", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "yargs": "^16.2.0" + }, + "bin": { + "depcheck": "bin/depcheck.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/depcheck/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/depcheck/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/depcheck/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depcheck/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/depcheck/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/depcheck/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/depcheck/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depcheck/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/depcheck/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/deps-regex": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", + "license": "MIT" + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "license": "BSD-3-Clause" + }, + "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, + "license": "MIT" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "license": "MIT", + "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.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "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, + "license": "ISC", + "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.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", + "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", + "license": "ISC" + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@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", + "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-config-prettier": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", + "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "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 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vuetify": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-vuetify/-/eslint-plugin-vuetify-2.5.3.tgz", + "integrity": "sha512-HQQ3HSeg4lOQp+bImVuGsIQBgRexMGudZBZ8iK7ypQsNkKlVu2JSDDslOoTUGTj+QY/SE5PtXOwz0lMITuv8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-vue": ">=9.6.0", + "requireindex": "^1.2.0" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0", + "vuetify": "^3.0.0" + } + }, + "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==", + "license": "BSD-2-Clause", + "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-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==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "^8.56.10", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0", + "webpack": "^5.0.0" + } + }, + "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==", + "license": "BSD-2-Clause", + "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/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "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==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "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==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", + "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^3.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/execa/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, + "license": "ISC" + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "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.8" + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/figures/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, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "dev": true, + "license": "ISC" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "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/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/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==", + "license": "ISC" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/giturl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.3.tgz", + "integrity": "sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==", + "license": "MIT", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/graphology": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/graphology/-/graphology-0.26.0.tgz", + "integrity": "sha512-8SSImzgUUYC89Z042s+0r/vMibY7GX/Emz4LDO5e7jYXhuoWfHISPFJYjpRLUSJGq6UQ6xlenvX1p/hJdfXuXg==", + "license": "MIT", + "dependencies": { + "events": "^3.3.0" + }, + "peerDependencies": { + "graphology-types": ">=0.24.0" + } + }, + "node_modules/graphology-layout": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/graphology-layout/-/graphology-layout-0.6.1.tgz", + "integrity": "sha512-m9aMvbd0uDPffUCFPng5ibRkb2pmfNvdKjQWeZrf71RS1aOoat5874+DcyNfMeCT4aQguKC7Lj9eCbqZj/h8Ag==", + "license": "MIT", + "dependencies": { + "graphology-utils": "^2.3.0", + "pandemonium": "^2.4.0" + }, + "peerDependencies": { + "graphology-types": ">=0.19.0" + } + }, + "node_modules/graphology-layout-forceatlas2": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/graphology-layout-forceatlas2/-/graphology-layout-forceatlas2-0.10.1.tgz", + "integrity": "sha512-ogzBeF1FvWzjkikrIFwxhlZXvD2+wlY54lqhsrWprcdPjopM2J9HoMweUmIgwaTvY4bUYVimpSsOdvDv1gPRFQ==", + "license": "MIT", + "dependencies": { + "graphology-utils": "^2.1.0" + }, + "peerDependencies": { + "graphology-types": ">=0.19.0" + } + }, + "node_modules/graphology-types": { + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/graphology-types/-/graphology-types-0.24.8.tgz", + "integrity": "sha512-hDRKYXa8TsoZHjgEaysSRyPdT6uB78Ci8WnjgbStlQysz7xR52PInxNsmnB7IBOM1BhikxkNyCVEFgmPKnpx3Q==", + "license": "MIT", + "peer": true + }, + "node_modules/graphology-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/graphology-utils/-/graphology-utils-2.5.2.tgz", + "integrity": "sha512-ckHg8MXrXJkOARk56ZaSCM1g1Wihe2d6iTmz1enGOz4W/l831MBCKSayeFQfowgF8wd+PQ4rlch/56Vs/VZLDQ==", + "license": "MIT", + "peerDependencies": { + "graphology-types": ">=0.23.0" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/happy-dom": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.4.0.tgz", + "integrity": "sha512-RDeQm3dT9n0A5f/TszjUmNCLEuPnMGv3Tv4BmNINebz/h17PA6LMBcxJ5FrcqltNBMh9jA/8ufgDdBYUdBt+eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">=20.0.0", + "@types/whatwg-mimetype": "^3.0.2", + "@types/ws": "^8.18.1", + "entities": "^4.5.0", + "whatwg-mimetype": "^3.0.0", + "ws": "^8.18.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/happy-dom/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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hashery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.4.0.tgz", + "integrity": "sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/haxec": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/haxec/-/haxec-2.0.1.tgz", + "integrity": "sha512-2DaSqGZIzgVkZ4YFHbk9Su0Q6gm7YbzNX9njOHK/D/XklOdvgTemsPmjcyExlLdkl7lRlNIW0Wxo6niVfpWedw==", + "license": "MIT", + "dependencies": { + "foreground-child": "^2.0.0", + "spawn-wrap": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/haxec/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==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/haxec/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==", + "license": "ISC" + }, + "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, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highcharts": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-12.1.2.tgz", + "integrity": "sha512-paZ72q1um0zZT1sS+O/3JfXVSOLPmZ0zlo8SgRc0rEplPFPQUPc4VpkgQS8IUTueeOBgIWwVpAWyC9tBYbQ0kg==", + "license": "https://www.highcharts.com/license" + }, + "node_modules/highcharts-vue": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/highcharts-vue/-/highcharts-vue-2.0.1.tgz", + "integrity": "sha512-7yVaKvsWlx7OgmKFXE2D99fi/0tr2A85H4KUz3jL7CRQhAwvEvXgtDIyTBGLHJsOC5L9VlppAI7k6KfIi0j0hg==", + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "highcharts": ">=5.0.0", + "vue": ">=3.0.0" + } + }, + "node_modules/highlight-es": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", + "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.0", + "is-es2016-keyword": "^1.0.0", + "js-tokens": "^3.0.0" + } + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/highlight-es/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==", + "license": "MIT" + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/highlight-es/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "license": "MIT" + }, + "node_modules/highlight-es/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hookified": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.0.tgz", + "integrity": "sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/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==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "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, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ink-docstrap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz", + "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "moment": "^2.14.1", + "sanitize-html": "^1.13.0" + } + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/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==", + "license": "MIT" + }, + "node_modules/inquirer/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==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/inquirer/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/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==", + "license": "ISC" + }, + "node_modules/inquirer/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-es2016-keyword": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", + "integrity": "sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, + "node_modules/js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/jsdoc": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.5.tgz", + "integrity": "sha512-P4C6MWP9yIlMiK8nwoZvxN84vb6MsnXcHuy7XzVOvQoCizWX5JFCBsWIIWKXBltpoRZXddUOVQmCTOZt9yDj9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^14.1.1", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsdoc-vuejs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-vuejs/-/jsdoc-vuejs-4.0.0.tgz", + "integrity": "sha512-wZveVFpC6sG9+g9qN0xi87zFmwFjeX/nqlKMK6ArXjOw2GCL7LUc87FE90yb9LZxbhBIOiNJbjlN+X52hfhpsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ejs": "^3.0.1" + }, + "engines": { + "node": "^10.13.0 || >=12.0.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": ">= 3.0.0", + "jsdoc": ">=3.0.0" + } + }, + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json-to-graphql-query": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/json-to-graphql-query/-/json-to-graphql-query-2.3.0.tgz", + "integrity": "sha512-khZtaLLQ0HllFec+t89ZWduUZ0rmne/OpRm/39hyZUWDHNx9Yk4DgQzDtMeqd8zj2g5opBD4GHrdtH0JzKnN2g==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/known-css-properties": { + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "license": "MIT", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/linkify-html": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/linkify-html/-/linkify-html-3.0.5.tgz", + "integrity": "sha512-3O7HEYjkugX+C/G2C2wyBmIt8Mt0pmeaHNIxRHodCFeQQeSxSoZHR+5hC1pi0WrmoEvfnSemyZyYTM8w3lo9cA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "linkifyjs": "^3.0.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-3.0.5.tgz", + "integrity": "sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.5.0.tgz", + "integrity": "sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "commander": "^2.20.0", + "cosmiconfig": "^5.2.1", + "debug": "^4.1.1", + "dedent": "^0.7.0", + "del": "^5.0.0", + "execa": "^2.0.3", + "listr": "^0.14.3", + "log-symbols": "^3.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "string-argv": "^0.3.0", + "stringify-object": "^3.3.0" + }, + "bin": { + "lint-staged": "bin/lint-staged" + } + }, + "node_modules/lint-staged/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, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint-staged/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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint-staged/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, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/lint-staged/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, + "license": "MIT" + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lint-staged/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, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/lint-staged/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/lint-staged/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, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/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, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT" + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/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, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/load-yaml-file/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/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, + "license": "MIT" + }, + "node_modules/log-symbols/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, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "dev": true, + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it/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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mnemonist": { + "version": "0.39.8", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.8.tgz", + "integrity": "sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==", + "license": "MIT", + "dependencies": { + "obliterator": "^2.0.1" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "license": "MIT", + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/nise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", + "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.1", + "@sinonjs/text-encoding": "^0.7.3", + "just-extend": "^6.2.0", + "path-to-regexp": "^8.1.0" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "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-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "license": "MIT", + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp/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==", + "license": "ISC" + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "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/node-gyp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/node-stdlib-browser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.12.1", + "domain-browser": "4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.4", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-stdlib-browser/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-stdlib-browser/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-check": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-6.0.1.tgz", + "integrity": "sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==", + "license": "MIT", + "dependencies": { + "callsite-record": "^4.1.3", + "chalk": "^4.1.0", + "co": "^4.6.0", + "depcheck": "^1.3.1", + "execa": "^5.0.0", + "giturl": "^1.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "inquirer": "^7.3.3", + "is-ci": "^2.0.0", + "lodash": "^4.17.20", + "meow": "^9.0.0", + "minimatch": "^3.0.2", + "node-emoji": "^1.10.0", + "ora": "^5.3.0", + "package-json": "^6.5.0", + "path-exists": "^4.0.0", + "pkg-dir": "^5.0.0", + "preferred-pm": "^3.0.3", + "rc-config-loader": "^4.0.0", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "throat": "^6.0.1", + "update-notifier": "^5.1.0", + "xtend": "^4.0.2" + }, + "bin": { + "npm-check": "bin/cli.js" + }, + "engines": { + "node": ">=10.9.0" + } + }, + "node_modules/npm-check/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/npm-check/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "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/npm-check/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-check/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-check/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==", + "license": "ISC" + }, + "node_modules/npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", + "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.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, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", + "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", + "license": "MIT" + }, + "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==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/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==", + "license": "ISC" + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/pandemonium": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/pandemonium/-/pandemonium-2.4.1.tgz", + "integrity": "sha512-wRqjisUyiUfXowgm7MFH2rwJzKIr20rca5FsHXCMNm1W5YPP1hCtrZfgmQ62kP7OZ7Xt+cR858aB28lu5NX55g==", + "license": "MIT", + "dependencies": { + "mnemonist": "^0.39.2" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-asn1/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pbkdf2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "license": "MIT", + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/preferred-pm": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.4.tgz", + "integrity": "sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==", + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prism-es6": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prism-es6/-/prism-es6-1.2.0.tgz", + "integrity": "sha512-A8JV9G2zKM8PWksT7YJcmnaWtYO6C9hSfxM/xv0RxB2aNc8rjv30WakzIw1gWyqLi2eiqquo2KmS7orxqlm+yg==", + "license": "ISC" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "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, + "license": "ISC" + }, + "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==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qified": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz", + "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-builder-vue": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/query-builder-vue/-/query-builder-vue-1.2.0.tgz", + "integrity": "sha512-OZVZ0yaH/bg4cSCxIg7RGGDKK0jaFsZsK/fvvB8E+IXHo1AxhlffECfVq4J2kqN4xHkgE0FILrZSLNxWlNJmSg==", + "license": "MIT", + "dependencies": { + "@types/sortablejs": "^1.10.2", + "core-js": "^3.3.2", + "sortablejs": "^1.11.2-alpha.4", + "vue": "^2.6.10", + "vue-class-component": "^7.2.6", + "vue-property-decorator": "^9.0.0", + "vuedraggable": "^2.24.1" + } + }, + "node_modules/query-builder-vue-3": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-builder-vue-3/-/query-builder-vue-3-1.0.1.tgz", + "integrity": "sha512-fhEWsluNz8vRtrB8w2gjWeSmRkzn1KcOTv9ay6m6w3kX8yTdEUw0ZUv+0P04uhECoXQ+IZRfR4iUD1ffh3M/IQ==", + "license": "MIT", + "dependencies": { + "mitt": "^3.0.0", + "sortablejs": "^1.14.0", + "vuedraggable": "^4.1.0" + }, + "peerDependencies": { + "vue": "^3.2.20" + } + }, + "node_modules/query-builder-vue-3/node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, + "node_modules/query-builder-vue-3/node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/query-builder-vue/node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/query-builder-vue/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/query-builder-vue/node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/query-builder-vue/node_modules/vue-class-component": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz", + "integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==", + "license": "MIT", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/query-builder-vue/node_modules/vue-property-decorator": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz", + "integrity": "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==", + "license": "MIT", + "peerDependencies": { + "vue": "*", + "vue-class-component": "*" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==", + "license": "MIT" + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/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, + "license": "ISC" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "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/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/roboto-fontface": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/roboto-fontface/-/roboto-fontface-0.10.0.tgz", + "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==", + "license": "Apache-2.0" + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize-html": { + "version": "1.27.5", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", + "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^4.1.0", + "lodash": "^4.17.15", + "parse-srcset": "^1.0.2", + "postcss": "^7.0.27" + } + }, + "node_modules/sanitize-html/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true, + "license": "ISC" + }, + "node_modules/sanitize-html/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/sass": { + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT" + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sha.js/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "ISC" + }, + "node_modules/sigma": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/sigma/-/sigma-2.4.0.tgz", + "integrity": "sha512-spi4C+c3cjlhCklT+RvAxJJcarMmjRpF6RPNvBIBYDduALq8iSNm7FwSpijQNGtI+ryeZ2EfvyBNLp36OFaZiw==", + "license": "MIT", + "dependencies": { + "@yomguithereal/helpers": "^1.1.1", + "events": "^3.3.0", + "graphology-utils": "^2.5.0" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-analytics-vue": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-analytics-vue/-/simple-analytics-vue-3.1.0.tgz", + "integrity": "sha512-8Pwjbh3e0UDKwhLgDOokGOWe3Ot7bZsTbNHMaQylqFebTxoWe80gH+h1jcNbWPCBQ+/nEWHdqbRLpc/4vg2gow==", + "dependencies": { + "vue": "^3.0.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/sinon": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.1.tgz", + "integrity": "sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.2.0", + "nise": "^6.0.0", + "supports-color": "^7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.6.tgz", + "integrity": "sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==", + "license": "MIT" + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/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==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/spawn-wrap/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/spawn-wrap/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==", + "license": "ISC" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "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, + "license": "MIT" + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint": { + "version": "16.26.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", + "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^11.1.1", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^7.0.5", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.6", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.2.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-scss": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.14.0.tgz", + "integrity": "sha512-ZKmHMZolxeuYsnB+PCYrTpFce0/QWX9i9gh0hPXzp73WjuIMqUpzdQaBCrKoLWh6XtCFSaNDErkMPqdjy1/8aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mdn-data": "^2.25.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.1.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.8.2" + } + }, + "node_modules/stylelint-scss/node_modules/mdn-data": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.0.tgz", + "integrity": "sha512-/pUmP9UebM48q5BTqZd0yPnDjyRGhITbKh8cwa6/ZwjuDu8xq+VzmugLF7QNxpdaqqNH3J5nnv3yc8oARv096A==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint-scss/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/stylelint/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, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.20" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz", + "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^2.3.2", + "flatted": "^3.3.3", + "hookified": "^1.15.0" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "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/stylelint/node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/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, + "license": "MIT" + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/taffydb": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", + "integrity": "sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "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", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/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, + "license": "MIT" + }, + "node_modules/to-buffer/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trace-unhandled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/trace-unhandled/-/trace-unhandled-2.0.1.tgz", + "integrity": "sha512-wOZbhBiNyuZTs0b/ADZFTiTDVVDsvKQj/RkVJTKefH6u9CowGDSR+H/3miaGUrYCCuzS0nVmIzpbIIm6lRF8gg==", + "license": "MIT", + "dependencies": { + "haxec": "^2.0.1" + }, + "bin": { + "trace-unhandled": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tsparticles": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/tsparticles/-/tsparticles-3.9.1.tgz", + "integrity": "sha512-Y780IGSL4qjkZj7+fI92PV/cziHqLR/s6nnYri4K6vH3NQRmDK5D6pfskDO8T4Y96ChCWHY3uxPtOb/hKQ83Qg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "license": "MIT", + "dependencies": { + "@tsparticles/engine": "3.9.1", + "@tsparticles/interaction-external-trail": "3.9.1", + "@tsparticles/plugin-absorbers": "3.9.1", + "@tsparticles/plugin-emitters": "3.9.1", + "@tsparticles/plugin-emitters-shape-circle": "3.9.1", + "@tsparticles/plugin-emitters-shape-square": "3.9.1", + "@tsparticles/shape-text": "3.9.1", + "@tsparticles/slim": "3.9.1", + "@tsparticles/updater-destroy": "3.9.1", + "@tsparticles/updater-roll": "3.9.1", + "@tsparticles/updater-tilt": "3.9.1", + "@tsparticles/updater-twinkle": "3.9.1", + "@tsparticles/updater-wobble": "3.9.1" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, + "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==", + "license": "MIT", + "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, + "license": "MIT", + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/url/node_modules/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", + "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.7", + "es-module-lexer": "^1.5.4", + "pathe": "^1.1.2", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vite-plugin-eslint": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz", + "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "@types/eslint": "^8.4.5", + "rollup": "^2.77.2" + }, + "peerDependencies": { + "eslint": ">=7", + "vite": ">=2" + } + }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz", + "integrity": "sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/vite-plugin-vuetify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.1.2.tgz", + "integrity": "sha512-I/wd6QS+DO6lHmuGoi1UTyvvBTQ2KDzQZ9oowJQEJ6OcjWfJnscYXx2ptm6S7fJSASuZT8jGRBL3LV4oS3LpaA==", + "license": "MIT", + "dependencies": { + "@vuetify/loader-shared": "^2.1.1", + "debug": "^4.3.3", + "upath": "^2.0.1" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": ">=5", + "vue": "^3.0.0", + "vuetify": "^3.0.0" + } + }, + "node_modules/vitest": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", + "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "2.1.9", + "@vitest/mocker": "2.1.9", + "@vitest/pretty-format": "^2.1.9", + "@vitest/runner": "2.1.9", + "@vitest/snapshot": "2.1.9", + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", + "chai": "^5.1.2", + "debug": "^4.3.7", + "expect-type": "^1.1.0", + "magic-string": "^0.30.12", + "pathe": "^1.1.2", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.1", + "tinypool": "^1.0.1", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0", + "vite-node": "2.1.9", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "2.1.9", + "@vitest/ui": "2.1.9", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.27", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", + "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.27", + "@vue/compiler-sfc": "3.5.27", + "@vue/runtime-dom": "3.5.27", + "@vue/server-renderer": "3.5.27", + "@vue/shared": "3.5.27" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-3-linkify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vue-3-linkify/-/vue-3-linkify-1.1.0.tgz", + "integrity": "sha512-UXiG4rLS17ZKviAXBlCkuL015BgJsblyyq6CcQfxfiIT/s/RiFhd7FQ/MGAEF/fpwjwn+zllMJPmK/QdsXAb8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "linkify-html": "^3.0.5", + "linkifyjs": "^3.0.5", + "xss": "^1.0.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-3-sanitize": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/vue-3-sanitize/-/vue-3-sanitize-0.1.4.tgz", + "integrity": "sha512-8+iU+MC94ibyOBUpn4g2hk8Dy32M7PKIi3UoUG+6Pd47J/uHIDdOdeXEEmCM/rVdyFqNXqLfO+yZT2BesGNlXA==", + "license": "MIT", + "dependencies": { + "sanitize-html": "^2.0.0" + } + }, + "node_modules/vue-3-sanitize/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/vue-3-sanitize/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/vue-3-sanitize/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/vue-3-sanitize/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/vue-3-sanitize/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/vue-3-sanitize/node_modules/sanitize-html": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", + "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/vue-cli-plugin-vuetify": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.8.tgz", + "integrity": "sha512-uqi0/URJETJBbWlQHD1l0pnY7JN8Ytu+AL1fw50HFlGByPa8/xx+mq19GkFXA9FcwFT01IqEc/TkxMPugchomg==", + "dev": true, + "license": "MIT", + "dependencies": { + "null-loader": "^4.0.1", + "semver": "^7.1.2", + "shelljs": "^0.8.3" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "sass-loader": { + "optional": true + }, + "vuetify-loader": { + "optional": true + } + } + }, + "node_modules/vue-cli-plugin-vuetify/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-code-highlight": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/vue-code-highlight/-/vue-code-highlight-0.7.8.tgz", + "integrity": "sha512-jMt1W0DGisNZ3B2TASFCPLEswohVrwImX+TxzMIZINZyAUUNZ1Xth3soJw1xepTsMgxkIkhsmN/xVNpiI3bU4g==", + "license": "MIT", + "dependencies": { + "prism-es6": "^1.2.0", + "vue": "^2.5.16" + } + }, + "node_modules/vue-code-highlight/node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/vue-code-highlight/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/vue-code-highlight/node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-component-type-helpers": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.12.tgz", + "integrity": "sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-country-flag-next": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-country-flag-next/-/vue-country-flag-next-2.3.2.tgz", + "integrity": "sha512-Lv12L1VTwlBgizpZ3xPEPO3zuIETaJmeSiPuLOWLLgu2EakwU/o72iKYiKcdZ6BXiSkfss+Ski5fDzjuxZ1DcA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "license": "MIT", + "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/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-functional-data-merge": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", + "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==", + "license": "MIT" + }, + "node_modules/vue-gtag": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vue-gtag/-/vue-gtag-2.1.2.tgz", + "integrity": "sha512-9eTGfIApQ3XpsxJjLNiRP51x0v3c93YJxVO8rKWSLJwbUuICwTMGGfB7x0RLEijFoK3lakgFvR5pR+JF5la2KA==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-json-pretty": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/vue-json-pretty/-/vue-json-pretty-2.6.0.tgz", + "integrity": "sha512-glz1aBVS35EO8+S9agIl3WOQaW2cJZW192UVKTuGmryx01ZvOVWc4pR3t+5UcyY4jdOfBUgVHjcpRpcnjRhCAg==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0", + "npm": ">= 5.0.0" + }, + "peerDependencies": { + "vue": ">=3.0.0" + } + }, + "node_modules/vue-loader": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.4.2.tgz", + "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-meta": { + "version": "3.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-3.0.0-alpha.10.tgz", + "integrity": "sha512-rYeIGkhm1gKBcReEkPHiV6LV2Y6BZTMGTkGw1mQIZTxfFcVJL0srLZsL1zAmLeTGxMrlDYylMQEVSYRkDnwz3A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-moment": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vue-moment/-/vue-moment-4.1.0.tgz", + "integrity": "sha512-Gzisqpg82ItlrUyiD9d0Kfru+JorW2o4mQOH06lEDZNgxci0tv/fua1Hl0bo4DozDV2JK1r52Atn/8QVCu8qQw==", + "license": "MIT", + "dependencies": { + "moment": "^2.19.2" + }, + "peerDependencies": { + "vue": ">=1.x.x" + } + }, + "node_modules/vue-router": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.3.tgz", + "integrity": "sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/vue-scrollto": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/vue-scrollto/-/vue-scrollto-2.20.0.tgz", + "integrity": "sha512-7i+AGKJTThZnMEkhIPgrZjyAX+fXV7/rGdg+CV283uZZwCxwiMXaBLTmIc5RTA4uwGnT+E6eJle3mXQfM2OD3A==", + "license": "MIT", + "dependencies": { + "bezier-easing": "2.1.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.10.2" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==", + "license": "MIT" + }, + "node_modules/vuetify": { + "version": "3.11.8", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.11.8.tgz", + "integrity": "sha512-4iKnntOnLFFklygZjzlVfcHrtLO8+iK4HOhiia6HP2U8v82x+ngaSCgm+epvPrGyCMfCpfuEttqD2qElrr1axw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/johnleider" + }, + "peerDependencies": { + "typescript": ">=4.7", + "vite-plugin-vuetify": ">=2.1.0", + "vue": "^3.5.0", + "webpack-plugin-vuetify": ">=3.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vite-plugin-vuetify": { + "optional": true + }, + "webpack-plugin-vuetify": { + "optional": true + } + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "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==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/webpack/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==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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, + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.2.0.tgz", + "integrity": "sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==", + "license": "MIT", + "dependencies": { + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8.15" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/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==", + "license": "MIT" + }, + "node_modules/wide-align/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/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==", + "license": "MIT" + }, + "node_modules/widest-line/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT", + "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/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, + "license": "MIT", + "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/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, + "license": "MIT" + }, + "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, + "license": "MIT", + "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-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "dev": true, + "license": "MIT", + "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/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 124e290ba1..d5b7b4e6ed 100644 --- a/package.json +++ b/package.json @@ -3,23 +3,26 @@ "version": "0.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build --modern", - "test:unit": "vue-cli-service test:unit --coverage --silent", - "lint": "vue-cli-service lint", - "lint:fix": "vue-cli-service lint --fix", - "codacy": "cat ./coverage/lcov.info | codacy-coverage -t ", + "dev": "VITE_CJS_TRACE=true vite --host", + "preview": "vite preview --host", + "build": "VITE_CJS_TRACE=true vite build", + "test": "vitest run", + "test:ui": "vitest --ui --coverage.enabled=true", + "test:coverage": "vitest run --coverage", + "lint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src", + "lint:fix": "prettier . --write", "doc:full": "jsdoc -c documentation/doc.conf.json -R README.md", - "doc:dev": "jsdoc -c documentatioN/doc.conf.json -d docTemp" + "doc:dev": "jsdoc -c documentation/doc.conf.json -d docTemp", + "stats": "webpack-bundle-analyzer dist/stats.json", + "generate-coverage-report": "generate-coverage-report -p ./coverage/badges" }, "dependencies": { - "@babel/polyfill": "^7.12.1", - "@fortawesome/fontawesome-free": "^6.7.2", - "@fortawesome/fontawesome-svg-core": "^6.7.2", - "@fortawesome/vue-fontawesome": "^2.0.10", - "@tsparticles/vue2": "^3.0.0", - "axios": "^0.28.0", - "babel-core": "^7.0.0-bridge.0", + "-": "^0.0.1", + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@tsparticles/vue3": "^3.0.1", + "@vue/compat": "^3.3.4", + "axios": "^1.3.1", "bibtex": "^0.9.0", "bootstrap": "^4.5.2", "bootstrap-vue": "^2.16.0", @@ -27,15 +30,12 @@ "deep-object-diff": "^1.1.0", "dompurify": "^3.3.1", "dotenv": "^16.0.3", - "graphology": "^0.25.1", + "graphology": "^0.26.0", "graphology-layout": "^0.6.1", "graphology-layout-forceatlas2": "^0.10.1", - "highcharts": "9.0.1", - "highcharts-vue": "1.3.5", - "jest": "^27.5.1", - "jest-offline": "^1.0.1", + "highcharts": "12.1.2", + "highcharts-vue": "2.0.1", "jquery": "^3.5.1", - "jsdoc-vuex-plugin": "^1.0.0", "json-to-graphql-query": "^2.2.5", "lodash": "^4.17.21", "moment": "^2.29.1", @@ -43,72 +43,90 @@ "npm-check": "^6.0.1", "prettier": "^2.8.6", "query-builder-vue": "^1.2.0", - "regenerator-runtime": "^0.13.11", + "query-builder-vue-3": "^1.0.1", + "regenerator-runtime": "^0.14.1", "roboto-fontface": "*", "sigma": "^2.4.0", - "simple-analytics-vue": "^2.0.0", + "simple-analytics-vue": "^3.0.2", "trace-unhandled": "^2.0.1", - "tsparticles": "^2.8.0", - "v-clipboard": "^2.2.3", - "vue": "^2.7.16", - "vue-class-component": "^7.2.6", + "tsparticles": "^3.5.0", + "vite-plugin-vuetify": "^2.0.4", + "vue": "^3.4.35", + "vue-3-sanitize": "^0.1.4", "vue-code-highlight": "^0.7.8", - "vue-country-flag": "^2.0.1", - "vue-eslint-parser": "^9.1.0", - "vue-gtag": "^1.16.1", - "vue-head": "^2.2.0", - "vue-jest": "^3.0.7", - "vue-json-pretty": "^1.7.1", - "vue-loader": "^15.9.3", - "vue-meta": "^2.4.0", + "vue-country-flag-next": "^2.3.2", + "vue-eslint-parser": "^9.4.3", + "vue-gtag": "^2.1.0", + "vue-json-pretty": "^2.6.0", + "vue-loader": "^17.4.2", + "vue-meta": "^3.0.0-alpha.10", "vue-moment": "^4.1.0", - "vue-property-decorator": "^9.1.2", - "vue-router": "^3.4.3", - "vue-sanitize": "^0.2.3", + "vue-router": "^4.4.3", "vue-scrollto": "^2.20.0", - "vuetify": "^2.6.10", - "vuex": "^3.6.2", - "webpack": "^5.88.0" + "vuetify": "^3.6.14", + "vuex": "^4.1.0", + "webpack": "^5.93.0" }, "devDependencies": { - "@babel/core": "^7.22.5", - "@babel/eslint-parser": "^7.21.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/preset-env": "^7.20.2", - "@vue/cli-plugin-babel": "5.0.8", - "@vue/cli-plugin-eslint": "5.0.7", - "@vue/cli-plugin-unit-jest": "5.0.8", - "@vue/cli-service": "^5.0.8", - "@vue/test-utils": "^1.1.3", - "@vue/vue2-jest": "^27.0.0-alpha.3", - "@vuese/cli": "^2.14.0", - "baseline-browser-mapping": "^2.9.17", - "codacy-coverage": "^3.4.0", - "compression-webpack-plugin": "10.0.0", - "css-loader": "^5.2.7", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/preset-env": "^7.25.8", + "@fortawesome/fontawesome-free": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@vitejs/plugin-vue": "^5.1.4", + "@vitest/coverage-v8": "^2.1.4", + "@vitest/ui": "^2.1.4", + "@vue/babel-preset-app": "^5.0.8", + "@vue/test-utils": "^2.4.6", + "autoprefixer": "^10.4.20", + "baseline-browser-mapping": "^2.9.11", + "compression-webpack-plugin": "11.1.0", + "css-loader": "^7.1.2", "deepmerge": "^4.2.2", - "eslint": "^8.42.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-vue": "^8.0.3", + "eslint-plugin-vue": "^9.27.0", + "eslint-plugin-vuetify": "^2.4.0", + "eslint-webpack-plugin": "^4.2.0", "fs": "*", + "happy-dom": "^20.0.10", "ink-docstrap": "^1.3.2", - "jsdoc": "^4.0.0", - "jsdoc-vuejs": "^3.0.9", + "jsdoc": "^4.0.4", + "jsdoc-vuejs": "^4.0.0", + "linkifyjs": "^3.0.5", "lint-staged": "^9.5.0", "path": "*", "postcss": "^8.4.21", - "sass": "~1.32.12", - "sass-loader": "^10.1.1", - "sinon": "^7.5.0", + "prettier": "3.4.2", + "resize-observer-polyfill": "^1.5.1", + "sass": "^1.77.8", + "sinon": "^18.0.0", + "stylelint": "^16.12.0", + "stylelint-scss": "^6.10.0", + "taffydb": "^2.7.3", + "vite": "^5.4.10", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-eslint": "^1.8.1", + "vite-plugin-node-polyfills": "^0.22.0", + "vitest": "^2.1.4", + "vue-3-linkify": "^1.1.0", "vue-cli-plugin-vuetify": "~2.5.8", - "vue-linkify": "^1.0.1", "vue-template-compiler": "^2.7.15", - "vuetify-loader": "^1.7.0" + "webpack-bundle-analyzer": "^4.10.2" }, "optionalDependencies": { "fsevents": "^2.3.2" }, + "overrides": { + "rollup": "^4.0.0" + }, "browserslist": [ "> 0.25%", "last 2 versions", diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 59ea1f3209..0000000000 --- a/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: { - autoprefixer: {} - } -}; diff --git a/public/assets/Community/profiles/prakhyat.jpg b/public/assets/Community/profiles/prakhyat.jpg index 2b6b19c305..e04141a3bb 100644 Binary files a/public/assets/Community/profiles/prakhyat.jpg and b/public/assets/Community/profiles/prakhyat.jpg differ diff --git a/public/assets/Community/profiles/prakhyat1.jpg b/public/assets/Community/profiles/prakhyat1.jpg new file mode 100644 index 0000000000..2b6b19c305 Binary files /dev/null and b/public/assets/Community/profiles/prakhyat1.jpg differ diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 2181f11906..0000000000 --- a/public/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - FAIRsharing - - - - - -
- - - diff --git a/src/App.vue b/src/App.vue index be66972aac..4cebc64c33 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,66 +1,60 @@ diff --git a/src/components/Curators/CuratorRecordsAwaitingApproval.vue b/src/components/Curators/CuratorRecordsAwaitingApproval.vue index d0ab0dfec6..ca8898844f 100644 --- a/src/components/Curators/CuratorRecordsAwaitingApproval.vue +++ b/src/components/Curators/CuratorRecordsAwaitingApproval.vue @@ -3,19 +3,19 @@ CURATOR EDITS AWAITING APPROVAL @@ -24,161 +24,161 @@ {{ error.general }} + -