diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e1c3d82 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" + open-pull-requests-limit: 10 diff --git a/.github/workflows/build-and-publish-page.yml b/.github/workflows/build-and-publish-page.yml new file mode 100644 index 0000000..b0b4dc3 --- /dev/null +++ b/.github/workflows/build-and-publish-page.yml @@ -0,0 +1,79 @@ +name: Node.js CI + +on: + release: + types: [published] + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js LTS + uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + + - name: Install dependencies + run: cd SBOM-Catalog && npm install + + - name: Run build + run: cd SBOM-Catalog && npm run build + + - name: Upload pages artifact to action workflow + uses: actions/upload-artifact@v4 + with: + name: pages-build-artifact + path: SBOM-Catalog/dist + + - name: Create zip for release file + run: zip -r sbom-catalog-${{github.ref_name}}.zip SBOM-Catalog/dist + + - name: Upload pages release asset + uses: softprops/action-gh-release@v2 + with: + files: sbom-catalog-${{github.ref_name}}.zip + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: SBOM-Catalog/dist + branch: gh-pages + + create_spdx_sbom: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js LTS + uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + + - name: Syft SPDX SBOM generation + uses: anchore/sbom-action@v0 + with: + artifact-name: sbom-catalog-${{github.ref_name}}.spdx.json + format: spdx-json + + create_cdx_sbom: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js LTS + uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + + - name: Syft CycloneDx SBOM generation + uses: anchore/sbom-action@v0 + with: + artifact-name: sbom-catalog-${{github.ref_name}}.cdx.json + format: cyclonedx-json \ No newline at end of file diff --git a/.github/workflows/build-pull-request.yml b/.github/workflows/build-pull-request.yml new file mode 100644 index 0000000..f9cce5d --- /dev/null +++ b/.github/workflows/build-pull-request.yml @@ -0,0 +1,22 @@ +name: CI + +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: 'lts/*' + + - name: Install dependencies + run: cd SBOM-Catalog && npm install + + - name: Run build + run: cd SBOM-Catalog && npm run build \ No newline at end of file diff --git a/README.md b/README.md index 51bfd34..cf49a39 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,14 @@ The Federal Government exists at every point of the Software Delivery Lifecycle, - [Minimum Standards for Federal Government End Users](https://www.nist.gov/itl/executive-order-improving-nations-cybersecurity/recommended-minimum-standard-vendor-or-developer) +## SBOM Catalog +To provide a better overview of the available tooling and their capabilities, this group maintains an SBOM Catalog which can be found under the following link: + +[https://ossf.github.io/sbom-everywhere/](https://ossf.github.io/sbom-everywhere/) + +If you want to get involved, please see the document [here](/SBOM-Catalog/contribute.md) + + ## Prior Work ### NTIA - [NTIA SBOM Resources](https://ntia.gov/SBOM) diff --git a/SBOM-Catalog/.eslintrc.cjs b/SBOM-Catalog/.eslintrc.cjs new file mode 100644 index 0000000..c727cb8 --- /dev/null +++ b/SBOM-Catalog/.eslintrc.cjs @@ -0,0 +1,18 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + ignorePatterns: ["dist", "build", "node_modules", ".idea"], + 'extends': [ + 'plugin:vue/vue3-recommended', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier/skip-formatting' + ], + parserOptions: { + ecmaVersion: 'latest' + }, + rules: { + } +} \ No newline at end of file diff --git a/SBOM-Catalog/.gitignore b/SBOM-Catalog/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/SBOM-Catalog/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/SBOM-Catalog/contribute.md b/SBOM-Catalog/contribute.md new file mode 100644 index 0000000..dadfe3d --- /dev/null +++ b/SBOM-Catalog/contribute.md @@ -0,0 +1,75 @@ +# SBOM Catalog + +This is a project to implement an SBOM Catalog inspired by the [Landscape of the Cloud Native Computing Foundation](https://landscape.cncf.io/). + + +The page can be found [here](https://ossf.github.io/sbom-everywhere/) + +## How to add your tool +If you know of a tool or project that should be listed here, please open an Issue or add a MergeRequest. There are three things to consider while adding a new tool: + +### 1. Add a new entry +The public/data.yaml contains all the information a user can search on the page. Add a new entry to the list of tools. Please follow the following convention regarding the values. Please also refer to the tool's source, where the features are documented. + +##### Name +The name of the tool. This should be distinct in the list and is used as an identifier. + +##### Publisher +The publisher refers to the company or institution maintaining the tool. It should be spelled similarly each time so users can find all tools from the same publisher. + +##### Standards +A list of Standards a tool can produce. Currently, the three standards which are recognized by the [NTIA](https://www.ntia.gov/sites/default/files/publications/sbom_formats_survey-version-2021_0.pdf) are supported: +- SPDX +- CycloneDx +- SWID + +##### Abilities +Abilities describe the capabilities of the tool. In what part of the software development lifecycle can the tool be used? The following abilities are supported: +- **Compare** - *Can compare two SBOMs* +- **Consume** - *Can use a provided SBOM in some form* +- **Convert** - *Can Convert between formats (SPDX, CycloneDX), versions or file-formats (json, xml)* +- **Edit** - *Can somehow edit the contents of a SBOM* +- **Generate** - *Can automatically generate a SBOM* +- **Merge** - *Can merge several SBOMs* +- **Validate** - *Can validate a SBOM against the file schema or requirements like defined by the NTIA* + +##### Type +SBOMs may contain different forms of the minimum information sourced from different +product artifacts. The following types are supported as published by the [NTIA](https://www.cisa.gov/resources-tools/resources/types-software-bill-materials-sbom). Because many tools specifically support the scanning of container images, the category **Container** is added additionally. Even if container scans can be considered *Analyzed*: +- Design +- Source +- Build +- Analyzed +- Deployed +- Runtime +- Container + +### 2. Add a description +You can add a detailed description to the /public/descriptions folder. The description should be written in markdown and named after the tool (the Same name as in the data.yaml). It should contain detailed information about the tools and features claimed in the data section. Feel free to add links to the GitHub repository or supplier. + +### 3. Add a logo +You can add a logo to the /public/logos folder. The logo should be named after the tool (the Same name as in the data.yaml). It should be a PNG file with a transparent background and 200px x 200px. + +The logo will be displayed on the page in the Map View, the List View, and the details section. You can add Logos for all categories and also for the Publisher. + +If you add a Logo, we assume your project and/or company are OK with that. The logo should be used under the fair use policy. If you want to remove your logo, please open an issue, and we will remove it. + +## Shoutout + +A shoutout goes to D3JS for providing such a great library to visualize and interact with data. I stand on the shoulders of giants with this tooling. Also, thanks go to the people from vue.js, who just provide a great JavaScript framework. + +Special thanks to [Mike Bostock](https://observablehq.com/@d3/zoomable-circle-packing?intent=fork) for sharing their examples and snippets used under the [ISC License](https://choosealicense.com/licenses/isc/) to provide the different views in the landscape. + +
ISC License +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +
\ No newline at end of file diff --git a/SBOM-Catalog/index.html b/SBOM-Catalog/index.html new file mode 100644 index 0000000..55d61fd --- /dev/null +++ b/SBOM-Catalog/index.html @@ -0,0 +1,13 @@ + + + + + + + SBOM Landscape + + +
+ + + diff --git a/SBOM-Catalog/package-lock.json b/SBOM-Catalog/package-lock.json new file mode 100644 index 0000000..73e41b8 --- /dev/null +++ b/SBOM-Catalog/package-lock.json @@ -0,0 +1,3925 @@ +{ + "name": "sbom-landscape", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sbom-landscape", + "version": "0.0.0", + "dependencies": { + "@rushstack/eslint-patch": "^1.10.2", + "axios": "^1.6.8", + "d3": "^7.9.0", + "highlight.js": "^11.9.0", + "js-yaml": "^4.1.0", + "marked": "^12.0.1", + "marked-highlight": "^2.1.1", + "primeflex": "^3.3.1", + "primeicons": "^6.0.1", + "primevue": "^3.50.0", + "vue": "^3.4.21", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@types/js-yaml": "^4.0.9", + "@vitejs/plugin-vue": "^4.6.2", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "esbuild": "^0.20.2", + "eslint": "^8.57.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-vue": "^9.25.0", + "gh-pages": "^6.1.1", + "typescript": "^5.4.3", + "vite": "^5.2.2", + "vue-tsc": "^2.0.7" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/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, + "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==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", + "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", + "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", + "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", + "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", + "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", + "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", + "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", + "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", + "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", + "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", + "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", + "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", + "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", + "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/type-utils": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", + "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", + "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", + "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", + "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", + "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", + "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.1.4.tgz", + "integrity": "sha512-ROfPepDxZ5Eq+Unbx3M9QcHT7MoE9tYdbkuzLTtxG5rfkEi5RwsDPncjANMOq/gHhIIDlWgqWwS2nXWMGsuj4w==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.1.4" + } + }, + "node_modules/@volar/source-map": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.1.4.tgz", + "integrity": "sha512-mCg8IiPZmHZVzqL4Owg+BzQ5ZTG1cVwATxrkrFPZpcAin97Xa3MbchxVhHtHTWTT8ER8bJh5xVjeVxsSN++FUA==", + "dev": true, + "dependencies": { + "muggle-string": "^0.4.0" + } + }, + "node_modules/@volar/typescript": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.1.4.tgz", + "integrity": "sha512-Mt7wOLPkomFnUfVpb5IHlPhSpD7FJAn+FHSsovePmqFNQzFLz16wrpHjAkorPiAnP0847w71NL5fIJyWbAsR8Q==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.1.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "dependencies": { + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", + "dependencies": { + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", + "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "peerDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": ">=4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.7.tgz", + "integrity": "sha512-Vh1yZX3XmYjn9yYLkjU8DN6L0ceBtEcapqiyclHne8guG84IaTzqtvizZB1Yfxm3h6m7EIvjerLO5fvOZO6IIQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.1.3", + "@vue/compiler-dom": "^3.4.0", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", + "dependencies": { + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", + "dependencies": { + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", + "dependencies": { + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", + "dependencies": { + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" + }, + "peerDependencies": { + "vue": "3.4.21" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" + }, + "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, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "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", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz", + "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "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, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "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==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gh-pages": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.1.1.tgz", + "integrity": "sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "commander": "^11.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gh-pages/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "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==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.1.tgz", + "integrity": "sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-highlight": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.1.1.tgz", + "integrity": "sha512-ktdqwtBne8rim5mb+vvZ9FzElGFb+CHCgkx/g6DSzTjaSrVnxsJdSzB5YgCkknFrcOW+viocM1lGyIjC0oa3fg==", + "peerDependencies": { + "marked": ">=4 <13" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/primeflex": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz", + "integrity": "sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ==" + }, + "node_modules/primeicons": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", + "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==" + }, + "node_modules/primevue": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.50.0.tgz", + "integrity": "sha512-vYpQzvIXSmF0hWUkviHEGnwbFY/G8jI2RSxoa75noJloI2rWhzOX+JarJ8iaesVOr7b2se31N/p7zOx6uh3ddQ==", + "peerDependencies": { + "vue": "^3.0.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==" + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", + "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.13.0", + "@rollup/rollup-android-arm64": "4.13.0", + "@rollup/rollup-darwin-arm64": "4.13.0", + "@rollup/rollup-darwin-x64": "4.13.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", + "@rollup/rollup-linux-arm64-gnu": "4.13.0", + "@rollup/rollup-linux-arm64-musl": "4.13.0", + "@rollup/rollup-linux-riscv64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-musl": "4.13.0", + "@rollup/rollup-win32-arm64-msvc": "4.13.0", + "@rollup/rollup-win32-ia32-msvc": "4.13.0", + "@rollup/rollup-win32-x64-msvc": "4.13.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", + "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.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": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", + "dependencies": { + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.7.tgz", + "integrity": "sha512-LYa0nInkfcDBB7y8jQ9FQ4riJTRNTdh98zK/hzt4gEpBZQmf30dPhP+odzCa+cedGz6B/guvJEd0BavZaRptjg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.1.3", + "@vue/language-core": "2.0.7", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-tsc/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/SBOM-Catalog/package.json b/SBOM-Catalog/package.json new file mode 100644 index 0000000..7509402 --- /dev/null +++ b/SBOM-Catalog/package.json @@ -0,0 +1,43 @@ +{ + "name": "sbom-landscape", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "deploy": "gh-pages -d dist", + "lint": "eslint .", + "lint-fix": "eslint . --fix", + "typecheck": "vue-tsc --build" + }, + "dependencies": { + "axios": "^1.6.8", + "d3": "^7.9.0", + "highlight.js": "^11.9.0", + "js-yaml": "^4.1.0", + "marked": "^12.0.1", + "marked-highlight": "^2.1.1", + "primeflex": "^3.3.1", + "primeicons": "^6.0.1", + "primevue": "^3.50.0", + "vue": "^3.4.21", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@types/js-yaml": "^4.0.9", + "@vitejs/plugin-vue": "^4.6.2", + "@vue/eslint-config-prettier": "^9.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "@rushstack/eslint-patch": "^1.10.2", + "esbuild": "^0.20.2", + "eslint": "^8.57.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-vue": "^9.25.0", + "gh-pages": "^6.1.1", + "typescript": "^5.4.3", + "vite": "^5.2.2", + "vue-tsc": "^2.0.7" + } +} diff --git a/SBOM-Catalog/public/data.yaml b/SBOM-Catalog/public/data.yaml new file mode 100644 index 0000000..382c6e1 --- /dev/null +++ b/SBOM-Catalog/public/data.yaml @@ -0,0 +1,567 @@ +- Name: Syft + Link: https://github.com/anchore/syft + Publisher: Anchore + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + - Convert + Type: + - Source + - Container + Language: + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Rpm + - Deb + - Cran + - Alpm + - Generic + - Nuget + - Apk + - Hex + - Hackage + - Cargo + +- Name: Grype + Link: https://github.com/anchore/grype + Publisher: Anchore + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Consume + Type: + - Source + - Container + Language: + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Rpm + - Deb + - Cran + - Alpm + - Generic + - Nuget + - Apk + - Hex + - Hackage + - Cargo + +- Name: Trivy + Link: https://github.com/aquasecurity/trivy + Publisher: Aquasecurity + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Source + - Container + Language: + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Rpm + - Deb + - Nuget + - Hex + - Hackage + +- Name: Tern + Link: https://github.com/tern-tools/tern + Publisher: Tern + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Container + Language: + - Gem + - Pypi + - Npm + - Rpm + - Deb + - Alpm + - Apk + +- Name: Microsoft-SBOM-Tool + Link: https://github.com/microsoft/sbom-tool + Publisher: Microsoft + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + Type: + - Source + - Container + Language: + - Rpm + - Swid + - Deb + - Gem + - Pypi + - Golang + - Npm + - Maven + - Nuget + - Cargo + +- Name: Github-Dependency-Graph + Link: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph + Publisher: Github + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Github + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Nuget + - Hex + - Pub + - Hackage + - Cargo + +- Name: Scancode + Link: https://github.com/nexB/scancode-toolkit + Publisher: NexB + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Deb + - Nuget + - Cargo + - Bazel + - Haxe + - Opam + - Jar + - Hale + - Bower + - Autotools + - Dart + - Osgi + - Alpine + - Conan + +- Name: CdxGen + Link: https://github.com/CycloneDx/cdxgen + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + - Container + Language: + - Clojars + - Github + - Gem + - Pypi + - Composer + - Golang + - Npm + - Maven + - Rpm + - Nuget + - Hex + - Pub + - Hackage + - Cargo + +- Name: Kubernetes-BOM + Link: https://github.com/kubernetes-sigs/bom + Publisher: Kubernetes-SIGs + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + Type: + - Container + Language: + - Pkg + +- Name: Bomber + Link: https://github.com/devops-kung-fu/bomber + Publisher: DevOps-Kung-Fu-Mafia + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Consume + Type: + Language: + +- Name: CycloneDx-Cocoapods + Link: https://github.com/CycloneDx/cyclonedx-cocoapods + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Languages: + - Objective-C + - Swift + +- Name: Voltone_SBOM + Link: https://github.com/voltone/sbom + Publisher: Voltone + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Languages: + - Elixir + +- Name: CycloneDx_GoMod + Link: https://github.com/CycloneDX/cyclonedx-gomod + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Languages: + - Go + +- Name: CycloneDx_Node_Module + Link: https://github.com/CycloneDX/cyclonedx-node-module + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Languages: + - Npm + +- Name: CycloneDx-dotnet + Link: https://github.com/CycloneDx/cyclonedx-dotnet + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Dotnet + +- Name: CycloneDx-NPM + Link: https://github.com/CycloneDx/cyclonedx-node-npm + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Npm + +- Name: CycloneDx-Maven + Link: https://github.com/CycloneDx/cyclonedx-maven-plugin + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Maven + +- Name: CycloneDx-Gradle + Link: https://github.com/CycloneDx/cyclonedx-gradle-plugin + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Maven + - Jar + +- Name: CycloneDx-PHP-Composer + Link: https://github.com/CycloneDx/cyclonedx-php-composer + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Composer + +- Name: CycloneDx-Python + Link: https://github.com/CycloneDx/cyclonedx-python + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Pypi + +- Name: CycloneDx-Ruby-Gem + Link: https://github.com/CycloneDx/cyclonedx-ruby-gem + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Gem + +- Name: CycloneDx-Rust-Cargo + Link: https://github.com/CycloneDx/cyclonedx-rust-cargo + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Cargo + +- Name: CycloneDx-Webpack-Plugin + Link: https://github.com/CycloneDX/cyclonedx-webpack-plugin + Publisher: CycloneDx + License: OpenSource + Standards: + - CycloneDx + Abilities: + - Generate + Type: + - Source + Language: + - Npm + +- Name: ORT + Link: https://github.com/oss-review-toolkit/ort + Publisher: OSS-Review-Toolkit + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + - Consume + Type: + - Source + Language: + +- Name: Protobom + Link: https://github.com/bom-squad/protobom + Publisher: BOM-Squad + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Convert + Type: + Language: + +- Name: Sbom-workbench + Link: https://github.com/scanoss/sbom-workbench + Publisher: SCANOSS + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + - Consume + Type: + - Source + Language: + +- Name: SPDX-Maven + Link: https://github.com/spdx/spdx-maven-plugin + Publisher: SPDX + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Maven + +- Name: SPDX-Gradle + Link: https://github.com/spdx/spdx-gradle-plugin + Publisher: SPDX + License: OpenSource + Standards: + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Maven + +- Name: SPDX-Java-Tools + Link: https://github.com/spdx/tools-java + Publisher: SPDX + License: OpenSource + Standards: + - SPDX + Abilities: + - Consume + - Convert + - Merge + Type: + Language: + +- Name: SPDX-Python-Tools + Link: https://github.com/spdx/tools-python + Publisher: SPDX + License: OpenSource + Standards: + - SPDX + Abilities: + - Consume + - Convert + - Compare + Type: + Language: + +- Name: SPDX-Online-Tools + Link: https://github.com/spdx/spdx-online-tools + Publisher: SPDX + License: OpenSource + Standards: + - SPDX + Abilities: + - Consume + - Convert + - Compare + - Validate + Type: + Language: + +- Name: SW360 + Link: https://github.com/eclipse-sw360/sw360 + Publisher: Eclipse-SW360 + License: OpenSource + Standards: + - SPDX + Abilities: + - Consume + - Merge + Type: + Language: + +- Name: Sbom4files + Link: https://github.com/anthonyharrison/sbom4files + Publisher: Anthony-Harrison + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Generic + +- Name: Sbom4python + Link: https://github.com/anthonyharrison/sbom4python + Publisher: Anthony-Harrison + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Pypi + +- Name: Sbom4rust + Link: https://github.com/anthonyharrison/sbom4rust + Publisher: Anthony-Harrison + License: OpenSource + Standards: + - CycloneDx + - SPDX + Abilities: + - Generate + Type: + - Source + Language: + - Cargo \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Anchore.md b/SBOM-Catalog/public/descriptions/Anchore.md new file mode 100644 index 0000000..f5dc9d7 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Anchore.md @@ -0,0 +1,3 @@ +### This is a test File + +This is a test file for Anchore \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Aquasecurity.md b/SBOM-Catalog/public/descriptions/Aquasecurity.md new file mode 100644 index 0000000..da9f19e --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Aquasecurity.md @@ -0,0 +1,3 @@ +### This is a test File + +This is a test file for Aquasecurity \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Bomber.md b/SBOM-Catalog/public/descriptions/Bomber.md new file mode 100644 index 0000000..6eabce1 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Bomber.md @@ -0,0 +1,7 @@ +**[Bomber](https://github.com/devops-kung-fu/bomber)** is an application designed to scan SBOMs for security vulnerabilities. This tool is vital for analyzing closed-source products provided in JSON format, particularly when assessing the security risks associated with the components listed in the SBOMs. It can read JSON or XML-based CycloneDX format, or JSON SPDX or Syft formatted SBOMs, to quickly identify any vulnerabilities. + +For installation on Mac, `bomber` can be installed via Homebrew or by downloading the latest release and using the `bomber` binary. In usage, `bomber` can scan an entire folder of SBOMs or an individual SBOM, with the default output being to STDOUT. It supports output in HTML or JSON formats for enhanced reporting and detailed vulnerability information. + +The tool provides features like ignoring specific vulnerabilities using the `--ignore-file` flag and filtering output based on severity levels. Additionally, it has experimental features for highest severity return codes. One of its notable features is data enrichment, where `bomber` enriches vulnerability data from providers. It uses the Exploit Prediction Scoring System (EPSS) to predict the probability of a vulnerability being exploited, aiding in prioritizing high-risk vulnerabilities. + +Contributions to `bomber` are welcomed, as outlined in its contributing guidelines on GitHub. The tool itself uses Syft to generate an SBOM every time a developer commits code to its repository, ensuring its own development process is transparent and secure. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/CdxGen.md b/SBOM-Catalog/public/descriptions/CdxGen.md new file mode 100644 index 0000000..3864932 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CdxGen.md @@ -0,0 +1,18 @@ +The **[CdxGen](https://github.com/CycloneDX/cdxgen)** tool, hosted on GitHub under the CycloneDX organization, is a notable utility in the SBOM landscape. It's designed to generate SBOMs in the CycloneDX format, which is a widely recognized standard for describing the components used in software applications. + +### Overview +- **Purpose**: CdxGen is primarily used for creating SBOMs that detail the components, libraries, and modules utilized in a software project. This includes information about dependencies, licenses, and vulnerabilities. +- **Compatibility**: It supports multiple programming languages and package managers, making it a versatile tool for a variety of software development environments. + +### Key Features +- **Multi-Language Support**: CdxGen works with languages like JavaScript, Java, Python, and others, thereby accommodating a broad spectrum of software projects. +- **Automated Analysis**: It can automatically analyze dependencies and their metadata, streamlining the process of SBOM generation. +- **CycloneDX Compliance**: The tool generates SBOMs that comply with the CycloneDX standard, ensuring interoperability and adherence to industry practices. + +### Usage and Integration +- **Command-Line Interface**: CdxGen is typically used via the command line, making it easy to integrate into existing development workflows and CI/CD pipelines. +- **Integration with Build Tools**: It can be integrated with common build tools and CI/CD systems, facilitating automated SBOM generation during software builds. + +### Community and Support +- **Open Source**: As an open-source tool, CdxGen benefits from community contributions and is continually evolving. +- **Documentation and Community Support**: It has robust documentation and is supported by a community of developers and users who contribute to its ongoing improvement. diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-Cocoapods.md b/SBOM-Catalog/public/descriptions/CycloneDx-Cocoapods.md new file mode 100644 index 0000000..9a7b921 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-Cocoapods.md @@ -0,0 +1,3 @@ +The CycloneDX CocoaPods tool is a Ruby Gem that generates a CycloneDX SBOM for Objective-C and Swift projects using CocoaPods. This tool helps create a lightweight and easily parseable BoM document outlining project dependencies. It supports the latest CycloneDX specification and offers compatibility with various BoM formats and specification versions through the CycloneDX CLI. Key features include options for verbose output, specifying project paths, output file paths, BoM version, and component metadata. It also handles CocoaPod subspecs effectively, ensuring each subspec required by the Podfile is included in the BOM. The tool is licensed under Apache 2.0 license. + +For more information, visit the [CycloneDX CocoaPods GitHub page](https://github.com/CycloneDX/cyclonedx-cocoapods). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-Gradle.md b/SBOM-Catalog/public/descriptions/CycloneDx-Gradle.md new file mode 100644 index 0000000..1384db7 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-Gradle.md @@ -0,0 +1,12 @@ +[CycloneDX Gradle Plugin](https://github.com/CycloneDX/cyclonedx-gradle-plugin) on GitHub is a tool designed to create CycloneDX Software Bill of Materials (SBOM) from Gradle projects. This plugin is an integral part of managing software supply chain security and compliance. + +### Overview +The CycloneDX Gradle Plugin is primarily developed in Java and Groovy. It's available under the Apache-2.0 license, ensuring open-source availability and collaboration. The plugin is part of the CycloneDX ecosystem, an OWASP project focused on standardizing the way software communicates about its dependencies. + +### Key Features +- **SBOM Generation**: It automatically generates a detailed SBOM for projects managed with Gradle, a popular build automation tool. +- **CycloneDX Compliance**: The generated SBOMs are compliant with the CycloneDX standard, ensuring compatibility with a range of security and compliance tools. +- **Integration with OWASP**: As a part of the OWASP community, the plugin benefits from a strong focus on security and is aligned with best practices in software development and supply chain security. + +### Usage and Implementation +For developers and teams using Gradle for project management, integrating the CycloneDX Gradle Plugin into their workflow enhances their ability to track and manage software dependencies transparently and securely. It plays a crucial role in software supply chain risk management, providing essential information that can be used for security auditing, compliance checks, and vulnerability management. diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-Maven.md b/SBOM-Catalog/public/descriptions/CycloneDx-Maven.md new file mode 100644 index 0000000..f7e9e69 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-Maven.md @@ -0,0 +1,15 @@ +The **[CycloneDX Maven Plugin](https://github.com/CycloneDX/cyclonedx-maven-plugin)** is an essential tool for creating SBOMs from Maven projects. This plugin is particularly significant in the context of application security and supply chain component analysis. It generates CycloneDX SBOMs, which are lightweight and designed for easy integration into various security and analysis workflows. + +### Key Features and Usage +- **Generation of SBOM**: The plugin can create a Bill of Materials for each Maven module, including both direct and transitive dependencies. This feature is critical for comprehensive vulnerability analysis. +- **Support for Multiple Goals**: The plugin supports various goals like `makeBom`, `makeAggregateBom`, and `makePackageBom`. These goals offer flexibility in generating BOMs for individual modules, aggregate BOMs for multi-module projects, and package-specific BOMs. +- **Configurable Output**: It allows configuring output formats (XML/JSON), including whether to attach BOMs as additional artifacts during Maven `install` or `deploy`. +- **CycloneDX Schema Support**: The plugin supports multiple versions of the CycloneDX schema, ensuring compatibility with different systems and standards. + +### Technical Aspects +- **Maven Integration**: Being a Maven plugin, it seamlessly integrates into the Maven build lifecycle, specifically at the `package` phase. This integration ensures that SBOM generation is part of the standard build process, making it automatic and consistent. +- **Configuration Options**: The plugin offers various configuration options like project type, schema version, output format, and scope inclusion. These configurations provide users with control over the SBOM generation process. +- **Excluding Projects**: For multi-module Maven projects, there's the capability to exclude specific modules from the aggregate BOM, which is useful for tailoring the SBOM to specific needs. + +### Licensing and Contribution +- **Open Source and Apache 2.0 License**: The CycloneDX Maven Plugin is an open-source project under the Apache 2.0 license, encouraging community contributions and modifications. diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-NPM.md b/SBOM-Catalog/public/descriptions/CycloneDx-NPM.md new file mode 100644 index 0000000..66d6026 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-NPM.md @@ -0,0 +1,14 @@ +**[CycloneDX Node.js Module](https://github.com/CycloneDX/cyclonedx-node-module)** + +The CycloneDX Node.js Module is a specialized tool designed to create SBOM for node-based projects. This tool is part of the broader CycloneDX ecosystem, a suite of software tools and libraries that support the production and consumption of SBOMs, conforming to the CycloneDX standard. + +Key Features: +- **Node.js Support**: Specifically designed for node-based projects, it seamlessly integrates into the Node.js ecosystem. +- **CycloneDX Compliance**: Ensures the SBOMs created are compliant with the CycloneDX specification, a widely recognized standard for SBOMs. +- **Dependency Graph Analysis**: It includes capabilities to analyze and represent the dependency graph of the project, which is crucial for understanding the complex relationships between various software components. +- **Open Source and Community-Driven**: Hosted on GitHub, it benefits from community contributions and open-source development practices. +- **Apache 2.0 Licensed**: This permissive license ensures wide usability and modification rights for users and developers. + +Usage Scenarios: +- **Security and Compliance**: For organizations looking to enhance their software supply chain security, this module can be integrated into the development pipeline to generate SBOMs, helping in vulnerability management and compliance reporting. +- **Software Development**: Developers working on Node.js projects can utilize this tool for better insight into their project dependencies, aiding in maintenance and updates. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-Webpack-Plugin.md b/SBOM-Catalog/public/descriptions/CycloneDx-Webpack-Plugin.md new file mode 100644 index 0000000..027524c --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-Webpack-Plugin.md @@ -0,0 +1 @@ +The CycloneDX Webpack Plugin is designed to create a CycloneDX Software Bill of Materials (SBOM) from webpack bundles at compile time. It supports various Node.js and webpack versions and offers customizable options for SBOM generation. This plugin is especially useful for integrating SBOM generation into development workflows that utilize webpack. For detailed information, including installation and usage instructions, please refer to the official GitHub repository [here](https://github.com/CycloneDX/cyclonedx-webpack-plugin). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/CycloneDx-dotnet.md b/SBOM-Catalog/public/descriptions/CycloneDx-dotnet.md new file mode 100644 index 0000000..10767bc --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx-dotnet.md @@ -0,0 +1,18 @@ +[CycloneDX/cyclonedx-dotnet](https://github.com/CycloneDX/cyclonedx-dotnet) + +The CycloneDX SBOM generator for .NET projects, available on GitHub, is a tool for enhancing software security and supply chain risk management. It creates SBOMs from .NET projects, supporting the .NET ecosystem. This tool is part of the broader CycloneDX initiative, a standardized format for representing a bill of materials. + +**Technical Overview:** +- **Language and Compatibility:** Primarily written in C#, the tool is compatible with various .NET versions, ensuring broad applicability in different .NET projects. +- **Output Format:** The output SBOM is compliant with the CycloneDX standard, a widely recognized format in the software security industry. This format ensures interoperability and ease of integration with other tools and systems. +- **Integration and Usage:** The tool is designed to be integrated easily into existing .NET project workflows, with minimal configuration required. It can be used both in automated pipelines and manual processes. + +**Key Features:** +- **Automated SBOM Generation:** Automates the process of generating SBOMs, saving time and reducing the potential for human error. +- **Vulnerability Identification:** Assists in identifying known vulnerabilities in project dependencies, enhancing the security posture of the software. +- **Compliance and Risk Management:** Supports compliance with industry standards and helps in managing supply chain risks by providing a clear view of the software components and their sources. + +**Use Cases:** +- **Software Developers:** For developers working on .NET projects, this tool automates the creation of SBOMs, ensuring that all components are accounted for and helping in the management of dependencies. +- **Security Teams:** Enables security professionals to easily review and assess the components included in .NET projects, aiding in vulnerability management and risk assessment. +- **Compliance Officers:** Assists in meeting regulatory and industry compliance requirements related to software transparency and supply chain security. diff --git a/SBOM-Catalog/public/descriptions/CycloneDx_GoMod.md b/SBOM-Catalog/public/descriptions/CycloneDx_GoMod.md new file mode 100644 index 0000000..ee5cfd0 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx_GoMod.md @@ -0,0 +1 @@ +The GitHub repository you provided is for the CycloneDX GoMod tool, which is designed to generate CycloneDX Software Bill of Materials (SBOM) from Go modules. This tool supports creating detailed and accurate SBOMs for Go applications, modules, and binaries, taking into account various factors such as build constraints and licenses. It offers multiple subcommands tailored for different use cases, ensuring flexibility in generating SBOMs that meet specific requirements. For more detailed information, you can visit the [CycloneDX GoMod GitHub page](https://github.com/CycloneDX/cyclonedx-gomod). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/CycloneDx_Node_Module.md b/SBOM-Catalog/public/descriptions/CycloneDx_Node_Module.md new file mode 100644 index 0000000..378cd42 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/CycloneDx_Node_Module.md @@ -0,0 +1 @@ +The GitHub repository "CycloneDX/cyclonedx-node-module" is designed to create CycloneDX SBOM from node-based projects. It operates under the Apache 2.0 license, indicating its open-source nature. The repository serves as a meta-package, grouping tools aimed at generating CycloneDX SBOMs for various node ecosystems like npm, with others like yarn and pnpm yet to be announced. It is important to use the specific tools suited to your ecosystem rather than relying on this meta-package itself. For more details, you can visit the [GitHub repository](https://github.com/CycloneDX/cyclonedx-node-module). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Grype.md b/SBOM-Catalog/public/descriptions/Grype.md new file mode 100644 index 0000000..2469c87 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Grype.md @@ -0,0 +1,15 @@ +**[Anchore Grype](https://github.com/anchore/grype)** is a powerful vulnerability scanner for container images and filesystems, offering a range of features and functionalities: + +1. **Vulnerability Scanning**: Grype can scan container images and filesystems to find known vulnerabilities. It supports major operating system packages like Alpine, CentOS, Debian, Red Hat, and Ubuntu, and also scans for vulnerabilities in language-specific packages such as Ruby, Java, JavaScript, Python, Dotnet, Golang, PHP, and Rust. Additionally, it supports Docker, OCI, and Singularity image formats. + +2. **Installation**: Grype can be installed via a simple command-line instruction, and is available through Homebrew and MacPorts for macOS users. It is compatible with macOS and Linux operating systems. + +3. **Usage**: To get started with Grype, users need to install the binary and ensure it is available in their path. Scanning for vulnerabilities is as straightforward as executing `grype `. It also supports scanning all layers of an image for comprehensive vulnerability detection. + +4. **Supported Sources**: Beyond Docker, Grype can scan container image archives, Singularity Image Format (SIF) containers, and directories. It provides flexibility in specifying sources with schemes for different daemons and formats. + +5. **Vulnerability Data Structure**: Grype provides detailed vulnerability information including ID, severity, CVSS score, fix information, related vulnerabilities, match details, and artifact information. + +6. **Output Formats**: The tool offers several output formats including a columnar summary (default), CycloneDX XML and JSON reports, and a customizable template format for user-specified output. + +7. **Gating on Severity**: Grype can be configured to exit with an error if vulnerabilities of a specified severity level or higher are found. This feature is particularly useful in script or CI pipeline integrations. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/HowTo.md b/SBOM-Catalog/public/descriptions/HowTo.md new file mode 100644 index 0000000..a18294f --- /dev/null +++ b/SBOM-Catalog/public/descriptions/HowTo.md @@ -0,0 +1,7 @@ +To use this tool best, you should make use of its features to access the data best. + +The filters can be turned on or off, or their order can be changed by dragging and dropping them. + +By clicking on an entry, the details of a category are displayed. + +The Page provides three different Views. A map view, a tree view, and a list view. The data can be normalized or aggregated. If normalized, each single category will be displayed but might contain duplicate entries. Each entry is distinct if aggregated, but the categories are displayed in groups. diff --git a/SBOM-Catalog/public/descriptions/Kubernetes-BOM.md b/SBOM-Catalog/public/descriptions/Kubernetes-BOM.md new file mode 100644 index 0000000..9feb1a2 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Kubernetes-BOM.md @@ -0,0 +1,13 @@ +**[BOM](https://github.com/kubernetes-sigs/bom)**, a project under Kubernetes SIGs, is a versatile utility designed to create, view, and transform Software Bills of Materials (SBOMs). It specifically addresses the need for generating SBOMs in the Kubernetes project, offering an efficient and powerful solution for software authors. + +Key features of `bom` include: +- Generation of SPDX-compliant packages from various sources such as directories, container images, single files, etc. +- Built-in license classifier recognizing over 400 licenses from the SPDX catalog. +- Support for Golang dependency analysis. +- Full `.gitignore` support during git repository scans. + +To install `bom`, the command `go install sigs.k8s.io/bom/cmd/bom@latest` is used. + +The `bom generate` subcommand is pivotal in creating SBOMs from files, images, and docker archives, with capabilities like pulling images from remote registries and analyzing them with a suite of analyzers. It also allows exporting SBOM data to an in-toto provenance attestation. The `bom document` subcommand, on the other hand, focuses on visualizing and querying SBOMs. + +`bom` can handle different sources to generate an SPDX Bill of Materials, including processing directories, container images, and individual files. This flexibility and its integration with SPDX standards make `bom` a comprehensive tool for SBOM generation in various software development contexts. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Kubernetes-SIGs.md b/SBOM-Catalog/public/descriptions/Kubernetes-SIGs.md new file mode 100644 index 0000000..262704c --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Kubernetes-SIGs.md @@ -0,0 +1,15 @@ +The Kubernetes SIGs are integral components of the Kubernetes community, operating under the Cloud Native Computing Foundation. They play a crucial role in organizing the community's activities, encompassing a wide range of areas related to Kubernetes. Here's an overview of the SIGs: + +### Overview of Kubernetes SIGs + +1. **Purpose and Structure**: Kubernetes SIGs are specialized groups within the Kubernetes community, each focusing on a specific aspect of the Kubernetes ecosystem. The SIGs are formed to foster collaboration among contributors and streamline the development and maintenance processes within the Kubernetes project. They are pivotal in shaping the direction and growth of Kubernetes. Each SIG operates with a certain degree of autonomy, tailoring its workflow and processes to suit its specific focus area. + +2. **Community Groups**: The Kubernetes community organizes most of its activities through these SIGs, along with time-bounded Working Groups and Committees. This structure allows for efficient management of the diverse aspects of the Kubernetes project, from coding and design to documentation and community engagement. + +3. **Formation and Guidelines**: New SIGs can be formed when there is a recognized need within the Kubernetes community. Each SIG adheres to a set of guidelines that help maintain a consistent approach to working within the Kubernetes ecosystem. These guidelines ensure that despite the varied nature of the SIGs, there is a coherent and structured approach to how they operate and contribute to the broader goals of Kubernetes. + +4. **Engagement and Contribution**: SIGs are open for participation to anyone interested in contributing to Kubernetes. They offer an avenue for contributors with different expertise and interests to engage with specific aspects of Kubernetes. For example, SIG Security focuses on improving Kubernetes' security across all components, working on process documentation and other non-code deliverables. This openness encourages a diverse range of contributions and collaboration within the Kubernetes community. + +5. **Diversity of Specializations**: The SIGs cover a wide range of specializations within Kubernetes. From infrastructure and network security to API development and cloud provider integrations, these groups are responsible for specific domains within the Kubernetes ecosystem. This specialized focus allows for targeted development and problem-solving, making the SIGs essential for the ongoing development and refinement of Kubernetes. + +In summary, the Kubernetes SIGs are fundamental to the development and governance of Kubernetes, offering structured, specialized forums for collaboration and contribution within the Kubernetes community. They play a key role in ensuring that Kubernetes continues to evolve and meet the needs of its diverse user base. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Microsoft-SBOM-Tool.md b/SBOM-Catalog/public/descriptions/Microsoft-SBOM-Tool.md new file mode 100644 index 0000000..9d5f6d2 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Microsoft-SBOM-Tool.md @@ -0,0 +1,9 @@ +The **[Microsoft SBOM Tool](https://github.com/microsoft/sbom-tool)** is an advanced, scalable solution designed to generate SBOMs compatible with SPDX 2.2 for various types of artifacts. This tool leverages Component Detection libraries for identifying components and the ClearlyDefined API to populate license information for these components. + +### Key Features and Capabilities: +1. **Scalability and Enterprise-Readiness**: It's designed to handle the demands of enterprise environments, ensuring robustness and scalability in SBOM generation. +2. **Support for Multiple Platforms**: The tool offers executables for Windows, Linux, and macOS, providing flexibility across different operating systems. +3. **SBOM API NuGet Package**: Users can integrate the SBOM tool with their projects via the `Microsoft.Sbom.Api` NuGet package, with detailed API documentation available for reference. +4. **SBOM Generation Process**: Users can generate SBOMs by specifying parameters like drop path, build components path, package name, version, supplier, and namespace URI base. The tool ensures all relevant files are hashed and included in the SBOM, and supports a unique namespace for each SBOM. +5. **CI/CD Pipeline Integration**: The tool can be integrated into CI/CD pipelines using guides for GitHub Actions and Azure DevOps Pipelines, enhancing automation and continuous integration capabilities. +7. **Contribution Opportunities**: Open to contributions and suggestions, the project requires adherence to a Contributor License Agreement (CLA) and follows the Microsoft Open Source Code of Conduct. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Microsoft.md b/SBOM-Catalog/public/descriptions/Microsoft.md new file mode 100644 index 0000000..1b240b2 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Microsoft.md @@ -0,0 +1,3 @@ +### This is a test File + +This is a test file for Microsoft \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Sbom4files.md b/SBOM-Catalog/public/descriptions/Sbom4files.md new file mode 100644 index 0000000..1bfbf34 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Sbom4files.md @@ -0,0 +1 @@ +The link you provided leads to a GitHub repository for SBOM4Files, a tool that generates Software Bill of Materials (SBOM) for files within a directory, supporting formats like SPDX and CycloneDX. It's designed for use in continuous integration systems to maintain accurate SBOM records through development and support audit needs. The tool, licensed under Apache 2.0, requires Python 3.7+ and offers features like directory scanning, project naming, format specification, and output customization. For more details, visit the [GitHub repository](https://github.com/anthonyharrison/sbom4files). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Sbom4python.md b/SBOM-Catalog/public/descriptions/Sbom4python.md new file mode 100644 index 0000000..6bb7c90 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Sbom4python.md @@ -0,0 +1 @@ +SBOM4Python is an open-source tool designed to generate a SBOM for installed Python modules. It supports various formats, including SPDX and CycloneDX, and identifies both explicit and hidden dependencies of Python modules. The tool can be integrated into continuous integration systems for maintaining accurate SBOM records and supporting audit processes. It offers features like excluding or including license detection, generating dependency graphs, and providing output in different formats (Tag, JSON, YAML). Licensed under Apache 2.0, SBOM4Python is useful for software development and security audit functions, with limitations in validating the completeness of SBOM data. The tool's repository is available on GitHub: [SBOM4Python](https://github.com/anthonyharrison/sbom4python). \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Scancode.md b/SBOM-Catalog/public/descriptions/Scancode.md new file mode 100644 index 0000000..bd2167c --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Scancode.md @@ -0,0 +1,19 @@ +The **[scancode-toolkit](https://github.com/nexB/scancode-toolkit)** is an open-source tool designed for scanning code to identify licenses, copyrights, and package dependencies. It can be used in SBOM generation and compliance assessments. The toolkit can analyze source code, binary files, and archives, making it a versatile tool for SBOM activities. + +### Key Features + +- **License Detection**: Accurately identifies licenses in source code. +- **Copyright Detection**: Scans for copyright information. +- **Package Detection**: Recognizes package information from various package formats. +- **File Type and Language Detection**: Identifies file types and programming languages. + +### Technical Details + +- **Language**: Primarily written in Python. +- **Integration**: Can be integrated into CI/CD pipelines. +- **Output Formats**: Provides outputs in SPDX, CycloneDx and other formats. + +### Installation and Requirements + +- **Installation**: Can be installed via `pip` or from source. +- **Dependencies**: Requires Python and specific libraries listed in the documentation. diff --git a/SBOM-Catalog/public/descriptions/Syft.md b/SBOM-Catalog/public/descriptions/Syft.md new file mode 100644 index 0000000..48993d7 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Syft.md @@ -0,0 +1,17 @@ +**[Anchore's Syft](https://github.com/anchore/syft)** is a versatile CLI tool and Go library designed for generating Software Bills of Materials (SBOMs) from container images and filesystems. It is highly effective for vulnerability detection, especially when used in conjunction with a scanner like Grype. Key features and functionalities of Syft include: + +1. **SBOM Generation**: Syft can generate SBOMs for container images, filesystems, archives, and more, facilitating the discovery of packages and libraries. + +2. **Supported Sources**: It supports a range of sources including container image archives, Singularity Image Format (SIF) containers, and directories. Syft can work with images from Docker, Podman, and Containerd daemons, among others. + +3. **Cataloger Configuration**: Depending on the scan type (container image or directory), Syft uses different sets of catalogers. For container images, it assumes that package installation steps are complete, whereas for directories, it looks for declared dependencies that may not yet be installed. + +4. **Output Formats**: Syft offers multiple output formats, including Syft JSON, CycloneDX XML and JSON, SPDX Tag-Value and JSON, and GitHub JSON. This variety allows for flexibility in how the SBOM data is used and integrated with other tools and platforms. + +5. **Private Registry Authentication**: Syft can authenticate with private registries using local Docker credentials. It can be used in Kubernetes environments, pulling images from private registries based on configured credentials. + +6. **Format Conversion**: As an experimental feature, Syft can convert existing SBOMs into different formats without the need to regenerate them from scratch, supporting formats like Syft JSON, SPDX JSON, and CycloneDX JSON and XML. + +7. **Attestation**: Syft supports the creation of SBOM attestations, including keyless attestations using cosign's keyless signatures. It can upload attestations to an OCI registry and verify the attestation claims, adding an extra layer of security and trust. + +This tool is highly valuable in the SBOM and software supply chain security landscape, offering robust capabilities for generating, managing, and utilizing SBOMs effectively. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Tern.md b/SBOM-Catalog/public/descriptions/Tern.md new file mode 100644 index 0000000..b550385 --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Tern.md @@ -0,0 +1,26 @@ +**[Tern](https://github.com/tern-tools/tern)** is a robust software composition analysis tool and Python library, designed for generating Software Bills of Materials (SBOMs) for container images and Dockerfiles. Here's an overview of its capabilities and usage: + +### Features +- **SBOM Generation**: Tern creates detailed SBOMs, offering a layer-by-layer view of container contents in formats like human-readable, CycloneDx, SPDX, and more. +- **Language and Scripts**: It is primarily written in Python3, supplemented with shell scripts. + +### Operation +1. **Initial Analysis**: Tern starts by analyzing the first layer of a container image, gathering details like distribution type, package format, and package managers. +2. **Layer-by-Layer Analysis**: It then executes scripts in a chroot environment to collate information about installed packages in each layer. This process continues through all subsequent layers of the image. +3. **Report Generation**: Upon completion, Tern generates a comprehensive report detailing the packages and their metadata. If a Dockerfile is provided, the report aligns Dockerfile lines with corresponding file system layers. + +### Usage +- **For Container Insight**: It helps in better understanding the makeup of containers, assisting in infrastructure, integration, and deployment decisions. +- **GitHub Action**: There's an available GitHub Action for scanning Docker container images to identify the Base OS and installed packages. + +### Getting Started on Linux +- Requirements include a Linux OS with kernel version >= 4.0, Git, attr, Python 3.6 or newer, Pip, jq, and skopeo. + +### Capabilities +- **CLI Options**: The CLI has evolved, with current options available on Tern's PyPI project page. +- **Docker Support**: Tern supports Docker containers built using image manifest version 2, schema 2, and is compatible with Docker version 19.03.0 or later. + +### Generating Reports +- **For Docker Images**: Use `tern report -i [image_name]` to inspect local Docker images and produce an SBOM. +- **From Dockerfiles**: Tern can analyze Dockerfiles, building the image and then discarding it after analysis, with the command `tern report -d [Dockerfile_path]`. +- **Locking Dockerfiles**: Tern can also create more reproducible, locked versions of Dockerfiles using `tern lock Dockerfile`. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Trivy.md b/SBOM-Catalog/public/descriptions/Trivy.md new file mode 100644 index 0000000..238322f --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Trivy.md @@ -0,0 +1,34 @@ +**[Trivy](https://github.com/aquasecurity/trivy)**, developed by Aqua Security, is a comprehensive and versatile security scanner designed to detect various security issues across multiple platforms and environments. Here's a detailed overview of Trivy: + +### Overview +- **Function**: Finds vulnerabilities, misconfigurations, secrets, and SBOM in containers, Kubernetes, code repositories, clouds, and more. +- **Target Platforms**: Container Image, Filesystem, Git Repository (remote), Virtual Machine Image, Kubernetes, AWS. +- **Scanning Capabilities**: OS packages, software dependencies (SBOM), known vulnerabilities (CVEs), Infrastructure as Code (IaC) issues, misconfigurations, sensitive information, secrets, and software licenses. +- **Language and OS Support**: Trivy supports most popular programming languages, operating systems, and platforms. + +### Installation and Integration +- **Installation**: Available through common distribution channels such as Homebrew, Docker, and direct binary downloads. +- **Integration**: Integrates with various platforms and applications, including GitHub Actions, Kubernetes operators, and VS Code plugins. + +### Usage and Builds +- **General Usage**: Commands like `trivy [--scanners ] ` are used for scanning different targets. +- **Canary Builds**: These are available for each push to the main branch. However, they may contain critical bugs and are not recommended for use in production. + +Trivy's capabilities related to Software Bill of Materials (SBOM) are notably versatile and efficient. Here's a more detailed look at these capabilities: + +### SBOM Generation with Trivy +1. **Supported Formats**: Trivy can generate SBOMs in two formats: + - CycloneDX + - SPDX. + +2. **Command-Line Interface (CLI) Usage**: To generate an SBOM, you use the `--format` option with the relevant subcommand (like `image`, `fs`, and `vm`). For example: + - `trivy image --format spdx-json --output result.json alpine:3.15` + - `trivy fs --format cyclonedx --output result.json /app/myproject`. + +3. **Supported Packages**: Trivy supports a range of packages for SBOM generation, including OS packages and language-specific packages. + +4. **CycloneDX Specifics**: When using CycloneDX format, Trivy can represent either the SBOM or the Bill of Vulnerabilities (BOV). By default, using `--format cyclonedx` represents SBOM without including vulnerabilities in the output. + +5. **Vulnerability Reporting**: Trivy can also report vulnerabilities in the generated SBOM, as demonstrated by the inclusion of vulnerabilities like CVE-2021-42386 in its reports. + +These features make Trivy a robust tool for creating and managing SBOMs, providing critical security insights into software components. \ No newline at end of file diff --git a/SBOM-Catalog/public/descriptions/Voltone_SBOM.md b/SBOM-Catalog/public/descriptions/Voltone_SBOM.md new file mode 100644 index 0000000..823141a --- /dev/null +++ b/SBOM-Catalog/public/descriptions/Voltone_SBOM.md @@ -0,0 +1 @@ +The GitHub repository "voltone/sbom" provides a Mix task tool for generating a Software Bill-of-Materials (SBoM) in the CycloneDX format. This tool is designed for use within the Elixir programming environment, as indicated by the repository's language composition. The project is licensed under the BSD-3-Clause license. For more detailed information, please visit the [repository](https://github.com/voltone/sbom). \ No newline at end of file diff --git a/SBOM-Catalog/public/favicon.svg b/SBOM-Catalog/public/favicon.svg new file mode 100644 index 0000000..2e219b6 --- /dev/null +++ b/SBOM-Catalog/public/favicon.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/SBOM-Catalog/public/filters.yaml b/SBOM-Catalog/public/filters.yaml new file mode 100644 index 0000000..918f43a --- /dev/null +++ b/SBOM-Catalog/public/filters.yaml @@ -0,0 +1,27 @@ +- name: Standards + enabled: true + description: Filter to distinguish between SBOM standards like SPDX and CycloneDx + +- name: License + enabled: false + description: Filter to distinguish between different license types like OpenSource or Proprietary + +- name: Abilities + enabled: true + description: Filter to distinguish between different abilities like SBOM creation, conversion or consumption + +- name: Type + enabled: false + description: Filter to distinguish between different phases where SBOMs are created like sources, build or analysed + +- name: Publisher + enabled: false + description: Filter that shows the publisher of a SBOM related tool + +- name: Name + enabled: true + description: The Name of the SBOM related tool + +- name: Language + enabled: false + description: Filter to distinguish between different programming languages, build tools or operating systems \ No newline at end of file diff --git a/SBOM-Catalog/public/logos/Alpine.png b/SBOM-Catalog/public/logos/Alpine.png new file mode 100644 index 0000000..fe00bcf Binary files /dev/null and b/SBOM-Catalog/public/logos/Alpine.png differ diff --git a/SBOM-Catalog/public/logos/Alpm.png b/SBOM-Catalog/public/logos/Alpm.png new file mode 100644 index 0000000..ef904f5 Binary files /dev/null and b/SBOM-Catalog/public/logos/Alpm.png differ diff --git a/SBOM-Catalog/public/logos/Anchore.png b/SBOM-Catalog/public/logos/Anchore.png new file mode 100644 index 0000000..7c765ba Binary files /dev/null and b/SBOM-Catalog/public/logos/Anchore.png differ diff --git a/SBOM-Catalog/public/logos/Aquasecurity.png b/SBOM-Catalog/public/logos/Aquasecurity.png new file mode 100644 index 0000000..e253286 Binary files /dev/null and b/SBOM-Catalog/public/logos/Aquasecurity.png differ diff --git a/SBOM-Catalog/public/logos/BOM-Squad.png b/SBOM-Catalog/public/logos/BOM-Squad.png new file mode 100644 index 0000000..ea2422e Binary files /dev/null and b/SBOM-Catalog/public/logos/BOM-Squad.png differ diff --git a/SBOM-Catalog/public/logos/Bazel.png b/SBOM-Catalog/public/logos/Bazel.png new file mode 100644 index 0000000..76a056b Binary files /dev/null and b/SBOM-Catalog/public/logos/Bazel.png differ diff --git a/SBOM-Catalog/public/logos/Bomber.png b/SBOM-Catalog/public/logos/Bomber.png new file mode 100644 index 0000000..03d3882 Binary files /dev/null and b/SBOM-Catalog/public/logos/Bomber.png differ diff --git a/SBOM-Catalog/public/logos/Bower.png b/SBOM-Catalog/public/logos/Bower.png new file mode 100644 index 0000000..40d4979 Binary files /dev/null and b/SBOM-Catalog/public/logos/Bower.png differ diff --git a/SBOM-Catalog/public/logos/Cargo.png b/SBOM-Catalog/public/logos/Cargo.png new file mode 100644 index 0000000..48179d0 Binary files /dev/null and b/SBOM-Catalog/public/logos/Cargo.png differ diff --git a/SBOM-Catalog/public/logos/CdxGen.png b/SBOM-Catalog/public/logos/CdxGen.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CdxGen.png differ diff --git a/SBOM-Catalog/public/logos/Clojars.png b/SBOM-Catalog/public/logos/Clojars.png new file mode 100644 index 0000000..67c9e89 Binary files /dev/null and b/SBOM-Catalog/public/logos/Clojars.png differ diff --git a/SBOM-Catalog/public/logos/Composer.png b/SBOM-Catalog/public/logos/Composer.png new file mode 100644 index 0000000..b9b75ba Binary files /dev/null and b/SBOM-Catalog/public/logos/Composer.png differ diff --git a/SBOM-Catalog/public/logos/Conan.png b/SBOM-Catalog/public/logos/Conan.png new file mode 100644 index 0000000..ef6e8d2 Binary files /dev/null and b/SBOM-Catalog/public/logos/Conan.png differ diff --git a/SBOM-Catalog/public/logos/Container.png b/SBOM-Catalog/public/logos/Container.png new file mode 100644 index 0000000..8e71170 Binary files /dev/null and b/SBOM-Catalog/public/logos/Container.png differ diff --git a/SBOM-Catalog/public/logos/Cran.png b/SBOM-Catalog/public/logos/Cran.png new file mode 100644 index 0000000..45618cd Binary files /dev/null and b/SBOM-Catalog/public/logos/Cran.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Cocoapods.png b/SBOM-Catalog/public/logos/CycloneDx-Cocoapods.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Cocoapods.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Gradle.png b/SBOM-Catalog/public/logos/CycloneDx-Gradle.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Gradle.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Maven.png b/SBOM-Catalog/public/logos/CycloneDx-Maven.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Maven.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-NPM.png b/SBOM-Catalog/public/logos/CycloneDx-NPM.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-NPM.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-PHP-Composer.png b/SBOM-Catalog/public/logos/CycloneDx-PHP-Composer.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-PHP-Composer.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Python.png b/SBOM-Catalog/public/logos/CycloneDx-Python.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Python.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Ruby-Gem.png b/SBOM-Catalog/public/logos/CycloneDx-Ruby-Gem.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Ruby-Gem.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Rust-Cargo.png b/SBOM-Catalog/public/logos/CycloneDx-Rust-Cargo.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Rust-Cargo.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-Webpack-Plugin.png b/SBOM-Catalog/public/logos/CycloneDx-Webpack-Plugin.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-Webpack-Plugin.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx-dotnet.png b/SBOM-Catalog/public/logos/CycloneDx-dotnet.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx-dotnet.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx.png b/SBOM-Catalog/public/logos/CycloneDx.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx_GoMod.png b/SBOM-Catalog/public/logos/CycloneDx_GoMod.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx_GoMod.png differ diff --git a/SBOM-Catalog/public/logos/CycloneDx_Node_Module.png b/SBOM-Catalog/public/logos/CycloneDx_Node_Module.png new file mode 100644 index 0000000..2a11ab6 Binary files /dev/null and b/SBOM-Catalog/public/logos/CycloneDx_Node_Module.png differ diff --git a/SBOM-Catalog/public/logos/Dart.png b/SBOM-Catalog/public/logos/Dart.png new file mode 100644 index 0000000..3139a79 Binary files /dev/null and b/SBOM-Catalog/public/logos/Dart.png differ diff --git a/SBOM-Catalog/public/logos/Deb.png b/SBOM-Catalog/public/logos/Deb.png new file mode 100644 index 0000000..395ed8d Binary files /dev/null and b/SBOM-Catalog/public/logos/Deb.png differ diff --git a/SBOM-Catalog/public/logos/DevOps-Kung-Fu-Mafia.png b/SBOM-Catalog/public/logos/DevOps-Kung-Fu-Mafia.png new file mode 100644 index 0000000..d5f1d85 Binary files /dev/null and b/SBOM-Catalog/public/logos/DevOps-Kung-Fu-Mafia.png differ diff --git a/SBOM-Catalog/public/logos/Dotnet.png b/SBOM-Catalog/public/logos/Dotnet.png new file mode 100644 index 0000000..7e83b17 Binary files /dev/null and b/SBOM-Catalog/public/logos/Dotnet.png differ diff --git a/SBOM-Catalog/public/logos/Eclipse-SW360.png b/SBOM-Catalog/public/logos/Eclipse-SW360.png new file mode 100644 index 0000000..6cd4a80 Binary files /dev/null and b/SBOM-Catalog/public/logos/Eclipse-SW360.png differ diff --git a/SBOM-Catalog/public/logos/Gem.png b/SBOM-Catalog/public/logos/Gem.png new file mode 100644 index 0000000..dff3294 Binary files /dev/null and b/SBOM-Catalog/public/logos/Gem.png differ diff --git a/SBOM-Catalog/public/logos/Github-Dependency-Graph.png b/SBOM-Catalog/public/logos/Github-Dependency-Graph.png new file mode 100644 index 0000000..3b5c0da Binary files /dev/null and b/SBOM-Catalog/public/logos/Github-Dependency-Graph.png differ diff --git a/SBOM-Catalog/public/logos/Github.png b/SBOM-Catalog/public/logos/Github.png new file mode 100644 index 0000000..8a7c97e Binary files /dev/null and b/SBOM-Catalog/public/logos/Github.png differ diff --git a/SBOM-Catalog/public/logos/Golang.png b/SBOM-Catalog/public/logos/Golang.png new file mode 100644 index 0000000..7204974 Binary files /dev/null and b/SBOM-Catalog/public/logos/Golang.png differ diff --git a/SBOM-Catalog/public/logos/Grype.png b/SBOM-Catalog/public/logos/Grype.png new file mode 100644 index 0000000..45a46f8 Binary files /dev/null and b/SBOM-Catalog/public/logos/Grype.png differ diff --git a/SBOM-Catalog/public/logos/Hackage.png b/SBOM-Catalog/public/logos/Hackage.png new file mode 100644 index 0000000..912638a Binary files /dev/null and b/SBOM-Catalog/public/logos/Hackage.png differ diff --git a/SBOM-Catalog/public/logos/Haxe.png b/SBOM-Catalog/public/logos/Haxe.png new file mode 100644 index 0000000..3f12442 Binary files /dev/null and b/SBOM-Catalog/public/logos/Haxe.png differ diff --git a/SBOM-Catalog/public/logos/Hex.png b/SBOM-Catalog/public/logos/Hex.png new file mode 100644 index 0000000..249c32e Binary files /dev/null and b/SBOM-Catalog/public/logos/Hex.png differ diff --git a/SBOM-Catalog/public/logos/HowTo.png b/SBOM-Catalog/public/logos/HowTo.png new file mode 100644 index 0000000..e71e2d5 Binary files /dev/null and b/SBOM-Catalog/public/logos/HowTo.png differ diff --git a/SBOM-Catalog/public/logos/Jar.png b/SBOM-Catalog/public/logos/Jar.png new file mode 100644 index 0000000..d82cce5 Binary files /dev/null and b/SBOM-Catalog/public/logos/Jar.png differ diff --git a/SBOM-Catalog/public/logos/Kubernetes-BOM.png b/SBOM-Catalog/public/logos/Kubernetes-BOM.png new file mode 100644 index 0000000..1ceedaa Binary files /dev/null and b/SBOM-Catalog/public/logos/Kubernetes-BOM.png differ diff --git a/SBOM-Catalog/public/logos/Kubernetes-SIGs.png b/SBOM-Catalog/public/logos/Kubernetes-SIGs.png new file mode 100644 index 0000000..1ceedaa Binary files /dev/null and b/SBOM-Catalog/public/logos/Kubernetes-SIGs.png differ diff --git a/SBOM-Catalog/public/logos/Landscape.png b/SBOM-Catalog/public/logos/Landscape.png new file mode 100644 index 0000000..e71e2d5 Binary files /dev/null and b/SBOM-Catalog/public/logos/Landscape.png differ diff --git a/SBOM-Catalog/public/logos/Maven.png b/SBOM-Catalog/public/logos/Maven.png new file mode 100644 index 0000000..6979bfb Binary files /dev/null and b/SBOM-Catalog/public/logos/Maven.png differ diff --git a/SBOM-Catalog/public/logos/Microsoft-SBOM-Tool.png b/SBOM-Catalog/public/logos/Microsoft-SBOM-Tool.png new file mode 100644 index 0000000..68f668c Binary files /dev/null and b/SBOM-Catalog/public/logos/Microsoft-SBOM-Tool.png differ diff --git a/SBOM-Catalog/public/logos/Microsoft.png b/SBOM-Catalog/public/logos/Microsoft.png new file mode 100644 index 0000000..68f668c Binary files /dev/null and b/SBOM-Catalog/public/logos/Microsoft.png differ diff --git a/SBOM-Catalog/public/logos/NexB.png b/SBOM-Catalog/public/logos/NexB.png new file mode 100644 index 0000000..191c449 Binary files /dev/null and b/SBOM-Catalog/public/logos/NexB.png differ diff --git a/SBOM-Catalog/public/logos/Npm.png b/SBOM-Catalog/public/logos/Npm.png new file mode 100644 index 0000000..62bde3a Binary files /dev/null and b/SBOM-Catalog/public/logos/Npm.png differ diff --git a/SBOM-Catalog/public/logos/Nuget.png b/SBOM-Catalog/public/logos/Nuget.png new file mode 100644 index 0000000..e62c57a Binary files /dev/null and b/SBOM-Catalog/public/logos/Nuget.png differ diff --git a/SBOM-Catalog/public/logos/ORT.png b/SBOM-Catalog/public/logos/ORT.png new file mode 100644 index 0000000..b40cf5c Binary files /dev/null and b/SBOM-Catalog/public/logos/ORT.png differ diff --git a/SBOM-Catalog/public/logos/OSS-Review-Toolkit.png b/SBOM-Catalog/public/logos/OSS-Review-Toolkit.png new file mode 100644 index 0000000..b40cf5c Binary files /dev/null and b/SBOM-Catalog/public/logos/OSS-Review-Toolkit.png differ diff --git a/SBOM-Catalog/public/logos/Opam.png b/SBOM-Catalog/public/logos/Opam.png new file mode 100644 index 0000000..b7c1a09 Binary files /dev/null and b/SBOM-Catalog/public/logos/Opam.png differ diff --git a/SBOM-Catalog/public/logos/OpenSource.png b/SBOM-Catalog/public/logos/OpenSource.png new file mode 100644 index 0000000..dc55c22 Binary files /dev/null and b/SBOM-Catalog/public/logos/OpenSource.png differ diff --git a/SBOM-Catalog/public/logos/Osgi.png b/SBOM-Catalog/public/logos/Osgi.png new file mode 100644 index 0000000..e2d41af Binary files /dev/null and b/SBOM-Catalog/public/logos/Osgi.png differ diff --git a/SBOM-Catalog/public/logos/Propriatary.png b/SBOM-Catalog/public/logos/Propriatary.png new file mode 100644 index 0000000..05dd69a Binary files /dev/null and b/SBOM-Catalog/public/logos/Propriatary.png differ diff --git a/SBOM-Catalog/public/logos/Protobom.png b/SBOM-Catalog/public/logos/Protobom.png new file mode 100644 index 0000000..ea2422e Binary files /dev/null and b/SBOM-Catalog/public/logos/Protobom.png differ diff --git a/SBOM-Catalog/public/logos/Pub.png b/SBOM-Catalog/public/logos/Pub.png new file mode 100644 index 0000000..3139a79 Binary files /dev/null and b/SBOM-Catalog/public/logos/Pub.png differ diff --git a/SBOM-Catalog/public/logos/Pypi.png b/SBOM-Catalog/public/logos/Pypi.png new file mode 100644 index 0000000..04eb9a7 Binary files /dev/null and b/SBOM-Catalog/public/logos/Pypi.png differ diff --git a/SBOM-Catalog/public/logos/Release.png b/SBOM-Catalog/public/logos/Release.png new file mode 100644 index 0000000..d62e10d Binary files /dev/null and b/SBOM-Catalog/public/logos/Release.png differ diff --git a/SBOM-Catalog/public/logos/Rpm.png b/SBOM-Catalog/public/logos/Rpm.png new file mode 100644 index 0000000..627470c Binary files /dev/null and b/SBOM-Catalog/public/logos/Rpm.png differ diff --git a/SBOM-Catalog/public/logos/SCANOSS.png b/SBOM-Catalog/public/logos/SCANOSS.png new file mode 100644 index 0000000..63b58f6 Binary files /dev/null and b/SBOM-Catalog/public/logos/SCANOSS.png differ diff --git a/SBOM-Catalog/public/logos/SPDX-Gradle.png b/SBOM-Catalog/public/logos/SPDX-Gradle.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX-Gradle.png differ diff --git a/SBOM-Catalog/public/logos/SPDX-Java-Tools.png b/SBOM-Catalog/public/logos/SPDX-Java-Tools.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX-Java-Tools.png differ diff --git a/SBOM-Catalog/public/logos/SPDX-Maven.png b/SBOM-Catalog/public/logos/SPDX-Maven.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX-Maven.png differ diff --git a/SBOM-Catalog/public/logos/SPDX-Online-Tools.png b/SBOM-Catalog/public/logos/SPDX-Online-Tools.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX-Online-Tools.png differ diff --git a/SBOM-Catalog/public/logos/SPDX-Python-Tools.png b/SBOM-Catalog/public/logos/SPDX-Python-Tools.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX-Python-Tools.png differ diff --git a/SBOM-Catalog/public/logos/SPDX.png b/SBOM-Catalog/public/logos/SPDX.png new file mode 100644 index 0000000..241bd7c Binary files /dev/null and b/SBOM-Catalog/public/logos/SPDX.png differ diff --git a/SBOM-Catalog/public/logos/SW360.png b/SBOM-Catalog/public/logos/SW360.png new file mode 100644 index 0000000..6cd4a80 Binary files /dev/null and b/SBOM-Catalog/public/logos/SW360.png differ diff --git a/SBOM-Catalog/public/logos/Sbom-workbench.png b/SBOM-Catalog/public/logos/Sbom-workbench.png new file mode 100644 index 0000000..63b58f6 Binary files /dev/null and b/SBOM-Catalog/public/logos/Sbom-workbench.png differ diff --git a/SBOM-Catalog/public/logos/Scancode.png b/SBOM-Catalog/public/logos/Scancode.png new file mode 100644 index 0000000..191c449 Binary files /dev/null and b/SBOM-Catalog/public/logos/Scancode.png differ diff --git a/SBOM-Catalog/public/logos/Source.png b/SBOM-Catalog/public/logos/Source.png new file mode 100644 index 0000000..1a1c06d Binary files /dev/null and b/SBOM-Catalog/public/logos/Source.png differ diff --git a/SBOM-Catalog/public/logos/Syft.png b/SBOM-Catalog/public/logos/Syft.png new file mode 100644 index 0000000..ab68125 Binary files /dev/null and b/SBOM-Catalog/public/logos/Syft.png differ diff --git a/SBOM-Catalog/public/logos/Tern.png b/SBOM-Catalog/public/logos/Tern.png new file mode 100644 index 0000000..a5f4867 Binary files /dev/null and b/SBOM-Catalog/public/logos/Tern.png differ diff --git a/SBOM-Catalog/public/logos/Trivy.png b/SBOM-Catalog/public/logos/Trivy.png new file mode 100644 index 0000000..db0b325 Binary files /dev/null and b/SBOM-Catalog/public/logos/Trivy.png differ diff --git a/SBOM-Catalog/public/logos/Voltone_SBOM.png b/SBOM-Catalog/public/logos/Voltone_SBOM.png new file mode 100644 index 0000000..863a15e Binary files /dev/null and b/SBOM-Catalog/public/logos/Voltone_SBOM.png differ diff --git a/SBOM-Catalog/src/App.vue b/SBOM-Catalog/src/App.vue new file mode 100644 index 0000000..9e2a9ac --- /dev/null +++ b/SBOM-Catalog/src/App.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/SBOM-Catalog/src/assets/data.json b/SBOM-Catalog/src/assets/data.json new file mode 100644 index 0000000..c0cd785 --- /dev/null +++ b/SBOM-Catalog/src/assets/data.json @@ -0,0 +1,1040 @@ +{ + "name": "flare", + "children": [ + { + "name": "analytics", + "children": [ + { + "name": "cluster", + "children": [ + { + "name": "AgglomerativeCluster", + "value": 3938 + }, + { + "name": "CommunityStructure", + "value": 3812 + }, + { + "name": "HierarchicalCluster", + "value": 6714 + }, + { + "name": "MergeEdge", + "value": 743 + } + ] + }, + { + "name": "graph", + "children": [ + { + "name": "BetweennessCentrality", + "value": 3534 + }, + { + "name": "LinkDistance", + "value": 5731 + }, + { + "name": "MaxFlowMinCut", + "value": 7840 + }, + { + "name": "ShortestPaths", + "value": 5914 + }, + { + "name": "SpanningTree", + "value": 3416 + } + ] + }, + { + "name": "optimization", + "children": [ + { + "name": "AspectRatioBanker", + "value": 7074 + } + ] + } + ] + }, + { + "name": "animate", + "children": [ + { + "name": "Easing", + "value": 17010 + }, + { + "name": "FunctionSequence", + "value": 5842 + }, + { + "name": "interpolate", + "children": [ + { + "name": "ArrayInterpolator", + "value": 1983 + }, + { + "name": "ColorInterpolator", + "value": 2047 + }, + { + "name": "DateInterpolator", + "value": 1375 + }, + { + "name": "Interpolator", + "value": 8746 + }, + { + "name": "MatrixInterpolator", + "value": 2202 + }, + { + "name": "NumberInterpolator", + "value": 1382 + }, + { + "name": "ObjectInterpolator", + "value": 1629 + }, + { + "name": "PointInterpolator", + "value": 1675 + }, + { + "name": "RectangleInterpolator", + "value": 2042 + } + ] + }, + { + "name": "ISchedulable", + "value": 1041 + }, + { + "name": "Parallel", + "value": 5176 + }, + { + "name": "Pause", + "value": 449 + }, + { + "name": "Scheduler", + "value": 5593 + }, + { + "name": "Sequence", + "value": 5534 + }, + { + "name": "Transition", + "value": 9201 + }, + { + "name": "Transitioner", + "value": 19975 + }, + { + "name": "TransitionEvent", + "value": 1116 + }, + { + "name": "Tween", + "value": 6006 + } + ] + }, + { + "name": "data", + "children": [ + { + "name": "converters", + "children": [ + { + "name": "Converters", + "value": 721 + }, + { + "name": "DelimitedTextConverter", + "value": 4294 + }, + { + "name": "GraphMLConverter", + "value": 9800 + }, + { + "name": "IDataConverter", + "value": 1314 + }, + { + "name": "JSONConverter", + "value": 2220 + } + ] + }, + { + "name": "DataField", + "value": 1759 + }, + { + "name": "DataSchema", + "value": 2165 + }, + { + "name": "DataSet", + "value": 586 + }, + { + "name": "DataSource", + "value": 3331 + }, + { + "name": "DataTable", + "value": 772 + }, + { + "name": "DataUtil", + "value": 3322 + } + ] + }, + { + "name": "display", + "children": [ + { + "name": "DirtySprite", + "value": 8833 + }, + { + "name": "LineSprite", + "value": 1732 + }, + { + "name": "RectSprite", + "value": 3623 + }, + { + "name": "TextSprite", + "value": 10066 + } + ] + }, + { + "name": "flex", + "children": [ + { + "name": "FlareVis", + "value": 4116 + } + ] + }, + { + "name": "physics", + "children": [ + { + "name": "DragForce", + "value": 1082 + }, + { + "name": "GravityForce", + "value": 1336 + }, + { + "name": "IForce", + "value": 319 + }, + { + "name": "NBodyForce", + "value": 10498 + }, + { + "name": "Particle", + "value": 2822 + }, + { + "name": "Simulation", + "value": 9983 + }, + { + "name": "Spring", + "value": 2213 + }, + { + "name": "SpringForce", + "value": 1681 + } + ] + }, + { + "name": "query", + "children": [ + { + "name": "AggregateExpression", + "value": 1616 + }, + { + "name": "And", + "value": 1027 + }, + { + "name": "Arithmetic", + "value": 3891 + }, + { + "name": "Average", + "value": 891 + }, + { + "name": "BinaryExpression", + "value": 2893 + }, + { + "name": "Comparison", + "value": 5103 + }, + { + "name": "CompositeExpression", + "value": 3677 + }, + { + "name": "Count", + "value": 781 + }, + { + "name": "DateUtil", + "value": 4141 + }, + { + "name": "Distinct", + "value": 933 + }, + { + "name": "Expression", + "value": 5130 + }, + { + "name": "ExpressionIterator", + "value": 3617 + }, + { + "name": "Fn", + "value": 3240 + }, + { + "name": "If", + "value": 2732 + }, + { + "name": "IsA", + "value": 2039 + }, + { + "name": "Literal", + "value": 1214 + }, + { + "name": "Match", + "value": 3748 + }, + { + "name": "Maximum", + "value": 843 + }, + { + "name": "methods", + "children": [ + { + "name": "add", + "value": 593 + }, + { + "name": "and", + "value": 330 + }, + { + "name": "average", + "value": 287 + }, + { + "name": "count", + "value": 277 + }, + { + "name": "distinct", + "value": 292 + }, + { + "name": "div", + "value": 595 + }, + { + "name": "eq", + "value": 594 + }, + { + "name": "fn", + "value": 460 + }, + { + "name": "gt", + "value": 603 + }, + { + "name": "gte", + "value": 625 + }, + { + "name": "iff", + "value": 748 + }, + { + "name": "isa", + "value": 461 + }, + { + "name": "lt", + "value": 597 + }, + { + "name": "lte", + "value": 619 + }, + { + "name": "max", + "value": 283 + }, + { + "name": "min", + "value": 283 + }, + { + "name": "mod", + "value": 591 + }, + { + "name": "mul", + "value": 603 + }, + { + "name": "neq", + "value": 599 + }, + { + "name": "not", + "value": 386 + }, + { + "name": "or", + "value": 323 + }, + { + "name": "orderby", + "value": 307 + }, + { + "name": "range", + "value": 772 + }, + { + "name": "select", + "value": 296 + }, + { + "name": "stddev", + "value": 363 + }, + { + "name": "sub", + "value": 600 + }, + { + "name": "sum", + "value": 280 + }, + { + "name": "update", + "value": 307 + }, + { + "name": "variance", + "value": 335 + }, + { + "name": "where", + "value": 299 + }, + { + "name": "xor", + "value": 354 + }, + { + "name": "_", + "value": 264 + } + ] + }, + { + "name": "Minimum", + "value": 843 + }, + { + "name": "Not", + "value": 1554 + }, + { + "name": "Or", + "value": 970 + }, + { + "name": "Query", + "value": 13896 + }, + { + "name": "Range", + "value": 1594 + }, + { + "name": "StringUtil", + "value": 4130 + }, + { + "name": "Sum", + "value": 791 + }, + { + "name": "Variable", + "value": 1124 + }, + { + "name": "Variance", + "value": 1876 + }, + { + "name": "Xor", + "value": 1101 + } + ] + }, + { + "name": "scale", + "children": [ + { + "name": "IScaleMap", + "value": 2105 + }, + { + "name": "LinearScale", + "value": 1316 + }, + { + "name": "LogScale", + "value": 3151 + }, + { + "name": "OrdinalScale", + "value": 3770 + }, + { + "name": "QuantileScale", + "value": 2435 + }, + { + "name": "QuantitativeScale", + "value": 4839 + }, + { + "name": "RootScale", + "value": 1756 + }, + { + "name": "Scale", + "value": 4268 + }, + { + "name": "ScaleType", + "value": 1821 + }, + { + "name": "TimeScale", + "value": 5833 + } + ] + }, + { + "name": "util", + "children": [ + { + "name": "Arrays", + "value": 8258 + }, + { + "name": "Colors", + "value": 10001 + }, + { + "name": "Dates", + "value": 8217 + }, + { + "name": "Displays", + "value": 12555 + }, + { + "name": "Filter", + "value": 2324 + }, + { + "name": "Geometry", + "value": 10993 + }, + { + "name": "heap", + "children": [ + { + "name": "FibonacciHeap", + "value": 9354 + }, + { + "name": "HeapNode", + "value": 1233 + } + ] + }, + { + "name": "IEvaluable", + "value": 335 + }, + { + "name": "IPredicate", + "value": 383 + }, + { + "name": "IValueProxy", + "value": 874 + }, + { + "name": "math", + "children": [ + { + "name": "DenseMatrix", + "value": 3165 + }, + { + "name": "IMatrix", + "value": 2815 + }, + { + "name": "SparseMatrix", + "value": 3366 + } + ] + }, + { + "name": "Maths", + "value": 17705 + }, + { + "name": "Orientation", + "value": 1486 + }, + { + "name": "palette", + "children": [ + { + "name": "ColorPalette", + "value": 6367 + }, + { + "name": "Palette", + "value": 1229 + }, + { + "name": "ShapePalette", + "value": 2059 + }, + { + "name": "SizePalette", + "value": 2291 + } + ] + }, + { + "name": "Property", + "value": 5559 + }, + { + "name": "Shapes", + "value": 19118 + }, + { + "name": "Sort", + "value": 6887 + }, + { + "name": "Stats", + "value": 6557 + }, + { + "name": "Strings", + "value": 22026 + } + ] + }, + { + "name": "vis", + "children": [ + { + "name": "axis", + "children": [ + { + "name": "Axes", + "value": 1302 + }, + { + "name": "Axis", + "value": 24593 + }, + { + "name": "AxisGridLine", + "value": 652 + }, + { + "name": "AxisLabel", + "value": 636 + }, + { + "name": "CartesianAxes", + "value": 6703 + } + ] + }, + { + "name": "controls", + "children": [ + { + "name": "AnchorControl", + "value": 2138 + }, + { + "name": "ClickControl", + "value": 3824 + }, + { + "name": "Control", + "value": 1353 + }, + { + "name": "ControlList", + "value": 4665 + }, + { + "name": "DragControl", + "value": 2649 + }, + { + "name": "ExpandControl", + "value": 2832 + }, + { + "name": "HoverControl", + "value": 4896 + }, + { + "name": "IControl", + "value": 763 + }, + { + "name": "PanZoomControl", + "value": 5222 + }, + { + "name": "SelectionControl", + "value": 7862 + }, + { + "name": "TooltipControl", + "value": 8435 + } + ] + }, + { + "name": "data", + "children": [ + { + "name": "Data", + "value": 20544 + }, + { + "name": "DataList", + "value": 19788 + }, + { + "name": "DataSprite", + "value": 10349 + }, + { + "name": "EdgeSprite", + "value": 3301 + }, + { + "name": "NodeSprite", + "value": 19382 + }, + { + "name": "render", + "children": [ + { + "name": "ArrowType", + "value": 698 + }, + { + "name": "EdgeRenderer", + "value": 5569 + }, + { + "name": "IRenderer", + "value": 353 + }, + { + "name": "ShapeRenderer", + "value": 2247 + } + ] + }, + { + "name": "ScaleBinding", + "value": 11275 + }, + { + "name": "Tree", + "value": 7147 + }, + { + "name": "TreeBuilder", + "value": 9930 + } + ] + }, + { + "name": "events", + "children": [ + { + "name": "DataEvent", + "value": 2313 + }, + { + "name": "SelectionEvent", + "value": 1880 + }, + { + "name": "TooltipEvent", + "value": 1701 + }, + { + "name": "VisualizationEvent", + "value": 1117 + } + ] + }, + { + "name": "legend", + "children": [ + { + "name": "Legend", + "value": 20859 + }, + { + "name": "LegendItem", + "value": 4614 + }, + { + "name": "LegendRange", + "value": 10530 + } + ] + }, + { + "name": "operator", + "children": [ + { + "name": "distortion", + "children": [ + { + "name": "BifocalDistortion", + "value": 4461 + }, + { + "name": "Distortion", + "value": 6314 + }, + { + "name": "FisheyeDistortion", + "value": 3444 + } + ] + }, + { + "name": "encoder", + "children": [ + { + "name": "ColorEncoder", + "value": 3179 + }, + { + "name": "Encoder", + "value": 4060 + }, + { + "name": "PropertyEncoder", + "value": 4138 + }, + { + "name": "ShapeEncoder", + "value": 1690 + }, + { + "name": "SizeEncoder", + "value": 1830 + } + ] + }, + { + "name": "filter", + "children": [ + { + "name": "FisheyeTreeFilter", + "value": 5219 + }, + { + "name": "GraphDistanceFilter", + "value": 3165 + }, + { + "name": "VisibilityFilter", + "value": 3509 + } + ] + }, + { + "name": "IOperator", + "value": 1286 + }, + { + "name": "label", + "children": [ + { + "name": "Labeler", + "value": 9956 + }, + { + "name": "RadialLabeler", + "value": 3899 + }, + { + "name": "StackedAreaLabeler", + "value": 3202 + } + ] + }, + { + "name": "layout", + "children": [ + { + "name": "AxisLayout", + "value": 6725 + }, + { + "name": "BundledEdgeRouter", + "value": 3727 + }, + { + "name": "CircleLayout", + "value": 9317 + }, + { + "name": "CirclePackingLayout", + "value": 12003 + }, + { + "name": "DendrogramLayout", + "value": 4853 + }, + { + "name": "ForceDirectedLayout", + "value": 8411 + }, + { + "name": "IcicleTreeLayout", + "value": 4864 + }, + { + "name": "IndentedTreeLayout", + "value": 3174 + }, + { + "name": "Layout", + "value": 7881 + }, + { + "name": "NodeLinkTreeLayout", + "value": 12870 + }, + { + "name": "PieLayout", + "value": 2728 + }, + { + "name": "RadialTreeLayout", + "value": 12348 + }, + { + "name": "RandomLayout", + "value": 870 + }, + { + "name": "StackedAreaLayout", + "value": 9121 + }, + { + "name": "TreeMapLayout", + "value": 9191 + } + ] + }, + { + "name": "Operator", + "value": 2490 + }, + { + "name": "OperatorList", + "value": 5248 + }, + { + "name": "OperatorSequence", + "value": 4190 + }, + { + "name": "OperatorSwitch", + "value": 2581 + }, + { + "name": "SortOperator", + "value": 2023 + } + ] + }, + { + "name": "Visualization", + "value": 16540 + } + ] + } + ] +} \ No newline at end of file diff --git a/SBOM-Catalog/src/assets/graph.json b/SBOM-Catalog/src/assets/graph.json new file mode 100644 index 0000000..cc22bb9 --- /dev/null +++ b/SBOM-Catalog/src/assets/graph.json @@ -0,0 +1,2925 @@ +{ + "nodes": [ + { + "id": "Structural basis of PROTAC cooperative recognition for selective protein degradation.", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "The influence of rough lipopolysaccharide structure on molecular interactions with mammalian antimicrobial peptides", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "New Synthetic Routes to Triazolo-benzodiazepine Analogues: Expanding the Scope of the Bump-and-Hole Approach for Selective Bromo and Extra-Terminal (BET) Bromodomain Inhibition.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Cyclic and Macrocyclic Peptides as Chemical Tools To Recognise Protein Surfaces and Probe Protein-Protein Interactions.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "8-Substituted Pyrido[3,4-d]pyrimidin-4(3H)-one Derivatives As Potent, Cell Permeable, KDM4 (JMJD2) and KDM5 (JARID1) Histone Lysine Demethylase Inhibitors.", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Discovery of Type II Inhibitors of TGFβ-Activated Kinase 1 (TAK1) and Mitogen-Activated Protein Kinase Kinase Kinase Kinase 2 (MAP4K2)", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "SIK2 regulates CRTCs, HDAC4 and glucose uptake in adipocytes", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Metabotropic Glutamate Receptor 5 Negative Allosteric Modulators: Discovery of 2-Chloro-4-[1-(4-fluorophenyl)-2,5-dimethyl-1H-imidazol-4-ylethynyl]pyridine (Basimglurant, RO4917523), a Promising Novel Medicine for Psychiatric Diseases", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Nrf2 regulates ROS production by mitochondria and NADPH oxidase.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The clinically approved drugs dasatinib and bosutinib induce anti-inflammatory macrophages by inhibiting the salt-inducible kinases", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "New Monocyclic, Bicyclic, and Tricyclic Ethynylcyanodienones as Activators of the Keap1/Nrf2/ARE Pathway and Inhibitors of Inducible Nitric Oxide Synthase", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Palmitoylation of the Na/Ca exchanger cytoplasmic loop controls its inactivation and internalization during stress signaling", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Molecular Cloning and Functional Characterization of Components of the Capsule Biosynthesis Complex of Neisseria meningitidis Serogroup A TOWARD IN VITRO VACCINE PRODUCTION", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "group": "Cited Works", + "radius": 7, + "citing_patents_count": 7 + }, + { + "id": "An unexpected twist to the activation of IKKβ: TAK1 primes IKKβ for activation by autophosphorylation", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Crystallographic analysis of Neisseria meningitidis PorB extracellular loops potentially implicated in TLR2 recognition", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The LKB1-salt-inducible kinase pathway functions as a key gluconeogenic suppressor in the liver", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Characterization of VPS34-IN1, a selective inhibitor of Vps34, reveals that the phosphatidylinositol 3-phosphate-binding SGK3 protein kinase is a downstream target of class III phosphoinositide 3-kinase", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "group": "Cited Works", + "radius": 6, + "citing_patents_count": 6 + }, + { + "id": "Carnosic acid stimulates glucose uptake in skeletal muscle cells via a PME-1/PP2A/PKB signalling axis", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Kv1.3 inhibitors have differential effects on glucose uptake and AMPK activity in skeletal muscle cell lines and mouse ex vivo skeletal muscle", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Restoration of CFTR function in patients with cystic fibrosis carrying the F508del-CFTR mutation", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Parkin is activated by PINK1-dependent phosphorylation of ubiquitin at Ser65", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "Substrate recognition by the cell surface palmitoyl transferase DHHC5.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Dysregulation of ubiquitin homeostasis and β-catenin signaling promote spinal muscular atrophy", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Structure-Guided Design and Optimization of Small Molecules Targeting the Protein–Protein Interaction between the von Hippel–Lindau (VHL) E3 Ubiquitin Ligase and the Hypoxia Inducible Factor (HIF) Alpha Subunit with in Vitro Nanomolar Affinities", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "The Nrf2 regulatory network provides an interface between redox and intermediary metabolism", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Characterization of WZ4003 and HTH-01-015 as selective inhibitors of the LKB1-tumour-suppressor-activated NUAK kinases", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "group": "Cited Works", + "radius": 6, + "citing_patents_count": 6 + }, + { + "id": "Structure-activity relationship studies of pyrrolone antimalarial agents", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "The Concise Guide to Pharmacology 2013/14.: The Concise Guide to Pharmacology 2013/14: G Protein-Coupled Receptors", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Elevated SGK1 predicts resistance of breast cancer cells to Akt inhibitors", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Metabolism of inflammation limited by AMPK and pseudo-starvation", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Nrf2 impacts cellular bioenergetics by controlling substrate availability for mitochondrial respiration", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The anti-inflammatory compound BAY 11-7082 is a potent inhibitor of Protein Tyrosine Phosphatases", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "BslA is a self-assembling bacterial hydrophobin that coats the Bacillus subtilis biofilm", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Investigation of acyclic uridine amide and 5′-amido nucleoside analogues as potential inhibitors of the Plasmodium falciparum dUTPase", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Discovery and structure-activity relationships of pyrrolone antimalarials", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "De Novo Design of Protein Kinase Inhibitors by in Silico Identification of Hinge Region-Binding Fragments", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Comprehensive characterization and optimization of anti-LRRK2 (leucine-rich repeat kinase 2) monoclonal antibodies", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "From On-Target to Off-Target Activity: Identification and Optimisation of Trypanosoma brucei GSK3 Inhibitors and Their Characterisation as Anti-Trypanosoma brucei Drug Discovery Lead Molecules", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "HIF-independent role of prolyl hydroxylases in the cellular response to amino acids", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "group": "Cited Works", + "radius": 11, + "citing_patents_count": 11 + }, + { + "id": "A novel shogaol analog suppresses cancer cell invasion and inflammation, and displays cytoprotective effects through modulation of NF-κB and Nrf2-Keap1 signaling pathways", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "X-ray Crystal Structure of ERK5 (MAPK7) in Complex with a Specific Inhibitor", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "The endosome-lysosome pathway and information generation in the immune system.", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "GSK2578215A; a potent and highly selective 2-arylmethyloxy-5-substitutent-N-arylbenzamide LRRK2 kinase inhibitor.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Structure of the TatC core of the twin-arginine protein transport system", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The Ancient Drug Salicylate Directly Activates AMP-Activated Protein Kinase", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Application of a novel highly sensitive activity-based probe for detection of cathepsin G", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Analysis of the role of Nrf2 in the expression of liver proteins in mice using two-dimensional gel-based proteomics", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "PINK1 is activated by mitochondrial membrane potential depolarization and stimulates Parkin E3 ligase activity by phosphorylating Serine 65", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Synthesis, Chemical Reactivity as Michael Acceptors, and Biological Potency of Monocyclic Cyanoenones, Novel and Highly Potent Anti-inflammatory and Cytoprotective Agents(1)", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "group": "Cited Works", + "radius": 5, + "citing_patents_count": 5 + }, + { + "id": "Mitogen-activated protein kinase-activated protein kinase 2 (MAPKAP-K2) as an antiinflammatory target: discovery and in vivo activity of selective pyrazolo[1,5-a]pyrimidine inhibitors using a focused library and structure-based optimization approach.", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Chemical Proteomic Analysis Reveals the Drugability of the Kinome of Trypanosoma brucei", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Avirulence Protein 3a (AVR3a) from the Potato Pathogen Phytophthora infestans Forms Homodimers through Its Predicted Translocation Region and Does Not Specifically Bind Phospholipids", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "NEDD8 overexpression results in neddylation of ubiquitin substrates by the ubiquitin pathway.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Kinome-wide Selectivity Profiling of ATP-competitive Mammalian Target of Rapamycin (mTOR) Inhibitors and Characterization of Their Binding Kinetics", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The ubiquitin E1 enzyme Ube1 mediates NEDD8 activation under diverse stress conditions", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Acinetobacter baumannii FolD ligand complexes – potent inhibitors of folate metabolism and a re‐evaluation of the structure of LY374571", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Aurora kinase inhibitors: Progress towards the clinic", + "group": "Cited Works", + "radius": 12, + "citing_patents_count": 12 + }, + { + "id": "The AMPK-related kinase SIK2 is regulated by cAMP via phosphorylation at Ser(358) in adipocytes", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Synergy of Peptide and Sugar in O-GlcNAcase Substrate Recognition", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Discovery of potent and selective covalent inhibitors of JNK", + "group": "Cited Works", + "radius": 6, + "citing_patents_count": 6 + }, + { + "id": "Phosphorylation of FOXO3a on Ser-7 by p38 Promotes Its Nuclear Localization in Response to Doxorubicin", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "group": "Cited Works", + "radius": 6, + "citing_patents_count": 6 + }, + { + "id": "Synthesis and structure-activity relationships of a novel series of pyrimidines as potent inhibitors of TBK1/IKKε kinases.", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "Peptide inhibitors of the Keap1-Nrf2 protein-protein interaction", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Small molecules that bind the Mdm2 RING stabilize and activate p53", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "group": "Cited Works", + "radius": 29, + "citing_patents_count": 29 + }, + { + "id": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "group": "Cited Works", + "radius": 11, + "citing_patents_count": 11 + }, + { + "id": "Changes in the ratio of free NEDD8 to ubiquitin triggers NEDDylation by ubiquitin enzymes", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Fragment-based discovery of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors.", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "A multifunctional protease inhibitor to regulate endolysosomal function.", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Design, Synthesis, and Structure−Activity Relationship Exploration of 1-Substituted 4-Aroyl-3-hydroxy-5-phenyl-1H-pyrrol-2(5H)-one Analogues as Inhibitors of the Annexin A2−S100A10 Protein Interaction", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "4-benzimidazolyl-3-phenylbutanoic acids as novel PIF-pocket-targeting allosteric inhibitors of protein kinase PKCζ.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Optimisation of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "Design, Synthesis and Biological Evaluation of Novel Inhibitors of Trypanosoma brucei Pteridine Reductase 1", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The inhibitory effect of phospholemman on the sodium pump requires its palmitoylation.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "SCF/β-TrCP promotes glycogen synthase kinase 3-dependent degradation of the Nrf2 transcription factor in a keap1-independent manner", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Immunosuppressive but Non-LasR-Inducing Analogues of the Pseudomonas aeruginosa Quorum-Sensing Molecule N-(3-Oxododecanoyl)-L-homoserine Lactone", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Absolute SILAC-Compatible Expression Strain Allows Sumo-2 Copy Number Determination in Clinical Samples", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Collateral sensitivity of multidrug-resistant cells to the orphan drug tiopronin.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "group": "Cited Works", + "radius": 11, + "citing_patents_count": 11 + }, + { + "id": "ATP site-directed inhibitors of protein kinase CK2: an update.", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Identification of Inhibitors of the Leishmania cdc2-Related Protein Kinase CRK3", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Polyubiquitin binding to optineurin is required for optimal activation of TANK-binding kinase 1 and production of interferon β.", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "Substrate and Product Analogues as Human O-Glcnac Transferase Inhibitors.", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "The cytoprotective role of the Keap1–Nrf2 pathway", + "group": "Cited Works", + "radius": 7, + "citing_patents_count": 7 + }, + { + "id": "Design, synthesis and biological evaluation of 6-pyridylmethylaminopurines as CDK inhibitors", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Analgesic omega-Conotoxins CVIE and CVIF Selectively and Voltage-Dependently Block Recombinant and Native N-Type Calcium Channels (vol 77, pg 139, 2010)", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "NF-κB controls energy homeostasis and metabolic adaptation by upregulating mitochondrial respiration", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "Development of 18F-fluorinatable dendrons and their application to cancer cell targeting", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "The specificities of small molecule inhibitors of the TGFß and BMP pathways", + "group": "Cited Works", + "radius": 3, + "citing_patents_count": 3 + }, + { + "id": "Catalysis by the nucleolytic ribozymes", + "group": "Cited Works", + "radius": 5, + "citing_patents_count": 5 + }, + { + "id": "Characterization of GSK2334470, a novel and highly specific inhibitor of PDK1", + "group": "Cited Works", + "radius": 2, + "citing_patents_count": 2 + }, + { + "id": "N1-Benzyl substituted cambinol analogues as isozyme selective inhibitors of the sirtuin family of protein deacetylases", + "group": "Cited Works", + "radius": 4, + "citing_patents_count": 4 + }, + { + "id": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "group": "Cited Works", + "radius": 7, + "citing_patents_count": 7 + }, + { + "id": "Optimisation of the Anti-Trypanosoma brucei Activity of the Opioid Agonist U50488", + "group": "Cited Works", + "radius": 1, + "citing_patents_count": 1 + }, + { + "id": "109-294-662-661-65X", + "group": "Citing Patents" + }, + { + "id": "074-937-457-594-345", + "group": "Citing Patents" + }, + { + "id": "081-355-367-506-27X", + "group": "Citing Patents" + }, + { + "id": "048-634-530-447-798", + "group": "Citing Patents" + }, + { + "id": "137-231-469-269-151", + "group": "Citing Patents" + }, + { + "id": "031-072-815-607-16X", + "group": "Citing Patents" + }, + { + "id": "105-312-070-982-098", + "group": "Citing Patents" + }, + { + "id": "018-515-082-074-296", + "group": "Citing Patents" + }, + { + "id": "027-228-373-793-594", + "group": "Citing Patents" + }, + { + "id": "016-712-604-622-721", + "group": "Citing Patents" + }, + { + "id": "086-316-087-480-933", + "group": "Citing Patents" + }, + { + "id": "118-309-833-112-117", + "group": "Citing Patents" + }, + { + "id": "134-672-819-080-83X", + "group": "Citing Patents" + }, + { + "id": "036-789-224-520-054", + "group": "Citing Patents" + }, + { + "id": "106-594-488-484-12X", + "group": "Citing Patents" + }, + { + "id": "125-726-727-125-409", + "group": "Citing Patents" + }, + { + "id": "161-487-188-181-03X", + "group": "Citing Patents" + }, + { + "id": "076-538-237-089-675", + "group": "Citing Patents" + }, + { + "id": "051-324-518-696-462", + "group": "Citing Patents" + }, + { + "id": "198-017-973-913-570", + "group": "Citing Patents" + }, + { + "id": "156-653-831-632-101", + "group": "Citing Patents" + }, + { + "id": "178-739-712-688-618", + "group": "Citing Patents" + }, + { + "id": "131-486-498-702-07X", + "group": "Citing Patents" + }, + { + "id": "010-031-167-075-106", + "group": "Citing Patents" + }, + { + "id": "119-453-428-180-987", + "group": "Citing Patents" + }, + { + "id": "153-595-914-216-97X", + "group": "Citing Patents" + }, + { + "id": "148-353-591-913-750", + "group": "Citing Patents" + }, + { + "id": "019-827-938-996-490", + "group": "Citing Patents" + }, + { + "id": "184-646-935-269-773", + "group": "Citing Patents" + }, + { + "id": "186-230-275-872-748", + "group": "Citing Patents" + }, + { + "id": "165-291-395-706-725", + "group": "Citing Patents" + }, + { + "id": "047-113-007-956-15X", + "group": "Citing Patents" + }, + { + "id": "089-019-916-582-397", + "group": "Citing Patents" + }, + { + "id": "136-000-598-663-919", + "group": "Citing Patents" + }, + { + "id": "051-072-189-723-758", + "group": "Citing Patents" + }, + { + "id": "040-766-915-457-886", + "group": "Citing Patents" + }, + { + "id": "141-482-415-400-338", + "group": "Citing Patents" + }, + { + "id": "149-129-599-518-595", + "group": "Citing Patents" + }, + { + "id": "156-286-485-464-499", + "group": "Citing Patents" + }, + { + "id": "001-353-214-346-040", + "group": "Citing Patents" + }, + { + "id": "118-479-143-842-720", + "group": "Citing Patents" + }, + { + "id": "007-641-959-106-118", + "group": "Citing Patents" + }, + { + "id": "189-040-066-278-226", + "group": "Citing Patents" + }, + { + "id": "026-244-336-682-442", + "group": "Citing Patents" + }, + { + "id": "168-286-254-597-740", + "group": "Citing Patents" + }, + { + "id": "109-916-358-959-05X", + "group": "Citing Patents" + }, + { + "id": "002-458-268-309-533", + "group": "Citing Patents" + }, + { + "id": "038-310-729-099-192", + "group": "Citing Patents" + }, + { + "id": "179-033-965-606-598", + "group": "Citing Patents" + }, + { + "id": "113-229-447-433-64X", + "group": "Citing Patents" + }, + { + "id": "077-771-399-719-227", + "group": "Citing Patents" + }, + { + "id": "183-966-651-664-305", + "group": "Citing Patents" + }, + { + "id": "013-467-292-050-692", + "group": "Citing Patents" + }, + { + "id": "079-314-054-163-947", + "group": "Citing Patents" + }, + { + "id": "110-082-309-221-187", + "group": "Citing Patents" + }, + { + "id": "128-382-566-327-896", + "group": "Citing Patents" + }, + { + "id": "143-543-676-408-839", + "group": "Citing Patents" + }, + { + "id": "005-743-260-244-802", + "group": "Citing Patents" + }, + { + "id": "026-638-223-054-804", + "group": "Citing Patents" + }, + { + "id": "048-208-660-423-215", + "group": "Citing Patents" + }, + { + "id": "159-658-602-048-982", + "group": "Citing Patents" + }, + { + "id": "077-811-145-153-079", + "group": "Citing Patents" + }, + { + "id": "170-781-236-728-970", + "group": "Citing Patents" + }, + { + "id": "144-284-594-583-951", + "group": "Citing Patents" + }, + { + "id": "139-409-891-293-77X", + "group": "Citing Patents" + }, + { + "id": "081-017-751-048-013", + "group": "Citing Patents" + }, + { + "id": "114-963-910-586-828", + "group": "Citing Patents" + }, + { + "id": "162-513-842-046-362", + "group": "Citing Patents" + }, + { + "id": "188-803-921-043-695", + "group": "Citing Patents" + }, + { + "id": "191-147-881-232-285", + "group": "Citing Patents" + }, + { + "id": "081-817-015-173-962", + "group": "Citing Patents" + }, + { + "id": "106-530-060-683-82X", + "group": "Citing Patents" + }, + { + "id": "133-935-409-400-672", + "group": "Citing Patents" + }, + { + "id": "046-588-899-387-353", + "group": "Citing Patents" + }, + { + "id": "049-222-171-973-678", + "group": "Citing Patents" + }, + { + "id": "074-598-665-914-143", + "group": "Citing Patents" + }, + { + "id": "190-195-697-065-907", + "group": "Citing Patents" + }, + { + "id": "031-461-589-086-771", + "group": "Citing Patents" + }, + { + "id": "167-851-091-520-257", + "group": "Citing Patents" + }, + { + "id": "151-760-923-304-502", + "group": "Citing Patents" + }, + { + "id": "097-019-537-894-104", + "group": "Citing Patents" + }, + { + "id": "170-696-774-214-700", + "group": "Citing Patents" + }, + { + "id": "084-807-525-209-072", + "group": "Citing Patents" + }, + { + "id": "044-648-704-787-12X", + "group": "Citing Patents" + }, + { + "id": "150-822-190-827-131", + "group": "Citing Patents" + }, + { + "id": "051-919-508-851-10X", + "group": "Citing Patents" + }, + { + "id": "036-251-116-198-69X", + "group": "Citing Patents" + }, + { + "id": "149-946-446-737-586", + "group": "Citing Patents" + }, + { + "id": "075-397-286-033-085", + "group": "Citing Patents" + }, + { + "id": "028-992-308-265-357", + "group": "Citing Patents" + }, + { + "id": "044-207-676-689-405", + "group": "Citing Patents" + }, + { + "id": "030-350-713-791-200", + "group": "Citing Patents" + }, + { + "id": "093-997-239-092-949", + "group": "Citing Patents" + }, + { + "id": "046-345-437-716-689", + "group": "Citing Patents" + }, + { + "id": "146-411-731-640-871", + "group": "Citing Patents" + }, + { + "id": "000-266-572-036-366", + "group": "Citing Patents" + }, + { + "id": "186-389-876-954-313", + "group": "Citing Patents" + }, + { + "id": "168-483-508-794-377", + "group": "Citing Patents" + }, + { + "id": "029-748-240-628-036", + "group": "Citing Patents" + }, + { + "id": "184-507-509-452-559", + "group": "Citing Patents" + }, + { + "id": "069-961-069-943-549", + "group": "Citing Patents" + }, + { + "id": "017-777-392-752-199", + "group": "Citing Patents" + }, + { + "id": "000-150-893-948-804", + "group": "Citing Patents" + }, + { + "id": "027-437-502-794-894", + "group": "Citing Patents" + }, + { + "id": "074-789-039-135-70X", + "group": "Citing Patents" + }, + { + "id": "063-617-165-524-327", + "group": "Citing Patents" + }, + { + "id": "019-872-586-012-269", + "group": "Citing Patents" + }, + { + "id": "103-648-347-913-447", + "group": "Citing Patents" + }, + { + "id": "007-245-406-573-328", + "group": "Citing Patents" + }, + { + "id": "008-337-248-044-723", + "group": "Citing Patents" + }, + { + "id": "197-071-041-313-103", + "group": "Citing Patents" + }, + { + "id": "098-538-513-984-747", + "group": "Citing Patents" + }, + { + "id": "019-125-805-246-964", + "group": "Citing Patents" + }, + { + "id": "172-064-016-145-117", + "group": "Citing Patents" + }, + { + "id": "007-417-942-335-284", + "group": "Citing Patents" + }, + { + "id": "005-947-025-410-764", + "group": "Citing Patents" + }, + { + "id": "116-404-026-640-450", + "group": "Citing Patents" + }, + { + "id": "090-437-295-781-023", + "group": "Citing Patents" + }, + { + "id": "197-158-559-918-854", + "group": "Citing Patents" + }, + { + "id": "076-225-263-850-117", + "group": "Citing Patents" + }, + { + "id": "049-199-509-181-561", + "group": "Citing Patents" + }, + { + "id": "179-045-041-176-506", + "group": "Citing Patents" + }, + { + "id": "004-301-778-674-378", + "group": "Citing Patents" + }, + { + "id": "111-313-231-732-367", + "group": "Citing Patents" + }, + { + "id": "092-197-031-561-353", + "group": "Citing Patents" + }, + { + "id": "192-019-786-423-841", + "group": "Citing Patents" + }, + { + "id": "076-608-180-638-59X", + "group": "Citing Patents" + }, + { + "id": "175-263-797-963-040", + "group": "Citing Patents" + }, + { + "id": "141-694-167-791-759", + "group": "Citing Patents" + }, + { + "id": "081-203-444-563-604", + "group": "Citing Patents" + }, + { + "id": "125-348-249-762-351", + "group": "Citing Patents" + }, + { + "id": "125-850-986-196-787", + "group": "Citing Patents" + }, + { + "id": "119-397-162-706-860", + "group": "Citing Patents" + }, + { + "id": "133-023-408-974-285", + "group": "Citing Patents" + }, + { + "id": "039-847-299-166-952", + "group": "Citing Patents" + }, + { + "id": "076-641-402-312-988", + "group": "Citing Patents" + }, + { + "id": "102-485-198-725-150", + "group": "Citing Patents" + }, + { + "id": "168-829-456-947-639", + "group": "Citing Patents" + }, + { + "id": "098-813-369-162-741", + "group": "Citing Patents" + }, + { + "id": "023-180-369-416-862", + "group": "Citing Patents" + }, + { + "id": "189-473-046-734-005", + "group": "Citing Patents" + }, + { + "id": "019-633-684-883-828", + "group": "Citing Patents" + }, + { + "id": "174-501-376-407-235", + "group": "Citing Patents" + }, + { + "id": "129-062-448-949-030", + "group": "Citing Patents" + }, + { + "id": "162-916-741-322-002", + "group": "Citing Patents" + }, + { + "id": "080-026-305-809-343", + "group": "Citing Patents" + }, + { + "id": "016-698-167-713-829", + "group": "Citing Patents" + }, + { + "id": "091-325-080-234-401", + "group": "Citing Patents" + }, + { + "id": "032-206-614-235-635", + "group": "Citing Patents" + }, + { + "id": "143-271-017-351-983", + "group": "Citing Patents" + }, + { + "id": "169-312-245-869-778", + "group": "Citing Patents" + }, + { + "id": "089-818-979-077-305", + "group": "Citing Patents" + }, + { + "id": "187-517-157-601-239", + "group": "Citing Patents" + }, + { + "id": "111-583-988-147-450", + "group": "Citing Patents" + }, + { + "id": "058-026-435-099-506", + "group": "Citing Patents" + }, + { + "id": "153-651-762-444-327", + "group": "Citing Patents" + }, + { + "id": "159-766-711-047-610", + "group": "Citing Patents" + }, + { + "id": "058-933-099-316-100", + "group": "Citing Patents" + }, + { + "id": "023-452-662-674-373", + "group": "Citing Patents" + }, + { + "id": "047-432-030-246-04X", + "group": "Citing Patents" + }, + { + "id": "139-008-712-602-518", + "group": "Citing Patents" + }, + { + "id": "137-720-748-139-162", + "group": "Citing Patents" + }, + { + "id": "192-136-893-476-749", + "group": "Citing Patents" + }, + { + "id": "172-890-893-515-719", + "group": "Citing Patents" + }, + { + "id": "104-472-615-006-481", + "group": "Citing Patents" + }, + { + "id": "097-374-332-908-898", + "group": "Citing Patents" + }, + { + "id": "034-416-075-094-770", + "group": "Citing Patents" + }, + { + "id": "127-642-274-375-054", + "group": "Citing Patents" + }, + { + "id": "036-708-909-192-156", + "group": "Citing Patents" + }, + { + "id": "193-863-590-855-263", + "group": "Citing Patents" + }, + { + "id": "150-028-859-997-047", + "group": "Citing Patents" + }, + { + "id": "132-394-716-226-832", + "group": "Citing Patents" + }, + { + "id": "131-238-819-455-784", + "group": "Citing Patents" + }, + { + "id": "155-402-461-387-483", + "group": "Citing Patents" + }, + { + "id": "040-389-070-176-191", + "group": "Citing Patents" + }, + { + "id": "076-478-479-475-120", + "group": "Citing Patents" + }, + { + "id": "034-190-802-321-708", + "group": "Citing Patents" + }, + { + "id": "130-316-719-983-242", + "group": "Citing Patents" + }, + { + "id": "036-668-261-470-040", + "group": "Citing Patents" + }, + { + "id": "183-767-289-461-131", + "group": "Citing Patents" + }, + { + "id": "107-556-164-321-147", + "group": "Citing Patents" + }, + { + "id": "066-190-726-252-149", + "group": "Citing Patents" + }, + { + "id": "140-900-012-438-14X", + "group": "Citing Patents" + }, + { + "id": "058-438-690-312-096", + "group": "Citing Patents" + }, + { + "id": "004-889-112-130-518", + "group": "Citing Patents" + }, + { + "id": "193-040-307-473-220", + "group": "Citing Patents" + }, + { + "id": "188-718-220-131-362", + "group": "Citing Patents" + }, + { + "id": "087-577-350-425-176", + "group": "Citing Patents" + }, + { + "id": "191-670-060-004-126", + "group": "Citing Patents" + }, + { + "id": "041-699-843-843-567", + "group": "Citing Patents" + }, + { + "id": "180-366-233-781-99X", + "group": "Citing Patents" + }, + { + "id": "122-739-962-072-793", + "group": "Citing Patents" + }, + { + "id": "109-274-898-147-341", + "group": "Citing Patents" + }, + { + "id": "124-179-501-005-870", + "group": "Citing Patents" + }, + { + "id": "008-694-981-426-172", + "group": "Citing Patents" + }, + { + "id": "109-611-546-954-080", + "group": "Citing Patents" + }, + { + "id": "004-378-254-734-355", + "group": "Citing Patents" + }, + { + "id": "133-997-520-845-569", + "group": "Citing Patents" + }, + { + "id": "115-381-943-359-61X", + "group": "Citing Patents" + }, + { + "id": "022-078-711-389-998", + "group": "Citing Patents" + }, + { + "id": "132-854-391-972-865", + "group": "Citing Patents" + }, + { + "id": "171-143-110-884-468", + "group": "Citing Patents" + }, + { + "id": "003-946-199-636-328", + "group": "Citing Patents" + }, + { + "id": "009-649-401-227-606", + "group": "Citing Patents" + }, + { + "id": "170-042-571-881-121", + "group": "Citing Patents" + }, + { + "id": "033-301-273-471-462", + "group": "Citing Patents" + }, + { + "id": "040-826-560-477-838", + "group": "Citing Patents" + }, + { + "id": "135-293-472-746-415", + "group": "Citing Patents" + }, + { + "id": "153-999-081-812-523", + "group": "Citing Patents" + }, + { + "id": "000-498-778-953-787", + "group": "Citing Patents" + }, + { + "id": "085-065-777-135-758", + "group": "Citing Patents" + }, + { + "id": "152-366-692-522-975", + "group": "Citing Patents" + }, + { + "id": "167-869-142-610-582", + "group": "Citing Patents" + }, + { + "id": "191-676-336-200-724", + "group": "Citing Patents" + }, + { + "id": "056-387-403-639-935", + "group": "Citing Patents" + }, + { + "id": "066-841-401-628-941", + "group": "Citing Patents" + }, + { + "id": "069-503-782-573-055", + "group": "Citing Patents" + }, + { + "id": "028-137-796-142-577", + "group": "Citing Patents" + }, + { + "id": "197-678-301-596-236", + "group": "Citing Patents" + }, + { + "id": "147-466-934-435-143", + "group": "Citing Patents" + }, + { + "id": "114-647-123-099-321", + "group": "Citing Patents" + }, + { + "id": "058-829-130-504-901", + "group": "Citing Patents" + }, + { + "id": "169-953-034-717-264", + "group": "Citing Patents" + }, + { + "id": "028-012-588-449-727", + "group": "Citing Patents" + }, + { + "id": "038-839-140-589-623", + "group": "Citing Patents" + }, + { + "id": "194-924-906-201-593", + "group": "Citing Patents" + }, + { + "id": "195-611-964-620-410", + "group": "Citing Patents" + }, + { + "id": "025-014-524-538-421", + "group": "Citing Patents" + }, + { + "id": "120-667-268-642-909", + "group": "Citing Patents" + }, + { + "id": "163-117-320-460-138", + "group": "Citing Patents" + }, + { + "id": "191-290-593-697-506", + "group": "Citing Patents" + }, + { + "id": "118-339-847-530-982", + "group": "Citing Patents" + }, + { + "id": "073-318-370-112-877", + "group": "Citing Patents" + }, + { + "id": "113-828-920-381-078", + "group": "Citing Patents" + }, + { + "id": "048-983-957-537-421", + "group": "Citing Patents" + }, + { + "id": "073-531-962-083-670", + "group": "Citing Patents" + } + ], + "links": [ + { + "source": "Structural basis of PROTAC cooperative recognition for selective protein degradation.", + "target": "109-294-662-661-65X", + "value": 2 + }, + { + "source": "Structural basis of PROTAC cooperative recognition for selective protein degradation.", + "target": "074-937-457-594-345", + "value": 2 + }, + { + "source": "The influence of rough lipopolysaccharide structure on molecular interactions with mammalian antimicrobial peptides", + "target": "081-355-367-506-27X", + "value": 2 + }, + { + "source": "New Synthetic Routes to Triazolo-benzodiazepine Analogues: Expanding the Scope of the Bump-and-Hole Approach for Selective Bromo and Extra-Terminal (BET) Bromodomain Inhibition.", + "target": "048-634-530-447-798", + "value": 2 + }, + { + "source": "Cyclic and Macrocyclic Peptides as Chemical Tools To Recognise Protein Surfaces and Probe Protein-Protein Interactions.", + "target": "137-231-469-269-151", + "value": 2 + }, + { + "source": "8-Substituted Pyrido[3,4-d]pyrimidin-4(3H)-one Derivatives As Potent, Cell Permeable, KDM4 (JMJD2) and KDM5 (JARID1) Histone Lysine Demethylase Inhibitors.", + "target": "031-072-815-607-16X", + "value": 2 + }, + { + "source": "8-Substituted Pyrido[3,4-d]pyrimidin-4(3H)-one Derivatives As Potent, Cell Permeable, KDM4 (JMJD2) and KDM5 (JARID1) Histone Lysine Demethylase Inhibitors.", + "target": "105-312-070-982-098", + "value": 2 + }, + { + "source": "8-Substituted Pyrido[3,4-d]pyrimidin-4(3H)-one Derivatives As Potent, Cell Permeable, KDM4 (JMJD2) and KDM5 (JARID1) Histone Lysine Demethylase Inhibitors.", + "target": "018-515-082-074-296", + "value": 2 + }, + { + "source": "Discovery of Type II Inhibitors of TGFβ-Activated Kinase 1 (TAK1) and Mitogen-Activated Protein Kinase Kinase Kinase Kinase 2 (MAP4K2)", + "target": "027-228-373-793-594", + "value": 2 + }, + { + "source": "SIK2 regulates CRTCs, HDAC4 and glucose uptake in adipocytes", + "target": "016-712-604-622-721", + "value": 2 + }, + { + "source": "Metabotropic Glutamate Receptor 5 Negative Allosteric Modulators: Discovery of 2-Chloro-4-[1-(4-fluorophenyl)-2,5-dimethyl-1H-imidazol-4-ylethynyl]pyridine (Basimglurant, RO4917523), a Promising Novel Medicine for Psychiatric Diseases", + "target": "086-316-087-480-933", + "value": 2 + }, + { + "source": "Nrf2 regulates ROS production by mitochondria and NADPH oxidase.", + "target": "118-309-833-112-117", + "value": 2 + }, + { + "source": "The clinically approved drugs dasatinib and bosutinib induce anti-inflammatory macrophages by inhibiting the salt-inducible kinases", + "target": "134-672-819-080-83X", + "value": 2 + }, + { + "source": "New Monocyclic, Bicyclic, and Tricyclic Ethynylcyanodienones as Activators of the Keap1/Nrf2/ARE Pathway and Inhibitors of Inducible Nitric Oxide Synthase", + "target": "036-789-224-520-054", + "value": 2 + }, + { + "source": "Palmitoylation of the Na/Ca exchanger cytoplasmic loop controls its inactivation and internalization during stress signaling", + "target": "106-594-488-484-12X", + "value": 2 + }, + { + "source": "Molecular Cloning and Functional Characterization of Components of the Capsule Biosynthesis Complex of Neisseria meningitidis Serogroup A TOWARD IN VITRO VACCINE PRODUCTION", + "target": "125-726-727-125-409", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "161-487-188-181-03X", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "076-538-237-089-675", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "051-324-518-696-462", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "198-017-973-913-570", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "156-653-831-632-101", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "178-739-712-688-618", + "value": 2 + }, + { + "source": "A bump-and-hole approach to engineer controlled selectivity of BET bromodomain chemical probes", + "target": "048-634-530-447-798", + "value": 2 + }, + { + "source": "An unexpected twist to the activation of IKKβ: TAK1 primes IKKβ for activation by autophosphorylation", + "target": "131-486-498-702-07X", + "value": 2 + }, + { + "source": "An unexpected twist to the activation of IKKβ: TAK1 primes IKKβ for activation by autophosphorylation", + "target": "010-031-167-075-106", + "value": 2 + }, + { + "source": "Crystallographic analysis of Neisseria meningitidis PorB extracellular loops potentially implicated in TLR2 recognition", + "target": "119-453-428-180-987", + "value": 2 + }, + { + "source": "The LKB1-salt-inducible kinase pathway functions as a key gluconeogenic suppressor in the liver", + "target": "016-712-604-622-721", + "value": 2 + }, + { + "source": "Characterization of VPS34-IN1, a selective inhibitor of Vps34, reveals that the phosphatidylinositol 3-phosphate-binding SGK3 protein kinase is a downstream target of class III phosphoinositide 3-kinase", + "target": "153-595-914-216-97X", + "value": 2 + }, + { + "source": "Characterization of VPS34-IN1, a selective inhibitor of Vps34, reveals that the phosphatidylinositol 3-phosphate-binding SGK3 protein kinase is a downstream target of class III phosphoinositide 3-kinase", + "target": "148-353-591-913-750", + "value": 2 + }, + { + "source": "Characterization of VPS34-IN1, a selective inhibitor of Vps34, reveals that the phosphatidylinositol 3-phosphate-binding SGK3 protein kinase is a downstream target of class III phosphoinositide 3-kinase", + "target": "019-827-938-996-490", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "184-646-935-269-773", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "186-230-275-872-748", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "165-291-395-706-725", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "047-113-007-956-15X", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "089-019-916-582-397", + "value": 2 + }, + { + "source": "3-(2-oxoethylidene)indolin-2-one derivatives activate Nrf2 and inhibit NF-κB: potential candidates for chemoprevention.", + "target": "136-000-598-663-919", + "value": 2 + }, + { + "source": "Carnosic acid stimulates glucose uptake in skeletal muscle cells via a PME-1/PP2A/PKB signalling axis", + "target": "051-072-189-723-758", + "value": 2 + }, + { + "source": "Kv1.3 inhibitors have differential effects on glucose uptake and AMPK activity in skeletal muscle cell lines and mouse ex vivo skeletal muscle", + "target": "040-766-915-457-886", + "value": 2 + }, + { + "source": "Kv1.3 inhibitors have differential effects on glucose uptake and AMPK activity in skeletal muscle cell lines and mouse ex vivo skeletal muscle", + "target": "141-482-415-400-338", + "value": 2 + }, + { + "source": "Restoration of CFTR function in patients with cystic fibrosis carrying the F508del-CFTR mutation", + "target": "149-129-599-518-595", + "value": 2 + }, + { + "source": "Restoration of CFTR function in patients with cystic fibrosis carrying the F508del-CFTR mutation", + "target": "156-286-485-464-499", + "value": 2 + }, + { + "source": "Parkin is activated by PINK1-dependent phosphorylation of ubiquitin at Ser65", + "target": "001-353-214-346-040", + "value": 2 + }, + { + "source": "Parkin is activated by PINK1-dependent phosphorylation of ubiquitin at Ser65", + "target": "118-479-143-842-720", + "value": 2 + }, + { + "source": "Parkin is activated by PINK1-dependent phosphorylation of ubiquitin at Ser65", + "target": "007-641-959-106-118", + "value": 2 + }, + { + "source": "Parkin is activated by PINK1-dependent phosphorylation of ubiquitin at Ser65", + "target": "189-040-066-278-226", + "value": 2 + }, + { + "source": "Substrate recognition by the cell surface palmitoyl transferase DHHC5.", + "target": "106-594-488-484-12X", + "value": 2 + }, + { + "source": "Dysregulation of ubiquitin homeostasis and β-catenin signaling promote spinal muscular atrophy", + "target": "026-244-336-682-442", + "value": 2 + }, + { + "source": "Structure-Guided Design and Optimization of Small Molecules Targeting the Protein–Protein Interaction between the von Hippel–Lindau (VHL) E3 Ubiquitin Ligase and the Hypoxia Inducible Factor (HIF) Alpha Subunit with in Vitro Nanomolar Affinities", + "target": "074-937-457-594-345", + "value": 2 + }, + { + "source": "Structure-Guided Design and Optimization of Small Molecules Targeting the Protein–Protein Interaction between the von Hippel–Lindau (VHL) E3 Ubiquitin Ligase and the Hypoxia Inducible Factor (HIF) Alpha Subunit with in Vitro Nanomolar Affinities", + "target": "168-286-254-597-740", + "value": 2 + }, + { + "source": "The Nrf2 regulatory network provides an interface between redox and intermediary metabolism", + "target": "109-916-358-959-05X", + "value": 2 + }, + { + "source": "Characterization of WZ4003 and HTH-01-015 as selective inhibitors of the LKB1-tumour-suppressor-activated NUAK kinases", + "target": "002-458-268-309-533", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "038-310-729-099-192", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "179-033-965-606-598", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "113-229-447-433-64X", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "077-771-399-719-227", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "183-966-651-664-305", + "value": 2 + }, + { + "source": "Synthesis of vitamin D3 analogues with A-ring modifications to directly measure vitamin D levels in biological samples", + "target": "013-467-292-050-692", + "value": 2 + }, + { + "source": "Structure-activity relationship studies of pyrrolone antimalarial agents", + "target": "079-314-054-163-947", + "value": 2 + }, + { + "source": "Structure-activity relationship studies of pyrrolone antimalarial agents", + "target": "110-082-309-221-187", + "value": 2 + }, + { + "source": "The Concise Guide to Pharmacology 2013/14.: The Concise Guide to Pharmacology 2013/14: G Protein-Coupled Receptors", + "target": "128-382-566-327-896", + "value": 2 + }, + { + "source": "The Concise Guide to Pharmacology 2013/14.: The Concise Guide to Pharmacology 2013/14: G Protein-Coupled Receptors", + "target": "143-543-676-408-839", + "value": 2 + }, + { + "source": "Elevated SGK1 predicts resistance of breast cancer cells to Akt inhibitors", + "target": "005-743-260-244-802", + "value": 2 + }, + { + "source": "Metabolism of inflammation limited by AMPK and pseudo-starvation", + "target": "026-638-223-054-804", + "value": 2 + }, + { + "source": "Nrf2 impacts cellular bioenergetics by controlling substrate availability for mitochondrial respiration", + "target": "048-208-660-423-215", + "value": 2 + }, + { + "source": "The anti-inflammatory compound BAY 11-7082 is a potent inhibitor of Protein Tyrosine Phosphatases", + "target": "159-658-602-048-982", + "value": 2 + }, + { + "source": "BslA is a self-assembling bacterial hydrophobin that coats the Bacillus subtilis biofilm", + "target": "077-811-145-153-079", + "value": 2 + }, + { + "source": "BslA is a self-assembling bacterial hydrophobin that coats the Bacillus subtilis biofilm", + "target": "170-781-236-728-970", + "value": 2 + }, + { + "source": "BslA is a self-assembling bacterial hydrophobin that coats the Bacillus subtilis biofilm", + "target": "144-284-594-583-951", + "value": 2 + }, + { + "source": "Investigation of acyclic uridine amide and 5′-amido nucleoside analogues as potential inhibitors of the Plasmodium falciparum dUTPase", + "target": "139-409-891-293-77X", + "value": 2 + }, + { + "source": "Discovery and structure-activity relationships of pyrrolone antimalarials", + "target": "110-082-309-221-187", + "value": 2 + }, + { + "source": "De Novo Design of Protein Kinase Inhibitors by in Silico Identification of Hinge Region-Binding Fragments", + "target": "081-017-751-048-013", + "value": 2 + }, + { + "source": "De Novo Design of Protein Kinase Inhibitors by in Silico Identification of Hinge Region-Binding Fragments", + "target": "114-963-910-586-828", + "value": 2 + }, + { + "source": "De Novo Design of Protein Kinase Inhibitors by in Silico Identification of Hinge Region-Binding Fragments", + "target": "162-513-842-046-362", + "value": 2 + }, + { + "source": "Comprehensive characterization and optimization of anti-LRRK2 (leucine-rich repeat kinase 2) monoclonal antibodies", + "target": "188-803-921-043-695", + "value": 2 + }, + { + "source": "From On-Target to Off-Target Activity: Identification and Optimisation of Trypanosoma brucei GSK3 Inhibitors and Their Characterisation as Anti-Trypanosoma brucei Drug Discovery Lead Molecules", + "target": "191-147-881-232-285", + "value": 2 + }, + { + "source": "From On-Target to Off-Target Activity: Identification and Optimisation of Trypanosoma brucei GSK3 Inhibitors and Their Characterisation as Anti-Trypanosoma brucei Drug Discovery Lead Molecules", + "target": "081-817-015-173-962", + "value": 2 + }, + { + "source": "HIF-independent role of prolyl hydroxylases in the cellular response to amino acids", + "target": "106-530-060-683-82X", + "value": 2 + }, + { + "source": "HIF-independent role of prolyl hydroxylases in the cellular response to amino acids", + "target": "133-935-409-400-672", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "046-588-899-387-353", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "051-324-518-696-462", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "161-487-188-181-03X", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "156-653-831-632-101", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "198-017-973-913-570", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "076-538-237-089-675", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "198-017-973-913-570", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "076-538-237-089-675", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "051-324-518-696-462", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "161-487-188-181-03X", + "value": 2 + }, + { + "source": "Structural determinants for ERK5 (MAPK7) and leucine rich repeat kinase 2 activities of benzo[e]pyrimido-[5,4-b]diazepine-6(11H)-ones", + "target": "156-653-831-632-101", + "value": 2 + }, + { + "source": "A novel shogaol analog suppresses cancer cell invasion and inflammation, and displays cytoprotective effects through modulation of NF-κB and Nrf2-Keap1 signaling pathways", + "target": "049-222-171-973-678", + "value": 2 + }, + { + "source": "A novel shogaol analog suppresses cancer cell invasion and inflammation, and displays cytoprotective effects through modulation of NF-κB and Nrf2-Keap1 signaling pathways", + "target": "074-598-665-914-143", + "value": 2 + }, + { + "source": "X-ray Crystal Structure of ERK5 (MAPK7) in Complex with a Specific Inhibitor", + "target": "161-487-188-181-03X", + "value": 2 + }, + { + "source": "X-ray Crystal Structure of ERK5 (MAPK7) in Complex with a Specific Inhibitor", + "target": "156-653-831-632-101", + "value": 2 + }, + { + "source": "X-ray Crystal Structure of ERK5 (MAPK7) in Complex with a Specific Inhibitor", + "target": "051-324-518-696-462", + "value": 2 + }, + { + "source": "The endosome-lysosome pathway and information generation in the immune system.", + "target": "190-195-697-065-907", + "value": 2 + }, + { + "source": "The endosome-lysosome pathway and information generation in the immune system.", + "target": "031-461-589-086-771", + "value": 2 + }, + { + "source": "GSK2578215A; a potent and highly selective 2-arylmethyloxy-5-substitutent-N-arylbenzamide LRRK2 kinase inhibitor.", + "target": "167-851-091-520-257", + "value": 2 + }, + { + "source": "Structure of the TatC core of the twin-arginine protein transport system", + "target": "151-760-923-304-502", + "value": 2 + }, + { + "source": "The Ancient Drug Salicylate Directly Activates AMP-Activated Protein Kinase", + "target": "097-019-537-894-104", + "value": 2 + }, + { + "source": "The Ancient Drug Salicylate Directly Activates AMP-Activated Protein Kinase", + "target": "170-696-774-214-700", + "value": 2 + }, + { + "source": "Application of a novel highly sensitive activity-based probe for detection of cathepsin G", + "target": "084-807-525-209-072", + "value": 2 + }, + { + "source": "Analysis of the role of Nrf2 in the expression of liver proteins in mice using two-dimensional gel-based proteomics", + "target": "044-648-704-787-12X", + "value": 2 + }, + { + "source": "PINK1 is activated by mitochondrial membrane potential depolarization and stimulates Parkin E3 ligase activity by phosphorylating Serine 65", + "target": "001-353-214-346-040", + "value": 2 + }, + { + "source": "PINK1 is activated by mitochondrial membrane potential depolarization and stimulates Parkin E3 ligase activity by phosphorylating Serine 65", + "target": "150-822-190-827-131", + "value": 2 + }, + { + "source": "PINK1 is activated by mitochondrial membrane potential depolarization and stimulates Parkin E3 ligase activity by phosphorylating Serine 65", + "target": "051-919-508-851-10X", + "value": 2 + }, + { + "source": "Synthesis, Chemical Reactivity as Michael Acceptors, and Biological Potency of Monocyclic Cyanoenones, Novel and Highly Potent Anti-inflammatory and Cytoprotective Agents(1)", + "target": "036-789-224-520-054", + "value": 2 + }, + { + "source": "Synthesis, Chemical Reactivity as Michael Acceptors, and Biological Potency of Monocyclic Cyanoenones, Novel and Highly Potent Anti-inflammatory and Cytoprotective Agents(1)", + "target": "036-251-116-198-69X", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "target": "149-946-446-737-586", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "target": "075-397-286-033-085", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "target": "028-992-308-265-357", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "target": "044-207-676-689-405", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Trypanosoma brucei Trypanothione Synthetase Inhibitors", + "target": "030-350-713-791-200", + "value": 2 + }, + { + "source": "Mitogen-activated protein kinase-activated protein kinase 2 (MAPKAP-K2) as an antiinflammatory target: discovery and in vivo activity of selective pyrazolo[1,5-a]pyrimidine inhibitors using a focused library and structure-based optimization approach.", + "target": "093-997-239-092-949", + "value": 2 + }, + { + "source": "Mitogen-activated protein kinase-activated protein kinase 2 (MAPKAP-K2) as an antiinflammatory target: discovery and in vivo activity of selective pyrazolo[1,5-a]pyrimidine inhibitors using a focused library and structure-based optimization approach.", + "target": "046-345-437-716-689", + "value": 2 + }, + { + "source": "Mitogen-activated protein kinase-activated protein kinase 2 (MAPKAP-K2) as an antiinflammatory target: discovery and in vivo activity of selective pyrazolo[1,5-a]pyrimidine inhibitors using a focused library and structure-based optimization approach.", + "target": "146-411-731-640-871", + "value": 2 + }, + { + "source": "Chemical Proteomic Analysis Reveals the Drugability of the Kinome of Trypanosoma brucei", + "target": "000-266-572-036-366", + "value": 2 + }, + { + "source": "Avirulence Protein 3a (AVR3a) from the Potato Pathogen Phytophthora infestans Forms Homodimers through Its Predicted Translocation Region and Does Not Specifically Bind Phospholipids", + "target": "186-389-876-954-313", + "value": 2 + }, + { + "source": "NEDD8 overexpression results in neddylation of ubiquitin substrates by the ubiquitin pathway.", + "target": "168-483-508-794-377", + "value": 2 + }, + { + "source": "Kinome-wide Selectivity Profiling of ATP-competitive Mammalian Target of Rapamycin (mTOR) Inhibitors and Characterization of Their Binding Kinetics", + "target": "029-748-240-628-036", + "value": 2 + }, + { + "source": "The ubiquitin E1 enzyme Ube1 mediates NEDD8 activation under diverse stress conditions", + "target": "184-507-509-452-559", + "value": 2 + }, + { + "source": "Acinetobacter baumannii FolD ligand complexes – potent inhibitors of folate metabolism and a re‐evaluation of the structure of LY374571", + "target": "069-961-069-943-549", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "017-777-392-752-199", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "000-150-893-948-804", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "027-437-502-794-894", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "074-789-039-135-70X", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "063-617-165-524-327", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "019-872-586-012-269", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "103-648-347-913-447", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "007-245-406-573-328", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "027-437-502-794-894", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "008-337-248-044-723", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "197-071-041-313-103", + "value": 2 + }, + { + "source": "Aurora kinase inhibitors: Progress towards the clinic", + "target": "098-538-513-984-747", + "value": 2 + }, + { + "source": "The AMPK-related kinase SIK2 is regulated by cAMP via phosphorylation at Ser(358) in adipocytes", + "target": "019-125-805-246-964", + "value": 2 + }, + { + "source": "The AMPK-related kinase SIK2 is regulated by cAMP via phosphorylation at Ser(358) in adipocytes", + "target": "172-064-016-145-117", + "value": 2 + }, + { + "source": "The AMPK-related kinase SIK2 is regulated by cAMP via phosphorylation at Ser(358) in adipocytes", + "target": "007-417-942-335-284", + "value": 2 + }, + { + "source": "Synergy of Peptide and Sugar in O-GlcNAcase Substrate Recognition", + "target": "005-947-025-410-764", + "value": 2 + }, + { + "source": "Synergy of Peptide and Sugar in O-GlcNAcase Substrate Recognition", + "target": "116-404-026-640-450", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "090-437-295-781-023", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "197-158-559-918-854", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "076-225-263-850-117", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "049-199-509-181-561", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "179-045-041-176-506", + "value": 2 + }, + { + "source": "Discovery of potent and selective covalent inhibitors of JNK", + "target": "004-301-778-674-378", + "value": 2 + }, + { + "source": "Phosphorylation of FOXO3a on Ser-7 by p38 Promotes Its Nuclear Localization in Response to Doxorubicin", + "target": "111-313-231-732-367", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "092-197-031-561-353", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "192-019-786-423-841", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "192-019-786-423-841", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "076-608-180-638-59X", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "175-263-797-963-040", + "value": 2 + }, + { + "source": "AMPK: a nutrient and energy sensor that maintains energy homeostasis", + "target": "092-197-031-561-353", + "value": 2 + }, + { + "source": "Synthesis and structure-activity relationships of a novel series of pyrimidines as potent inhibitors of TBK1/IKKε kinases.", + "target": "141-694-167-791-759", + "value": 2 + }, + { + "source": "Synthesis and structure-activity relationships of a novel series of pyrimidines as potent inhibitors of TBK1/IKKε kinases.", + "target": "081-203-444-563-604", + "value": 2 + }, + { + "source": "Synthesis and structure-activity relationships of a novel series of pyrimidines as potent inhibitors of TBK1/IKKε kinases.", + "target": "125-348-249-762-351", + "value": 2 + }, + { + "source": "Synthesis and structure-activity relationships of a novel series of pyrimidines as potent inhibitors of TBK1/IKKε kinases.", + "target": "125-850-986-196-787", + "value": 2 + }, + { + "source": "Peptide inhibitors of the Keap1-Nrf2 protein-protein interaction", + "target": "119-397-162-706-860", + "value": 2 + }, + { + "source": "Small molecules that bind the Mdm2 RING stabilize and activate p53", + "target": "133-023-408-974-285", + "value": 2 + }, + { + "source": "Small molecules that bind the Mdm2 RING stabilize and activate p53", + "target": "039-847-299-166-952", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "076-641-402-312-988", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "102-485-198-725-150", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "168-829-456-947-639", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "098-813-369-162-741", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "023-180-369-416-862", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "189-473-046-734-005", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "019-633-684-883-828", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "174-501-376-407-235", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "129-062-448-949-030", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "162-916-741-322-002", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "080-026-305-809-343", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "016-698-167-713-829", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "091-325-080-234-401", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "032-206-614-235-635", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "143-271-017-351-983", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "169-312-245-869-778", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "089-818-979-077-305", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "187-517-157-601-239", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "111-583-988-147-450", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "058-026-435-099-506", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "153-651-762-444-327", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "159-766-711-047-610", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "058-933-099-316-100", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "023-452-662-674-373", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "047-432-030-246-04X", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "139-008-712-602-518", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "137-720-748-139-162", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "192-136-893-476-749", + "value": 2 + }, + { + "source": "Reduction in BACE1 decreases body weight, protects against diet-induced obesity and enhances insulin sensitivity in mice", + "target": "172-890-893-515-719", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "104-472-615-006-481", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "097-374-332-908-898", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "034-416-075-094-770", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "127-642-274-375-054", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "036-708-909-192-156", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "193-863-590-855-263", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "150-028-859-997-047", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "034-416-075-094-770", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "097-374-332-908-898", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "104-472-615-006-481", + "value": 2 + }, + { + "source": "AMP-Activated Protein Kinase: A Target for Drugs both Ancient and Modern", + "target": "132-394-716-226-832", + "value": 2 + }, + { + "source": "Changes in the ratio of free NEDD8 to ubiquitin triggers NEDDylation by ubiquitin enzymes", + "target": "168-483-508-794-377", + "value": 2 + }, + { + "source": "Fragment-based discovery of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors.", + "target": "131-238-819-455-784", + "value": 2 + }, + { + "source": "Fragment-based discovery of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors.", + "target": "155-402-461-387-483", + "value": 2 + }, + { + "source": "Fragment-based discovery of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors.", + "target": "040-389-070-176-191", + "value": 2 + }, + { + "source": "Fragment-based discovery of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors.", + "target": "076-478-479-475-120", + "value": 2 + }, + { + "source": "A multifunctional protease inhibitor to regulate endolysosomal function.", + "target": "031-461-589-086-771", + "value": 2 + }, + { + "source": "A multifunctional protease inhibitor to regulate endolysosomal function.", + "target": "190-195-697-065-907", + "value": 2 + }, + { + "source": "Design, Synthesis, and Structure−Activity Relationship Exploration of 1-Substituted 4-Aroyl-3-hydroxy-5-phenyl-1H-pyrrol-2(5H)-one Analogues as Inhibitors of the Annexin A2−S100A10 Protein Interaction", + "target": "034-190-802-321-708", + "value": 2 + }, + { + "source": "4-benzimidazolyl-3-phenylbutanoic acids as novel PIF-pocket-targeting allosteric inhibitors of protein kinase PKCζ.", + "target": "130-316-719-983-242", + "value": 2 + }, + { + "source": "Optimisation of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors", + "target": "076-478-479-475-120", + "value": 2 + }, + { + "source": "Optimisation of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors", + "target": "040-389-070-176-191", + "value": 2 + }, + { + "source": "Optimisation of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors", + "target": "036-668-261-470-040", + "value": 2 + }, + { + "source": "Optimisation of 6-substituted isoquinolin-1-amine based ROCK-I inhibitors", + "target": "183-767-289-461-131", + "value": 2 + }, + { + "source": "Design, Synthesis and Biological Evaluation of Novel Inhibitors of Trypanosoma brucei Pteridine Reductase 1", + "target": "107-556-164-321-147", + "value": 2 + }, + { + "source": "The inhibitory effect of phospholemman on the sodium pump requires its palmitoylation.", + "target": "106-594-488-484-12X", + "value": 2 + }, + { + "source": "SCF/β-TrCP promotes glycogen synthase kinase 3-dependent degradation of the Nrf2 transcription factor in a keap1-independent manner", + "target": "066-190-726-252-149", + "value": 2 + }, + { + "source": "Immunosuppressive but Non-LasR-Inducing Analogues of the Pseudomonas aeruginosa Quorum-Sensing Molecule N-(3-Oxododecanoyl)-L-homoserine Lactone", + "target": "140-900-012-438-14X", + "value": 2 + }, + { + "source": "Absolute SILAC-Compatible Expression Strain Allows Sumo-2 Copy Number Determination in Clinical Samples", + "target": "058-438-690-312-096", + "value": 2 + }, + { + "source": "Absolute SILAC-Compatible Expression Strain Allows Sumo-2 Copy Number Determination in Clinical Samples", + "target": "004-889-112-130-518", + "value": 2 + }, + { + "source": "Collateral sensitivity of multidrug-resistant cells to the orphan drug tiopronin.", + "target": "193-040-307-473-220", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "188-718-220-131-362", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "087-577-350-425-176", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "191-670-060-004-126", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "188-803-921-043-695", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "041-699-843-843-567", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "180-366-233-781-99X", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "156-653-831-632-101", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "051-324-518-696-462", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "161-487-188-181-03X", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "167-851-091-520-257", + "value": 2 + }, + { + "source": "Characterization of a selective inhibitor of the Parkinson's disease kinase LRRK2", + "target": "122-739-962-072-793", + "value": 2 + }, + { + "source": "ATP site-directed inhibitors of protein kinase CK2: an update.", + "target": "109-274-898-147-341", + "value": 2 + }, + { + "source": "Identification of Inhibitors of the Leishmania cdc2-Related Protein Kinase CRK3", + "target": "124-179-501-005-870", + "value": 2 + }, + { + "source": "Identification of Inhibitors of the Leishmania cdc2-Related Protein Kinase CRK3", + "target": "008-694-981-426-172", + "value": 2 + }, + { + "source": "Identification of Inhibitors of the Leishmania cdc2-Related Protein Kinase CRK3", + "target": "109-611-546-954-080", + "value": 2 + }, + { + "source": "Polyubiquitin binding to optineurin is required for optimal activation of TANK-binding kinase 1 and production of interferon β.", + "target": "004-378-254-734-355", + "value": 2 + }, + { + "source": "Polyubiquitin binding to optineurin is required for optimal activation of TANK-binding kinase 1 and production of interferon β.", + "target": "133-997-520-845-569", + "value": 2 + }, + { + "source": "Substrate and Product Analogues as Human O-Glcnac Transferase Inhibitors.", + "target": "115-381-943-359-61X", + "value": 2 + }, + { + "source": "Substrate and Product Analogues as Human O-Glcnac Transferase Inhibitors.", + "target": "022-078-711-389-998", + "value": 2 + }, + { + "source": "Substrate and Product Analogues as Human O-Glcnac Transferase Inhibitors.", + "target": "132-854-391-972-865", + "value": 2 + }, + { + "source": "Substrate and Product Analogues as Human O-Glcnac Transferase Inhibitors.", + "target": "171-143-110-884-468", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "003-946-199-636-328", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "009-649-401-227-606", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "170-042-571-881-121", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "033-301-273-471-462", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "040-826-560-477-838", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "048-208-660-423-215", + "value": 2 + }, + { + "source": "The cytoprotective role of the Keap1–Nrf2 pathway", + "target": "135-293-472-746-415", + "value": 2 + }, + { + "source": "Design, synthesis and biological evaluation of 6-pyridylmethylaminopurines as CDK inhibitors", + "target": "153-999-081-812-523", + "value": 2 + }, + { + "source": "Design, synthesis and biological evaluation of 6-pyridylmethylaminopurines as CDK inhibitors", + "target": "000-498-778-953-787", + "value": 2 + }, + { + "source": "Design, synthesis and biological evaluation of 6-pyridylmethylaminopurines as CDK inhibitors", + "target": "085-065-777-135-758", + "value": 2 + }, + { + "source": "Analgesic omega-Conotoxins CVIE and CVIF Selectively and Voltage-Dependently Block Recombinant and Native N-Type Calcium Channels (vol 77, pg 139, 2010)", + "target": "152-366-692-522-975", + "value": 2 + }, + { + "source": "Analgesic omega-Conotoxins CVIE and CVIF Selectively and Voltage-Dependently Block Recombinant and Native N-Type Calcium Channels (vol 77, pg 139, 2010)", + "target": "167-869-142-610-582", + "value": 2 + }, + { + "source": "NF-κB controls energy homeostasis and metabolic adaptation by upregulating mitochondrial respiration", + "target": "191-676-336-200-724", + "value": 2 + }, + { + "source": "Development of 18F-fluorinatable dendrons and their application to cancer cell targeting", + "target": "056-387-403-639-935", + "value": 2 + }, + { + "source": "The specificities of small molecule inhibitors of the TGFß and BMP pathways", + "target": "066-841-401-628-941", + "value": 2 + }, + { + "source": "The specificities of small molecule inhibitors of the TGFß and BMP pathways", + "target": "069-503-782-573-055", + "value": 2 + }, + { + "source": "The specificities of small molecule inhibitors of the TGFß and BMP pathways", + "target": "028-137-796-142-577", + "value": 2 + }, + { + "source": "Catalysis by the nucleolytic ribozymes", + "target": "197-678-301-596-236", + "value": 2 + }, + { + "source": "Catalysis by the nucleolytic ribozymes", + "target": "147-466-934-435-143", + "value": 2 + }, + { + "source": "Catalysis by the nucleolytic ribozymes", + "target": "114-647-123-099-321", + "value": 2 + }, + { + "source": "Catalysis by the nucleolytic ribozymes", + "target": "058-829-130-504-901", + "value": 2 + }, + { + "source": "Catalysis by the nucleolytic ribozymes", + "target": "169-953-034-717-264", + "value": 2 + }, + { + "source": "Characterization of GSK2334470, a novel and highly specific inhibitor of PDK1", + "target": "028-012-588-449-727", + "value": 2 + }, + { + "source": "Characterization of GSK2334470, a novel and highly specific inhibitor of PDK1", + "target": "038-839-140-589-623", + "value": 2 + }, + { + "source": "N1-Benzyl substituted cambinol analogues as isozyme selective inhibitors of the sirtuin family of protein deacetylases", + "target": "194-924-906-201-593", + "value": 2 + }, + { + "source": "N1-Benzyl substituted cambinol analogues as isozyme selective inhibitors of the sirtuin family of protein deacetylases", + "target": "195-611-964-620-410", + "value": 2 + }, + { + "source": "N1-Benzyl substituted cambinol analogues as isozyme selective inhibitors of the sirtuin family of protein deacetylases", + "target": "025-014-524-538-421", + "value": 2 + }, + { + "source": "N1-Benzyl substituted cambinol analogues as isozyme selective inhibitors of the sirtuin family of protein deacetylases", + "target": "025-014-524-538-421", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "120-667-268-642-909", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "163-117-320-460-138", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "191-290-593-697-506", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "118-339-847-530-982", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "073-318-370-112-877", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "113-828-920-381-078", + "value": 2 + }, + { + "source": "AMP-activated protein kinase—an energy sensor that regulates all aspects of cell function", + "target": "048-983-957-537-421", + "value": 2 + }, + { + "source": "Optimisation of the Anti-Trypanosoma brucei Activity of the Opioid Agonist U50488", + "target": "073-531-962-083-670", + "value": 2 + } + ] +} diff --git a/SBOM-Catalog/src/components/detail-enumeration.vue b/SBOM-Catalog/src/components/detail-enumeration.vue new file mode 100644 index 0000000..c11feea --- /dev/null +++ b/SBOM-Catalog/src/components/detail-enumeration.vue @@ -0,0 +1,50 @@ + + + + + \ No newline at end of file diff --git a/SBOM-Catalog/src/components/markdownParser.vue b/SBOM-Catalog/src/components/markdownParser.vue new file mode 100644 index 0000000..f593672 --- /dev/null +++ b/SBOM-Catalog/src/components/markdownParser.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/SBOM-Catalog/src/components/plots/circle-plot.vue b/SBOM-Catalog/src/components/plots/circle-plot.vue new file mode 100644 index 0000000..6dd666b --- /dev/null +++ b/SBOM-Catalog/src/components/plots/circle-plot.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/SBOM-Catalog/src/components/plots/list-plot.vue b/SBOM-Catalog/src/components/plots/list-plot.vue new file mode 100644 index 0000000..b30239d --- /dev/null +++ b/SBOM-Catalog/src/components/plots/list-plot.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/SBOM-Catalog/src/components/plots/tree-plot.vue b/SBOM-Catalog/src/components/plots/tree-plot.vue new file mode 100644 index 0000000..2c033b2 --- /dev/null +++ b/SBOM-Catalog/src/components/plots/tree-plot.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/SBOM-Catalog/src/global/global.css b/SBOM-Catalog/src/global/global.css new file mode 100644 index 0000000..db6545d --- /dev/null +++ b/SBOM-Catalog/src/global/global.css @@ -0,0 +1,37 @@ +body { + margin: 0 +} + +.full-vue-heigth { + height: 100vh; + position: relative; +} + +.shadow-right { + -webkit-box-shadow: 5px 0px 10px 0px rgba(154, 151, 151, 0.3); + -moz-box-shadow: 5px 0px 10px 0px rgba(154, 151, 151, 0.3); + box-shadow: 5px 0px 10px 0px rgba(154, 151, 151, 0.3); +} + +.shadow-left { + -webkit-box-shadow: -5px 0px 10px 0px rgba(154, 151, 151, 0.3); + -moz-box-shadow: -5px 0px 10px 0px rgba(154, 151, 151, 0.3); + box-shadow: -5px 0px 10px 0px rgba(154, 151, 151, 0.3); +} + +.scrollable-div { + overflow-y: auto; + overflow-x: hidden; +} + +.curser-pointer { + cursor: pointer +} + +.responsive-image { + width: 3em; + height: 3em; + border-radius: 50%; + background-color: whitesmoke; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); +} \ No newline at end of file diff --git a/SBOM-Catalog/src/global/global.ts b/SBOM-Catalog/src/global/global.ts new file mode 100644 index 0000000..b36644a --- /dev/null +++ b/SBOM-Catalog/src/global/global.ts @@ -0,0 +1,160 @@ +/* +Mapping algorithm to get the raw data into the different Plots. + */ + +import {Filter} from "../types/filter"; +import {Tool} from "../types/tool"; +import {Tree} from "../types/tree"; + +export function generateTreeObject(filters: Filter[], tools: Tool[]): Tree { + const enabledFilters: Filter[] = filters.filter(filter => filter.enabled); + return { + name: 'Landscape', + value: 0, + children: generateTreeObjectInternal(enabledFilters, tools) + } +} + +function generateTreeObjectInternal(filters: Filter[], tools: Tool[]): Tree[] { + const result: Tree[] = [] + let currentFilter: Filter + let remainingFilters: Filter[] = filters + + // only use enabled filters + do { + if (remainingFilters.length === 0) { + return [] + } + currentFilter = remainingFilters[0] + remainingFilters = remainingFilters.slice(1) + } while (!currentFilter.enabled) + + const distinctAttributes = retrieveDistinctAttributes(currentFilter, tools) + + for (const item of distinctAttributes) { + // if you remove that filters that are null are bypassed in the tree, so they are also displayed to the end. + if (item == null) continue; + + const entry: Tree = { + name: item, + value: 1, + children: [] + } + + if (remainingFilters.length !== 0) { + const subdata: Tool[] = filterAttributes(currentFilter, tools, item) + entry.children = generateTreeObjectInternal(remainingFilters, subdata) + } + + result.push(entry) + } + + return result; +} + +function filterAttributes(currentFilterPointer: Filter, tools: Tool[], currentFilter: String): Tool[] { + const values: Tool[] = [] + + for (const item of tools) { + let attributeValue: string + if (Array.isArray(item[currentFilterPointer.name])){ + attributeValue = (item[currentFilterPointer.name] as Array).join("-") + } else { + attributeValue = item[currentFilterPointer.name] as string + } + + if (attributeValue === currentFilter) { + values.push(item) + } + } + + return values; +} + +function retrieveDistinctAttributes(currentFilter: Filter, tools: Tool[]):Set { + const distinctValues: Set = new Set() + + for (const item of tools) { + const attributeName: keyof Tool = currentFilter.name + let attributeValue: string + + if (Array.isArray(item[attributeName])){ + attributeValue = (item[attributeName] as Array).join("-") + } else { + attributeValue = item[attributeName] as string + } + + distinctValues.add(attributeValue) + } + + return distinctValues; +} + +/* +Normalise algorithm to get the data into the different Plots. + */ +export function normaliseList(tools: Tool[]): Tool[] { + const result: Tool[] = [] + let finishflag: boolean = true + + for (const entry of tools) { + let noArray: boolean = true + for (const key in entry) { + if (Array.isArray(entry[key as keyof Tool])) { + const itemList: string[] = entry[key as keyof Tool] as string[] + if (itemList.length != 1) { + noArray = false + for (const item of itemList) { + const clone: Tool = deepClone(entry) + + // @ts-ignore + // This could only be checked at runtime. TypeScript works only up to Build Time + // Basically i have to pull a "trust me bro" here. + // This will be fine as long as Tool only contains Strings and Arrays of Strings + clone[key as keyof Tool] = [item] + result.push(clone) + } + finishflag = false + } + } + } + + if (noArray) { + result.push(deepClone(entry)) + } + } + + if (!finishflag) { + return normaliseList(result) + } + + return result; +} + +/* +Aggregation algorithm to get the data into the different Plots. + */ +export function aggregateList(tools: Tool[]): Tool[] { + for (const entry of tools) { + for (const key in entry) { + if (entry[key as keyof Tool] instanceof Array) { + const itemList: string[] = entry[key as keyof Tool] as string[] + + // @ts-ignore + // This could only be checked at runtime. TypeScript works only up to Build Time + // Basically i have to pull a "trust me bro" here. + // This will be fine as long as Tool only contains Strings and Arrays of Strings + entry[key as keyof Tool] = [itemList.join('-')] + } + } + } + + return tools; +} + +/* +A Function that can deep clone every object and return the same type in TypeScript + */ +export function deepClone (arg: T): T { + return JSON.parse(JSON.stringify(arg)); +} \ No newline at end of file diff --git a/SBOM-Catalog/src/main.ts b/SBOM-Catalog/src/main.ts new file mode 100644 index 0000000..726de0f --- /dev/null +++ b/SBOM-Catalog/src/main.ts @@ -0,0 +1,44 @@ +import { createApp } from 'vue' +import App from './App.vue' + +import "./global/global.css" +import "primevue/resources/themes/lara-light-teal/theme.css" +import "primevue/resources/primevue.min.css" +import 'primeicons/primeicons.css'; +import 'primeflex/primeflex.css'; +import PrimeVue from "primevue/config"; +import Button from "primevue/button"; +import DataTable from "primevue/datatable"; +import Column from "primevue/column"; +import Chip from "primevue/chip"; +import Card from "primevue/card"; +import InputSwitch from "primevue/inputswitch"; +import Divider from "primevue/divider"; +import InputText from "primevue/inputtext"; +import Tooltip from 'primevue/tooltip'; +import Tag from "primevue/tag"; +import ButtonGroup from "primevue/buttongroup"; +import InputIcon from "primevue/inputicon"; +import IconField from "primevue/iconfield"; + +const app = createApp(App); + +app.use(PrimeVue) + +app.component('PButton', Button) +app.component('PButtonGroup', ButtonGroup) +app.component("PDataTable", DataTable) +app.component("PColumn", Column) +app.component("PChip", Chip) +app.component("PCard", Card) +app.component("PInputSwitch", InputSwitch) +app.component("PDivider", Divider) +app.component('PInputText', InputText) +app.component('PIconField', IconField) +app.component('PInputIcon', InputIcon) + +app.component('PTag', Tag) + +app.directive('tooltip', Tooltip); + +app.mount('#app') \ No newline at end of file diff --git a/SBOM-Catalog/src/types/filter.d.ts b/SBOM-Catalog/src/types/filter.d.ts new file mode 100644 index 0000000..f8f1f39 --- /dev/null +++ b/SBOM-Catalog/src/types/filter.d.ts @@ -0,0 +1,7 @@ +import {Tool} from "./tool"; + +export interface Filter { + name: keyof Tool; + enabled: boolean; + description: string; +} \ No newline at end of file diff --git a/SBOM-Catalog/src/types/tool.d.ts b/SBOM-Catalog/src/types/tool.d.ts new file mode 100644 index 0000000..8527004 --- /dev/null +++ b/SBOM-Catalog/src/types/tool.d.ts @@ -0,0 +1,10 @@ +export interface Tool { + Name: string; + Link: string; + Publisher: string; + License: string; + Standards: Array; + Abilities: Array; + Type?: Array; + Language?: Array; +}; \ No newline at end of file diff --git a/SBOM-Catalog/src/types/tree.d.ts b/SBOM-Catalog/src/types/tree.d.ts new file mode 100644 index 0000000..a95858f --- /dev/null +++ b/SBOM-Catalog/src/types/tree.d.ts @@ -0,0 +1,5 @@ +export interface Tree { + name: String + value: Number + children: Tree[] +} \ No newline at end of file diff --git a/SBOM-Catalog/tsconfig.json b/SBOM-Catalog/tsconfig.json new file mode 100644 index 0000000..9e03e60 --- /dev/null +++ b/SBOM-Catalog/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/SBOM-Catalog/tsconfig.node.json b/SBOM-Catalog/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/SBOM-Catalog/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/SBOM-Catalog/vite.config.ts b/SBOM-Catalog/vite.config.ts new file mode 100644 index 0000000..ed9c6fb --- /dev/null +++ b/SBOM-Catalog/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + assetsInclude: ['**/*.yaml'], + base: '/sbom-everywhere/', + plugins: [vue()], +}) \ No newline at end of file