diff --git a/.eslintrc.js b/.eslintrc.js index 5dd4e0f2..89f7810a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -7,6 +7,8 @@ module.exports = { rules: { 'no-console': 'off', 'comma-dangle': 'off', - 'max-len': 'off' - } + 'max-len': 'off', + indent: 'off', + }, + ignorePatterns: ['node_modules/', 'dist/', 'public/', 'static/'], }; diff --git a/.github/workflows/build_pages_native.yml b/.github/workflows/build_pages_native.yml index 5ef244ba..213cc35f 100644 --- a/.github/workflows/build_pages_native.yml +++ b/.github/workflows/build_pages_native.yml @@ -1,6 +1,6 @@ name: build_test_deploy run-name: Build and test website (and deploy if needed) -on: +on: push: branches: - main @@ -20,38 +20,39 @@ jobs: uses: actions/setup-node@v4 with: node-version: 20 - cache: 'npm' + cache: "npm" - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: '0.139.4' # See https://github.com/gohugoio/hugo/issues/13150 extended: true - name: Build - run: | - npm install - npm run gen-people - npm run gen-teams - npm run update-stats - hugo --minify - npm run postbuild -# - name: Test HTML code -# uses: Cyb3r-Jak3/html5validator-action@v7.2.0 -# with: -# root: public -# - name: Upload HTML test report -# uses: actions/upload-artifact@v3 -# if: success() || failure() # Run even if we had an error -# with: -# name: html5validator_log -# path: log.log + run: | + npm install + npm run gen-people + npm run gen-teams + npm run update-stats + npm run cms-build + hugo --minify + npm run postbuild + # - name: Test HTML code + # uses: Cyb3r-Jak3/html5validator-action@v7.2.0 + # with: + # root: public + # - name: Upload HTML test report + # uses: actions/upload-artifact@v3 + # if: success() || failure() # Run even if we had an error + # with: + # name: html5validator_log + # path: log.log - name: Modify .htacess for staging - if: ${{ github.ref == 'refs/heads/staging' }} + if: ${{ github.ref == 'refs/heads/staging' }} run: | - sed -i 's#www\.divd#staging.divd#' public/.htaccess - sed -i 's#\-2024#-staging#g' public/.htaccess + sed -i 's#www\.divd#staging.divd#' public/.htaccess + sed -i 's#\-2024#-staging#g' public/.htaccess - name: rsync deploy staging uses: burnett01/rsync-deployments@5.2.1 - if: ${{ github.ref == 'refs/heads/staging' }} # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless + if: ${{ github.ref == 'refs/heads/staging' }} # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless with: switches: -avzr --delete path: public/ @@ -61,7 +62,7 @@ jobs: remote_key: ${{ secrets.DEPLOY_KEY }} - name: rsync deploy production uses: burnett01/rsync-deployments@5.2.1 - if: ${{ github.ref == 'refs/heads/main' }} # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless + if: ${{ github.ref == 'refs/heads/main' }} # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless with: switches: -avzr --delete path: public/ @@ -71,6 +72,6 @@ jobs: remote_key: ${{ secrets.DEPLOY_KEY }} - name: Deploy GitHub pages uses: JamesIves/github-pages-deploy-action@v4 - if: ( ${{ github.ref == 'refs/heads/main' }} || ${{ github.ref == 'refs/heads/staging' }} ) # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless + if: ( ${{ github.ref == 'refs/heads/main' }} || ${{ github.ref == 'refs/heads/staging' }} ) # && ( success() || failure() ) # Remove the && clause when a HTML check is flawless with: - folder: admin # The folder the action should deploy. \ No newline at end of file + folder: admin # The folder the action should deploy. diff --git a/.github/workflows/build_pages_no_push.yml b/.github/workflows/build_pages_no_push.yml index 1f0c1b1e..4f2b9d10 100644 --- a/.github/workflows/build_pages_no_push.yml +++ b/.github/workflows/build_pages_no_push.yml @@ -1,39 +1,40 @@ name: build_and_test_no_deploy run-name: Build and test website, but not deploy on: - pull_request: + pull_request: jobs: - build_and_test_no_deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: 'npm' - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: '0.139.4' # See https://github.com/gohugoio/hugo/issues/13150 - extended: true - - name: Build - run: | - npm install - npm run gen-people - npm run gen-teams - npm run update-stats - hugo --minify - npm run postbuild - # - name: Test HTML code - # uses: Cyb3r-Jak3/html5validator-action@v7.2.0 - # with: - # root: public - # - name: Upload HTML test report - # uses: actions/upload-artifact@v3 - # if: success() || failure() # Run even if we had an error - # with: - # name: html5validator_log - # path: log.log \ No newline at end of file + build_and_test_no_deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: '0.139.4' # See https://github.com/gohugoio/hugo/issues/13150 + extended: true + - name: Build + run: | + npm install + npm run gen-people + npm run gen-teams + npm run update-stats + npm run cms-build + hugo --minify + npm run postbuild + # - name: Test HTML code + # uses: Cyb3r-Jak3/html5validator-action@v7.2.0 + # with: + # root: public + # - name: Upload HTML test report + # uses: actions/upload-artifact@v3 + # if: success() || failure() # Run even if we had an error + # with: + # name: html5validator_log + # path: log.log diff --git a/.gitignore b/.gitignore index 49eecb95..338c513f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ public resources out +dist # Package dependencies node_modules/ diff --git a/.prettierrc b/.prettierrc index fd30b437..af7517e1 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,7 +4,6 @@ "files": ["*.html"], "options": { "parser": "go-template", - "goTemplateBracketSpacing": true, "bracketSameLine": true } }, @@ -15,5 +14,6 @@ "singleQuote": true } } - ] + ], + "plugins": ["prettier-plugin-go-template"] } diff --git a/README.md b/README.md index 9ddcc1c4..0a2006aa 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # DIVD website -If you notice anything that might need improvement or is just not working for you, let us know. Feel free to give feedback by sumbitting an issue. Bonuspoints for a detailled description and screenshots if possible. +If you notice anything that might need improvement or is just not working for you, let us know. Feel free to give feedback by sumbitting an issue. Bonuspoints for a detailled description and screenshots if possible. # Chocolate Requests -A pull request is like a box of chocolate... -The first 10 pull requests that genuinely improve the website will receive a box of chocolates. Pull requests related to spelling or typographical errors do not count. We all like a challenge right? +A pull request is like a box of chocolate... +The first 10 pull requests that genuinely improve the website will receive a box of chocolates. Pull requests related to spelling or typographical errors do not count. We all like a challenge right? # Prerequisites @@ -42,14 +42,7 @@ npm run gen-teams ## Local admin ```sh -just admin -open http://localhost:8000 -just admin-stop #when done - -# equivalent to: - -npx decap-server -python3 -m http.server --directory ./admin/development +npm run cms ``` ## Test production version diff --git a/admin/config.yml b/admin/config.yml index b5cbd2af..300a80e4 100644 --- a/admin/config.yml +++ b/admin/config.yml @@ -76,7 +76,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t1_alt, @@ -92,7 +92,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t2_alt, @@ -108,7 +108,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t3_alt, @@ -171,7 +171,12 @@ collections: widget: list i18n: true fields: - - { label: "heading", name: "heading", widget: "string", i18n: true } + - { + label: "heading", + name: "heading", + widget: "string", + i18n: true, + } - { label: "FAQs", name: "faqs", @@ -494,7 +499,12 @@ collections: slug: "{{slug}}" fields: - { label: "Title", name: "title", widget: "string", i18n: true } - - { label: "Publish Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Publish Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Author(s)" name: "author" widget: "relation" @@ -593,80 +603,92 @@ collections: ], } - { label: "Body", name: "body", widget: "markdown", i18n: true } - - { label: "Enable FAQ", name: "faq_enabled", widget: "boolean", default: false } + - { + label: "Enable FAQ", + name: "faq_enabled", + widget: "boolean", + default: false, + } - { label: "FAQ", required: false, name: "faq", widget: "object", collapsed: true, - fields: [ - { - label: "FAQ Title", - name: "title", - widget: "string", - default: "faq", - required: false, - i18n: true - }, - { - label: "FAQ Opener", - name: "opener", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ Intro", - name: "intro", - widget: "text", - required: false, - i18n: true - }, - { - label: "FAQ 'All FAQ' Url", - name: "url", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ groups", - name: "faqgroups", - widget: list, - i18n: true, - required: false, - fields: - [ - { label: "heading", name: "heading", widget: "string", required: false, i18n: true }, - { - label: "FAQs", - name: "faqs", - widget: list, - i18n: true, - required: false, - fields: - [ - { - label: "Title", - name: "title", - widget: "string", - required: false, - i18n: true, - }, - { - label: "Description", - name: "description", - widget: "markdown", - required: false, - i18n: true, - }, - ], - } - ] - } - ] - } + fields: + [ + { + label: "FAQ Title", + name: "title", + widget: "string", + default: "faq", + required: false, + i18n: true, + }, + { + label: "FAQ Opener", + name: "opener", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ Intro", + name: "intro", + widget: "text", + required: false, + i18n: true, + }, + { + label: "FAQ 'All FAQ' Url", + name: "url", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ groups", + name: "faqgroups", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "heading", + name: "heading", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQs", + name: "faqs", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "Title", + name: "title", + widget: "string", + required: false, + i18n: true, + }, + { + label: "Description", + name: "description", + widget: "markdown", + required: false, + i18n: true, + }, + ], + }, + ], + }, + ], + } ###################################### # SECTION: Contribute @@ -829,7 +851,12 @@ collections: name: "donations" widget: "list" fields: - - { label: "Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Amount" name: "amount" hint: "include currency symbol" @@ -1057,12 +1084,7 @@ collections: create: false i18n: true fields: - - { - label: "type", - name: "type", - widget: "hidden", - value: "codeofethics", - } + - { label: "type", name: "type", widget: "hidden", value: "codeofethics" } - { label: "Title", name: "title", widget: "string", i18n: true } - { label: "Body", name: "body", widget: "markdown", i18n: true } @@ -1415,7 +1437,6 @@ collections: required: false i18n: true - ###################################### # SECTION: Dictionary #### diff --git a/admin/development/config-dev.yml b/admin/development/config-dev.yml index e919d346..8ba44b90 100644 --- a/admin/development/config-dev.yml +++ b/admin/development/config-dev.yml @@ -76,7 +76,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t1_alt, @@ -92,7 +92,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t2_alt, @@ -108,7 +108,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t3_alt, @@ -171,7 +171,12 @@ collections: widget: list i18n: true fields: - - { label: "heading", name: "heading", widget: "string", i18n: true } + - { + label: "heading", + name: "heading", + widget: "string", + i18n: true, + } - { label: "FAQs", name: "faqs", @@ -494,7 +499,12 @@ collections: slug: "{{slug}}" fields: - { label: "Title", name: "title", widget: "string", i18n: true } - - { label: "Publish Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Publish Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Author(s)" name: "author" widget: "relation" @@ -593,80 +603,92 @@ collections: ], } - { label: "Body", name: "body", widget: "markdown", i18n: true } - - { label: "Enable FAQ", name: "faq_enabled", widget: "boolean", default: false } + - { + label: "Enable FAQ", + name: "faq_enabled", + widget: "boolean", + default: false, + } - { label: "FAQ", required: false, name: "faq", widget: "object", collapsed: true, - fields: [ - { - label: "FAQ Title", - name: "title", - widget: "string", - default: "faq", - required: false, - i18n: true - }, - { - label: "FAQ Opener", - name: "opener", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ Intro", - name: "intro", - widget: "text", - required: false, - i18n: true - }, - { - label: "FAQ 'All FAQ' Url", - name: "url", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ groups", - name: "faqgroups", - widget: list, - i18n: true, - required: false, - fields: - [ - { label: "heading", name: "heading", widget: "string", required: false, i18n: true }, - { - label: "FAQs", - name: "faqs", - widget: list, - i18n: true, - required: false, - fields: - [ - { - label: "Title", - name: "title", - widget: "string", - required: false, - i18n: true, - }, - { - label: "Description", - name: "description", - widget: "markdown", - required: false, - i18n: true, - }, - ], - } - ] - } - ] - } + fields: + [ + { + label: "FAQ Title", + name: "title", + widget: "string", + default: "faq", + required: false, + i18n: true, + }, + { + label: "FAQ Opener", + name: "opener", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ Intro", + name: "intro", + widget: "text", + required: false, + i18n: true, + }, + { + label: "FAQ 'All FAQ' Url", + name: "url", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ groups", + name: "faqgroups", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "heading", + name: "heading", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQs", + name: "faqs", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "Title", + name: "title", + widget: "string", + required: false, + i18n: true, + }, + { + label: "Description", + name: "description", + widget: "markdown", + required: false, + i18n: true, + }, + ], + }, + ], + }, + ], + } ###################################### # SECTION: Contribute @@ -829,7 +851,12 @@ collections: name: "donations" widget: "list" fields: - - { label: "Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Amount" name: "amount" hint: "include currency symbol" @@ -1057,12 +1084,7 @@ collections: create: false i18n: true fields: - - { - label: "type", - name: "type", - widget: "hidden", - value: "codeofethics", - } + - { label: "type", name: "type", widget: "hidden", value: "codeofethics" } - { label: "Title", name: "title", widget: "string", i18n: true } - { label: "Body", name: "body", widget: "markdown", i18n: true } diff --git a/admin/development/index.html b/admin/development/index.html index b1d18392..e454b341 100644 --- a/admin/development/index.html +++ b/admin/development/index.html @@ -1,12 +1,16 @@ - + DIVD Dev CMS - - + + diff --git a/admin/index.html b/admin/index.html index e1f2779f..b7730d65 100644 --- a/admin/index.html +++ b/admin/index.html @@ -1,4 +1,4 @@ - + @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/admin/new-cms/.gitignore b/admin/new-cms/.gitignore new file mode 100644 index 00000000..4433fac1 --- /dev/null +++ b/admin/new-cms/.gitignore @@ -0,0 +1,2 @@ +# We just want to ignore everything in this folder since Vite will build the files for us +* \ No newline at end of file diff --git a/admin/staging/config-staging.yml b/admin/staging/config-staging.yml index af0cbc75..3fdfe296 100644 --- a/admin/staging/config-staging.yml +++ b/admin/staging/config-staging.yml @@ -76,7 +76,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t1_alt, @@ -92,7 +92,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t2_alt, @@ -108,7 +108,7 @@ collections: public_folder: "/images/", media_folder: "/assets/images/", required: true, - i18n: true + i18n: true, } - { label: t3_alt, @@ -171,7 +171,12 @@ collections: widget: list i18n: true fields: - - { label: "heading", name: "heading", widget: "string", i18n: true } + - { + label: "heading", + name: "heading", + widget: "string", + i18n: true, + } - { label: "FAQs", name: "faqs", @@ -494,7 +499,12 @@ collections: slug: "{{slug}}" fields: - { label: "Title", name: "title", widget: "string", i18n: true } - - { label: "Publish Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Publish Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Author(s)" name: "author" widget: "relation" @@ -593,80 +603,92 @@ collections: ], } - { label: "Body", name: "body", widget: "markdown", i18n: true } - - { label: "Enable FAQ", name: "faq_enabled", widget: "boolean", default: false } + - { + label: "Enable FAQ", + name: "faq_enabled", + widget: "boolean", + default: false, + } - { label: "FAQ", required: false, name: "faq", widget: "object", collapsed: true, - fields: [ - { - label: "FAQ Title", - name: "title", - widget: "string", - default: "faq", - required: false, - i18n: true - }, - { - label: "FAQ Opener", - name: "opener", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ Intro", - name: "intro", - widget: "text", - required: false, - i18n: true - }, - { - label: "FAQ 'All FAQ' Url", - name: "url", - widget: "string", - required: false, - i18n: true - }, - { - label: "FAQ groups", - name: "faqgroups", - widget: list, - i18n: true, - required: false, - fields: - [ - { label: "heading", name: "heading", widget: "string", required: false, i18n: true }, - { - label: "FAQs", - name: "faqs", - widget: list, - i18n: true, - required: false, - fields: - [ - { - label: "Title", - name: "title", - widget: "string", - required: false, - i18n: true, - }, - { - label: "Description", - name: "description", - widget: "markdown", - required: false, - i18n: true, - }, - ], - } - ] - } - ] - } + fields: + [ + { + label: "FAQ Title", + name: "title", + widget: "string", + default: "faq", + required: false, + i18n: true, + }, + { + label: "FAQ Opener", + name: "opener", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ Intro", + name: "intro", + widget: "text", + required: false, + i18n: true, + }, + { + label: "FAQ 'All FAQ' Url", + name: "url", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQ groups", + name: "faqgroups", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "heading", + name: "heading", + widget: "string", + required: false, + i18n: true, + }, + { + label: "FAQs", + name: "faqs", + widget: list, + i18n: true, + required: false, + fields: + [ + { + label: "Title", + name: "title", + widget: "string", + required: false, + i18n: true, + }, + { + label: "Description", + name: "description", + widget: "markdown", + required: false, + i18n: true, + }, + ], + }, + ], + }, + ], + } ###################################### # SECTION: Contribute @@ -829,7 +851,12 @@ collections: name: "donations" widget: "list" fields: - - { label: "Date", name: "date", widget: "datetime", format: "YYYY-MM-DDTHH:mm:ssZ" } + - { + label: "Date", + name: "date", + widget: "datetime", + format: "YYYY-MM-DDTHH:mm:ssZ", + } - label: "Amount" name: "amount" hint: "include currency symbol" @@ -1057,12 +1084,7 @@ collections: create: false i18n: true fields: - - { - label: "type", - name: "type", - widget: "hidden", - value: "codeofethics", - } + - { label: "type", name: "type", widget: "hidden", value: "codeofethics" } - { label: "Title", name: "title", widget: "string", i18n: true } - { label: "Body", name: "body", widget: "markdown", i18n: true } @@ -1415,7 +1437,6 @@ collections: required: false i18n: true - ###################################### # SECTION: Dictionary #### diff --git a/admin/staging/index.html b/admin/staging/index.html index f672d9b5..a607d9dc 100644 --- a/admin/staging/index.html +++ b/admin/staging/index.html @@ -1,12 +1,16 @@ - + DIVD Staging CMS - - + + diff --git a/assets/scss/fonts.scss b/assets/scss/fonts.scss index 36956fbd..da1d3fe1 100644 --- a/assets/scss/fonts.scss +++ b/assets/scss/fonts.scss @@ -1,66 +1,69 @@ /* source-sans-3-regular - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Source Sans 3'; + font-family: "Source Sans 3"; font-style: normal; font-weight: 400; - src: url('/font/sourcesans3/source-sans-3-v10-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/sourcesans3/source-sans-3-v10-latin-regular.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* source-sans-3-italic - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Source Sans 3'; + font-family: "Source Sans 3"; font-style: italic; font-weight: 400; - src: url('/font/sourcesans3/source-sans-3-v10-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/sourcesans3/source-sans-3-v10-latin-italic.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* source-sans-3-900 - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Source Sans 3'; + font-family: "Source Sans 3"; font-style: normal; font-weight: 900; - src: url('/font/sourcesans3/source-sans-3-v10-latin-900.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/sourcesans3/source-sans-3-v10-latin-900.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* source-sans-3-900italic - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Source Sans 3'; + font-family: "Source Sans 3"; font-style: italic; font-weight: 900; - src: url('/font/sourcesans3/source-sans-3-v10-latin-900italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/sourcesans3/source-sans-3-v10-latin-900italic.woff2") + format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } - /* open-sans-regular - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Open Sans'; + font-family: "Open Sans"; font-style: normal; font-weight: 400; - src: url('/font/opensans/open-sans-v36-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/opensans/open-sans-v36-latin-regular.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* open-sans-italic - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Open Sans'; + font-family: "Open Sans"; font-style: italic; font-weight: 400; - src: url('/font/opensans/open-sans-v36-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/opensans/open-sans-v36-latin-italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* open-sans-700 - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Open Sans'; + font-family: "Open Sans"; font-style: normal; font-weight: 700; - src: url('/font/opensans/open-sans-v36-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + src: url("/font/opensans/open-sans-v36-latin-700.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } /* open-sans-700italic - latin */ @font-face { font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Open Sans'; + font-family: "Open Sans"; font-style: italic; font-weight: 700; - src: url('/font/opensans/open-sans-v36-latin-700italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} \ No newline at end of file + src: url("/font/opensans/open-sans-v36-latin-700italic.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} diff --git a/assets/scss/pages/newsroom.scss b/assets/scss/pages/newsroom.scss index fb149e5f..a452a4fb 100644 --- a/assets/scss/pages/newsroom.scss +++ b/assets/scss/pages/newsroom.scss @@ -1,6 +1,4 @@ - .newsroom { - &.articles { padding-top: 64px; } @@ -9,21 +7,19 @@ display: grid; grid-gap: 32px; grid-template-columns: 1fr 1fr; - grid-template-rows: repeat(4, 320px); + grid-template-rows: repeat(4, 320px); //grid-auto-rows: minmax(min-content, max-content); } - .highlight { grid-row: 1 / 3; - background-color: #1D1D1D; + background-color: #1d1d1d; border-radius: 20px; color: #fff; figure { - border-radius: 20px 20px 0 0; margin-bottom: 16px; position: relative; @@ -46,10 +42,9 @@ } .article { - border-radius: 20px; background-color: #f2f2f2; - box-shadow: 0 0 16px rgba(0,0,0,0.1); + box-shadow: 0 0 16px rgba(0, 0, 0, 0.1); overflow: hidden; display: flex; @@ -71,7 +66,9 @@ line-clamp: 3; /* Limits the text to 3 lines */ overflow: hidden; text-overflow: ellipsis; - max-height: calc(1.5em * 3); /* Adjusts based on line height and number of lines */ + max-height: calc( + 1.5em * 3 + ); /* Adjusts based on line height and number of lines */ line-height: 1.5em; /* Ensure this matches the line-height used */ } } @@ -102,12 +99,9 @@ object-fit: cover; } } - } - } - .article-body { display: flex; padding: 16px 42px 50px 50px; @@ -142,9 +136,8 @@ aside { flex: 0 0 330px; - section { - background-color: #F2F2F2; + background-color: #f2f2f2; border-radius: 20px; padding: 20px; @@ -168,7 +161,7 @@ } } - @media(max-width: 700px) { + @media (max-width: 700px) { display: block; padding: 16px; } @@ -191,9 +184,6 @@ ul.pagination { li { margin: 0 8px; - - - a { display: block; border: 1px solid transparent; @@ -215,6 +205,5 @@ ul.pagination { &.disabled a { opacity: 0.2; } - } -} \ No newline at end of file +} diff --git a/assets/scss/reset.scss b/assets/scss/reset.scss index af944401..45a05ecf 100644 --- a/assets/scss/reset.scss +++ b/assets/scss/reset.scss @@ -3,46 +3,127 @@ License: none (public domain) */ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; } body { - line-height: 1; + line-height: 1; } -ol, ul { - list-style: none; +ol, +ul { + list-style: none; } -blockquote, q { - quotes: none; +blockquote, +q { + quotes: none; } -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; } table { - border-collapse: collapse; - border-spacing: 0; -} \ No newline at end of file + border-collapse: collapse; + border-spacing: 0; +} diff --git a/assets/scss/typography.scss b/assets/scss/typography.scss index 96f25b3e..60824550 100644 --- a/assets/scss/typography.scss +++ b/assets/scss/typography.scss @@ -1,6 +1,17 @@ body { - font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-family: + "Open Sans", + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Oxygen, + Ubuntu, + Cantarell, + Fira Sans, + Droid Sans, + Helvetica Neue, + sans-serif; font-size: 18px; } @@ -25,7 +36,7 @@ h3 { font-family: var(--font-text); font-weight: 700; margin-bottom: 0.4em; - line-height: 1.2em; + line-height: 1.2em; } h6 { @@ -76,11 +87,10 @@ li { } p.primary { - color: var(--brand)!important; + color: var(--brand) !important; font-size: 1em; } - .brand { color: var(--brand); } @@ -116,25 +126,24 @@ strong { p { font-size: 1em; } - } - - .reverse { - - h1, h2, p, div, a { + h1, + h2, + p, + div, + a { color: #fff; /* TODO VAR */ } - a { border-bottom: 1px solid white; } - } -.p, .markdown { +.p, +.markdown { font-family: var(--font-text); font-size: 1em; line-height: 1.6em; @@ -153,10 +162,10 @@ strong { ul { list-style-position: inside; } - - } -li, li li, li li li { +li, +li li, +li li li { font-size: 1em; -} \ No newline at end of file +} diff --git a/assets/scss/ui/accordion.scss b/assets/scss/ui/accordion.scss index c0116045..73ab7859 100644 --- a/assets/scss/ui/accordion.scss +++ b/assets/scss/ui/accordion.scss @@ -10,7 +10,6 @@ border-bottom: 1px solid black; - > h3 { display: flex; align-items: center; @@ -19,7 +18,7 @@ display: pointer; span { - margin-left: 16px; + margin-left: 16px; transform-origin: center; } } @@ -27,16 +26,14 @@ > h3 span::after { content: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.3793 1.3614L12.0906 0.0727085L6.80938 5.35396L1.52792 0.0725092L0.239236 1.3612L6.80541 7.92737L6.80918 7.9236L6.81315 7.92757L13.3793 1.3614Z' /%3E%3C/svg%3E"); display: inline-block; - width: 16px; - height: 16px; + width: 16px; + height: 16px; } - &:first-of-type { padding-top: 0; } - &.active { h3 { span { @@ -50,12 +47,11 @@ } } - details { margin-top: 16px; summary { border-radius: 22px; - background-color: #F2F2F2; + background-color: #f2f2f2; color: black; text-transform: uppercase; display: inline-flex; @@ -68,24 +64,21 @@ display: none; } } - } details[open] { padding-bottom: 16px; - summary { + summary { position: absolute; bottom: 0px; left: 0; span { - display:none; + display: none; } em { display: block; } - } } - -} \ No newline at end of file +} diff --git a/assets/scss/ui/carousel.scss b/assets/scss/ui/carousel.scss index e772897b..33904ddf 100644 --- a/assets/scss/ui/carousel.scss +++ b/assets/scss/ui/carousel.scss @@ -6,7 +6,7 @@ .slides { padding-top: 16px; padding-bottom: 16px; - + padding-left: 8px; display: flex; @@ -27,7 +27,6 @@ background: transparent; } - > * { margin-right: 32px; width: calc(var(--item-width) - 32px); @@ -37,14 +36,11 @@ } } - - .pages { display: flex; align-items: center; color: white; - div { margin-left: 16px; } @@ -56,8 +52,7 @@ } } - @media(max-width: 700px) { - + @media (max-width: 700px) { .slides { > * { width: calc(100vw - 32px); @@ -72,7 +67,6 @@ } } - .smallousel { background-color: #fff; border-radius: 64px; @@ -97,19 +91,19 @@ overflow: hidden; position: relative; height: 64px; - + .slides { position: absolute; width: 100%; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; - display: flex; + display: flex; flex-wrap: nowrap; - - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ - + + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + &::-webkit-scrollbar { display: none; } @@ -120,7 +114,7 @@ &::-webkit-scrollbar-track { background: transparent; } - + section { filter: grayscale(100%); transition: filter 0.3s ease; @@ -129,18 +123,18 @@ align-items: center; /* Center image vertically */ width: 115.2px; /* Ensure fixed width for each section */ height: 64px; /* Ensure fixed height for each section */ - + &:hover { filter: grayscale(0%); } } } - + img { max-height: 64px; max-width: 115.2px; width: auto; /* Maintain aspect ratio */ height: auto; /* Maintain aspect ratio */ } - } + } } diff --git a/assets/scss/ui/footer.scss b/assets/scss/ui/footer.scss index cafdbc53..1bf6aecf 100644 --- a/assets/scss/ui/footer.scss +++ b/assets/scss/ui/footer.scss @@ -1,5 +1,5 @@ footer.main { - background-color: #1D1D1D; + background-color: #1d1d1d; display: flex; flex-direction: column; @@ -40,7 +40,7 @@ footer.main { } } - @media(max-width: 700px) { + @media (max-width: 700px) { article { padding: 16px; .container { @@ -73,7 +73,6 @@ footer.main { li { padding-right: 16px; ul { - li { padding-bottom: 8px; a { @@ -88,7 +87,7 @@ footer.main { } } - @media(max-width: 700px) { + @media (max-width: 700px) { li { ul { li { @@ -102,7 +101,7 @@ footer.main { } .ethics-footer { - margin-top: 40px !important; + margin-top: 40px !important; background-color: #fff; border-radius: 42px; max-width: var(--cw); @@ -110,24 +109,23 @@ footer.main { overflow: hidden; display: flex; - h3, p { + h3, + p { color: #000; } - img { flex: 0 0 30%; - object-fit: cover; + object-fit: cover; height: 220px; } - .content { flex: 1 1 auto; padding: 20px 16px; } - @media(max-width: 700px) { + @media (max-width: 700px) { flex-direction: column; img { @@ -139,4 +137,4 @@ footer.main { .subtle { opacity: 0.6; line-height: 22px; -} \ No newline at end of file +} diff --git a/assets/scss/ui/layout.scss b/assets/scss/ui/layout.scss index b6477071..e7a3a458 100644 --- a/assets/scss/ui/layout.scss +++ b/assets/scss/ui/layout.scss @@ -1,16 +1,14 @@ .ps { - &.ps-hide { overflow-x: hidden; } - &.ps-default { background-color: #fff; } &.ps-inverse { - background-color:#1D1D1D; + background-color: #1d1d1d; } &.ps-primary { @@ -18,31 +16,37 @@ } &.ps-gradient { - background: linear-gradient(3.3deg, #FFFFFF 59.39%, rgba(61, 220, 235, 0.2) 97.41%); + background: linear-gradient( + 3.3deg, + #ffffff 59.39%, + rgba(61, 220, 235, 0.2) 97.41% + ); } &.ps-gradient-reverse { background: linear-gradient(to top, rgba(61, 220, 235, 0.2) 50%, #fff 100%); } - - &.ps-overlap { - background: linear-gradient(to bottom, #fff 0%, #fff 64px, #1D1D1D 64px, #1D1D1D 100%); + &.ps-overlap { + background: linear-gradient( + to bottom, + #fff 0%, + #fff 64px, + #1d1d1d 64px, + #1d1d1d 100% + ); .ps-container { - background: transparent url("/assets/bubble.png") no-repeat 60% 120px; } } - &.ps-overlap-top { .ps-container { position: relative; top: -128px; - @media(max-width: 700px) { + @media (max-width: 700px) { top: -64px; - } } } @@ -79,51 +83,46 @@ &.ps-round-topright { border-top-right-radius: 300px; /* TODO: var */ } - + &.ps-round-topleft { border-top-left-radius: 300px; } - + &.ps-round-bottomright { border-bottom-right-radius: 300px; } - + &.ps-round-bottomleft { border-bottom-left-radius: 300px; } - @media(max-width: 700px) { + @media (max-width: 700px) { padding-top: 32px; &.ps-round-topright { border-top-right-radius: 56px; /* TODO: var */ } - + &.ps-round-topleft { border-top-left-radius: 56px; } - + &.ps-round-bottomright { border-bottom-right-radius: 56px; } - + &.ps-round-bottomleft { border-bottom-left-radius: 56px; } } } - - - } - - .pl { display: flex; padding: 64px 0; - @media(max-width: 700px) { + @media (max-width: 700px) { padding: 16px 0; } @@ -131,12 +130,10 @@ flex: 0 0 var(--rest); } - - .pl-content { flex: 0 0 var(--cw); padding: 0; - @media(max-width: 700px) { + @media (max-width: 700px) { padding: 0 16px; } &.pl-extend { @@ -145,19 +142,19 @@ padding-right: 0; } - &.pl-columns { display: grid; grid-gap: 32px; - - h1, h2, h3 { + h1, + h2, + h3 { grid-column: 1 / -1; } &.pl-columns-2 { grid-template-columns: 1fr 1fr; - @media(max-width: 700px) { + @media (max-width: 700px) { grid-template-columns: 1fr; } } @@ -183,17 +180,16 @@ display: grid; grid-template-columns: 1fr 2fr; - @media(max-width: 700px) { + @media (max-width: 700px) { grid-template-columns: 1fr; } - } &.pl-right { display: grid; grid-gap: 32px; grid-template-columns: 2fr 1fr; - - @media(max-width: 700px) { + + @media (max-width: 700px) { grid-template-columns: 1fr; grid-gap: 16px; } @@ -204,12 +200,11 @@ grid-gap: 32px; grid-template-columns: 1fr 1fr; - @media(max-width: 700px) { + @media (max-width: 700px) { grid-template-columns: 1fr; } } - &.pl-article { background-color: white; padding-top: 32px; @@ -218,13 +213,19 @@ border-top-right-radius: 300px; overflow: hidden; - @media(max-width: 700px) { + @media (max-width: 700px) { border-top-right-radius: 80px; } } &.pl-has-image { - background: linear-gradient(to bottom, #333 0%, #333 300px, #fff 300px, #fff 100%); + background: linear-gradient( + to bottom, + #333 0%, + #333 300px, + #fff 300px, + #fff 100% + ); } &.pl-no-top-padding { @@ -233,16 +234,11 @@ } } - - - .breadcrumbs { - position: sticky; z-index: 1; top: 108px; margin-left: var(--rest); - ul { padding: 8px 12px; @@ -256,7 +252,6 @@ li { font-size: 0.8em; padding-right: 8px; - a { text-decoration: none; @@ -272,16 +267,15 @@ } } - .home-layout { padding-top: 128px; background-color: #fff; } - -.article-layout, .topic-layout { +.article-layout, +.topic-layout { padding-top: 128px; - background-color: #1D1D1D; + background-color: #1d1d1d; .breadcrumbs { ul { @@ -306,7 +300,6 @@ background-color: white; } - .intro-image { height: 720px; position: relative; @@ -341,7 +334,6 @@ } } - .person-highlight { background-color: var(--brand); @@ -370,7 +362,7 @@ color: black; } - @media(max-width: 700px) { + @media (max-width: 700px) { flex-direction: column; align-items: center; justify-content: space-around; @@ -389,7 +381,6 @@ text-align: center; } } - } .overlap-bottom { @@ -456,12 +447,11 @@ object-fit: cover; } - @media(max-width: 700px) { - + @media (max-width: 700px) { height: 300px; img { height: 300px; } } -} \ No newline at end of file +} diff --git a/assets/scss/ui/opener.scss b/assets/scss/ui/opener.scss index b5f12b84..ffe35ef5 100644 --- a/assets/scss/ui/opener.scss +++ b/assets/scss/ui/opener.scss @@ -2,7 +2,7 @@ display: flex; justify-content: center; position: relative; - + article { flex: 1; max-width: 1200px; @@ -41,11 +41,10 @@ } } - @media(max-width: 700px) { + @media (max-width: 700px) { position: static; flex-direction: column-reverse; article { - padding: 0 32px; section { @@ -64,7 +63,6 @@ position: static; } } - } } @@ -72,11 +70,9 @@ display: flex; justify-content: space-around; - article { max-width: 800px; - h2 { color: var(--brand); text-align: center; @@ -90,7 +86,6 @@ } .image-container { - img { max-width: 100%; } @@ -104,18 +99,15 @@ img { object-fit: cover; } - } } - .bubble { position: absolute; - background: linear-gradient(to right, #3DDCEB 0%, rgba(61, 220, 235, 0) 100%); + background: linear-gradient(to right, #3ddceb 0%, rgba(61, 220, 235, 0) 100%); height: 126px; width: 200px; - &.bubble-small { top: 0; border-radius: 64px; @@ -135,7 +127,7 @@ &.bubble-large { border-top-left-radius: 128px; bottom: 0px; - height: 128px; + height: 128px; width: 100%; } @@ -143,7 +135,7 @@ border-top-left-radius: 128px; right: 0; bottom: 0px; - height: 128px; + height: 128px; width: 40%; } @@ -179,10 +171,10 @@ right: 0px; } - @media(max-width: 700px) { + @media (max-width: 700px) { &.bubble-large { border-top-left-radius: 42px; - height: 42px; + height: 42px; } &.bubble-small-half { @@ -193,4 +185,4 @@ height: 64px; } } -} \ No newline at end of file +} diff --git a/assets/scss/ui/stats.scss b/assets/scss/ui/stats.scss index 55518cf9..3e40dd2e 100644 --- a/assets/scss/ui/stats.scss +++ b/assets/scss/ui/stats.scss @@ -1,5 +1,3 @@ - - .stats { background-color: white; list-style: none; @@ -18,23 +16,23 @@ &:last-of-type { border-right: 0; } - + h2 { margin: 0; font-size: 64px; padding: 0 0 8px 0; } - + h6 { margin: 0; padding: 0; } } - @media(max-width: 700px) { + @media (max-width: 700px) { border-radius: 0; flex-wrap: wrap; - + margin-left: -16px; width: calc(100% + 32px); @@ -43,4 +41,3 @@ } } } - diff --git a/assets/scss/variables.scss b/assets/scss/variables.scss index 7b7567b7..3ba8f39b 100644 --- a/assets/scss/variables.scss +++ b/assets/scss/variables.scss @@ -5,21 +5,20 @@ :root { --fg: #000; --bg: #fff; - --brand: #FFD736; + --brand: #ffd736; - --font-header: 'Source Sans 3'; - --font-text: 'Open Sans'; + --font-header: "Source Sans 3"; + --font-text: "Open Sans"; --cw: calc(min(100vw, 1200px)); --rest: calc((100vw - var(--cw)) / 2); } -[data-theme='dark'] { +[data-theme="dark"] { --fg: #fff; --bg: #000; } - select { font-size: 24px; } @@ -28,4 +27,4 @@ a { color: var(--fg); text-decoration: none; border-bottom: 1px solid var(--fg); -} \ No newline at end of file +} diff --git a/assets/ts/ui.ts b/assets/ts/ui.ts index c8f958a2..4382aaf3 100644 --- a/assets/ts/ui.ts +++ b/assets/ts/ui.ts @@ -1,136 +1,136 @@ function initMainMenu() { - let menuButtonEl = document.getElementById('main-menu-button'); - let subNavEl = document.getElementById('sub-nav'); - - function onClick() { - if (subNavEl) { - subNavEl.classList.toggle('active'); - } - } - - if (menuButtonEl && subNavEl) { - menuButtonEl.addEventListener('click', onClick); - } + let menuButtonEl = document.getElementById('main-menu-button'); + let subNavEl = document.getElementById('sub-nav'); + + function onClick() { + if (subNavEl) { + subNavEl.classList.toggle('active'); + } + } + + if (menuButtonEl && subNavEl) { + menuButtonEl.addEventListener('click', onClick); + } } function initCarousel(el: HTMLDivElement) { - let index = 0; - let pageCount = 0; - - let slides = el.querySelectorAll('.slides'); - let pageCountContainer = el.querySelector('.page-count'); - let slidesContainer = slides.length ? slides[0] : null; - if (slidesContainer) { - pageCount = slidesContainer.children.length; - } - - function setPageCounter(n) { - if (pageCountContainer) { - pageCountContainer.innerHTML = `${n} / ${pageCount}`; - } - } - - function nextPage() { - if (!slidesContainer) return; - if (index < pageCount - 1) { - index++; - } else { - index = 0; - } - - let child = slidesContainer.children[index] as HTMLElement; - let left = child.offsetLeft; - smoothScroll(left, slidesContainer); - setPageCounter(index + 1); - } - - function prevPage() { - if (!slidesContainer) return; - if (index > 0) { - index--; - } else { - index = pageCount - 1; - } - let child = slidesContainer.children[index] as HTMLElement; - let left = child.offsetLeft; - smoothScroll(left, slidesContainer); - setPageCounter(index + 1); - } - - let buttons = el.querySelectorAll('.pages button'); - if (!buttons.length) { - buttons = el.querySelectorAll('button'); - } - if (buttons.length === 2) { - buttons[0].addEventListener('click', prevPage); - buttons[1].addEventListener('click', nextPage); - } + let index = 0; + let pageCount = 0; + + let slides = el.querySelectorAll('.slides'); + let pageCountContainer = el.querySelector('.page-count'); + let slidesContainer = slides.length ? slides[0] : null; + if (slidesContainer) { + pageCount = slidesContainer.children.length; + } + + function setPageCounter(n) { + if (pageCountContainer) { + pageCountContainer.innerHTML = `${n} / ${pageCount}`; + } + } + + function nextPage() { + if (!slidesContainer) return; + if (index < pageCount - 1) { + index++; + } else { + index = 0; + } + + let child = slidesContainer.children[index] as HTMLElement; + let left = child.offsetLeft; + smoothScroll(left, slidesContainer); + setPageCounter(index + 1); + } + + function prevPage() { + if (!slidesContainer) return; + if (index > 0) { + index--; + } else { + index = pageCount - 1; + } + let child = slidesContainer.children[index] as HTMLElement; + let left = child.offsetLeft; + smoothScroll(left, slidesContainer); + setPageCounter(index + 1); + } + + let buttons = el.querySelectorAll('.pages button'); + if (!buttons.length) { + buttons = el.querySelectorAll('button'); + } + if (buttons.length === 2) { + buttons[0].addEventListener('click', prevPage); + buttons[1].addEventListener('click', nextPage); + } } function initAccordion(el: HTMLDivElement) { - let items = el.querySelectorAll('.accordion-item'); - - function toggleItem(itemEl) { - items.forEach((item) => { - if (item !== itemEl) item.classList.remove('active'); - }); - itemEl.classList.toggle('active'); - } - - items.forEach((item) => { - let h3 = item.querySelector('h3'); - if (h3) { - h3.addEventListener('click', () => { - toggleItem(item); - }); - } - }); + let items = el.querySelectorAll('.accordion-item'); + + function toggleItem(itemEl) { + items.forEach((item) => { + if (item !== itemEl) item.classList.remove('active'); + }); + itemEl.classList.toggle('active'); + } + + items.forEach((item) => { + let h3 = item.querySelector('h3'); + if (h3) { + h3.addEventListener('click', () => { + toggleItem(item); + }); + } + }); } function initAllCarousels() { - let els = document.querySelectorAll('.carousel'); - els.forEach(initCarousel); + let els = document.querySelectorAll('.carousel'); + els.forEach(initCarousel); - let smallEls = document.querySelectorAll('.smallousel'); - smallEls.forEach(initCarousel); + let smallEls = document.querySelectorAll('.smallousel'); + smallEls.forEach(initCarousel); } function initAllAccordions() { - let els = document.querySelectorAll('.accordion'); - els.forEach(initAccordion); + let els = document.querySelectorAll('.accordion'); + els.forEach(initAccordion); } function initUI() { - initMainMenu(); - initAllCarousels(); - initAllAccordions(); + initMainMenu(); + initAllCarousels(); + initAllAccordions(); } document.addEventListener('DOMContentLoaded', function () { - initUI(); + initUI(); }); /* utils */ function smoothScroll(targetScroll, el) { - const startScroll = el.scrollLeft; - const distance = targetScroll - startScroll; - const startTime = new Date().getTime(); + const startScroll = el.scrollLeft; + const distance = targetScroll - startScroll; + const startTime = new Date().getTime(); - function animate() { - const currentTime = new Date().getTime(); - const timePassed = currentTime - startTime; - const duration = 300; // Animation duration in ms + function animate() { + const currentTime = new Date().getTime(); + const timePassed = currentTime - startTime; + const duration = 300; // Animation duration in ms - // Calculate the easing (you can replace this with other easing functions) - const easing = (t) => t * t; // simple quadratic easing - const progress = Math.min(timePassed / duration, 1); + // Calculate the easing (you can replace this with other easing functions) + const easing = (t) => t * t; // simple quadratic easing + const progress = Math.min(timePassed / duration, 1); - el.scrollLeft = startScroll + distance * easing(progress); + el.scrollLeft = startScroll + distance * easing(progress); - if (progress < 1) { - window.requestAnimationFrame(animate); - } - } + if (progress < 1) { + window.requestAnimationFrame(animate); + } + } - window.requestAnimationFrame(animate); + window.requestAnimationFrame(animate); } diff --git a/cms/app.ts b/cms/app.ts new file mode 100644 index 00000000..49387a6a --- /dev/null +++ b/cms/app.ts @@ -0,0 +1,6 @@ +import { init } from '@sveltia/cms'; +import config from './config'; + +init({ + config, +}); diff --git a/cms/collections.ts b/cms/collections.ts new file mode 100644 index 00000000..0d8efbb1 --- /dev/null +++ b/cms/collections.ts @@ -0,0 +1,3 @@ +import { Collection as ArticlesCollection } from '../layouts/newsroom/collection'; + +export default [ArticlesCollection]; diff --git a/cms/config.ts b/cms/config.ts new file mode 100644 index 00000000..31e6de5b --- /dev/null +++ b/cms/config.ts @@ -0,0 +1,18 @@ +import collections from './collections'; + +export default { + backend: { + name: 'github', + repo: 'DIVD-NL/web-www-v2', + }, + i18n: { + structure: 'multiple_files', + locales: ['en', 'nl'], + default_locale: 'en', + }, + load_config_file: false, + local_backend: true, + media_folder: '/assets/images', + public_folder: '/images', + collections, +}; diff --git a/cms/index.html b/cms/index.html new file mode 100644 index 00000000..003ecbe6 --- /dev/null +++ b/cms/index.html @@ -0,0 +1,11 @@ + + + + + DIVD Static CMS + + + + diff --git a/content/anbi/_index.en.md b/content/anbi/_index.en.md index f4f4378e..63fa54b1 100644 --- a/content/anbi/_index.en.md +++ b/content/anbi/_index.en.md @@ -1,6 +1,7 @@ --- title: ANBI --- + ## ANBI STICHTING DUTCH INSTITUTE FOR VULNERABILITY DISCLOSURE (DIVD) @@ -15,14 +16,14 @@ RSIN: 860456961 KvK: 75957345 -Website: [https://www.divd.nl](https://www.divd.nl/ "https\://www.divd.nl") +Website: [https://www.divd.nl](https://www.divd.nl/ "https://www.divd.nl") **Doel van stichting** \ We streven ernaar de digitale wereld veiliger te maken door kwetsbaarheden die we vinden in digitale systemen te melden aan de mensen die ze kunnen repareren. We hebben een wereldwijd bereik, maar doen het op zijn Hollands: open, eerlijk, samen en gratis. #### **Bestuur** -* [Overzicht bestuursleden](https://www.divd.nl/who-we-are/team/) +- [Overzicht bestuursleden](https://www.divd.nl/who-we-are/team/) **Beloningsbeleid** @@ -30,8 +31,8 @@ Bestuursleden zijn vrijwilligers en krijgen voor hun werkzaamheden geen vergoedi **Documenten** -* [Financieel verslag 2023](/documents/DIVD.financieel.verslag.2023.pdf) -* [Jaarverslag 2023](/documents/DIVD.Annual.Report.2023.pdf) -* [Jaarverslag 2022](/documents/DIVD%20jaarverslag%202022.pdf) -* [Jaarverslag 2021](/documents/DIVD%20jaarverslag%202021.pdf) -* [Standaardformulier ANBI](/documents/Standaardformulier%20ANBI.pdf) \ No newline at end of file +- [Financieel verslag 2023](/documents/DIVD.financieel.verslag.2023.pdf) +- [Jaarverslag 2023](/documents/DIVD.Annual.Report.2023.pdf) +- [Jaarverslag 2022](/documents/DIVD%20jaarverslag%202022.pdf) +- [Jaarverslag 2021](/documents/DIVD%20jaarverslag%202021.pdf) +- [Standaardformulier ANBI](/documents/Standaardformulier%20ANBI.pdf) diff --git a/content/anbi/_index.nl.md b/content/anbi/_index.nl.md index 6b2704aa..1c8cd6ae 100644 --- a/content/anbi/_index.nl.md +++ b/content/anbi/_index.nl.md @@ -1,6 +1,7 @@ --- title: ANBI --- + ## ANBI 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. diff --git a/content/block/index.md b/content/block/index.md index 3d65eaa0..ca03031f 100644 --- a/content/block/index.md +++ b/content/block/index.md @@ -1,3 +1,3 @@ --- headless: true ---- \ No newline at end of file +--- diff --git a/content/contribute/_index.en.md b/content/contribute/_index.en.md index c4b8b8a9..b5203371 100644 --- a/content/contribute/_index.en.md +++ b/content/contribute/_index.en.md @@ -7,13 +7,13 @@ intro: We are a group of volunteers that scout the web for potential cyber secur becomevolunteer: title: Become a volunteer image: /images/1724437526298-1.jpg - Alt tag for image: An illustration of 2 people talking about code, shown by a speakingballoon filled with 010101. + alt: An illustration of 2 people talking about code, shown by a speakingballoon filled with 010101. description: Are you interested in joining our diverse team of ethical hackers, researchers, IT professionals, or legal experts, and learning from the best? Please sign up. alt: Drawing of a group of voluteer hackers becomepartner: title: Become a partner image: /images/DIVD Partnerevent 2024 - 2 (1).png - Alt tag for image: An illustration of 2 people talking and exchanging information + alt: An illustration of 2 people talking and exchanging information description: "As an organization dedicated to serving the entire internet community, we extend our assistance not only to your customers but also to their suppliers. You may perceive us as the volunteer fire brigade: while you protect your own infrastructure, we stand ready to aid your neighbors, thereby indirectly safeguarding your establishment as well." alt: Drawing of a DIVD voluteer shaking the hand of a DIVD partner appreciate: diff --git a/content/contribute/_index.nl.md b/content/contribute/_index.nl.md index bd17eaa8..9bee30dd 100644 --- a/content/contribute/_index.nl.md +++ b/content/contribute/_index.nl.md @@ -5,13 +5,13 @@ intro: Wij zijn een groep vrijwilligers die het web verkennen op potentiële cyb becomevolunteer: title: Vrijwilliger worden image: images/global/becomevolunteer.png - Alt tag for image: Een illustratie van 2 mensen die over code praten, weergegeven door een spreekballon gevuld met 010101. + alt: Een illustratie van 2 mensen die over code praten, weergegeven door een spreekballon gevuld met 010101. description: Heb je interesse om je aan te sluiten bij ons diverse team van ethische hackers, onderzoekers, IT-professionals of juridische experts en te leren van de besten? Meld je nu aan. alt: Tekening van vrijwillige hackers becomepartner: title: Partner worden image: images/global/becomepartner.png - Alt tag for image: Een illustratie van 2 mensen die praten en informatie uitwisselen + alt: Een illustratie van 2 mensen die praten en informatie uitwisselen description: "Als organisatie die zich inzet voor de hele internetcommunity, bieden we niet alleen hulp aan uw klanten, maar ook aan diens leveranciers. U kunt ons beschouwen als de vrijwillige brandweer: terwijl u uw eigen infrastructuur beschermt, staan wij klaar om uw buren te helpen en zo indirect ook uw bedrijf te beschermen." alt: Drawing can een DIVD vrijwilliger die de hand schud van een partner appreciate: diff --git a/content/dictionary/_index.en.md b/content/dictionary/_index.en.md index 5d5769ae..b61d01a1 100644 --- a/content/dictionary/_index.en.md +++ b/content/dictionary/_index.en.md @@ -2,6 +2,7 @@ title: DIVDictionary intro: On this page, the DIVD Dictionary, you can find a clarification of the cyber security words and phrases you can find on our website. The DIVDictionary intends to explain what each of the words specifically means for DIVD. --- + ## Hacking #### **(Ethical) Hacker** @@ -18,7 +19,7 @@ An exploit is a malicious application, piece of code or script that can be used At DIVD, we adhere to the ‘Principle of Proportionality’ and the ‘Principle of Subsidiarity’, as described in our [Code of Conduct](https://www.divd.nl/what-we-do/code-of-conduct/). This means that our research should increase and not decrease the integrity and availability of any online systems. If several means are available to meet the need, we opt for the one that has the least impact on the availability of the systems and services. -#### +#### #### **Case** @@ -45,13 +46,13 @@ Responsible disclosure helps protect users, maintains trust between (DIVD) resea Security.txt is a proposed standard for websites to provide a clear and consistent way for security researchers to report security vulnerabilities. It involves placing a simple text file named security.txt in the well-known location /.well-known/ directory of a website (e.g., [https://example.com/.well-known/security.txt)](https://example.com/.well-known/security.txt)). This file contains contact information and other details that guide researchers on how to responsibly disclose security issues to the organization. Wanna make DIVD’s work easier? Put our [security.txt](https://securitytxt.org/) in the code of your website and our IP 194.5.73.0-255 on your allow list. -#### +#### ## Vulnerabilities #### CVE -CVE stands for "Common Vulnerabilities and Exposures", a [public list](https://cve.mitre.org/cve/search_cve_list.html) of known vulnerabilities in software. DIVD scans the internet for the presence of CVEs. +CVE stands for "Common Vulnerabilities and Exposures", a [public list](https://cve.mitre.org/cve/search_cve_list.html) of known vulnerabilities in software. DIVD scans the internet for the presence of CVEs. #### **High-Risk Vulnerability** diff --git a/content/dictionary/_index.nl.md b/content/dictionary/_index.nl.md index 296a0d7f..2271d5bc 100644 --- a/content/dictionary/_index.nl.md +++ b/content/dictionary/_index.nl.md @@ -5,4 +5,5 @@ intro: |- But what are exactly are (zero-day) vulnerabilities, and why is it so important to find them as soon as possible? Find these (and other) frequently used cyber security definitions on this page. --- + . diff --git a/content/faq/faq-operation-endgame.en.md b/content/faq/faq-operation-endgame.en.md index 73ec3614..e350738e 100644 --- a/content/faq/faq-operation-endgame.en.md +++ b/content/faq/faq-operation-endgame.en.md @@ -10,14 +10,15 @@ intro: >- The FAQ is available in English, Dutch, German, French, and Spanish. - The Spanish translation is AI generated, there might be some translation flaws. + The Spanish translation is AI generated, there might be some translation flaws. button_text: CASE FILE button_url: https://csirt.divd.nl/cases/DIVD-2024-00019/ faqgroups: - heading: English faqs: - title: Is this a scam? - description: "It’s great that you’re skeptical. However, this is legit and + description: + "It’s great that you’re skeptical. However, this is legit and definitely not a scam. This operation is a collaboration between the Dutch National Police, Europol, Digital Trust Center, NCSC and others. We, Dutch Institute of Vulnerability Disclosure (DIVD), are mentioned @@ -25,12 +26,14 @@ faqgroups: Hack. (translation: Check your Hack) FAQ also mentiones DIVD and shares a link back to this casefile." - title: Do you have my password? - description: No, we do not have your password. We may have sent you an email + description: + No, we do not have your password. We may have sent you an email containing a partial password, with only the last four characters visible. This is the only part of your password we possess because the Dutch Police ensured that all passwords were hidden before sharing the data with us. - - description: Yes it is. Under Dutch law and European privacy regulations, we can + - description: + Yes it is. Under Dutch law and European privacy regulations, we can process this data based on a so-called “legitimate interest.”DIVD is a private foundation that operates under a strict code of conduct, with the aim to make the digital world safer. @@ -57,13 +60,15 @@ faqgroups: Deze operatie is een samenwerking tussen de Nederlandse Politie, Europol, het Digital Trust Center, NCSC-NL en anderen. Wij, het Dutch Institute of Vulnerability Disclosure (DIVD), worden genoemd in de persberichten van de Nederlandse Politie en Europol. De [‘Check je Hack' FAQ](https://www.politie.nl/informatie/veel-gestelde-vragen-over-check-je-hack.html) vermeldt ook DIVD en deelt een link naar de case van ons CSIRT. title: "Is dit scam of phishing? " - - description: Nee, we hebben je wachtwoord niet. We hebben je mogelijk een e-mail + - description: + Nee, we hebben je wachtwoord niet. We hebben je mogelijk een e-mail gestuurd met een gedeeltelijk wachtwoord, waarbij alleen de laatste vier tekens zichtbaar zijn. Dit is het enige deel van je wachtwoord dat we bezitten. De Nederlandse Politie heeft alle wachtwoorden gedeeltelijk verborgen voordat ze deze informatie deelden met anderen. title: Hebben jullie mijn wachtwoord? - - title: "Jullie hebben mijn persoonlijke gegevens zonder mijn toestemming, is dat + - title: + "Jullie hebben mijn persoonlijke gegevens zonder mijn toestemming, is dat legaal? " description: "Ja, dat is het. Volgens de Nederlandse wet en de Europese privacyregels mogen wij deze gegevens verwerken op basis van een @@ -71,13 +76,17 @@ faqgroups: opereert onder een strikt gedragscode (zie: [Code of Conduct](https://www.divd.nl/divd-nl-2024/what-we-do/code-of-conduct/\ )), met als doel de digitale wereld veiliger te maken." - - title: "Weten jullie hoe de Nederlandse Politie aan deze informatie is gekomen? + - title: + "Weten jullie hoe de Nederlandse Politie aan deze informatie is gekomen? " - description: Nee, we hebben die informatie niet. We weten dat Operatie Endgame + description: + Nee, we hebben die informatie niet. We weten dat Operatie Endgame informatie bevat van verschillende botnets. - - title: "Gaan jullie de criminelen aanpakken die mijn informatie hebben gestolen? + - title: + "Gaan jullie de criminelen aanpakken die mijn informatie hebben gestolen? " - description: Nee, dat is een taak voor de wetshandhaving. Wij analyseren online + description: + Nee, dat is een taak voor de wetshandhaving. Wij analyseren online bedreigingen, niet de daders. Ook notificeren wij de slachtoffers. Je leest hier meer over in artikel 9 van onze [Code of Conduct.](https://www.divd.nl/divd-nl-2024/what-we-do/code-of-conduct/) @@ -89,7 +98,8 @@ faqgroups: bedrijfsystemen, cloudservices en e-mailaccounts. Dit kan leiden tot diefstal van gevoelige gegevens en mogelijk verdere aanvallen binnen de organisatie. - - title: Als jullie niet in opdracht van overheden of autoriteiten werkt, waarom + - title: + Als jullie niet in opdracht van overheden of autoriteiten werkt, waarom werken jullie dan samen met de politie in deze zaak? description: >- Het handelen op basis van deze dataset is direct in lijn met artikel 3 @@ -101,7 +111,8 @@ faqgroups: We analyseren elke database die we ontvangen, inclusief die van wetshandhaving instanties. We doen dit echter onafhankelijk, zonder enige verplichting of intentie om specifieke informatie in ruil daarvoor te delen. - heading: German - Deutsch faqs: - - description: "Es ist großartig, dass Sie skeptisch sind. Diese Operation ist + - description: + "Es ist großartig, dass Sie skeptisch sind. Diese Operation ist jedoch legitim und definitiv kein Betrug. Diese Operation ist eine Zusammenarbeit zwischen der niederländischen Nationalpolizei, Europol, dem Digital Trust Center, dem NCSC und anderen. Wir, das Dutch @@ -110,37 +121,45 @@ faqgroups: Die FAQ ‘Check je Hack’ (Übersetzung: Überprüfen Sie Ihren Hack) erwähnt auch DIVD und teilt einen Link zu dieser Fallakte." title: Ist das ein Betrug? - - description: Nein, wir haben Ihr Passwort nicht. Wir haben Ihnen möglicherweise + - description: + Nein, wir haben Ihr Passwort nicht. Wir haben Ihnen möglicherweise eine E-Mail mit einem Teil Ihres Passworts geschickt, wobei nur die letzten vier Zeichen sichtbar sind. Dies ist der einzige Teil Ihres Passworts, den wir besitzen, da die niederländische Polizei dafür gesorgt hat, dass alle Passwörter vor dem Teilen der Daten mit uns versteckt wurden. title: Haben Sie mein Passwort? - - description: Ja, das ist es. Nach niederländischem Recht und den europäischen + - description: + Ja, das ist es. Nach niederländischem Recht und den europäischen Datenschutzbestimmungen dürfen wir diese Daten auf der Grundlage eines sogenannten „berechtigten Interesses“ verarbeiten. DIVD ist eine private Stiftung, die nach einem strengen Verhaltenskodex arbeitet, mit dem Ziel, die digitale Welt sicherer zu machen. - title: Sie verarbeiten meine persönlichen Daten ohne meine Zustimmung, ist das + title: + Sie verarbeiten meine persönlichen Daten ohne meine Zustimmung, ist das legal? - - description: "Nein, das werden wir nicht. Das ist eine Angelegenheit für die + - description: + "Nein, das werden wir nicht. Das ist eine Angelegenheit für die Strafverfolgungsbehörden. Laut Artikel 9 unseres Verhaltenskodex: *Wir analysieren Online-Bedrohungen, nicht die Bedrohungsakteure. Wir sind Forscher und dienen nicht den Bedürfnissen von Regierungen oder Strafverfolgungsbehörden.*" - title: Werden Sie die Kriminellen verfolgen, die meine Informationen gestohlen + title: + Werden Sie die Kriminellen verfolgen, die meine Informationen gestohlen haben? - - description: Ein ADFS-Konto (Active Directory Federation Services) ermöglicht + - description: + Ein ADFS-Konto (Active Directory Federation Services) ermöglicht eine einmalige Anmeldung für mehrere Anwendungen. Wenn Kriminelle darauf zugreifen, können sie in Unternehmenssysteme, Cloud-Dienste und E-Mail-Konten eindringen, was zum Diebstahl sensibler Daten und zu weiteren potenziellen Angriffen innerhalb der Organisation führen kann. title: Was ist ein ADFS-Konto und was können Kriminelle damit machen? - - description: Nein, wir kennen keine Einzelheiten, aber wir wissen, dass die + - description: + Nein, wir kennen keine Einzelheiten, aber wir wissen, dass die Operation Endgame Informationen aus mehreren Botnets enthält. - title: Wissen Sie, wie die niederländische Nationalpolizei diese Informationen + title: + Wissen Sie, wie die niederländische Nationalpolizei diese Informationen erhalten hat? - description: >- Das Handeln auf Basis dieses Datensatzes steht direkt im Einklang mit @@ -151,12 +170,14 @@ faqgroups: Wir analysieren jede Datenbank, die wir erhalten, einschließlich der von Strafverfolgungsbehörden. Wir tun dies jedoch unabhängig, ohne jegliche Verpflichtung oder Absicht, spezifische Informationen im Gegenzug weiterzugeben. - title: Wenn Sie „den Bedürfnissen von Regierungen oder Strafverfolgungsbehörden + title: + Wenn Sie „den Bedürfnissen von Regierungen oder Strafverfolgungsbehörden nicht dienen“, warum arbeiten Sie dann in diesem Fall mit der niederländischen Nationalpolizei zusammen? - heading: French - Français faqs: - - description: "C'est bien que vous soyez sceptique. Cependant, ceci est légitime + - description: + "C'est bien que vous soyez sceptique. Cependant, ceci est légitime et définitivement pas une arnaque. Cette opération est une collaboration entre la Police Nationale Néerlandaise, Europol, le Digital Trust Center, le NCSC et d'autres. Nous, Dutch Institute of @@ -166,33 +187,39 @@ faqgroups: le DIVD et partage un lien vers ce dossier." title: Est-ce une arnaque ? - title: Avez-vous mon mot de passe ? - description: Non, nous n'avons pas votre mot de passe. Nous avons peut-être + description: + Non, nous n'avons pas votre mot de passe. Nous avons peut-être envoyé un e-mail contenant un mot de passe partiel, avec seulement les quatre derniers caractères visibles. C'est la seule partie de votre mot de passe que nous possédons parce que la Police Néerlandaise a veillé à ce que tous les mots de passe soient masqués avant de partager les données avec nous. - - description: Oui, c'est légal. Selon la loi néerlandaise et les réglementations + - description: + Oui, c'est légal. Selon la loi néerlandaise et les réglementations européennes en matière de confidentialité, nous pouvons traiter ces données sur la base d'un « intérêt légitime ». Le DIVD est une fondation privée qui opère sous un code de conduite strict, avec pour objectif de rendre le monde numérique plus sûr. - title: Traitez-vous mes données personnelles sans mon consentement, est-ce légal + title: + Traitez-vous mes données personnelles sans mon consentement, est-ce légal ? - - description: "Non, ce n'est pas notre rôle. C'est une affaire pour les forces de + - description: + "Non, ce n'est pas notre rôle. C'est une affaire pour les forces de l'ordre. Selon l'article 9 de notre code de conduite: *Nous analysons les menaces en ligne, pas les acteurs de ces menaces. Nous sommes des chercheurs et ne répondons pas aux besoins des gouvernements ou des forces de l'ordre.*" title: Allez-vous poursuivre les criminels qui ont volé mes informations ? - - description: Un compte ADFS (Active Directory Federation Services) permet une + - description: + Un compte ADFS (Active Directory Federation Services) permet une authentification unique pour plusieurs applications. Si des criminels y accèdent, ils peuvent infiltrer les systèmes d'entreprise, les services cloud et les comptes de messagerie, ce qui peut entraîner le vol de données sensibles et des attaques potentielles supplémentaires au sein de l'organisation. title: Qu'est-ce qu'un compte ADFS et que peuvent faire les criminels avec ? - - description: Non, nous ne connaissons pas les détails, mais nous savons que + - description: + Non, nous ne connaissons pas les détails, mais nous savons que l'Opération Endgame contient des informations provenant de plusieurs botnets. title: Savez-vous comment la police nationale néerlandaise a obtenu ces @@ -205,12 +232,14 @@ faqgroups: Nous analysons chaque base de données que nous recevons, y compris celles des forces de l'ordre. Cependant, nous le faisons de manière indépendante, sans aucune obligation ni intention de partager des informations spécifiques en retour. - title: Si vous « ne servez pas les besoins des gouvernements ou des forces de + title: + Si vous « ne servez pas les besoins des gouvernements ou des forces de l'ordre », pourquoi coopérez-vous avec la police nationale néerlandaise dans cette affaire ? - heading: "Spanish - Español " faqs: - - description: "Es genial que seas escéptico. Sin embargo, esto es legítimo y + - description: + "Es genial que seas escéptico. Sin embargo, esto es legítimo y definitivamente no es una estafa. Esta operación es una colaboración entre la Policía Nacional de los Países Bajos, Europol, el Digital Trust Center, NCSC y otros. Nosotros, el Instituto Neerlandés de @@ -220,35 +249,42 @@ faqgroups: también menciona al DIVD y comparte un enlace a este caso." title: ¿Es esto una estafa? - title: ¿Tienes mi contraseña? - description: No, no tenemos tu contraseña. Es posible que te hayamos enviado un + description: + No, no tenemos tu contraseña. Es posible que te hayamos enviado un correo electrónico con una parte de tu contraseña, con solo los últimos cuatro caracteres visibles. Esta es la única parte de tu contraseña que poseemos porque la Policía Neerlandesa se aseguró de que todas las contraseñas estuvieran ocultas antes de compartir los datos con nosotros. - - description: Sí, lo es. Según la ley neerlandesa y las regulaciones europeas de + - description: + Sí, lo es. Según la ley neerlandesa y las regulaciones europeas de privacidad, podemos procesar estos datos en base a un “interés legítimo”. El DIVD es una fundación privada que opera bajo un estricto código de conducta, con el objetivo de hacer el mundo digital más seguro. - title: ¿Estás procesando mis datos personales sin mi consentimiento, es eso + title: + ¿Estás procesando mis datos personales sin mi consentimiento, es eso legal? - - description: "No, no lo haremos. Eso es una cuestión para las fuerzas del orden. + - description: + "No, no lo haremos. Eso es una cuestión para las fuerzas del orden. Según el artículo 9 de nuestro código de conducta: Analizamos las amenazas en línea, no a los actores de las amenazas. Somos investigadores y no servimos a los intereses de los gobiernos o las fuerzas del orden." title: ¿Vas a perseguir a los criminales que robaron mi información? - title: ¿Qué es una cuenta ADFS y qué pueden hacer los criminales con ella? - description: Una cuenta ADFS (Active Directory Federation Services) permite el + description: + Una cuenta ADFS (Active Directory Federation Services) permite el inicio de sesión único para múltiples aplicaciones. Si los criminales acceden a ella, pueden infiltrarse en sistemas corporativos, servicios en la nube y cuentas de correo electrónico, lo que puede llevar al robo de datos sensibles y a posibles ataques adicionales dentro de la organización. - - description: No, no conocemos los detalles, pero sabemos que la Operación + - description: + No, no conocemos los detalles, pero sabemos que la Operación Endgame contiene información de varios botnets. - title: ¿Sabes cómo obtuvo la información la Policía Nacional de los Países + title: + ¿Sabes cómo obtuvo la información la Policía Nacional de los Países Bajos? - description: >- Actuar sobre este conjunto de datos está directamente en línea con el @@ -258,7 +294,8 @@ faqgroups: Analizamos todas las bases de datos que recibimos, incluidas las de las fuerzas del orden. Sin embargo, lo hacemos de forma independiente, sin ninguna obligación o intención de compartir ninguna información específica a cambio - title: Si "no sirven a los intereses de los gobiernos o las fuerzas del orden", + title: + Si "no sirven a los intereses de los gobiernos o las fuerzas del orden", ¿por qué están cooperando con la Policía Nacional de los Países Bajos en este caso? --- diff --git a/content/faq/new-frequently-asked-questions.en.md b/content/faq/new-frequently-asked-questions.en.md index 19712183..3149c762 100644 --- a/content/faq/new-frequently-asked-questions.en.md +++ b/content/faq/new-frequently-asked-questions.en.md @@ -26,7 +26,8 @@ faqgroups: tincidunt mi nisi accumsan libero. Integer quis erat id ante mattis lobortis. Nam sed sapien et neque malesuada tincidunt in varius massa. - title: Question 2 - description: Proin a tortor ut turpis sodales lacinia sed a orci. Vivamus + description: + Proin a tortor ut turpis sodales lacinia sed a orci. Vivamus facilisis erat tortor, porta lobortis ligula egestas sed. Curabitur id commodo ipsum, sed feugiat nulla. Nulla quis feugiat urna. Suspendisse eget consequat turpis. Morbi commodo dui sed turpis hendrerit, eget @@ -39,7 +40,8 @@ faqgroups: lacinia. - heading: FAQ Group 2 faqs: - - description: Nulla quis leo in lorem tempor rhoncus nec eget sem. Morbi nec diam + - description: + Nulla quis leo in lorem tempor rhoncus nec eget sem. Morbi nec diam ullamcorper, lobortis magna quis, viverra dui. Nullam facilisis accumsan lorem in convallis. Quisque semper consequat metus eu eleifend. Vestibulum in elit quis quam convallis efficitur ut et enim. @@ -48,7 +50,8 @@ faqgroups: risus. Etiam sed mollis est, non pellentesque erat. title: Question 1 - title: Question 2 - description: In hac habitasse platea dictumst. Mauris non tortor blandit, + description: + In hac habitasse platea dictumst. Mauris non tortor blandit, convallis erat id, rutrum risus. Praesent maximus facilisis nisi, eu bibendum ex bibendum non. Aliquam eget libero erat. Phasellus lorem purus, commodo vitae nunc eget, eleifend ultricies sem. Ut pulvinar diff --git a/content/newsroom/articles/_index.en.md b/content/newsroom/articles/_index.en.md index 7c46080f..9af1df98 100644 --- a/content/newsroom/articles/_index.en.md +++ b/content/newsroom/articles/_index.en.md @@ -1,4 +1,4 @@ --- title: "Articles" type: "article" ---- \ No newline at end of file +--- diff --git a/content/newsroom/articles/_index.nl.md b/content/newsroom/articles/_index.nl.md index f2b045c7..50b90453 100644 --- a/content/newsroom/articles/_index.nl.md +++ b/content/newsroom/articles/_index.nl.md @@ -1,4 +1,4 @@ --- title: "Artikelen" type: "article" ---- \ No newline at end of file +--- diff --git a/content/newsroom/articles/article-on-municipalities.en.md b/content/newsroom/articles/article-on-municipalities.en.md index 0f9db373..d2f6c904 100644 --- a/content/newsroom/articles/article-on-municipalities.en.md +++ b/content/newsroom/articles/article-on-municipalities.en.md @@ -6,9 +6,10 @@ author: tag: news intro: Veel gemeenten reageren te traag of niet adequaat genoeg op meldingen over beveiligingslekken. Deze zogenoemde Coordinated Vulnerability Disclosures (CVD meldingen) worden vaak gedaan door ethische hackers die zo het internet veiliger willen maken. Dit proces is de laatste jaren wel verbeterd, maar er blijft nog steeds een wereld te winnen voor de gemeenten. Dat blijkt uit een recent uitgevoerd onderzoek van de Universiteit Twente en Dutch Institute for Vulnerability Disclosure (DIVD) onder 114 Nederlandse gemeenten. image: /images/articles/cybersecurity-freepik-2023-mk.webp -Alt tag for image: "" +alt: "" faq_enabled: false --- + By [Koen van Hove](https://www.divd.nl/who-we-are/team/people/koen-van-hove/) ## Coordinated Vulnerability Disclosures bij gemeenten @@ -31,9 +32,9 @@ De termijn die de Universiteit Twente in haar Coordinated Vulnerability Disclosu {{< /callout >}} -### 2. Kwaliteit van het respons +### 2. Kwaliteit van het respons -Bij **89 gemeenten** werd uiteindelijk bijgehouden of het beveiligingslek werd opgelost. +Bij **89 gemeenten** werd uiteindelijk bijgehouden of het beveiligingslek werd opgelost. {{< callout type="warning" >}} diff --git a/content/newsroom/articles/article-on-municipalities.nl.md b/content/newsroom/articles/article-on-municipalities.nl.md index 4f668c2c..c260375d 100644 --- a/content/newsroom/articles/article-on-municipalities.nl.md +++ b/content/newsroom/articles/article-on-municipalities.nl.md @@ -2,6 +2,7 @@ title: Test artikel date: 2023-10-02T12:58:44.246Z intro: Introductie case -Alt tag for image: "" +alt: "" --- + Dit is de body diff --git a/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.en.md b/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.en.md index 707a3838..1480d3b2 100644 --- a/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.en.md +++ b/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.en.md @@ -4,7 +4,7 @@ date: 2024-07-31T16:43:00+02:00 tag: news intro: 1.5 million files are stored unprotected on the public internet, does this still happen? Unfortunately, yes, it still happens. Despite our familiarity with security policies, controls, and best practices. In this article, you can read how you can secure your AWS S3 buckets and why it is important to do it. image: /images/6583bce8-b9bb-4182-b966-d80ab032b14e.jpg -Alt tag for image: "" +alt: "" case: caseid: "" closed: false @@ -24,6 +24,7 @@ faq: intro: "" url: "" --- + By [Serena de Pater](https://www.divd.nl/who-we-are/team/people/serena-de-pater/) {{< callout type="warning" >}} diff --git a/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.nl.md b/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.nl.md index 15ec5579..400c3e9f 100644 --- a/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.nl.md +++ b/content/newsroom/articles/buck-et-up-secure-your-aws-s3-buckets-now.nl.md @@ -3,6 +3,7 @@ title: Buck-et up! Beveilig nu uw AWS S3 Buckets! date: 2024-07-31T14:28:00.000Z intro: 1,5 miljoen bestanden onbeveiligd opgeslagen op het openbare internet, gebeurt dit nog steeds? Helaas, ja, het gebeurt nog steeds. Ondanks onze bekendheid met beveiligingsbeleid, controles en best practices. In dit artikel lees je hoe je je AWS S3 buckets kunt beveiligen en waarom het belangrijk is om dit te doen. --- + In 2022 ontdekte een groep beveiligingsonderzoekers een verkeerd geconfigureerde Amazon S3-bucket waardoor 3 TB aan gegevens werd blootgelegd. We hebben het hier niet over willekeurige bits en bytes, maar onder die 1,5 miljoen onbeveiligde bestanden bevonden zich gegevens van luchthavenmedewerkers, foto's van ID-kaarten en persoonlijk identificeerbare informatie (PII), waaronder namen, foto's, beroepen en nationale ID-nummers die teruggingen tot ten minste 2018. Andere informatie die kon worden achterhaald was in de vorm van mobiele Android-apps die worden gebruikt door beveiligingspersoneel om te helpen bij verschillende taken, zoals het melden van incidenten. Volgens SafetyDetectives werd de Amazon S3 bucket open en toegankelijk gelaten, zonder verificatieprocedures. In dit artikel lees je hoe je je AWS-buckets kunt beveiligen en waarom het belangrijk is om dat te doen. diff --git a/content/newsroom/articles/case-apache-log4j2.en.md b/content/newsroom/articles/case-apache-log4j2.en.md index 2575bcdf..125d4f5e 100644 --- a/content/newsroom/articles/case-apache-log4j2.en.md +++ b/content/newsroom/articles/case-apache-log4j2.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: Apache reported a remote code execution vulnerability in Apache Log4j2, the vulnerability in the Log framework of Apache makes it possible to misuse the record log information feature. This makes it possible for an attacker to construct special data request packets through this vulnerable component, and ultimately trigger remote code execution. image: /images/DIVD-Lof4J casefile.png -Alt tag for image: "" +alt: "" case: caseid: DIVD-2021-00038 closed: true - link: https://csirt.divd.nl/cases/DIVD-2021-00038/ + link: + label: DIVD-2021-00038 + url: https://csirt.divd.nl/cases/DIVD-2021-00038/ + invertedColors: true + external: false lead: Victor Gevers leadlink: https://www.divd.nl/who-we-are/team/people/victor-gevers/ researchers: diff --git a/content/newsroom/articles/case-apache-log4j2.nl.md b/content/newsroom/articles/case-apache-log4j2.nl.md index cf2896f7..d50eef15 100644 --- a/content/newsroom/articles/case-apache-log4j2.nl.md +++ b/content/newsroom/articles/case-apache-log4j2.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: Apache heeft een kwetsbaarheid gemeld voor het op afstand uitvoeren van code in Apache Log4j2. De kwetsbaarheid in het Log-framework van Apache maakt het mogelijk om misbruik te maken van de functie Record Log Information. Dit maakt het mogelijk voor een aanvaller om speciale dataverzoekpakketten samen te stellen via deze kwetsbare component, en uiteindelijk code-uitvoering op afstand te veroorzaken. image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-atlassian-confluence.en.md b/content/newsroom/articles/case-atlassian-confluence.en.md index ef4ecfd3..12327c0e 100644 --- a/content/newsroom/articles/case-atlassian-confluence.en.md +++ b/content/newsroom/articles/case-atlassian-confluence.en.md @@ -4,11 +4,15 @@ date: 2023-12-18T22:00:00+01:00 tag: case intro: After Veloxity identified a zero-day vulnerability, DIVD, DTC, and NSM cooperated to reach out to notify 18.469 vulnerable ISPs. image: /images/articles/what-do-you-need-to-know-about-atlassian-confluence-rce-vulnerability-1200x675.webp -Alt tag for image: "" +alt: "" case: caseid: 2022-00033 closed: true - link: https://csirt.divd.nl/cases/DIVD-2022-00033/ + link: + label: DIVD-2021-00033 + url: https://csirt.divd.nl/cases/DIVD-2022-00033/ + invertedColors: true + external: false lead: Frank Breedijk leadlink: https://www.divd.nl/who-we-are/team/people/frank-breedijk/ researchers: @@ -20,6 +24,7 @@ case: link: "" faq_enabled: false --- + On May 30th – Memorial Day 2022 – researchers of the Washington DC-based cybersecurity firm [Volexity ](https://www.volexity.com/)started an investigation after one of the customers detected suspicious activity on two internet-facing web servers, that were running Atlassian Confluence Server software. As the Volexity researchers delved deeper into their investigations, they discovered web shells being written to the disk, and upon further analysis, they were able to recreate the exploit and so identified a zero-day vulnerability in the current versions of the Confluence Server and Data Center. This software, used by governments, banks, and critical infrastructure, was under attack. Volexity acted quickly, contacting Atlassian on May 31, 2022, to report the relevant details of their findings. At the time of discovery, this exploit was only used in a very targeted way. diff --git a/content/newsroom/articles/case-atlassian-confluence.nl.md b/content/newsroom/articles/case-atlassian-confluence.nl.md index a73726d8..442faa34 100644 --- a/content/newsroom/articles/case-atlassian-confluence.nl.md +++ b/content/newsroom/articles/case-atlassian-confluence.nl.md @@ -2,11 +2,12 @@ title: "CASE: ATLASSIAN CONFLUENCE" date: 2023-12-18T21:00:49.275Z intro: Nadat Veloxity een zero-day kwetsbaarheid had geïdentificeerd, werkten DIVD, DTC en NSM samen om 18.469 kwetsbare ISP's op de hoogte te stellen. -Alt tag for image: "" +alt: "" case: caseid: 2022-00033 closed: true --- + Op 30 mei - Memorial Day 2022 - startten onderzoekers van het in Washington DC gevestigde cyberbeveiligingsbedrijf Volexity een onderzoek nadat een van de klanten verdachte activiteit had ontdekt op twee webservers die op internet waren gericht en waarop Atlassian Confluence Server-software draaide. Toen de Volexity-onderzoekers dieper in hun onderzoek doken, ontdekten ze dat er webshells naar de schijf werden geschreven. Na verdere analyse waren ze in staat om de exploit na te maken en zo een zero-day kwetsbaarheid te identificeren in de huidige versies van de Confluence Server en het Data Center. Deze software, die wordt gebruikt door overheden, banken en kritieke infrastructuur, werd aangevallen. Volexity handelde snel en nam op 31 mei 2022 contact op met Atlassian om de relevante details van hun bevindingen te melden. Op het moment van ontdekking werd deze exploit slechts zeer gericht gebruikt. diff --git a/content/newsroom/articles/case-connectwise-screenconnect.en.md b/content/newsroom/articles/case-connectwise-screenconnect.en.md deleted file mode 100644 index 5f5701e3..00000000 --- a/content/newsroom/articles/case-connectwise-screenconnect.en.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "CASE: AUTHENTICATION BYPASS & REMOTE CODE EXECUTION IN CONNECTWISE SCREENCONNECT" -date: 2023-10-02T15:03:00+02:00 -tag: case -intro: A critical security issue was recently identified in ConnectWise ScreenConnect. If abused, the flaw may enable an unauthenticated attacker to bypass the authentication and execute remote code or directly impact confidential data or critical systems. -image: /images/articles/connectwise.webp -Alt tag for image: "" -case: - caseid: DIVD-2024-00008 - closed: false - link: https://csirt.divd.nl/cases/DIVD-2024-00008/ - lead: Stan Plasmeijer - leadlink: https://www.divd.nl/who-we-are/team/people/stan-plasmeijer/ - researchers: - - label: Jeroen de Baare - link: https://www.divd.nl/who-we-are/team/people/jeroen-de-baare/ - - label: Barre Dijkstra - link: https://www.divd.nl/who-we-are/team/people/barre-dijkstra/ -faq_enabled: false ---- -## SUMMARY - -A critical security issue was recently identified in ConnectWise ScreenConnect. If abused, the flaw may enable an unauthenticated attacker to bypass the authentication and execute remote code or directly impact confidential data or critical systems. - -## RECOMMENDATIONS - -ConnectWise recommends partners update their ScreenConnect to version 23.9.8. ConnectWise will also provide updated versions of releases 22.4 through 23.9.7 for the critical issue but strongly recommends that partners update to ScreenConnect version 23.9.8. - -## WHAT WE ARE DOING - -DIVD is currently working to identify vulnerable instances and notify the owners of these systems. - -## MORE INFORMATION - -- [ConnectWise ScreenConnect 23.9.8 security fix](https://www.connectwise.com/company/trust/security-bulletins/connectwise-screenconnect-23.9.8) -- [Detection Guidance for ConnectWise CVE-2024-1709](https://www.huntress.com/blog/detection-guidance-for-connectwise-cwe-288-2) -- [CVE-2024-1708](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-1708) -- [CVE-2024-1709](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-1709) diff --git a/content/newsroom/articles/case-connectwise-screenconnect.nl.md b/content/newsroom/articles/case-connectwise-screenconnect.nl.md deleted file mode 100644 index 63a15d57..00000000 --- a/content/newsroom/articles/case-connectwise-screenconnect.nl.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Test case -date: 2023-10-02T13:03:04.852Z -intro: This is a test case -case: - caseid: DIVD-2024-00008 - closed: false - link: https://divd.nl ---- -This case was amazing! diff --git a/content/newsroom/articles/case-exposed-bacnet-devices.en.md b/content/newsroom/articles/case-exposed-bacnet-devices.en.md index 83e599c1..49953a74 100644 --- a/content/newsroom/articles/case-exposed-bacnet-devices.en.md +++ b/content/newsroom/articles/case-exposed-bacnet-devices.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: A DIVD researcher discovered multiple vulnerabilities in SmarterMail. Both vulnerabilities were found within the webmail frontend of SmarterMail. image: /images/articles/smartermail-vulnerability-divd.png -Alt tag for image: "" +alt: "" case: caseid: DIVD-2021-00006 closed: true - link: https://csirt.divd.nl/cases/DIVD-2021-00006/ + link: + label: DIVD-2021-00006 + url: https://csirt.divd.nl/cases/DIVD-2021-00006/ + invertedColors: false + external: true lead: Lennaert Oudshoorn leadlink: https://www.divd.nl/people/Lennaert%20Oudshoorn/ researchers: @@ -21,6 +25,7 @@ case: link: https://www.divd.nl/who-we-are/team/people/wietse-boonstra/ faq_enabled: false --- + DIVD notified SmarterTools Inc. of the following vulnerabilities: - [CVE-2021-43977](https://csirt.divd.nl/cves/CVE-2021-43977) - SmarterTools SmarterMail before 100.0.7803 (May 13, 2021) and 16.x allows XSS. diff --git a/content/newsroom/articles/case-exposed-bacnet-devices.nl.md b/content/newsroom/articles/case-exposed-bacnet-devices.nl.md index 23ae9104..cb355648 100644 --- a/content/newsroom/articles/case-exposed-bacnet-devices.nl.md +++ b/content/newsroom/articles/case-exposed-bacnet-devices.nl.md @@ -7,4 +7,5 @@ case: caseid: DIVD-2022-00005 closed: true --- + CASE: SMARTERMAIL diff --git a/content/newsroom/articles/case-facebook-leak.en.md b/content/newsroom/articles/case-facebook-leak.en.md index 56334cf2..55fd950b 100644 --- a/content/newsroom/articles/case-facebook-leak.en.md +++ b/content/newsroom/articles/case-facebook-leak.en.md @@ -5,7 +5,7 @@ author: [] tag: case intro: On April 4 several news platforms reported personal data of 533 million Facebook users was leaked. This is actually a non-report, but it demonstrates where we draw the boundaries on what we can and cannot do according to our code of conduct. image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-facebook-leak.nl.md b/content/newsroom/articles/case-facebook-leak.nl.md index 1ba729da..fe842f0b 100644 --- a/content/newsroom/articles/case-facebook-leak.nl.md +++ b/content/newsroom/articles/case-facebook-leak.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: Op 4 april meldden verschillende nieuwsplatforms dat persoonlijke gegevens van 533 miljoen Facebook-gebruikers waren uitgelekt. Dit is eigenlijk een niet-rapport, maar het laat zien waar we de grenzen trekken van wat we wel en niet kunnen doen volgens onze gedragscode. image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-ivanti.en.md b/content/newsroom/articles/case-ivanti.en.md index 6610c2b5..8d52c139 100644 --- a/content/newsroom/articles/case-ivanti.en.md +++ b/content/newsroom/articles/case-ivanti.en.md @@ -3,11 +3,15 @@ title: "CASE: Attackers exploit zero day vulnerabilities in Ivanti software, and date: 2024-07-03T21:27:00+02:00 tag: case intro: "An unknown attacker exploited several zero-day vulnerabilities in two Ivanti services: Ivanti EPMM and Avanti Sentry. The DIVD helped notify users of Ivanti software." -Alt tag for image: "" +alt: "" case: caseid: DIVD-2023-00031 closed: false - link: https://csirt.divd.nl/cases/DIVD-2023-00031/ + link: + label: DIVD-2023-00031 + url: https://csirt.divd.nl/cases/DIVD-2023-00031/ + invertedColors: false + external: true lead: Lennaert Oudshoorn leadlink: https://www.divd.nl/who-we-are/team/people/lennaert/ researchers: @@ -21,11 +25,12 @@ faq: intro: "" url: "" --- -On Monday, July 24, 2023, it became clear that the Norwegian government had fallen victim to a cyberattack. The Norwegian Government Security and Service Organisation (DSS) and the Norwegian National Security Authority (NSM) reported that they had been targeted in an attack on an ICT platform used by twelve ministries. And they were not the only victims, as revealed by the story of Tor Bjørsted and Erlend Leiknes, two researchers from the company Memnonic (1). + +On Monday, July 24, 2023, it became clear that the Norwegian government had fallen victim to a cyberattack. The Norwegian Government Security and Service Organisation (DSS) and the Norwegian National Security Authority (NSM) reported that they had been targeted in an attack on an ICT platform used by twelve ministries. And they were not the only victims, as revealed by the story of Tor Bjørsted and Erlend Leiknes, two researchers from the company Memnonic (1). ### Zero-days -Bjørsted and Leiknes could not share the names of other affected entities. +Bjørsted and Leiknes could not share the names of other affected entities. The Norwegian government contacted Memnonic's incident response team. Researchers from Memnonic discovered that an unknown attacker had exploited several zero-day vulnerabilities in two Ivanti services: Ivanti EPMM and Avanti Sentry. @@ -33,13 +38,13 @@ Ivanti is a software company that provides IT management products, including dev Ivanti Endpoint Manager Mobile (Ivanti EPMM) is a software engine for managing mobile devices that enables IT to set policies for mobile devices, applications, and content. With EPMM, an organization can maintain control over mobile devices and their applications within the organization. -Ivanti Sentry is a gateway that manages and encrypts traffic between a company's mobile devices and backend systems. +Ivanti Sentry is a gateway that manages and encrypts traffic between a company's mobile devices and backend systems. -Members of the Memnonic incident response team managed to find two vulnerabilities in Ivanti EPMM and notified Ivanti. +Members of the Memnonic incident response team managed to find two vulnerabilities in Ivanti EPMM and notified Ivanti. On July 23 Ivanti published a patch for the first vulnerability ([CVE 2023-35078](https://nvd.nist.gov/vuln/detail/cve-2023-35078)) and on July 28 a patch for the second vulnerability ([CVE 2023-35081](https://nvd.nist.gov/vuln/detail/CVE-2023-35081)). -CVE-2023-35078 allows an unauthenticated attacker to access the API remotely and, if exploited, enables an unauthorized, remotely accessible (via the internet) actor to potentially access personally identifiable information of users. +CVE-2023-35078 allows an unauthenticated attacker to access the API remotely and, if exploited, enables an unauthorized, remotely accessible (via the internet) actor to potentially access personally identifiable information of users. CVE-2023-35081 is a path traversal vulnerability, which, when combined with CVE-2023-35078, allows code execution on the EPMM server. It appeared that the attacker used the vulnerabilities in conjunction with a third vulnerability in Ivanti Sentry. It took a bit longer to find this third vulnerability (CVE-2023-38035). Eventually, Bjørsted and Leiknes succeeded, and the entire chain was revealed. diff --git a/content/newsroom/articles/case-ivanti.nl.md b/content/newsroom/articles/case-ivanti.nl.md index f457d88a..9051578a 100644 --- a/content/newsroom/articles/case-ivanti.nl.md +++ b/content/newsroom/articles/case-ivanti.nl.md @@ -3,4 +3,5 @@ title: . date: 2024-07-03T19:27:00.000Z intro: . --- + . diff --git a/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.en.md b/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.en.md index 7d80ac9e..3dc0b4c6 100644 --- a/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.en.md +++ b/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: In April 2021 Dutch hackers found a number of vulnerabilities in software used by Kaseya, a business that makes tools for system managers working remotely. This is a translation of a chapter from the book Hackers by Gerard Janssen. This chapter starts after the story of Dutch hacker Victor Gevers discovered that two-factor authentication of Donald Trump’s Twitter account was disabled and guessed his Twitter password, in November 2020. image: "" -Alt tag for image: "" +alt: "" case: caseid: DIVD-2021-00002 closed: true - link: https://csirt.divd.nl/cases/DIVD-2021-00002/ + link: + label: DIVD-2021-00002 + url: https://csirt.divd.nl/cases/DIVD-2021-00002/ + invertedColors: false + external: true lead: Frank Breedijk leadlink: https://www.divd.nl/who-we-are/team/people/frank-breedijk/ researchers: diff --git a/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.nl.md b/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.nl.md index d5551015..fc7534b4 100644 --- a/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.nl.md +++ b/content/newsroom/articles/case-kaseya-vsa-behind-the-scenes.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: xx image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-kaseya.en.md b/content/newsroom/articles/case-kaseya.en.md index eb0c5ba5..3dd15b02 100644 --- a/content/newsroom/articles/case-kaseya.en.md +++ b/content/newsroom/articles/case-kaseya.en.md @@ -6,11 +6,15 @@ author: - /who-we-are/team/people/joost-hendricksen tag: case intro: On March 23, 2021, DIVD volunteer Wietse Boonstra found six zero-day vulnerabilities in IT management software from Kaseya, a Miami-based company. This turned out to be one of the biggest (ransomware) cases in history, a case with a huge impact worldwide. -Alt tag for image: "" +alt: "" case: caseid: DIVD-2021-00002 closed: true - link: https://csirt.divd.nl/cases/DIVD-2021-00002/ + link: + label: DIVD-2021-00002 + url: https://csirt.divd.nl/cases/DIVD-2021-00002/ + invertedColors: false + external: true lead: Frank Breedijk leadlink: https://www.divd.nl/who-we-are/team/people/frank-breedijk/ researchers: diff --git a/content/newsroom/articles/case-kaseya.nl.md b/content/newsroom/articles/case-kaseya.nl.md index 4b9593fb..3a055b15 100644 --- a/content/newsroom/articles/case-kaseya.nl.md +++ b/content/newsroom/articles/case-kaseya.nl.md @@ -5,9 +5,10 @@ author: - /who-we-are/team/people/victor-gevers - /who-we-are/team/people/joost-hendricksen intro: Dit is een test artikel -Alt tag for image: "" +alt: "" case: caseid: DIVD-2021-00002 closed: true --- + The body diff --git a/content/newsroom/articles/case-leaked-phishing-credentials-zoom.en.md b/content/newsroom/articles/case-leaked-phishing-credentials-zoom.en.md index 7e57ede9..95cc1e7e 100644 --- a/content/newsroom/articles/case-leaked-phishing-credentials-zoom.en.md +++ b/content/newsroom/articles/case-leaked-phishing-credentials-zoom.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: At the end of November 2020, criminals conducted a phishing campaign that mimicked Zoom message invites and notifications about mail quarantine. On January 1, 2021, email notifications were sent to the victims of this phishing scheme. In total, 370 emails were distributed. image: /images/DIVD-casefile.png -Alt tag for image: "" +alt: "" case: caseid: DIVD-2020-00013 closed: true - link: https://csirt.divd.nl/cases/DIVD-2020-00013/ + link: + label: DIVD-2020-00013 + url: https://csirt.divd.nl/cases/DIVD-2020-00013/ + invertedColors: false + external: true lead: Frank Breedijk leadlink: https://www.divd.nl/who-we-are/team/people/frank-breedijk/ researchers: diff --git a/content/newsroom/articles/case-leaked-phishing-credentials-zoom.nl.md b/content/newsroom/articles/case-leaked-phishing-credentials-zoom.nl.md index cf85cf1a..018dfe98 100644 --- a/content/newsroom/articles/case-leaked-phishing-credentials-zoom.nl.md +++ b/content/newsroom/articles/case-leaked-phishing-credentials-zoom.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: intro image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.en.md b/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.en.md index 15a3aa51..0bddb9f0 100644 --- a/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.en.md +++ b/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: On March 10, 2020, Microsoft published information about a serious vulnerability in Microsoft’s Server Block Protocol version 3. The vulnerability (CVE-2020-0796) is a remote code execution vulnerability that exists in the way that the Microsoft Server Message Block 3.1.1 (SMBv3) protocol handles certain requests. image: "" -Alt tag for image: "" +alt: "" case: caseid: DIVD-2020-00006 closed: true - link: https://csirt.divd.nl/cases/DIVD-2020-00006/ + link: + label: DIVD-2020-00006 + url: https://csirt.divd.nl/cases/DIVD-2020-00006/ + invertedColors: false + external: true lead: Sander Spierenburg leadlink: "" researchers: diff --git a/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.nl.md b/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.nl.md index e285df82..781ba568 100644 --- a/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.nl.md +++ b/content/newsroom/articles/case-smbv3-server-compression-transform-header-memory-corruption.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: intro image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-solarwinds-orion.en.md b/content/newsroom/articles/case-solarwinds-orion.en.md index 59cc0002..f03a4dfa 100644 --- a/content/newsroom/articles/case-solarwinds-orion.en.md +++ b/content/newsroom/articles/case-solarwinds-orion.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: On December 8, 2020, FireEye announced that the company had fallen victim to a hack. DIVD scanned for Supernova and found around 700 vulnerable Solarwinds Orion systems facing the internet, worldwide, including systems of foreign defense units and satellite communication. Eight of these systems used IP addresses from the Netherlands. image: "" -Alt tag for image: "" +alt: "" case: caseid: DIVD-2020-00014 closed: true - link: https://csirt.divd.nl/cases/DIVD-2020-00014/ + link: + label: DIVD-2020-00014 + url: https://csirt.divd.nl/cases/DIVD-2020-00014/ + invertedColors: false + external: true lead: Barry van Kampen leadlink: https://www.divd.nl/who-we-are/team/people/barry-van-kampen/ researchers: diff --git a/content/newsroom/articles/case-solarwinds-orion.nl.md b/content/newsroom/articles/case-solarwinds-orion.nl.md index 034032a6..bc83e546 100644 --- a/content/newsroom/articles/case-solarwinds-orion.nl.md +++ b/content/newsroom/articles/case-solarwinds-orion.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: xx image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/case-teamcity.en.md b/content/newsroom/articles/case-teamcity.en.md index 2f179656..3bcd0da8 100644 --- a/content/newsroom/articles/case-teamcity.en.md +++ b/content/newsroom/articles/case-teamcity.en.md @@ -1,22 +1,24 @@ --- title: "CASE : AUTHENTICATION BYPASS IN JETBRAINS TEAMCITY" -date: 2023-10-05T21:18:58.544Z +date: 2023-10-05T21:18:00+02:00 tag: case -intro: A critical security issue was recently identified in TeamCity - On-Premises. If abused, the flaw may enable an unauthenticated attacker with - HTTP(S) access to a TeamCity server to perform bypass authentication checks - and gain administrative control of that TeamCity server. +intro: A critical security issue was recently identified in TeamCity On-Premises. If abused, the flaw may enable an unauthenticated attacker with HTTP(S) access to a TeamCity server to perform bypass authentication checks and gain administrative control of that TeamCity server. image: /images/articles/divd-2024-00009-authentication-bypass-in-jetbrains-teamcity.png -image_alt: Picture of a bug (insect) +alt: "" case: caseid: DIVD-2024-00009 - link: https://csirt.divd.nl/cases/DIVD-2024-00009/ + link: + label: DIVD-2024-00009 + url: https://csirt.divd.nl/cases/DIVD-2024-00009/ + invertedColors: false + external: true lead: Alwin Warringa leadlink: https://www.divd.nl/people/Alwin%20Warringa/ researchers: - label: Alwin Warringa link: https://www.divd.nl/people/Alwin%20Warringa/ - label: Gerben van der Wel +image_alt: Picture of a bug (insect) --- ## SUMMARY @@ -32,6 +34,6 @@ DIVD is currently working to identify vulnerable instances and notify the owners ## MORE INFORMATION -* [JetBrains Advisory](https://blog.jetbrains.com/teamcity/2024/03/additional-critical-security-issues-affecting-teamcity-on-premises-cve-2024-27198-and-cve-2024-27199-update-to-2023-11-4-now/) -* [CVE-2024-27198](https://nvd.nist.gov/vuln/detail/CVE-2024-27198) -* [CVE-2024-27199](https://nvd.nist.gov/vuln/detail/CVE-2024-27199) \ No newline at end of file +- [JetBrains Advisory](https://blog.jetbrains.com/teamcity/2024/03/additional-critical-security-issues-affecting-teamcity-on-premises-cve-2024-27198-and-cve-2024-27199-update-to-2023-11-4-now/) +- [CVE-2024-27198](https://nvd.nist.gov/vuln/detail/CVE-2024-27198) +- [CVE-2024-27199](https://nvd.nist.gov/vuln/detail/CVE-2024-27199) diff --git a/content/newsroom/articles/case-teamcity.nl.md b/content/newsroom/articles/case-teamcity.nl.md index c68cfb31..3c5c5999 100644 --- a/content/newsroom/articles/case-teamcity.nl.md +++ b/content/newsroom/articles/case-teamcity.nl.md @@ -3,6 +3,7 @@ title: Test article with image date: 2023-10-05T21:18:58.567Z intro: This is the introduction text of the article image: /images/articles/agracadavra.png +alt: "" image_alt: Picture of a bug (insect) --- -The body of the article \ No newline at end of file +The body of the article diff --git a/content/newsroom/articles/case-with-new-properties.en.md b/content/newsroom/articles/case-with-new-properties.en.md deleted file mode 100644 index 1a0606bd..00000000 --- a/content/newsroom/articles/case-with-new-properties.en.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "CASE: EXPOSED BACNET DEVICES" -date: 2023-12-19T13:42:20.205Z -author: [] -tag: case -intro: During the Log4J crisis, researchers uncovered BACnet devices with open - ports. Upon further investigation, more devices have been found running the - BACnet protocol. -image: /images/articles/bacnet-exposed-devies-divd.png -Alt tag for image: "" -case: - caseid: 2022-00005 - link: https://csirt.divd.nl/cases/DIVD-2022-00005/ - lead: Ruben Uithol - leadlink: "" - researchers: - - label: Arthur Miron - link: "" - - label: Patrick Hulshof - closed: true ---- -BACnet, or Building Automation and Control Networks, is a widely adopted communication protocol designed for building automation and control systems. Established as an international standard by the American Society of Heating, Refrigerating, and Air-Conditioning Engineers (ASHRAE), BACnet facilitates communication and interoperability between devices and systems used in areas such as heating, ventilation, air-conditioning (HVAC), lighting, access, and fire detection. It is employed worldwide in commercial, industrial, and residential buildings to ensure effective and efficient building management. - -These systems might be at risk of unauthorized access or manipulation by threat actors. Communication can be unencrypted and without proper authentication mechanisms, making it potentially vulnerable to interception or tampering. An exposed BACnet port also increases the attack surface of the Siemens systems, potentially allowing attackers to gain access to other parts of the network and causing further damage. - -The unintended exposure of BACnet ports poses potential security threats and may open the door to unauthorized access to essential building infrastructure. In our initial investigation, we used Shodan to explore BACnet-port 47808. The search revealed a total of 29,736 systems were exposed. Following this, we conducted a scan and found 12,572 vulnerable BACnet systems. The respective owners of these systems were promptly notified and provided with strategic advice to restrict access to their BACnet controllers. diff --git a/content/newsroom/articles/case-with-new-properties.nl.md b/content/newsroom/articles/case-with-new-properties.nl.md deleted file mode 100644 index fc1660d5..00000000 --- a/content/newsroom/articles/case-with-new-properties.nl.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Case with new properties -date: 2023-12-19T13:42:20.212Z -author: [] -intro: This is the introduction -Alt tag for image: Gate to enlightenment -case: - caseid: 2022-00005 - link: https://case.divd.nl/123 - lead: Banana - leadlink: https://banana.nl - researchers: - - label: Pear - link: https://pear.nl - - label: Lemon - closed: true ---- -This is the body of the article - -With some markup for **bold** and *italic* - -### And a header - -> and a quote - -Dont forget a [link](http://pear.nl) diff --git a/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.en.md b/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.en.md index 99cbcaf5..c9011e16 100644 --- a/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.en.md +++ b/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.en.md @@ -5,11 +5,15 @@ author: [] tag: case intro: DIVD researchers have discovered and, in collaboration with the vendor, disclosed six new zero-day vulnerabilities in Enphase IQ Gateway devices. image: /images/image (1).png -Alt tag for image: "" +alt: "" case: caseid: DIVD-2024-00011 closed: false - link: https://csirt.divd.nl/cases/DIVD-2024-00011/ + link: + label: DIVD-2024-00011 + url: https://csirt.divd.nl/cases/DIVD-2024-00011/ + invertedColors: false + external: true lead: Frank Breedijk leadlink: https://www.divd.nl/who-we-are/team/people/frank-breedijk/ researchers: @@ -25,16 +29,17 @@ case: faq_enabled: false faq: null --- + **The Hague, Netherlands – Aug 12, 2024** by [Serena de Pater](https://www.divd.nl/who-we-are/team/people/serena-de-pater/) and [Marieke Smits](https://www.divd.nl/who-we-are/team/people/marieke-smits/) ## About the case -DIVD researchers have discovered and, in collaboration with the vendor, disclosed **six new zero-day vulnerabilities** in [Enphase IQ Gateway devices](https://enphase.com/cybersecurity/advisories/ensa-2024-6?_gl=1*ut63dx*_up*MQ..*_ga*MTU3MzcwMTgxMC4xNzIzMzY5ODY2*_ga_0L7F5QSJ7V*MTcyMzM2OTg2NS4xLjAuMTcyMzM2OTg2NS4wLjAuMA..). This investigation was conducted by [Wietse Boonstra](https://www.divd.nl/who-we-are/team/people/wietse-boonstra/) and [Hidde Smit](https://www.divd.nl/who-we-are/team/people/hidde-smit/), both researchers at DIVD, under case [DIVD-2024-00011](https://csirt.divd.nl/DIVD-2024-00011).  +DIVD researchers have discovered and, in collaboration with the vendor, disclosed **six new zero-day vulnerabilities** in [Enphase IQ Gateway devices](https://enphase.com/cybersecurity/advisories/ensa-2024-6?_gl=1*ut63dx*_up*MQ..*_ga*MTU3MzcwMTgxMC4xNzIzMzY5ODY2*_ga_0L7F5QSJ7V*MTcyMzM2OTg2NS4xLjAuMTcyMzM2OTg2NS4wLjAuMA..). This investigation was conducted by [Wietse Boonstra](https://www.divd.nl/who-we-are/team/people/wietse-boonstra/) and [Hidde Smit](https://www.divd.nl/who-we-are/team/people/hidde-smit/), both researchers at DIVD, under case [DIVD-2024-00011](https://csirt.divd.nl/DIVD-2024-00011). Additionally, DIVD has independently assigned CVE IDs (Common Vulnerabilities and Exposure IDs). This highlights DIVD's role as a CVE Numbering Authority (CNA), which distinguishes it from other similar organisations. -The six vulnerabilities were reported to Enphase by the DIVD team, and Enphase has addressed them in their next release, which they are currently rolling out to their customers. DIVD is working with Enphase to identify vulnerable and exposed Envoy IQ Gateways globally to assist with the patching process.  +The six vulnerabilities were reported to Enphase by the DIVD team, and Enphase has addressed them in their next release, which they are currently rolling out to their customers. DIVD is working with Enphase to identify vulnerable and exposed Envoy IQ Gateways globally to assist with the patching process. ## Impact  @@ -44,15 +49,15 @@ Combining the first three of the six vulnerabilities enables unauthenticated att The energy sector is crucial to our daily lives, yet we're seeing a concerning rise in vulnerabilities, especially with the rapid energy transition. As new technologies like smart grids and IoT devices are integrated, the sector's exposure to risks increases. This surge in vulnerabilities likely stems from the fast-paced innovation that often outstrips security measures. Given the sector's importance, it's vital to prioritize cybersecurity to safeguard against these growing threats. -In 2022, DIVD researcher [Jelle Ursem](https://www.divd.nl/who-we-are/team/people/jelle-ursem/) found a GitHub repository that contained [SolarMan's Super Admin account login details](https://csirt.divd.nl/cases/DIVD-2022-00009/). These were visible to anyone who visited the page and could have allowed cybercriminals to manage around 1 million solar panel inverters globally, which thankfully did not happen due to responsible disclosure.  +In 2022, DIVD researcher [Jelle Ursem](https://www.divd.nl/who-we-are/team/people/jelle-ursem/) found a GitHub repository that contained [SolarMan's Super Admin account login details](https://csirt.divd.nl/cases/DIVD-2022-00009/). These were visible to anyone who visited the page and could have allowed cybercriminals to manage around 1 million solar panel inverters globally, which thankfully did not happen due to responsible disclosure. -> *“At DIVD, we sincerely hope that preventive actions are taken to address vulnerabilities and weaknesses before any disaster occurs. We already found multiple vulnerabilities at charge points and their backends, which we reported. And according to [a research on the impact of a hack on the charging infrastructure by Berenschot](https://www.agendalaadinfrastructuur.nl/ondersteuning+gemeenten/documenten+en+links/documenten+in+bibliotheek/handlerdownloadfiles.ashx?idnv=2135552) a blackout would cost us at least multiple billions of euros each day in the Netherlands”.  - [Harm van den Brink](https://www.divd.nl/who-we-are/team/people/harm-van-den-brink/) (Researcher Energy)*  +> _“At DIVD, we sincerely hope that preventive actions are taken to address vulnerabilities and weaknesses before any disaster occurs. We already found multiple vulnerabilities at charge points and their backends, which we reported. And according to [a research on the impact of a hack on the charging infrastructure by Berenschot](https://www.agendalaadinfrastructuur.nl/ondersteuning+gemeenten/documenten+en+links/documenten+in+bibliotheek/handlerdownloadfiles.ashx?idnv=2135552) a blackout would cost us at least multiple billions of euros each day in the Netherlands”.  - [Harm van den Brink](https://www.divd.nl/who-we-are/team/people/harm-van-den-brink/) (Researcher Energy)_ On Monday, August 12, 2024, the Dutch Enterprise Agency (Rijksdienst voor Ondernemend Nederland) published a [report](https://topsectorenergie.nl/kennisbank/maatregelen-cyberveiligheid-zonpv/) about an investigation into vulnerabilities in Dutch Solar Power systems, performed by [Secura](https://www.secura.com/) on behalf of the Netherlands Enterprise Agency, at the request of and in collaboration with the Top Sector Energy. Lastly, on Wednesday, August 7th, another report was published by Bitdefender listing vulnerabilities in solar farms in the U.S. -> *“[Hypponen's law](https://blog.f-secure.com/nl/de-wet-van-hypponen-als-het-smart-het-kwetsbaar/) also seems to apply to the energy transition: If it is "smart" it is vulnerable. So far, every solar power or charging station system that was investigated by DIVD contains some kind of serious vulnerability. DIVD is actively seeking publicity with these cases because in addition to a technical problem, a public concern is now emerging.“* *-[ Frank Breedijk](https://www.divd.nl/who-we-are/team/people/frank-breedijk/) (CSIRT Manager).* +> _“[Hypponen's law](https://blog.f-secure.com/nl/de-wet-van-hypponen-als-het-smart-het-kwetsbaar/) also seems to apply to the energy transition: If it is "smart" it is vulnerable. So far, every solar power or charging station system that was investigated by DIVD contains some kind of serious vulnerability. DIVD is actively seeking publicity with these cases because in addition to a technical problem, a public concern is now emerging.“_ _-[ Frank Breedijk](https://www.divd.nl/who-we-are/team/people/frank-breedijk/) (CSIRT Manager)._ If you would like to contribute to DIVD’s mission, your donations are more than welcome. You can also [sign up](https://www.divd.nl/contribute/volunteers/) as a volunteer and offer your time and skills here. @@ -62,7 +67,8 @@ Make sure to [follow](https://www.linkedin.com/company/divd-nl/?) us on LinkedIn - [Casefile DIVD-2024-00011](https://csirt.divd.nl/DIVD-2024-00011) - [Security advisory from Enphase](https://enphase.com/cybersecurity/advisories/ensa-2024-6?_gl=1*ut63dx*_up*MQ..*_ga*MTU3MzcwMTgxMC4xNzIzMzY5ODY2*_ga_0L7F5QSJ7V*MTcyMzM2OTg2NS4xLjAuMTcyMzM2OTg2NS4wLjAuMA..) -- [Secura; Scenario’s en maatregelen voor cyberweerbare zonnestroominstallaties](https://topsectorenergie.nl/nl/kennisbank/maatregelen-cyberveiligheid-zonpv/) (NL) +- [Secura; Scenario’s en maatregelen voor cyberweerbare zonnestroominstallaties](https://topsectorenergie.nl/nl/kennisbank/maatregelen-cyberveiligheid-zonpv/) + (NL) - [Bitdefender report](https://www.bitdefender.com/blog/labs/60-hurts-per-second-how-we-got-access-to-enough-solar-power-to-run-the-united-states/) - [Follow the Money](https://www.ftm.nl/artikelen/hacker-kan-stekker-uit-zonnepanelen-trekken-en-stroomnet-platleggen);[ Nederlandse hacker kon 4 miljoen zonnepaneelsystemen in 150 landen overnemen](https://www.ftm.nl/artikelen/hacker-kan-stekker-uit-zonnepanelen-trekken-en-stroomnet-platleggen) -- [EenVandaag](https://eenvandaag.avrotros.nl/): Demonstration of the vulnerabilities in action, episode is released on the 13th of August at 18:15 CET. +- [EenVandaag](https://eenvandaag.avrotros.nl/): Demonstration of the vulnerabilities in action, episode is released on the 13th of August at 18:15 CET. diff --git a/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.nl.md b/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.nl.md index aa5edbab..49022b1e 100644 --- a/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.nl.md +++ b/content/newsroom/articles/divd-responsibly-discloses-six-new-zero-day-vulnerabilities-to-vendor.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: . image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/how-to-secure-your-blob-storage-container.en.md b/content/newsroom/articles/how-to-secure-your-blob-storage-container.en.md index 5115dff9..02d1a1f1 100644 --- a/content/newsroom/articles/how-to-secure-your-blob-storage-container.en.md +++ b/content/newsroom/articles/how-to-secure-your-blob-storage-container.en.md @@ -5,7 +5,7 @@ author: [] tag: news intro: Services such as Amazon S3 Buckets and Azure Blob Storage offer the convenience of storing data which is accessible by various users and services simultaneously. However, misconfiguration of any of these storage services can expose your organization to several risks and consequences. image: /images/OIG2.jpeg -Alt tag for image: "" +alt: "" case: caseid: "" closed: false diff --git a/content/newsroom/articles/how-to-secure-your-blob-storage-container.nl.md b/content/newsroom/articles/how-to-secure-your-blob-storage-container.nl.md index 65ab644b..88e51cb5 100644 --- a/content/newsroom/articles/how-to-secure-your-blob-storage-container.nl.md +++ b/content/newsroom/articles/how-to-secure-your-blob-storage-container.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: Diensten zoals Azure Blob Storage bieden het gemak van het opslaan van gegevens die tegelijkertijd toegankelijk zijn voor verschillende gebruikers en diensten. Een verkeerde configuratie van een van deze opslagdiensten kan je organisatie echter blootstellen aan verschillende risico's en gevolgen. image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.en.md b/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.en.md index 6bf4e67d..479bc7ae 100644 --- a/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.en.md +++ b/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.en.md @@ -5,7 +5,7 @@ author: [] tag: news intro: On our website, you might have found a page called ‘how we deal with leaked credentials’ or spotted the case ‘DIVD-2020-00013 Leaked phishing credentials’. Does this mean that our volunteers send out phishing emails and leak the obtained credentials of innocent victims? Of course not! image: /images/2024-11-19 15_05_56-DIVD & Leaked Credentials - Google Docs.png -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.nl.md b/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.nl.md index ba147964..9fb2e43f 100644 --- a/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.nl.md +++ b/content/newsroom/articles/leaked-credentials-what-we-do-to-keep-you-safe.nl.md @@ -1,15 +1,16 @@ --- title: "Leaked credentials: What we do to keep you safe" -date: "" +date: 2024-11-19T16:01:00+01:00 author: [] tag: "" intro: On our website, you might have found a page called ‘how we deal with leaked credentials’ or spotted the case ‘DIVD-2020-00013 Leaked phishing credentials’. Does this mean that our volunteers send out phishing emails and leak the obtained credentials of innocent victims? Of course not! image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null --- + **Nov 19, 2024** by [Serena de Pater](https://www.divd.nl/who-we-are/team/people/serena-de-pater/) ### What are leaked credentials? @@ -28,7 +29,7 @@ No, of course not! Our mission is to make the digital world safer by reporting v At the end of November 2021, cybercriminals engaged in a phishing campaign posing as Zoom. If a victim fell for this scam and entered their personal credentials, those credentials got compromised. -While investigating this phishing campaign, a partner organization discovered that the compromised usernames and passwords were stored in improperly secured directories, unintentionally exposing them to public access. This meant that not only the criminals but anyone could access the credentials. The leaked credentials were downloaded from the internet. After connecting and collaborating with our partners, our CSIRT received the Dutch part (386 accounts) of the harvested credentials, so that we could inform potential victims.  +While investigating this phishing campaign, a partner organization discovered that the compromised usernames and passwords were stored in improperly secured directories, unintentionally exposing them to public access. This meant that not only the criminals but anyone could access the credentials. The leaked credentials were downloaded from the internet. After connecting and collaborating with our partners, our CSIRT received the Dutch part (386 accounts) of the harvested credentials, so that we could inform potential victims. {{< /callout >}} @@ -38,7 +39,7 @@ Leaked credentials come into our possession through trusted sources, such as tip ### What do we do with leaked credentials? -Our priority is to ensure the data is handled responsibly, minimizing harm while protecting individual privacy. When a breach involves a small number of accounts (fewer than two million), we [directly inform affected individuals](https://www.divd.nl/warningemail/). +Our priority is to ensure the data is handled responsibly, minimizing harm while protecting individual privacy. When a breach involves a small number of accounts (fewer than two million), we [directly inform affected individuals](https://www.divd.nl/warningemail/). For larger breaches, we create two types of summaries: @@ -59,7 +60,7 @@ We are also mindful of human rights concerns. When working with government entit Yes, leaked credentials represent a significant cybersecurity vulnerability. Like unpatched software vulnerabilities (CVEs), leaked credentials can be exploited by criminals. These breaches often lead to unauthorized access, data theft, or other forms of cyberattacks. -As volunteers, we have taken it upon ourselves to inform victims of cybercrime—not only those with vulnerable systems but also those whose credentials have been leaked online. Would you like to read more about how we deal with leaked credentials? Please visit our [CSIRT Page](https://csirt.divd.nl/credentials/).  +As volunteers, we have taken it upon ourselves to inform victims of cybercrime—not only those with vulnerable systems but also those whose credentials have been leaked online. Would you like to read more about how we deal with leaked credentials? Please visit our [CSIRT Page](https://csirt.divd.nl/credentials/). ### Cases involving leaked credentials diff --git a/content/newsroom/articles/maintain-recognition-of-divd-academy-for-vulnerable-students.en.md b/content/newsroom/articles/maintain-recognition-of-divd-academy-for-vulnerable-students.en.md index 51ee20fd..ed7dfe3f 100644 --- a/content/newsroom/articles/maintain-recognition-of-divd-academy-for-vulnerable-students.en.md +++ b/content/newsroom/articles/maintain-recognition-of-divd-academy-for-vulnerable-students.en.md @@ -9,4 +9,5 @@ faq_enabled: false faq: title: faq --- + On 3 June, we sent a letter from the DIVD Academy to outgoing minister Mariëlle Paul about the SBB's planned withdrawal of our recognition from 1 July 2024. This decision will have major consequences for VMBO, MBO, LWT students and students with disabilities, who are already struggling to find internships. The DIVD Academy selflessly offers these young people a platform to increase their knowledge and skills and develop into responsible citizens. Withdrawing our recognition is heartless and socially unwise. We urge the minister to suspend this withdrawal so that our students can complete their planned placements. Please support us and help these young people find a promising future! [Click here!](https://petities.nl/petitions/behoud-de-erkenning-van-divd-academy-voor-kwetsbare-studenten?locale=nl) diff --git a/content/newsroom/articles/online-test-article.en.md b/content/newsroom/articles/online-test-article.en.md index e51eec93..cff071fe 100644 --- a/content/newsroom/articles/online-test-article.en.md +++ b/content/newsroom/articles/online-test-article.en.md @@ -4,11 +4,15 @@ date: 2023-10-21T23:24:00+02:00 tag: case intro: In cooperation with DIVD, NCSC-NL and several EU govcerts, 14,986 global vulnerable hosts were found and notified. image: /images/articles/divd-2023-00007-global-vmware-esxi-ransomware-attack.png -Alt tag for image: "" +alt: "" case: caseid: DIVD-2023-00007 closed: true - link: https://csirt.divd.nl/cases/DIVD-2023-00007/ + link: + label: DIVD-2023-00007 + url: https://csirt.divd.nl/cases/DIVD-2023-00007/ + invertedColors: false + external: true lead: Ralph Horn leadlink: https://www.divd.nl/who-we-are/team/people/ralph-horn/ researchers: @@ -21,6 +25,7 @@ case: faq_enabled: false image_alt: Picture of the entrance to a mine --- + On February 3rd, DIVD became aware of a global ransomware attack that targeted vulnerable VMware ESXi servers, specifically those susceptible to **CVE-2021-21974.** In response, DIVD conducted a scan of ESXi servers accessible via the internet and notified users, urging them to patch their systems to prevent potential exploitation. VMware ESXi is a type 1 hypervisor that is part of VMware’s larger vSphere suite. It provides a platform for virtualizing servers and allows for the running of multiple operating systems on a single physical server. As a bare-metal hypervisor, ESXi is directly installed on the server hardware, providing an efficient way to manage and partition hardware resources like CPU, memory, storage, and networking among multiple virtual machines (VMs). ESXi includes features such as VMotion, which enables live migration of running VMs from one physical server to another with no downtime, and High Availability, which allows for automatic VM restart on other available servers in case of hardware failure. ESXi also provides security features, including VM encryption, and secure boot. CVE-2021-21974 is a vulnerability in OpenSSL as used in ESXi. OpenSSL is an open standard network protocol that enables dynamic discovery and communication with network services in LANs and WANs. The vulnerability in the protocol is a heap overflow vulnerability. A malicious actor who resides within the same network segment as ESXi and has access to TDP or UDP port 427, may be able to trigger the heap-overflow vulnerability in the OpenSLP service, which could result in remote code execution. The versions of ESXi that are vulnerable to this issue are 7.0 before ESXi70U1c-17325551, 6.7 before ESXi670-202102401-SG, and 6.5 before ESXi650-202102101-SG. diff --git a/content/newsroom/articles/online-test-article.nl.md b/content/newsroom/articles/online-test-article.nl.md index 47b20c43..759ba561 100644 --- a/content/newsroom/articles/online-test-article.nl.md +++ b/content/newsroom/articles/online-test-article.nl.md @@ -8,4 +8,5 @@ case: closed: true image_alt: Foto van de ingang van een mijn --- + The body of the article diff --git a/content/newsroom/articles/operation-endgame-divd-2024-00019.en.md b/content/newsroom/articles/operation-endgame-divd-2024-00019.en.md index 143c25da..a9fb7703 100644 --- a/content/newsroom/articles/operation-endgame-divd-2024-00019.en.md +++ b/content/newsroom/articles/operation-endgame-divd-2024-00019.en.md @@ -1,53 +1,45 @@ --- title: OPERATION ENDGAME DIVD-2024-00019 -date: 2024-05-29T15:19:00.000Z +date: 2024-05-29T15:19:00+02:00 tag: case -intro: As part of Operation Endgame the Dutch Police and Europol have - infiltrated a number of botnets. During this infiltration they obtained data - about the victims of these botnets. DIVD is providing victim notification for - civilians. +intro: As part of Operation Endgame the Dutch Police and Europol have infiltrated a number of botnets. During this infiltration they obtained data about the victims of these botnets. DIVD is providing victim notification for civilians. image: /images/articles/divd-operation-endgame.png +alt: "" case: caseid: DIVD-2024-00019 - link: https://csirt.divd.nl/cases/DIVD-2024-00019 + closed: false + link: + label: asdf + url: / + invertedColors: true + external: false lead: Frank Breedijk + leadlink: "" researchers: - label: Frank Breedijk + link: "" - label: Lennaert Oudshoorn + link: "" - label: Ralph Horn + link: "" - label: Max van der Horst + link: "" - label: Marieke Smits + link: "" faq_enabled: false faq: title: Frequently Asked Questions faqgroups: - faqs: - - description: "It’s great that you’re skeptical. However, **this is legit and - definitely not a scam.** This operation is a collaboration between - the Dutch National Police, Europol, Digital Trust Center, NCSC and - others. We, Dutch Institute of Vulnerability Disclosure (DIVD), are - mentioned in the press releases from the Dutch Police and Europol. - The ‘Check je Hack. (translation: Check your Hack) FAQ also - mentiones DIVD and shares a link back to this casefile." - title: "Is this a scam? " + - description: "It’s great that you’re skeptical. However, **this is legit and definitely not a scam.** This operation is a collaboration between the Dutch National Police, Europol, Digital Trust Center, NCSC and others. We, Dutch Institute of Vulnerability Disclosure (DIVD), are mentioned in the press releases from the Dutch Police and Europol. The ‘Check je Hack. (translation: Check your Hack) FAQ also mentiones DIVD and shares a link back to this casefile." + title: Is this a scam? - title: Do you have my password? - description: No, we do not have your password. We may have sent you an email - containing a partial password, with only the last four characters - visible. This is the only part of your password we possess because - the Dutch Police ensured that all passwords were hidden before - sharing the data with us. + description: No, we do not have your password. We may have sent you an email containing a partial password, with only the last four characters visible. This is the only part of your password we possess because the Dutch Police ensured that all passwords were hidden before sharing the data with us. - title: You are processing my personal data without my consent, is that legal? - description: Yes it is.Under Dutch law and European privacy regulations, we can - process this data based on a so-called “legitimate interest.”DIVD is - a private foundation that operates under a strict [code of - conduct](https://www.divd.nl/what-we-do/code-of-conduct/), with the - aim to make the digital world safer. + description: Yes it is.Under Dutch law and European privacy regulations, we can process this data based on a so-called “legitimate interest.”DIVD is a private foundation that operates under a strict [code of conduct](https://www.divd.nl/what-we-do/code-of-conduct/), with the aim to make the digital world safer. url: https://www.divd.nl/faq/faq-operation-endgame/ - intro: >- - More than 16 million victims worldwide have received a notification email. - It's understandable that there are questions, so we are sharing the most - frequently asked questions with you. - + intro: |- + More than 16 million victims worldwide have received a notification email. It's understandable that there are questions, so we are sharing the most frequently asked questions with you. The FAQ is available in English, Dutch, German, French, and Spanish. --- @@ -55,7 +47,7 @@ As part of Operation Endgame the Dutch Police and Europol have infiltrated a num This data has been shared with us and various other parties like [Have I Been Pwned](https://haveibeenpwned.com/), [Spam House](https://spamhouse.org), [](https://spamhouse.org)[Project No More Leaks,](https://www.politie.nl/onderwerpen/no-more-leaks.html)[ ](https://www.politie.nl/onderwerpen/no-more-leaks.html)[the (Dutch) NCSC](https://ncsc.nl), [CSIRT-DSP](https://csirtdsp.nl/) and [Digital Trust Center ](https://www.digitaltrustcenter.nl/). -The data we have received consists of the following data sets:
 +The data we have received consists of the following data sets: 1. Email credentials, either SMTP or IMAP credentials 2. ADFS credentials consisting of AD-domain and login credentials diff --git a/content/newsroom/articles/operation-endgame-divd-2024-00019.nl.md b/content/newsroom/articles/operation-endgame-divd-2024-00019.nl.md index a59396b2..634146ab 100644 --- a/content/newsroom/articles/operation-endgame-divd-2024-00019.nl.md +++ b/content/newsroom/articles/operation-endgame-divd-2024-00019.nl.md @@ -1,3 +1,38 @@ --- +title: OPERATION ENDGAME DIVD-2024-00019 date: 2024-05-30T06:19:00.000Z +intro: As part of Operation Endgame the Dutch Police and Europol have infiltrated a number of botnets. During this infiltration they obtained data about the victims of these botnets. DIVD is providing victim notification for civilians. +alt: "" --- +As part of Operation Endgame the Dutch Police and Europol have infiltrated a number of botnets, including at least Smokeloader, cedId, Pikabot, SystemBC, and Bumblebee. During this infiltration they obtained data about the victims of these botnets. DIVD is providing victim notification for civilians. + +This data has been shared with us and various other parties like [Have I Been Pwned](https://haveibeenpwned.com/), [Spam House](https://spamhouse.org), [](https://spamhouse.org)[Project No More Leaks,](https://www.politie.nl/onderwerpen/no-more-leaks.html)[ ](https://www.politie.nl/onderwerpen/no-more-leaks.html)[the (Dutch) NCSC](https://ncsc.nl), [CSIRT-DSP](https://csirtdsp.nl/) and [Digital Trust Center ](https://www.digitaltrustcenter.nl/). + +The data we have received consists of the following data sets: + +1. Email credentials, either SMTP or IMAP credentials +2. ADFS credentials consisting of AD-domain and login credentials +3. Unlabelled individual (email) account credentials. + +\ +**RECOMMENDATIONS** + +If you received a notification from us, members of your organisation or your customers had their password stolen or system infected by a botnet. Detailed recommendations are found here: [https://csirt.divd.nl/cases/DIVD-2024-00019 ](https://csirt.divd.nl/cases/DIVD-2024-00019) + +\ +**WHAT YOU CAN DO** + +What you can do depends on who you are and the type of data the police found.To keep this main case page brief, we have created separate pages with recommendations for your situation. + +Check our CSIRT website case here: + +\ +**WHAT WE ARE DOING** + +We have received the discovered data from the police, and are sending out notification to individuals and organizations that have fallen victim to compromise. To effectively do this, we are in close cooperation with the Dutch National Police as well as the NCSC, CSIRT-DSP and DTC. + +**PRESS RELEASES** + +Press release Dutch Nationale Police: + +Press release Europol: diff --git a/content/newsroom/articles/over-1-million-notifications.en.md b/content/newsroom/articles/over-1-million-notifications.en.md index b662f8db..9cd27dfa 100644 --- a/content/newsroom/articles/over-1-million-notifications.en.md +++ b/content/newsroom/articles/over-1-million-notifications.en.md @@ -5,7 +5,7 @@ author: [] tag: news intro: DIVD aims to make the digital world safer by reporting vulnerabilities we find in digital systems to those who can fix them. While the existence of a vulnerability is not something to celebrate, thanks to the hard work of skilled volunteers working for DIVD, we have been able to notify vulnerable organizations of at least 1 million compromised IP addresses. image: /images/B2B-Isometric-Illustration.jpg -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/over-1-million-notifications.nl.md b/content/newsroom/articles/over-1-million-notifications.nl.md index ca1caeb7..a6871c39 100644 --- a/content/newsroom/articles/over-1-million-notifications.nl.md +++ b/content/newsroom/articles/over-1-million-notifications.nl.md @@ -5,7 +5,7 @@ author: [] tag: "" intro: DIVD kondigt met trots aan dat we in totaal meer dan 1M meldingen hebben verstuurd naar kwetsbare organisaties en leveranciers! ✨🎉 image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/newsroom/articles/proudest-work.en.md b/content/newsroom/articles/proudest-work.en.md index cbf627c2..521b634d 100644 --- a/content/newsroom/articles/proudest-work.en.md +++ b/content/newsroom/articles/proudest-work.en.md @@ -1,17 +1,19 @@ --- title: "NEWS: INGE BRYAN NIEUWE BESTUURSVOORZITTER DIVD" -date: 2023-11-25T18:19:40.931Z +date: 2023-11-25T18:19:00+01:00 tag: news -intro: Met trots en plezier maken we bekend dat Inge Bryan de nieuwe - bestuursvoorzitter is van het Dutch Institute for Vulnerability Disclosure. Ze - neemt deze rol over van Astrid Oosenbrug. Astrid legt de voorzittershamer neer - om zich meer te gaan richten op de ontwikkeling van de DIVD Academy. +intro: Met trots en plezier maken we bekend dat Inge Bryan de nieuwe bestuursvoorzitter is van het Dutch Institute for Vulnerability Disclosure. Ze neemt deze rol over van Astrid Oosenbrug. Astrid legt de voorzittershamer neer om zich meer te gaan richten op de ontwikkeling van de DIVD Academy. image: /images/articles/divd-partnerevent-2023-21.jpg -image_alt: Picture of a bug (insect) +alt: "" case: + caseid: "" closed: true + lead: "" + leadlink: "" researchers: - label: Max van Der Horst + link: / +image_alt: Picture of a bug (insect) --- Met trots en plezier maken we bekend dat [Inge Bryan](https://www.linkedin.com/in/inge-bryan/) de nieuwe bestuursvoorzitter is van [het Dutch Institute for Vulnerability Disclosure](https://www.divd.nl/). Ze neemt deze rol over van [Astrid Oosenbrug](https://www.linkedin.com/in/astridoosenbrug/). Astrid legt de voorzittershamer neer om zich meer te gaan richten op de ontwikkeling van de [DIVD Academy](https://divd.academy/). @@ -19,4 +21,4 @@ Inge Bryan is een leading lady in de wereld van CyberSecurity. Ze maakte carriè [Chris van ’t Hof](https://www.linkedin.com/in/chris-van-t-hof-312609/), directeur DIVD is enthousiast met de komst van de nieuwe voorzitter. “Inge is een begrip in CyberSecurity en we zijn dan ook heel erg blij met haar komst naar ons instituut. Ze heeft de kennis en kunde in huis om DIVD weer een stap verder te brengen. Ik kijk er naar uit om samen met haar en onze hackers Nederland nog digitaal veiliger te maken.” -Inge Bryan zegt vereerd te zijn met de benoeming. “Ik beschouw DIVD als een cruciale schakel in de digitale veiligheid van ons land en een bonte verzameling van fantastische mensen. Ik voel mij vereerd dat ik hiervan deel mag uit maken.” De voorzittershamer is overdragen op dinsdag 26 september tijdens een partnerbijeenkomst van DIVD. \ No newline at end of file +Inge Bryan zegt vereerd te zijn met de benoeming. “Ik beschouw DIVD als een cruciale schakel in de digitale veiligheid van ons land en een bonte verzameling van fantastische mensen. Ik voel mij vereerd dat ik hiervan deel mag uit maken.” De voorzittershamer is overdragen op dinsdag 26 september tijdens een partnerbijeenkomst van DIVD. diff --git a/content/newsroom/articles/proudest-work.nl.md b/content/newsroom/articles/proudest-work.nl.md index 9273d0c4..9f1fd4c8 100644 --- a/content/newsroom/articles/proudest-work.nl.md +++ b/content/newsroom/articles/proudest-work.nl.md @@ -4,8 +4,9 @@ date: 2023-11-25T18:19:40.938Z tag: case intro: intro proudest work image: /images/articles/agracadavra.png -image_alt: Picture of a bug (insect) +alt: "" case: closed: true +image_alt: Picture of a bug (insect) --- Body of proudest work diff --git "a/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.en.md" "b/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.en.md" index 081c6b6f..17f80d7d 100644 --- "a/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.en.md" +++ "b/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.en.md" @@ -5,11 +5,12 @@ author: [] tag: news intro: We’re excited to welcome our partners to a special evening marking our 5th anniversary. image: /images/DIVD Partnerevent 2024.png -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null --- + **The Hague, Netherlands – Sep 1, 2024** by [Serena de Pater](https://www.divd.nl/who-we-are/team/people/serena-de-pater/) and [Marieke Smits](https://www.divd.nl/who-we-are/team/people/marieke-smits/) ## Our Fifth Anniversary! @@ -20,10 +21,10 @@ We’re excited to welcome our partners to a special evening marking our 5th ann This is a tribute to our partners (we like to call you our friends)! Together, let's continue to build a network that makes us stronger and keeps our most critical and vulnerable systems safe! -## Questions? +## Questions? Contact us via [partner@divd.nl](mailto:partner@divd.nl). -If you would like to contribute to DIVD's mission, your donations are more than welcome. You can also [sign up](https://www.divd.nl/contribute/volunteers/) as a volunteer and offer your time and skills here. +If you would like to contribute to DIVD's mission, your donations are more than welcome. You can also [sign up](https://www.divd.nl/contribute/volunteers/) as a volunteer and offer your time and skills here. Make sure to [follow](https://www.linkedin.com/company/divd-nl/?) us on LinkedIn and [X](https://x.com/DIVDnl) (formerly known as Twitter) and take notice of every important update. diff --git "a/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.nl.md" "b/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.nl.md" index 294894a2..1ecfc3c1 100644 --- "a/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.nl.md" +++ "b/content/newsroom/articles/\360\235\220\222\360\235\220\232\360\235\220\257\360\235\220\236-\360\235\220\255\360\235\220\241\360\235\220\236-\360\235\220\203\360\235\220\232\360\235\220\255\360\235\220\236-\360\235\220\204\360\235\220\261\360\235\220\234\360\235\220\245\360\235\220\256\360\235\220\254\360\235\220\242\360\235\220\257\360\235\220\236-\360\235\220\204\360\235\220\257\360\235\220\236\360\235\220\247\360\235\220\255-\360\235\220\237\360\235\220\250\360\235\220\253-\360\235\220\217\360\235\220\232\360\235\220\253\360\235\220\255\360\235\220\247\360\235\220\236\360\235\220\253\360\235\220\254.nl.md" @@ -5,7 +5,7 @@ author: [] tag: "" intro: We’re excited to welcome our partners to a special evening marking our 5th anniversary. image: "" -Alt tag for image: "" +alt: "" case: null faq_enabled: false faq: null diff --git a/content/privacy/_index.en.md b/content/privacy/_index.en.md index 85c0e694..a0ff073a 100644 --- a/content/privacy/_index.en.md +++ b/content/privacy/_index.en.md @@ -1,6 +1,7 @@ --- title: Privacy --- + ## Privacy Policy This page lists our publicly available documents focussing on policies and visions. @@ -52,18 +53,18 @@ DIVD also processes personal data for the following purposes: DIVD does not use automated decision-making. -## How Long Does DIVD Store Personal Data? +## How Long Does DIVD Store Personal Data? DIVD does not store personal data longer than is strictly necessary to achieve the purposes for which it was collected. DIVD uses the following retention periods for information: ### Information - Financial information (for the tax authorities) 7 years -- Results of investigations - maximum 3 years * -- Results of reports - maximum 3 years * -- E-mail communication 10 years * +- Results of investigations - maximum 3 years \* +- Results of reports - maximum 3 years \* +- E-mail communication 10 years \* -*\* This can change on request from a data subject.* +_\* This can change on request from a data subject._ ## Does DIVD Share Personal Data With Third Parties? @@ -91,7 +92,7 @@ For more information about these parties, please refer to the statements on thei You have the right to view, correct or delete your personal data held by DIVD. For those cases where DIVD processes data with the permission of the person to whom this data relates, this person has the right to withdraw your consent to the data processing or to object to the processing of his personal data by DIVD and has the right to data portability. -You can send a request for inspection, correction, deletion or data transfer of your personal data or a request for cancellation of your consent or objection to the processing of your personal data to Privacy@DIVD.nl. To ensure that the request for access has been made by you, DIVD may ask you to enclose a (privacy-friendly) copy of your proof of identity with the request. Make your passport photo, MRZ (machine readable zone, the strip with numbers at the bottom of the passport), passport number and citizen service number (BSN) black in this copy. This is to protect your privacy. If your request relates to IP addresses or domain names, you must also sufficiently demonstrate that these IP addresses and/or domain names are indeed your personal data. DIVD will respond to your request within twenty working days. DIVD would also like to point out that you have the option of submitting a complaint to the national supervisory authority, the Dutch Data Protection Authority. This can be done via the following link: [https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons](https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons "https\://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons") +You can send a request for inspection, correction, deletion or data transfer of your personal data or a request for cancellation of your consent or objection to the processing of your personal data to Privacy@DIVD.nl. To ensure that the request for access has been made by you, DIVD may ask you to enclose a (privacy-friendly) copy of your proof of identity with the request. Make your passport photo, MRZ (machine readable zone, the strip with numbers at the bottom of the passport), passport number and citizen service number (BSN) black in this copy. This is to protect your privacy. If your request relates to IP addresses or domain names, you must also sufficiently demonstrate that these IP addresses and/or domain names are indeed your personal data. DIVD will respond to your request within twenty working days. DIVD would also like to point out that you have the option of submitting a complaint to the national supervisory authority, the Dutch Data Protection Authority. This can be done via the following link: [https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons](https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons "https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons") Your copy of your proof of identity will be destroyed as soon as your request has been processed. Unless otherwise indicated, the e-mails of the request are kept for a normal period. diff --git a/content/privacy/_index.nl.md b/content/privacy/_index.nl.md index c4d2d41c..3dcc3686 100644 --- a/content/privacy/_index.nl.md +++ b/content/privacy/_index.nl.md @@ -1,6 +1,7 @@ --- title: Privacy --- + ## Privacy 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. diff --git a/content/search/_index.en.md b/content/search/_index.en.md index cff2be14..30545fb4 100644 --- a/content/search/_index.en.md +++ b/content/search/_index.en.md @@ -1,5 +1,5 @@ --- title: Search outputs: -- json ---- \ No newline at end of file + - json +--- diff --git a/content/search/_index.nl.md b/content/search/_index.nl.md index b8e5a0d4..6f7af813 100644 --- a/content/search/_index.nl.md +++ b/content/search/_index.nl.md @@ -1,5 +1,5 @@ --- title: Zoeken outputs: -- json ---- \ No newline at end of file + - json +--- diff --git a/content/security/_index.en.md b/content/security/_index.en.md index 6582515b..fa771e01 100644 --- a/content/security/_index.en.md +++ b/content/security/_index.en.md @@ -1,6 +1,7 @@ --- title: Responsible Disclosure --- + ## **General** At DIVD the security of our systems is a top priority. No matter how much effort we put into system security, there might be vulnerabilities present. If you discover a vulnerability, we would like to know about it so we can take steps to address it. We would like to ask you to help us protect our systems. @@ -79,26 +80,26 @@ Destroy or corrupt, or attempt to destroy or corrupt, any data or information th Our following assets are explicitly in scope, if you find a vulnerability in a system you believe belongs to us but is not listed here we will review this on a case-by-case basis. -- divd.nl -- divd.academy -- as50559.com -- as50559.nl -- as50559.org -- haveyoubeenpwned.nl -- divd.network -- divdfonds.nl -- divd.fund -- csirt.global -- divd.charity -- divd.club -- divd.space -- divd.community -- cyber-wear.nl -- divd.today -- divd.global -- divd.family -- divd.org -- divd.observer +- divd.nl +- divd.academy +- as50559.com +- as50559.nl +- as50559.org +- haveyoubeenpwned.nl +- divd.network +- divdfonds.nl +- divd.fund +- csirt.global +- divd.charity +- divd.club +- divd.space +- divd.community +- cyber-wear.nl +- divd.today +- divd.global +- divd.family +- divd.org +- divd.observer ## **Out of Scope** diff --git a/content/security/_index.nl.md b/content/security/_index.nl.md index c879d98b..0ee0cda4 100644 --- a/content/security/_index.nl.md +++ b/content/security/_index.nl.md @@ -1,6 +1,7 @@ --- title: Coordinated Vulnerability Disclosure --- + ## Coordinated Vulnerability Disclosure 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. diff --git a/content/testimonials/_index.en.md b/content/testimonials/_index.en.md index 30614c6b..aecc58ed 100644 --- a/content/testimonials/_index.en.md +++ b/content/testimonials/_index.en.md @@ -9,7 +9,7 @@ testimonials: Over time we’ve come to realize that they actually secure our society. And that’s exactly - what DIVD does: they secure our society.” + what DIVD does: they secure our society.” image: /images/testimonials/mikkohypponen_2013x-embed.jpg - name: Dave Maasland role: CEO ESET Netherlands diff --git a/content/testimonials/_index.nl.md b/content/testimonials/_index.nl.md index 3e85242c..00a572ed 100644 --- a/content/testimonials/_index.nl.md +++ b/content/testimonials/_index.nl.md @@ -12,7 +12,7 @@ testimonials: Origineel in het Engels: “We used to think that the work of computer security experts is to secure computers. Over time we’ve come to realize that they actually secure our society. And that’s exactly - what DIVD does: they secure our society.” + what DIVD does: they secure our society.” image: /images/testimonials/mikkohypponen_2013x-embed.jpg - name: Dave Maasland role: CEO ESET Netherlands diff --git a/content/toc/_index.en.md b/content/toc/_index.en.md index 8049ef3a..41bad1ac 100644 --- a/content/toc/_index.en.md +++ b/content/toc/_index.en.md @@ -1,8 +1,9 @@ --- title: Terms and Conditions --- + ## Terms and conditions 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. 2. As we work on sensitive data, gathered without informed consent, we established this Code of Conduct to provide an ethical base for the work we do. This code can also be used by other researchers working on what is currently referred to as responsible disclosure, or coordinated vulnerability disclosure. -3. In our research projects we, for example: \ No newline at end of file +3. In our research projects we, for example: diff --git a/content/toc/_index.nl.md b/content/toc/_index.nl.md index 8049ef3a..41bad1ac 100644 --- a/content/toc/_index.nl.md +++ b/content/toc/_index.nl.md @@ -1,8 +1,9 @@ --- title: Terms and Conditions --- + ## Terms and conditions 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. 2. As we work on sensitive data, gathered without informed consent, we established this Code of Conduct to provide an ethical base for the work we do. This code can also be used by other researchers working on what is currently referred to as responsible disclosure, or coordinated vulnerability disclosure. -3. In our research projects we, for example: \ No newline at end of file +3. In our research projects we, for example: diff --git a/content/what-we-do/code-of-conduct/_index.en.md b/content/what-we-do/code-of-conduct/_index.en.md index 0e1076fb..fec110ab 100644 --- a/content/what-we-do/code-of-conduct/_index.en.md +++ b/content/what-we-do/code-of-conduct/_index.en.md @@ -2,21 +2,24 @@ type: codeofconduct title: Code of Conduct --- + ## CODE OF CONDUCT 2.1 1. DIVD is a Dutch research institute that works with volunteers who aim to make the digital world safer by searching the internet for vulnerabilities and reporting the findings to those who can fix these vulnerabilities. 2. As we work on sensitive data, gathered without informed consent, we established this Code of Conduct to provide an ethical base for the work we do. This code can also be used by other researchers working on what is currently referred to as responsible disclosure, or coordinated vulnerability disclosure. 3. In our research projects we, for example: - * Scan the internet for vulnerabilities, mostly Common Vulnerabilities and Exposures (CVEs), and report our findings and possible solutions to the owners of these systems. - * Analyse online systems for new vulnerabilities (zero-days), report our findings to the makers and try to help them out in fixing the vulnerabilities. - * Analyse databases with leaked credentials and report to the organisations or people who are compromised to take appropriate measures. - * Work with trusted partners to extend our reach and notify as many organisations and people as possible + - Scan the internet for vulnerabilities, mostly Common Vulnerabilities and Exposures (CVEs), and report our findings and possible solutions to the owners of these systems. + - Analyse online systems for new vulnerabilities (zero-days), report our findings to the makers and try to help them out in fixing the vulnerabilities. + - Analyse databases with leaked credentials and report to the organisations or people who are compromised to take appropriate measures. + - Work with trusted partners to extend our reach and notify as many organisations and people as possible + 4. We are aware that we operate at the edges of what is legally allowed, so we proceed by these three criteria commonly used in court cases on vulnerability disclosures: - * Societal need: we do vulnerability disclosure to prevent online damage to as many internet users as possible and don’t serve any particular financial, political or individual interests. - * Principle of Proportionality: we serve this need with appropriate means. Our research should increase and not decrease the integrity and availability of online systems. - * Principle of Subsidiarity: if several means are available to meet the need, we opt for the one which has the least impact. + - Societal need: we do vulnerability disclosure to prevent online damage to as many internet users as possible and don’t serve any particular financial, political or individual interests. + - Principle of Proportionality: we serve this need with appropriate means. Our research should increase and not decrease the integrity and availability of online systems. + - Principle of Subsidiarity: if several means are available to meet the need, we opt for the one which has the least impact. + 5. We validate our findings to prevent reporting false positives or miss false negatives and sometimes need to verify if a vulnerability is actually present. We use custom-made scripts based on publicly available proof of concepts or non-weaponized exploit code and take good care that we don’t damage systems, download too much personal data, or create backdoors. 6. Our findings typically consist of lists with several to millions of IP addresses, the type of vulnerability found, contact information, and metadata (e.g. timestamps, scripts, researchers working on the data). This is sensitive data, so we take all precautions necessary to protect the confidentiality of this data. 7. We disclose zero-day vulnerabilities to the vendor first, then request CVE numbers and negotiate a reasonable time span for disclosing it to our Trusted Information Sharing Partners and the broader public. Ideally, the disclosure is preceded by a patch. If a vendor is obviously slow in providing the patch and it is likely others may discover and abuse the vulnerability, we may consider disclosure to warn potential victims and advise them on mitigation measures. @@ -30,4 +33,4 @@ title: Code of Conduct ## MORE INFO: -Is it legit to exchange lists of IP addresses together with vulnerabilities? The short answer is: Yes, according to Dutch law we can. The more elaborate answer you will find in this Liability Impact Assessment, prepared by Privacy Management Partners (in Dutch). [Click here to download](/documents/LIA_abuse_informatie_v1.1.pdf) (Dutch) \ No newline at end of file +Is it legit to exchange lists of IP addresses together with vulnerabilities? The short answer is: Yes, according to Dutch law we can. The more elaborate answer you will find in this Liability Impact Assessment, prepared by Privacy Management Partners (in Dutch). [Click here to download](/documents/LIA_abuse_informatie_v1.1.pdf) (Dutch) diff --git a/content/what-we-do/code-of-conduct/_index.nl.md b/content/what-we-do/code-of-conduct/_index.nl.md index 24ba505d..ce9f28fc 100644 --- a/content/what-we-do/code-of-conduct/_index.nl.md +++ b/content/what-we-do/code-of-conduct/_index.nl.md @@ -2,6 +2,7 @@ type: codeofconduct title: Code of Conduct --- + # Hello world -code of conduct NL \ No newline at end of file +code of conduct NL diff --git a/content/what-we-do/code-of-ethics/_index.en.md b/content/what-we-do/code-of-ethics/_index.en.md index aa277647..9ea5113f 100644 --- a/content/what-we-do/code-of-ethics/_index.en.md +++ b/content/what-we-do/code-of-ethics/_index.en.md @@ -2,6 +2,7 @@ type: codeofethics title: Code of Ethics --- + #### **Preamble** This Code of Ethics guides the ethical conduct of all members of the Dutch Institute for Vulnerability Disclosure (DIVD). It outlines the principles and standards all members must uphold in their professional activities. @@ -21,11 +22,11 @@ This Code of Ethics guides the ethical conduct of all members of the Dutch Insti 3. **Professional Competence**: Maintain and enhance professional knowledge and skills to provide high-quality services. 4. **Honest Communication**: We communicate truthfully and accurately in all professional matters, and conduct all our activities honestly and ethically. 5. **Ethical Decision-Making**: Make decisions based on moral and honorable principles and sound judgment. -6. **Mutual Respect**: Diversity is our strength. We respect and celebrate neurodiversity and individual differences in cultural, gender, sexual, religious, and philosophical orientations.  +6. **Mutual Respect**: Diversity is our strength. We respect and celebrate neurodiversity and individual differences in cultural, gender, sexual, religious, and philosophical orientations. #### **3. Responsibilities to Stakeholders** -1. **Collaboration:** Share knowledge and experience with the concerned parties while upholding the principles of integrity and confidentiality.   +1. **Collaboration:** Share knowledge and experience with the concerned parties while upholding the principles of integrity and confidentiality. 2. **Partners**: We act in the best interests of the organizations we report to, providing services with competence, diligence, and care. We live up to the expectations we raise among the partners we collaborate with and/or sponsor. 3. **Volunteers**: Foster a collaborative and respectful work environment, supporting and mentoring peers. 4. **Organizations**: Uphold the policies and values of employers while maintaining professional integrity. diff --git a/content/what-we-do/code-of-ethics/_index.nl.md b/content/what-we-do/code-of-ethics/_index.nl.md index 6b38fa72..0f0511b0 100644 --- a/content/what-we-do/code-of-ethics/_index.nl.md +++ b/content/what-we-do/code-of-ethics/_index.nl.md @@ -2,6 +2,7 @@ type: codeofethics title: Code of Ethics --- + # Hello world code of ethics NL diff --git a/content/who-we-are/team/_index.en.md b/content/who-we-are/team/_index.en.md index ea5ac9c9..75cdd2c3 100644 --- a/content/who-we-are/team/_index.en.md +++ b/content/who-we-are/team/_index.en.md @@ -1,53 +1,244 @@ --- title: The Team opener: Meet our Team -intro: |- - We are very grateful and proud of all our team members who voluntarily dedicate their free time to this great cause. Our team is a diverse mix of individuals, with some just starting out in cybersecurity and others who have been in the field for a long time. +intro: >- + We are very grateful and proud of all our team members who voluntarily + dedicate their free time to this great cause. Our team is a diverse mix of + individuals, with some just starting out in cybersecurity and others who have + been in the field for a long time. - Not every member has a profile picture or is listed in a team. Privacy matters! + + Not every member has a profile picture or is listed in a team. Privacy + + matters! in_progress: false teams: - title: Board - description: At the head of DIVD is our board, providing guidance, direction, and making strategic decisions. The day-to-day operations are managed by a team that includes our director, department heads, the CISO, and the crisis manager. - members: [] + description: >- + At the head of DIVD is our board, providing guidance, direction, and + making strategic decisions. The day-to-day operations are managed by a + team that includes our director, department heads, the CISO, and the + crisis manager. + members: + - /who-we-are/team/people/eleonora-petridou + - /who-we-are/team/people/inge-bryan + - /who-we-are/team/people/joost-hendricksen + - /who-we-are/team/people/marinus-kuivenhoven + - /who-we-are/team/people/shairesh-algoe + - /who-we-are/team/people/tom-van-dael - title: Management - description: "" + description: '' + members: + - /who-we-are/team/people/winko + - /who-we-are/team/people/casper-kuijper + - /who-we-are/team/people/chris-van-t-hof + - /who-we-are/team/people/frank-breedijk + - /who-we-are/team/people/h-meuris + - /who-we-are/team/people/lennaert + - /who-we-are/team/people/marieke-smits + - /who-we-are/team/people/peter-baard + - /who-we-are/team/people/roxane + - /who-we-are/team/people/victor-gevers-1 - title: DIVD-CSIRT - description: The CSIRT (Computer Security Incident Response Team) is the beating heart of DIVD, responsible for scanning the Internet and notifying system owners of the vulnerabilities found in their systems. Within the CSIRT, the team of CNA Administrators is responsible for DIVD's role as CVE Number Authority (NA). They can independently assign CVE numbers and update CVE records for vulnerabilities within our scope. - members: [] + description: >- + The CSIRT (Computer Security Incident Response Team) is the beating heart + of DIVD, responsible for scanning the Internet and notifying system owners + of the vulnerabilities found in their systems. Within the CSIRT, the team + of CNA Administrators is responsible for DIVD's role as CVE Number + Authority (NA). They can independently assign CVE numbers and update CVE + records for vulnerabilities within our scope. + members: + - /who-we-are/team/people/alwin-warringa + - /who-we-are/team/people/axel + - /who-we-are/team/people/barre-dijkstra + - /who-we-are/team/people/boaz-braaksma + - /who-we-are/team/people/finn-van-der-knaap + - /who-we-are/team/people/h-meuris + - /who-we-are/team/people/jelle-ursem + - /who-we-are/team/people/kaj-koole + - /who-we-are/team/people/lennaert + - /who-we-are/team/people/max-van-der-horst + - /who-we-are/team/people/oscar-vlugt + - /who-we-are/team/people/stan-plasmeijer + - /who-we-are/team/people/victor-pasman + - /who-we-are/team/people/wessel-baltus + - /who-we-are/team/people/wessel-van-der-goot - title: Research & Development - description: DIVD has two teams of highly skilled security researchers who voluntarily seek out and report vulnerabilities alongside their regular jobs. DIVD ensures they adhere to our Code of Conduct while providing a buffer against journalists, lawyers, and recruiters. Their research not only uncovers security trends and raises awareness but also helps develop new methods for vulnerability research and disclosure. Although you may never meet our researchers, you can hope they are inspecting your systems right now, catching issues before the bad guys do.... - members: [] + description: >- + DIVD has two teams of highly skilled security researchers who voluntarily + seek out and report vulnerabilities alongside their regular jobs. DIVD + ensures they adhere to our Code of Conduct while providing a buffer + against journalists, lawyers, and recruiters. Their research not only + uncovers security trends and raises awareness but also helps develop new + methods for vulnerability research and disclosure. Although you may never + meet our researchers, you can hope they are inspecting your systems right + now, catching issues before the bad guys do.... + members: + - /who-we-are/team/people/anass-ali + - /who-we-are/team/people/artur-miron + - /who-we-are/team/people/asif + - /who-we-are/team/people/axel + - /who-we-are/team/people/bartlomiej-lizak + - /who-we-are/team/people/carolien-braams + - /who-we-are/team/people/daan-keuper + - /who-we-are/team/people/dion-wissing + - /who-we-are/team/people/fatih-yilmaz + - /who-we-are/team/people/finn-van-der-knaap + - /who-we-are/team/people/gerard-janssen + - /who-we-are/team/people/harm-van-den-brink + - /who-we-are/team/people/henry-schokkenbroek + - /who-we-are/team/people/hidde-smit + - /who-we-are/team/people/jelle-ursem + - /who-we-are/team/people/jeroen-ellermeijer + - /who-we-are/team/people/jeroen-van-de-weerd + - /who-we-are/team/people/jonathan-bouman + - /who-we-are/team/people/joris-cras + - /who-we-are/team/people/joris-van-de-vis + - /who-we-are/team/people/josha-beekman + - /who-we-are/team/people/julian-roseboom + - /who-we-are/team/people/khalid-nakhli + - /who-we-are/team/people/koen-liu + - /who-we-are/team/people/koen-van-hove + - /who-we-are/team/people/mark-heijblok + - /who-we-are/team/people/marnix-lourens + - /who-we-are/team/people/martin-van-wingerden + - /who-we-are/team/people/max-van-der-horst + - /who-we-are/team/people/melvin-boers + - /who-we-are/team/people/melvin-lammerts + - /who-we-are/team/people/mischa-rick-van-geelen + - /who-we-are/team/people/olivier-beg + - /who-we-are/team/people/ralph-horn + - /who-we-are/team/people/rene-de-groot + - /who-we-are/team/people/rutger-hermens + - /who-we-are/team/people/serena-de-pater + - /who-we-are/team/people/sjors-roelfzema + - /who-we-are/team/people/tabitha-vogelaar + - /who-we-are/team/people/tom-wolters + - /who-we-are/team/people/victor-gevers-1 + - /who-we-are/team/people/wietse-boonstra + - /who-we-are/team/people/kees-poeijer-van + - /who-we-are/team/people/omer-zulaloglu + - /who-we-are/team/people/inanc-yigit - title: IT Services - description: This department manages our applications and infrastructure, including our own AS and the systems used by CSIRT and the Research & Development team to scan the internet. They handle the technical maintenance of our websites and have a development team that supports the teams by creating tools to automate tasks. - members: [] + description: >- + This department manages our applications and infrastructure, including our + own AS and the systems used by CSIRT and the Research & Development team + to scan the internet. They handle the technical maintenance of our + websites and have a development team that supports the teams by creating + tools to automate tasks. + members: + - /who-we-are/team/people/winko + - /who-we-are/team/people/bart-reedijk + - /who-we-are/team/people/bert-kiers + - /who-we-are/team/people/casper-kuijper + - /who-we-are/team/people/geert-langendam + - /who-we-are/team/people/jan-van-stijn + - /who-we-are/team/people/jeroen-van-der-broek + - /who-we-are/team/people/marco-heijkoop + - /who-we-are/team/people/nathan-van-buuren + - /who-we-are/team/people/raymond-schuiling + - /who-we-are/team/people/rob-blokland + - /who-we-are/team/people/ronald-beiboer + - /who-we-are/team/people/ruben-uithol + - /who-we-are/team/people/sigurd-hoenkamp-de-vries + - /who-we-are/team/people/tirza-dijkstra + - /who-we-are/team/people/waldo-de-borst + - /who-we-are/team/people/wiljan-wander - title: People & Culture - description: This department is responsible for the onboarding, offboarding, training, and coaching of our volunteers. The People & Culture team advises managers and team leaders in the organisation to support people in those roles to enable engagement, helping to make sure that everyone involved with the organisation enjoys their time at DIVD. - members: [] + description: >- + This department is responsible for the onboarding, offboarding, training, + and coaching of our volunteers. The People & Culture team advises managers + and team leaders in the organisation to support people in those roles to + enable engagement, helping to make sure that everyone involved with the + organisation enjoys their time at DIVD. + members: + - /who-we-are/team/people/astrid-oosenbrug + - /who-we-are/team/people/jan-los + - /who-we-are/team/people/kato-vierbergen + - /who-we-are/team/people/roxane - title: Communications - description: The communications department handles internal and external communications, events, and merchandise. It showcases DIVD's work both nationally and internationally through blogs on our website, press releases to relevant media, and posts on social media channels. This department ensures our experts are visible at key cybersecurity and hacker events. Additionally, the PR office is responsible for building and maintaining relationships with our partners, keeping them engaged with our activities. - members: [] - - title: Governance, Risk & Compliance (GRC) - description: The GRC department ensures our security is top-notch and that we comply with all relevant rules and regulations. In addition to the Security Office, the GRC department includes privacy officers, a crisis manager, and the Ethical Committee. - members: [] + description: >- + The communications department handles internal and external + communications, events, and merchandise. It showcases DIVD's work both + nationally and internationally through blogs on our website, press + releases to relevant media, and posts on social media channels. This + department ensures our experts are visible at key cybersecurity and hacker + events. Additionally, the PR office is responsible for building and + maintaining relationships with our partners, keeping them engaged with our + activities. + members: + - /who-we-are/team/people/gerard-janssen + - /who-we-are/team/people/jort-geurts + - /who-we-are/team/people/marieke-smits + - /who-we-are/team/people/marten-de-groot + - /who-we-are/team/people/serena-de-pater + - title: 'Governance, Risk & Compliance (GRC)' + description: >- + The GRC department ensures our security is top-notch and that we comply + with all relevant rules and regulations. In addition to the Security + Office, the GRC department includes privacy officers, a crisis manager, + and the Ethical Committee. + members: + - /who-we-are/team/people/alexia-ronda + - /who-we-are/team/people/dennis-kussendrager + - /who-we-are/team/people/filip-chyla + - /who-we-are/team/people/ferdinand-uittenbogaard + - /who-we-are/team/people/frank-breedijk + - /who-we-are/team/people/peter-baard - title: Project Office - description: The Project Office is a centralized entity within the DIVD responsible for standardizing and overseeing project management practices and processes. - members: [] + description: >- + The Project Office is a centralized entity within the DIVD responsible for + standardizing and overseeing project management practices and processes. + members: + - /who-we-are/team/people/winko + - /who-we-are/team/people/caroline-loef + - /who-we-are/team/people/dimitri-van-esch + - /who-we-are/team/people/dirk-maij + - /who-we-are/team/people/henry-schokkenbroek + - /who-we-are/team/people/tirza-dijkstra + - /who-we-are/team/people/victor-gevers-1 - title: Advisory board - description: "" - members: [] + description: '' + members: + - /who-we-are/team/people/chantal-stekelenburg - title: Ethics Committee - description: "" - members: [] + description: '' + members: + - /who-we-are/team/people/hans-van-de-looy + - /who-we-are/team/people/lennaert - title: Confidentiality Officers - type: "" - description: |- + type: '' + description: >- A safe working environment - DIVD continuously strives to be a safe and healthy organization, where everyone feels at home. Creating a workplace where individuals feel secure, included, valued, trusted and respected is crucial for fostering a positive and productive atmosphere. Maintaining such an environment is essential for the well-being and professional development of our workforce. Therefore DIVD has appointed confidential advisors, by which we aim to provide employees with a dedicated and trustworthy channel to address concerns related to unwanted behaviors or integrity violations. - Unwanted behaviors, such as exclusion, bullying, harassment, discrimination, and aggression, can have a detrimental impact on an individual's well-being and the overall workplace environment. Similarly, integrity violations, encompassing actions like corruption, fraud, abuse of power, and disclosure of sensitive information, compromise the ethical foundation of an organization. DIVD acknowledges the severity of these issues and takes a proactive stance by not tolerating such behaviors. + DIVD continuously strives to be a safe and healthy organization, where + everyone feels at home. Creating a workplace where individuals feel + secure, included, valued, trusted and respected is crucial for fostering a + positive and productive atmosphere. Maintaining such an environment is + essential for the well-being and professional development of our + workforce. Therefore DIVD has appointed confidential advisors, by which we + aim to provide employees with a dedicated and trustworthy channel to + address concerns related to unwanted behaviors or integrity violations. - The presence of the confidential advisors underscores the importance of open communication, addressing issues promptly, and upholding ethical standards. By offering this support system, DIVD aims to ensure that employees feel heard, supported, and empowered to address concerns without fear of reprisal. Also, DIVD intends to strengthen the trusted relationship, reassure employees that their concerns are taken seriously, and demonstrate its commitment to maintaining a workplace where integrity is paramount. + + Unwanted behaviors, such as exclusion, bullying, harassment, + discrimination, and aggression, can have a detrimental impact on an + individual's well-being and the overall workplace environment. Similarly, + integrity violations, encompassing actions like corruption, fraud, abuse + of power, and disclosure of sensitive information, compromise the ethical + foundation of an organization. DIVD acknowledges the severity of these + issues and takes a proactive stance by not tolerating such behaviors. + + + The presence of the confidential advisors underscores the importance of + open communication, addressing issues promptly, and upholding ethical + standards. By offering this support system, DIVD aims to ensure that + employees feel heard, supported, and empowered to address concerns without + fear of reprisal. Also, DIVD intends to strengthen the trusted + relationship, reassure employees that their concerns are taken seriously, + and demonstrate its commitment to maintaining a workplace where integrity + is paramount. members: [] type: team --- + diff --git a/content/who-we-are/team/people/arthur-dent.nl.md b/content/who-we-are/team/people/arthur-dent.nl.md index de1ae6aa..13d9a4a9 100644 --- a/content/who-we-are/team/people/arthur-dent.nl.md +++ b/content/who-we-are/team/people/arthur-dent.nl.md @@ -20,4 +20,5 @@ links: - name: Personal site link: https://arthurdent.com --- -Arthur Dent, the quintessential Englishman, finds himself thrust into the bewildering cosmos after the Earth's unexpected demolition to make way for a hyperspace bypass. Clad in his perennially worn dressing gown, Arthur embodies the everyman, bewildered and unprepared for the wild eccentricities of the universe. His mundane, tea-loving life on Earth stands in stark contrast to his subsequent interstellar adventures, where he encounters bizarre planets and peculiar alien life forms. Struggling to grasp the absurdity of his new reality, Arthur's journey is a comedic yet poignant exploration of the human condition amidst the backdrop of the unfathomable universe. \ No newline at end of file + +Arthur Dent, the quintessential Englishman, finds himself thrust into the bewildering cosmos after the Earth's unexpected demolition to make way for a hyperspace bypass. Clad in his perennially worn dressing gown, Arthur embodies the everyman, bewildered and unprepared for the wild eccentricities of the universe. His mundane, tea-loving life on Earth stands in stark contrast to his subsequent interstellar adventures, where he encounters bizarre planets and peculiar alien life forms. Struggling to grasp the absurdity of his new reality, Arthur's journey is a comedic yet poignant exploration of the human condition amidst the backdrop of the unfathomable universe. diff --git a/content/why-our-work-matters/_index.en.md b/content/why-our-work-matters/_index.en.md index 897779dd..a7709eb6 100644 --- a/content/why-our-work-matters/_index.en.md +++ b/content/why-our-work-matters/_index.en.md @@ -1,4 +1,69 @@ --- +sections: + - title: DIVD’s work is of great importance, here is why + text: This page explains why our work matters to society, partners, and other organizations. + type: titleText + - text: |- + ## DIVD scans the entire internet + + #### **Traditional methods, like penetration tests, often focus on a specific scope, usually limited to an organization’s IP addresses or URLs.  In contrast, DIVD seeks to identify all systems with a particular vulnerability, often discovering issues in systems that organizations were unaware they had.** + + **DIVD takes this a step further.** + Because we work for the common good and adhere to guidelines for ethical hacking, we extend our reach beyond the limits imposed on governments or commercial security companies. This allows us to determine with greater certainty whether a system is vulnerable. An email notification from DIVD always indicates a vulnerability that needs immediate attention. + + **DIVD scans for both regular security vulnerabilities and zero-day vulnerabilities.** + DIVD independently assigns new unique identifiers (CVEs) when new (previously unknown) vulnerabilities are identified by its researchers. + + **DIVD is known for its transparency & collaboration.** + DIVD is recognized for its transparent approach in reporting vulnerabilities and the actions taken to resolve them. This level of openness fosters trust within both the cybersecurity community and the general public. We promote ethical hacking and responsible disclosure while striving to tackle broader cybersecurity challenges. Unlike many cybersecurity organizations, DIVD is a non-profit entity, run by volunteers. + + **DIVD actively engages with the cybersecurity community, including researchers, ethical hackers, and other stakeholders, to share knowledge and improve collective security efforts.** + type: paper + hasBackground: true + - text: |- + ## What happens when we find a vulnerability? Here’s an example. + + A good example of what the world would look like without DIVD’s efforts is the SolarMan case. In 2022, a DIVD researcher found a GitHub repository containing the username and password for SolarMan’s Super Admin account. These credentials were visible to anyone who would visit the GitHub page, meaning that anyone in the world with internet access could have gained unauthorized access to nearly 1,000,000 installations. + type: doubleDecker + - text: |- + ## SolarMan’s Password Oopsie + + How 1 million installations almost went dark + + The 1,000,000 installations refer to solar power plants (installations) managed through the SolarMan platform. These installations have a total power output of over 10GwP (gigawatts peak). Most of these systems are located in China and Australia, with a significant number of over 40,000 in The Netherlands. + + DIVD contacted the company responsible for the repository. Eventually, the exposed password was reset and the repository was deleted. But what if the vulnerability hadn’t been discovered and the credentials remained publicly available? + + Cybercriminals could theoretically have been able to gain access to the SolarMan Super Admin account, potentially controlling nearly 1,000,000 installations. They could theoretically have had the ability to alter system settings, disrupt services, or disable installations, causing widespread operational issues. + Sensitive information could potentially have been exposed, leading to data breaches. Compromised systems could theoretically have been used to deploy malware, resulting in further security incidents and potential damage to connected networks. + + **The company’s reputation could have been severely damaged, resulting in a loss of trust from customers and partners.** + type: paper + hasBackground: false + - button: + label: Go to csirt website + url: something I don't know + external: false + text: Note that it is very complex to summarize any DIVD case, or make accurate and precise assumptions about which risks were specifically mitigated. If you have any questions, please read about our case on the CSIRT + type: pill + - rightArticle: + button: + label: Read more + url: moar + external: false + category: Culture + title: Microsoft update makes Outlook very vulnerable + text: Lorem ipsum dolor sit amet consectetur. Ultricies faucibus sit sit ante vestibulum dictum venenatis commodo. + leftArticle: + button: + label: Read more + url: moar + external: false + category: Culture + title: Our yearly get-together was a great succes! + text: Lorem ipsum dolor sit amet consectetur. Ultricies faucibus sit sit ante vestibulum dictum venenatis commodo. + title: Suggested Articles + type: suggestedArticles title: Our work is of great importance, here is why intro: |- This page explains why our work matters to society, partners, and other organisations. @@ -19,7 +84,7 @@ leftblock: Cybercriminals often prefer to create exploits for big, well-known issues because they can use those exploits to create powerful, cheap attacks that have worked for many years and on many systems. image: "" - Alt tag for image: "" + alt: "" learnmore: /dictionary/ alt: null rightblock: @@ -34,7 +99,7 @@ rightblock: Since this vulnerability is *unknown*, no one is adequately protected against it. The vendor needs to disclose information about the vulnerability to its partners, but in doing so, they also unintentionally but unavoidably inform cybercriminals about the occurrence of a weakness in their software. This is when a race against the clock begins. Who works faster, the software vendor crafting and distributing a patch, or the cybercriminals crafting and deploying an exploit? image: "" - Alt tag for image: "" + alt: "" learnmore: "" alt: null contenttitle: "## Why our work matters" @@ -65,15 +130,16 @@ casehighlight: main: title: More text here --- -**DIVD scans the entire internet.**  + +**DIVD scans the entire internet.** Traditional methods, like penetration tests, often focus on a specific scope, usually limited to an organization's IP addresses or URLs.  In contrast, DIVD seeks to identify all systems with a particular vulnerability, often discovering issues in systems that organizations were unaware they had. -**DIVD can take this a step further.**  +**DIVD can take this a step further.** Because we work for the common good and adhere to guidelines for ethical hacking, we can extend our reach beyond the limits imposed on governments or commercial security companies. This allows us to determine with greater certainty whether a system is vulnerable. An email notification from DIVD almost always indicates a vulnerability that needs immediate attention. -**DIVD scans for both regular security vulnerabilities *and* zero-day vulnerabilities.**  +**DIVD scans for both regular security vulnerabilities _and_ zero-day vulnerabilities.** DIVD independently [assigns new unique identifiers (CVEs)](https://csirt.divd.nl/cna/) when new (previously unknown) vulnerabilities are identified by its researchers. diff --git a/content/why-our-work-matters/_index.nl.md b/content/why-our-work-matters/_index.nl.md index ceecc544..1fca34bb 100644 --- a/content/why-our-work-matters/_index.nl.md +++ b/content/why-our-work-matters/_index.nl.md @@ -19,4 +19,5 @@ corevalues: - title: Technical Proficiency description: It is crucial for volunteers to have a robust knowledge of cybersecurity principles and methods. If they are considering joining one of our technical teams, they need to possess the necessary technical expertise to effectively detect and scrutinize vulnerabilities in online systems. Keeping up-to-date with the latest technologies and threats through continuous learning is indispensable. --- + c diff --git a/hugo.yaml b/hugo.yaml index 94209a7d..87bf3726 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -41,3 +41,8 @@ server: X-XSS-Protection: "1; mode=block" Content-Security-Policy: "default-src 'none'; frame-src https://form.jotform.com https://eu-submit.jotform.com https://divd.goatcounter.com/count https://cyberveilignederland.nl/woordenboek.iframe; font-src 'self'; img-src 'self' data: https://cdn.theorg.com; script-src 'self' https://form.jotform.com https://unpkg.com/ https://gc.zgo.at; style-src 'self'; connect-src 'self' https://divd.goatcounter.com/count; base-uri 'self'; frame-ancestors 'self'; form-action 'self';" Referrer-Policy: "same-origin" + +markup: + goldmark: + renderer: + hardWraps: true diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 77320d0a..7a578ebb 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -1,11 +1,11 @@ - + - - + + + content="width=device-width, initial-scale=1, maximum-scale=1" /> {{ .Title }} @@ -16,12 +16,13 @@ {{ partial "mainnav.html" . }} - + + {{ block "main" . }} - - {{ end }} - + + {{ end }} + {{ block "footer" . }} {{ partial "footer.html" }} {{ end }} diff --git a/layouts/_default/section.html b/layouts/_default/section.html index a94a29a3..0886c7d6 100644 --- a/layouts/_default/section.html +++ b/layouts/_default/section.html @@ -1,25 +1,19 @@ {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} -
- {{ partial "breadcrumbs" . }} - - {{ partial "p/section_open" (dict "classes" (slice "article" ))}} - + {{ partial "p/section_open" (dict "classes" (slice "article" )) }} {{ partial "p/layout_open" (dict "classes" (slice "article")) }} - - -
-
- {{ .Content }} -
- -
- {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
+
+
+ {{ .Content }} +
+ +
+ {{ partial "p/layout_close" }} -{{ end }} \ No newline at end of file + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/article/list.html b/layouts/article/list.html index 7249db48..9b1e2ade 100644 --- a/layouts/article/list.html +++ b/layouts/article/list.html @@ -1,31 +1,15 @@ - - - {{ define "main" }} -{{ partial "breadcrumbs" . }} + {{ partial "breadcrumbs" . }} -
- {{ partial "p/section_open" (dict "classes" (slice "default")) }} +
+ {{ partial "p/section_open" (dict "classes" (slice "default")) }} {{ partial "p/layout_open" }} {{ template "_internal/pagination.html" . }} -
- Hey! I'm trying to understand how the paginator behaves and why it does what it does. Here's some info about the paginator: - Paginator Info: -

Page Number: {{ .Paginator.PageNumber }}

-

Total Pages: {{ .Paginator.TotalPages }}

-

Has Next: {{ .Paginator.HasNext }}

-

Has Prev: {{ .Paginator.HasPrev }}

-

Pages on Current Page:

- {{ range .Paginator.Pages }} -

Title: {{ .Title }} - Date: {{ .Date }}

- {{ end }} -
-
- - {{ range .Paginator.Pages.ByDate.Reverse }} +
+ {{ range .Paginator.Pages.ByDate.Reverse }}
@@ -47,14 +31,11 @@

{{ .Title }}

{{ end }}
- {{ end }} + {{ end }} -
- {{ template "_internal/pagination.html" . }} +
+ {{ template "_internal/pagination.html" . }} {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
- - + {{ partial "p/section_close" }} +
{{ end }} - diff --git a/layouts/article/single.html b/layouts/article/single.html index 2c0a8425..5c811fad 100644 --- a/layouts/article/single.html +++ b/layouts/article/single.html @@ -1,18 +1,13 @@ - - - {{ define "main" }} -
- - {{ partial "p/section_open" (dict "classes" (slice "default")) }} +
+ {{ partial "p/section_open" (dict "classes" (slice "default")) }} {{ partial "p/layout_open" }} - -
Article single
- {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
+
Article single
-{{ end }} \ No newline at end of file + {{ partial "p/layout_close" }} + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/codeofconduct/list.html b/layouts/codeofconduct/list.html index 3d2fbc15..deb28a17 100644 --- a/layouts/codeofconduct/list.html +++ b/layouts/codeofconduct/list.html @@ -1,36 +1,26 @@ - - - {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} + {{ partial "p/section_open" (dict "classes" (slice "article" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "article" "has-image")) }} -
- {{ partial "breadcrumbs" . }} - - {{ partial "p/section_open" (dict "classes" (slice "article" ))}} - {{ partial "p/layout_open" (dict "classes" (slice "article" "has-image")) }} - - -
- {{ with resources.Get "images/global/codeofconduct_header.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Code of conduct") }} - {{ end }} -
- +
+ {{ with resources.Get "images/global/codeofconduct_header.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Code of conduct") }} + {{ end }} +
-
-
- {{ .Content }} -
- -
+
+
+ {{ .Content }} +
+ +
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
- -{{ end }} \ No newline at end of file + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/codeofethics/list.html b/layouts/codeofethics/list.html index 14298fb9..800d97e5 100644 --- a/layouts/codeofethics/list.html +++ b/layouts/codeofethics/list.html @@ -1,36 +1,26 @@ - - - {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} + {{ partial "p/section_open" (dict "classes" (slice "article" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "article" "has-image")) }} -
- {{ partial "breadcrumbs" . }} - - {{ partial "p/section_open" (dict "classes" (slice "article" ))}} - {{ partial "p/layout_open" (dict "classes" (slice "article" "has-image")) }} - - -
- {{ with resources.Get "images/global/codeofconduct_header.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Code of ethics") }} - {{ end }} -
- +
+ {{ with resources.Get "images/global/codeofconduct_header.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Code of ethics") }} + {{ end }} +
-
-
- {{ .Content }} -
- -
+
+
+ {{ .Content }} +
+ +
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
- -{{ end }} \ No newline at end of file + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/contact/list.html b/layouts/contact/list.html index 6fad250b..4a24cebb 100644 --- a/layouts/contact/list.html +++ b/layouts/contact/list.html @@ -1,22 +1,23 @@ {{ define "main" }}
-
{{ partial "p/layout_open" (dict "classes" (slice "right")) }} -
-

{{ .Params.opener }}

-
-
-

{{ .Params.intro}} -

+
+

{{ .Params.opener }}

+
+
+

+ {{ .Params.intro }} +

+
{{ partial "p/layout_close" }}
- {{ partial "p/section_open" (dict "classes" (slice "gradient"))}} - {{ partial "block/faq" . }} - {{ partial "block/contact" . }} + {{ partial "p/section_open" (dict "classes" (slice "gradient")) }} + {{ partial "block/faq" . }} + {{ partial "block/contact" . }} {{ partial "p/section_close" }}
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/contribute/section.html b/layouts/contribute/section.html index 344149eb..cb08492b 100644 --- a/layouts/contribute/section.html +++ b/layouts/contribute/section.html @@ -1,133 +1,135 @@ {{ define "main" }} -
-
- {{ partial "breadcrumbs" . }} - {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }} +
+ {{ partial "breadcrumbs" . }} + {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }}

{{ .Params.opener }}

-

{{ .Params.intro}}

+

{{ .Params.intro }}

{{ i18n "donate" }} -
- {{ partial "p/layout_close" }} +
+ {{ partial "p/layout_close" }} +
-
- {{ partial "p/section_open" (dict "classes" (slice "inverse"))}} + {{ partial "p/section_open" (dict "classes" (slice "inverse")) }}
{{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2" "stretch")) }} -
- {{ with resources.Get .Params.becomevolunteer.image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.becomevolunteer.alt) }} - {{ end }} -
-
-

{{ .Params.becomevolunteer.title }}

-

{{ .Params.becomevolunteer.description }}

-
- -
-
+
+ {{ with resources.Get .Params.becomevolunteer.image }} + {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.becomevolunteer.alt) }} + {{ end }} +
+
+

{{ .Params.becomevolunteer.title }}

+

{{ .Params.becomevolunteer.description }}

+
+ +
+
-
- {{ with resources.Get .Params.becomepartner.image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.becomepartner.alt) }} - {{ end }} -
-
-

{{ .Params.becomepartner.title }}

-

{{ .Params.becomepartner.description }}

-
- -
-
+
+ {{ with resources.Get .Params.becomepartner.image }} + {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.becomepartner.alt) }} + {{ end }} +
+
+

{{ .Params.becomepartner.title }}

+

{{ .Params.becomepartner.description }}

+
+ +
+
- {{ partial "p/layout_close" }}
- {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
-

{{ .Params.appreciate.title }}

-

{{ .Params.appreciate.description }}

- -
- + {{ partial "p/layout_close" }} {{ partial "p/section_close" }} -
- - -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/dictionary/section.html b/layouts/dictionary/section.html index 8b0c4d53..578ae2cf 100644 --- a/layouts/dictionary/section.html +++ b/layouts/dictionary/section.html @@ -1,43 +1,44 @@ {{ define "main" }} -
-
- {{ partial "breadcrumbs" . }} - {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }} +
+ {{ partial "breadcrumbs" . }} + {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }}

{{ .Params.title }}

{{ .Params.intro | markdownify }}

-
- {{ partial "p/layout_close" }} +
+ {{ partial "p/layout_close" }} +
-
- {{ partial "p/section_open" (dict "classes" (slice "inverse"))}} + {{ partial "p/section_open" (dict "classes" (slice "inverse")) }}
- {{ partial "p/layout_open" (dict "classes" (slice "article" )) }} -
-
-

- {{ .Content }} -

-
-
+
+
+

+ {{ .Content }} +

+
+
{{ partial "p/layout_close" }} {{ partial "p/layout_open" (dict "classes" (slice "article" )) }} -
- -
+
+ +
{{ partial "p/layout_close" }}
- {{ partial "p/section_close" }} - + {{ partial "p/section_close" }} - -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/faq/list.html b/layouts/faq/list.html index 72a68d1b..9c142ce6 100644 --- a/layouts/faq/list.html +++ b/layouts/faq/list.html @@ -1,40 +1,45 @@ {{ define "main" }} -
- {{ partial "breadcrumbs" . }} +
+ {{ partial "breadcrumbs" . }} - {{ partial "p/section_open" (dict "classes" (slice "article")) }} + {{ partial "p/section_open" (dict "classes" (slice "article")) }} {{ partial "p/layout_open" (dict "classes" (slice "article")) }} -
-
-

{{ .Title }}

-

{{ .Params.opener }}

-

{{ .Params.intro }}

- {{ if .Params.faqgroups }} - {{ range .Params.faqgroups }} -
- {{ if ne .heading "Home" }} -

{{ .heading }}

- {{ end }} -
- {{ range $index, $element := .faqs }} -
-

{{ .title }}

-
{{ .description | markdownify }}
+
+
+

{{ .Title }}

+

{{ .Params.opener }}

+

{{ .Params.intro }}

+ {{ if .Params.faqgroups }} + {{ range .Params.faqgroups }} +
+ {{ if ne .heading "Home" }} +

{{ .heading }}

+ {{ end }} + + +
+ {{ range $index, $element := .faqs }} +
+

{{ .title }}

+
+ {{ .description | markdownify }}
- {{ end }} -
+
+ {{ end }}
- {{ end }} - {{ else }} -

No FAQ groups available.

+
{{ end }} -
-
+ {{ else }} +

No FAQ groups available.

+ {{ end }} + +
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
+ {{ partial "p/section_close" }} + {{ end }} diff --git a/layouts/faq/single.html b/layouts/faq/single.html index f456b215..ffc01f99 100644 --- a/layouts/faq/single.html +++ b/layouts/faq/single.html @@ -1,45 +1,52 @@ {{ define "main" }} -
- {{ partial "breadcrumbs" . }} +
+ {{ partial "breadcrumbs" . }} - {{ partial "p/section_open" (dict "classes" (slice "article")) }} + {{ partial "p/section_open" (dict "classes" (slice "article")) }} {{ partial "p/layout_open" (dict "classes" (slice "article")) }} -
-
-

{{ .Title }}

-

{{ .Params.opener }}

-

{{ .Params.intro }}

- {{ if .Params.button_text }} - - {{ end }} - {{ if .Params.faqgroups }} - {{ range .Params.faqgroups }} -
- {{ if ne .heading "Home" }} -

{{ .heading }}

- {{ end }} -
- {{ range $index, $element := .faqs }} -
-

{{ .title }}

-
{{ .description | markdownify }}
+
+
+

{{ .Title }}

+

{{ .Params.opener }}

+

{{ .Params.intro }}

+ {{ if .Params.button_text }} + + {{ end }} + {{ if .Params.faqgroups }} + {{ range .Params.faqgroups }} +
+ {{ if ne .heading "Home" }} +

{{ .heading }}

+ {{ end }} + + +
+ {{ range $index, $element := .faqs }} +
+

{{ .title }}

+
+ {{ .description | markdownify }}
- {{ end }} -
+
+ {{ end }}
- {{ end }} - {{ else }} -

No FAQ groups available.

+
{{ end }} -
-
+ {{ else }} +

No FAQ groups available.

+ {{ end }} + +
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
+ {{ partial "p/section_close" }} + {{ end }} diff --git a/layouts/index.html b/layouts/index.html index 4f6ba0c9..1284eb69 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,155 +1,168 @@ {{ define "main" }} -
-
- - -
+
+
+ + +
- {{ with .Params.fold }} - {{ partial "p/section_open" (dict "classes" (slice "inverse" "overlap-top"))}} - {{ partial "p/layout_open" (dict "classes" (slice "extend")) }} - {{ end }} diff --git a/layouts/newsroom/collection.ts b/layouts/newsroom/collection.ts new file mode 100644 index 00000000..f415443b --- /dev/null +++ b/layouts/newsroom/collection.ts @@ -0,0 +1,81 @@ +import caseWidget from '../partials/components/case-researchers-widget'; +import { articleSections } from '../partials/sections'; + +export const Collection = { + label: 'Newsroom articles', + name: 'articles', + i18n: { + structure: 'multiple_files', + }, + folder: 'content/newsroom/articles', + create: true, + slug: '{{ .Title | urlize }}', + fields: [ + { + label: 'Title', + name: 'title', + widget: 'string', + i18n: true, + }, + { + label: 'Publish Date', + name: 'date', + widget: 'datetime', + format: 'YYYY-MM-DDTHH:mm:ssZ', + }, + { + label: 'Author(s)', + name: 'author', + widget: 'relation', + collection: 'people', + value_field: '/who-we-are/team/people/{{ .Title | urlize }}', + display_fields: ['title'], + search_fields: ['title'], + required: false, + multiple: true, + }, + { + label: 'Tag', + name: 'tag', + widget: 'select', + options: ['case', 'news', 'updates', 'culture'], + }, + { + label: 'Intro', + name: 'intro', + widget: 'text', + i18n: true, + }, + { + label: 'Image', + name: 'image', + widget: 'image', + public_folder: '/images/articles', + media_folder: '/assets/images/articles', + required: false, + }, + { + label: 'Alt tag for image', + name: 'alt', + widget: 'string', + i18n: true, + required: false, + }, + { + ...caseWidget, + }, + { + label: 'Body', + name: 'body', + widget: 'markdown', + i18n: true, + }, + { + label: 'Bottom sections', + label_singular: 'Bottom section', + name: 'sections', + widget: 'list', + types: articleSections, + }, + ], +}; diff --git a/layouts/newsroom/section.html b/layouts/newsroom/section.html index c6688608..e7d5efac 100644 --- a/layouts/newsroom/section.html +++ b/layouts/newsroom/section.html @@ -1,16 +1,11 @@ - - - - {{ define "main" }} -{{ $articlePage := .Site.GetPage "/newsroom/articles" }} + {{ $articlePage := .Site.GetPage "/newsroom/articles" }} - -
-
- {{ partial "p/layout_open" (dict "classes" (slice "right")) }} +
+
+ {{ partial "p/layout_open" (dict "classes" (slice "right")) }}

{{ .Params.opener }}

@@ -20,81 +15,80 @@

{{ .Params.opener }}

Newsletter -->
- {{ partial "p/layout_close" }} -
+ {{ partial "p/layout_close" }} +
- {{ partial "p/section_open" (dict "classes" (slice "default")) }} + {{ partial "p/section_open" (dict "classes" (slice "default")) }} {{ partial "p/layout_open" }} -
-

{{ .Params.starter.title }}

-

{{ .Params.starter.description }}

+
+

{{ .Params.starter.title }}

+

{{ .Params.starter.description }}

-
- {{ range $key, $value := .Site.Taxonomies.tag }} - {{ $key }} - {{ end }} -
+
+ {{ range $key, $value := .Site.Taxonomies.tag }} + {{ $key }} + {{ end }}
- -
-
+
- {{ with site.GetPage (printf "%s" .Params.highlight) }} +
+
+ {{ with site.GetPage (printf "%s" .Params.highlight) }} - {{ with .Params.image }} -
+ {{ with .Params.image }} +
{{ with resources.Get . }} {{ partial "tools/rimg/img" (dict "img" . "alt" "test") }} {{ end }} -
- {{ end }} +
+ {{ end }} -
-

{{ .Title }}

-

- {{ .Params.intro | safeHTML | truncate 192 }} -

- - {{ i18n "readmore" }} - -
- {{ end }} -
+
+

{{ .Title }}

+

+ {{ .Params.intro | safeHTML | truncate 192 }} +

- {{ range first 6 $articlePage.Pages.ByDate.Reverse }} -
-
-
-

{{ .Params.tag }}

-

{{ .Title }}

-

{{ .Params.intro | safeHTML | truncate 192 }}

-
- -
- {{ if .Params.image }} - - {{ end }} -
+ + {{ i18n "readmore" }} + +
{{ end }}
- - - - {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
+ {{ range first 6 $articlePage.Pages.ByDate.Reverse }} +
+
+
+

{{ .Params.tag }}

+

{{ .Title }}

+

{{ .Params.intro | safeHTML | truncate 192 }}

+
+ +
+ {{ if .Params.image }} + + {{ end }} +
+ {{ end }} +
+ -{{ end }} \ No newline at end of file + {{ partial "p/layout_close" }} + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/newsroom/single.html b/layouts/newsroom/single.html index 58610929..fc6a7603 100644 --- a/layouts/newsroom/single.html +++ b/layouts/newsroom/single.html @@ -1,82 +1,30 @@ {{ define "main" }} + {{ $extraClass := "default pt-32 bg-light-black" }} + {{ if .Params.image }} + {{ $extraClass = "has-image" }} + {{ end }} -{{ $extraClass := "default" }} -{{ if .Params.image }} - {{ $extraClass = "has-image" }} -{{ end }} -
- {{ partial "breadcrumbs" . }} +
+ {{ partial "breadcrumbs" . }} - {{ partial "p/section_open" (dict "classes" (slice "article" ))}} - {{ partial "p/layout_open" (dict "classes" (slice "article" $extraClass)) }} - +
{{ if .Params.image }} -
- {{ with resources.Get .Params.image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "test") }} - {{ end }} -
- {{ end }} - -
-
-

{{ .Title }}

- - - {{ .Content }} -
- -
- - {{ if and (isset .Params "faq_enabled") (.Params.faq_enabled) }} -
- {{ partial "block/faq" . }} -
{{ end }} - {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
-{{ end }} \ No newline at end of file +
+
+

{{ .Title }}

+ + {{ .Content }} +
+ {{ partial "components/case-researchers-widget/case-researchers-widget.html" . }} +
+ + +{{ end }} diff --git a/layouts/partials/block/csirt.html b/layouts/partials/block/csirt.html index cb2a2371..8c5276b0 100644 --- a/layouts/partials/block/csirt.html +++ b/layouts/partials/block/csirt.html @@ -1,24 +1,23 @@ - {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.csirt }} - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
-
-

{{ .Title }}

-

{{ .intro }}

- CSIRT Site {{ partial "svg/icon" "external"}} -
-
-
- {{ with resources.Get "images/global/csirt.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Become part of the family") }} - {{ end }} -
- - {{ partial "p/layout_close" }} - + {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} +
+
+

{{ .Title }}

+

{{ .intro }}

+ CSIRT Site {{ partial "svg/icon" "external" }} +
+
+
+ {{ with resources.Get "images/global/csirt.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Become part of the family") }} + {{ end }} +
+ + {{ partial "p/layout_close" }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/divd_stats.html b/layouts/partials/block/divd_stats.html index 18bcb55a..c40ae984 100644 --- a/layouts/partials/block/divd_stats.html +++ b/layouts/partials/block/divd_stats.html @@ -1,22 +1,20 @@ - {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.mission }} -
    -
  • -

    {{ .members }}

    -
    Members
    -
  • +
      +
    • +

      {{ .members }}

      +
      Members
      +
    • -
    • -

      {{ .totalcases }}

      -
      Total cases
      -
    • +
    • +

      {{ .totalcases }}

      +
      Total cases
      +
    • -
    • -

      {{ .ips }}

      -
      Vulnerable IPS Notified
      -
    • -
    -{{ end }} \ No newline at end of file +
  • +

    {{ .ips }}

    +
    Vulnerable IPS Notified
    +
  • +
+{{ end }} diff --git a/layouts/partials/block/divdfamily.html b/layouts/partials/block/divdfamily.html index 8f706374..f5cb02fe 100644 --- a/layouts/partials/block/divdfamily.html +++ b/layouts/partials/block/divdfamily.html @@ -1,28 +1,27 @@ - {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.divdfamily }} - {{ partial "p/layout_open" (dict "classes" (slice "default")) }} -
-

{{ .Title }}

+ {{ partial "p/layout_open" (dict "classes" (slice "default")) }} +
+

{{ .Title }}

+

{{ .description }}

+
+
+ {{ range .members }} +
+
+

{{ .name }}

{{ .description }}

+
+
-
- {{ range .members }} -
-
-

{{ .name }}

-

{{ .description }}

-
- -
- {{ end }} -
- {{ partial "p/layout_close" }} - + {{ end }} +
+ {{ partial "p/layout_close" }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/ethics.html b/layouts/partials/block/ethics.html index d8a34e04..3e208dca 100644 --- a/layouts/partials/block/ethics.html +++ b/layouts/partials/block/ethics.html @@ -1,20 +1,20 @@ {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.ethics }} - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
- {{ with resources.Get "images/global/ethics.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Ethics") }} - {{ end }} -
-
-
-

{{ .title }}

-

{{ .intro }}

- {{ i18n "codeofconduct" }} -
+ {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} +
+ {{ with resources.Get "images/global/ethics.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Ethics") }} + {{ end }} +
+
+
+

{{ .title }}

+

{{ .intro }}

+ {{ i18n "codeofconduct" }}
+
{{ partial "p/layout_close" }} - -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/ethics_footer.html b/layouts/partials/block/ethics_footer.html index 1aadec36..30f23f25 100644 --- a/layouts/partials/block/ethics_footer.html +++ b/layouts/partials/block/ethics_footer.html @@ -1,17 +1,16 @@ {{ $blocks := site.GetPage "/block" }} - {{ with $blocks.Params.ethics }} - -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/familycta.html b/layouts/partials/block/familycta.html index bc2692a1..2c815186 100644 --- a/layouts/partials/block/familycta.html +++ b/layouts/partials/block/familycta.html @@ -1,23 +1,22 @@ - {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.familycta }} - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
- {{ with resources.Get "images/global/familycta.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Become part of the family") }} - {{ end }} -
-
-
-

{{ .Title }}

-

{{ .intro }}

- {{ i18n "contribute" }} -
-
- {{ partial "p/layout_close" }} - + {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} +
+ {{ with resources.Get "images/global/familycta.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Become part of the family") }} + {{ end }} +
+
+
+

{{ .Title }}

+

{{ .intro }}

+ {{ i18n "contribute" }} +
+
+ {{ partial "p/layout_close" }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/faq.html b/layouts/partials/block/faq.html index ca292cc8..08d731fe 100644 --- a/layouts/partials/block/faq.html +++ b/layouts/partials/block/faq.html @@ -1,4 +1,3 @@ - {{ partial "comment.html" (dict "comment" "p/block/faq.html.html" ) }} {{ $context := . }} @@ -8,6 +7,7 @@ {{ $page = $page.Params }} {{ $pageType := "faq" }} + {{ if .Parent }} {{ if eq .Parent.Params.type "article" }} @@ -21,7 +21,7 @@ {{ $context = .context }} {{ $targetHeading := .targetHeading }} {{ if $targetHeading }} - + {{ end }} {{ range $i, $v := $page.Params.faqgroups }} {{ if eq $v.heading $targetHeading }} @@ -31,47 +31,43 @@ {{ end }} {{ end }} - - - {{ $isContactPage := eq .RelPermalink "/contact/" }} - {{ with $page }} {{ warnf "Page Object: %#v" $page }} - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
-

{{ .Title }}

-

{{.intro}}

- + {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} +
+

{{ .Title }}

+

{{ .intro }}

- {{ if $isContactPage }} - Contact - {{ else }} - Contact - {{ end }} - {{ warnf "Page Type is %s" $pageType }} - {{ if eq $pageType "article" }} - {{ warnf "Url is %s" .url }} - All FAQ - {{ else }} - All FAQ - {{ end }} -
-
-
- {{ with index .faqgroups $index }} - {{ range $index, $element := .faqs }} -
-

{{ .title }}

-
{{ .description|markdownify }}
+ {{ if $isContactPage }} + Contact + {{ else }} + Contact + {{ end }} + {{ warnf "Page Type is %s" $pageType }} + {{ if eq $pageType "article" }} + {{ warnf "Url is %s" .url }} + All FAQ + {{ else }} + All FAQ + {{ end }} +
+
+
+ {{ with index .faqgroups $index }} + {{ range $index, $element := .faqs }} +
+

{{ .title }}

+
+ {{ .description|markdownify }}
- {{ end }} +
{{ end }} -
+ {{ end }}
- {{ partial "p/layout_close" }} - +
+ {{ partial "p/layout_close" }} {{ end }} {{ partial "comment.html" (dict "comment" "/p/block/faq.html.html" ) }} diff --git a/layouts/partials/block/mission.html b/layouts/partials/block/mission.html index 3aa7ca87..5b5a28c3 100644 --- a/layouts/partials/block/mission.html +++ b/layouts/partials/block/mission.html @@ -1,36 +1,33 @@ - {{ $blocks := .Site.GetPage "/block" }} - {{ with $blocks.Params.mission }} - {{ partial "p/section_open" (dict "classes" (slice "inverse" "round" "round-topright" ))}} - {{ partial "p/layout_open" (dict "classes" (slice "default")) }} -
-
-

{{ .Title }}

-

{{ .description }}

-
-
- -
-
    -
  • -

    {{ .members }}

    -
    Members
    -
  • + {{ partial "p/section_open" (dict "classes" (slice "inverse" "round" "round-topright" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "default")) }} +
    +
    +

    {{ .Title }}

    +

    {{ .description }}

    +
    +
    -
  • -

    {{ .totalcases }}

    -
    Total cases
    -
  • +
    +
      +
    • +

      {{ .members }}

      +
      Members
      +
    • -
    • -

      {{ .ips }}

      -
      Vulnerable IPS Notified
      -
    • -
    -
    - {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} +
  • +

    {{ .totalcases }}

    +
    Total cases
    +
  • -{{ end }} \ No newline at end of file +
  • +

    {{ .ips }}

    +
    Vulnerable IPS Notified
    +
  • +
+
+ {{ partial "p/layout_close" }} + {{ partial "p/section_close" }} +{{ end }} diff --git a/layouts/partials/block/partners_carousel.html b/layouts/partials/block/partners_carousel.html index dbfaa84a..95daa182 100644 --- a/layouts/partials/block/partners_carousel.html +++ b/layouts/partials/block/partners_carousel.html @@ -2,33 +2,37 @@ {{ with $page }} {{ partial "p/layout_open" (dict "classes" (slice "default")) }} -
-

{{ .Params.partnerstitle }}

+
+

{{ .Params.partnerstitle }}

+
+
+
+
-
-
- -
-
-
- {{ range $index, $element := .Params.partnerlist }} -
- {{ with resources.Get .image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" $element.name) }} - {{ end }} -
- {{ end }} -
-
-
- +
+
+ {{ range $index, $element := .Params.partnerlist }} +
+ {{ with resources.Get .image }} + {{ partial "tools/rimg/img" (dict "img" . "alt" $element.name) }} + {{ end }} +
+ {{ end }}
-
-

- {{ .Params.partnersintro }} -

- {{ i18n "becomeapartner" }} +
+
+
+
+

+ {{ .Params.partnersintro }} +

+ {{ i18n "becomeapartner" }} +
{{ partial "p/layout_close" }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/block/proudestwork.html b/layouts/partials/block/proudestwork.html index 628d2cf2..6f0d4c9c 100644 --- a/layouts/partials/block/proudestwork.html +++ b/layouts/partials/block/proudestwork.html @@ -1,24 +1,22 @@ - {{ partial "comment.html" (dict "comment" "proudestwork.html" ) }} {{ $blocks := .Site.GetPage "/block" }} {{ with $blocks.Params.proudestwork }} - {{ partial "p/layout_open" (dict "classes" (slice "extend")) }} -

{{ .Title }}

- diff --git a/layouts/partials/comment.html b/layouts/partials/comment.html index 51bfb0aa..ba83f9a3 100644 --- a/layouts/partials/comment.html +++ b/layouts/partials/comment.html @@ -1 +1 @@ -{{ printf "" .comment | safeHTML }} \ No newline at end of file +{{ printf "" .comment | safeHTML }} diff --git a/layouts/partials/components/button/button.html b/layouts/partials/components/button/button.html new file mode 100644 index 00000000..041ae0de --- /dev/null +++ b/layouts/partials/components/button/button.html @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/layouts/partials/components/button/index.ts b/layouts/partials/components/button/index.ts new file mode 100644 index 00000000..db2ed52d --- /dev/null +++ b/layouts/partials/components/button/index.ts @@ -0,0 +1,38 @@ +export default { + label: 'Button', + name: 'button', + required: false, + widget: 'object', + fields: [ + { + label: 'Label', + name: 'label', + widget: 'string', + i18n: true, + }, + { + label: 'URL', + name: 'url', + widget: 'string', + // pattern: [ + // 'https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)', + // 'Provide a valid HTTPS url', + // ], + }, + { + label: 'Inverted colors', + name: 'invertedColors', + widget: 'boolean', + required: false, + default: false, + }, + { + label: 'External link', + name: 'external', + widget: 'boolean', + required: false, + default: 'false', + i18n: true, + }, + ], +}; diff --git a/layouts/partials/components/card-horizontal/card-horizontal.html b/layouts/partials/components/card-horizontal/card-horizontal.html new file mode 100644 index 00000000..f69f5a2d --- /dev/null +++ b/layouts/partials/components/card-horizontal/card-horizontal.html @@ -0,0 +1,17 @@ +
+
+
+ {{ .category }} +
+

{{ .title }}

+

{{ .text }}

+ {{ if .button }} {{ end }} +
+ {{ $image := resources.GetRemote "https://picsum.photos/200/300" }} + +
diff --git a/layouts/partials/components/card-horizontal/index.ts b/layouts/partials/components/card-horizontal/index.ts new file mode 100644 index 00000000..701047f4 --- /dev/null +++ b/layouts/partials/components/card-horizontal/index.ts @@ -0,0 +1,28 @@ +import button from '../button'; + +export const CardHorizontal = { + name: 'cardHorizontal', + label: 'Horizontal Card', + widget: 'object', + fields: [ + { + label: 'Category', + name: 'category', + widget: 'string', + i18n: true, + }, + { + label: 'Title', + name: 'title', + widget: 'string', + i18n: true, + }, + { + label: 'Text', + name: 'text', + widget: 'text', + i18n: true, + }, + button, + ], +}; diff --git a/layouts/partials/components/case-researchers-widget/case-researchers-widget.html b/layouts/partials/components/case-researchers-widget/case-researchers-widget.html new file mode 100644 index 00000000..9d761246 --- /dev/null +++ b/layouts/partials/components/case-researchers-widget/case-researchers-widget.html @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/layouts/partials/components/case-researchers-widget/index.ts b/layouts/partials/components/case-researchers-widget/index.ts new file mode 100644 index 00000000..07176789 --- /dev/null +++ b/layouts/partials/components/case-researchers-widget/index.ts @@ -0,0 +1,70 @@ +import button from "../button"; + +export default { + label: 'case', + required: false, + name: 'case', + widget: 'object', + collapsed: true, + fields: [ + { + label: 'Case ID', + name: 'caseid', + widget: 'string', + required: false, + }, + { + label: 'Case closed', + name: 'closed', + widget: 'boolean', + required: false, + }, + { + ...button, + label: 'Case link', + name: 'link', + required: false, + }, + { + label: 'Case lead', + name: 'lead', + widget: 'string', + required: false, + }, + { + label: 'Case lead Link', + name: 'leadlink', + widget: 'string', + required: false, + }, + { + label: 'Researchers', + name: 'researchers', + widget: 'list', + fields: [ + { + label: 'Label', + name: 'label', + widget: 'string', + }, + { + label: 'Link', + name: 'link', + widget: 'string', + required: false, + }, + ], + }, + { + label: 'Researchers (linked)', + name: 'researchers_people', + widget: 'relation', + collection: 'people', + value_field: '/who-we-are/team/people/{{ .Title | urlize }}', + display_fields: ['title'], + search_fields: ['title'], + multiple: true, + required: false, + }, + ], +}; diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 291f4e4f..e87dc11c 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -3,85 +3,103 @@ diff --git a/layouts/partials/js.html b/layouts/partials/js.html index f8dfe262..fd4f9918 100644 --- a/layouts/partials/js.html +++ b/layouts/partials/js.html @@ -3,9 +3,7 @@ {{ $js = $js | fingerprint }} {{ end }} - + - + \ No newline at end of file + + diff --git a/layouts/partials/link_icon.html b/layouts/partials/link_icon.html index 8b992467..de67b35f 100644 --- a/layouts/partials/link_icon.html +++ b/layouts/partials/link_icon.html @@ -9,4 +9,4 @@ {{ partial "svg/icon" "twitter" }} {{ else }} {{ partial "svg/icon" "website" }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/p/layout_open.html b/layouts/partials/p/layout_open.html index 8f999df3..8d9ae93f 100644 --- a/layouts/partials/p/layout_open.html +++ b/layouts/partials/p/layout_open.html @@ -1,3 +1,3 @@
-
\ No newline at end of file +
diff --git a/layouts/partials/p/section_open.html b/layouts/partials/p/section_open.html index 72591b5d..148f2ad0 100644 --- a/layouts/partials/p/section_open.html +++ b/layouts/partials/p/section_open.html @@ -1,5 +1,4 @@ - {{ partial "comment.html" (dict "comment" "section_open.html" ) }} -
-
-{{ partial "comment.html" (dict "comment" "/section_open.html" ) }} \ No newline at end of file +
+
+ {{ partial "comment.html" (dict "comment" "/section_open.html" ) }} diff --git a/layouts/partials/sections/double-decker/double-decker.html b/layouts/partials/sections/double-decker/double-decker.html new file mode 100644 index 00000000..c443d3fa --- /dev/null +++ b/layouts/partials/sections/double-decker/double-decker.html @@ -0,0 +1,17 @@ +
+
+
+ {{ .text | markdownify }} +
+
+
+
+
+
+ video +
+
+
+
+
diff --git a/layouts/partials/sections/double-decker/index.ts b/layouts/partials/sections/double-decker/index.ts new file mode 100644 index 00000000..dd9cfbcf --- /dev/null +++ b/layouts/partials/sections/double-decker/index.ts @@ -0,0 +1,14 @@ +export const DoubleDecker = { + name: 'doubleDecker', + label: 'Double Decker', + widget: 'object', + i18n: true, + fields: [ + { + label: 'Text', + name: 'text', + widget: 'markdown', + i18n: true, + }, + ], +}; diff --git a/layouts/partials/sections/faq/faq.html b/layouts/partials/sections/faq/faq.html new file mode 100644 index 00000000..aa0cd9f7 --- /dev/null +++ b/layouts/partials/sections/faq/faq.html @@ -0,0 +1,62 @@ + +{{ if .faq_enabled }} +
+ {{ $context := . }} + {{ $index := 0 }} + + +
+ +
+

{{ .title }}

+

{{ .intro }}

+ + {{ if .leftButton }} + {{ partial "components/button/button.html" .leftButton }} + {{ end }} + + {{ if .rightButton }} + {{ partial "components/button/button.html" .rightButton }} + {{ end }} +
+ +
+
+ {{ with index .faqgroups $index }} + {{ range $index, $element := .faqs }} +
+ + + + + + + + +
+ {{ end }} + {{ end }} +
+
+
+
+{{ end }} diff --git a/layouts/partials/sections/faq/index.ts b/layouts/partials/sections/faq/index.ts new file mode 100644 index 00000000..83fd17d5 --- /dev/null +++ b/layouts/partials/sections/faq/index.ts @@ -0,0 +1,88 @@ +import button from '../../components/button'; + +export const Faq = { + label: 'FAQ', + required: false, + name: 'faq', + widget: 'object', + collapsed: true, + fields: [ + { + label: 'Enable FAQ', // < hier + name: 'faq_enabled', + widget: 'boolean', + default: false, + }, + { + label: 'FAQ Title', + name: 'title', + widget: 'string', + default: 'faq', + required: false, + i18n: true, + }, + { + label: 'FAQ Opener', + name: 'opener', + widget: 'string', + required: false, + i18n: true, + }, + { + label: 'FAQ Intro', + name: 'intro', + widget: 'text', + required: false, + i18n: true, + }, + { + ...button, + label: 'Left button', + name: 'leftButton', + }, + { + ...button, + label: 'Right button', + name: 'rightButton', + }, + { + label: 'FAQ groups', + name: 'faqgroups', + widget: 'list', + i18n: true, + required: false, + fields: [ + { + label: 'heading', + name: 'heading', + widget: 'string', + required: false, + i18n: true, + }, + { + label: 'FAQs', + name: 'faqs', + widget: 'list', + i18n: true, + required: false, + fields: [ + { + label: 'Title', + name: 'title', + widget: 'string', + required: false, + i18n: true, + }, + { + label: 'Description', + name: 'description', + widget: 'markdown', + required: false, + i18n: true, + }, + ], + }, + ], + }, + ], +}; diff --git a/layouts/partials/sections/index.ts b/layouts/partials/sections/index.ts new file mode 100644 index 00000000..561adb3e --- /dev/null +++ b/layouts/partials/sections/index.ts @@ -0,0 +1,9 @@ +import { DoubleDecker } from './double-decker'; +import { Faq } from './faq'; +import { Paper } from './paper'; +import { Pill } from './pill'; +import { SuggestedArticles } from './suggested-articles'; +import { TitleText } from './title-text'; + +export const sections = [DoubleDecker, Paper, Pill, SuggestedArticles, TitleText, Faq]; +export const articleSections = [SuggestedArticles, Faq]; diff --git a/layouts/partials/sections/paper/index.ts b/layouts/partials/sections/paper/index.ts new file mode 100644 index 00000000..208df931 --- /dev/null +++ b/layouts/partials/sections/paper/index.ts @@ -0,0 +1,21 @@ +export const Paper = { + name: 'paper', + label: 'Paper', + widget: 'object', + i18n: true, + fields: [ + { + label: 'Text', + name: 'text', + widget: 'markdown', + i18n: true, + }, + { + label: 'Background enabled', + name: 'hasBackground', + required: false, + default: false, + widget: 'boolean', + }, + ], +}; diff --git a/layouts/partials/sections/paper/paper.html b/layouts/partials/sections/paper/paper.html new file mode 100644 index 00000000..b9e48b1c --- /dev/null +++ b/layouts/partials/sections/paper/paper.html @@ -0,0 +1,15 @@ +
+
+

{{ .text | markdownify }}

+
+
diff --git a/layouts/partials/sections/pill/index.ts b/layouts/partials/sections/pill/index.ts new file mode 100644 index 00000000..9b9747ae --- /dev/null +++ b/layouts/partials/sections/pill/index.ts @@ -0,0 +1,17 @@ +import button from '../../components/button'; + +export const Pill = { + name: 'pill', + label: 'Pill', + widget: 'object', + i18n: true, + fields: [ + { + label: 'Text', + name: 'text', + widget: 'markdown', + i18n: true, + }, + button, + ], +}; diff --git a/layouts/partials/sections/pill/pill.html b/layouts/partials/sections/pill/pill.html new file mode 100644 index 00000000..f05c904f --- /dev/null +++ b/layouts/partials/sections/pill/pill.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/layouts/partials/sections/sections.html b/layouts/partials/sections/sections.html new file mode 100644 index 00000000..eab8b181 --- /dev/null +++ b/layouts/partials/sections/sections.html @@ -0,0 +1,15 @@ +{{ range .Params.sections }} + {{ if eq .type "doubleDecker" }} + {{ partial "sections/double-decker/double-decker" . }} + {{ else if eq .type "paper" }} + {{ partial "sections/paper/paper" . }} + {{ else if eq .type "pill" }} + {{ partial "sections/pill/pill" . }} + {{ else if eq .type "suggestedArticles" }} + {{ partial "sections/suggested-articles/suggested-articles" . }} + {{ else if eq .type "titleText" }} + {{ partial "sections/title-text/title-text" . }} + {{ else if eq .type "faq" }} + {{ partial "sections/faq/faq" . }} + {{ end }} +{{ end }} diff --git a/layouts/partials/sections/suggested-articles/index.ts b/layouts/partials/sections/suggested-articles/index.ts new file mode 100644 index 00000000..6da2b474 --- /dev/null +++ b/layouts/partials/sections/suggested-articles/index.ts @@ -0,0 +1,19 @@ +import { CardHorizontal } from '../../components/card-horizontal'; + +export const SuggestedArticles = { + name: 'suggestedArticles', + label: 'Suggested articles section', + widget: 'object', + i18n: true, + fields: [ + { + label: 'Title', + name: 'title', + widget: 'string', + default: 'Suggested Articles', + i18n: true, + }, + { ...CardHorizontal, name: 'leftArticle', label: 'Left article' }, + { ...CardHorizontal, name: 'rightArticle', label: 'Right article' }, + ], +}; diff --git a/layouts/partials/sections/suggested-articles/suggested-articles.html b/layouts/partials/sections/suggested-articles/suggested-articles.html new file mode 100644 index 00000000..bb98e3dd --- /dev/null +++ b/layouts/partials/sections/suggested-articles/suggested-articles.html @@ -0,0 +1,9 @@ +
+
+

{{ .title }}

+
+ {{ partial "components/card-horizontal/card-horizontal.html" .leftArticle }} + {{ partial "components/card-horizontal/card-horizontal.html" .rightArticle }} +
+
+
\ No newline at end of file diff --git a/layouts/partials/sections/title-text/index.ts b/layouts/partials/sections/title-text/index.ts new file mode 100644 index 00000000..4c58085e --- /dev/null +++ b/layouts/partials/sections/title-text/index.ts @@ -0,0 +1,24 @@ +import button from '../../components/button'; + +export const TitleText = { + name: 'titleText', + label: 'Title with Text', + widget: 'object', + i18n: true, + fields: [ + { + label: 'Title', + name: 'title', + widget: 'string', + default: '', + i18n: true, + }, + { + label: 'Text', + name: 'text', + widget: 'markdown', + i18n: true, + }, + button, + ], +}; diff --git a/layouts/partials/sections/title-text/title-text.html b/layouts/partials/sections/title-text/title-text.html new file mode 100644 index 00000000..1784c94c --- /dev/null +++ b/layouts/partials/sections/title-text/title-text.html @@ -0,0 +1,10 @@ +
+ {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }} +
+

{{ .title }}

+
+
+

{{ .text | markdownify }}

+
+ {{ partial "p/layout_close" }} +
diff --git a/layouts/partials/styles.html b/layouts/partials/styles.html index f7eb9026..49ca539f 100644 --- a/layouts/partials/styles.html +++ b/layouts/partials/styles.html @@ -1,6 +1,7 @@ {{ $cssOpts := (dict "targetPath" "styles/screen.css" "enableSourceMap" (not hugo.IsProduction) ) }} {{ $screenCSS := resources.Get "scss/screen.scss" | toCSS $cssOpts | postCSS | minify | fingerprint }} + -{{- end -}} {{- end -}} +{{/* Only include image if image width exceeds breakpoint width, and if breakpoint shouldn't be skipped. */}} +{{- $width + := cond (eq .width -1) .img.Width .width +-}} +{{- if and (lt $width .img.Width) (ne $width -2) -}} + {{- with .img.Resize + (printf "%dx webp q%d %s" $width .quality .webpHint) + -}} + {{- $breakpoint := "" -}} + {{- with $.breakpoint -}} + {{- $breakpoint = printf "media=(min-width:%dpx)" . -}} + {{- end -}} + + {{- end -}} +{{- end -}} diff --git a/layouts/partials/tools/rimg/_img.html b/layouts/partials/tools/rimg/_img.html index 70477448..1b2b8af8 100644 --- a/layouts/partials/tools/rimg/_img.html +++ b/layouts/partials/tools/rimg/_img.html @@ -1,23 +1,44 @@ {{- with .img -}} {{ if eq .MediaType.SubType "svg" }} - + {{ else }} - - {{- $opts := dict "img" $.img "quality" $.quality "webpHint" $.webpHint -}} {{/* For each breakpoint, convert image to - WebP and resize according to `$widths` */}} {{- range $i, $v := $.breakpoints -}} {{- $width := index $.widths (add $i - 1) | default -1 -}} {{- $opts = dict "breakpoint" $v "width" $width | merge $opts -}} {{- partialCached - "tools/rimg/__img.html" $opts $.img.Key $opts -}} {{ end }} {{/* Handle the smallest breakpoint */}} {{- $width := - index $.widths 0 -}} {{- $width = cond (lt $.img.Width $width) -1 $width -}} {{- $opts = dict "breakpoint" nil "width" - $width | merge $opts -}} {{- partialCached "tools/rimg/__img.html" $opts $.img.Key $opts -}} {{/* Original, unresized - image as fallback */}} {{- $attributes := "" -}} {{- range $i, $v := slice "class" "alt" "loading" -}} {{- with index - $ . -}} {{- $attributes = printf `%s %s="%s"` $attributes $v . -}} {{- end -}} {{- end -}} + {{- $opts := dict "img" $.img "quality" $.quality "webpHint" $.webpHint -}} + {{/* For each breakpoint, convert image to + WebP and resize according to `$widths` + */}} + {{- range $i, $v := $.breakpoints -}} + {{- $width := index $.widths (add $i + 1) | default -1 + -}} + {{- $opts = dict "breakpoint" $v "width" $width | merge $opts -}} + {{- partialCached + "tools/rimg/__img.html" $opts $.img.Key $opts + -}} + {{ end }} + {{/* Handle the smallest breakpoint */}} + {{- $width := + index $.widths 0 + -}} + {{- $width = cond (lt $.img.Width $width) -1 $width -}} + {{- $opts = dict "breakpoint" nil "width" + $width | merge $opts + -}} + {{- partialCached "tools/rimg/__img.html" $opts $.img.Key $opts -}} + {{/* Original, unresized + image as fallback + */}} + {{- $attributes := "" -}} + {{- range $i, $v := slice "class" "alt" "loading" -}} + {{- with index + $ . + -}} + {{- $attributes = printf `%s %s="%s"` $attributes $v . -}} + {{- end -}} + {{- end -}} + src="{{ .RelPermalink }}" + {{ $attributes|safeHTMLAttr }} /> {{ end }} {{- end -}} diff --git a/layouts/partials/tools/rimg/img.html b/layouts/partials/tools/rimg/img.html index cef1a6df..df36f80d 100644 --- a/layouts/partials/tools/rimg/img.html +++ b/layouts/partials/tools/rimg/img.html @@ -1,3 +1,7 @@ -{{/* Set defaults */}} {{- $opts := . | merge (dict "alt" "" "class" "" "loading" "" "webpHint" "photo" "breakpoints" -(slice 768 992 1200) "widths" (slice 768 992 1200 -1) "quality" 75) }} {{ partialCached "tools/rimg/_img.html" $opts . -.img.Key -}} +{{/* Set defaults */}} +{{- $opts := . | merge (dict "alt" "" "class" "" "loading" "" "webpHint" "photo" "breakpoints" + (slice 768 992 1200) "widths" (slice 768 992 1200 -1) "quality" 75) +}} +{{ partialCached "tools/rimg/_img.html" $opts . + .img.Key +-}} diff --git a/layouts/partners/list.html b/layouts/partners/list.html index 39555b8e..e5f61522 100644 --- a/layouts/partners/list.html +++ b/layouts/partners/list.html @@ -1,9 +1,8 @@ {{ define "main" }} - {{ partial "breadcrumbs" . }} -
+
@@ -17,58 +16,60 @@

{{ .Params.opener }}

- {{ partial "p/section_open" (dict "classes" (slice "inverse"))}} + {{ partial "p/section_open" (dict "classes" (slice "inverse")) }} {{ partial "p/layout_open" (dict "classes" (slice "default")) }} - -
-

{{ .Params.partnerstitle }}

-

{{ .Params.partnersintro }}

-
- {{ range .Params.partnerlist }} - {{ partial "card-partner" (dict - "imageSource" .image - "name" .name - "link" .website - "cta" (i18n "visitsite") - "description" .description) - }} - {{ end }} -
-
- {{ partial "p/layout_close" }} - {{ partial "p/layout_open" (dict "classes" (slice "overlap-bottom")) }} - {{ with .Params.partnerquote }} -
-
- {{ with resources.Get .image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Communication Manager") }} - {{ end }} -
- -
+ + +
+

{{ .Params.partnerstitle }}

+

{{ .Params.partnersintro }}

+
+ {{ range .Params.partnerlist }} + {{ partial "card-partner" (dict + "imageSource" .image + "name" .name + "link" .website + "cta" (i18n "visitsite") + "description" .description) + }} + {{ end }} +
+
+ {{ partial "p/layout_close" }} + {{ partial "p/layout_open" (dict "classes" (slice "overlap-bottom")) }} + {{ with .Params.partnerquote }} +
+
+ {{ with resources.Get .image }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Communication Manager") }} {{ end }} - - {{ partial "p/layout_close" }} +
+ +
+ {{ end }} + + {{ partial "p/layout_close" }} {{ partial "p/section_close" }}
- {{ partial "p/section_open" (dict "classes" (slice "gradient-reverse"))}} - {{ partial "block/faq" (dict "context" . "targetHeading" "Become a partner") }} - {{ partial "block/proudestwork" . }} + {{ partial "p/section_open" (dict "classes" (slice "gradient-reverse")) }} + {{ partial "block/faq" (dict "context" . "targetHeading" "Become a partner") }} + {{ partial "block/proudestwork" . }} {{ partial "p/section_close" }}
-
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/people/list.html b/layouts/people/list.html index 1153e7cf..57504d38 100644 --- a/layouts/people/list.html +++ b/layouts/people/list.html @@ -1,7 +1,5 @@ {{ define "main" }} - -
-

Hello People list

-
- -{{ end }} \ No newline at end of file +
+

Hello People list

+
+{{ end }} diff --git a/layouts/people/single.html b/layouts/people/single.html index c11bca5c..4c8ead3f 100644 --- a/layouts/people/single.html +++ b/layouts/people/single.html @@ -1,39 +1,36 @@ {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} + {{ partial "p/section_open" (dict "classes" (slice "article" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "article")) }} -
- {{ partial "breadcrumbs" . }} - - {{ partial "p/section_open" (dict "classes" (slice "article" ))}} - {{ partial "p/layout_open" (dict "classes" (slice "article")) }} - - +
+
+

{{ .Title }}

+

{{ .Params.role }}

-
-
-

{{ .Title }}

-

{{ .Params.role }}

- -

{{ .Params.intro }}

+

{{ .Params.intro }}

-
- {{ .Content }} -
+
+ {{ .Content }} +
- {{ with .Params.csirt_posts }} -

{{ i18n "featured_articles" }}

-
    - {{ range . }} - {{ $page := site.GetPage "page" .url }} -
  • - {{ partial "svg/icon" "article" }} {{ .title }} -
  • - {{ end }} -
- {{ end }} + {{ with .Params.csirt_posts }} +

{{ i18n "featured_articles" }}

+
    + {{ range . }} + {{ $page := site.GetPage "page" .url }} +
  • + {{ partial "svg/icon" "article" }} + {{ .title }} +
  • + {{ end }} +
+ {{ end }} - {{ with .Params.csirt_cases }} + {{ with .Params.csirt_cases }}

{{ i18n "csirt_cases" }}

-
+ -
+ {{ $alt }} +
+ +
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
- -{{ end }} \ No newline at end of file + {{ partial "p/section_close" }} +
+{{ end }} diff --git a/layouts/shortcodes/callout.html b/layouts/shortcodes/callout.html index d6719e7f..4387ef43 100644 --- a/layouts/shortcodes/callout.html +++ b/layouts/shortcodes/callout.html @@ -1,3 +1,3 @@
- {{ .Inner | markdownify }} + {{ .Inner | markdownify }}
diff --git a/layouts/tag/list.html b/layouts/tag/list.html index 668f6836..c168ef50 100644 --- a/layouts/tag/list.html +++ b/layouts/tag/list.html @@ -1,22 +1,22 @@ - {{ define "main" }} -{{ partial "breadcrumbs" . }} -{{ $taxonomyObject := .Data.tag }} - + {{ partial "breadcrumbs" . }} + {{ $taxonomyObject := .Data.tag }} -
- {{ partial "p/section_open" (dict "classes" (slice "default")) }} +
+ {{ partial "p/section_open" (dict "classes" (slice "default")) }} {{ partial "p/layout_open" }} {{ template "_internal/pagination.html" . }} -

{{.Data.Term}}

-
- {{ range .Paginator.Pages }} +

{{ .Data.Term }}

+
+ {{ range .Paginator.Pages }}

{{ .Params.tag }}

-

{{ .Title }}

+

+ {{ .Title }} +

{{ .Params.intro | safeHTML | truncate 192 }}

- {{ end }} + {{ end }} -
- {{ template "_internal/pagination.html" . }} +
+ {{ template "_internal/pagination.html" . }} {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} -
- - + {{ partial "p/section_close" }} +
{{ end }} - diff --git a/layouts/team/list.html b/layouts/team/list.html index 27d72652..36afca8b 100644 --- a/layouts/team/list.html +++ b/layouts/team/list.html @@ -2,48 +2,49 @@
{{ partial "breadcrumbs" . }} - {{ partial "p/section_open" (dict "classes" (slice "article"))}} - {{ partial "p/layout_open" (dict "classes" (slice "article")) }} -
-

{{ .Params.opener }}

-
{{ .Params.intro|markdownify }}
- {{ if eq .Params.in_progress true }} -
In Progress.
- {{ else }} -
- {{ range $index, $element := .Params.teams }} -
-

{{ .title }}

-
-

{{ .description }}

- - {{ $firstFour := first 4 .members }} - {{ $theRest := after 4 .members }} -
- {{ range $firstFour }} - {{ partial "card-person" . }} - {{ end }} -
- {{ with $theRest }} -
- Show more membershide more members -
- {{ range . }} - {{ partial "card-person" . }} - {{ end }} -
+ {{ partial "p/section_open" (dict "classes" (slice "article")) }} + {{ partial "p/layout_open" (dict "classes" (slice "article")) }} +
+

{{ .Params.opener }}

+
{{ .Params.intro|markdownify }}
+ {{ if eq .Params.in_progress true }} +
In Progress.
+ {{ else }} +
+ {{ range $index, $element := .Params.teams }} +
+

{{ .title }}

+
+

{{ .description }}

-
-

- {{ end }} - -
+ {{ $firstFour := first 4 .members }} + {{ $theRest := after 4 .members }} +
+ {{ range $firstFour }} + {{ partial "card-person" . }} + {{ end }}
- {{ end }} + {{ with $theRest }} +
+ + Show more membershide more members + +
+ {{ range . }} + {{ partial "card-person" . }} + {{ end }} +
+
+

+ {{ end }} + +
{{ end }}
- {{ partial "p/layout_close" }} + {{ end }} +
+ {{ partial "p/layout_close" }} {{ partial "p/section_close" }}
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/volunteers/list.html b/layouts/volunteers/list.html index aa1320f4..2eb342f4 100644 --- a/layouts/volunteers/list.html +++ b/layouts/volunteers/list.html @@ -1,59 +1,66 @@ {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} +
+ + +
-
- {{ partial "breadcrumbs" . }} -
- - -
- - {{ partial "p/section_open" (dict "classes" (slice "inverse"))}} - {{ partial "p/layout_open" (dict "classes" (slice "default")) }} -
-

{{ .Params.corevaluestitle }}

-
- {{ range $index, $elements := .Params.corevalues }} -
-

- {{ add $index 1 }} - {{ .title }} -

-

{{ .description }}

-
- {{ end }} -
-
+ {{ partial "p/section_open" (dict "classes" (slice "inverse")) }} + {{ partial "p/layout_open" (dict "classes" (slice "default")) }} +
+

{{ .Params.corevaluestitle }}

+
+ {{ range $index, $elements := .Params.corevalues }} +
+

+ {{ add $index 1 }} + {{ .title }} +

+

{{ .description }}

+
+ {{ end }} +
+
{{ partial "p/layout_close" }} - {{ partial "p/section_close" }} - - {{ partial "p/section_open" (dict "classes" (slice "gradient"))}} + {{ partial "p/section_close" }} + {{ partial "p/section_open" (dict "classes" (slice "gradient")) }} {{ partial "block/faq" . }} - + {{ partial "block/proudestwork" . }} - {{ partial "p/section_close" }} + {{ partial "p/section_close" }} -
- {{ with resources.Get "images/6images.png" }} - who we are - {{ end }} -
-
-{{ end }} \ No newline at end of file +
+ {{ with resources.Get "images/6images.png" }} + who we are + {{ end }} +
+
+{{ end }} diff --git a/layouts/warningemail/list.html b/layouts/warningemail/list.html index 280d70e9..8005a793 100644 --- a/layouts/warningemail/list.html +++ b/layouts/warningemail/list.html @@ -1,85 +1,101 @@ {{ define "main" }}
-
{{ partial "breadcrumbs.html" . }} {{ partial "p/layout_open" (dict "classes" (slice "right")) }} -
-

{{ .Params.opener }}

-
-
-

{{ .Params.intro }}

- {{ i18n "learnmore" }} -
+
+

{{ .Params.opener }}

+
+
+

{{ .Params.intro }}

+ {{ i18n "learnmore" }} +
{{ partial "p/layout_close" }}
- {{ partial "p/section_open" (dict "classes" (slice "inverse" "overlap-top-lg"))}} + {{ partial "p/section_open" (dict "classes" (slice "inverse" "overlap-top-lg")) }} - {{ partial "p/layout_open" (dict "classes" (slice "overlap-top" )) }} - {{ with .Params.csirt }} -
-
-
-

{{ .title }}

-
{{ .description |markdownify }}
- CSIRT SITE {{partial "svg/icon" "external"}} -
-
- {{ with resources.Get "images/global/warningemail.png" }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "notification email") }} - {{ end }} -
-
+ {{ partial "p/layout_open" (dict "classes" (slice "overlap-top" )) }} + {{ with .Params.csirt }} +
+
+
+

{{ .title }}

+
{{ .description |markdownify }}
+ CSIRT SITE {{ partial "svg/icon" "external" }}
- {{ end }} - {{ partial "p/layout_close" }} - - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} - {{ with .Params.stepbystep }} -
-

{{.title }}

-
- {{ .description |markdownify}} -
+
+ {{ with resources.Get "images/global/warningemail.png" }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "notification email") }} + {{ end }}
+
+
+ {{ end }} + {{ partial "p/layout_close" }} -
-
-
-
1

{{.steps.step1title}}

-

{{ .steps.step1description }}

-
+ {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} + {{ with .Params.stepbystep }} +
+

{{ .title }}

+
+ {{ .description |markdownify }} +
+
-
-
2

{{.steps.step2title}}

-

{{ .steps.step2description }}

-
+
+
+
+
+ 1 +

{{ .steps.step1title }}

+
+

{{ .steps.step1description }}

+
-
-
3

{{.steps.step3title}}

-

{{ .steps.step3description }}

-
+
+
+ 2 +

{{ .steps.step2title }}

+
+

{{ .steps.step2description }}

+
-
-
4

{{.steps.step4title}}

-

{{ .steps.step4description }}

-
-
-
- {{ end }} - {{ partial "p/layout_close" }} +
+
+ 3 +

{{ .steps.step3title }}

+
+

{{ .steps.step3description }}

+
+ +
+
+ 4 +

{{ .steps.step4title }}

+
+

{{ .steps.step4description }}

+
+
+
+ {{ end }} + {{ partial "p/layout_close" }} {{ partial "p/section_close" }} - - {{ partial "p/section_open" (dict "classes" (slice "gradient"))}} - {{ partial "block/ethics" . }} - {{ partial "block/faq" . }} - {{ partial "block/contact" . }} + + {{ partial "p/section_open" (dict "classes" (slice "gradient")) }} + {{ partial "block/ethics" . }} + {{ partial "block/faq" . }} + {{ partial "block/contact" . }} {{ partial "p/section_close" }}
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/what-we-do/list.html b/layouts/what-we-do/list.html index 5fbe5eb5..b6119853 100644 --- a/layouts/what-we-do/list.html +++ b/layouts/what-we-do/list.html @@ -1,83 +1,85 @@ {{ define "main" }}
-
{{ partial "breadcrumbs.html" . }} {{ partial "p/layout_open" (dict "classes" (slice "right")) }} -
-

{{ .Params.opener }}

-
-
-

{{ .Params.intro }}

- {{ i18n "learnmore" }} -
+
+

{{ .Params.opener }}

+
+
+

{{ .Params.intro }}

+ {{ i18n "learnmore" }} +
{{ partial "p/layout_close" }}
- {{ with resources.Get "images/global/what_we_do_main.svg" }} + {{ with resources.Get "images/global/what_we_do_main.svg" }} What we do {{ end }}
- {{ partial "p/section_open" (dict "classes" (slice "inverse" ))}} + {{ partial "p/section_open" (dict "classes" (slice "inverse" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} -
-

{{ .Params.whatwedocontent.title }}

-
{{ .Params.whatwedocontent.description |markdownify }}
+
+

{{ .Params.whatwedocontent.title }}

+
{{ .Params.whatwedocontent.description |markdownify }}
+
+
+
    +
  • + {{ with resources.Get "/images/global/scan_for_vulnerabilities.png" }} + {{ .Params.scouting.title }} + {{ end }} +
    +

    {{ .Params.scouting.title }}

    +

    {{ .Params.scouting.description }}

    +
  • +
  • + {{ with resources.Get "/images/global/assessing_vulnerability_scope.png" }} + {{ .Params.assessing.title }} + {{ end }}
    -
      -
    • - {{ with resources.Get "/images/global/scan_for_vulnerabilities.png" }} - {{ .Params.scouting.title }} - {{ end }} -
      -

      {{ .Params.scouting.title }}

      -

      {{ .Params.scouting.description }}

      -
      -
    • -
    • - {{ with resources.Get "/images/global/assessing_vulnerability_scope.png" }} - {{ .Params.assessing.title }} - {{ end }} -
      -

      {{ .Params.assessing.title }}

      -

      {{ .Params.assessing.description }}

      -
      -
    • -
    • - {{ with resources.Get "/images/global/report_to_the_right_people.png" }} - {{ .Params.reporting.title }} - {{ end }} -
      -

      {{ .Params.reporting.title}}

      -

      {{ .Params.reporting.description }}

      -
      -
    • -
    +

    {{ .Params.assessing.title }}

    +

    {{ .Params.assessing.description }}

    - {{ partial "p/layout_close" }} - {{ partial "p/layout_open" (dict "classes" (slice "default")) }} -
    - {{ partial "block/divd_stats.html" .}} +
  • +
  • + {{ with resources.Get "/images/global/report_to_the_right_people.png" }} + {{ .Params.reporting.title }} + {{ end }} +
    +

    {{ .Params.reporting.title }}

    +

    {{ .Params.reporting.description }}

    - {{ partial "p/layout_close" }} +
  • +
+
+ {{ partial "p/layout_close" }} + {{ partial "p/layout_open" (dict "classes" (slice "default")) }} +
+ {{ partial "block/divd_stats.html" . }} +
+ {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} - {{ partial "p/section_open" (dict "classes" (slice "gradient" "pt-md" ))}} - - {{ partial "block/proudestwork" . }} - {{ partial "block/ethics" . }} + {{ partial "p/section_close" }} + {{ partial "p/section_open" (dict "classes" (slice "gradient" "pt-md" )) }} + {{ partial "block/proudestwork" . }} + {{ partial "block/ethics" . }} {{ partial "p/section_close" }} - {{ partial "p/section_open" (dict "classes" (slice "default"))}} - {{ partial "block/testimonials" }} + {{ partial "p/section_open" (dict "classes" (slice "default")) }} + {{ partial "block/testimonials" }} {{ partial "p/section_close" }}
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/who-we-are/list.html b/layouts/who-we-are/list.html index 55a7af71..08c6b8db 100644 --- a/layouts/who-we-are/list.html +++ b/layouts/who-we-are/list.html @@ -1,79 +1,78 @@ {{ define "main" }} -
- {{ partial "breadcrumbs.html" . }} + {{ partial "breadcrumbs.html" . }}
{{ partial "p/layout_open" (dict "classes" (slice "right")) }} -
-

{{ .Params.opener }}

-
-
-

{{ .Params.intro }}

- {{ i18n "learnmore" }} -
+
+

{{ .Params.opener }}

+
+
+

{{ .Params.intro }}

+ {{ i18n "learnmore" }} +
{{ partial "p/layout_close" }}
- {{ with resources.Get "images/global/who_we_are_main.svg" }} + {{ with resources.Get "images/global/who_we_are_main.svg" }} who we are {{ end }}
- - {{ partial "p/section_open" (dict "classes" (slice "inverse" ))}} - - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} - {{ with .Params.missionandhistory }} -
-

{{ .title }}

-

{{ .intro }}

-
-
-

 

-

{{ .description }}

-
- {{ end }} - {{ partial "p/layout_close" }} + {{ partial "p/section_open" (dict "classes" (slice "inverse" )) }} + {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2")) }} + {{ with .Params.missionandhistory }} +
+

{{ .title }}

+

{{ .intro }}

+
+
+

 

+

{{ .description }}

+
+ {{ end }} + {{ partial "p/layout_close" }} + {{ partial "p/layout_open" (dict "classes" (slice "overlap-bottom")) }} + {{ with .Params.communicationmanager }} +
+
+ {{ with resources.Get .image }} + {{ partial "tools/rimg/img" (dict "img" . "alt" "Communication Manager") }} + {{ end }} +
+ +
+ {{ end }} + {{ partial "p/layout_close" }} - {{ partial "p/layout_open" (dict "classes" (slice "overlap-bottom")) }} - {{ with .Params.communicationmanager }} -
-
- {{ with resources.Get .image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" "Communication Manager") }} - {{ end }} -
- -
- {{ end }} - {{ partial "p/layout_close" }} - {{ partial "p/section_close" }} - + +
- {{ partial "p/section_open" (dict "classes" (slice "default" "round" "round-topright"))}} + {{ partial "p/section_open" (dict "classes" (slice "default" "round" "round-topright")) }} + + {{ partial "block/divdfamily" . }} + {{ partial "block/familycta" . }} + {{ partial "block/csirt" . }} - {{ partial "block/divdfamily" . }} - {{ partial "block/familycta" . }} - {{ partial "block/csirt" . }} - {{ partial "p/section_close" }}
- {{ with resources.Get "images/6images.png" }} + {{ with resources.Get "images/6images.png" }} who we are {{ end }}
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/why-our-work-matters/index.ts b/layouts/why-our-work-matters/index.ts new file mode 100644 index 00000000..01408b56 --- /dev/null +++ b/layouts/why-our-work-matters/index.ts @@ -0,0 +1,19 @@ +import { sections } from '../partials/sections'; + +export const WhyOurWorkMatters = { + name: 'WOWM', + label: 'Why our work matters', + folder: 'content/why-our-work-matters', + slug: '_index', + create: false, + i18n: true, + fields: [ + { + label: 'Sections', + label_singular: 'Section', + name: 'sections', + widget: 'list', + types: sections, + }, + ], +}; diff --git a/layouts/why-our-work-matters/section.html b/layouts/why-our-work-matters/section.html index 3bfdabe7..770f3a45 100644 --- a/layouts/why-our-work-matters/section.html +++ b/layouts/why-our-work-matters/section.html @@ -1,93 +1,8 @@ {{ define "main" }} +
+ {{ partial "breadcrumbs" . }} -
-
-
- {{ partial "breadcrumbs" . }} - {{ partial "p/layout_open" (dict "classes" (slice "right" "vcenter")) }} -
-

{{ .Params.title }}

-
-
-

{{ .Params.intro | markdownify }}

-
- {{ partial "p/layout_close" }} -
-
- {{ partial "p/section_open" (dict "classes" (slice "inverse"))}} + {{ partial "sections/sections" . }} -
- {{ partial "p/layout_open" (dict "classes" (slice "article" )) }} -
-
-

{{ .Params.contenttitle | markdownify }}

- - {{ .Content }} -
-
- {{ partial "p/layout_close" }} - - {{ partial "p/layout_open" (dict "classes" (slice "article" "opener" )) }} -
-
- {{ .Params.opener | markdownify }} -
-
- {{ partial "p/layout_close" }} - - {{ partial "p/layout_open" (dict "classes" (slice "columns" "columns-2" "stretch")) }} -
- {{ with resources.Get .Params.leftblock.image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.leftblock.alt) }} - {{ end }} -
-
-

{{ .Params.leftblock.title }}

-

{{ .Params.leftblock.content | markdownify }}

-
- {{ if .Params.leftblock.learnmore }} - - {{ end }} -
-
- -
- {{ with resources.Get .Params.rightblock.image }} - {{ partial "tools/rimg/img" (dict "img" . "alt" .Params.rightblock.alt) }} - {{ end }} -
-
-

{{ .Params.rightblock.title }}

-

{{ .Params.rightblock.content | markdownify }}

-
- {{ if .Params.rightblock.learnmore }} - - {{ end }} -
-
- - {{ partial "p/layout_close" }} - - {{ if .Params.casehighlight.content }} - {{ partial "p/layout_open" (dict "classes" (slice "article" )) }} -
-
-

{{ .Params.casehighlight.title | markdownify }}

- - {{ .Params.casehighlight.content | markdownify }} -
-
- {{ partial "p/layout_close" }} - {{ end }} - -
- - {{ partial "p/section_close" }} - -
- -{{ end }} \ No newline at end of file +
+{{ end }} diff --git a/package-lock.json b/package-lock.json index 7110eb37..39928ce0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "divd", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,31 +9,27 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@sveltia/cms": "^0.47.1", "axios": "^1.7.4", + "caniuse-lite": "^1.0.30001683", "gray-matter": "^4.0.3", "lunr": "^2.3.9", "yargs": "^17.7.2" }, "devDependencies": { "autoprefixer": "^10.4.20", + "buffer": "^6.0.3", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.29.1", "postcss": "^8.4.45", - "postcss-cli": "^10.1.0", - "prettier": "^3.0.3", + "postcss-cli": "^11.0.0", + "prettier": "^3.3.3", "prettier-plugin-go-template": "^0.0.15", + "process": "^0.11.10", "tailwindcss": "^3.4.10", - "typescript": "^5.2.2" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "typescript": "^5.2.2", + "vite": "^5.4.11" } }, "node_modules/@alloc/quick-lru": { @@ -41,6 +37,7 @@ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -48,26 +45,436 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "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" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "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.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -77,6 +484,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -95,40 +503,25 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "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", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -141,6 +534,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -153,13 +547,16 @@ "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==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "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", @@ -173,10 +570,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -189,6 +587,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -200,13 +599,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -224,6 +625,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -239,6 +641,7 @@ "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", @@ -255,7 +658,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -269,7 +672,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -278,7 +681,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -287,25 +690,168 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "node_modules/@lexical/clipboard": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.20.0.tgz", + "integrity": "sha512-oHmb9kSVHjeFCd2q8VrEXW22doUHMJ6cGXqo7Ican7Ljl4/9OgRWr+cq55yntoSaJfCrRYkTiZCLDejF2ciSiA==", + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", + "@lexical/html": "0.20.0", + "@lexical/list": "0.20.0", + "@lexical/selection": "0.20.0", + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/code": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.20.0.tgz", + "integrity": "sha512-zFsVGuzIn4CQxEnlW4AG/Hq6cyATVZ4fZTxozE/f5oK4vDPvnY/goRxrzSuAMX73A/HRX3kTEzMDcm4taRM3Mg==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.20.0", + "lexical": "0.20.0", + "prismjs": "^1.27.0" + } + }, + "node_modules/@lexical/dragon": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.20.0.tgz", + "integrity": "sha512-3DAHF8mSKiPZtXCqu2P8ynSwS3fGXzg4G/V0lXNjBxhmozjzUzWZRWIWtmTlWdEu9GXsoyeM3agcaxyDPJJwkA==", + "license": "MIT", + "dependencies": { + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/history": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.20.0.tgz", + "integrity": "sha512-dXtIS31BU6RmLX2KwLAi1EgGl+USeyi+rshh19azACXHPFqONZgPd2t21LOLSFn7C1/W+cSp/kqVDlQVbZUZRA==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/html": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.20.0.tgz", + "integrity": "sha512-ob7QHkEv+mhaZjlurDj90UmEyN9G4rzBPR5QV42PLnu1qMSviMEdI5V3a5/A5aFf/FDDQ+0GAgWBFnA/MEDczQ==", + "license": "MIT", + "dependencies": { + "@lexical/selection": "0.20.0", + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/link": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.20.0.tgz", + "integrity": "sha512-zicDcfgRZPRFZ8WOZv5er0Aqkde+i7QoFVkLQD4dNLLORjoMSJOISJH6VEdjBl3k7QJTxbfrt+xT5d/ZsAN5GA==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/list": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.20.0.tgz", + "integrity": "sha512-ufSse8ui3ooUe0HA/yF/9STrG8wYhIDLMRhELOw80GFCkPJaxs6yRvjfmJooH5IC88rpUJ5XXFFiZKfGxEZLEw==", + "license": "MIT", + "dependencies": { + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/markdown": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.20.0.tgz", + "integrity": "sha512-ZoGsECejp9z6MEvc8l81b1h1aWbB3sTq6xOFeUTbDL5vKpA67z5CmQQLi0uZWrygrbO9dSE3Q/JGcodUrczxbw==", + "license": "MIT", + "dependencies": { + "@lexical/code": "0.20.0", + "@lexical/link": "0.20.0", + "@lexical/list": "0.20.0", + "@lexical/rich-text": "0.20.0", + "@lexical/text": "0.20.0", + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/rich-text": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.20.0.tgz", + "integrity": "sha512-BR1pACdMA+Ymef0f5EN1y+9yP8w7S+9MgmBP1yjr3w4KdqRnfSaGWyxwcHU8eA+zu16QfivpB6501VJ90YeuXw==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.20.0", + "@lexical/selection": "0.20.0", + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/selection": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.20.0.tgz", + "integrity": "sha512-YnkH5UCMNN/em95or/6uwAV31vcENh1Roj+JOg5KD+gJuA7VGdDCy0vZl/o0+1badXozeZ2VRxXNC6JSK7T4+A==", + "license": "MIT", + "dependencies": { + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/table": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.20.0.tgz", + "integrity": "sha512-qHuK2rvQUoQDx62YpvJE3Ev4yK9kjRFo79IDBapxrhoXg/wCGQOjMBzVD3G5PWkhyl/GDnww80GwYjLloQLQzg==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.20.0", + "@lexical/utils": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/text": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.20.0.tgz", + "integrity": "sha512-Fu64i5CIlEOlgucSdp9XFqB2XqoRsw4at76n93+6RF4+LgGDnu4nLXQVCVxNmLcGyh2WgczuTpnk5P2mHNAIUA==", + "license": "MIT", + "dependencies": { + "lexical": "0.20.0" + } + }, + "node_modules/@lexical/utils": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.20.0.tgz", + "integrity": "sha512-sXIa2nowrNxY8VcjjuxZbJ/HovIql8bmInNaxBR03JAYfqMiL5I5/dYgjOQJV49NJnuR1uTY2GwVxVTXCTFUCw==", + "license": "MIT", + "dependencies": { + "@lexical/list": "0.20.0", + "@lexical/selection": "0.20.0", + "@lexical/table": "0.20.0", + "lexical": "0.20.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -317,6 +863,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -326,6 +873,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -339,28 +887,399 @@ "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/@rollup/rollup-android-arm-eabi": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", + "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", + "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", + "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", + "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", + "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", + "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", + "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", + "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", + "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", + "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", + "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", + "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", + "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", + "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", + "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", + "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", + "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", + "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", + "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sveltia/cms": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@sveltia/cms/-/cms-0.47.1.tgz", + "integrity": "sha512-bAqGJw9eN5/U34YUmQTZutWIThWbVt7cqiQzeqrUtpSPHy3UHx/k63ujX9ej56oOlkPUsq+zgf9Ngtj4Z/DjIA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/transliterate": "^1.6.0", + "@sveltia/ui": "^0.20.0", + "@sveltia/utils": "^0.5.0", + "deepmerge": "^4.3.1", + "fast-deep-equal": "^3.1.3", + "flat": "^6.0.1", + "isomorphic-dompurify": "^2.16.0", + "marked": "^15.0.2", + "marked-bidi": "^1.0.12", + "mime": "^4.0.4", + "moment": "^2.30.1", + "parse-entities": "^4.0.1", + "smol-toml": "^1.3.1", + "yaml": "^2.6.1" + } + }, + "node_modules/@sveltia/ui": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@sveltia/ui/-/ui-0.20.0.tgz", + "integrity": "sha512-z4/rLIgBX0iPdCVcyVWVCcqnskNjTd70KRuHFh/m7EqYO9Tb9RUfw5u0c0iLfAE+hhewKYf1QO4rw7vYzXQDig==", + "license": "MIT", + "dependencies": { + "@lexical/code": "^0.20.0", + "@lexical/dragon": "^0.20.0", + "@lexical/history": "^0.20.0", + "@lexical/link": "^0.20.0", + "@lexical/list": "^0.20.0", + "@lexical/markdown": "^0.20.0", + "@lexical/rich-text": "^0.20.0", + "@lexical/selection": "^0.20.0", + "@lexical/table": "^0.20.0", + "@lexical/utils": "^0.20.0", + "@sveltia/utils": "^0.5.0", + "lexical": "^0.20.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/@sveltia/utils": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sveltia/utils/-/utils-0.5.0.tgz", + "integrity": "sha512-X0YzaBc1RZCGsiFNkySBKudL8PN8rsLhzV7l/kREFgimlkEpr9H0HBWixDL4mjmx6S5LY3ygHmeLQHlvNm3e7Q==", + "license": "MIT", + "dependencies": { + "base32-encode": "^2.0.0" + } + }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "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" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -373,15 +1292,39 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -397,6 +1340,7 @@ "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" } @@ -405,6 +1349,7 @@ "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" }, @@ -419,13 +1364,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -438,14 +1385,24 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">= 0.4" } }, "node_modules/array-buffer-byte-length": { @@ -453,6 +1410,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -469,6 +1427,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -489,6 +1448,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -509,6 +1469,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -527,6 +1488,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -545,6 +1507,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -565,7 +1528,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/autoprefixer": { "version": "10.4.20", @@ -586,6 +1550,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", @@ -609,6 +1574,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" }, @@ -620,28 +1586,77 @@ } }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/base32-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-2.0.0.tgz", + "integrity": "sha512-mlmkfc2WqdDtMl/id4qm3A7RjW6jxcbAoMjdRmsPiwQP0ufD4oXItYMnPgVHe80lnAIy+1xwzhHE1s4FoIceSw==", + "license": "MIT", + "dependencies": { + "to-data-view": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "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==", + "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/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/brace-expansion": { @@ -649,6 +1664,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -659,6 +1675,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -667,9 +1684,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -685,11 +1702,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -698,11 +1716,37 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -722,6 +1766,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -731,15 +1776,15 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001657", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001657.tgz", - "integrity": "sha512-DPbJAlP8/BAXy3IgiWmZKItubb3TYGP0WscQQlVGIfT4s/YlFYVuJgyOsQNP7rJRChx/qdMeLJQJP0Sgg2yjNA==", - "dev": true, + "version": "1.0.30001683", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001683.tgz", + "integrity": "sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==", "funding": [ { "type": "opencollective", @@ -753,13 +1798,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -771,17 +1818,42 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -794,14 +1866,31 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -815,6 +1904,7 @@ "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" }, @@ -825,12 +1915,14 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "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" }, @@ -838,32 +1930,26 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -878,6 +1964,7 @@ "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" }, @@ -885,11 +1972,37 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.7.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -907,6 +2020,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -924,6 +2038,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -937,12 +2052,12 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -953,17 +2068,47 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "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/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", @@ -981,6 +2126,7 @@ "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", @@ -997,6 +2143,7 @@ "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" } @@ -1006,39 +2153,46 @@ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.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==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "Apache-2.0" }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -1046,28 +2200,53 @@ "node": ">=6.0.0" } }, + "node_modules/dompurify": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.1.tgz", + "integrity": "sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "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 + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.15.tgz", - "integrity": "sha512-Z4rIDoImwEJW+YYKnPul4DzqsWVqYetYVN3XqDmRpgV0mjz0hYTaeeh+8/9CL1bk3AHYmF4freW/NTiVoXA2gA==", - "dev": true + "version": "1.5.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==", + "dev": true, + "license": "ISC" }, "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==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "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/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -1084,7 +2263,7 @@ "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", @@ -1100,10 +2279,10 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", + "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", @@ -1128,6 +2307,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -1140,6 +2320,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -1149,6 +2330,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -1161,6 +2343,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -1175,6 +2358,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -1184,6 +2368,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1196,37 +2381,79 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "dev": true, + "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-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "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.", "dev": true, + "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.0", - "@humanwhocodes/config-array": "^0.11.14", + "@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", @@ -1276,6 +2503,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, + "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -1295,6 +2523,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -1306,15 +2535,17 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -1332,39 +2563,43 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -1372,6 +2607,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -1381,6 +2617,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -1393,6 +2630,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -1409,6 +2647,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1416,41 +2655,32 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/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==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, + "license": "MIT", "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" + "node": ">=10" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esm-env": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz", + "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==", + "license": "MIT", + "peer": true + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -1467,6 +2697,7 @@ "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" @@ -1476,10 +2707,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -1487,11 +2719,23 @@ "node": ">=0.10" } }, + "node_modules/esrap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", + "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1504,6 +2748,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1513,6 +2758,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1521,6 +2767,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -1532,13 +2779,14 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1550,23 +2798,39 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "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==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -1576,6 +2840,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -1588,6 +2853,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1600,6 +2866,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1611,11 +2878,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-6.0.1.tgz", + "integrity": "sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "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==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -1626,21 +2906,23 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -1655,6 +2937,7 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -1664,6 +2947,7 @@ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -1676,9 +2960,10 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1693,6 +2978,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -1702,10 +2988,11 @@ } }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1719,7 +3006,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -1727,6 +3015,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1740,6 +3029,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1749,6 +3039,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1767,6 +3058,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1775,6 +3067,7 @@ "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.*" } @@ -1784,6 +3077,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1803,6 +3097,7 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1815,6 +3110,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -1831,7 +3127,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1848,15 +3146,16 @@ } }, "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==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { @@ -1864,6 +3163,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1875,12 +3175,14 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -1890,31 +3192,21 @@ } }, "node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1925,6 +3217,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1936,18 +3229,21 @@ "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==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", @@ -1958,11 +3254,34 @@ "node": ">=6.0" } }, + "node_modules/gray-matter/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/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1972,6 +3291,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1981,6 +3301,7 @@ "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" }, @@ -1993,6 +3314,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2005,6 +3327,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2017,6 +3340,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -2032,6 +3356,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2039,11 +3364,83 @@ "node": ">= 0.4" } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.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==", + "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": "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==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -2053,6 +3450,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2069,6 +3467,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -2077,7 +3476,9 @@ "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.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2087,13 +3488,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -2103,11 +3506,36 @@ "node": ">= 0.4" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -2119,11 +3547,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -2136,6 +3581,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2148,6 +3594,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2164,6 +3611,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" }, @@ -2172,12 +3620,16 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2188,6 +3640,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -2203,6 +3656,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2213,10 +3667,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2226,23 +3691,55 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.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==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2250,11 +3747,35 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2267,6 +3788,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2276,6 +3798,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2291,15 +3814,33 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.6" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2311,11 +3852,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -2331,6 +3886,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2346,6 +3902,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -2361,6 +3918,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -2371,11 +3929,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -2383,23 +3955,57 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/isomorphic-dompurify": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.16.0.tgz", + "integrity": "sha512-cXhX2owp8rPxafCr0ywqy2CGI/4ceLNgWkWBEvUz64KTbtg3oRL2ZRqq/zW0pzt4YtDjkHLbwcp/lozpKzAQjg==", + "license": "MIT", + "dependencies": { + "@types/dompurify": "^3.0.5", + "dompurify": "^3.1.7", + "jsdom": "^25.0.1" + }, + "engines": { + "node": ">=18" + } }, "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" }, @@ -2415,57 +4021,91 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "license": "MIT", + "dependencies": { + "cssstyle": "^4.1.0", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "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==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } + "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -2478,6 +4118,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -2486,6 +4127,7 @@ "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" } @@ -2495,6 +4137,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -2503,79 +4146,398 @@ "node": ">= 0.8.0" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true + "node_modules/lexical": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.20.0.tgz", + "integrity": "sha512-lJEHLFACXqRf3u/VlIOu9T7MJ51O4la92uOBwiS9Sx+juDK3Nrru5Vgl1aUirV1qK8XEM3h6Org2HcrsrzZ3ZA==", + "license": "MIT" }, - "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==", + "node_modules/lightningcss": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.28.1.tgz", + "integrity": "sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ==", "dev": true, + "license": "MPL-2.0", + "optional": true, + "peer": true, "dependencies": { - "p-locate": "^5.0.0" + "detect-libc": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.28.1", + "lightningcss-darwin-x64": "1.28.1", + "lightningcss-freebsd-x64": "1.28.1", + "lightningcss-linux-arm-gnueabihf": "1.28.1", + "lightningcss-linux-arm64-gnu": "1.28.1", + "lightningcss-linux-arm64-musl": "1.28.1", + "lightningcss-linux-x64-gnu": "1.28.1", + "lightningcss-linux-x64-musl": "1.28.1", + "lightningcss-win32-arm64-msvc": "1.28.1", + "lightningcss-win32-x64-msvc": "1.28.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.1.tgz", + "integrity": "sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.1.tgz", + "integrity": "sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": ">= 8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.1.tgz", + "integrity": "sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.1.tgz", + "integrity": "sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.1.tgz", + "integrity": "sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.1.tgz", + "integrity": "sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.1.tgz", + "integrity": "sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.1.tgz", + "integrity": "sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.1.tgz", + "integrity": "sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.1.tgz", + "integrity": "sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT", + "peer": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "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/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/marked": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.2.tgz", + "integrity": "sha512-85RUkoYKIVB21PbMKrnD6aCl9ws+XKEyhJNMbLn206NyD3jbBo7Ec7Wi4Jrsn4dV1a2ng7K/jfkmIN0DNoS41w==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-bidi": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/marked-bidi/-/marked-bidi-1.0.12.tgz", + "integrity": "sha512-Laf+VFD+yIGInXIkOKiL/sRzorUGMjSbHpJu7AWXecXXmq+/mH5CVCyZkvHZDYLK92yp4CX7tvkQncmYdsAhAw==", + "license": "MIT", + "peerDependencies": { + "marked": ">= 4 < 16" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, + "node_modules/mime": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", + "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, "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" } @@ -2584,6 +4546,7 @@ "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" }, @@ -2596,6 +4559,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2608,6 +4572,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2617,21 +4582,32 @@ "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/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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "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/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -2649,6 +4625,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2660,19 +4637,22 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "dev": true, + "license": "MIT" }, "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" } @@ -2682,15 +4662,23 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/nwsapi": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "license": "MIT" + }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2700,15 +4688,20 @@ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2718,6 +4711,7 @@ "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" } @@ -2727,6 +4721,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -2745,6 +4740,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2759,6 +4755,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2777,6 +4774,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2791,6 +4789,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2808,22 +4807,24 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -2834,6 +4835,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2849,6 +4851,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2860,16 +4863,18 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "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/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -2877,11 +4882,44 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2891,6 +4929,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2900,6 +4939,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2908,13 +4948,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "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" @@ -2927,25 +4969,31 @@ } }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2958,6 +5006,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2967,6 +5016,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -2976,14 +5026,15 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -2999,28 +5050,30 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-cli": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", - "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz", + "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^3.3.0", "dependency-graph": "^0.11.0", "fs-extra": "^11.0.0", "get-stdin": "^9.0.0", - "globby": "^13.0.0", + "globby": "^14.0.0", "picocolors": "^1.0.0", - "postcss-load-config": "^4.0.0", + "postcss-load-config": "^5.0.0", "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", @@ -3031,17 +5084,71 @@ "postcss": "index.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.0.0" } }, + "node_modules/postcss-cli/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-cli/node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, "node_modules/postcss-import": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -3059,6 +5166,7 @@ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dev": true, + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -3074,21 +5182,28 @@ } }, "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" }, "engines": { "node": ">= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" @@ -3102,6 +5217,19 @@ } } }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/postcss-nested": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", @@ -3117,6 +5245,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -3128,10 +5257,21 @@ } }, "node_modules/postcss-reporter": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", - "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "thenby": "^1.3.4" @@ -3139,10 +5279,6 @@ "engines": { "node": ">=10" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.1.0" } @@ -3152,6 +5288,7 @@ "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" @@ -3164,22 +5301,25 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -3195,6 +5335,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-go-template/-/prettier-plugin-go-template-0.0.15.tgz", "integrity": "sha512-WqU92E1NokWYNZ9mLE6ijoRg6LtIGdLMePt2C7UBDjXeDH9okcRI3zRqtnWR4s5AloiqyvZ66jNBAa9tmRY5EQ==", "dev": true, + "license": "MIT", "dependencies": { "ulid": "^2.3.0" }, @@ -3210,20 +5351,41 @@ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/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==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3246,13 +5408,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -3262,6 +5426,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -3269,16 +5434,39 @@ "node": ">=8.10.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -3291,6 +5479,7 @@ "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" } @@ -3300,6 +5489,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3317,6 +5507,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -3326,6 +5517,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3335,7 +5527,9 @@ "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", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -3346,6 +5540,50 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", + "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.27.4", + "@rollup/rollup-android-arm64": "4.27.4", + "@rollup/rollup-darwin-arm64": "4.27.4", + "@rollup/rollup-darwin-x64": "4.27.4", + "@rollup/rollup-freebsd-arm64": "4.27.4", + "@rollup/rollup-freebsd-x64": "4.27.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", + "@rollup/rollup-linux-arm-musleabihf": "4.27.4", + "@rollup/rollup-linux-arm64-gnu": "4.27.4", + "@rollup/rollup-linux-arm64-musl": "4.27.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", + "@rollup/rollup-linux-riscv64-gnu": "4.27.4", + "@rollup/rollup-linux-s390x-gnu": "4.27.4", + "@rollup/rollup-linux-x64-gnu": "4.27.4", + "@rollup/rollup-linux-x64-musl": "4.27.4", + "@rollup/rollup-win32-arm64-msvc": "4.27.4", + "@rollup/rollup-win32-ia32-msvc": "4.27.4", + "@rollup/rollup-win32-x64-msvc": "4.27.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3365,6 +5603,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -3374,6 +5613,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -3392,6 +5632,7 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3404,10 +5645,29 @@ "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/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" @@ -3421,6 +5681,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -3430,6 +5691,7 @@ "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", @@ -3447,6 +5709,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -3462,6 +5725,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -3474,6 +5738,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3483,6 +5748,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -3501,6 +5767,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -3513,6 +5780,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -3520,11 +5788,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smol-toml": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", + "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "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==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3532,12 +5813,14 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "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", @@ -3553,6 +5836,7 @@ "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", @@ -3567,6 +5851,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3585,6 +5870,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3599,6 +5885,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3615,6 +5902,7 @@ "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" }, @@ -3628,6 +5916,7 @@ "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" }, @@ -3640,6 +5929,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -3648,6 +5938,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3657,6 +5948,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3669,6 +5961,7 @@ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -3691,15 +5984,27 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/sucrase/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==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -3720,6 +6025,7 @@ "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" }, @@ -3735,6 +6041,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3747,6 +6054,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3754,34 +6062,66 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svelte": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.7.tgz", + "integrity": "sha512-cEhPGuLHiH2+Z8B1FwQgiZJgA39uUmJR4516TKrM5zrp0/cuwJkfhUfcTxhAkznanAF5fXUKzvYR4o+Ksx3ZCQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "acorn-typescript": "^1.4.13", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "esm-env": "^1.0.0", + "esrap": "^1.2.2", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, "node_modules/tailwindcss": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", - "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", "dev": true, + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", + "jiti": "^1.21.6", "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -3791,35 +6131,26 @@ "node": ">=14.0.0" } }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -3829,6 +6160,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -3836,11 +6168,39 @@ "node": ">=0.8" } }, + "node_modules/tldts": { + "version": "6.1.63", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.63.tgz", + "integrity": "sha512-YWwhsjyn9sB/1rOkSRYxvkN/wl5LFM1QDv6F2pVR+pb/jFne4EOBxHfkKVWvDIBEAw9iGOwwubHtQTm0WRT5sQ==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.63" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.63", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.63.tgz", + "integrity": "sha512-H1XCt54xY+QPbwhTgmxLkepX0MVHu3USfMmejiCOdkMbRcP22Pn2FVF127r/GWXVDmXTRezyF3Ckvhn4Fs6j7Q==", + "license": "MIT" + }, + "node_modules/to-data-view": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-2.0.0.tgz", + "integrity": "sha512-RGEM5KqlPHr+WVTPmGNAXNeFEmsBnlkxXaIfEpUYV0AST2Z5W1EGq9L/MENFrMMmL2WQr1wjkmZy/M92eKhjYA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -3848,17 +6208,43 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -3866,11 +6252,25 @@ "strip-bom": "^3.0.0" } }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -3883,6 +6283,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3895,6 +6296,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -3909,6 +6311,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -3924,17 +6327,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -3944,17 +6349,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -3964,10 +6370,11 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3981,6 +6388,7 @@ "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", "dev": true, + "license": "MIT", "bin": { "ulid": "bin/cli.js" } @@ -3990,6 +6398,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -4000,19 +6409,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "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/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -4028,9 +6451,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -4044,6 +6468,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -4052,13 +6477,130 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dev": true, + "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/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -4074,6 +6616,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -4085,17 +6628,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -4104,12 +6655,62 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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" }, @@ -4126,6 +6727,7 @@ "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", @@ -4142,21 +6744,62 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "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/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" }, "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/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "dev": true, + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -4165,6 +6808,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -4182,6 +6826,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -4191,2913 +6836,20 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "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==", - "dev": true - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "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 - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@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==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - } }, - "array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "requires": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "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, - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - } - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001657", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001657.tgz", - "integrity": "sha512-DPbJAlP8/BAXy3IgiWmZKItubb3TYGP0WscQQlVGIfT4s/YlFYVuJgyOsQNP7rJRChx/qdMeLJQJP0Sgg2yjNA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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 - }, - "data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-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, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "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, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.15.tgz", - "integrity": "sha512-Z4rIDoImwEJW+YYKnPul4DzqsWVqYetYVN3XqDmRpgV0mjz0hYTaeeh+8/9CL1bk3AHYmF4freW/NTiVoXA2gA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true - }, - "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@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" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true - }, - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "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==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "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==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "requires": { - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "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==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true - }, - "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==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "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 - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true - }, - "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 - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "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==", - "dev": true - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - } - }, - "object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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, - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true - }, - "postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", - "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" - } - }, - "postcss-cli": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", - "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", - "dev": true, - "requires": { - "chokidar": "^3.3.0", - "dependency-graph": "^0.11.0", - "fs-extra": "^11.0.0", - "get-stdin": "^9.0.0", - "globby": "^13.0.0", - "picocolors": "^1.0.0", - "postcss-load-config": "^4.0.0", - "postcss-reporter": "^7.0.0", - "pretty-hrtime": "^1.0.3", - "read-cache": "^1.0.0", - "slash": "^5.0.0", - "yargs": "^17.0.0" - } - }, - "postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - } - }, - "postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.1.1" - } - }, - "postcss-reporter": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", - "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", - "dev": true, - "requires": { - "picocolors": "^1.0.0", - "thenby": "^1.3.4" - } - }, - "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, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "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 - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true - }, - "prettier-plugin-go-template": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/prettier-plugin-go-template/-/prettier-plugin-go-template-0.0.15.tgz", - "integrity": "sha512-WqU92E1NokWYNZ9mLE6ijoRg6LtIGdLMePt2C7UBDjXeDH9okcRI3zRqtnWR4s5AloiqyvZ66jNBAa9tmRY5EQ==", - "dev": true, - "requires": { - "ulid": "^2.3.0" - } - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - } - }, - "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==" - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - } - }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "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, - "requires": { - "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" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "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 - }, - "slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true - }, - "source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "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" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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==", - "dev": true - }, - "tailwindcss": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", - "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", - "dev": true, - "requires": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "thenby": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", - "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - } - }, - "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true - }, - "ulid": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", - "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "dev": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "license": "MIT", + "peer": true } } } diff --git a/package.json b/package.json index 382bfe52..971b893d 100644 --- a/package.json +++ b/package.json @@ -3,29 +3,45 @@ "version": "1.0.0", "description": "", "main": "index.js", + "browserslist": [ + "Android 2.3", + "Android >= 4", + "Chrome >= 20", + "Firefox >= 24", + "Explorer >= 8", + "iOS >= 6", + "Opera >= 12", + "Safari >= 6" + ], "scripts": { "postbuild": "node ./scripts/postbuild.js", "gen-people": "node ./scripts/generate_people.js", "gen-teams": "node ./scripts/generate_teams.js", "update-stats": "node ./scripts/update_stats.js", - "test": "echo \"Error: no test specified\" && exit 1" + "cms": "vite", + "cms-build": "vite build" }, "author": "Les Kleuver", "license": "ISC", "devDependencies": { "autoprefixer": "^10.4.20", + "buffer": "^6.0.3", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.29.1", "postcss": "^8.4.45", - "postcss-cli": "^10.1.0", - "prettier": "^3.0.3", + "postcss-cli": "^11.0.0", + "prettier": "^3.3.3", "prettier-plugin-go-template": "^0.0.15", + "process": "^0.11.10", "tailwindcss": "^3.4.10", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "vite": "^5.4.11" }, "dependencies": { + "@sveltia/cms": "^0.47.1", "axios": "^1.7.4", + "caniuse-lite": "^1.0.30001683", "gray-matter": "^4.0.3", "lunr": "^2.3.9", "yargs": "^17.7.2" diff --git a/postcss.config.js b/postcss.config.js index 2e674212..4df9d3ba 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,17 +1,6 @@ module.exports = { plugins: { - autoprefixer: { - browsers: [ - 'Android 2.3', - 'Android >= 4', - 'Chrome >= 20', - 'Firefox >= 24', - 'Explorer >= 8', - 'iOS >= 6', - 'Opera >= 12', - 'Safari >= 6', - ], - }, + autoprefixer: {}, tailwindcss: {}, }, }; diff --git a/scripts/generate_people.js b/scripts/generate_people.js index 7627964b..81598fc6 100644 --- a/scripts/generate_people.js +++ b/scripts/generate_people.js @@ -9,7 +9,7 @@ const { argv } = yargs describe: 'path to directory to create member md files', type: 'string', demandOption: true, - default: './content/who-we-are/team/people' + default: './content/who-we-are/team/people', }) .help() .alias('help', 'h'); @@ -44,7 +44,7 @@ const fetchPeople = async () => { const payload = { operationName: 'Company', variables: { slug: 'dutch-institute-for-vulnerability-disclosure' }, - query + query, }; const response = await axios.post(url, payload, { headers }); @@ -72,13 +72,20 @@ const generatePeople = async () => { const newPersonData = { type: 'people', title: person.fullName, - image: person.profileImage ? `${person.profileImage.endpoint}/${person.profileImage.uri}.${person.profileImage.ext}` : ['/images/divd-profilepicture-volunteer1.svg', '/images/divd-profilepicture-volunteer2.svg', '/images/divd-profilepicture-volunteer3.svg', '/images/divd-profilepicture-volunteer4.svg'][Math.floor(Math.random() * 4)], + image: person.profileImage + ? `${person.profileImage.endpoint}/${person.profileImage.uri}.${person.profileImage.ext}` + : [ + '/images/divd-profilepicture-volunteer1.svg', + '/images/divd-profilepicture-volunteer2.svg', + '/images/divd-profilepicture-volunteer3.svg', + '/images/divd-profilepicture-volunteer4.svg', + ][Math.floor(Math.random() * 4)], role: person.role, intro: '', links: [], csirt_cases: personData.csirt_cases || [], csirt_posts: personData.csirt_posts || [], - cve_records: personData.cve_records || [] + cve_records: personData.cve_records || [], }; // Add social links diff --git a/scripts/postbuild.js b/scripts/postbuild.js index b42d7fc5..dcc610a7 100644 --- a/scripts/postbuild.js +++ b/scripts/postbuild.js @@ -1,38 +1,38 @@ -const fs = require('fs'); -const lunr = require('lunr'); +// const fs = require('fs'); +// const lunr = require('lunr'); -// Read the Hugo-generated JSON file -fs.readFile('public/search/index.json', 'utf8', (err, data) => { - if (err) { - console.error('Error reading JSON file:', err); - return; - } +// // Read the Hugo-generated JSON file +// fs.readFile('public/search/index.json', 'utf8', (readErr, data) => { +// if (readErr) { +// console.error('Error reading JSON file:', readErr); +// return; +// } - // Parse the JSON data - const documents = JSON.parse(data); +// // Parse the JSON data +// const documents = JSON.parse(data); - // Create a Lunr.js index - const idx = lunr(function () { - this.ref('title'); - this.field('title'); - this.field('content'); - this.field('type'); +// // Create a Lunr.js index +// const idx = lunr(() => { +// this.ref('title'); +// this.field('title'); +// this.field('content'); +// this.field('type'); - documents.forEach((doc, index) => { - this.add({ - title: doc.title, - content: doc.content, - type: doc.type, - }); - }); - }); +// documents.forEach((doc) => { +// this.add({ +// title: doc.title, +// content: doc.content, +// type: doc.type, +// }); +// }); +// }); - // Save the pre-built Lunr.js index - fs.writeFile('public/search/prebuild.json', JSON.stringify(idx), (err) => { - if (err) { - console.error('Error writing pre-built index:', err); - } else { - console.log('Pre-built index created successfully.'); - } - }); -}); +// // Save the pre-built Lunr.js index +// fs.writeFile('public/search/prebuild.json', JSON.stringify(idx), (writeErr) => { +// if (writeErr) { +// console.error('Error writing pre-built index:', writeErr); +// } else { +// console.log('Pre-built index created successfully.'); +// } +// }); +// }); diff --git a/scripts/queries/fullCompany.graphql b/scripts/queries/fullCompany.graphql index cf74bc5e..6d2977e9 100644 --- a/scripts/queries/fullCompany.graphql +++ b/scripts/queries/fullCompany.graphql @@ -18,7 +18,7 @@ fragment FullCompany on Company { ...CompanySocialFragment __typename } - + location { ...CompanyLocation __typename diff --git a/scripts/queries/teamsByCompany.graphql b/scripts/queries/teamsByCompany.graphql index 01888224..6a7d8d43 100644 --- a/scripts/queries/teamsByCompany.graphql +++ b/scripts/queries/teamsByCompany.graphql @@ -1,8 +1,13 @@ -query teamsByCompany($companySlug: String!, $limit: Int!, $offset: Int!, $membersLimit: Int!) { +query teamsByCompany( + $companySlug: String! + $limit: Int! + $offset: Int! + $membersLimit: Int! +) { teamsByCompany(companySlug: $companySlug, limit: $limit, offset: $offset) { - ...LightTeam - __typename -} + ...LightTeam + __typename + } } fragment LightTeam on Team { id diff --git a/static/vendor/lunr.min.js b/static/vendor/lunr.min.js index cdc94cd3..5e0228f6 100644 --- a/static/vendor/lunr.min.js +++ b/static/vendor/lunr.min.js @@ -3,4 +3,1301 @@ * Copyright (C) 2020 Oliver Nightingale * @license MIT */ -!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); +!(function () { + const e = function (t) { + const r = new e.Builder(); + return ( + r.pipeline.add(e.trimmer, e.stopWordFilter, e.stemmer), r.searchPipeline.add(e.stemmer), t.call(r, r), r.build() + ); + }; + (e.version = '2.3.9'), + (e.utils = {}), + (e.utils.warn = (function (e) { + return function (t) { + e.console && console.warn && console.warn(t); + }; + })(this)), + (e.utils.asString = function (e) { + return void 0 === e || e === null ? '' : e.toString(); + }), + (e.utils.clone = function (e) { + if (e === null || void 0 === e) return e; + for (var t = Object.create(null), r = Object.keys(e), i = 0; i < r.length; i++) { + const n = r[i]; + const s = e[n]; + if (Array.isArray(s)) t[n] = s.slice(); + else { + if (typeof s !== 'string' && typeof s !== 'number' && typeof s !== 'boolean') + throw new TypeError('clone is not deep and does not support nested objects'); + t[n] = s; + } + } + return t; + }), + (e.FieldRef = function (e, t, r) { + (this.docRef = e), (this.fieldName = t), (this._stringValue = r); + }), + (e.FieldRef.joiner = '/'), + (e.FieldRef.fromString = function (t) { + const r = t.indexOf(e.FieldRef.joiner); + if (r === -1) throw 'malformed field ref string'; + const i = t.slice(0, r); + const n = t.slice(r + 1); + return new e.FieldRef(n, i, t); + }), + (e.FieldRef.prototype.toString = function () { + return ( + void 0 == this._stringValue && (this._stringValue = this.fieldName + e.FieldRef.joiner + this.docRef), + this._stringValue + ); + }), + (e.Set = function (e) { + if (((this.elements = Object.create(null)), e)) { + this.length = e.length; + for (let t = 0; t < this.length; t++) this.elements[e[t]] = !0; + } else this.length = 0; + }), + (e.Set.complete = { + intersect(e) { + return e; + }, + union() { + return this; + }, + contains() { + return !0; + }, + }), + (e.Set.empty = { + intersect() { + return this; + }, + union(e) { + return e; + }, + contains() { + return !1; + }, + }), + (e.Set.prototype.contains = function (e) { + return !!this.elements[e]; + }), + (e.Set.prototype.intersect = function (t) { + let r; + let i; + let n; + const s = []; + if (t === e.Set.complete) return this; + if (t === e.Set.empty) return t; + this.length < t.length ? ((r = this), (i = t)) : ((r = t), (i = this)), (n = Object.keys(r.elements)); + for (let o = 0; o < n.length; o++) { + const a = n[o]; + a in i.elements && s.push(a); + } + return new e.Set(s); + }), + (e.Set.prototype.union = function (t) { + return t === e.Set.complete + ? e.Set.complete + : t === e.Set.empty + ? this + : new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements))); + }), + (e.idf = function (e, t) { + let r = 0; + for (const i in e) i != '_index' && (r += Object.keys(e[i]).length); + const n = (t - r + 0.5) / (r + 0.5); + return Math.log(1 + Math.abs(n)); + }), + (e.Token = function (e, t) { + (this.str = e || ''), (this.metadata = t || {}); + }), + (e.Token.prototype.toString = function () { + return this.str; + }), + (e.Token.prototype.update = function (e) { + return (this.str = e(this.str, this.metadata)), this; + }), + (e.Token.prototype.clone = function (t) { + return ( + (t = + t || + function (e) { + return e; + }), + new e.Token(t(this.str, this.metadata), this.metadata) + ); + }), + (e.tokenizer = function (t, r) { + if (t == null || void 0 == t) return []; + if (Array.isArray(t)) return t.map((t) => new e.Token(e.utils.asString(t).toLowerCase(), e.utils.clone(r))); + for (var i = t.toString().toLowerCase(), n = i.length, s = [], o = 0, a = 0; o <= n; o++) { + const u = i.charAt(o); + const l = o - a; + if (u.match(e.tokenizer.separator) || o == n) { + if (l > 0) { + const c = e.utils.clone(r) || {}; + (c.position = [a, l]), (c.index = s.length), s.push(new e.Token(i.slice(a, o), c)); + } + a = o + 1; + } + } + return s; + }), + (e.tokenizer.separator = /[\s\-]+/), + (e.Pipeline = function () { + this._stack = []; + }), + (e.Pipeline.registeredFunctions = Object.create(null)), + (e.Pipeline.registerFunction = function (t, r) { + r in this.registeredFunctions && e.utils.warn(`Overwriting existing registered function: ${r}`), + (t.label = r), + (e.Pipeline.registeredFunctions[t.label] = t); + }), + (e.Pipeline.warnIfFunctionNotRegistered = function (t) { + const r = t.label && t.label in this.registeredFunctions; + r || + e.utils.warn( + 'Function is not registered with pipeline. This may cause problems when serialising the index.\n', + t, + ); + }), + (e.Pipeline.load = function (t) { + const r = new e.Pipeline(); + return ( + t.forEach((t) => { + const i = e.Pipeline.registeredFunctions[t]; + if (!i) throw new Error(`Cannot load unregistered function: ${t}`); + r.add(i); + }), + r + ); + }), + (e.Pipeline.prototype.add = function () { + const t = Array.prototype.slice.call(arguments); + t.forEach(function (t) { + e.Pipeline.warnIfFunctionNotRegistered(t), this._stack.push(t); + }, this); + }), + (e.Pipeline.prototype.after = function (t, r) { + e.Pipeline.warnIfFunctionNotRegistered(r); + let i = this._stack.indexOf(t); + if (i == -1) throw new Error('Cannot find existingFn'); + (i += 1), this._stack.splice(i, 0, r); + }), + (e.Pipeline.prototype.before = function (t, r) { + e.Pipeline.warnIfFunctionNotRegistered(r); + const i = this._stack.indexOf(t); + if (i == -1) throw new Error('Cannot find existingFn'); + this._stack.splice(i, 0, r); + }), + (e.Pipeline.prototype.remove = function (e) { + const t = this._stack.indexOf(e); + t != -1 && this._stack.splice(t, 1); + }), + (e.Pipeline.prototype.run = function (e) { + for (let t = this._stack.length, r = 0; r < t; r++) { + for (var i = this._stack[r], n = [], s = 0; s < e.length; s++) { + const o = i(e[s], s, e); + if (o !== null && void 0 !== o && o !== '') + if (Array.isArray(o)) for (let a = 0; a < o.length; a++) n.push(o[a]); + else n.push(o); + } + e = n; + } + return e; + }), + (e.Pipeline.prototype.runString = function (t, r) { + const i = new e.Token(t, r); + return this.run([i]).map((e) => e.toString()); + }), + (e.Pipeline.prototype.reset = function () { + this._stack = []; + }), + (e.Pipeline.prototype.toJSON = function () { + return this._stack.map((t) => (e.Pipeline.warnIfFunctionNotRegistered(t), t.label)); + }), + (e.Vector = function (e) { + (this._magnitude = 0), (this.elements = e || []); + }), + (e.Vector.prototype.positionForIndex = function (e) { + if (this.elements.length == 0) return 0; + for ( + var t = 0, r = this.elements.length / 2, i = r - t, n = Math.floor(i / 2), s = this.elements[2 * n]; + i > 1 && (s < e && (t = n), s > e && (r = n), s != e); + + ) + (i = r - t), (n = t + Math.floor(i / 2)), (s = this.elements[2 * n]); + return s == e ? 2 * n : s > e ? 2 * n : s < e ? 2 * (n + 1) : void 0; + }), + (e.Vector.prototype.insert = function (e, t) { + this.upsert(e, t, () => { + throw 'duplicate index'; + }); + }), + (e.Vector.prototype.upsert = function (e, t, r) { + this._magnitude = 0; + const i = this.positionForIndex(e); + this.elements[i] == e ? (this.elements[i + 1] = r(this.elements[i + 1], t)) : this.elements.splice(i, 0, e, t); + }), + (e.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude; + for (var e = 0, t = this.elements.length, r = 1; r < t; r += 2) { + const i = this.elements[r]; + e += i * i; + } + return (this._magnitude = Math.sqrt(e)); + }), + (e.Vector.prototype.dot = function (e) { + for ( + var t = 0, r = this.elements, i = e.elements, n = r.length, s = i.length, o = 0, a = 0, u = 0, l = 0; + u < n && l < s; + + ) + (o = r[u]), + (a = i[l]), + o < a ? (u += 2) : o > a ? (l += 2) : o == a && ((t += r[u + 1] * i[l + 1]), (u += 2), (l += 2)); + return t; + }), + (e.Vector.prototype.similarity = function (e) { + return this.dot(e) / this.magnitude() || 0; + }), + (e.Vector.prototype.toArray = function () { + for (var e = new Array(this.elements.length / 2), t = 1, r = 0; t < this.elements.length; t += 2, r++) + e[r] = this.elements[t]; + return e; + }), + (e.Vector.prototype.toJSON = function () { + return this.elements; + }), + (e.stemmer = (function () { + const e = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log', + }; + const t = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '', + }; + const r = '[^aeiou]'; + const i = '[aeiouy]'; + const n = `${r}[^aeiouy]*`; + const s = `${i}[aeiou]*`; + const o = `^(${n})?${s}${n}`; + const a = `^(${n})?${s}${n}(${s})?$`; + const u = `^(${n})?${s}${n}${s}${n}`; + const l = `^(${n})?${i}`; + const c = new RegExp(o); + const h = new RegExp(u); + const d = new RegExp(a); + const f = new RegExp(l); + const p = /^(.+?)(ss|i)es$/; + const y = /^(.+?)([^s])s$/; + const m = /^(.+?)eed$/; + const v = /^(.+?)(ed|ing)$/; + const g = /.$/; + const x = /(at|bl|iz)$/; + const w = new RegExp('([^aeiouylsz])\\1$'); + const Q = new RegExp(`^${n}${i}[^aeiouwxy]$`); + const k = /^(.+?[^aeiou])y$/; + const S = + /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + const E = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + const L = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + const b = /^(.+?)(s|t)(ion)$/; + const P = /^(.+?)e$/; + const T = /ll$/; + const O = new RegExp(`^${n}${i}[^aeiouwxy]$`); + const I = function (r) { + let i; + let n; + let s; + let o; + let a; + let u; + let l; + if (r.length < 3) return r; + if ( + ((s = r.substr(0, 1)), + s == 'y' && (r = s.toUpperCase() + r.substr(1)), + (o = p), + (a = y), + o.test(r) ? (r = r.replace(o, '$1$2')) : a.test(r) && (r = r.replace(a, '$1$2')), + (o = m), + (a = v), + o.test(r)) + ) { + var I = o.exec(r); + (o = c), o.test(I[1]) && ((o = g), (r = r.replace(o, ''))); + } else if (a.test(r)) { + var I = a.exec(r); + (i = I[1]), + (a = f), + a.test(i) && + ((r = i), + (a = x), + (u = w), + (l = Q), + a.test(r) ? (r += 'e') : u.test(r) ? ((o = g), (r = r.replace(o, ''))) : l.test(r) && (r += 'e')); + } + if (((o = k), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (r = `${i}i`); + } + if (((o = S), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + e[n]); + } + if (((o = E), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (n = I[2]), (o = c), o.test(i) && (r = i + t[n]); + } + if (((o = L), (a = b), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (o = h), o.test(i) && (r = i); + } else if (a.test(r)) { + var I = a.exec(r); + (i = I[1] + I[2]), (a = h), a.test(i) && (r = i); + } + if (((o = P), o.test(r))) { + var I = o.exec(r); + (i = I[1]), (o = h), (a = d), (u = O), (o.test(i) || (a.test(i) && !u.test(i))) && (r = i); + } + return ( + (o = T), + (a = h), + o.test(r) && a.test(r) && ((o = g), (r = r.replace(o, ''))), + s == 'y' && (r = s.toLowerCase() + r.substr(1)), + r + ); + }; + return function (e) { + return e.update(I); + }; + })()), + e.Pipeline.registerFunction(e.stemmer, 'stemmer'), + (e.generateStopWordFilter = function (e) { + const t = e.reduce((e, t) => ((e[t] = t), e), {}); + return function (e) { + if (e && t[e.toString()] !== e.toString()) return e; + }; + }), + (e.stopWordFilter = e.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your', + ])), + e.Pipeline.registerFunction(e.stopWordFilter, 'stopWordFilter'), + (e.trimmer = function (e) { + return e.update((e) => e.replace(/^\W+/, '').replace(/\W+$/, '')); + }), + e.Pipeline.registerFunction(e.trimmer, 'trimmer'), + (e.TokenSet = function () { + (this.final = !1), (this.edges = {}), (this.id = e.TokenSet._nextId), (e.TokenSet._nextId += 1); + }), + (e.TokenSet._nextId = 1), + (e.TokenSet.fromArray = function (t) { + for (var r = new e.TokenSet.Builder(), i = 0, n = t.length; i < n; i++) r.insert(t[i]); + return r.finish(), r.root; + }), + (e.TokenSet.fromClause = function (t) { + return 'editDistance' in t ? e.TokenSet.fromFuzzyString(t.term, t.editDistance) : e.TokenSet.fromString(t.term); + }), + (e.TokenSet.fromFuzzyString = function (t, r) { + for (var i = new e.TokenSet(), n = [{ node: i, editsRemaining: r, str: t }]; n.length; ) { + const s = n.pop(); + if (s.str.length > 0) { + var o; + const a = s.str.charAt(0); + a in s.node.edges ? (o = s.node.edges[a]) : ((o = new e.TokenSet()), (s.node.edges[a] = o)), + s.str.length == 1 && (o.final = !0), + n.push({ node: o, editsRemaining: s.editsRemaining, str: s.str.slice(1) }); + } + if (s.editsRemaining != 0) { + if ('*' in s.node.edges) var u = s.node.edges['*']; + else { + var u = new e.TokenSet(); + s.node.edges['*'] = u; + } + if ( + (s.str.length == 0 && (u.final = !0), + n.push({ node: u, editsRemaining: s.editsRemaining - 1, str: s.str }), + s.str.length > 1 && n.push({ node: s.node, editsRemaining: s.editsRemaining - 1, str: s.str.slice(1) }), + s.str.length == 1 && (s.node.final = !0), + s.str.length >= 1) + ) { + if ('*' in s.node.edges) var l = s.node.edges['*']; + else { + var l = new e.TokenSet(); + s.node.edges['*'] = l; + } + s.str.length == 1 && (l.final = !0), + n.push({ node: l, editsRemaining: s.editsRemaining - 1, str: s.str.slice(1) }); + } + if (s.str.length > 1) { + var c; + const h = s.str.charAt(0); + const d = s.str.charAt(1); + d in s.node.edges ? (c = s.node.edges[d]) : ((c = new e.TokenSet()), (s.node.edges[d] = c)), + s.str.length == 1 && (c.final = !0), + n.push({ node: c, editsRemaining: s.editsRemaining - 1, str: h + s.str.slice(2) }); + } + } + } + return i; + }), + (e.TokenSet.fromString = function (t) { + for (var r = new e.TokenSet(), i = r, n = 0, s = t.length; n < s; n++) { + const o = t[n]; + const a = n == s - 1; + if (o == '*') (r.edges[o] = r), (r.final = a); + else { + const u = new e.TokenSet(); + (u.final = a), (r.edges[o] = u), (r = u); + } + } + return i; + }), + (e.TokenSet.prototype.toArray = function () { + for (var e = [], t = [{ prefix: '', node: this }]; t.length; ) { + const r = t.pop(); + const i = Object.keys(r.node.edges); + const n = i.length; + r.node.final && (r.prefix.charAt(0), e.push(r.prefix)); + for (let s = 0; s < n; s++) { + const o = i[s]; + t.push({ prefix: r.prefix.concat(o), node: r.node.edges[o] }); + } + } + return e; + }), + (e.TokenSet.prototype.toString = function () { + if (this._str) return this._str; + for (var e = this.final ? '1' : '0', t = Object.keys(this.edges).sort(), r = t.length, i = 0; i < r; i++) { + const n = t[i]; + const s = this.edges[n]; + e = e + n + s.id; + } + return e; + }), + (e.TokenSet.prototype.intersect = function (t) { + for (var r = new e.TokenSet(), i = void 0, n = [{ qNode: t, output: r, node: this }]; n.length; ) { + i = n.pop(); + for ( + let s = Object.keys(i.qNode.edges), o = s.length, a = Object.keys(i.node.edges), u = a.length, l = 0; + l < o; + l++ + ) + for (let c = s[l], h = 0; h < u; h++) { + const d = a[h]; + if (d == c || c == '*') { + const f = i.node.edges[d]; + const p = i.qNode.edges[c]; + const y = f.final && p.final; + let m = void 0; + d in i.output.edges + ? ((m = i.output.edges[d]), (m.final = m.final || y)) + : ((m = new e.TokenSet()), (m.final = y), (i.output.edges[d] = m)), + n.push({ qNode: p, output: m, node: f }); + } + } + } + return r; + }), + (e.TokenSet.Builder = function () { + (this.previousWord = ''), (this.root = new e.TokenSet()), (this.uncheckedNodes = []), (this.minimizedNodes = {}); + }), + (e.TokenSet.Builder.prototype.insert = function (t) { + let r; + let i = 0; + if (t < this.previousWord) throw new Error('Out of order word insertion'); + for (var n = 0; n < t.length && n < this.previousWord.length && t[n] == this.previousWord[n]; n++) i++; + this.minimize(i), + (r = this.uncheckedNodes.length == 0 ? this.root : this.uncheckedNodes[this.uncheckedNodes.length - 1].child); + for (var n = i; n < t.length; n++) { + const s = new e.TokenSet(); + const o = t[n]; + (r.edges[o] = s), this.uncheckedNodes.push({ parent: r, char: o, child: s }), (r = s); + } + (r.final = !0), (this.previousWord = t); + }), + (e.TokenSet.Builder.prototype.finish = function () { + this.minimize(0); + }), + (e.TokenSet.Builder.prototype.minimize = function (e) { + for (let t = this.uncheckedNodes.length - 1; t >= e; t--) { + const r = this.uncheckedNodes[t]; + const i = r.child.toString(); + i in this.minimizedNodes + ? (r.parent.edges[r.char] = this.minimizedNodes[i]) + : ((r.child._str = i), (this.minimizedNodes[i] = r.child)), + this.uncheckedNodes.pop(); + } + }), + (e.Index = function (e) { + (this.invertedIndex = e.invertedIndex), + (this.fieldVectors = e.fieldVectors), + (this.tokenSet = e.tokenSet), + (this.fields = e.fields), + (this.pipeline = e.pipeline); + }), + (e.Index.prototype.search = function (t) { + return this.query((r) => { + const i = new e.QueryParser(t, r); + i.parse(); + }); + }), + (e.Index.prototype.query = function (t) { + for ( + var r = new e.Query(this.fields), + i = Object.create(null), + n = Object.create(null), + s = Object.create(null), + o = Object.create(null), + a = Object.create(null), + u = 0; + u < this.fields.length; + u++ + ) + n[this.fields[u]] = new e.Vector(); + t.call(r, r); + for (var u = 0; u < r.clauses.length; u++) { + const l = r.clauses[u]; + let c = null; + let h = e.Set.empty; + c = l.usePipeline ? this.pipeline.runString(l.term, { fields: l.fields }) : [l.term]; + for (let d = 0; d < c.length; d++) { + const f = c[d]; + l.term = f; + const p = e.TokenSet.fromClause(l); + const y = this.tokenSet.intersect(p).toArray(); + if (y.length === 0 && l.presence === e.Query.presence.REQUIRED) { + for (var m = 0; m < l.fields.length; m++) { + var v = l.fields[m]; + o[v] = e.Set.empty; + } + break; + } + for (let g = 0; g < y.length; g++) + for (var x = y[g], w = this.invertedIndex[x], Q = w._index, m = 0; m < l.fields.length; m++) { + var v = l.fields[m]; + const k = w[v]; + const S = Object.keys(k); + const E = `${x}/${v}`; + const L = new e.Set(S); + if ( + (l.presence == e.Query.presence.REQUIRED && + ((h = h.union(L)), void 0 === o[v] && (o[v] = e.Set.complete)), + l.presence != e.Query.presence.PROHIBITED) + ) { + if ((n[v].upsert(Q, l.boost, (e, t) => e + t), !s[E])) { + for (let b = 0; b < S.length; b++) { + var P; + const T = S[b]; + var O = new e.FieldRef(T, v); + const I = k[T]; + void 0 === (P = i[O]) ? (i[O] = new e.MatchData(x, v, I)) : P.add(x, v, I); + } + s[E] = !0; + } + } else void 0 === a[v] && (a[v] = e.Set.empty), (a[v] = a[v].union(L)); + } + } + if (l.presence === e.Query.presence.REQUIRED) + for (var m = 0; m < l.fields.length; m++) { + var v = l.fields[m]; + o[v] = o[v].intersect(h); + } + } + for (var R = e.Set.complete, F = e.Set.empty, u = 0; u < this.fields.length; u++) { + var v = this.fields[u]; + o[v] && (R = R.intersect(o[v])), a[v] && (F = F.union(a[v])); + } + let C = Object.keys(i); + const N = []; + const _ = Object.create(null); + if (r.isNegated()) { + C = Object.keys(this.fieldVectors); + for (var u = 0; u < C.length; u++) { + var O = C[u]; + var j = e.FieldRef.fromString(O); + i[O] = new e.MatchData(); + } + } + for (var u = 0; u < C.length; u++) { + var j = e.FieldRef.fromString(C[u]); + const D = j.docRef; + if (R.contains(D) && !F.contains(D)) { + var A; + const B = this.fieldVectors[j]; + const V = n[j.fieldName].similarity(B); + if (void 0 !== (A = _[D])) (A.score += V), A.matchData.combine(i[j]); + else { + const z = { ref: D, score: V, matchData: i[j] }; + (_[D] = z), N.push(z); + } + } + } + return N.sort((e, t) => t.score - e.score); + }), + (e.Index.prototype.toJSON = function () { + const t = Object.keys(this.invertedIndex) + .sort() + .map(function (e) { + return [e, this.invertedIndex[e]]; + }, this); + const r = Object.keys(this.fieldVectors).map(function (e) { + return [e, this.fieldVectors[e].toJSON()]; + }, this); + return { + version: e.version, + fields: this.fields, + fieldVectors: r, + invertedIndex: t, + pipeline: this.pipeline.toJSON(), + }; + }), + (e.Index.load = function (t) { + const r = {}; + const i = {}; + const n = t.fieldVectors; + const s = Object.create(null); + const o = t.invertedIndex; + const a = new e.TokenSet.Builder(); + const u = e.Pipeline.load(t.pipeline); + t.version != e.version && + e.utils.warn( + `Version mismatch when loading serialised index. Current version of lunr '${e.version}' does not match serialized index '${t.version}'`, + ); + for (var l = 0; l < n.length; l++) { + var c = n[l]; + const h = c[0]; + const d = c[1]; + i[h] = new e.Vector(d); + } + for (var l = 0; l < o.length; l++) { + var c = o[l]; + const f = c[0]; + const p = c[1]; + a.insert(f), (s[f] = p); + } + return ( + a.finish(), + (r.fields = t.fields), + (r.fieldVectors = i), + (r.invertedIndex = s), + (r.tokenSet = a.root), + (r.pipeline = u), + new e.Index(r) + ); + }), + (e.Builder = function () { + (this._ref = 'id'), + (this._fields = Object.create(null)), + (this._documents = Object.create(null)), + (this.invertedIndex = Object.create(null)), + (this.fieldTermFrequencies = {}), + (this.fieldLengths = {}), + (this.tokenizer = e.tokenizer), + (this.pipeline = new e.Pipeline()), + (this.searchPipeline = new e.Pipeline()), + (this.documentCount = 0), + (this._b = 0.75), + (this._k1 = 1.2), + (this.termIndex = 0), + (this.metadataWhitelist = []); + }), + (e.Builder.prototype.ref = function (e) { + this._ref = e; + }), + (e.Builder.prototype.field = function (e, t) { + if (/\//.test(e)) throw new RangeError(`Field '${e}' contains illegal character '/'`); + this._fields[e] = t || {}; + }), + (e.Builder.prototype.b = function (e) { + e < 0 ? (this._b = 0) : e > 1 ? (this._b = 1) : (this._b = e); + }), + (e.Builder.prototype.k1 = function (e) { + this._k1 = e; + }), + (e.Builder.prototype.add = function (t, r) { + const i = t[this._ref]; + const n = Object.keys(this._fields); + (this._documents[i] = r || {}), (this.documentCount += 1); + for (let s = 0; s < n.length; s++) { + const o = n[s]; + const a = this._fields[o].extractor; + const u = a ? a(t) : t[o]; + const l = this.tokenizer(u, { fields: [o] }); + const c = this.pipeline.run(l); + const h = new e.FieldRef(i, o); + const d = Object.create(null); + (this.fieldTermFrequencies[h] = d), (this.fieldLengths[h] = 0), (this.fieldLengths[h] += c.length); + for (let f = 0; f < c.length; f++) { + const p = c[f]; + if ((void 0 == d[p] && (d[p] = 0), (d[p] += 1), void 0 == this.invertedIndex[p])) { + const y = Object.create(null); + (y._index = this.termIndex), (this.termIndex += 1); + for (let m = 0; m < n.length; m++) y[n[m]] = Object.create(null); + this.invertedIndex[p] = y; + } + void 0 == this.invertedIndex[p][o][i] && (this.invertedIndex[p][o][i] = Object.create(null)); + for (let v = 0; v < this.metadataWhitelist.length; v++) { + const g = this.metadataWhitelist[v]; + const x = p.metadata[g]; + void 0 == this.invertedIndex[p][o][i][g] && (this.invertedIndex[p][o][i][g] = []), + this.invertedIndex[p][o][i][g].push(x); + } + } + } + }), + (e.Builder.prototype.calculateAverageFieldLengths = function () { + for (var t = Object.keys(this.fieldLengths), r = t.length, i = {}, n = {}, s = 0; s < r; s++) { + const o = e.FieldRef.fromString(t[s]); + const a = o.fieldName; + n[a] || (n[a] = 0), (n[a] += 1), i[a] || (i[a] = 0), (i[a] += this.fieldLengths[o]); + } + for (var u = Object.keys(this._fields), s = 0; s < u.length; s++) { + const l = u[s]; + i[l] = i[l] / n[l]; + } + this.averageFieldLength = i; + }), + (e.Builder.prototype.createFieldVectors = function () { + for ( + var t = {}, r = Object.keys(this.fieldTermFrequencies), i = r.length, n = Object.create(null), s = 0; + s < i; + s++ + ) { + for ( + var o = e.FieldRef.fromString(r[s]), + a = o.fieldName, + u = this.fieldLengths[o], + l = new e.Vector(), + c = this.fieldTermFrequencies[o], + h = Object.keys(c), + d = h.length, + f = this._fields[a].boost || 1, + p = this._documents[o.docRef].boost || 1, + y = 0; + y < d; + y++ + ) { + var m; + var v; + var g; + const x = h[y]; + const w = c[x]; + const Q = this.invertedIndex[x]._index; + void 0 === n[x] ? ((m = e.idf(this.invertedIndex[x], this.documentCount)), (n[x] = m)) : (m = n[x]), + (v = + (m * ((this._k1 + 1) * w)) / (this._k1 * (1 - this._b + this._b * (u / this.averageFieldLength[a])) + w)), + (v *= f), + (v *= p), + (g = Math.round(1e3 * v) / 1e3), + l.insert(Q, g); + } + t[o] = l; + } + this.fieldVectors = t; + }), + (e.Builder.prototype.createTokenSet = function () { + this.tokenSet = e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort()); + }), + (e.Builder.prototype.build = function () { + return ( + this.calculateAverageFieldLengths(), + this.createFieldVectors(), + this.createTokenSet(), + new e.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline, + }) + ); + }), + (e.Builder.prototype.use = function (e) { + const t = Array.prototype.slice.call(arguments, 1); + t.unshift(this), e.apply(this, t); + }), + (e.MatchData = function (e, t, r) { + for (var i = Object.create(null), n = Object.keys(r || {}), s = 0; s < n.length; s++) { + const o = n[s]; + i[o] = r[o].slice(); + } + (this.metadata = Object.create(null)), + void 0 !== e && ((this.metadata[e] = Object.create(null)), (this.metadata[e][t] = i)); + }), + (e.MatchData.prototype.combine = function (e) { + for (let t = Object.keys(e.metadata), r = 0; r < t.length; r++) { + const i = t[r]; + const n = Object.keys(e.metadata[i]); + void 0 == this.metadata[i] && (this.metadata[i] = Object.create(null)); + for (let s = 0; s < n.length; s++) { + const o = n[s]; + const a = Object.keys(e.metadata[i][o]); + void 0 == this.metadata[i][o] && (this.metadata[i][o] = Object.create(null)); + for (let u = 0; u < a.length; u++) { + const l = a[u]; + void 0 == this.metadata[i][o][l] + ? (this.metadata[i][o][l] = e.metadata[i][o][l]) + : (this.metadata[i][o][l] = this.metadata[i][o][l].concat(e.metadata[i][o][l])); + } + } + } + }), + (e.MatchData.prototype.add = function (e, t, r) { + if (!(e in this.metadata)) return (this.metadata[e] = Object.create(null)), void (this.metadata[e][t] = r); + if (!(t in this.metadata[e])) return void (this.metadata[e][t] = r); + for (let i = Object.keys(r), n = 0; n < i.length; n++) { + const s = i[n]; + s in this.metadata[e][t] + ? (this.metadata[e][t][s] = this.metadata[e][t][s].concat(r[s])) + : (this.metadata[e][t][s] = r[s]); + } + }), + (e.Query = function (e) { + (this.clauses = []), (this.allFields = e); + }), + (e.Query.wildcard = new String('*')), + (e.Query.wildcard.NONE = 0), + (e.Query.wildcard.LEADING = 1), + (e.Query.wildcard.TRAILING = 2), + (e.Query.presence = { OPTIONAL: 1, REQUIRED: 2, PROHIBITED: 3 }), + (e.Query.prototype.clause = function (t) { + return ( + 'fields' in t || (t.fields = this.allFields), + 'boost' in t || (t.boost = 1), + 'usePipeline' in t || (t.usePipeline = !0), + 'wildcard' in t || (t.wildcard = e.Query.wildcard.NONE), + t.wildcard & e.Query.wildcard.LEADING && t.term.charAt(0) != e.Query.wildcard && (t.term = `*${t.term}`), + t.wildcard & e.Query.wildcard.TRAILING && t.term.slice(-1) != e.Query.wildcard && (t.term = `${t.term}*`), + 'presence' in t || (t.presence = e.Query.presence.OPTIONAL), + this.clauses.push(t), + this + ); + }), + (e.Query.prototype.isNegated = function () { + for (let t = 0; t < this.clauses.length; t++) + if (this.clauses[t].presence != e.Query.presence.PROHIBITED) return !1; + return !0; + }), + (e.Query.prototype.term = function (t, r) { + if (Array.isArray(t)) + return ( + t.forEach(function (t) { + this.term(t, e.utils.clone(r)); + }, this), + this + ); + const i = r || {}; + return (i.term = t.toString()), this.clause(i), this; + }), + (e.QueryParseError = function (e, t, r) { + (this.name = 'QueryParseError'), (this.message = e), (this.start = t), (this.end = r); + }), + (e.QueryParseError.prototype = new Error()), + (e.QueryLexer = function (e) { + (this.lexemes = []), + (this.str = e), + (this.length = e.length), + (this.pos = 0), + (this.start = 0), + (this.escapeCharPositions = []); + }), + (e.QueryLexer.prototype.run = function () { + for (let t = e.QueryLexer.lexText; t; ) t = t(this); + }), + (e.QueryLexer.prototype.sliceString = function () { + for (var e = [], t = this.start, r = this.pos, i = 0; i < this.escapeCharPositions.length; i++) + (r = this.escapeCharPositions[i]), e.push(this.str.slice(t, r)), (t = r + 1); + return e.push(this.str.slice(t, this.pos)), (this.escapeCharPositions.length = 0), e.join(''); + }), + (e.QueryLexer.prototype.emit = function (e) { + this.lexemes.push({ + type: e, + str: this.sliceString(), + start: this.start, + end: this.pos, + }), + (this.start = this.pos); + }), + (e.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1), (this.pos += 1); + }), + (e.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) return e.QueryLexer.EOS; + const t = this.str.charAt(this.pos); + return (this.pos += 1), t; + }), + (e.QueryLexer.prototype.width = function () { + return this.pos - this.start; + }), + (e.QueryLexer.prototype.ignore = function () { + this.start == this.pos && (this.pos += 1), (this.start = this.pos); + }), + (e.QueryLexer.prototype.backup = function () { + this.pos -= 1; + }), + (e.QueryLexer.prototype.acceptDigitRun = function () { + let t; + let r; + do (t = this.next()), (r = t.charCodeAt(0)); + while (r > 47 && r < 58); + t != e.QueryLexer.EOS && this.backup(); + }), + (e.QueryLexer.prototype.more = function () { + return this.pos < this.length; + }), + (e.QueryLexer.EOS = 'EOS'), + (e.QueryLexer.FIELD = 'FIELD'), + (e.QueryLexer.TERM = 'TERM'), + (e.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'), + (e.QueryLexer.BOOST = 'BOOST'), + (e.QueryLexer.PRESENCE = 'PRESENCE'), + (e.QueryLexer.lexField = function (t) { + return t.backup(), t.emit(e.QueryLexer.FIELD), t.ignore(), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexTerm = function (t) { + if ((t.width() > 1 && (t.backup(), t.emit(e.QueryLexer.TERM)), t.ignore(), t.more())) return e.QueryLexer.lexText; + }), + (e.QueryLexer.lexEditDistance = function (t) { + return t.ignore(), t.acceptDigitRun(), t.emit(e.QueryLexer.EDIT_DISTANCE), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexBoost = function (t) { + return t.ignore(), t.acceptDigitRun(), t.emit(e.QueryLexer.BOOST), e.QueryLexer.lexText; + }), + (e.QueryLexer.lexEOS = function (t) { + t.width() > 0 && t.emit(e.QueryLexer.TERM); + }), + (e.QueryLexer.termSeparator = e.tokenizer.separator), + (e.QueryLexer.lexText = function (t) { + for (;;) { + const r = t.next(); + if (r == e.QueryLexer.EOS) return e.QueryLexer.lexEOS; + if (r.charCodeAt(0) != 92) { + if (r == ':') return e.QueryLexer.lexField; + if (r == '~') return t.backup(), t.width() > 0 && t.emit(e.QueryLexer.TERM), e.QueryLexer.lexEditDistance; + if (r == '^') return t.backup(), t.width() > 0 && t.emit(e.QueryLexer.TERM), e.QueryLexer.lexBoost; + if (r == '+' && t.width() === 1) return t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText; + if (r == '-' && t.width() === 1) return t.emit(e.QueryLexer.PRESENCE), e.QueryLexer.lexText; + if (r.match(e.QueryLexer.termSeparator)) return e.QueryLexer.lexTerm; + } else t.escapeCharacter(); + } + }), + (e.QueryParser = function (t, r) { + (this.lexer = new e.QueryLexer(t)), (this.query = r), (this.currentClause = {}), (this.lexemeIdx = 0); + }), + (e.QueryParser.prototype.parse = function () { + this.lexer.run(), (this.lexemes = this.lexer.lexemes); + for (let t = e.QueryParser.parseClause; t; ) t = t(this); + return this.query; + }), + (e.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx]; + }), + (e.QueryParser.prototype.consumeLexeme = function () { + const e = this.peekLexeme(); + return (this.lexemeIdx += 1), e; + }), + (e.QueryParser.prototype.nextClause = function () { + const e = this.currentClause; + this.query.clause(e), (this.currentClause = {}); + }), + (e.QueryParser.parseClause = function (t) { + const r = t.peekLexeme(); + if (void 0 != r) + switch (r.type) { + case e.QueryLexer.PRESENCE: + return e.QueryParser.parsePresence; + case e.QueryLexer.FIELD: + return e.QueryParser.parseField; + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var i = `expected either a field or a term, found ${r.type}`; + throw (r.str.length >= 1 && (i += ` with value '${r.str}'`), new e.QueryParseError(i, r.start, r.end)); + } + }), + (e.QueryParser.parsePresence = function (t) { + const r = t.consumeLexeme(); + if (void 0 != r) { + switch (r.str) { + case '-': + t.currentClause.presence = e.Query.presence.PROHIBITED; + break; + case '+': + t.currentClause.presence = e.Query.presence.REQUIRED; + break; + default: + var i = `unrecognised presence operator'${r.str}'`; + throw new e.QueryParseError(i, r.start, r.end); + } + const n = t.peekLexeme(); + if (void 0 == n) { + var i = 'expecting term or field, found nothing'; + throw new e.QueryParseError(i, r.start, r.end); + } + switch (n.type) { + case e.QueryLexer.FIELD: + return e.QueryParser.parseField; + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var i = `expecting term or field, found '${n.type}'`; + throw new e.QueryParseError(i, n.start, n.end); + } + } + }), + (e.QueryParser.parseField = function (t) { + const r = t.consumeLexeme(); + if (void 0 != r) { + if (t.query.allFields.indexOf(r.str) == -1) { + const i = t.query.allFields.map((e) => `'${e}'`).join(', '); + var n = `unrecognised field '${r.str}', possible fields: ${i}`; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.fields = [r.str]; + const s = t.peekLexeme(); + if (void 0 == s) { + var n = 'expecting term, found nothing'; + throw new e.QueryParseError(n, r.start, r.end); + } + switch (s.type) { + case e.QueryLexer.TERM: + return e.QueryParser.parseTerm; + default: + var n = `expecting term, found '${s.type}'`; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (e.QueryParser.parseTerm = function (t) { + const r = t.consumeLexeme(); + if (void 0 != r) { + (t.currentClause.term = r.str.toLowerCase()), r.str.indexOf('*') != -1 && (t.currentClause.usePipeline = !1); + const i = t.peekLexeme(); + if (void 0 == i) return void t.nextClause(); + switch (i.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = `Unexpected lexeme type '${i.type}'`; + throw new e.QueryParseError(n, i.start, i.end); + } + } + }), + (e.QueryParser.parseEditDistance = function (t) { + const r = t.consumeLexeme(); + if (void 0 != r) { + const i = parseInt(r.str, 10); + if (isNaN(i)) { + var n = 'edit distance must be numeric'; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.editDistance = i; + const s = t.peekLexeme(); + if (void 0 == s) return void t.nextClause(); + switch (s.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = `Unexpected lexeme type '${s.type}'`; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (e.QueryParser.parseBoost = function (t) { + const r = t.consumeLexeme(); + if (void 0 != r) { + const i = parseInt(r.str, 10); + if (isNaN(i)) { + var n = 'boost must be numeric'; + throw new e.QueryParseError(n, r.start, r.end); + } + t.currentClause.boost = i; + const s = t.peekLexeme(); + if (void 0 == s) return void t.nextClause(); + switch (s.type) { + case e.QueryLexer.TERM: + return t.nextClause(), e.QueryParser.parseTerm; + case e.QueryLexer.FIELD: + return t.nextClause(), e.QueryParser.parseField; + case e.QueryLexer.EDIT_DISTANCE: + return e.QueryParser.parseEditDistance; + case e.QueryLexer.BOOST: + return e.QueryParser.parseBoost; + case e.QueryLexer.PRESENCE: + return t.nextClause(), e.QueryParser.parsePresence; + default: + var n = `Unexpected lexeme type '${s.type}'`; + throw new e.QueryParseError(n, s.start, s.end); + } + } + }), + (function (e, t) { + typeof define === 'function' && define.amd + ? define(t) + : typeof exports === 'object' + ? (module.exports = t()) + : (e.lunr = t()); + })(this, () => e); +})(); diff --git a/tailwind.config.js b/tailwind.config.js index b79b2457..eff75d7d 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,7 +2,37 @@ module.exports = { content: ['./layouts/**/*.html'], theme: { - extend: {}, + container: { + center: true, + screens: { + desktop: '1200px', + }, + }, + screens: { + desktop: '1280px', + }, + extend: { + colors: { + 'light-black': '#1D1D1D', + 'dark-gray': '#545454', + gray: '#D1D1D1', + 'light-gray': '#F2F2F2', + 'DIVD-yellow': '#FFD736', + 'DIVD-turquoise': '#3DDCEB', + }, + fontSize: { + 'heading-1': ['5rem', { lineHeight: '5.25rem', letterSpacing: '0.1rem', fontWeight: '900' }], + 'heading-2': ['3.5rem', { lineHeight: '4.125rem', letterSpacing: '0.07rem', fontWeight: '900' }], + 'heading-3': ['2rem', { lineHeight: '5.25rem', letterSpacing: '0.04rem', fontWeight: '700' }], + 'heading-4': ['1.55rem', { lineHeight: '5.25rem', letterSpacing: '0.031rem', fontWeight: '700' }], + 'subheading-1': ['2rem', { lineHeight: '2.75rem', letterSpacing: '0.04rem', fontWeight: '400' }], + body: ['1.25rem', { lineHeight: '2rem', letterSpacing: '0.025rem', fontWeight: '400' }], + }, + fontFamily: { + heading: ['Source Sans 3, sans-serif'], + body: ['Open Sans, sans-serif'], + }, + }, }, plugins: [], }; diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..eddcb9b0 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({ + root: 'cms', // Set the root to `cms` since `index.html` is there + build: { + outDir: '../admin/new-cms', // Output directory for the build (relative to root) + emptyOutDir: true, // Clear output directory before building + sourcemap: true, // Enable sourcemaps + }, + resolve: { + alias: { + '@': '/cms', + }, + }, +});