diff --git a/.binny.yaml b/.binny.yaml
index 020c72611..9c42f2b25 100644
--- a/.binny.yaml
+++ b/.binny.yaml
@@ -2,7 +2,7 @@ tools:
# we want to use a pinned version of binny to manage the toolchain (so binny manages itself!)
- name: binny
version:
- want: v0.7.0
+ want: v0.8.0
method: github-release
with:
repo: anchore/binny
@@ -18,7 +18,7 @@ tools:
# used to sign mac binaries at release
- name: quill
version:
- want: v0.4.1
+ want: v0.4.2
method: github-release
with:
repo: anchore/quill
@@ -26,7 +26,7 @@ tools:
# used for linting
- name: golangci-lint
version:
- want: v1.59.0
+ want: v1.61.0
method: github-release
with:
repo: golangci/golangci-lint
@@ -34,7 +34,7 @@ tools:
# used for showing the changelog at release
- name: glow
version:
- want: v1.5.1
+ want: v2.0.0
method: github-release
with:
repo: charmbracelet/glow
@@ -42,7 +42,7 @@ tools:
# used for signing the checksums file at release
- name: cosign
version:
- want: v2.2.4
+ want: v2.4.1
method: github-release
with:
repo: sigstore/cosign
@@ -58,7 +58,7 @@ tools:
# used to release all artifacts
- name: goreleaser
version:
- want: v1.26.2
+ want: v2.3.2
method: github-release
with:
repo: goreleaser/goreleaser
@@ -103,7 +103,7 @@ tools:
# used for running all local and CI tasks
- name: task
version:
- want: v3.37.2
+ want: v3.39.2
method: github-release
with:
repo: go-task/task
@@ -111,7 +111,23 @@ tools:
# used for triggering a release
- name: gh
version:
- want: v2.49.2
+ want: v2.59.0
method: github-release
with:
repo: cli/cli
+
+ # used to upload test fixture cache
+ - name: oras
+ version:
+ want: v1.2.0
+ method: github-release
+ with:
+ repo: oras-project/oras
+
+ # used to upload test fixture cache
+ - name: yq
+ version:
+ want: v4.44.3
+ method: github-release
+ with:
+ repo: mikefarah/yq
diff --git a/.bouncer.yaml b/.bouncer.yaml
index b27baa6ea..5360418ef 100644
--- a/.bouncer.yaml
+++ b/.bouncer.yaml
@@ -6,6 +6,7 @@ permit:
- MPL.*
- ISC
- WTFPL
+ - Unlicense
ignore-packages:
# packageurl-go is released under the MIT license located in the root of the repo at /mit.LICENSE
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 0a100afe4..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: ''
-
----
-
-**What happened**:
-
-**What you expected to happen**:
-
-**Steps to reproduce the issue**:
-
-**Anything else we need to know?**:
-
-**Environment**:
-- Output of `syft version`:
-- OS (e.g: `cat /etc/os-release` or similar):
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index edd71d504..000000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-contact_links:
-
- - name: Join the Slack community š¬
- # link to our community Slack registration page
- url: https://anchore.com/slack
- about: 'Come chat with us! Ask for help, join our software development efforts, or just give us feedback!'
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index d07c5f151..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: ''
-
----
-
-**What would you like to be added**:
-
-**Why is this needed**:
-
-**Additional context**:
-
diff --git a/.github/actions/bootstrap/action.yaml b/.github/actions/bootstrap/action.yaml
deleted file mode 100644
index d0a5ee678..000000000
--- a/.github/actions/bootstrap/action.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: "Bootstrap"
-
-description: "Bootstrap all tools and dependencies"
-inputs:
- go-version:
- description: "Go version to install"
- required: true
- default: "1.21.x"
- go-dependencies:
- description: "Download go dependencies"
- required: true
- default: "true"
- cache-key-prefix:
- description: "Prefix all cache keys with this value"
- required: true
- default: "1ac8281053"
- compute-fingerprints:
- description: "Compute test fixture fingerprints"
- required: true
- default: "true"
- bootstrap-apt-packages:
- description: "Space delimited list of tools to install via apt"
- default: "libxml2-utils"
-
-
-runs:
- using: "composite"
- steps:
- # note: go mod and build is automatically cached on default with v4+
- - uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 #v5.0.1
- if: inputs.go-version != ''
- with:
- go-version: ${{ inputs.go-version }}
-
- - name: Restore tool cache
- id: tool-cache
- uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 #v3.3.2
- with:
- path: ${{ github.workspace }}/.tool
- key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('.binny.yaml') }}
-
- - name: Install project tools
- shell: bash
- run: make tools
-
- - name: Install go dependencies
- if: inputs.go-dependencies == 'true'
- shell: bash
- run: make ci-bootstrap-go
-
- - name: Install apt packages
- if: inputs.bootstrap-apt-packages != ''
- shell: bash
- run: |
- DEBIAN_FRONTEND=noninteractive sudo apt update && sudo -E apt install -y ${{ inputs.bootstrap-apt-packages }}
-
- - name: Create all cache fingerprints
- if: inputs.compute-fingerprints == 'true'
- shell: bash
- run: make fingerprints
-
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index bcdb6f8f3..000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-version: 2
-
-updates:
-
- - package-ecosystem: gomod
- directory: "/"
- schedule:
- interval: "daily"
- open-pull-requests-limit: 10
- labels:
- - "dependencies"
-
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "daily"
- open-pull-requests-limit: 10
- labels:
- - "dependencies"
diff --git a/.github/scripts/check_binary_fixture_size.sh b/.github/scripts/check_binary_fixture_size.sh
deleted file mode 100755
index 764824820..000000000
--- a/.github/scripts/check_binary_fixture_size.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-
-# current limit for fixture size
-size=1000
-
-if [ $# -eq 0 ]; then
- echo "Usage: $0 "
- exit 1
-fi
-
-directory="$1"
-
-# Remove trailing slash using parameter expansion
-directory="${directory%/}"
-
-if [ ! -d "$directory" ]; then
- echo "Directory not found: $directory"
- exit 1
-fi
-
-found_large_files=0
-while IFS= read -r -d '' file; do
- if [ $(wc -c < "$file") -gt $size ]; then
- echo "File $file is greater than ${size} bytes."
- found_large_files=1
- fi
-done < <(find "$directory" -type f -print0)
-
-if [ "$found_large_files" -eq 1 ]; then
- echo "Script failed: Some files are greater than ${size} bytes."
- exit 1
-else
- echo "All files in $directory and its subdirectories are ${size} bytes or smaller. Check passed."
- exit 0
-fi
-
diff --git a/.github/scripts/ci-check.sh b/.github/scripts/ci-check.sh
deleted file mode 100755
index 0ab83a318..000000000
--- a/.github/scripts/ci-check.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-red=$(tput setaf 1)
-bold=$(tput bold)
-normal=$(tput sgr0)
-
-# assert we are running in CI (or die!)
-if [[ -z "$CI" ]]; then
- echo "${bold}${red}This step should ONLY be run in CI. Exiting...${normal}"
- exit 1
-fi
diff --git a/.github/scripts/coverage.py b/.github/scripts/coverage.py
deleted file mode 100755
index db14135cd..000000000
--- a/.github/scripts/coverage.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-import subprocess
-import sys
-import shlex
-
-
-class bcolors:
- HEADER = '\033[95m'
- OKBLUE = '\033[94m'
- OKCYAN = '\033[96m'
- OKGREEN = '\033[92m'
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- ENDC = '\033[0m'
- BOLD = '\033[1m'
- UNDERLINE = '\033[4m'
-
-
-if len(sys.argv) < 3:
- print("Usage: coverage.py [threshold] [go-coverage-report]")
- sys.exit(1)
-
-
-threshold = float(sys.argv[1])
-report = sys.argv[2]
-
-
-args = shlex.split(f"go tool cover -func {report}")
-p = subprocess.run(args, capture_output=True, text=True)
-
-percent_coverage = float(p.stdout.splitlines()[-1].split()[-1].replace("%", ""))
-print(f"{bcolors.BOLD}Coverage: {percent_coverage}%{bcolors.ENDC}")
-
-if percent_coverage < threshold:
- print(f"{bcolors.BOLD}{bcolors.FAIL}Coverage below threshold of {threshold}%{bcolors.ENDC}")
- sys.exit(1)
diff --git a/.github/scripts/go-mod-tidy-check.sh b/.github/scripts/go-mod-tidy-check.sh
deleted file mode 100755
index 28f22fcdc..000000000
--- a/.github/scripts/go-mod-tidy-check.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-set -eu
-
-ORIGINAL_STATE_DIR=$(mktemp -d "TEMP-original-state-XXXXXXXXX")
-TIDY_STATE_DIR=$(mktemp -d "TEMP-tidy-state-XXXXXXXXX")
-
-trap "cp -p ${ORIGINAL_STATE_DIR}/* ./ && git update-index -q --refresh && rm -fR ${ORIGINAL_STATE_DIR} ${TIDY_STATE_DIR}" EXIT
-
-# capturing original state of files...
-cp go.mod go.sum "${ORIGINAL_STATE_DIR}"
-
-# capturing state of go.mod and go.sum after running go mod tidy...
-go mod tidy
-cp go.mod go.sum "${TIDY_STATE_DIR}"
-
-set +e
-
-# detect difference between the git HEAD state and the go mod tidy state
-DIFF_MOD=$(diff -u "${ORIGINAL_STATE_DIR}/go.mod" "${TIDY_STATE_DIR}/go.mod")
-DIFF_SUM=$(diff -u "${ORIGINAL_STATE_DIR}/go.sum" "${TIDY_STATE_DIR}/go.sum")
-
-if [[ -n "${DIFF_MOD}" || -n "${DIFF_SUM}" ]]; then
- echo "go.mod diff:"
- echo "${DIFF_MOD}"
- echo "go.sum diff:"
- echo "${DIFF_SUM}"
- echo ""
- printf "FAILED! go.mod and/or go.sum are NOT tidy; please run 'go mod tidy'.\n\n"
- exit 1
-fi
diff --git a/.github/scripts/json-schema-drift-check.sh b/.github/scripts/json-schema-drift-check.sh
deleted file mode 100755
index 3002236d6..000000000
--- a/.github/scripts/json-schema-drift-check.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-set -u
-
-if [ "$(git status --porcelain | wc -l)" -ne "0" ]; then
- echo " š“ there are uncommitted changes, please commit them before running this check"
- exit 1
-fi
-
-if ! make generate-json-schema; then
- echo "Generating json schema failed"
- exit 1
-fi
-
-if [ "$(git status --porcelain | wc -l)" -ne "0" ]; then
- echo " š“ there are uncommitted changes, please commit them before running this check"
- exit 1
-fi
diff --git a/.github/scripts/labeler.py b/.github/scripts/labeler.py
deleted file mode 100644
index b33dd6df0..000000000
--- a/.github/scripts/labeler.py
+++ /dev/null
@@ -1,247 +0,0 @@
-from __future__ import annotations
-
-import sys
-import glob
-import subprocess
-import os
-import re
-
-DRY_RUN = False
-
-JSON_SCHEMA_LABEL = "json-schema"
-
-# note: we can't use "breaking-change" as the label since that might be applied manually by a user. This is a
-# distinct label that we can use to indicate that the label was applied (or removed) by automation.
-BREAKING_CHANGE_LABEL = "detected-breaking-change"
-
-
-def main(changed_files: str | None = None, merge_base_schema_files: str | None = None):
- global DRY_RUN
-
- pr_number = os.environ.get("GITHUB_PR_NUMBER")
- comment_file_path = os.environ.get("CI_COMMENT_FILE")
-
- if not comment_file_path:
- print("CI_COMMENT_FILE not set")
- sys.exit(1)
-
- if not pr_number:
- DRY_RUN = True
-
- if changed_files:
- DRY_RUN = True
-
- # read lines from file... this is useful for local testing
- with open(changed_files) as f:
- pr_changed_files = f.read().splitlines()
-
- with open(merge_base_schema_files) as f:
- og_json_schema_files = sort_json_schema_files(f.read().splitlines())
-
- else:
- if not is_ci():
- print("Not in CI")
- sys.exit(1)
-
- if not pr_number:
- print("Not a PR")
- sys.exit(1)
-
- pr_changed_files = get_pr_changed_files(pr_number)
- # since we are running this in the context of the pull_request_target, the checkout is the merge base..
- # that is the main branch of the original repo, NOT the branch in the forked repo (or branch in the target
- # repo for non-forked PRs). This means we just need to list the current checkedout files to get a sense of
- # the changes before a merge.
- og_json_schema_files = list_json_schema_files()
-
- pr_json_schema_files = filter_to_schema_files(pr_changed_files)
-
- pr_labels = get_pr_labels(pr_number)
-
- # print("schema files in pr: ", summarize_schema_files(pr_json_schema_files))
- # print("og schema files: ", summarize_schema_files(og_json_schema_files))
-
- if not og_json_schema_files:
- print("No schema files found in merge base")
- sys.exit(1)
-
- # pr_json_schema_files = set of PR files are added, removed, and changed files
- new_schema_files = set(pr_json_schema_files) - set(og_json_schema_files)
- removed_or_modified_schema_files = set(pr_json_schema_files) - set(new_schema_files)
-
- print("new schemas: ", summarize_schema_files(new_schema_files))
- print("removed or modified schemas:", summarize_schema_files(removed_or_modified_schema_files))
-
- # if there is a new or modified schema, we should add the "json-schema" label to the PR...
- if new_schema_files or removed_or_modified_schema_files:
- print("\nAdding json-schema label...")
- add_label(pr_number, JSON_SCHEMA_LABEL)
-
- else:
- if JSON_SCHEMA_LABEL in pr_labels:
- remove_label(pr_number, JSON_SCHEMA_LABEL)
-
- # new schema files should be scrutinized, comparing the latest and added versions to see if it's a breaking
- # change (major version bump). Warn about it on the PR via adding a breaking-change label...
- if is_breaking_change(new_schema_files, og_json_schema_files[-1]):
- print("\nBreaking change detected...")
- add_label(pr_number, BREAKING_CHANGE_LABEL)
- else:
- if BREAKING_CHANGE_LABEL in pr_labels:
- remove_label(pr_number, BREAKING_CHANGE_LABEL)
-
- # modifying an existing schema could be a breaking change, we should warn about it on the PR via a comment...
- # removing schema files should never be allowed, we should warn about it on the PR via a comment...
- if removed_or_modified_schema_files:
- print("\nRemoved or modified schema detected...")
- schemas = sort_json_schema_files(list(removed_or_modified_schema_files))
- schemas_str = "\n".join([f" - {schema}" for schema in schemas])
- add_comment(comment_file_path, f"Detected modification or removal of existing json schemas:\n{schemas_str}", warning=True)
-
-
-def add_comment(comment_file_path: str, comment: str, warning: bool = False, important: bool = False):
- if warning or important:
- comment_lines = comment.splitlines()
- comment = "\n".join([f"> {line}" for line in comment_lines])
-
- if warning:
- comment = f"> [!WARNING]\n{comment}"
- elif important:
- comment = f"> [!IMPORTANT]\n{comment}"
-
- # create any parent directories if they don't exist
- os.makedirs(os.path.dirname(comment_file_path), exist_ok=True)
-
- with open(comment_file_path, "w") as f:
- f.write(comment)
-
- print(f"Comment file contents: {comment_file_path}")
- print(comment)
-
-
-def add_label(pr_number: str, label: str):
- # run "gh pr edit --add-label
![syft-demo](https://user-images.githubusercontent.com/590471/90277200-2a253000-de33-11ea-893f-32c219eea11a.gif)
@@ -40,11 +41,10 @@ Syft binaries are provided for Linux, macOS and Windows.
> curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
> ```
-... or, you can specify a release version and destination directory for the installation:
-
-> ```bash
-> curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b
-> ```
+Install script options:
+- `-b`: Specify a custom installation directory (defaults to `./bin`)
+- `-d`: More verbose logging levels (`-d` for debug, `-dd` for trace)
+- `-v`: Verify the signature of the downloaded artifact before installation (requires [`cosign`](https://github.com/sigstore/cosign) to be installed)
### Homebrew
```bash
@@ -106,8 +106,10 @@ syft -o
Where the `formats` available are:
- `syft-json`: Use this to get as much information out of Syft as possible!
- `syft-text`: A row-oriented, human-and-machine-friendly output.
-- `cyclonedx-xml`: A XML report conforming to the [CycloneDX 1.4 specification](https://cyclonedx.org/specification/overview/).
-- `cyclonedx-json`: A JSON report conforming to the [CycloneDX 1.4 specification](https://cyclonedx.org/specification/overview/).
+- `cyclonedx-xml`: A XML report conforming to the [CycloneDX 1.6 specification](https://cyclonedx.org/specification/overview/).
+- `cyclonedx-xml@1.5`: A XML report conforming to the [CycloneDX 1.5 specification](https://cyclonedx.org/specification/overview/).
+- `cyclonedx-json`: A JSON report conforming to the [CycloneDX 1.6 specification](https://cyclonedx.org/specification/overview/).
+- `cyclonedx-json@1.5`: A JSON report conforming to the [CycloneDX 1.5 specification](https://cyclonedx.org/specification/overview/).
- `spdx-tag-value`: A tag-value formatted report conforming to the [SPDX 2.3 specification](https://spdx.github.io/spdx-spec/v2.3/).
- `spdx-tag-value@2.2`: A tag-value formatted report conforming to the [SPDX 2.2 specification](https://spdx.github.io/spdx-spec/v2.2.2/).
- `spdx-json`: A JSON report conforming to the [SPDX 2.3 JSON Schema](https://github.com/spdx/spdx-spec/blob/v2.3/schemas/spdx-schema.json).
@@ -116,6 +118,8 @@ Where the `formats` available are:
- `syft-table`: A columnar summary (default).
- `template`: Lets the user specify the output format. See ["Using templates"](#using-templates) below.
+Note that flags using the @ can be used for earlier versions of each specification as well.
+
### Supported Ecosystems
- Alpine (apk)
@@ -165,6 +169,10 @@ Our [wiki](https://github.com/anchore/syft/wiki) contains further details on the
* [Adding an SBOM to an image as an attestation using Syft](https://github.com/anchore/syft/wiki/attestation#adding-an-sbom-to-an-image-as-an-attestation-using-syft)
* [Configuration](https://github.com/anchore/syft/wiki/configuration)
+## Contributing
+
+Check out our [contributing](/CONTRIBUTING.md) guide and [developer](/DEVELOPING.md) docs.
+
## Syft Team Meetings
The Syft Team hold regular community meetings online. All are welcome to join to bring topics for discussion.
diff --git a/RELEASE.md b/RELEASE.md
index 3e9ba7ab0..8bf7f5c89 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,5 +1,16 @@
# Release
+A release of syft comprises:
+- a new semver git tag from the current tip of the main branch
+- a new [github release](https://github.com/anchore/syft/releases) with a changelog and archived binary assets
+- docker images published to `ghcr.io` and `dockerhub`, including multi architecture images + manifest
+- [`anchore/homebrew-syft`](https://github.com/anchore/homebrew-syft) tap updated to point to assets in the latest github release
+
+Ideally releasing should be done often with small increments when possible. Unless a
+breaking change is blocking the release, or no fixes/features have been merged, a good
+target release cadence is between every 1 or 2 weeks.
+
+
## Creating a release
This release process itself should be as automated as possible, and has only a few steps:
@@ -9,16 +20,10 @@ This release process itself should be as automated as possible, and has only a f
you can abort and adjust the labels on the PRs and issues to be included in the release and
re-run the release trigger command.
-1. A release admin must approve the release on the GitHub Actions release pipeline run page.
+1. A release admin must approve the release on the GitHub Actions [release pipeline](https://github.com/anchore/syft/actions/workflows/release.yaml) run page.
Once approved, the release pipeline will generate all assets and publish a GitHub Release.
-1. If there is a release Milestone, close it.
-
-Ideally releasing should be done often with small increments when possible. Unless a
-breaking change is blocking the release, or no fixes/features have been merged, a good
-target release cadence is between every 1 or 2 weeks.
-
-
+
## Retracting a release
If a release is found to be problematic, it can be retracted with the following steps:
@@ -32,81 +37,3 @@ If a release is found to be problematic, it can be retracted with the following
in the go proxy, which will cause confusion when trying to reuse the tag later (the H1 hash will not match and there
will be a warning when users try to pull the new release).
-
-## Background
-
-A good release process has the following qualities:
-
-1. There is a way to plan what should be in a release
-1. There is a way to see what is actually in a release
-1. Allow for different kinds of releases (major breaking vs backwards compatible enhancements vs patch updates)
-1. Specify a repeatable way to build and publish software artifacts
-
-
-### Planning a release
-
-To indicate a set of features to be released together add each issue to an in-repository
-Milestone named with major-minor version to be released (e.g. `v0.1`). It is OK for other
-features to be in the release that were not originally planned, and these issues and PRs
-do not need to be added to the Milestone in question. Only the set of features that, when
-completed, would allow the release to be considered complete. A Milestone is only used to:
-
-- Plan what is desired to be in a release
-- Track progress to indicate when we may be ready to cut a new release
-
-Not all releases need to be planned. For instance, patch releases for fixes should be
-released when they are ready and when releasing would not interfere with another current
-release (where some partial or breaking features have already been merged).
-
-Unless necessary, feature releases should be small and frequent, which may obviate the
-need for regular release planning under a Milestone.
-
-
-### What is in a release
-
-Milestones are specifically for planning a release, not necessarily tracking all changes
-that a release may bring (and more importantly, not all releases are necessarily planned
-either).
-
-This is one of the (many) reasons for a Changelog. A good Changelog lists changes grouped
-by the type of change (new, enhancement, deprecation, breaking, bug fix, security fix), in
-chronological order (within groups), linking the PR where the change was made in the
-Changelog line. Furthermore, there should be a place to see all released versions, the
-release date for each release, the semantic version of the release, and the set of changes
-for each release.
-
-**This project auto-generates the Changelog contents for each current release and posts the
-generated contents to the GitHub Release page**. Leveraging the GitHub Releases feature
-allows GitHub to manage the Changelog on each release outside of the git source tree while
-still being hosted with the released assets.
-
-The Changelog is generated from the metadata from in-repository issues and PRs, using
-labels to guide what kind of change each item is (e.g. breaking, new feature, bug fix,
-etx). Only issues/PRs with select labels are included in the Changelog, and only if the
-issue/PR was created after the last release. Additional labels are used to exclude items
-from the Changelog.
-
-The above suggestions imply that we should:
-
-- Ensure there is a sufficient title for each PR and issue title to be included in the
- Changelog
-- The appropriate label is applied to PRs and/or issues to drive specific change type
- sections (deprecated, breaking, security, bug, etc)
-
-**With this approach as we cultivate good organization of PRs and issues we automatically
-get an equally good Changelog.**
-
-
-### Major, minor, and patch releases
-
-The latest version of the tool is the only supported version, which implies that multiple
-parallel release branches will not be a regular process (if ever). Multiple releases can
-be planned in parallel, however, only one can be actively developed at a time. That is, if
-PRs attached to a release Milestone have been merged into the main branch, that release is
-now the "next" release. **This implies that the source of truth for release lies with the
-git log and Changelog, not with the release Milestones** (which are purely for planning and
-tracking).
-
-Semantic versioning should be used to indicate breaking changes, new features, and fixes.
-The exception to this is `< 1.0`, where the major version is not bumped for breaking changes,
-instead the minor version indicates both new features and breaking changes.
diff --git a/Taskfile.yaml b/Taskfile.yaml
index c0a8bc334..5e7f2c000 100644
--- a/Taskfile.yaml
+++ b/Taskfile.yaml
@@ -4,9 +4,19 @@ vars:
OWNER: anchore
PROJECT: syft
+ CACHE_IMAGE: ghcr.io/{{ .OWNER }}/{{ .PROJECT }}/test-fixture-cache:latest
+
# static file dirs
TOOL_DIR: .tool
TMP_DIR: .tmp
+ ORAS_CACHE: "{{ .TMP_DIR }}/oras-cache"
+ CACHE_PATHS_FILE: "{{ .TMP_DIR }}/cache_paths.json"
+ LAST_CACHE_PULL_FILE: "{{ .TMP_DIR }}/last_cache_paths.json"
+
+ # TOOLS
+ ORAS: "{{ .TOOL_DIR }}/oras"
+ YQ: "{{ .TOOL_DIR }}/yq"
+ TASK: "{{ .TOOL_DIR }}/task"
# used for changelog generation
CHANGELOG: CHANGELOG.md
@@ -33,6 +43,9 @@ vars:
COMPARE_DIR: ./test/compare
COMPARE_TEST_IMAGE: centos:8.2.2004
+env:
+ GNUMAKEFLAGS: '--no-print-directory'
+
tasks:
## High-level tasks #################################
@@ -65,6 +78,7 @@ tasks:
- task: benchmark
- task: test-utils
- task: cli
+ - task: check-docker-cache
## Bootstrap tasks #################################
@@ -212,10 +226,6 @@ tasks:
# that the cache being restored with the correct binary will be rebuilt since the timestamps
# and local checksums will not line up.
deps: [tools, snapshot]
- sources:
- - "{{ .SNAPSHOT_BIN }}"
- - ./test/cli/**
- - ./**/*.go
cmds:
- cmd: "echo 'testing binary: {{ .SNAPSHOT_BIN }}'"
silent: true
@@ -229,18 +239,14 @@ tasks:
test-utils:
desc: Run tests for pipeline utils
- sources:
- - .github/scripts/labeler*.py
cmds:
- - cmd: python .github/scripts/labeler_test.py
+ - cmd: .github/scripts/labeler_test.py
## Benchmark test targets #################################
benchmark:
deps: [tmpdir]
- sources:
- - ./**/*.go
generates:
- "{{ .TMP_DIR }}/benchmark-main.txt"
cmds:
@@ -253,8 +259,6 @@ tasks:
show-benchstat:
deps: [benchmark, tmpdir]
- sources:
- - "{{ .TMP_DIR }}/benchstat.txt"
cmds:
- cmd: "cat {{ .TMP_DIR }}/benchstat.txt"
silent: true
@@ -263,56 +267,188 @@ tasks:
## Test-fixture-related targets #################################
fingerprints:
- desc: Generate test fixture fingerprints
+ desc: Generate fingerprints for all non-docker test fixture
+ silent: true
+ # this will look for `test-fixtures/Makefile` and invoke the `fingerprint` target to calculate all cache input fingerprint files
generates:
- - cmd/syft/internal/test/integration/test-fixtures/cache.fingerprint
- - syft/file/cataloger/executable/test-fixtures/elf/cache.fingerprint
- - syft/file/cataloger/executable/test-fixtures/shared-info/cache.fingerprint
- - syft/pkg/cataloger/binary/test-fixtures/cache.fingerprint
- - syft/pkg/cataloger/java/test-fixtures/java-builds/cache.fingerprint
- - syft/pkg/cataloger/golang/test-fixtures/archs/binaries.fingerprint
- - syft/pkg/cataloger/redhat/test-fixtures/rpms.fingerprint
- - syft/pkg/cataloger/kernel/test-fixtures/cache.fingerprint
+ - '**/test-fixtures/**/*.fingerprint'
- test/install/cache.fingerprint
- - test/cli/test-fixtures/cache.fingerprint
- cmds:
- # for EXECUTABLE unit test fixtures
- - "cd syft/file/cataloger/executable/test-fixtures/elf && make cache.fingerprint"
- - "cd syft/file/cataloger/executable/test-fixtures/shared-info && make cache.fingerprint"
- # for IMAGE integration test fixtures
- - "cd cmd/syft/internal/test/integration/test-fixtures && make cache.fingerprint"
- # for BINARY unit test fixtures
- - "cd syft/pkg/cataloger/binary/test-fixtures && make cache.fingerprint"
- # for JAVA BUILD unit test fixtures
- - "cd syft/pkg/cataloger/java/test-fixtures/java-builds && make cache.fingerprint"
- # for GO BINARY unit test fixtures
- - "cd syft/pkg/cataloger/golang/test-fixtures/archs && make binaries.fingerprint"
- # for RPM unit test fixtures
- - "cd syft/pkg/cataloger/redhat/test-fixtures && make rpms.fingerprint"
- # for Kernel unit test fixtures
- - "cd syft/pkg/cataloger/kernel/test-fixtures && make cache.fingerprint"
- # for INSTALL test fixtures
- - "cd test/install && make cache.fingerprint"
- # for CLI test fixtures
- - "cd test/cli/test-fixtures && make cache.fingerprint"
-
- fixtures:
- desc: Generate test fixtures
- cmds:
- - "cd syft/file/cataloger/executable/test-fixtures/elf && make"
- - "cd syft/file/cataloger/executable/test-fixtures/shared-info && make"
- - "cd syft/pkg/cataloger/java/test-fixtures/java-builds && make"
- - "cd syft/pkg/cataloger/redhat/test-fixtures && make"
- - "cd syft/pkg/cataloger/binary/test-fixtures && make"
+ cmds:
+ - |
+ BOLD='\033[1m'
+ YELLOW='\033[0;33m'
+ RESET='\033[0m'
+
+ echo -e "${YELLOW}creating fingerprint files for non-docker fixtures...${RESET}"
+ for dir in $(find . -type d -name 'test-fixtures'); do
+ if [ -f "$dir/Makefile" ]; then
+ # for debugging...
+ #echo -e "${YELLOW}ā¢ calculating fingerprints in $dir... ${RESET}"
+
+ (make -C "$dir" fingerprint)
+ fi
+ done
+
+ # for debugging...
+ # echo -e "generated all fixture fingerprints"
+
+ - .github/scripts/fingerprint_docker_fixtures.py
+ - |
+ # if DOWNLOAD_TEST_FIXTURE_CACHE is set to 'false', then we don't need to calculate the fingerprint for the cache
+ if [ "$DOWNLOAD_TEST_FIXTURE_CACHE" = "false" ]; then
+ exit 0
+ fi
+ .github/scripts/find_cache_paths.py {{ .CACHE_PATHS_FILE }} > /dev/null
+
+
+ refresh-fixtures:
+ desc: Clear and fetch all test fixture cache
+ aliases:
+ - fixtures
+ silent: true
+ deps:
+ - tools
+ cmds:
+ - |
+ BOLD='\033[1m'
+ PURPLE='\033[0;35m'
+ RESET='\033[0m'
+
+ # if DOWNLOAD_TEST_FIXTURE_CACHE is set to 'false', then skip the cache download and always build
+ if [ "$DOWNLOAD_TEST_FIXTURE_CACHE" = "false" ]; then
+ echo -e "${BOLD}${PURPLE}skipping cache download, rebuilding cache...${RESET}"
+ {{ .TASK }} build-fixtures
+ exit 0
+ fi
+
+ LATEST_FINGERPRINT=$(docker manifest inspect {{ .CACHE_IMAGE }} | {{ .YQ }} -r '.annotations.fingerprint')
+
+ echo "latest cache: $LATEST_FINGERPRINT"
+
+ if [ -f {{ .LAST_CACHE_PULL_FILE }} ]; then
+ LAST_PULL_FINGERPRINT=$(cat {{ .LAST_CACHE_PULL_FILE }} | {{ .YQ }} -r '.digest')
+ else
+ echo -e "${BOLD}${PURPLE}empty cache, downloading cache...${RESET}"
+ {{ .TASK }} download-test-fixture-cache
+ exit 0
+ fi
+
+ {{ .TASK }} fingerprints
+
+ WANT_FINGERPRINT=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest')
+
+ echo "desired cache: $WANT_FINGERPRINT"
+ echo "last pulled cache: $LAST_PULL_FINGERPRINT"
+
+ # if we already have the latest cache, skip the refresh
+ if [ "$LAST_PULL_FINGERPRINT" = "$WANT_FINGERPRINT" ]; then
+ echo -e "${BOLD}${PURPLE}already have the latest cache (skipping cache download)${RESET}"
+ exit 0
+ fi
+
+ # at this point we only refresh the cache if we want the same cache that is currently available.
+ # we don't by default refresh the cache if the cache if it is simply different from what we have,
+ # because we may be working on a code change that doesn't require a cache refresh (but could trigger one,
+ # which would be annoying to deal with in a development workflow).
+
+ if [ "$LATEST_FINGERPRINT" = "$WANT_FINGERPRINT" ]; then
+ echo -e "${BOLD}${PURPLE}found newer cache! downloading cache...${RESET}"
+ {{ .TASK }} download-test-fixture-cache
+ else
+ echo -e "${BOLD}${PURPLE}found different cache, but isn't clear if it's newer (skipping cache download and manually building)${RESET}"
+
+ {{ .YQ }} eval '.paths[] | "\(.digest) \(.path)"' {{ .LAST_CACHE_PULL_FILE }} > .tmp/last_cache_lines
+ {{ .YQ }} eval '.paths[] | "\(.digest) \(.path)"' {{ .CACHE_PATHS_FILE }} > .tmp/cache_lines
+ diff .tmp/last_cache_lines .tmp/cache_lines || true
+
+ echo -e "${BOLD}${PURPLE}diff with more context...${RESET}"
+
+ diff -U10000 {{ .LAST_CACHE_PULL_FILE }} {{ .CACHE_PATHS_FILE }} || true
+
+ echo -e "${BOLD}${PURPLE}detected changes to input material, manually building fixtures...${RESET}"
+
+ {{ .TASK }} build-fixtures
+ fi
+
+ build-fixtures:
+ desc: Generate all non-docker test fixtures
+ silent: true
+ # this will look for `test-fixtures/Makefile` and invoke the `fixtures` target to generate any and all test fixtures
+ cmds:
+ - |
+ BOLD='\033[1m'
+ YELLOW='\033[0;33m'
+ RESET='\033[0m'
+
+ # Use a for loop with command substitution to avoid subshell issues
+ for dir in $(find . -type d -name 'test-fixtures'); do
+ if [ -f "$dir/Makefile" ]; then
+ echo -e "${YELLOW}${BOLD}generating fixtures in $dir${RESET}"
+ (make -C "$dir" fixtures)
+ fi
+ done
+ echo -e "${BOLD}generated all fixtures${RESET}"
+
+ download-test-fixture-cache:
+ desc: Download test fixture cache from ghcr.io
+ deps: [tools, clean-cache]
+ vars:
+ CACHE_DIGEST:
+ sh: docker manifest inspect {{ .CACHE_IMAGE }} | {{ .YQ }} -r '.annotations.fingerprint'
+ cmds:
+ - silent: true
+ cmd: |
+ # if oras cache is > 4 GB, delete it
+ if [ -d {{ .ORAS_CACHE }} ]; then
+ total_size=$(du -c {{ .ORAS_CACHE }} | grep total | awk '{print $1}')
+ if [ "$total_size" -gt 4194304 ]; then
+ echo 'deleting oras cache'
+ rm -rf {{ .ORAS_CACHE }}
+ fi
+ fi
+ - "ORAS_CACHE={{ .ORAS_CACHE }} {{ .ORAS }} pull {{ .CACHE_IMAGE }}"
+ - "cp {{ .CACHE_PATHS_FILE }} {{ .LAST_CACHE_PULL_FILE }}"
+
+ upload-test-fixture-cache:
+ desc: Upload the test fixture cache to ghcr.io
+ deps: [tools, fingerprints]
+ silent: true
+ cmd: |
+ set -eu
+ oras_command="{{ .ORAS }} push {{ .CACHE_IMAGE }}"
+
+ paths=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.paths[].path')
+ for path in $paths; do
+ oras_command+=" $path"
+ done
+ oras_command+=" {{ .CACHE_PATHS_FILE }}"
+
+ oras_command+=" --annotation org.opencontainers.image.source=https://github.com/{{ .OWNER }}/{{ .PROJECT }}"
+ oras_command+=" --annotation fingerprint=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest')"
+
+ echo "Executing: $oras_command"
+ eval $oras_command
show-test-image-cache:
silent: true
cmds:
- - "echo '\nDocker daemon cache:'"
+ - "echo 'Docker daemon cache:'"
- "docker images --format '{{`{{.ID}}`}} {{`{{.Repository}}`}}:{{`{{.Tag}}`}}' | grep stereoscope-fixture- | sort"
- "echo '\nTar cache:'"
- - 'find . -type f -wholename "**/test-fixtures/snapshot/*" | sort'
+ - 'find . -type f -wholename "**/test-fixtures/cache/stereoscope-fixture-*.tar" | sort'
+ check-docker-cache:
+ desc: Ensure docker caches aren't using too much disk space
+ silent: true
+ cmd: |
+ total_size=$(find . | grep cache | grep tar | xargs du -c | grep total | awk '{print $1}')
+ find . | grep cache | grep tar | xargs du
+ echo "total $total_size KB"
+
+ if [ "$total_size" -gt 1048576 ]; then
+ echo 'docker cache is larger than 1GB'
+ exit 1
+ fi
## install.sh testing targets #################################
@@ -489,8 +625,31 @@ tasks:
- "rm -rf {{ .SNAPSHOT_DIR }}"
- "rm -rf {{ .TMP_DIR }}/goreleaser.yaml"
+ clean-docker-cache:
+ desc: Remove all docker cache tars and images from the daemon
+ cmds:
+ - find . -type d -wholename "**/test-fixtures/cache" | xargs rm -rf
+ - docker images --format '{{`{{.ID}}`}} {{`{{.Repository}}`}}' | grep stereoscope-fixture- | awk '{print $1}' | uniq | xargs -r docker rmi --force
+
+ clean-oras-cache:
+ desc: Remove all cache for oras commands
+ cmd: rm -rf {{ .ORAS_CACHE }}
+
clean-cache:
- desc: Remove all docker cache and local image tar cache
+ desc: Remove all image docker tar cache, images from the docker daemon, and ephemeral test fixtures
cmds:
- - 'find . -type f -wholename "**/test-fixtures/cache/stereoscope-fixture-*.tar" -delete'
- - "docker images --format '{{`{{.ID}}`}} {{`{{.Repository}}`}}' | grep stereoscope-fixture- | awk '{print $$1}' | uniq | xargs -r docker rmi --force"
+ - task: clean-docker-cache
+ - |
+ BOLD='\033[1m'
+ YELLOW='\033[0;33m'
+ RESET='\033[0m'
+
+ # Use a for loop with command substitution to avoid subshell issues
+ for dir in $(find . -type d -name 'test-fixtures'); do
+ if [ -f "$dir/Makefile" ]; then
+ echo -e "${YELLOW}${BOLD}deleting ephemeral test fixtures in $dir${RESET}"
+ (make -C "$dir" clean)
+ fi
+ done
+ echo -e "${BOLD}Deleted all ephemeral test fixtures${RESET}"
+ - rm -f {{ .LAST_CACHE_PULL_FILE }} {{ .CACHE_PATHS_FILE }}
diff --git a/build-syft-binary.sh b/build-syft-binary.sh
new file mode 100755
index 000000000..f26f530b0
--- /dev/null
+++ b/build-syft-binary.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+
+# Roughly replicate goreleaser templating: https://goreleaser.com/customization/templates/.
+# Needed for passing version information to the Syft build (see the upstream .goreleaser.yaml).
+
+get_version() {
+ local version
+ version=$(git describe --tags --abbrev=0)
+ # TODO: should we indicate the Red Hat patches in the version?
+ # TODO: how to version re-releases of past versions?
+ echo "${version#v}" # strip the 'v' prefix
+}
+
+version=$(get_version)
+full_commit=$(git rev-parse HEAD)
+date="$(date --utc --iso-8601=seconds | cut -d '+' -f 1)Z" # yyyy-mm-ddThh:mm:ssZ
+summary=$(git describe --dirty --always --tags)
+
+# command based on .goreleaser.yaml configuration
+CGO_ENABLED=0 go build -ldflags "
+ -w
+ -s
+ -extldflags '-static'
+ -X main.version=$version
+ -X main.gitCommit=$full_commit
+ -X main.buildDate=$date
+ -X main.gitDescription=$summary
+" -o dist/syft ./cmd/syft
+
+echo "--- output path: dist/syft ---"
+dist/syft version
diff --git a/cmd/syft/cli/ui/handle_attestation_test.go b/cmd/syft/cli/ui/handle_attestation_test.go
deleted file mode 100644
index 76857ed65..000000000
--- a/cmd/syft/cli/ui/handle_attestation_test.go
+++ /dev/null
@@ -1,140 +0,0 @@
-package ui
-
-import (
- "strings"
- "testing"
- "time"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/bubbly/bubbles/taskprogress"
- syftEvent "github.com/anchore/syft/syft/event"
- "github.com/anchore/syft/syft/event/monitor"
-)
-
-func TestHandler_handleAttestationStarted(t *testing.T) {
-
- tests := []struct {
- name string
- eventFn func(*testing.T) partybus.Event
- iterations int
- }{
- {
- name: "attesting in progress",
- // note: this model depends on a background reader. Multiple iterations ensures that the
- // reader has time to at least start and process the test fixture before the runModel
- // test harness completes (which is a fake event loop anyway).
- iterations: 1,
- eventFn: func(t *testing.T) partybus.Event {
- reader := strings.NewReader("contents\nof\nstuff!")
-
- src := monitor.GenericTask{
- Title: monitor.Title{
- Default: "Create a thing",
- WhileRunning: "Creating a thing",
- OnSuccess: "Created a thing",
- },
- Context: "running a thing",
- }
-
- mon := progress.NewManual(-1)
- mon.Set(50)
-
- value := &monitor.ShellProgress{
- Reader: reader,
- Progressable: mon,
- }
-
- return partybus.Event{
- Type: syftEvent.AttestationStarted,
- Source: src,
- Value: value,
- }
- },
- },
- {
- name: "attesting complete",
- // note: this model depends on a background reader. Multiple iterations ensures that the
- // reader has time to at least start and process the test fixture before the runModel
- // test harness completes (which is a fake event loop anyway).
- iterations: 1,
- eventFn: func(t *testing.T) partybus.Event {
- reader := strings.NewReader("contents\nof\nstuff!")
-
- src := monitor.GenericTask{
- Title: monitor.Title{
- Default: "Create a thing",
- WhileRunning: "Creating a thing",
- OnSuccess: "Created a thing",
- },
- Context: "running a thing",
- }
-
- mon := progress.NewManual(-1)
- mon.Set(50)
- mon.SetCompleted()
-
- value := &monitor.ShellProgress{
- Reader: reader,
- Progressable: mon,
- }
-
- return partybus.Event{
- Type: syftEvent.AttestationStarted,
- Source: src,
- Value: value,
- }
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- event := tt.eventFn(t)
- handler := New(DefaultHandlerConfig())
- handler.WindowSize = tea.WindowSizeMsg{
- Width: 100,
- Height: 80,
- }
-
- models, _ := handler.Handle(event)
- require.Len(t, models, 2)
-
- t.Run("task line", func(t *testing.T) {
- tsk, ok := models[0].(taskprogress.Model)
- require.True(t, ok)
-
- gotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{
- Time: time.Now(),
- Sequence: tsk.Sequence(),
- ID: tsk.ID(),
- })
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
-
- t.Run("log", func(t *testing.T) {
- log, ok := models[1].(attestLogFrame)
- require.True(t, ok)
-
- gotModel := runModel(t, log, tt.iterations, attestLogFrameTickMsg{
- Time: time.Now(),
- Sequence: log.sequence,
- ID: log.id,
- }, log.reader.running)
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
-
- })
- }
-}
diff --git a/cmd/syft/cli/ui/handle_cataloger_task_test.go b/cmd/syft/cli/ui/handle_cataloger_task_test.go
deleted file mode 100644
index 3efb0fdac..000000000
--- a/cmd/syft/cli/ui/handle_cataloger_task_test.go
+++ /dev/null
@@ -1,198 +0,0 @@
-package ui
-
-import (
- "testing"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
- "github.com/wagoodman/go-progress"
-
- syftEvent "github.com/anchore/syft/syft/event"
- "github.com/anchore/syft/syft/event/monitor"
-)
-
-func TestHandler_handleCatalogerTaskStarted(t *testing.T) {
- title := monitor.Title{
- Default: "some task title",
- OnSuccess: "some task done",
- }
- tests := []struct {
- name string
- eventFn func(*testing.T) partybus.Event
- iterations int
- }{
- {
- name: "cataloging task in progress",
- eventFn: func(t *testing.T) partybus.Event {
- value := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage("some stage"),
- Manual: progress.NewManual(100),
- }
-
- value.Manual.Add(50)
-
- return partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: monitor.GenericTask{
- Title: title,
- HideOnSuccess: false,
- HideStageOnSuccess: false,
- ID: "my-id",
- },
- Value: value,
- }
- },
- },
- {
- name: "cataloging sub task in progress",
- eventFn: func(t *testing.T) partybus.Event {
- value := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage("some stage"),
- Manual: progress.NewManual(100),
- }
-
- value.Manual.Add(50)
-
- return partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: monitor.GenericTask{
- Title: title,
- HideOnSuccess: false,
- HideStageOnSuccess: false,
- ID: "my-id",
- ParentID: "top-level-task",
- },
- Value: value,
- }
- },
- },
- {
- name: "cataloging sub task complete",
- eventFn: func(t *testing.T) partybus.Event {
- value := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage("some stage"),
- Manual: progress.NewManual(100),
- }
-
- value.SetCompleted()
-
- return partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: monitor.GenericTask{
- Title: title,
- HideOnSuccess: false,
- HideStageOnSuccess: false,
- ID: "my-id",
- ParentID: "top-level-task",
- },
- Value: value,
- }
- },
- },
- {
- name: "cataloging sub task complete -- hide stage",
- eventFn: func(t *testing.T) partybus.Event {
- value := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage("some stage"),
- Manual: progress.NewManual(100),
- }
-
- value.SetCompleted()
-
- return partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: monitor.GenericTask{
- Title: title,
- HideOnSuccess: false,
- HideStageOnSuccess: true,
- ID: "my-id",
- ParentID: "top-level-task",
- },
- Value: value,
- }
- },
- },
- {
- name: "cataloging sub task complete with removal",
- eventFn: func(t *testing.T) partybus.Event {
- value := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage("some stage"),
- Manual: progress.NewManual(100),
- }
-
- value.SetCompleted()
-
- return partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: monitor.GenericTask{
- Title: title,
- HideOnSuccess: true,
- HideStageOnSuccess: false,
- ID: "my-id",
- ParentID: "top-level-task",
- },
- Value: value,
- }
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- // need to be able to get the initial newCatalogerTaskRowEvent + initialize the nested taskprogress model
- if tt.iterations == 0 {
- tt.iterations = 2
- }
-
- e := tt.eventFn(t)
- handler := New(DefaultHandlerConfig())
- handler.WindowSize = tea.WindowSizeMsg{
- Width: 100,
- Height: 80,
- }
-
- info := monitor.GenericTask{
- Title: monitor.Title{
- Default: "Catalog contents",
- WhileRunning: "Cataloging contents",
- OnSuccess: "Cataloged contents",
- },
- ID: "top-level-task",
- }
-
- // note: this line / event is not under test, only needed to show a sub status
- kickoffEvent := &monitor.CatalogerTaskProgress{
- AtomicStage: progress.NewAtomicStage(""),
- Manual: progress.NewManual(-1),
- }
-
- models, cmd := handler.Handle(
- partybus.Event{
- Type: syftEvent.CatalogerTaskStarted,
- Source: info,
- Value: progress.StagedProgressable(kickoffEvent),
- },
- )
- require.Len(t, models, 1)
- require.NotNil(t, cmd)
- model := models[0]
-
- tr, ok := model.(*catalogerTaskModel)
- require.True(t, ok)
-
- gotModel := runModel(t, tr, tt.iterations, cmd())
-
- models, cmd = handler.Handle(e)
- require.Len(t, models, 0)
- require.NotNil(t, cmd)
-
- gotModel = runModel(t, gotModel, tt.iterations, cmd())
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
- }
-}
diff --git a/cmd/syft/cli/ui/handle_fetch_image_test.go b/cmd/syft/cli/ui/handle_fetch_image_test.go
deleted file mode 100644
index a2df4701c..000000000
--- a/cmd/syft/cli/ui/handle_fetch_image_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package ui
-
-import (
- "testing"
- "time"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/bubbly/bubbles/taskprogress"
- stereoscopeEvent "github.com/anchore/stereoscope/pkg/event"
-)
-
-func TestHandler_handleFetchImage(t *testing.T) {
-
- tests := []struct {
- name string
- eventFn func(*testing.T) partybus.Event
- iterations int
- }{
- {
- name: "fetch image in progress",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(50)
-
- mon := struct {
- progress.Progressable
- progress.Stager
- }{
- Progressable: prog,
- Stager: &progress.Stage{
- Current: "current",
- },
- }
-
- return partybus.Event{
- Type: stereoscopeEvent.FetchImage,
- Source: "the-image",
- Value: mon,
- }
- },
- },
- {
- name: "fetch image complete",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(100)
- prog.SetCompleted()
-
- mon := struct {
- progress.Progressable
- progress.Stager
- }{
- Progressable: prog,
- Stager: &progress.Stage{
- Current: "current",
- },
- }
-
- return partybus.Event{
- Type: stereoscopeEvent.FetchImage,
- Source: "the-image",
- Value: mon,
- }
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- event := tt.eventFn(t)
- handler := New(DefaultHandlerConfig())
- handler.WindowSize = tea.WindowSizeMsg{
- Width: 100,
- Height: 80,
- }
-
- models, _ := handler.Handle(event)
- require.Len(t, models, 1)
- model := models[0]
-
- tsk, ok := model.(taskprogress.Model)
- require.True(t, ok)
-
- gotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{
- Time: time.Now(),
- Sequence: tsk.Sequence(),
- ID: tsk.ID(),
- })
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
- }
-}
diff --git a/cmd/syft/cli/ui/handle_file_indexing_test.go b/cmd/syft/cli/ui/handle_file_indexing_test.go
deleted file mode 100644
index 65615119d..000000000
--- a/cmd/syft/cli/ui/handle_file_indexing_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package ui
-
-import (
- "testing"
- "time"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/bubbly/bubbles/taskprogress"
- syftEvent "github.com/anchore/syft/syft/event"
-)
-
-func TestHandler_handleFileIndexingStarted(t *testing.T) {
-
- tests := []struct {
- name string
- eventFn func(*testing.T) partybus.Event
- iterations int
- }{
- {
- name: "cataloging in progress",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(50)
-
- mon := struct {
- progress.Progressable
- progress.Stager
- }{
- Progressable: prog,
- Stager: &progress.Stage{
- Current: "current",
- },
- }
-
- return partybus.Event{
- Type: syftEvent.FileIndexingStarted,
- Source: "/some/path",
- Value: mon,
- }
- },
- },
- {
- name: "cataloging complete",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(100)
- prog.SetCompleted()
-
- mon := struct {
- progress.Progressable
- progress.Stager
- }{
- Progressable: prog,
- Stager: &progress.Stage{
- Current: "current",
- },
- }
-
- return partybus.Event{
- Type: syftEvent.FileIndexingStarted,
- Source: "/some/path",
- Value: mon,
- }
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- event := tt.eventFn(t)
- handler := New(DefaultHandlerConfig())
- handler.WindowSize = tea.WindowSizeMsg{
- Width: 100,
- Height: 80,
- }
-
- models, _ := handler.Handle(event)
- require.Len(t, models, 1)
- model := models[0]
-
- tsk, ok := model.(taskprogress.Model)
- require.True(t, ok)
-
- gotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{
- Time: time.Now(),
- Sequence: tsk.Sequence(),
- ID: tsk.ID(),
- })
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
- }
-}
diff --git a/cmd/syft/cli/ui/handle_pull_docker_image_test.go b/cmd/syft/cli/ui/handle_pull_docker_image_test.go
deleted file mode 100644
index afa986fc2..000000000
--- a/cmd/syft/cli/ui/handle_pull_docker_image_test.go
+++ /dev/null
@@ -1,163 +0,0 @@
-package ui
-
-import (
- "testing"
-
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/stereoscope/pkg/image/docker"
-)
-
-var _ dockerPullStatus = (*mockDockerPullStatus)(nil)
-
-type mockDockerPullStatus struct {
- complete bool
- layers []docker.LayerID
- current map[docker.LayerID]docker.LayerState
-}
-
-func (m mockDockerPullStatus) Complete() bool {
- return m.complete
-}
-
-func (m mockDockerPullStatus) Layers() []docker.LayerID {
- return m.layers
-}
-
-func (m mockDockerPullStatus) Current(id docker.LayerID) docker.LayerState {
- return m.current[id]
-}
-
-func Test_dockerPullStatusFormatter_Render(t *testing.T) {
-
- tests := []struct {
- name string
- status dockerPullStatus
- }{
- {
- name: "pulling",
- status: func() dockerPullStatus {
- complete := progress.NewManual(10)
- complete.Set(10)
- complete.SetCompleted()
-
- quarter := progress.NewManual(10)
- quarter.Set(2)
-
- half := progress.NewManual(10)
- half.Set(6)
-
- empty := progress.NewManual(10)
-
- return mockDockerPullStatus{
- complete: false,
- layers: []docker.LayerID{
- "sha256:1",
- "sha256:2",
- "sha256:3",
- },
- current: map[docker.LayerID]docker.LayerState{
- "sha256:1": {
- Phase: docker.ExtractingPhase,
- PhaseProgress: half,
- DownloadProgress: complete,
- },
- "sha256:2": {
- Phase: docker.DownloadingPhase,
- PhaseProgress: quarter,
- DownloadProgress: quarter,
- },
- "sha256:3": {
- Phase: docker.WaitingPhase,
- PhaseProgress: empty,
- DownloadProgress: empty,
- },
- },
- }
- }(),
- },
- {
- name: "download complete",
- status: func() dockerPullStatus {
- complete := progress.NewManual(10)
- complete.Set(10)
- complete.SetCompleted()
-
- quarter := progress.NewManual(10)
- quarter.Set(2)
-
- half := progress.NewManual(10)
- half.Set(6)
-
- empty := progress.NewManual(10)
-
- return mockDockerPullStatus{
- complete: false,
- layers: []docker.LayerID{
- "sha256:1",
- "sha256:2",
- "sha256:3",
- },
- current: map[docker.LayerID]docker.LayerState{
- "sha256:1": {
- Phase: docker.ExtractingPhase,
- PhaseProgress: complete,
- DownloadProgress: complete,
- },
- "sha256:2": {
- Phase: docker.ExtractingPhase,
- PhaseProgress: quarter,
- DownloadProgress: complete,
- },
- "sha256:3": {
- Phase: docker.ExtractingPhase,
- PhaseProgress: empty,
- DownloadProgress: complete,
- },
- },
- }
- }(),
- },
- {
- name: "complete",
- status: func() dockerPullStatus {
- complete := progress.NewManual(10)
- complete.Set(10)
- complete.SetCompleted()
-
- return mockDockerPullStatus{
- complete: true,
- layers: []docker.LayerID{
- "sha256:1",
- "sha256:2",
- "sha256:3",
- },
- current: map[docker.LayerID]docker.LayerState{
- "sha256:1": {
- Phase: docker.PullCompletePhase,
- PhaseProgress: complete,
- DownloadProgress: complete,
- },
- "sha256:2": {
- Phase: docker.PullCompletePhase,
- PhaseProgress: complete,
- DownloadProgress: complete,
- },
- "sha256:3": {
- Phase: docker.PullCompletePhase,
- PhaseProgress: complete,
- DownloadProgress: complete,
- },
- },
- }
- }(),
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f := newDockerPullStatusFormatter()
- snaps.MatchSnapshot(t, f.Render(tt.status))
- })
- }
-}
diff --git a/cmd/syft/cli/ui/handle_read_image_test.go b/cmd/syft/cli/ui/handle_read_image_test.go
deleted file mode 100644
index d3354c04e..000000000
--- a/cmd/syft/cli/ui/handle_read_image_test.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package ui
-
-import (
- "testing"
- "time"
-
- tea "github.com/charmbracelet/bubbletea"
- "github.com/gkampitakis/go-snaps/snaps"
- v1 "github.com/google/go-containerregistry/pkg/v1"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/bubbly/bubbles/taskprogress"
- stereoscopeEvent "github.com/anchore/stereoscope/pkg/event"
- "github.com/anchore/stereoscope/pkg/image"
-)
-
-func TestHandler_handleReadImage(t *testing.T) {
-
- tests := []struct {
- name string
- eventFn func(*testing.T) partybus.Event
- iterations int
- }{
- {
- name: "read image in progress",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(50)
-
- src := image.Metadata{
- ID: "id",
- Size: 42,
- Config: v1.ConfigFile{
- Architecture: "arch",
- Author: "auth",
- Container: "cont",
- OS: "os",
- OSVersion: "os-ver",
- Variant: "vari",
- },
- MediaType: "media",
- ManifestDigest: "digest",
- Architecture: "arch",
- Variant: "var",
- OS: "os",
- }
-
- return partybus.Event{
- Type: stereoscopeEvent.ReadImage,
- Source: src,
- Value: prog,
- }
- },
- },
- {
- name: "read image complete",
- eventFn: func(t *testing.T) partybus.Event {
- prog := &progress.Manual{}
- prog.SetTotal(100)
- prog.Set(100)
- prog.SetCompleted()
-
- src := image.Metadata{
- ID: "id",
- Size: 42,
- Config: v1.ConfigFile{
- Architecture: "arch",
- Author: "auth",
- Container: "cont",
- OS: "os",
- OSVersion: "os-ver",
- Variant: "vari",
- },
- MediaType: "media",
- ManifestDigest: "digest",
- Architecture: "arch",
- Variant: "var",
- OS: "os",
- }
-
- return partybus.Event{
- Type: stereoscopeEvent.ReadImage,
- Source: src,
- Value: prog,
- }
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- event := tt.eventFn(t)
- handler := New(DefaultHandlerConfig())
- handler.WindowSize = tea.WindowSizeMsg{
- Width: 100,
- Height: 80,
- }
-
- models, _ := handler.Handle(event)
- require.Len(t, models, 1)
- model := models[0]
-
- tsk, ok := model.(taskprogress.Model)
- require.True(t, ok)
-
- gotModel := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{
- Time: time.Now(),
- Sequence: tsk.Sequence(),
- ID: tsk.ID(),
- })
-
- got := gotModel.View()
-
- t.Log(got)
- snaps.MatchSnapshot(t, got)
- })
- }
-}
diff --git a/cmd/syft/cli/ui/util_test.go b/cmd/syft/cli/ui/util_test.go
deleted file mode 100644
index c13aadae0..000000000
--- a/cmd/syft/cli/ui/util_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package ui
-
-import (
- "reflect"
- "sync"
- "testing"
-
- tea "github.com/charmbracelet/bubbletea"
-)
-
-func runModel(t testing.TB, m tea.Model, iterations int, message tea.Msg, h ...*sync.WaitGroup) tea.Model {
- t.Helper()
- if iterations == 0 {
- iterations = 1
- }
- m.Init()
- var cmd tea.Cmd = func() tea.Msg {
- return message
- }
-
- for _, each := range h {
- if each != nil {
- each.Wait()
- }
- }
-
- for i := 0; cmd != nil && i < iterations; i++ {
- msgs := flatten(cmd())
- var nextCmds []tea.Cmd
- var next tea.Cmd
- for _, msg := range msgs {
- t.Logf("Message: %+v %+v\n", reflect.TypeOf(msg), msg)
- m, next = m.Update(msg)
- nextCmds = append(nextCmds, next)
- }
- cmd = tea.Batch(nextCmds...)
- }
-
- return m
-}
-
-func flatten(ps ...tea.Msg) (msgs []tea.Msg) {
- for _, p := range ps {
- if bm, ok := p.(tea.BatchMsg); ok {
- for _, m := range bm {
- if m == nil {
- continue
- }
- msgs = append(msgs, flatten(m())...)
- }
- } else {
- msgs = []tea.Msg{p}
- }
- }
- return msgs
-}
diff --git a/cmd/syft/internal/commands/attest.go b/cmd/syft/internal/commands/attest.go
index 8e01cbc68..fa3b5ceef 100644
--- a/cmd/syft/internal/commands/attest.go
+++ b/cmd/syft/internal/commands/attest.go
@@ -43,6 +43,7 @@ type attestOptions struct {
options.UpdateCheck `yaml:",inline" mapstructure:",squash"`
options.Catalog `yaml:",inline" mapstructure:",squash"`
Attest options.Attest `yaml:"attest" mapstructure:"attest"`
+ Cache options.Cache `json:"-" yaml:"cache" mapstructure:"cache"`
}
func Attest(app clio.Application) *cobra.Command {
@@ -77,6 +78,7 @@ func defaultAttestOptions() attestOptions {
Output: defaultAttestOutputOptions(),
UpdateCheck: options.DefaultUpdateCheck(),
Catalog: options.DefaultCatalog(),
+ Cache: options.DefaultCache(),
}
}
@@ -91,14 +93,13 @@ func defaultAttestOutputOptions() options.Output {
string(spdxtagvalue.ID),
},
Outputs: []string{syftjson.ID.String()},
- OutputFile: options.OutputFile{ // nolint:staticcheck
+ OutputFile: options.OutputFile{ //nolint:staticcheck
Enabled: false, // explicitly not allowed
},
Format: options.DefaultFormat(),
}
}
-//nolint:funlen
func runAttest(ctx context.Context, id clio.Identification, opts *attestOptions, userInput string) error {
// TODO: what other validation here besides binary name?
if !commandExists(cosignBinName) {
diff --git a/cmd/syft/internal/commands/attest_test.go b/cmd/syft/internal/commands/attest_test.go
deleted file mode 100644
index 41a268226..000000000
--- a/cmd/syft/internal/commands/attest_test.go
+++ /dev/null
@@ -1,331 +0,0 @@
-package commands
-
-import (
- "bytes"
- "context"
- "fmt"
- "io"
- "os/exec"
- "regexp"
- "strings"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/scylladb/go-set/strset"
- "github.com/spf13/cobra"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/clio"
- "github.com/anchore/clio/cliotestutils"
- "github.com/anchore/syft/cmd/syft/internal"
- "github.com/anchore/syft/cmd/syft/internal/options"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-func Test_writeSBOMToFormattedFile(t *testing.T) {
- type args struct {
- s *sbom.SBOM
- opts *attestOptions
- }
- tests := []struct {
- name string
- args args
- wantSbomFile string
- wantErr bool
- }{
- {
- name: "go case",
- args: args{
- opts: &attestOptions{
- Output: func() options.Output {
- def := defaultAttestOutputOptions()
- def.Outputs = []string{"syft-json"}
- return def
- }(),
- },
- s: &sbom.SBOM{
- Artifacts: sbom.Artifacts{},
- Relationships: nil,
- Source: source.Description{
- ID: "source-id",
- Name: "source-name",
- Version: "source-version",
- },
- Descriptor: sbom.Descriptor{
- Name: "syft-test",
- Version: "non-version",
- },
- },
- },
- wantSbomFile: `{
- "artifacts": [],
- "artifactRelationships": [],
- "source": {
- "id": "source-id",
- "name": "source-name",
- "version": "source-version",
- "type": "",
- "metadata": null
- },
- "distro": {},
- "descriptor": {
- "name": "syft-test",
- "version": "non-version"
- },
- "schema": {}
-}`,
- wantErr: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- sbomFile := &bytes.Buffer{}
-
- err := writeSBOMToFormattedFile(tt.args.s, sbomFile, tt.args.opts)
- if (err != nil) != tt.wantErr {
- t.Errorf("writeSBOMToFormattedFile() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
-
- // redact the schema block
- re := regexp.MustCompile(`(?s)"schema":\W*\{.*?},?`)
- subject := re.ReplaceAllString(sbomFile.String(), `"schema":{}`)
-
- assert.JSONEq(t, tt.wantSbomFile, subject)
- })
- }
-}
-
-func Test_attestCommand(t *testing.T) {
- cmdPrefix := cosignBinName
- lp, err := exec.LookPath(cosignBinName)
- if err == nil {
- cmdPrefix = lp
- }
-
- fullCmd := func(args string) string {
- return fmt.Sprintf("%s %s", cmdPrefix, args)
- }
-
- type args struct {
- sbomFilepath string
- opts attestOptions
- userInput string
- }
- tests := []struct {
- name string
- args args
- wantCmd string
- wantEnvVars map[string]string
- notEnvVars []string
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "with key and password",
- args: args{
- userInput: "myimage",
- sbomFilepath: "/tmp/sbom-filepath.json",
- opts: func() attestOptions {
- def := defaultAttestOptions()
- def.Outputs = []string{"syft-json"}
- def.Attest.Key = "key"
- def.Attest.Password = "password"
- return def
- }(),
- },
- wantCmd: fullCmd("attest myimage --predicate /tmp/sbom-filepath.json --type custom -y --key key"),
- wantEnvVars: map[string]string{
- "COSIGN_PASSWORD": "password",
- },
- notEnvVars: []string{
- "COSIGN_EXPERIMENTAL", // only for keyless
- },
- },
- {
- name: "keyless",
- args: args{
- userInput: "myimage",
- sbomFilepath: "/tmp/sbom-filepath.json",
- opts: func() attestOptions {
- def := defaultAttestOptions()
- def.Outputs = []string{"syft-json"}
- return def
- }(),
- },
- wantCmd: fullCmd("attest myimage --predicate /tmp/sbom-filepath.json --type custom -y"),
- wantEnvVars: map[string]string{
- "COSIGN_EXPERIMENTAL": "1",
- },
- notEnvVars: []string{
- "COSIGN_PASSWORD",
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- got, err := attestCommand(tt.args.sbomFilepath, &tt.args.opts, tt.args.userInput)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
-
- require.NotNil(t, got)
- assert.Equal(t, tt.wantCmd, got.String())
-
- gotEnv := strset.New(got.Env...)
-
- for k, v := range tt.wantEnvVars {
- assert.True(t, gotEnv.Has(fmt.Sprintf("%s=%s", k, v)))
- }
-
- for _, k := range tt.notEnvVars {
- for _, env := range got.Env {
- fields := strings.Split(env, "=")
- if fields[0] == k {
- t.Errorf("attestCommand() unexpected environment variable %s", k)
- }
- }
- }
- })
- }
-}
-
-func Test_predicateType(t *testing.T) {
- tests := []struct {
- name string
- want string
- }{
- {
- name: "cyclonedx-json",
- want: "cyclonedx",
- },
- {
- name: "spdx-tag-value",
- want: "spdx",
- },
- {
- name: "spdx-tv",
- want: "spdx",
- },
- {
- name: "spdx-json",
- want: "spdxjson",
- },
- {
- name: "json",
- want: "spdxjson",
- },
- {
- name: "syft-json",
- want: "custom",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equalf(t, tt.want, predicateType(tt.name), "predicateType(%v)", tt.name)
- })
- }
-}
-
-func Test_buildSBOMForAttestation(t *testing.T) {
- // note: this test is only meant to test that the filter function is wired
- // and not the correctness of the function in depth
- type args struct {
- id clio.Identification
- opts *options.Catalog
- userInput string
- }
- tests := []struct {
- name string
- args args
- want *sbom.SBOM
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "do not allow directory scans",
- args: args{
- opts: func() *options.Catalog {
- def := defaultAttestOptions()
- return &def.Catalog
- }(),
- userInput: "dir:/tmp/something",
- },
- wantErr: require.Error,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
- _, err := generateSBOMForAttestation(context.Background(), tt.args.id, tt.args.opts, tt.args.userInput)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
- })
- }
-}
-
-func Test_attestCLIWiring(t *testing.T) {
- id := clio.Identification{
- Name: "syft",
- Version: "testing",
- }
- cfg := internal.AppClioSetupConfig(id, io.Discard)
- tests := []struct {
- name string
- assertionFunc func(*testing.T, *cobra.Command, []string, ...any)
- wantOpts attestOptions
- args []string
- env map[string]string
- }{
- {
- name: "key flag is accepted",
- args: []string{"some-image:some-tag", "--key", "some-cosign-key.key"},
- assertionFunc: hasAttestOpts(options.Attest{Key: "some-cosign-key.key"}),
- },
- {
- name: "key password is read from env",
- args: []string{"some-image:some-tag", "--key", "cosign.key"},
- env: map[string]string{
- "SYFT_ATTEST_PASSWORD": "some-password",
- },
- assertionFunc: hasAttestOpts(options.Attest{
- Key: "cosign.key",
- Password: "some-password",
- }),
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.env != nil {
- for k, v := range tt.env {
- t.Setenv(k, v)
- }
- }
- app := cliotestutils.NewApplication(t, cfg, tt.assertionFunc)
- cmd := Attest(app)
- cmd.SetArgs(tt.args)
- err := cmd.Execute()
- assert.NoError(t, err)
- })
- }
-}
-
-func hasAttestOpts(wantOpts options.Attest) cliotestutils.AssertionFunc {
- return func(t *testing.T, _ *cobra.Command, _ []string, cfgs ...any) {
- assert.Equal(t, len(cfgs), 1)
- attestOpts, ok := cfgs[0].(*attestOptions)
- require.True(t, ok)
- if d := cmp.Diff(wantOpts, attestOpts.Attest); d != "" {
- t.Errorf("mismatched attest options (-want +got):\n%s", d)
- }
- }
-}
diff --git a/cmd/syft/internal/commands/cataloger_list_test.go b/cmd/syft/internal/commands/cataloger_list_test.go
deleted file mode 100644
index 24d8ab1f2..000000000
--- a/cmd/syft/internal/commands/cataloger_list_test.go
+++ /dev/null
@@ -1,201 +0,0 @@
-package commands
-
-import (
- "context"
- "strings"
- "testing"
-
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/internal/task"
- "github.com/anchore/syft/syft/file"
-)
-
-var _ interface {
- task.Task
- task.Selector
-} = (*dummyTask)(nil)
-
-type dummyTask struct {
- name string
- selectors []string
-}
-
-func (d dummyTask) HasAllSelectors(s ...string) bool {
- return strset.New(d.selectors...).Has(s...)
-}
-
-func (d dummyTask) Selectors() []string {
- return d.selectors
-}
-
-func (d dummyTask) Name() string {
- return d.name
-}
-
-func (d dummyTask) Execute(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {
- panic("implement me")
-}
-
-func testTasks() []task.Task {
- return []task.Task{
- dummyTask{
- name: "task1",
- selectors: []string{"image", "a", "b", "1"},
- },
- dummyTask{
- name: "task2",
- selectors: []string{"image", "b", "c", "2"},
- },
- dummyTask{
- name: "task3",
- selectors: []string{"directory", "c", "d", "3"},
- },
- dummyTask{
- name: "task4",
- selectors: []string{"directory", "d", "e", "4"},
- },
- }
-}
-
-func Test_catalogerListReport(t *testing.T) {
- tests := []struct {
- name string
- options *catalogerListOptions
- want string
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "no expressions, table",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "table"
- return c
- }(),
- want: `
-Default selections:
- - "all"
-āāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā
-ā CATALOGER ā TAGS ā
-āāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā¤
-ā task1 ā 1, a, b, image ā
-ā task2 ā 2, b, c, image ā
-ā task3 ā 3, c, d, directory ā
-ā task4 ā 4, d, directory, e ā
-āāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāā
-`,
- },
- {
- name: "no expressions, json",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "json"
- return c
- }(),
- want: `
-{"default":["all"],"selection":[],"catalogers":[{"name":"task1","tags":["1","a","b","image"]},{"name":"task2","tags":["2","b","c","image"]},{"name":"task3","tags":["3","c","d","directory"]},{"name":"task4","tags":["4","d","directory","e"]}]}
-`,
- },
- {
- name: "no expressions, default selection, table",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "table"
- c.DefaultCatalogers = []string{
- "image",
- }
- return c
- }(),
- want: `
-Default selections:
- - "image"
-āāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāā
-ā CATALOGER ā TAGS ā
-āāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāā¤
-ā task1 ā 1, a, b, image ā
-ā task2 ā 2, b, c, image ā
-āāāāāāāāāāāāā“āāāāāāāāāāāāāāāāā
-`,
- },
- {
- name: "no expressions, default selection, json",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "json"
- c.DefaultCatalogers = []string{
- "image",
- }
- return c
- }(),
- want: `
-{"default":["image"],"selection":[],"catalogers":[{"name":"task1","tags":["image"]},{"name":"task2","tags":["image"]}]}
-`,
- },
- {
- name: "with expressions, default selection, table",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "table"
- c.DefaultCatalogers = []string{
- "image",
- }
- c.SelectCatalogers = []string{
- "-directory",
- "+task3",
- "-c",
- "b",
- }
- return c
- }(),
- want: `
-Default selections:
- - "image"
-Selected by expressions:
- - "-directory"
- - "+task3"
- - "-c"
- - "b"
-āāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā
-ā CATALOGER ā TAGS ā
-āāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā¤
-ā task1 ā 1, a, b, image ā
-ā task3 ā 3, c, d, directory ā
-āāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāā
-`,
- },
- {
- name: "with expressions, default selection, json",
- options: func() *catalogerListOptions {
- c := defaultCatalogerListOptions()
- c.Output = "json"
- c.DefaultCatalogers = []string{
- "image",
- }
- c.SelectCatalogers = []string{
- "-directory",
- "+task3",
- "-c",
- "b",
- }
- return c
- }(),
- want: `
-{"default":["image"],"selection":["-directory","+task3","-c","b"],"catalogers":[{"name":"task1","tags":["b","image"]},{"name":"task3","tags":["task3"]}]}
-`,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- got, err := catalogerListReport(tt.options, testTasks())
- tt.wantErr(t, err)
- assert.Equal(t, strings.TrimSpace(tt.want), strings.TrimSpace(got))
- })
- }
-}
diff --git a/cmd/syft/internal/commands/commands_test.go b/cmd/syft/internal/commands/commands_test.go
deleted file mode 100644
index 4ffc937d8..000000000
--- a/cmd/syft/internal/commands/commands_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package commands
-
-import (
- "os"
- "testing"
-
- gologgerredact "github.com/anchore/go-logger/adapter/redact"
- "github.com/anchore/syft/internal/redact"
-)
-
-func TestMain(m *testing.M) {
- // Initialize global state needed to test clio/cobra commands directly
- // Should be kept minimal.
-
- // Initialize redact store once for all tests in the commands package
- // Redact store must be wired up here because syft will panic unless
- // a redact store is wired up exactly once
- redact.Set(gologgerredact.NewStore())
- os.Exit(m.Run())
-}
diff --git a/cmd/syft/internal/commands/convert.go b/cmd/syft/internal/commands/convert.go
index 2a1e67256..510027ce7 100644
--- a/cmd/syft/internal/commands/convert.go
+++ b/cmd/syft/internal/commands/convert.go
@@ -28,7 +28,6 @@ type ConvertOptions struct {
options.UpdateCheck `yaml:",inline" mapstructure:",squash"`
}
-//nolint:dupl
func Convert(app clio.Application) *cobra.Command {
id := app.ID()
diff --git a/cmd/syft/internal/commands/packages_test.go b/cmd/syft/internal/commands/packages_test.go
deleted file mode 100644
index 35d5241a2..000000000
--- a/cmd/syft/internal/commands/packages_test.go
+++ /dev/null
@@ -1,300 +0,0 @@
-package commands
-
-import (
- "errors"
- "fmt"
- "testing"
-
- "github.com/hashicorp/go-multierror"
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/internal/task"
-)
-
-func Test_filterExpressionErrors_expressionErrorsHelp(t *testing.T) {
- tests := []struct {
- name string
- err error
- wantExpErrs []task.ErrInvalidExpression
- wantErr assert.ErrorAssertionFunc
- wantHelp string
- }{
- {
- name: "no errors",
- err: nil,
- wantExpErrs: nil,
- wantErr: assert.NoError,
- wantHelp: "",
- },
- {
- name: "single non-expression error is retained",
- err: errors.New("foo"),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- return assert.Equal(t, "foo", err.Error())
- },
- wantHelp: "",
- },
- {
- name: "multiple non-expression sibling errors are retained",
- err: func() error {
- var err error
- err = multierror.Append(err, errors.New("foo"))
- err = multierror.Append(err, errors.New("bar"))
- return err
- }(),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- // note: this is the default formatting from the hashicorp multierror object
- expected := `2 errors occurred:
- * foo
- * bar
-
-`
- return assert.Equal(t, expected, err.Error())
- },
- wantHelp: "",
- },
- {
- name: "has multiple expression errors (with sibling errors)",
- err: func() error {
- var err error
- err = multierror.Append(err, errors.New("foo"))
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})
- err = multierror.Append(err, errors.New("bar"))
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})
- err = multierror.Append(err, errors.New("last"))
- return err
- }(),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- expected := `5 errors occurred:
- * foo
- * invalid expression: "foo": tags are not allowed with this operation (must use exact names)
- * bar
- * invalid expression: "bar": names are not allowed with this operation (must use tags)
- * last
-
-`
- return assert.Equal(t, expected, err.Error())
- },
- wantExpErrs: []task.ErrInvalidExpression{
- {Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},
- {Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},
- },
- wantHelp: `Suggestions:
-
- ā Given expression "--select-catalogers foo"
- However, tags are not allowed with this operation (must use exact names).
- Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).
- If you are certain this is what you want to do, use "--override-default-catalogers foo" instead.
-
- ā Given expression "--select-catalogers bar"
- However, names are not allowed with this operation (must use tags).
- It seems like you are intending to add a cataloger in addition to the default set.
- ... Did you mean "--select-catalogers +bar" instead?
-`,
- },
- {
- name: "has multiple expression errors (with error chains and sibling errors)",
- err: func() error {
- var err error
- err = multierror.Append(err, fmt.Errorf("foo: %w", fmt.Errorf("bar: %w", errors.New("last"))))
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})
- err = multierror.Append(err, errors.New("bottom"))
-
- return fmt.Errorf("top: %w", fmt.Errorf("middle: %w", err))
- }(),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- expected := `top: middle: 4 errors occurred:
- * foo: bar: last
- * invalid expression: "foo": tags are not allowed with this operation (must use exact names)
- * invalid expression: "bar": names are not allowed with this operation (must use tags)
- * bottom
-
-`
- return assert.Equal(t, expected, err.Error())
- },
- wantExpErrs: []task.ErrInvalidExpression{
- {Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},
- {Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},
- },
- wantHelp: `Suggestions:
-
- ā Given expression "--select-catalogers foo"
- However, tags are not allowed with this operation (must use exact names).
- Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).
- If you are certain this is what you want to do, use "--override-default-catalogers foo" instead.
-
- ā Given expression "--select-catalogers bar"
- However, names are not allowed with this operation (must use tags).
- It seems like you are intending to add a cataloger in addition to the default set.
- ... Did you mean "--select-catalogers +bar" instead?
-`,
- },
- {
- name: "has multiple expression errors (with error chains and sibling errors)",
- err: func() error {
- var err error
- err = multierror.Append(err, fmt.Errorf("foo: %w", fmt.Errorf("bar: %w", errors.New("last"))))
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed})
- err = multierror.Append(err, errors.New("bottom"))
-
- // note we wrap the top error in a chain
- return fmt.Errorf("top: %w", fmt.Errorf("middle: %w", err))
- }(),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- expected := `top: middle: 4 errors occurred:
- * foo: bar: last
- * invalid expression: "foo": tags are not allowed with this operation (must use exact names)
- * invalid expression: "bar": names are not allowed with this operation (must use tags)
- * bottom
-
-`
- return assert.Equal(t, expected, err.Error())
- },
- wantExpErrs: []task.ErrInvalidExpression{
- {Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},
- {Expression: "bar", Operation: task.SubSelectOperation, Err: task.ErrNamesNotAllowed},
- },
- wantHelp: `Suggestions:
-
- ā Given expression "--select-catalogers foo"
- However, tags are not allowed with this operation (must use exact names).
- Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).
- If you are certain this is what you want to do, use "--override-default-catalogers foo" instead.
-
- ā Given expression "--select-catalogers bar"
- However, names are not allowed with this operation (must use tags).
- It seems like you are intending to add a cataloger in addition to the default set.
- ... Did you mean "--select-catalogers +bar" instead?
-`,
- },
- {
- name: "preserve for any errors within ErrInvalidExpression types",
- err: func() error {
- var err error
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed})
- err = multierror.Append(err, task.ErrInvalidExpression{Expression: "bar", Operation: task.SubSelectOperation, Err: errors.New("explanation")}) // this is what makes this test different...
-
- return err
- }(),
- wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- // note: the errors are removed and the help text shows the enriched error help
- expected := `2 errors occurred:
- * invalid expression: "foo": tags are not allowed with this operation (must use exact names)
- * invalid expression: "bar": explanation
-
-`
- return assert.Equal(t, expected, err.Error())
- },
- wantExpErrs: []task.ErrInvalidExpression{
- {Expression: "foo", Operation: task.AddOperation, Err: task.ErrTagsNotAllowed},
- {Expression: "bar", Operation: task.SubSelectOperation, Err: errors.New("explanation")},
- },
- wantHelp: `Suggestions:
-
- ā Given expression "--select-catalogers foo"
- However, tags are not allowed with this operation (must use exact names).
- Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).
- If you are certain this is what you want to do, use "--override-default-catalogers foo" instead.
-
-`,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- gotExpErrs := filterExpressionErrors(tt.err)
- tt.wantErr(t, tt.err) // ensure the error still remains
- assert.Equal(t, tt.wantExpErrs, gotExpErrs)
-
- gotHelp := expressionErrorsHelp(gotExpErrs)
- assert.Equal(t, tt.wantHelp, gotHelp)
- })
- }
-}
-
-func Test_expressionSuggestions(t *testing.T) {
- tests := []struct {
- name string
- expErr task.ErrInvalidExpression
- want string
- }{
- {
- name: "no embedded error",
- expErr: task.ErrInvalidExpression{
- Expression: "example",
- },
- want: ``,
- },
- {
- name: "general error",
- expErr: task.ErrInvalidExpression{
- Err: errors.New("general error message"),
- Expression: "example",
- },
- want: ``,
- },
- {
- name: "ErrUnknownNameOrTag with add operation",
- expErr: task.ErrInvalidExpression{
- Err: task.ErrUnknownNameOrTag,
- Operation: task.AddOperation,
- Expression: "+example",
- },
- want: ``,
- },
- {
- name: "ErrUnknownNameOrTag with subselect operation",
- expErr: task.ErrInvalidExpression{
- Err: task.ErrUnknownNameOrTag,
- Operation: task.SubSelectOperation,
- Expression: "example",
- },
- want: ``,
- },
- {
- name: "ErrNamesNotAllowed with subselect operator",
- expErr: task.ErrInvalidExpression{
- Err: task.ErrNamesNotAllowed,
- Operation: task.SubSelectOperation,
- Expression: "example",
- },
- want: ` ā Given expression "--select-catalogers example"
- However, names are not allowed with this operation (must use tags).
- It seems like you are intending to add a cataloger in addition to the default set.
- ... Did you mean "--select-catalogers +example" instead?
-`,
- },
- {
- name: "ErrTagsNotAllowed with add operation",
- expErr: task.ErrInvalidExpression{
- Err: task.ErrTagsNotAllowed,
- Operation: task.AddOperation,
- Expression: "+example",
- },
- want: ` ā Given expression "--select-catalogers +example"
- However, tags are not allowed with this operation (must use exact names).
- Adding groups of catalogers may result in surprising behavior (create inaccurate SBOMs).
- If you are certain this is what you want to do, use "--override-default-catalogers example" instead.
-`,
- },
- {
- name: "ErrAllNotAllowed with subselect operation",
- expErr: task.ErrInvalidExpression{
- Err: task.ErrAllNotAllowed,
- Operation: task.SubSelectOperation,
- Expression: "example",
- },
- want: ` ā Given expression "--select-catalogers example"
- However, you cannot use the 'all' operand in this context.
- It seems like you are intending to use all catalogers (which is not recommended).
- ... Did you mean "--override-default-catalogers example" instead?
-`,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, expressionSuggetions(tt.expErr))
- })
- }
-}
diff --git a/cmd/syft/internal/commands/scan.go b/cmd/syft/internal/commands/scan.go
index 31f3277ef..48fcc8c1e 100644
--- a/cmd/syft/internal/commands/scan.go
+++ b/cmd/syft/internal/commands/scan.go
@@ -68,6 +68,7 @@ type scanOptions struct {
options.Output `yaml:",inline" mapstructure:",squash"`
options.UpdateCheck `yaml:",inline" mapstructure:",squash"`
options.Catalog `yaml:",inline" mapstructure:",squash"`
+ Cache options.Cache `json:"-" yaml:"cache" mapstructure:"cache"`
}
func defaultScanOptions() *scanOptions {
@@ -75,10 +76,10 @@ func defaultScanOptions() *scanOptions {
Output: options.DefaultOutput(),
UpdateCheck: options.DefaultUpdateCheck(),
Catalog: options.DefaultCatalog(),
+ Cache: options.DefaultCache(),
}
}
-//nolint:dupl
func Scan(app clio.Application) *cobra.Command {
id := app.ID()
@@ -159,7 +160,7 @@ func validateArgs(cmd *cobra.Command, args []string, error string) error {
if err := cmd.Help(); err != nil {
return fmt.Errorf("unable to display help: %w", err)
}
- return fmt.Errorf(error)
+ return fmt.Errorf("%v", error)
}
return cobra.MaximumNArgs(1)(cmd, args)
@@ -394,13 +395,13 @@ func getExplanation(expErr task.ErrInvalidExpression) string {
if errors.Is(err, task.ErrNamesNotAllowed) {
if expErr.Operation == task.SubSelectOperation {
- return "However, " + err.Error() + ".\nIt seems like you are intending to add a cataloger in addition to the default set." // nolint:goconst
+ return "However, " + err.Error() + ".\nIt seems like you are intending to add a cataloger in addition to the default set."
}
- return "However, " + err.Error() + "." // nolint:goconst
+ return "However, " + err.Error() + "."
}
if errors.Is(err, task.ErrTagsNotAllowed) {
- return "However, " + err.Error() + ".\nAdding groups of catalogers may result in surprising behavior (create inaccurate SBOMs)." // nolint:goconst
+ return "However, " + err.Error() + ".\nAdding groups of catalogers may result in surprising behavior (create inaccurate SBOMs)."
}
if errors.Is(err, task.ErrAllNotAllowed) {
diff --git a/cmd/syft/internal/commands/scan_test.go b/cmd/syft/internal/commands/scan_test.go
deleted file mode 100644
index 63f22543f..000000000
--- a/cmd/syft/internal/commands/scan_test.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package commands
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/cmd/syft/internal/options"
-)
-
-func Test_scanOptions_validateLegacyOptionsNotUsed(t *testing.T) {
- tests := []struct {
- name string
- cfg string
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "no config file",
- },
- {
- name: "config file with no legacy options",
- cfg: "test-fixtures/scan-configs/no-legacy-options.yaml",
- },
- {
- name: "config file with default image pull source legacy option",
- cfg: "test-fixtures/scan-configs/with-default-pull-source.yaml",
- wantErr: assertErrorContains("source.image.default-pull-source"),
- },
- {
- name: "config file with exclude-binary-overlap-by-ownership legacy option",
- cfg: "test-fixtures/scan-configs/with-exclude-binary-overlap-by-ownership.yaml",
- wantErr: assertErrorContains("package.exclude-binary-overlap-by-ownership"),
- },
- {
- name: "config file with file string legacy option",
- cfg: "test-fixtures/scan-configs/with-file-string.yaml",
- wantErr: assertErrorContains("outputs"),
- },
- {
- name: "config file with file section",
- cfg: "test-fixtures/scan-configs/with-file-section.yaml",
- },
- {
- name: "config file with base-path legacy option",
- cfg: "test-fixtures/scan-configs/with-base-path.yaml",
- wantErr: assertErrorContains("source.base-path"),
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
- o := &scanOptions{
- Config: options.Config{ConfigFile: tt.cfg},
- }
- tt.wantErr(t, o.validateLegacyOptionsNotUsed())
- })
- }
-}
-
-func assertErrorContains(contains string) assert.ErrorAssertionFunc {
- return func(t assert.TestingT, err error, i ...interface{}) bool {
- return assert.ErrorContains(t, err, contains, i...)
- }
-}
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/no-legacy-options.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/no-legacy-options.yaml
deleted file mode 100644
index 51af565a2..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/no-legacy-options.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-# simple, valid syft config with no legacy fields used
-parallelism: 5
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-base-path.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/with-base-path.yaml
deleted file mode 100644
index 5dc5db6bc..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-base-path.yaml
+++ /dev/null
@@ -1 +0,0 @@
-base-path: "something"
\ No newline at end of file
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-default-pull-source.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/with-default-pull-source.yaml
deleted file mode 100644
index 8a9e83634..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-default-pull-source.yaml
+++ /dev/null
@@ -1 +0,0 @@
-default-image-pull-source: "something"
\ No newline at end of file
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-exclude-binary-overlap-by-ownership.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/with-exclude-binary-overlap-by-ownership.yaml
deleted file mode 100644
index e0864a878..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-exclude-binary-overlap-by-ownership.yaml
+++ /dev/null
@@ -1 +0,0 @@
-exclude-binary-overlap-by-ownership: true
\ No newline at end of file
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-section.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-section.yaml
deleted file mode 100644
index 603e3aeca..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-section.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-file:
- selection: all
\ No newline at end of file
diff --git a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-string.yaml b/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-string.yaml
deleted file mode 100644
index 804eed613..000000000
--- a/cmd/syft/internal/commands/test-fixtures/scan-configs/with-file-string.yaml
+++ /dev/null
@@ -1 +0,0 @@
-file: path
\ No newline at end of file
diff --git a/cmd/syft/internal/commands/update_test.go b/cmd/syft/internal/commands/update_test.go
deleted file mode 100644
index bc04a7465..000000000
--- a/cmd/syft/internal/commands/update_test.go
+++ /dev/null
@@ -1,244 +0,0 @@
-package commands
-
-import (
- "net/http"
- "net/http/httptest"
- "testing"
-
- "github.com/anchore/clio"
- hashiVersion "github.com/anchore/go-version"
- "github.com/anchore/syft/cmd/syft/internal"
-)
-
-func TestIsUpdateAvailable(t *testing.T) {
- tests := []struct {
- name string
- buildVersion string
- latestVersion string
- code int
- isAvailable bool
- newVersion string
- err bool
- }{
- {
- name: "equal",
- buildVersion: "1.0.0",
- latestVersion: "1.0.0",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: false,
- },
- {
- name: "hasUpdate",
- buildVersion: "1.0.0",
- latestVersion: "1.2.0",
- code: 200,
- isAvailable: true,
- newVersion: "1.2.0",
- err: false,
- },
- {
- name: "aheadOfLatest",
- buildVersion: "1.2.0",
- latestVersion: "1.0.0",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: false,
- },
- {
- name: "EmptyUpdate",
- buildVersion: "1.0.0",
- latestVersion: "",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: true,
- },
- {
- name: "GarbageUpdate",
- buildVersion: "1.0.0",
- latestVersion: "hdfjksdhfhkj",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: true,
- },
- {
- name: "BadUpdate",
- buildVersion: "1.0.0",
- latestVersion: "1.0.",
- code: 500,
- isAvailable: false,
- newVersion: "",
- err: true,
- },
- {
- name: "NoBuildVersion",
- buildVersion: internal.NotProvided,
- latestVersion: "1.0.0",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: false,
- },
- {
- name: "SnapshotBuildVersion",
- buildVersion: "2.0.0-SHAPSHOT-a78bf9c",
- latestVersion: "1.0.0",
- code: 200,
- isAvailable: false,
- newVersion: "",
- err: false,
- },
- {
- name: "BadUpdateValidVersion",
- buildVersion: "1.0.0",
- latestVersion: "2.0.0",
- code: 404,
- isAvailable: false,
- newVersion: "",
- err: true,
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // setup mocks
- // local...
- id := clio.Identification{Name: "Syft", Version: test.buildVersion}
- // remote...
- handler := http.NewServeMux()
- handler.HandleFunc(latestAppVersionURL.path, func(w http.ResponseWriter, r *http.Request) {
- w.WriteHeader(test.code)
- _, _ = w.Write([]byte(test.latestVersion))
- })
- mockSrv := httptest.NewServer(handler)
- latestAppVersionURL.host = mockSrv.URL
- defer mockSrv.Close()
-
- isAvailable, newVersion, err := isUpdateAvailable(id)
- if err != nil && !test.err {
- t.Fatalf("got error but expected none: %+v", err)
- } else if err == nil && test.err {
- t.Fatalf("expected error but got none")
- }
-
- if newVersion != test.newVersion {
- t.Errorf("unexpected NEW version: %+v", newVersion)
- }
-
- if isAvailable != test.isAvailable {
- t.Errorf("unexpected result: %+v", isAvailable)
- }
- })
- }
-
-}
-
-func TestFetchLatestApplicationVersion(t *testing.T) {
- tests := []struct {
- name string
- response string
- code int
- err bool
- id clio.Identification
- expected *hashiVersion.Version
- expectedHeaders map[string]string
- }{
- {
- name: "gocase",
- response: "1.0.0",
- code: 200,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: hashiVersion.Must(hashiVersion.NewVersion("1.0.0")),
- expectedHeaders: map[string]string{"User-Agent": "Syft 0.0.0"},
- err: false,
- },
- {
- name: "garbage",
- response: "garbage",
- code: 200,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: nil,
- expectedHeaders: nil,
- err: true,
- },
- {
- name: "http 500",
- response: "1.0.0",
- code: 500,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: nil,
- expectedHeaders: nil,
- err: true,
- },
- {
- name: "http 404",
- response: "1.0.0",
- code: 404,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: nil,
- expectedHeaders: nil,
- err: true,
- },
- {
- name: "empty",
- response: "",
- code: 200,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: nil,
- expectedHeaders: nil,
- err: true,
- },
- {
- name: "too long",
- response: "this is really long this is really long this is really long this is really long this is really long this is really long this is really long this is really long ",
- code: 200,
- id: clio.Identification{Name: "Syft", Version: "0.0.0"},
- expected: nil,
- expectedHeaders: nil,
- err: true,
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // setup mock
- handler := http.NewServeMux()
- handler.HandleFunc(latestAppVersionURL.path, func(w http.ResponseWriter, r *http.Request) {
- if test.expectedHeaders != nil {
- for headerName, headerValue := range test.expectedHeaders {
- actualHeader := r.Header.Get(headerName)
- if actualHeader != headerValue {
- t.Fatalf("expected header %v=%v but got %v", headerName, headerValue, actualHeader)
- }
- }
- }
-
- w.WriteHeader(test.code)
- _, _ = w.Write([]byte(test.response))
- })
- mockSrv := httptest.NewServer(handler)
- latestAppVersionURL.host = mockSrv.URL
- defer mockSrv.Close()
-
- actual, err := fetchLatestApplicationVersion(test.id)
- if err != nil && !test.err {
- t.Fatalf("got error but expected none: %+v", err)
- } else if err == nil && test.err {
- t.Fatalf("expected error but got none")
- }
-
- if err != nil {
- return
- }
-
- if actual.String() != test.expected.String() {
- t.Errorf("unexpected version: %+v", actual.String())
- }
- })
- }
-
-}
diff --git a/cmd/syft/internal/options/cache.go b/cmd/syft/internal/options/cache.go
new file mode 100644
index 000000000..a8ee1c55f
--- /dev/null
+++ b/cmd/syft/internal/options/cache.go
@@ -0,0 +1,131 @@
+package options
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+ "regexp"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/adrg/xdg"
+ "github.com/mitchellh/go-homedir"
+
+ "github.com/anchore/clio"
+ "github.com/anchore/syft/internal/cache"
+ "github.com/anchore/syft/internal/log"
+)
+
+// Cache provides configuration for the Syft caching behavior
+type Cache struct {
+ Dir string `yaml:"dir" mapstructure:"dir"`
+ TTL string `yaml:"ttl" mapstructure:"ttl"`
+}
+
+func (c *Cache) DescribeFields(descriptions clio.FieldDescriptionSet) {
+ descriptions.Add(&c.Dir, "root directory to cache any downloaded content; empty string will use an in-memory cache")
+ descriptions.Add(&c.TTL, "time to live for cached data; setting this to 0 will disable caching entirely")
+}
+
+func (c *Cache) PostLoad() error {
+ ttl, err := parseDuration(c.TTL)
+ if err != nil {
+ log.Warnf("unable to parse duration '%v', using default (%s) due to: %v", c.TTL, durationToString(defaultTTL()), err)
+ ttl = defaultTTL()
+ }
+ // if TTL is <= 0, disable caching entirely
+ if ttl <= 0 {
+ cache.SetManager(nil)
+ return nil
+ }
+ // if dir == "" but we have a TTL, use an in-memory cache
+ if c.Dir == "" {
+ cache.SetManager(cache.NewInMemory(ttl))
+ return nil
+ }
+ dir, err := homedir.Expand(c.Dir)
+ if err != nil {
+ log.Warnf("unable to expand cache directory %s: %v", c.Dir, err)
+ cache.SetManager(cache.NewInMemory(ttl))
+ } else {
+ m, err := cache.NewFromDir(dir, ttl)
+ if err != nil {
+ log.Warnf("unable to get filesystem cache at %s: %v", c.Dir, err)
+ cache.SetManager(cache.NewInMemory(ttl))
+ } else {
+ cache.SetManager(m)
+ }
+ }
+ return nil
+}
+
+var _ interface {
+ clio.PostLoader
+ clio.FieldDescriber
+} = (*Cache)(nil)
+
+func DefaultCache() Cache {
+ return Cache{
+ Dir: defaultDir(),
+ TTL: durationToString(defaultTTL()),
+ }
+}
+
+func defaultTTL() time.Duration {
+ return 7 * 24 * time.Hour
+}
+
+func defaultDir() string {
+ var err error
+ cacheRoot := xdg.CacheHome
+ if cacheRoot == "" {
+ cacheRoot, err = homedir.Dir()
+ if err != nil {
+ cacheRoot = os.TempDir()
+ log.Debugf("unable to get stable cache directory due to: %v, defaulting cache to temp dir: %s", err, cacheRoot)
+ } else {
+ cacheRoot = filepath.Join(cacheRoot, ".cache")
+ }
+ }
+
+ return filepath.Join(cacheRoot, "syft")
+}
+
+func durationToString(duration time.Duration) string {
+ days := int64(duration / (24 * time.Hour))
+ remain := duration % (24 * time.Hour)
+ out := ""
+ if days > 0 {
+ out = fmt.Sprintf("%vd", days)
+ }
+ if remain != 0 {
+ out += remain.String()
+ }
+ if out == "" {
+ return "0"
+ }
+ return out
+}
+
+func parseDuration(duration string) (time.Duration, error) {
+ whitespace := regexp.MustCompile(`\s+`)
+ duration = strings.ToLower(whitespace.ReplaceAllString(duration, ""))
+ parts := strings.SplitN(duration, "d", 2)
+ var days time.Duration
+ var remain time.Duration
+ var err error
+ if len(parts) > 1 {
+ numDays, daysErr := strconv.Atoi(parts[0])
+ if daysErr != nil {
+ return 0, daysErr
+ }
+ days = time.Duration(numDays) * 24 * time.Hour
+ if len(parts[1]) > 0 {
+ remain, err = time.ParseDuration(parts[1])
+ }
+ } else {
+ remain, err = time.ParseDuration(duration)
+ }
+ return days + remain, err
+}
diff --git a/cmd/syft/internal/options/catalog.go b/cmd/syft/internal/options/catalog.go
index 290a1d28e..c7e0e4f6d 100644
--- a/cmd/syft/internal/options/catalog.go
+++ b/cmd/syft/internal/options/catalog.go
@@ -11,6 +11,7 @@ import (
"github.com/anchore/fangs"
intFile "github.com/anchore/syft/internal/file"
"github.com/anchore/syft/internal/log"
+ "github.com/anchore/syft/internal/task"
"github.com/anchore/syft/syft"
"github.com/anchore/syft/syft/cataloging"
"github.com/anchore/syft/syft/cataloging/filecataloging"
@@ -36,6 +37,8 @@ type Catalog struct {
Scope string `yaml:"scope" json:"scope" mapstructure:"scope"`
Parallelism int `yaml:"parallelism" json:"parallelism" mapstructure:"parallelism"` // the number of catalog workers to run in parallel
Relationships relationshipsConfig `yaml:"relationships" json:"relationships" mapstructure:"relationships"`
+ Compliance complianceConfig `yaml:"compliance" json:"compliance" mapstructure:"compliance"`
+ Enrich []string `yaml:"enrich" json:"enrich" mapstructure:"enrich"`
// ecosystem-specific cataloger configuration
Golang golangConfig `yaml:"golang" json:"golang" mapstructure:"golang"`
@@ -50,22 +53,28 @@ type Catalog struct {
Platform string `yaml:"platform" json:"platform" mapstructure:"platform"`
Source sourceConfig `yaml:"source" json:"source" mapstructure:"source"`
Exclusions []string `yaml:"exclude" json:"exclude" mapstructure:"exclude"`
+
+ // configuration for inclusion of unknown information within elements
+ Unknowns unknownsConfig `yaml:"unknowns" mapstructure:"unknowns"`
}
var _ interface {
clio.FlagAdder
clio.PostLoader
- fangs.FieldDescriber
+ clio.FieldDescriber
} = (*Catalog)(nil)
func DefaultCatalog() Catalog {
return Catalog{
+ Compliance: defaultComplianceConfig(),
Scope: source.SquashedScope.String(),
Package: defaultPackageConfig(),
LinuxKernel: defaultLinuxKernelConfig(),
Golang: defaultGolangConfig(),
+ Java: defaultJavaConfig(),
File: defaultFileConfig(),
Relationships: defaultRelationshipsConfig(),
+ Unknowns: defaultUnknowns(),
Source: defaultSourceConfig(),
Parallelism: 1,
}
@@ -76,6 +85,8 @@ func (cfg Catalog) ToSBOMConfig(id clio.Identification) *syft.CreateSBOMConfig {
WithTool(id.Name, id.Version).
WithParallelism(cfg.Parallelism).
WithRelationshipsConfig(cfg.ToRelationshipsConfig()).
+ WithComplianceConfig(cfg.ToComplianceConfig()).
+ WithUnknownsConfig(cfg.ToUnknownsConfig()).
WithSearchConfig(cfg.ToSearchConfig()).
WithPackagesConfig(cfg.ToPackagesConfig()).
WithFilesConfig(cfg.ToFilesConfig()).
@@ -101,6 +112,20 @@ func (cfg Catalog) ToRelationshipsConfig() cataloging.RelationshipsConfig {
}
}
+func (cfg Catalog) ToComplianceConfig() cataloging.ComplianceConfig {
+ return cataloging.ComplianceConfig{
+ MissingName: cfg.Compliance.MissingName,
+ MissingVersion: cfg.Compliance.MissingVersion,
+ }
+}
+
+func (cfg Catalog) ToUnknownsConfig() cataloging.UnknownsConfig {
+ return cataloging.UnknownsConfig{
+ IncludeExecutablesWithoutPackages: cfg.Unknowns.ExecutablesWithoutPackages,
+ IncludeUnexpandedArchives: cfg.Unknowns.UnexpandedArchives,
+ }
+}
+
func (cfg Catalog) ToFilesConfig() filecataloging.Config {
hashers, err := intFile.Hashers(cfg.File.Metadata.Digests...)
if err != nil {
@@ -129,9 +154,9 @@ func (cfg Catalog) ToPackagesConfig() pkgcataloging.Config {
return pkgcataloging.Config{
Binary: binary.DefaultClassifierCatalogerConfig(),
Golang: golang.DefaultCatalogerConfig().
- WithSearchLocalModCacheLicenses(cfg.Golang.SearchLocalModCacheLicenses).
+ WithSearchLocalModCacheLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.SearchLocalModCacheLicenses)).
WithLocalModCacheDir(cfg.Golang.LocalModCacheDir).
- WithSearchRemoteLicenses(cfg.Golang.SearchRemoteLicenses).
+ WithSearchRemoteLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Go, task.Golang), cfg.Golang.SearchRemoteLicenses)).
WithProxy(cfg.Golang.Proxy).
WithNoProxy(cfg.Golang.NoProxy).
WithMainModuleVersion(
@@ -141,7 +166,7 @@ func (cfg Catalog) ToPackagesConfig() pkgcataloging.Config {
WithFromLDFlags(cfg.Golang.MainModuleVersion.FromLDFlags),
),
JavaScript: javascript.DefaultCatalogerConfig().
- WithSearchRemoteLicenses(cfg.JavaScript.SearchRemoteLicenses).
+ WithSearchRemoteLicenses(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.JavaScript, task.Node, task.NPM), cfg.JavaScript.SearchRemoteLicenses)).
WithNpmBaseURL(cfg.JavaScript.NpmBaseURL),
LinuxKernel: kernel.LinuxKernelCatalogerConfig{
CatalogModules: cfg.LinuxKernel.CatalogModules,
@@ -150,7 +175,9 @@ func (cfg Catalog) ToPackagesConfig() pkgcataloging.Config {
GuessUnpinnedRequirements: cfg.Python.GuessUnpinnedRequirements,
},
JavaArchive: java.DefaultArchiveCatalogerConfig().
- WithUseNetwork(cfg.Java.UseNetwork).
+ WithUseMavenLocalRepository(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Java, task.Maven), cfg.Java.UseMavenLocalRepository)).
+ WithMavenLocalRepositoryDir(cfg.Java.MavenLocalRepositoryDir).
+ WithUseNetwork(*multiLevelOption(false, enrichmentEnabled(cfg.Enrich, task.Java, task.Maven), cfg.Java.UseNetwork)).
WithMavenBaseURL(cfg.Java.MavenURL).
WithArchiveTraversal(archiveSearch, cfg.Java.MaxParentRecursiveDepth),
}
@@ -190,6 +217,9 @@ func (cfg *Catalog) AddFlags(flags clio.FlagSet) {
flags.StringArrayVarP(&cfg.SelectCatalogers, "select-catalogers", "",
"add, remove, and filter the catalogers to be used")
+ flags.StringArrayVarP(&cfg.Enrich, "enrich", "",
+ fmt.Sprintf("enable package data enrichment from local and online sources (options: %s)", strings.Join(publicisedEnrichmentOptions, ", ")))
+
flags.StringVarP(&cfg.Source.Name, "source-name", "",
"set the name of the target being analyzed")
@@ -202,6 +232,10 @@ func (cfg *Catalog) AddFlags(flags clio.FlagSet) {
func (cfg *Catalog) DescribeFields(descriptions fangs.FieldDescriptionSet) {
descriptions.Add(&cfg.Parallelism, "number of cataloger workers to run in parallel")
+
+ descriptions.Add(&cfg.Enrich, fmt.Sprintf(`Enable data enrichment operations, which can utilize services such as Maven Central and NPM.
+By default all enrichment is disabled, use: all to enable everything.
+Available options are: %s`, strings.Join(publicisedEnrichmentOptions, ", ")))
}
func (cfg *Catalog) PostLoad() error {
@@ -212,23 +246,12 @@ func (cfg *Catalog) PostLoad() error {
return fmt.Errorf("cannot use both 'catalogers' and 'select-catalogers'/'default-catalogers' flags")
}
- flatten := func(l []string) []string {
- var out []string
- for _, v := range l {
- for _, s := range strings.Split(v, ",") {
- out = append(out, strings.TrimSpace(s))
- }
- }
- sort.Strings(out)
-
- return out
- }
-
cfg.From = flatten(cfg.From)
cfg.Catalogers = flatten(cfg.Catalogers)
cfg.DefaultCatalogers = flatten(cfg.DefaultCatalogers)
cfg.SelectCatalogers = flatten(cfg.SelectCatalogers)
+ cfg.Enrich = flatten(cfg.Enrich)
// for backwards compatibility
cfg.DefaultCatalogers = append(cfg.DefaultCatalogers, cfg.Catalogers...)
@@ -238,5 +261,75 @@ func (cfg *Catalog) PostLoad() error {
return fmt.Errorf("bad scope value %q", cfg.Scope)
}
+ // the binary package exclusion code depends on the file overlap relationships being created upstream in processing
+ if !cfg.Relationships.PackageFileOwnershipOverlap && cfg.Package.ExcludeBinaryOverlapByOwnership {
+ return fmt.Errorf("cannot enable exclude-binary-overlap-by-ownership without enabling package-file-ownership-overlap")
+ }
+
return nil
}
+
+func flatten(commaSeparatedEntries []string) []string {
+ var out []string
+ for _, v := range commaSeparatedEntries {
+ for _, s := range strings.Split(v, ",") {
+ out = append(out, strings.TrimSpace(s))
+ }
+ }
+ sort.Strings(out)
+ return out
+}
+
+var publicisedEnrichmentOptions = []string{
+ "all",
+ task.Golang,
+ task.Java,
+ task.JavaScript,
+}
+
+func enrichmentEnabled(enrichDirectives []string, features ...string) *bool {
+ if len(enrichDirectives) == 0 {
+ return nil
+ }
+
+ enabled := func(features ...string) *bool {
+ for _, directive := range enrichDirectives {
+ enable := true
+ directive = strings.TrimPrefix(directive, "+") // +java and java are equivalent
+ if strings.HasPrefix(directive, "-") {
+ directive = directive[1:]
+ enable = false
+ }
+ for _, feature := range features {
+ if directive == feature {
+ return &enable
+ }
+ }
+ }
+ return nil
+ }
+
+ enableAll := enabled("all")
+ disableAll := enabled("none")
+
+ if disableAll != nil && *disableAll {
+ if enableAll != nil {
+ log.Warn("you have specified to both enable and disable all enrichment functionality, defaulting to disabled")
+ }
+ enableAll = ptr(false)
+ }
+
+ // check for explicit enable/disable of feature names
+ for _, feat := range features {
+ enableFeature := enabled(feat)
+ if enableFeature != nil {
+ return enableFeature
+ }
+ }
+
+ return enableAll
+}
+
+func ptr[T any](val T) *T {
+ return &val
+}
diff --git a/cmd/syft/internal/options/catalog_test.go b/cmd/syft/internal/options/catalog_test.go
deleted file mode 100644
index f9a54249a..000000000
--- a/cmd/syft/internal/options/catalog_test.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package options
-
-import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestCatalog_PostLoad(t *testing.T) {
-
- tests := []struct {
- name string
- options Catalog
- assert func(t *testing.T, options Catalog)
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "mutually exclusive cataloger flags (cat / def-cat)",
- options: Catalog{
- Catalogers: []string{"foo,bar", "42"},
- DefaultCatalogers: []string{"some,thing"},
- Scope: "squashed",
- },
- wantErr: assert.Error,
- },
- {
- name: "mutually exclusive cataloger flags (cat / sel-cat)",
- options: Catalog{
- Catalogers: []string{"foo,bar", "42"},
- SelectCatalogers: []string{"some,thing"},
- Scope: "squashed",
- },
- wantErr: assert.Error,
- },
- {
- name: "allow old cataloger flags",
- options: Catalog{
- Catalogers: []string{"foo,bar"},
- Scope: "squashed",
- },
- assert: func(t *testing.T, options Catalog) {
- assert.Equal(t, []string{"bar", "foo"}, options.DefaultCatalogers) // note: sorted order
- assert.Equal(t, []string{"bar", "foo"}, options.Catalogers) // note: sorted order
- },
- },
- {
- name: "allow new cataloger flags",
- options: Catalog{
- SelectCatalogers: []string{"foo,bar", "42"},
- DefaultCatalogers: []string{"some,thing"},
- Scope: "squashed",
- },
- assert: func(t *testing.T, options Catalog) {
- assert.Equal(t, []string{"42", "bar", "foo"}, options.SelectCatalogers) // note: sorted order
- assert.Equal(t, []string{"some", "thing"}, options.DefaultCatalogers) // note: sorted order
- assert.Empty(t, options.Catalogers)
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
- tt.wantErr(t, tt.options.PostLoad(), fmt.Sprintf("PostLoad()"))
- if tt.assert != nil {
- tt.assert(t, tt.options)
- }
- })
- }
-}
diff --git a/cmd/syft/internal/options/compliance.go b/cmd/syft/internal/options/compliance.go
new file mode 100644
index 000000000..a48b21441
--- /dev/null
+++ b/cmd/syft/internal/options/compliance.go
@@ -0,0 +1,35 @@
+package options
+
+import (
+ "github.com/anchore/fangs"
+ "github.com/anchore/syft/syft/cataloging"
+)
+
+var (
+ _ fangs.FieldDescriber = (*complianceConfig)(nil)
+ _ fangs.PostLoader = (*complianceConfig)(nil)
+)
+
+type complianceConfig struct {
+ MissingName cataloging.ComplianceAction `mapstructure:"missing-name" json:"missing-name" yaml:"missing-name"`
+ MissingVersion cataloging.ComplianceAction `mapstructure:"missing-version" json:"missing-version" yaml:"missing-version"`
+}
+
+func defaultComplianceConfig() complianceConfig {
+ def := cataloging.DefaultComplianceConfig()
+ return complianceConfig{
+ MissingName: def.MissingName,
+ MissingVersion: def.MissingVersion,
+ }
+}
+
+func (r *complianceConfig) DescribeFields(descriptions fangs.FieldDescriptionSet) {
+ descriptions.Add(&r.MissingName, "action to take when a package is missing a name")
+ descriptions.Add(&r.MissingVersion, "action to take when a package is missing a version")
+}
+
+func (r *complianceConfig) PostLoad() error {
+ r.MissingName = r.MissingName.Parse()
+ r.MissingVersion = r.MissingVersion.Parse()
+ return nil
+}
diff --git a/cmd/syft/internal/options/file_test.go b/cmd/syft/internal/options/file_test.go
deleted file mode 100644
index 2e61a59e8..000000000
--- a/cmd/syft/internal/options/file_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package options
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/syft/file"
-)
-
-func Test_fileConfig_PostLoad(t *testing.T) {
- tests := []struct {
- name string
- cfg fileConfig
- assert func(t *testing.T, cfg fileConfig)
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "deduplicate digests",
- cfg: fileConfig{
- Metadata: fileMetadata{
- Selection: file.NoFilesSelection,
- Digests: []string{"sha1", "sha1"},
- },
- },
- assert: func(t *testing.T, cfg fileConfig) {
- assert.Equal(t, []string{"sha1"}, cfg.Metadata.Digests)
- },
- },
- {
- name: "error on invalid selection",
- cfg: fileConfig{
- Metadata: fileMetadata{
- Selection: file.Selection("invalid"),
- },
- },
- wantErr: assert.Error,
- },
- {
- name: "error on empty selection",
- cfg: fileConfig{},
- wantErr: assert.Error,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
- tt.wantErr(t, tt.cfg.PostLoad())
- if tt.assert != nil {
- tt.assert(t, tt.cfg)
- }
- })
- }
-}
diff --git a/cmd/syft/internal/options/format.go b/cmd/syft/internal/options/format.go
index 4ff1e9934..4540b5fee 100644
--- a/cmd/syft/internal/options/format.go
+++ b/cmd/syft/internal/options/format.go
@@ -50,7 +50,7 @@ if false, uses the syft-json output for templating (which follows the syft JSON
Note: long term support for this option is not guaranteed (it may change or break at any time)`)
- prettyDescription := `include space indention and newlines
+ prettyDescription := `include space indentation and newlines
note: inherits default value from 'format.pretty' or 'false' if parent is unset`
descriptions.Add(&o.SyftJSON.Pretty, prettyDescription)
descriptions.Add(&o.SPDXJSON.Pretty, prettyDescription)
diff --git a/cmd/syft/internal/options/format_cyclonedx_json_test.go b/cmd/syft/internal/options/format_cyclonedx_json_test.go
deleted file mode 100644
index af43574fb..000000000
--- a/cmd/syft/internal/options/format_cyclonedx_json_test.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package options
-
-import (
- "reflect"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestFormatCyclonedxJSON_buildConfig(t *testing.T) {
- // assert when building the config that we respond to all possible fields
-
- ft := &FormatCyclonedxJSON{}
- ft = setAllToNonZero(t, ft).(*FormatCyclonedxJSON)
-
- subject := ft.config("Version")
- assertExpectedValue(t, subject)
-}
-
-func setAllToNonZero(t testing.TB, structPtr any) any {
- // set all fields on the struct to non-zero values
- rt := reflect.TypeOf(structPtr)
- if rt.Kind() != reflect.Ptr || rt.Elem().Kind() != reflect.Struct {
- t.Fatal("expected a pointer to a struct")
- }
-
- rv := reflect.ValueOf(structPtr).Elem()
- for i := 0; i < rt.Elem().NumField(); i++ {
- val := getNonZeroExampleValue(t, rv.Field(i).Interface(), rt.Elem().Field(i).Name)
- rv.Field(i).Set(reflect.ValueOf(val))
- }
- return structPtr
-}
-
-func getNonZeroExampleValue(t testing.TB, v any, name string) any {
- switch v.(type) {
- case bool:
- return true
- case *bool:
- val := true
- return &val
- case string:
- return name
- }
- t.Fatalf("unsupported type: %T", v)
- return nil
-}
-
-func assertExpectedValue(t *testing.T, structTy any) {
- rt := reflect.TypeOf(structTy)
- rv := reflect.ValueOf(structTy)
-
- for i := 0; i < rt.NumField(); i++ {
- f := rt.Field(i)
- fieldValue := rv.Field(i)
-
- if fieldValue.Type().Kind() == reflect.String {
- // use the field name as the expected value
- assert.Equalf(t, f.Name, fieldValue.String(), "field %q value differs", f.Name)
- } else {
- // use the zero value for the type
- if reflect.DeepEqual(fieldValue.Interface(), reflect.Zero(fieldValue.Type()).Interface()) {
- t.Errorf("field '%s' is zero", f.Name)
- }
- }
- }
-}
diff --git a/cmd/syft/internal/options/format_cyclonedx_xml_test.go b/cmd/syft/internal/options/format_cyclonedx_xml_test.go
deleted file mode 100644
index 31ddcabbb..000000000
--- a/cmd/syft/internal/options/format_cyclonedx_xml_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package options
-
-import (
- "testing"
-)
-
-func TestFormatCyclonedxXML_buildConfig(t *testing.T) {
- // assert when building the config that we respond to all possible fields
-
- ft := FormatCyclonedxXML{}
- ftp := setAllToNonZero(t, &ft).(*FormatCyclonedxXML)
-
- subject := ftp.config("Version")
- assertExpectedValue(t, subject)
-}
diff --git a/cmd/syft/internal/options/format_spdx_json_test.go b/cmd/syft/internal/options/format_spdx_json_test.go
deleted file mode 100644
index b81ef04c7..000000000
--- a/cmd/syft/internal/options/format_spdx_json_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package options
-
-import (
- "testing"
-)
-
-func TestFormatSPDXJSON_buildConfig(t *testing.T) {
- // assert when building the config that we respond to all possible fields
-
- ft := &FormatSPDXJSON{}
- ft = setAllToNonZero(t, ft).(*FormatSPDXJSON)
-
- subject := ft.config("Version")
- assertExpectedValue(t, subject)
-}
diff --git a/cmd/syft/internal/options/format_syft_json_test.go b/cmd/syft/internal/options/format_syft_json_test.go
deleted file mode 100644
index 2df7d43b2..000000000
--- a/cmd/syft/internal/options/format_syft_json_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package options
-
-import (
- "testing"
-)
-
-func TestFormatSyftJSON_buildConfig(t *testing.T) {
- // assert when building the config that we respond to all possible fields
-
- ft := &FormatSyftJSON{}
- ft = setAllToNonZero(t, ft).(*FormatSyftJSON)
-
- subject := ft.config()
- assertExpectedValue(t, subject)
-}
diff --git a/cmd/syft/internal/options/golang.go b/cmd/syft/internal/options/golang.go
index 63ac1bcc7..59fe421fe 100644
--- a/cmd/syft/internal/options/golang.go
+++ b/cmd/syft/internal/options/golang.go
@@ -8,9 +8,9 @@ import (
)
type golangConfig struct {
- SearchLocalModCacheLicenses bool `json:"search-local-mod-cache-licenses" yaml:"search-local-mod-cache-licenses" mapstructure:"search-local-mod-cache-licenses"`
+ SearchLocalModCacheLicenses *bool `json:"search-local-mod-cache-licenses" yaml:"search-local-mod-cache-licenses" mapstructure:"search-local-mod-cache-licenses"`
LocalModCacheDir string `json:"local-mod-cache-dir" yaml:"local-mod-cache-dir" mapstructure:"local-mod-cache-dir"`
- SearchRemoteLicenses bool `json:"search-remote-licenses" yaml:"search-remote-licenses" mapstructure:"search-remote-licenses"`
+ SearchRemoteLicenses *bool `json:"search-remote-licenses" yaml:"search-remote-licenses" mapstructure:"search-remote-licenses"`
Proxy string `json:"proxy" yaml:"proxy" mapstructure:"proxy"`
NoProxy string `json:"no-proxy" yaml:"no-proxy" mapstructure:"no-proxy"`
MainModuleVersion golangMainModuleVersionConfig `json:"main-module-version" yaml:"main-module-version" mapstructure:"main-module-version"`
@@ -47,9 +47,9 @@ type golangMainModuleVersionConfig struct {
func defaultGolangConfig() golangConfig {
def := golang.DefaultCatalogerConfig()
return golangConfig{
- SearchLocalModCacheLicenses: def.SearchLocalModCacheLicenses,
+ SearchLocalModCacheLicenses: nil, // this defaults to false, which is the API default
LocalModCacheDir: def.LocalModCacheDir,
- SearchRemoteLicenses: def.SearchRemoteLicenses,
+ SearchRemoteLicenses: nil, // this defaults to false, which is the API default
Proxy: strings.Join(def.Proxies, ","),
NoProxy: strings.Join(def.NoProxy, ","),
MainModuleVersion: golangMainModuleVersionConfig{
diff --git a/cmd/syft/internal/options/java.go b/cmd/syft/internal/options/java.go
index 79b0fd127..6244de44f 100644
--- a/cmd/syft/internal/options/java.go
+++ b/cmd/syft/internal/options/java.go
@@ -1,24 +1,46 @@
package options
-import "github.com/anchore/clio"
+import (
+ "github.com/anchore/clio"
+ "github.com/anchore/syft/syft/pkg/cataloger/java"
+)
type javaConfig struct {
- UseNetwork bool `yaml:"use-network" json:"use-network" mapstructure:"use-network"`
+ UseNetwork *bool `yaml:"use-network" json:"use-network" mapstructure:"use-network"`
+ UseMavenLocalRepository *bool `yaml:"use-maven-local-repository" json:"use-maven-local-repository" mapstructure:"use-maven-local-repository"`
+ MavenLocalRepositoryDir string `yaml:"maven-local-repository-dir" json:"maven-local-repository-dir" mapstructure:"maven-local-repository-dir"`
MavenURL string `yaml:"maven-url" json:"maven-url" mapstructure:"maven-url"`
MaxParentRecursiveDepth int `yaml:"max-parent-recursive-depth" json:"max-parent-recursive-depth" mapstructure:"max-parent-recursive-depth"`
}
+func defaultJavaConfig() javaConfig {
+ def := java.DefaultArchiveCatalogerConfig()
+
+ return javaConfig{
+ UseNetwork: nil, // this defaults to false, which is the API default
+ MaxParentRecursiveDepth: def.MaxParentRecursiveDepth,
+ UseMavenLocalRepository: nil, // this defaults to false, which is the API default
+ MavenLocalRepositoryDir: def.MavenLocalRepositoryDir,
+ MavenURL: def.MavenBaseURL,
+ }
+}
+
var _ interface {
clio.FieldDescriber
} = (*javaConfig)(nil)
func (o *javaConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {
- descriptions.Add(&o.UseNetwork, `enables Syft to use the network to fill in more detailed information about artifacts
-currently this enables searching maven-url for license data
-when running across pom.xml files that could have more information, syft will
-explicitly search maven for license information by querying the online pom when this is true
-this option is helpful for when the parent pom has more data,
-that is not accessible from within the final built artifact`)
+ descriptions.Add(&o.UseNetwork, `enables Syft to use the network to fetch version and license information for packages when
+a parent or imported pom file is not found in the local maven repository.
+the pom files are downloaded from the remote Maven repository at 'maven-url'`)
descriptions.Add(&o.MavenURL, `maven repository to use, defaults to Maven central`)
- descriptions.Add(&o.MaxParentRecursiveDepth, `depth to recursively resolve parent POMs`)
+ descriptions.Add(&o.MaxParentRecursiveDepth, `depth to recursively resolve parent POMs, no limit if <= 0`)
+ descriptions.Add(&o.UseMavenLocalRepository, `use the local Maven repository to retrieve pom files. When Maven is installed and was previously used
+for building the software that is being scanned, then most pom files will be available in this
+repository on the local file system. this greatly speeds up scans. when all pom files are available
+in the local repository, then 'use-network' is not needed.
+TIP: If you want to download all required pom files to the local repository without running a full
+build, run 'mvn help:effective-pom' before performing the scan with syft.`)
+ descriptions.Add(&o.MavenLocalRepositoryDir, `override the default location of the local Maven repository.
+the default is the subdirectory '.m2/repository' in your home directory`)
}
diff --git a/cmd/syft/internal/options/javascript.go b/cmd/syft/internal/options/javascript.go
index 5f88c0f33..e618037cc 100644
--- a/cmd/syft/internal/options/javascript.go
+++ b/cmd/syft/internal/options/javascript.go
@@ -3,7 +3,7 @@ package options
import "github.com/anchore/clio"
type javaScriptConfig struct {
- SearchRemoteLicenses bool `json:"search-remote-licenses" yaml:"search-remote-licenses" mapstructure:"search-remote-licenses"`
+ SearchRemoteLicenses *bool `json:"search-remote-licenses" yaml:"search-remote-licenses" mapstructure:"search-remote-licenses"`
NpmBaseURL string `json:"npm-base-url" yaml:"npm-base-url" mapstructure:"npm-base-url"`
}
diff --git a/cmd/syft/internal/options/output_file.go b/cmd/syft/internal/options/output_file.go
index cf8e5632b..64e7abb39 100644
--- a/cmd/syft/internal/options/output_file.go
+++ b/cmd/syft/internal/options/output_file.go
@@ -28,7 +28,7 @@ func (o *OutputFile) AddFlags(flags clio.FlagSet) {
if pfp, ok := flags.(fangs.PFlagSetProvider); ok {
flagSet := pfp.PFlagSet()
- flagSet.Lookup("file").Deprecated = "use: output"
+ flagSet.Lookup("file").Deprecated = "use: --output FORMAT=PATH"
}
}
}
diff --git a/cmd/syft/internal/options/output_test.go b/cmd/syft/internal/options/output_test.go
deleted file mode 100644
index 68a32d56d..000000000
--- a/cmd/syft/internal/options/output_test.go
+++ /dev/null
@@ -1,203 +0,0 @@
-package options
-
-import (
- "testing"
-
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/format"
- "github.com/anchore/syft/syft/format/cyclonedxjson"
- "github.com/anchore/syft/syft/format/cyclonedxxml"
- "github.com/anchore/syft/syft/format/github"
- "github.com/anchore/syft/syft/format/spdxjson"
- "github.com/anchore/syft/syft/format/spdxtagvalue"
- "github.com/anchore/syft/syft/format/syftjson"
- "github.com/anchore/syft/syft/format/table"
- "github.com/anchore/syft/syft/format/template"
- "github.com/anchore/syft/syft/format/text"
- "github.com/anchore/syft/syft/sbom"
-)
-
-func Test_getEncoders(t *testing.T) {
- allDefaultEncoderNames := strset.New()
- for _, id := range supportedIDs() {
- allDefaultEncoderNames.Add(id.String())
- }
-
- opts := DefaultOutput()
- require.NoError(t, opts.Format.PostLoad())
- opts.Format.Template.Path = "somewhere"
-
- encoders, err := opts.Encoders()
- require.NoError(t, err)
- require.NotEmpty(t, encoders)
-
- encoderNames := strset.New()
- for _, e := range encoders {
- encoderNames.Add(e.ID().String())
- }
-
- assert.ElementsMatch(t, allDefaultEncoderNames.List(), encoderNames.List(), "not all encoders are expressed")
-}
-
-func Test_EncoderCollection_ByString_IDOnly_Defaults(t *testing.T) {
- tests := []struct {
- name string
- want sbom.FormatID
- }{
- // SPDX Tag-Value
- {
- name: "spdx",
- want: spdxtagvalue.ID,
- },
- {
- name: "spdx-tag-value",
- want: spdxtagvalue.ID,
- },
- {
- name: "spdx-tv",
- want: spdxtagvalue.ID,
- },
- {
- name: "spdxtv", // clean variant
- want: spdxtagvalue.ID,
- },
-
- // SPDX JSON
- {
- name: "spdx-json",
- want: spdxjson.ID,
- },
- {
- name: "spdxjson", // clean variant
- want: spdxjson.ID,
- },
-
- // Cyclonedx JSON
- {
- name: "cyclonedx-json",
- want: cyclonedxjson.ID,
- },
- {
- name: "cyclonedxjson", // clean variant
- want: cyclonedxjson.ID,
- },
-
- // Cyclonedx XML
- {
- name: "cdx",
- want: cyclonedxxml.ID,
- },
- {
- name: "cyclone",
- want: cyclonedxxml.ID,
- },
- {
- name: "cyclonedx",
- want: cyclonedxxml.ID,
- },
- {
- name: "cyclonedx-xml",
- want: cyclonedxxml.ID,
- },
- {
- name: "cyclonedxxml", // clean variant
- want: cyclonedxxml.ID,
- },
-
- // Syft Table
- {
- name: "table",
- want: table.ID,
- },
- {
- name: "syft-table",
- want: table.ID,
- },
-
- // Syft Text
- {
- name: "text",
- want: text.ID,
- },
- {
- name: "syft-text",
- want: text.ID,
- },
-
- // Syft JSON
- {
- name: "json",
- want: syftjson.ID,
- },
- {
- name: "syft-json",
- want: syftjson.ID,
- },
- {
- name: "syftjson", // clean variant
- want: syftjson.ID,
- },
-
- // GitHub JSON
- {
- name: "github",
- want: github.ID,
- },
- {
- name: "github-json",
- want: github.ID,
- },
-
- // Syft template
- {
- name: "template",
- want: template.ID,
- },
- }
-
- opts := DefaultOutput()
- require.NoError(t, opts.Format.PostLoad())
- opts.Format.Template.Path = "somewhere"
-
- defaultEncoders, err := opts.Encoders()
- require.NoError(t, err)
-
- encoders := format.NewEncoderCollection(defaultEncoders...)
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f := encoders.GetByString(tt.name)
- if tt.want == "" {
- require.Nil(t, f)
- return
- }
- require.NotNil(t, f)
- assert.Equal(t, tt.want, f.ID())
- })
- }
-}
-
-func Test_OutputHonorsAllowFile(t *testing.T) {
- o := DefaultOutput()
-
- t.Run("file is not allowed", func(t *testing.T) {
- o.AllowToFile = false
- o.Outputs = []string{"table=/tmp/somefile"}
-
- w, err := o.SBOMWriter()
- assert.Nil(t, w)
- assert.ErrorContains(t, err, "file output is not allowed")
- })
-
- t.Run("file is allowed", func(t *testing.T) {
- o.AllowToFile = true
- o.Outputs = []string{"table=/tmp/somefile"}
-
- w, err := o.SBOMWriter()
- assert.NotNil(t, w)
- assert.NoError(t, err)
- })
-}
diff --git a/cmd/syft/internal/options/registry_test.go b/cmd/syft/internal/options/registry_test.go
deleted file mode 100644
index 150f20078..000000000
--- a/cmd/syft/internal/options/registry_test.go
+++ /dev/null
@@ -1,147 +0,0 @@
-package options
-
-import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/stereoscope/pkg/image"
-)
-
-func TestHasNonEmptyCredentials(t *testing.T) {
- tests := []struct {
- username, password, token, cert, key string
- expected bool
- }{
-
- {
- "", "", "", "", "",
- false,
- },
- {
- "user", "", "", "", "",
- false,
- },
- {
- "", "pass", "", "", "",
- false,
- },
- {
- "", "pass", "tok", "", "",
- true,
- },
- {
- "user", "", "tok", "", "",
- true,
- },
- {
- "", "", "tok", "", "",
- true,
- },
- {
- "user", "pass", "tok", "", "",
- true,
- },
-
- {
- "user", "pass", "", "", "",
- true,
- },
- {
- "", "", "", "cert", "key",
- true,
- },
- {
- "", "", "", "cert", "",
- false,
- },
- {
- "", "", "", "", "key",
- false,
- },
- }
-
- for _, test := range tests {
- t.Run(fmt.Sprintf("%+v", test), func(t *testing.T) {
- assert.Equal(t, test.expected, hasNonEmptyCredentials(test.username, test.password, test.token, test.cert, test.key))
- })
- }
-}
-
-func Test_registry_ToOptions(t *testing.T) {
- tests := []struct {
- name string
- input registryConfig
- expected image.RegistryOptions
- }{
- {
- name: "no registry options",
- input: registryConfig{},
- expected: image.RegistryOptions{
- Credentials: []image.RegistryCredentials{},
- },
- },
- {
- name: "set InsecureSkipTLSVerify",
- input: registryConfig{
- InsecureSkipTLSVerify: true,
- },
- expected: image.RegistryOptions{
- InsecureSkipTLSVerify: true,
- Credentials: []image.RegistryCredentials{},
- },
- },
- {
- name: "set InsecureUseHTTP",
- input: registryConfig{
- InsecureUseHTTP: true,
- },
- expected: image.RegistryOptions{
- InsecureUseHTTP: true,
- Credentials: []image.RegistryCredentials{},
- },
- },
- {
- name: "set all bool options",
- input: registryConfig{
- InsecureSkipTLSVerify: true,
- InsecureUseHTTP: true,
- },
- expected: image.RegistryOptions{
- InsecureSkipTLSVerify: true,
- InsecureUseHTTP: true,
- Credentials: []image.RegistryCredentials{},
- },
- },
- {
- name: "provide all tls configuration",
- input: registryConfig{
- CACert: "ca.crt",
- InsecureSkipTLSVerify: true,
- Auth: []RegistryCredentials{
- {
- TLSCert: "client.crt",
- TLSKey: "client.key",
- },
- },
- },
- expected: image.RegistryOptions{
- CAFileOrDir: "ca.crt",
- InsecureSkipTLSVerify: true,
- Credentials: []image.RegistryCredentials{
- {
- ClientCert: "client.crt",
- ClientKey: "client.key",
- },
- },
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- assert.Equal(t, &test.expected, test.input.ToOptions())
- })
- }
-}
diff --git a/cmd/syft/internal/options/source_test.go b/cmd/syft/internal/options/source_test.go
deleted file mode 100644
index 7adf6893e..000000000
--- a/cmd/syft/internal/options/source_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package options
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func Test_fileSource_PostLoad(t *testing.T) {
- tests := []struct {
- name string
- cfg fileSource
- assert func(t *testing.T, cfg fileSource)
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "deduplicate digests",
- cfg: fileSource{
- Digests: []string{"sha1", "sha1"},
- },
- assert: func(t *testing.T, cfg fileSource) {
- assert.Equal(t, []string{"sha1"}, cfg.Digests)
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
- tt.wantErr(t, tt.cfg.PostLoad())
- if tt.assert != nil {
- tt.assert(t, tt.cfg)
- }
- })
- }
-}
diff --git a/cmd/syft/internal/options/unknowns.go b/cmd/syft/internal/options/unknowns.go
new file mode 100644
index 000000000..e26694902
--- /dev/null
+++ b/cmd/syft/internal/options/unknowns.go
@@ -0,0 +1,31 @@
+package options
+
+import (
+ "github.com/anchore/clio"
+ "github.com/anchore/syft/syft/cataloging"
+)
+
+type unknownsConfig struct {
+ RemoveWhenPackagesDefined bool `json:"remove-when-packages-defined" yaml:"remove-when-packages-defined" mapstructure:"remove-when-packages-defined"`
+ ExecutablesWithoutPackages bool `json:"executables-without-packages" yaml:"executables-without-packages" mapstructure:"executables-without-packages"`
+ UnexpandedArchives bool `json:"unexpanded-archives" yaml:"unexpanded-archives" mapstructure:"unexpanded-archives"`
+}
+
+var _ interface {
+ clio.FieldDescriber
+} = (*unknownsConfig)(nil)
+
+func (o *unknownsConfig) DescribeFields(descriptions clio.FieldDescriptionSet) {
+ descriptions.Add(&o.RemoveWhenPackagesDefined, `remove unknown errors on files with discovered packages`)
+ descriptions.Add(&o.ExecutablesWithoutPackages, `include executables without any identified packages`)
+ descriptions.Add(&o.UnexpandedArchives, `include archives which were not expanded and searched`)
+}
+
+func defaultUnknowns() unknownsConfig {
+ def := cataloging.DefaultUnknownsConfig()
+ return unknownsConfig{
+ RemoveWhenPackagesDefined: def.RemoveWhenPackagesDefined,
+ ExecutablesWithoutPackages: def.IncludeExecutablesWithoutPackages,
+ UnexpandedArchives: def.IncludeUnexpandedArchives,
+ }
+}
diff --git a/cmd/syft/internal/options/writer_test.go b/cmd/syft/internal/options/writer_test.go
deleted file mode 100644
index 67a7f906d..000000000
--- a/cmd/syft/internal/options/writer_test.go
+++ /dev/null
@@ -1,294 +0,0 @@
-package options
-
-import (
- "io"
- "path/filepath"
- "strings"
- "testing"
-
- "github.com/docker/docker/pkg/homedir"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/sbom"
-)
-
-func Test_MakeSBOMWriter(t *testing.T) {
- tests := []struct {
- name string
- outputs []string
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "go case",
- outputs: []string{"json"},
- wantErr: assert.NoError,
- },
- {
- name: "multiple",
- outputs: []string{"table", "json"},
- wantErr: assert.NoError,
- },
- {
- name: "unknown format",
- outputs: []string{"unknown"},
- wantErr: func(t assert.TestingT, err error, bla ...interface{}) bool {
- return assert.ErrorContains(t, err, `unsupported output format "unknown", supported formats are:`)
- },
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- opt := DefaultOutput()
- require.NoError(t, opt.Format.PostLoad())
- encoders, err := opt.Encoders()
- require.NoError(t, err)
- _, err = makeSBOMWriter(tt.outputs, "", encoders)
- tt.wantErr(t, err)
- })
- }
-}
-
-func dummyFormat(name string) sbom.FormatEncoder {
- return dummyEncoder{name: name}
-}
-
-var _ sbom.FormatEncoder = (*dummyEncoder)(nil)
-
-type dummyEncoder struct {
- name string
-}
-
-func (d dummyEncoder) ID() sbom.FormatID {
- return sbom.FormatID(d.name)
-}
-
-func (d dummyEncoder) Aliases() []string {
- return nil
-}
-
-func (d dummyEncoder) Version() string {
- return sbom.AnyVersion
-}
-
-func (d dummyEncoder) Encode(writer io.Writer, s sbom.SBOM) error {
- return nil
-}
-
-func Test_newSBOMMultiWriter(t *testing.T) {
- type writerConfig struct {
- format string
- file string
- }
-
- tmp := t.TempDir()
-
- testName := func(options []sbomWriterDescription, err bool) string {
- var out []string
- for _, opt := range options {
- out = append(out, string(opt.Format.ID())+"="+opt.Path)
- }
- errs := ""
- if err {
- errs = "(err)"
- }
- return strings.Join(out, ", ") + errs
- }
-
- tests := []struct {
- outputs []sbomWriterDescription
- err bool
- expected []writerConfig
- }{
- {
- outputs: []sbomWriterDescription{},
- err: true,
- },
- {
- outputs: []sbomWriterDescription{
- {
- Format: dummyFormat("table"),
- Path: "",
- },
- },
- expected: []writerConfig{
- {
- format: "table",
- },
- },
- },
- {
- outputs: []sbomWriterDescription{
- {
- Format: dummyFormat("json"),
- },
- },
- expected: []writerConfig{
- {
- format: "json",
- },
- },
- },
- {
- outputs: []sbomWriterDescription{
- {
- Format: dummyFormat("json"),
- Path: "test-2.json",
- },
- },
- expected: []writerConfig{
- {
- format: "json",
- file: "test-2.json",
- },
- },
- },
- {
- outputs: []sbomWriterDescription{
- {
- Format: dummyFormat("json"),
- Path: "test-3/1.json",
- },
- {
- Format: dummyFormat("spdx-json"),
- Path: "test-3/2.json",
- },
- },
- expected: []writerConfig{
- {
- format: "json",
- file: "test-3/1.json",
- },
- {
- format: "spdx-json",
- file: "test-3/2.json",
- },
- },
- },
- {
- outputs: []sbomWriterDescription{
- {
- Format: dummyFormat("text"),
- },
- {
- Format: dummyFormat("spdx-json"),
- Path: "test-4.json",
- },
- },
- expected: []writerConfig{
- {
- format: "text",
- },
- {
- format: "spdx-json",
- file: "test-4.json",
- },
- },
- },
- }
-
- for _, test := range tests {
- t.Run(testName(test.outputs, test.err), func(t *testing.T) {
- outputs := test.outputs
- for i := range outputs {
- if outputs[i].Path != "" {
- outputs[i].Path = tmp + outputs[i].Path
- }
- }
-
- mw, err := newSBOMMultiWriter(outputs...)
-
- if test.err {
- assert.Error(t, err)
- return
- } else {
- assert.NoError(t, err)
- }
-
- assert.Len(t, mw.writers, len(test.expected))
-
- for i, e := range test.expected {
- switch w := mw.writers[i].(type) {
- case *sbomStreamWriter:
- assert.Equal(t, string(w.format.ID()), e.format)
- assert.NotNil(t, w.out)
- if e.file != "" {
- assert.FileExists(t, tmp+e.file)
- }
- case *sbomPublisher:
- assert.Equal(t, string(w.format.ID()), e.format)
- default:
- t.Fatalf("unknown writer type: %T", w)
- }
-
- }
- })
- }
-}
-
-func Test_newSBOMWriterDescription(t *testing.T) {
- tests := []struct {
- name string
- path string
- expected string
- }{
- {
- name: "expand home dir",
- path: "~/place.txt",
- expected: filepath.Join(homedir.Get(), "place.txt"),
- },
- {
- name: "passthrough other paths",
- path: "/other/place.txt",
- expected: "/other/place.txt",
- },
- {
- name: "no path",
- path: "",
- expected: "",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- o := newSBOMWriterDescription(dummyFormat("table"), tt.path)
- assert.Equal(t, tt.expected, o.Path)
- })
- }
-}
-
-func Test_formatVersionOptions(t *testing.T) {
-
- tests := []struct {
- name string
- nameVersionPairs []string
- want string
- }{
- {
- name: "gocase",
- nameVersionPairs: []string{
- "cyclonedx-json@1.2", "cyclonedx-json@1.3", "cyclonedx-json@1.4", "cyclonedx-json@1.5",
- "cyclonedx-xml@1.0", "cyclonedx-xml@1.1", "cyclonedx-xml@1.2", "cyclonedx-xml@1.3",
- "cyclonedx-xml@1.4", "cyclonedx-xml@1.5", "github-json", "spdx-json@2.2", "spdx-json@2.3",
- "spdx-tag-value@2.1", "spdx-tag-value@2.2", "spdx-tag-value@2.3", "syft-json@11.0.0",
- "syft-table", "syft-text", "template",
- },
- want: `
-Available formats:
- - cyclonedx-json @ 1.2, 1.3, 1.4, 1.5
- - cyclonedx-xml @ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5
- - github-json
- - spdx-json @ 2.2, 2.3
- - spdx-tag-value @ 2.1, 2.2, 2.3
- - syft-json
- - syft-table
- - syft-text
- - template`,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, formatVersionOptions(tt.nameVersionPairs))
- })
- }
-}
diff --git a/cmd/syft/internal/test/integration/.gitignore b/cmd/syft/internal/test/integration/.gitignore
new file mode 100644
index 000000000..872aa273a
--- /dev/null
+++ b/cmd/syft/internal/test/integration/.gitignore
@@ -0,0 +1 @@
+results
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/all_layers_squashed_comparison_test.go b/cmd/syft/internal/test/integration/all_layers_squashed_comparison_test.go
deleted file mode 100644
index 4dedd9ef4..000000000
--- a/cmd/syft/internal/test/integration/all_layers_squashed_comparison_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/source"
-)
-
-func Test_AllLayersIncludesSquashed(t *testing.T) {
- // This is a verification test for issue #894 (https://github.com/anchore/syft/issues/894)
- allLayers, _ := catalogFixtureImage(t, "image-suse-all-layers", source.AllLayersScope)
- squashed, _ := catalogFixtureImage(t, "image-suse-all-layers", source.SquashedScope)
-
- lenAllLayers := len(allLayers.Artifacts.Packages.Sorted())
- lenSquashed := len(squashed.Artifacts.Packages.Sorted())
-
- if lenAllLayers < lenSquashed {
- t.Errorf("squashed has more packages than all-layers: %d > %d", lenSquashed, lenAllLayers)
- }
-}
diff --git a/cmd/syft/internal/test/integration/catalog_packages_cases_test.go b/cmd/syft/internal/test/integration/catalog_packages_cases_test.go
deleted file mode 100644
index 188b4ae45..000000000
--- a/cmd/syft/internal/test/integration/catalog_packages_cases_test.go
+++ /dev/null
@@ -1,479 +0,0 @@
-package integration
-
-import "github.com/anchore/syft/syft/pkg"
-
-type testCase struct {
- name string
- pkgType pkg.Type
- pkgLanguage pkg.Language
- duplicates int
- pkgInfo map[string]string
-}
-
-var imageOnlyTestCases = []testCase{
- {
- name: "find gemspec packages",
- pkgType: pkg.GemPkg,
- pkgLanguage: pkg.Ruby,
- pkgInfo: map[string]string{
- // specifications in the root specification directory
- "bundler": "2.1.4",
- // specifications in named directories
- "unbundler": "3.1.4",
- },
- },
- {
- name: "find npm package",
- pkgType: pkg.NpmPkg,
- pkgLanguage: pkg.JavaScript,
- pkgInfo: map[string]string{
- "npm": "6.14.6",
- },
- },
- {
- name: "find python egg & wheel packages",
- pkgType: pkg.PythonPkg,
- pkgLanguage: pkg.Python,
- pkgInfo: map[string]string{
- "Pygments": "2.6.1",
- "requests": "2.22.0",
- "somerequests": "3.22.0",
- "someotherpkg": "3.19.0",
- },
- },
- {
- name: "find PHP composer installed.json packages",
- pkgType: pkg.PhpComposerPkg,
- pkgLanguage: pkg.PHP,
- pkgInfo: map[string]string{
- "nikic/fast-route": "v1.3.0",
- "psr/container": "2.0.2",
- "psr/http-factory": "1.0.1",
- },
- },
- {
- // When the image is build lib overwrites pkgs/lib causing there to only be two packages
- name: "find apkdb packages",
- pkgType: pkg.ApkPkg,
- pkgInfo: map[string]string{
- "musl-utils": "1.1.24-r2",
- "libc-utils": "0.7.2-r0",
- },
- },
- {
- name: "find java packages excluding pom.xml", // image scans can not include packages that have yet to be installed
- pkgType: pkg.JavaPkg,
- pkgLanguage: pkg.Java,
- pkgInfo: map[string]string{
- "example-java-app-maven": "0.1.0",
- "joda-time": "2.9.2",
- },
- },
- {
- name: "find R packages",
- pkgType: pkg.Rpkg,
- pkgLanguage: pkg.R,
- pkgInfo: map[string]string{
- "base": "4.3.0",
- },
- },
- {
- name: "find dot net executable",
- pkgType: pkg.DotnetPkg,
- pkgLanguage: pkg.Dotnet,
- pkgInfo: map[string]string{
- "DocuSign.eSign": "6.8.0.0",
- },
- },
-}
-
-var dirOnlyTestCases = []testCase{
- {
- name: "find gemfile packages",
- pkgType: pkg.GemPkg,
- pkgLanguage: pkg.Ruby,
- pkgInfo: map[string]string{
- "actionmailer": "4.1.1",
- "actionpack": "4.1.1",
- "actionview": "4.1.1",
- "activemodel": "4.1.1",
- "activerecord": "4.1.1",
- "activesupport": "4.1.1",
- "arel": "5.0.1.20140414130214",
- "bootstrap-sass": "3.1.1.1",
- "builder": "3.2.2",
- "bundler": "2.1.4",
- "coffee-rails": "4.0.1",
- "coffee-script": "2.2.0",
- "coffee-script-source": "1.7.0",
- "erubis": "2.7.0",
- "execjs": "2.0.2",
- "google-cloud-errors": "1.3.0",
- "hike": "1.2.3",
- "i18n": "0.6.9",
- "jbuilder": "2.0.7",
- "jquery-rails": "3.1.0",
- "json": "1.8.1",
- "kgio": "2.9.2",
- "libv8": "3.16.14.3",
- "mail": "2.5.4",
- "mime-types": "1.25.1",
- "minitest": "5.3.4",
- "multi_json": "1.10.1",
- "mysql2": "0.3.16",
- "polyglot": "0.3.4",
- "rack": "1.5.2",
- "rack-test": "0.6.2",
- "rails": "4.1.1",
- "railties": "4.1.1",
- "raindrops": "0.13.0",
- "rake": "10.3.2",
- "rdoc": "4.1.1",
- "ref": "1.0.5",
- "sass": "3.2.19",
- "sass-rails": "4.0.3",
- "sdoc": "0.4.0",
- "spring": "1.1.3",
- "sprockets": "2.11.0",
- "sprockets-rails": "2.1.3",
- "sqlite3": "1.3.9",
- "therubyracer": "0.12.1",
- "thor": "0.19.1",
- "thread_safe": "0.3.3",
- "tilt": "1.4.1",
- "treetop": "1.4.15",
- "turbolinks": "3.0.0",
- "tzinfo": "1.2.0",
- "uglifier": "2.5.0",
- "unbundler": "3.1.4",
- "unicorn": "4.8.3",
- },
- },
- {
- name: "find javascript npm packages (yarn.lock & package-lock.json)",
- pkgType: pkg.NpmPkg,
- pkgLanguage: pkg.JavaScript,
- pkgInfo: map[string]string{
- "@babel/code-frame": "7.10.4",
- "get-stdin": "8.0.0",
- },
- },
- {
- name: "find python requirements.txt & setup.py package references",
- pkgType: pkg.PythonPkg,
- pkgLanguage: pkg.Python,
- pkgInfo: map[string]string{
- // dir specific test cases
- "flask": "4.0.0",
- "python-dateutil": "2.8.1",
- "python-swiftclient": "3.8.1",
- "pytz": "2019.3",
- "jsonschema": "2.6.0",
- "passlib": "1.7.2",
- "mypy": "v0.770",
- // common to image and directory
- "Pygments": "2.6.1",
- "requests": "2.22.0",
- "somerequests": "3.22.0",
- "someotherpkg": "3.19.0",
- },
- },
- {
- name: "find golang modules",
- pkgType: pkg.GoModulePkg,
- pkgLanguage: pkg.Go,
- pkgInfo: map[string]string{
- "github.com/bmatcuk/doublestar": "v1.3.1",
- },
- },
- {
- name: "find conan packages",
- pkgType: pkg.ConanPkg,
- pkgLanguage: pkg.CPP,
- pkgInfo: map[string]string{
- "catch2": "2.13.8",
- "docopt.cpp": "0.6.3",
- "fmt": "8.1.1",
- "spdlog": "1.9.2",
- "sdl": "2.0.20",
- "fltk": "1.3.8",
- },
- },
- {
- name: "find rust crates",
- pkgType: pkg.RustPkg,
- pkgLanguage: pkg.Rust,
- pkgInfo: map[string]string{
- "memchr": "2.3.3",
- "nom": "4.2.3",
- "version_check": "0.1.5",
- },
- },
- {
- name: "find apkdb packages",
- pkgType: pkg.ApkPkg,
- duplicates: 2, // when the directory is cataloged we have duplicates between lib/ and pkgs/lib
- pkgInfo: map[string]string{
- "musl-utils": "1.1.24-r2",
- "libc-utils": "0.7.2-r0",
- },
- },
- {
- name: "find php composer package",
- pkgType: pkg.PhpComposerPkg,
- pkgLanguage: pkg.PHP,
- pkgInfo: map[string]string{
- "adoy/fastcgi-client": "1.0.2",
- "alcaeus/mongo-php-adapter": "1.1.11",
- },
- },
- {
- name: "find pubspec lock packages",
- pkgType: pkg.DartPubPkg,
- pkgLanguage: pkg.Dart,
- pkgInfo: map[string]string{
- "ansicolor": "1.1.1",
- "archive": "2.0.13",
- "args": "1.6.0",
- "key_binder": "1.11.20",
- "ale": "3.3.0",
- "analyzer": "0.40.7",
- },
- },
- {
- name: "find dotnet packages",
- pkgType: pkg.DotnetPkg,
- pkgLanguage: pkg.Dotnet,
- pkgInfo: map[string]string{
- "AWSSDK.Core": "3.7.10.6",
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0",
- "Newtonsoft.Json": "13.0.1",
- "Serilog": "2.10.0",
- "Serilog.Sinks.Console": "4.0.1",
- "System.Diagnostics.DiagnosticSource": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "TestCommon": "1.0.0",
- "TestLibrary": "1.0.0",
- },
- },
- {
- name: "find java packages including pom.xml", // directory scans can include packages that have yet to be installed
- pkgType: pkg.JavaPkg,
- pkgLanguage: pkg.Java,
- duplicates: 1, // joda-time is included in both pom.xml AND the .jar collection
- pkgInfo: map[string]string{
- "example-java-app-maven": "0.1.0",
- "joda-time": "2.9.2",
- "junit": "4.12",
- },
- },
- {
- name: "find cocoapods packages",
- pkgType: pkg.CocoapodsPkg,
- pkgLanguage: pkg.Swift,
- pkgInfo: map[string]string{
- "GlossButtonNode": "3.1.2",
- "PINCache": "3.0.3",
- "PINCache/Arc-exception-safe": "3.0.3",
- "PINCache/Core": "3.0.3",
- "PINOperation": "1.2.1",
- "PINRemoteImage/Core": "3.0.3",
- "PINRemoteImage/iOS": "3.0.3",
- "PINRemoteImage/PINCache": "3.0.3",
- "Reveal-SDK": "33",
- "SwiftGen": "6.5.1",
- "Texture": "3.1.0",
- "Texture/AssetsLibrary": "3.1.0",
- "Texture/Core": "3.1.0",
- "Texture/MapKit": "3.1.0",
- "Texture/Photos": "3.1.0",
- "Texture/PINRemoteImage": "3.1.0",
- "Texture/Video": "3.1.0",
- "TextureSwiftSupport": "3.13.0",
- "TextureSwiftSupport/Components": "3.13.0",
- "TextureSwiftSupport/Experiments": "3.13.0",
- "TextureSwiftSupport/Extensions": "3.13.0",
- "TextureSwiftSupport/LayoutSpecBuilders": "3.13.0",
- "TinyConstraints": "4.0.2",
- },
- },
- {
- name: "find hackage packages",
- pkgType: pkg.HackagePkg,
- pkgLanguage: pkg.Haskell,
- pkgInfo: map[string]string{
- "Cabal": "3.2.1.0",
- "Diff": "0.4.1",
- "HTTP": "4000.3.16",
- "HUnit": "1.6.2.0",
- "OneTuple": "0.3.1",
- "Only": "0.1",
- "PyF": "0.10.2.0",
- "QuickCheck": "2.14.2",
- "RSA": "2.4.1",
- "SHA": "1.6.4.4",
- "Spock": "0.14.0.0",
- "ShellCheck": "0.8.0",
- "colourista": "0.1.0.1",
- "language-docker": "11.0.0",
- "spdx": "1.0.0.2",
- "hspec": "2.9.4",
- "hspec-core": "2.9.4",
- "hspec-discover": "2.9.4",
- "stm": "2.5.0.2",
- "configurator-pg": "0.2.6",
- "hasql-dynamic-statements": "0.3.1.1",
- "hasql-implicits": "0.1.0.4",
- "hasql-pool": "0.5.2.2",
- "lens-aeson": "1.1.3",
- "optparse-applicative": "0.16.1.0",
- "protolude": "0.3.2",
- "ptr": "0.16.8.2",
- },
- },
- {
- name: "find hex packages",
- pkgType: pkg.HexPkg,
- pkgLanguage: pkg.Elixir + "," + pkg.Erlang,
- pkgInfo: map[string]string{
- // elixir
- "castore": "0.1.17",
- "connection": "1.1.0",
- "cowboy": "2.9.0",
- "cowboy_telemetry": "0.4.0",
- "cowlib": "2.11.0",
- "db_connection": "2.4.2",
- "decimal": "2.0.0",
- "earmark_parser": "1.4.25",
- "ecto": "3.8.1",
- "ecto_sql": "3.8.1",
- "esbuild": "0.5.0",
- "ex_doc": "0.28.4",
- "gettext": "0.19.1",
- "hpax": "0.1.1",
- "jason": "1.3.0",
-
- // erlang
- "certifi": "2.9.0",
- "idna": "6.1.1",
- "metrics": "1.0.1",
- "mimerl": "1.2.0",
- "parse_trans": "3.3.1",
- "ssl_verify_fun": "1.1.6",
- "unicode_util_compat": "0.7.0",
- },
- },
- {
- name: "find ErLang OTP applications",
- pkgType: pkg.ErlangOTPPkg,
- pkgLanguage: pkg.Erlang,
- pkgInfo: map[string]string{
- "accept": "0.3.5",
- },
- },
- {
- name: "find swift package manager packages",
- pkgType: pkg.SwiftPkg,
- pkgLanguage: pkg.Swift,
- pkgInfo: map[string]string{
- "swift-algorithms": "1.0.0",
- "swift-async-algorithms": "0.1.0",
- "swift-atomics": "1.1.0",
- "swift-collections": "1.0.4",
- "swift-numerics": "1.0.2",
- },
- },
- {
- name: "find github action packages (from usage in workflow files and composite actions)",
- pkgType: pkg.GithubActionPkg,
- pkgInfo: map[string]string{
- "actions/checkout": "v4",
- },
- },
- {
- name: "find github shared workflow calls (from usage in workflow files)",
- pkgType: pkg.GithubActionWorkflowPkg,
- pkgInfo: map[string]string{
- "octo-org/this-repo/.github/workflows/workflow-1.yml": "172239021f7ba04fe7327647b213799853a9eb89",
- },
- },
-}
-
-var commonTestCases = []testCase{
- {
- name: "find alpm packages",
- pkgType: pkg.AlpmPkg,
- pkgInfo: map[string]string{
- "pacman": "6.0.1-5",
- },
- },
- {
- name: "find rpmdb packages",
- pkgType: pkg.RpmPkg,
- pkgInfo: map[string]string{
- "dive": "0.9.2-1",
- },
- },
- {
- name: "find dpkg packages",
- pkgType: pkg.DebPkg,
- pkgInfo: map[string]string{
- "apt": "1.8.2",
- "dash": "0.5.8-2.4",
- "netbase": "5.4",
- },
- },
- {
- name: "find portage packages",
- pkgType: pkg.PortagePkg,
- pkgInfo: map[string]string{
- "app-containers/skopeo": "1.5.1",
- },
- },
-
- {
- name: "find jenkins plugins",
- pkgType: pkg.JenkinsPluginPkg,
- pkgLanguage: pkg.Java,
- duplicates: 1, // there is a "example-jenkins-plugin" HPI, and nested within that a JAR of the same name
- pkgInfo: map[string]string{
- "example-jenkins-plugin": "1.0-SNAPSHOT",
- },
- },
- {
- name: "find nix store packages",
- pkgType: pkg.NixPkg,
- pkgInfo: map[string]string{
- "glibc": "2.34-210",
- },
- },
- {
- name: "find wordpress plugins",
- pkgType: pkg.WordpressPluginPkg,
- pkgLanguage: pkg.PHP,
- pkgInfo: map[string]string{
- "Akismet Anti-spam: Spam Protection": "5.3",
- },
- },
- {
- name: "find php pecl package",
- pkgType: pkg.PhpPeclPkg,
- pkgLanguage: pkg.PHP,
- pkgInfo: map[string]string{
- "memcached": "3.2.0",
- },
- },
- {
- name: "find lua rock package",
- pkgType: pkg.LuaRocksPkg,
- pkgLanguage: pkg.Lua,
- pkgInfo: map[string]string{
- "kong": "3.7.0-0",
- },
- },
-}
diff --git a/cmd/syft/internal/test/integration/catalog_packages_test.go b/cmd/syft/internal/test/integration/catalog_packages_test.go
deleted file mode 100644
index 4ba5e3b52..000000000
--- a/cmd/syft/internal/test/integration/catalog_packages_test.go
+++ /dev/null
@@ -1,289 +0,0 @@
-package integration
-
-import (
- "context"
- "strings"
- "testing"
-
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/stereoscope/pkg/imagetest"
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func BenchmarkImagePackageCatalogers(b *testing.B) {
- // get the fixture image tar file
- fixtureImageName := "image-pkg-coverage"
- imagetest.GetFixtureImage(b, "docker-archive", fixtureImageName)
- tarPath := imagetest.GetFixtureImageTarPath(b, fixtureImageName)
-
- // get the source object for the image
- theSource, err := syft.GetSource(context.Background(), tarPath, syft.DefaultGetSourceConfig().WithSources("docker-archive"))
- require.NoError(b, err)
-
- b.Cleanup(func() {
- require.NoError(b, theSource.Close())
- })
-
- // build the SBOM
- s, err := syft.CreateSBOM(context.Background(), theSource, syft.DefaultCreateSBOMConfig())
-
- // did it work?
- require.NoError(b, err)
- require.NotNil(b, s)
-}
-
-func TestPkgCoverageImage(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-pkg-coverage", source.SquashedScope)
-
- observedLanguages := strset.New()
- definedLanguages := strset.New()
- for _, l := range pkg.AllLanguages {
- definedLanguages.Add(l.String())
- }
-
- // for image scans we should not expect to see any of the following package types
- definedLanguages.Remove(pkg.Go.String())
- definedLanguages.Remove(pkg.Rust.String())
- definedLanguages.Remove(pkg.Dart.String())
- definedLanguages.Remove(pkg.Swift.String())
- definedLanguages.Remove(pkg.CPP.String())
- definedLanguages.Remove(pkg.Haskell.String())
- definedLanguages.Remove(pkg.Elixir.String())
- definedLanguages.Remove(pkg.Erlang.String())
-
- observedPkgs := strset.New()
- definedPkgs := strset.New()
- for _, p := range pkg.AllPkgs {
- definedPkgs.Add(string(p))
- }
-
- // for image scans we should not expect to see any of the following package types
- definedPkgs.Remove(string(pkg.KbPkg))
- definedPkgs.Remove(string(pkg.GoModulePkg))
- definedPkgs.Remove(string(pkg.RustPkg))
- definedPkgs.Remove(string(pkg.DartPubPkg))
- definedPkgs.Remove(string(pkg.ErlangOTPPkg))
- definedPkgs.Remove(string(pkg.CocoapodsPkg))
- definedPkgs.Remove(string(pkg.ConanPkg))
- definedPkgs.Remove(string(pkg.HackagePkg))
- definedPkgs.Remove(string(pkg.BinaryPkg))
- definedPkgs.Remove(string(pkg.HexPkg))
- definedPkgs.Remove(string(pkg.LinuxKernelPkg))
- definedPkgs.Remove(string(pkg.LinuxKernelModulePkg))
- definedPkgs.Remove(string(pkg.SwiftPkg))
- definedPkgs.Remove(string(pkg.GithubActionPkg))
- definedPkgs.Remove(string(pkg.GithubActionWorkflowPkg))
-
- var cases []testCase
- cases = append(cases, commonTestCases...)
- cases = append(cases, imageOnlyTestCases...)
-
- for _, c := range cases {
- t.Run(c.name, func(t *testing.T) {
- pkgCount := 0
-
- for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
- if a.Language.String() != "" {
- observedLanguages.Add(a.Language.String())
- }
-
- observedPkgs.Add(string(a.Type))
- expectedVersion, ok := c.pkgInfo[a.Name]
- if !ok {
- t.Errorf("unexpected package found: %s", a.Name)
- }
-
- if expectedVersion != a.Version {
- t.Errorf("unexpected package version (pkg=%s): %s, expected: %s", a.Name, a.Version, expectedVersion)
- }
-
- if a.Language != c.pkgLanguage {
- t.Errorf("bad language (pkg=%+v): %+v", a.Name, a.Language)
- }
-
- if a.Type != c.pkgType {
- t.Errorf("bad package type (pkg=%+v): %+v", a.Name, a.Type)
- }
- pkgCount++
- }
-
- if pkgCount != len(c.pkgInfo)+c.duplicates {
- t.Logf("Discovered packages of type %+v", c.pkgType)
- for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
- t.Log(" ", a)
- }
- t.Fatalf("unexpected package count: %d!=%d", pkgCount, len(c.pkgInfo))
- }
- })
- }
-
- observedLanguages.Remove(pkg.UnknownLanguage.String())
- definedLanguages.Remove(pkg.UnknownLanguage.String())
- observedPkgs.Remove(string(pkg.UnknownPkg))
- definedPkgs.Remove(string(pkg.UnknownPkg))
-
- missingLang := strset.Difference(definedLanguages, observedLanguages)
- extraLang := strset.Difference(observedLanguages, definedLanguages)
-
- // ensure that integration test cases stay in sync with the available catalogers
- if missingLang.Size() > 0 || extraLang.Size() > 0 {
- t.Errorf("language coverage incomplete (languages=%d, coverage=%d)", definedLanguages.Size(), observedLanguages.Size())
- t.Errorf("unexpected languages: %s", extraLang.List())
- t.Errorf("missing languages: %s", missingLang.List())
- }
-
- missingPkgs := strset.Difference(definedPkgs, observedPkgs)
- extraPkgs := strset.Difference(observedPkgs, definedPkgs)
-
- if missingPkgs.Size() > 0 || extraPkgs.Size() > 0 {
- t.Errorf("package coverage incomplete (packages=%d, coverage=%d)", definedPkgs.Size(), observedPkgs.Size())
- t.Errorf("unexpected packages: %s", extraPkgs.List())
- t.Errorf("missing packages: %s", missingPkgs.List())
- }
-}
-
-func TestPkgCoverageDirectory(t *testing.T) {
- sbom, _ := catalogDirectory(t, "test-fixtures/image-pkg-coverage")
-
- observedLanguages := strset.New()
- definedLanguages := strset.New()
- for _, l := range pkg.AllLanguages {
- definedLanguages.Add(l.String())
- }
-
- observedPkgs := strset.New()
- definedPkgs := strset.New()
- for _, p := range pkg.AllPkgs {
- definedPkgs.Add(string(p))
- }
-
- var cases []testCase
- cases = append(cases, commonTestCases...)
- cases = append(cases, dirOnlyTestCases...)
-
- for _, test := range cases {
- t.Run(test.name, func(t *testing.T) {
- actualPkgCount := 0
-
- for actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {
- observedLanguages.Add(actualPkg.Language.String())
- observedPkgs.Add(string(actualPkg.Type))
-
- expectedVersion, ok := test.pkgInfo[actualPkg.Name]
- if !ok {
- t.Errorf("unexpected package found: %s", actualPkg.Name)
- }
-
- if expectedVersion != actualPkg.Version {
- t.Errorf("unexpected package version (pkg=%s): %s", actualPkg.Name, actualPkg.Version)
- }
-
- var foundLang bool
- for _, lang := range strings.Split(test.pkgLanguage.String(), ",") {
- if actualPkg.Language.String() == lang {
- foundLang = true
- break
- }
- }
- if !foundLang {
- t.Errorf("bad language (pkg=%+v): %+v", actualPkg.Name, actualPkg.Language)
- }
-
- if actualPkg.Type != test.pkgType {
- t.Errorf("bad package type (pkg=%+v): %+v", actualPkg.Name, actualPkg.Type)
- }
- actualPkgCount++
- }
-
- if actualPkgCount != len(test.pkgInfo)+test.duplicates {
- for actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {
- t.Log(" ", actualPkg)
- }
- t.Fatalf("unexpected package count: %d!=%d", actualPkgCount, len(test.pkgInfo))
- }
- })
- }
-
- observedLanguages.Remove(pkg.UnknownLanguage.String())
- definedLanguages.Remove(pkg.UnknownLanguage.String())
- definedLanguages.Remove(pkg.R.String())
- observedPkgs.Remove(string(pkg.UnknownPkg))
- definedPkgs.Remove(string(pkg.BinaryPkg))
- definedPkgs.Remove(string(pkg.LinuxKernelPkg))
- definedPkgs.Remove(string(pkg.LinuxKernelModulePkg))
- definedPkgs.Remove(string(pkg.Rpkg))
- definedPkgs.Remove(string(pkg.UnknownPkg))
-
- // for directory scans we should not expect to see any of the following package types
- definedPkgs.Remove(string(pkg.KbPkg))
-
- // ensure that integration test commonTestCases stay in sync with the available catalogers
- if observedLanguages.Size() < definedLanguages.Size() {
- t.Errorf("language coverage incomplete (languages=%d, coverage=%d)", definedLanguages.Size(), observedLanguages.Size())
- }
-
- if observedPkgs.Size() < definedPkgs.Size() {
- t.Errorf("package coverage incomplete (packages=%d, coverage=%d)", definedPkgs.Size(), observedPkgs.Size())
- }
-}
-
-func TestPkgCoverageImage_HasEvidence(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-pkg-coverage", source.SquashedScope)
-
- var cases []testCase
- cases = append(cases, commonTestCases...)
- cases = append(cases, imageOnlyTestCases...)
-
- pkgTypesMissingEvidence := strset.New()
-
- for _, c := range cases {
- t.Run(c.name, func(t *testing.T) {
- for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
- assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
- for _, l := range a.Locations.ToSlice() {
- if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
- pkgTypesMissingEvidence.Add(string(a.Type))
- t.Errorf("missing evidence annotation (pkg=%s type=%s)", a.Name, a.Type)
- }
- }
- }
- })
- }
-
- if pkgTypesMissingEvidence.Size() > 0 {
- t.Log("Package types missing evidence annotations (img resolver): ", pkgTypesMissingEvidence.List())
- }
-}
-
-func TestPkgCoverageDirectory_HasEvidence(t *testing.T) {
- sbom, _ := catalogDirectory(t, "test-fixtures/image-pkg-coverage")
-
- var cases []testCase
- cases = append(cases, commonTestCases...)
- cases = append(cases, imageOnlyTestCases...)
-
- pkgTypesMissingEvidence := strset.New()
-
- for _, c := range cases {
- t.Run(c.name, func(t *testing.T) {
- for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
- assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
- for _, l := range a.Locations.ToSlice() {
- if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
- pkgTypesMissingEvidence.Add(string(a.Type))
- t.Errorf("missing evidence annotation (pkg=%s type=%s)", a.Name, a.Type)
- }
- }
- }
- })
- }
-
- if pkgTypesMissingEvidence.Size() > 0 {
- t.Log("Package types missing evidence annotations (dir resolver): ", pkgTypesMissingEvidence.List())
- }
-}
diff --git a/cmd/syft/internal/test/integration/distro_test.go b/cmd/syft/internal/test/integration/distro_test.go
deleted file mode 100644
index 6c8f90453..000000000
--- a/cmd/syft/internal/test/integration/distro_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/syft/linux"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestDistroImage(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-distro-id", source.SquashedScope)
-
- expected := &linux.Release{
- PrettyName: "BusyBox v1.31.1",
- Name: "busybox",
- ID: "busybox",
- IDLike: []string{"busybox"},
- Version: "1.31.1",
- VersionID: "1.31.1",
- }
-
- assert.Equal(t, expected, sbom.Artifacts.LinuxDistribution)
-}
diff --git a/cmd/syft/internal/test/integration/encode_decode_cycle_test.go b/cmd/syft/internal/test/integration/encode_decode_cycle_test.go
deleted file mode 100644
index 56bd7b772..000000000
--- a/cmd/syft/internal/test/integration/encode_decode_cycle_test.go
+++ /dev/null
@@ -1,118 +0,0 @@
-package integration
-
-import (
- "bytes"
- "regexp"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/sergi/go-diff/diffmatchpatch"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/cmd/syft/internal/options"
- "github.com/anchore/syft/syft/format"
- "github.com/anchore/syft/syft/format/cyclonedxjson"
- "github.com/anchore/syft/syft/format/cyclonedxxml"
- "github.com/anchore/syft/syft/format/syftjson"
- "github.com/anchore/syft/syft/source"
-)
-
-// TestEncodeDecodeEncodeCycleComparison is testing for differences in how SBOM documents get encoded on multiple cycles.
-// By encoding and decoding the sbom we can compare the differences between the set of resulting objects. However,
-// this requires specific comparisons being done, and select redactions/omissions being made. Additionally, there are
-// already unit tests on each format encoder-decoder for properly functioning comparisons in depth, so there is no need
-// to do an object-to-object comparison. For this reason this test focuses on a bytes-to-bytes comparison after an
-// encode-decode-encode loop which will detect lossy behavior in both directions.
-func TestEncodeDecodeEncodeCycleComparison(t *testing.T) {
- // use second image for relationships
- images := []string{
- "image-pkg-coverage",
- "image-owning-package",
- }
- tests := []struct {
- name string
- redactor func(in []byte) []byte
- json bool
- }{
- {
- name: syftjson.ID.String(),
- redactor: func(in []byte) []byte {
- // no redactions necessary
- return in
- },
- json: true,
- },
- {
- name: cyclonedxjson.ID.String(),
- redactor: func(in []byte) []byte {
- // unstable values
- in = regexp.MustCompile(`"(timestamp|serialNumber|bom-ref|ref)":\s*"(\n|[^"])+"`).ReplaceAll(in, []byte(`"$1": "redacted"`))
- in = regexp.MustCompile(`"(dependsOn)":\s*\[(?:\s|[^]])+]`).ReplaceAll(in, []byte(`"$1": []`))
- return in
- },
- json: true,
- },
- {
- name: cyclonedxxml.ID.String(),
- redactor: func(in []byte) []byte {
- // unstable values
- in = regexp.MustCompile(`(serialNumber|bom-ref|ref)="[^"]+"`).ReplaceAll(in, []byte{})
- in = regexp.MustCompile(`[^<]+`).ReplaceAll(in, []byte{})
-
- return in
- },
- },
- }
-
- opts := options.DefaultOutput()
- require.NoError(t, opts.PostLoad())
- encoderList, err := opts.Encoders()
- require.NoError(t, err)
-
- encoders := format.NewEncoderCollection(encoderList...)
- decoders := format.NewDecoderCollection(format.Decoders()...)
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- for _, image := range images {
- originalSBOM, _ := catalogFixtureImage(t, image, source.SquashedScope)
-
- f := encoders.GetByString(test.name)
- require.NotNil(t, f)
-
- var buff1 bytes.Buffer
- err := f.Encode(&buff1, originalSBOM)
- require.NoError(t, err)
-
- newSBOM, formatID, formatVersion, err := decoders.Decode(bytes.NewReader(buff1.Bytes()))
- require.NoError(t, err)
- require.Equal(t, f.ID(), formatID)
- require.Equal(t, f.Version(), formatVersion)
-
- var buff2 bytes.Buffer
- err = f.Encode(&buff2, *newSBOM)
- require.NoError(t, err)
-
- by1 := buff1.Bytes()
- by2 := buff2.Bytes()
- if test.redactor != nil {
- by1 = test.redactor(by1)
- by2 = test.redactor(by2)
- }
-
- if test.json {
- s1 := string(by1)
- s2 := string(by2)
- if diff := cmp.Diff(s1, s2); diff != "" {
- t.Errorf("Encode/Decode mismatch (-want +got) [image %q]:\n%s", image, diff)
- }
- } else if !assert.True(t, bytes.Equal(by1, by2)) {
- dmp := diffmatchpatch.New()
- diffs := dmp.DiffMain(string(by1), string(by2), true)
- t.Errorf("diff: %s", dmp.DiffPrettyText(diffs))
- }
- }
- })
- }
-}
diff --git a/cmd/syft/internal/test/integration/files_test.go b/cmd/syft/internal/test/integration/files_test.go
deleted file mode 100644
index 6794eed08..000000000
--- a/cmd/syft/internal/test/integration/files_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-package integration
-
-import (
- "crypto"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/clio"
- stereoscopeFile "github.com/anchore/stereoscope/pkg/file"
- "github.com/anchore/syft/cmd/syft/internal/options"
- "github.com/anchore/syft/syft/cataloging/filecataloging"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/file/cataloger/filecontent"
- "github.com/anchore/syft/syft/sbom"
-)
-
-func TestFileCataloging_Default(t *testing.T) {
- cfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{})
- cfg = cfg.WithFilesConfig(filecataloging.DefaultConfig())
- sbom, _ := catalogDirectoryWithConfig(t, "test-fixtures/files", cfg)
-
- var metadata map[file.Coordinates]file.Metadata
-
- var digests map[file.Coordinates][]file.Digest
-
- var contents map[file.Coordinates]string
-
- assertFileData(t, metadata, digests, contents, sbom)
-}
-
-func TestFileCataloging_AllFiles(t *testing.T) {
- cfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{})
- cfg = cfg.WithFilesConfig(filecataloging.Config{
- Selection: file.AllFilesSelection,
- Hashers: []crypto.Hash{
- crypto.SHA256,
- },
- Content: filecontent.Config{
- // this is enough to potentially capture a/file, a-small-file, a-symlink-to-a-small-file, and a-symlink-to-file
- // but the size of a/file will cause it to be filtered, and the symlinks will not be included since
- // they are not regular files
- Globs: []string{"**/*file"},
- SkipFilesAboveSize: 30,
- },
- })
- sbom, _ := catalogDirectoryWithConfig(t, "test-fixtures/files", cfg)
-
- pwd, err := os.Getwd()
- require.NoError(t, err)
-
- testPath := func(path string) string {
- return filepath.Join(pwd, "test-fixtures/files", path)
- }
-
- metadata := map[file.Coordinates]file.Metadata{
- {RealPath: ""}: {
- Path: testPath(""),
- Type: stereoscopeFile.TypeDirectory,
- },
- {RealPath: "/somewhere"}: {
- Path: testPath("/somewhere"),
- Type: stereoscopeFile.TypeDirectory,
- },
- {RealPath: "/somewhere/there"}: {
- Path: testPath("/somewhere/there"),
- Type: stereoscopeFile.TypeDirectory,
- },
- {RealPath: "/somewhere/there/is"}: {
- Path: testPath("/somewhere/there/is"),
- Type: stereoscopeFile.TypeDirectory,
- },
- {RealPath: "/somewhere/there/is/a"}: {
- Path: testPath("/somewhere/there/is/a"),
- Type: stereoscopeFile.TypeDirectory,
- },
- {RealPath: "/somewhere/there/is/a-small-file"}: {
- Path: testPath("/somewhere/there/is/a-small-file"),
- Type: stereoscopeFile.TypeRegular,
- MIMEType: "text/plain",
- },
- {RealPath: "/somewhere/there/is/a-symlink-to-a-small-file"}: {
- Path: testPath("/somewhere/there/is/a-symlink-to-a-small-file"),
- LinkDestination: testPath("/somewhere/there/is/a-small-file"),
- Type: stereoscopeFile.TypeSymLink,
- },
- {RealPath: "/somewhere/there/is/a-symlink-to-file"}: {
- Path: testPath("/somewhere/there/is/a-symlink-to-file"),
- LinkDestination: testPath("/somewhere/there/is/a/file"),
- Type: stereoscopeFile.TypeSymLink,
- },
- {RealPath: "/somewhere/there/is/a/file"}: {
- Path: testPath("/somewhere/there/is/a/file"),
- Type: stereoscopeFile.TypeRegular,
- MIMEType: "text/plain",
- },
- }
-
- digests := map[file.Coordinates][]file.Digest{
- {RealPath: "/somewhere/there/is/a-small-file"}: {
- file.Digest{Algorithm: "sha256", Value: "672c23470e4ce99cf270bb63ae66ad2b8a80aa19090c40e59fbb1229a4ab661a"},
- },
- {RealPath: "/somewhere/there/is/a/file"}: {
- file.Digest{Algorithm: "sha256", Value: "00dac26d6d94353ac0d92bb9640cba76f82f5ca8707bb845ecdc574bd002348e"},
- },
- }
-
- contents := map[file.Coordinates]string{
- {RealPath: "/somewhere/there/is/a-small-file"}: "c29tZSBjb250ZW50cyE=",
- }
-
- assertFileData(t, metadata, digests, contents, sbom)
-
-}
-
-func assertFileData(t testing.TB, metadata map[file.Coordinates]file.Metadata, digests map[file.Coordinates][]file.Digest, contents map[file.Coordinates]string, sbom sbom.SBOM) {
- metadataCompareOpts := cmp.Options{
- cmp.Comparer(func(x, y file.Metadata) bool {
- if x.Path != y.Path {
- t.Logf("path mismatch: %s != %s", x.Path, y.Path)
- return false
- }
-
- if x.Type != y.Type {
- t.Logf("type mismatch: %s != %s", x.Type, y.Type)
- return false
- }
-
- if x.LinkDestination != y.LinkDestination {
- t.Logf("link destination mismatch: %s != %s", x.LinkDestination, y.LinkDestination)
- return false
- }
-
- if x.MIMEType != y.MIMEType {
- t.Logf("mime type mismatch: %s != %s", x.MIMEType, y.MIMEType)
- return false
- }
-
- return true
- }),
- }
-
- if d := cmp.Diff(metadata, sbom.Artifacts.FileMetadata, metadataCompareOpts...); d != "" {
- t.Errorf("unexpected metadata (-want +got):\n%s", d)
- }
-
- assert.Equal(t, digests, sbom.Artifacts.FileDigests, "different digests detected")
- assert.Equal(t, contents, sbom.Artifacts.FileContents, "different contents detected")
-
-}
diff --git a/cmd/syft/internal/test/integration/go_compiler_detection_test.go b/cmd/syft/internal/test/integration/go_compiler_detection_test.go
deleted file mode 100644
index 8c440a030..000000000
--- a/cmd/syft/internal/test/integration/go_compiler_detection_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/cpe"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestGolangCompilerDetection(t *testing.T) {
- tests := []struct {
- name string
- image string
- expectedCompilers []string
- expectedCPE []cpe.CPE
- expectedPURL []string
- }{
- {
- name: "syft can detect a single golang compiler given the golang base image",
- image: "image-golang-compiler",
- expectedCompilers: []string{"go1.18.10"},
- expectedCPE: []cpe.CPE{cpe.Must("cpe:2.3:a:golang:go:1.18.10:-:*:*:*:*:*:*", cpe.GeneratedSource)},
- expectedPURL: []string{"pkg:golang/stdlib@1.18.10"},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, tt.image, source.SquashedScope)
- packages := sbom.Artifacts.Packages.PackagesByName("stdlib")
-
- foundCompilerVersions := make(map[string]struct{})
- foundCPE := make(map[cpe.CPE]struct{})
- foundPURL := make(map[string]struct{})
-
- for _, pkg := range packages {
- foundCompilerVersions[pkg.Version] = struct{}{}
- foundPURL[pkg.PURL] = struct{}{}
- for _, cpe := range pkg.CPEs {
- foundCPE[cpe] = struct{}{}
- }
- }
-
- for _, expectedCompiler := range tt.expectedCompilers {
- if _, ok := foundCompilerVersions[expectedCompiler]; !ok {
- t.Fatalf("expected %s version; not found in found compilers: %v", expectedCompiler, foundCompilerVersions)
- }
- }
-
- for _, expectedPURL := range tt.expectedPURL {
- if _, ok := foundPURL[expectedPURL]; !ok {
- t.Fatalf("expected %s purl; not found in found purl: %v", expectedPURL, expectedPURLs)
- }
- }
-
- for _, expectedCPE := range tt.expectedCPE {
- if _, ok := foundCPE[expectedCPE]; !ok {
- t.Fatalf("expected %s version; not found in found cpe: %v", expectedCPE, expectedCPE)
- }
- }
- })
- }
-}
diff --git a/cmd/syft/internal/test/integration/java_purl_test.go b/cmd/syft/internal/test/integration/java_purl_test.go
deleted file mode 100644
index a7adbc396..000000000
--- a/cmd/syft/internal/test/integration/java_purl_test.go
+++ /dev/null
@@ -1,638 +0,0 @@
-package integration
-
-import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestJavaPURLs(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-test-java-purls", source.SquashedScope)
- found := make(map[string]string)
- for _, p := range sbom.Artifacts.Packages.Sorted() {
- if p.Type != pkg.JavaPkg && p.Type != pkg.JenkinsPluginPkg {
- continue
- }
-
- if metadata, ok := p.Metadata.(pkg.JavaArchive); ok {
- if _, ok := noAssertion[metadata.VirtualPath]; ok {
- continue
- }
-
- found[metadata.VirtualPath] = p.PURL
- }
- }
- for key, expectedPURL := range expectedPURLs {
- purl := found[key]
- assert.Equal(t, expectedPURL, purl, fmt.Sprintf("found wrong or missing PURL for %s want %s, got %s", key, expectedPURL, purl))
- }
- for key, foundPURL := range found {
- expectedPURL := expectedPURLs[key]
- assert.Equal(t, expectedPURL, foundPURL, fmt.Sprintf("found extra purl for %s want %s, got %s", key, expectedPURL, foundPURL))
- }
-}
-
-// This is for artifacts that either don't have a known groupid/artifactid
-// since they aren't available on a known maven repository, or where syft is currently
-// generating the incorrect PURL
-var noAssertion = map[string]string{
- // These are not known to exist on any public maven repo, so no real PURL should be asserted
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/jopenssl.jar": "pkg:maven/jopenssl/jopenssl",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/json/ext/generator.jar": "pkg:maven/generator/generator",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/json/ext/parser.jar": "pkg:maven/parser/parser",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/psych.jar": "pkg:maven/psych/psych",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/racc/cparse-jruby.jar": "pkg:maven/cparse-jruby/cparse-jruby",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar": "pkg:maven/readline/readline",
- "/packages/org.eclipse.ant.core-3.7.0.jar:lib/antsupportlib.jar": "pkg:maven/antsupportlib/antsupportlib",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar": "pkg:maven/sdk/sdk@3.0",
-
- // syft generates incorrect purls
- "/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
- "/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
- "/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar": "pkg:maven/asm/asm@2.2.3",
- "/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar": "pkg:maven/asm/asm-commons@2.2.3",
- "/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar": "pkg:maven/asm/asm-tree@2.2.3",
- "/packages/hudson.war:WEB-INF/slave.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- "/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3_min/xpp3_min@1.1.4c",
- "/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar": "pkg:maven/xpp3/xpp3@1.1.4c",
- "/packages/hudson.war:WEB-INF/hudson-cli.jar": "pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390",
- "/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar": "pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3",
- "/packages/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3/xpp3_min@1.1.4c",
-
- // syft generates an unstable purl
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-auth": "pkg:maven/org.apache.dubbo/dubbo-auth@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-cluster": "pkg:maven/org.apache.dubbo/dubbo-cluster@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-common": "pkg:maven/org.apache.dubbo/dubbo-common@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-compatible": "pkg:maven/org.apache.dubbo/dubbo-compatible@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-api": "pkg:maven/org.apache.dubbo/dubbo-config-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-spring": "pkg:maven/org.apache.dubbo/dubbo-config-spring@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-apollo": "pkg:maven/org.apache.dubbo/dubbo-configcenter-apollo@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-nacos": "pkg:maven/org.apache.dubbo/dubbo-configcenter-nacos@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-configcenter-zookeeper@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-api": "pkg:maven/org.apache.dubbo/dubbo-container-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-spring": "pkg:maven/org.apache.dubbo/dubbo-container-spring@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-cache": "pkg:maven/org.apache.dubbo/dubbo-filter-cache@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-validation": "pkg:maven/org.apache.dubbo/dubbo-filter-validation@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-kubernetes": "pkg:maven/org.apache.dubbo/dubbo-kubernetes@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-api": "pkg:maven/org.apache.dubbo/dubbo-metadata-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-definition-protobuf": "pkg:maven/org.apache.dubbo/dubbo-metadata-definition-protobuf@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-nacos": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-nacos@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-redis": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-redis@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-zookeeper@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-api": "pkg:maven/org.apache.dubbo/dubbo-metrics-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-prometheus": "pkg:maven/org.apache.dubbo/dubbo-metrics-prometheus@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-api": "pkg:maven/org.apache.dubbo/dubbo-monitor-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-default": "pkg:maven/org.apache.dubbo/dubbo-monitor-default@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-qos": "pkg:maven/org.apache.dubbo/dubbo-qos@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-reactive": "pkg:maven/org.apache.dubbo/dubbo-reactive@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-api": "pkg:maven/org.apache.dubbo/dubbo-registry-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multicast": "pkg:maven/org.apache.dubbo/dubbo-registry-multicast@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multiple": "pkg:maven/org.apache.dubbo/dubbo-registry-multiple@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-nacos": "pkg:maven/org.apache.dubbo/dubbo-registry-nacos@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-registry-zookeeper@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-api": "pkg:maven/org.apache.dubbo/dubbo-remoting-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-http": "pkg:maven/org.apache.dubbo/dubbo-remoting-http@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty": "pkg:maven/org.apache.dubbo/dubbo-remoting-netty@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty4": "pkg:maven/org.apache.dubbo/dubbo-remoting-netty4@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper-curator5": "pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper-curator5@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-api": "pkg:maven/org.apache.dubbo/dubbo-rpc-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-dubbo": "pkg:maven/org.apache.dubbo/dubbo-rpc-dubbo@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-grpc": "pkg:maven/org.apache.dubbo/dubbo-rpc-grpc@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-injvm": "pkg:maven/org.apache.dubbo/dubbo-rpc-injvm@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-rest": "pkg:maven/org.apache.dubbo/dubbo-rpc-rest@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-triple": "pkg:maven/org.apache.dubbo/dubbo-rpc-triple@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-api": "pkg:maven/org.apache.dubbo/dubbo-serialization-api@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-fastjson2": "pkg:maven/org.apache.dubbo/dubbo-serialization-fastjson2@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-hessian2": "pkg:maven/org.apache.dubbo/dubbo-serialization-hessian2@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-jdk": "pkg:maven/org.apache.dubbo/dubbo-serialization-jdk@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-xds": "pkg:maven/org.apache.dubbo/dubbo-xds@3.1.4",
- "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
- "/packages/dubbo-3.1.4.jar": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
-}
-
-// Constructed by:
-// syft anchore/test_images:java-1abc58f -o json | jq -r '.artifacts.[] | [.metadata.virtualPath, .purl, ""] | @csv' | grep 'pkg:maven' | sort | uniq >> /tmp/java_artifacts_mapping.txt
-// The map was then hand-edited for correctness by comparing to Maven Central.
-var expectedPURLs = map[string]string{
- "/packages/activemq-client-5.18.2.jar": "pkg:maven/org.apache.activemq/activemq-client@5.18.2",
- "/packages/activemq-protobuf-1.1.jar": "pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1",
- // "/packages/akka-actor_2.13-2.6.6.jar": "pkg:maven/com.typesafe.akka/akka-actor_2.13@2.6.6",
- // "/packages/akka-management-cluster-bootstrap_2.13-1.2.0.jar": "pkg:maven/com.lightbend.akka.management/akka-management-cluster-bootstrap_2.13@1.2.0",
- "/packages/ant-1.10.3.jar": "pkg:maven/org.apache.ant/ant@1.10.3",
- "/packages/apache-chainsaw-2.1.0.jar": "pkg:maven/log4j/apache-chainsaw@2.1.0",
- "/packages/apache-log4j-extras-1.1.jar": "pkg:maven/log4j/apache-log4j-extras@1.1",
- "/packages/apoc-4.4.0.11.jar": "pkg:maven/org.neo4j.procedure/apoc@4.4.0.11",
- "/packages/bc-fips-1.0.2.3.jar": "pkg:maven/org.bouncycastle/bc-fips@1.0.2.3",
- "/packages/camel-core-3.1.0.jar": "pkg:maven/org.apache.camel/camel-core@3.1.0",
- "/packages/cassandra-all-4.1.1.jar": "pkg:maven/org.apache.cassandra/cassandra-all@4.1.1",
- "/packages/commons-logging-1.1.1.jar": "pkg:maven/commons-logging/commons-logging@1.1.1",
- "/packages/commons-vfs-1.0.jar": "pkg:maven/commons-vfs/commons-vfs@1.0",
- "/packages/cxf-rt-transports-http-2.7.3.jar": "pkg:maven/org.apache.cxf/cxf-rt-transports-http@2.7.3",
- "/packages/dubbo-3.1.4.jar:com.alibaba:hessian-lite": "pkg:maven/com.alibaba/hessian-lite@3.2.13",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-auth": "pkg:maven/org.apache.dubbo/dubbo-auth@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-cluster": "pkg:maven/org.apache.dubbo/dubbo-cluster@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-common": "pkg:maven/org.apache.dubbo/dubbo-common@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-compatible": "pkg:maven/org.apache.dubbo/dubbo-compatible@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-api": "pkg:maven/org.apache.dubbo/dubbo-config-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-config-spring": "pkg:maven/org.apache.dubbo/dubbo-config-spring@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-apollo": "pkg:maven/org.apache.dubbo/dubbo-configcenter-apollo@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-nacos": "pkg:maven/org.apache.dubbo/dubbo-configcenter-nacos@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-configcenter-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-configcenter-zookeeper@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-api": "pkg:maven/org.apache.dubbo/dubbo-container-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-container-spring": "pkg:maven/org.apache.dubbo/dubbo-container-spring@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-cache": "pkg:maven/org.apache.dubbo/dubbo-filter-cache@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-filter-validation": "pkg:maven/org.apache.dubbo/dubbo-filter-validation@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-kubernetes": "pkg:maven/org.apache.dubbo/dubbo-kubernetes@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-api": "pkg:maven/org.apache.dubbo/dubbo-metadata-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-definition-protobuf": "pkg:maven/org.apache.dubbo/dubbo-metadata-definition-protobuf@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-nacos": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-nacos@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-redis": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-redis@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metadata-report-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-metadata-report-zookeeper@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-api": "pkg:maven/org.apache.dubbo/dubbo-metrics-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-metrics-prometheus": "pkg:maven/org.apache.dubbo/dubbo-metrics-prometheus@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-api": "pkg:maven/org.apache.dubbo/dubbo-monitor-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-monitor-default": "pkg:maven/org.apache.dubbo/dubbo-monitor-default@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-qos": "pkg:maven/org.apache.dubbo/dubbo-qos@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-reactive": "pkg:maven/org.apache.dubbo/dubbo-reactive@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-api": "pkg:maven/org.apache.dubbo/dubbo-registry-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multicast": "pkg:maven/org.apache.dubbo/dubbo-registry-multicast@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-multiple": "pkg:maven/org.apache.dubbo/dubbo-registry-multiple@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-nacos": "pkg:maven/org.apache.dubbo/dubbo-registry-nacos@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-registry-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-registry-zookeeper@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-api": "pkg:maven/org.apache.dubbo/dubbo-remoting-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-http": "pkg:maven/org.apache.dubbo/dubbo-remoting-http@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty": "pkg:maven/org.apache.dubbo/dubbo-remoting-netty@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-netty4": "pkg:maven/org.apache.dubbo/dubbo-remoting-netty4@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper": "pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-remoting-zookeeper-curator5": "pkg:maven/org.apache.dubbo/dubbo-remoting-zookeeper-curator5@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-api": "pkg:maven/org.apache.dubbo/dubbo-rpc-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-dubbo": "pkg:maven/org.apache.dubbo/dubbo-rpc-dubbo@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-grpc": "pkg:maven/org.apache.dubbo/dubbo-rpc-grpc@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-injvm": "pkg:maven/org.apache.dubbo/dubbo-rpc-injvm@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-rest": "pkg:maven/org.apache.dubbo/dubbo-rpc-rest@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-rpc-triple": "pkg:maven/org.apache.dubbo/dubbo-rpc-triple@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-api": "pkg:maven/org.apache.dubbo/dubbo-serialization-api@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-fastjson2": "pkg:maven/org.apache.dubbo/dubbo-serialization-fastjson2@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-hessian2": "pkg:maven/org.apache.dubbo/dubbo-serialization-hessian2@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-serialization-jdk": "pkg:maven/org.apache.dubbo/dubbo-serialization-jdk@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo-xds": "pkg:maven/org.apache.dubbo/dubbo-xds@3.1.4",
- // "/packages/dubbo-3.1.4.jar:org.apache.dubbo:dubbo": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
- // "/packages/dubbo-3.1.4.jar": "pkg:maven/org.apache.dubbo/dubbo@3.1.4",
- "/packages/elasticsearch-8.10.2.jar": "pkg:maven/org.elasticsearch/elasticsearch@8.10.2",
- "/packages/elasticsearch-rest-client-sniffer-7.17.11.jar": "pkg:maven/org.elasticsearch.client/elasticsearch-rest-client-sniffer@7.17.11",
- "/packages/example-java-app-gradle-0.1.0.ear": "pkg:maven/example-java-app-gradle/example-java-app-gradle@0.1.0",
- "/packages/geode-core-1.14.3.jar": "pkg:maven/org.apache.geode/geode-core@1.14.3",
- "/packages/github-api-1.118.jar": "pkg:maven/org.kohsuke/github-api@1.118",
- "/packages/google-oauth-client-1.25.0.jar": "pkg:maven/com.google.oauth-client/google-oauth-client@1.25.0",
- "/packages/graphql-java-20.0.jar:com.google.guava:guava": "pkg:maven/com.google.guava/guava@31.0.1-jre",
- "/packages/graphql-java-20.0.jar:org.antlr:antlr4-runtime": "pkg:maven/org.antlr/antlr4-runtime@4.9.3",
- "/packages/graphql-java-20.0.jar": "pkg:maven/com.graphql-java/graphql-java@20.0",
- "/packages/guava-29.0-jre.jar": "pkg:maven/com.google.guava/guava@29.0-jre",
- "/packages/hadoop-common-3.3.2.jar": "pkg:maven/org.apache.hadoop/hadoop-common@3.3.2",
- "/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.core:jackson-core": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.15.2",
- "/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.jr:jackson-jr-annotation-support": "pkg:maven/com.fasterxml.jackson.jr/jackson-jr-annotation-support@2.15.2",
- "/packages/hazelcast-5.2.4.jar:com.fasterxml.jackson.jr:jackson-jr-objects": "pkg:maven/com.fasterxml.jackson.jr/jackson-jr-objects@2.15.2",
- "/packages/hazelcast-5.2.4.jar:com.github.erosb:everit-json-schema": "pkg:maven/com.github.erosb/everit-json-schema@1.14.2",
- "/packages/hazelcast-5.2.4.jar:com.zaxxer:HikariCP": "pkg:maven/com.zaxxer/HikariCP@4.0.3",
- "/packages/hazelcast-5.2.4.jar:io.github.classgraph:classgraph": "pkg:maven/io.github.classgraph/classgraph@4.8.149",
- "/packages/hazelcast-5.2.4.jar:org.json:json": "pkg:maven/org.json/json@20230227",
- "/packages/hazelcast-5.2.4.jar:org.snakeyaml:snakeyaml-engine": "pkg:maven/org.snakeyaml/snakeyaml-engine@2.3",
- "/packages/hazelcast-5.2.4.jar": "pkg:maven/com.hazelcast/hazelcast@5.2.4",
- "/packages/hibernate-validator-6.1.3.Final.jar": "pkg:maven/org.hibernate.validator/hibernate-validator@6.1.3.Final",
- "/packages/http2-common-11.0.16.jar": "pkg:maven/org.eclipse.jetty.http2/http2-common@11.0.16",
- "/packages/hudson.war:WEB-INF/hudson-cli.jar:args4j:args4j": "pkg:maven/args4j/args4j@2.0.16",
- "/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet:animal-sniffer-annotation": "pkg:maven/org.jvnet/animal-sniffer-annotation@1.0",
- "/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet.hudson.main:remoting": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- "/packages/hudson.war:WEB-INF/hudson-cli.jar:org.jvnet.localizer:localizer": "pkg:maven/org.jvnet.localizer/localizer@1.10",
- // "/packages/hudson.war:WEB-INF/hudson-cli.jar": "pkg:maven/org.jvnet.hudson.main/hudson-cli@1.390",
- "/packages/hudson.war:WEB-INF/lib/access-modifier-annotation-1.0.jar": "pkg:maven/org.kohsuke/access-modifier-annotation@1.0",
- "/packages/hudson.war:WEB-INF/lib/acegi-security-1.0.5.jar": "pkg:maven/org.acegisecurity/acegi-security@1.0.5",
- "/packages/hudson.war:WEB-INF/lib/activation-1.1.1-hudson-1.jar": "pkg:maven/org.jvnet.hudson/activation@1.1.1-hudson-1",
- "/packages/hudson.war:WEB-INF/lib/akuma-1.2.jar": "pkg:maven/com.sun.akuma/akuma@1.2",
- "/packages/hudson.war:WEB-INF/lib/annotation-indexer-1.2.jar": "pkg:maven/org.jvnet.hudson/annotation-indexer@1.2",
- "/packages/hudson.war:WEB-INF/lib/ant-1.8.0.jar": "pkg:maven/org.apache.ant/ant@1.8.0",
- "/packages/hudson.war:WEB-INF/lib/ant-launcher-1.8.0.jar": "pkg:maven/org.apache.ant/ant-launcher@1.8.0",
- "/packages/hudson.war:WEB-INF/lib/antlr-2.7.6.jar": "pkg:maven/antlr/antlr@2.7.6",
- "/packages/hudson.war:WEB-INF/lib/aopalliance-1.0.jar": "pkg:maven/aopalliance/aopalliance@1.0",
- "/packages/hudson.war:WEB-INF/lib/args4j-2.0.16.jar": "pkg:maven/args4j/args4j@2.0.16",
- // "/packages/hudson.war:WEB-INF/lib/asm-2.2.3.jar": "pkg:maven/asm/asm@2.2.3",
- // "/packages/hudson.war:WEB-INF/lib/asm-commons-2.2.3.jar": "pkg:maven/asm/asm-commons@2.2.3",
- // "/packages/hudson.war:WEB-INF/lib/asm-tree-2.2.3.jar": "pkg:maven/asm/asm-tree@2.2.3",
- "/packages/hudson.war:WEB-INF/lib/avalon-framework-4.1.3.jar": "pkg:maven/avalon-framework/avalon-framework@4.1.3",
- "/packages/hudson.war:WEB-INF/lib/bridge-method-annotation-1.2.jar": "pkg:maven/com.infradna.tool/bridge-method-annotation@1.2",
- "/packages/hudson.war:WEB-INF/lib/cli-1.390.jar": "pkg:maven/org.jvnet.hudson.main/cli@1.390",
- "/packages/hudson.war:WEB-INF/lib/commons-beanutils-1.8.0.jar": "pkg:maven/commons-beanutils/commons-beanutils@1.8.0",
- "/packages/hudson.war:WEB-INF/lib/commons-codec-1.4.jar": "pkg:maven/commons-codec/commons-codec@1.4",
- "/packages/hudson.war:WEB-INF/lib/commons-collections-3.2.jar": "pkg:maven/commons-collections/commons-collections@3.2",
- "/packages/hudson.war:WEB-INF/lib/commons-digester-1.7.jar": "pkg:maven/commons-digester/commons-digester@1.7",
- "/packages/hudson.war:WEB-INF/lib/commons-discovery-0.4.jar": "pkg:maven/commons-discovery/commons-discovery@0.4",
- "/packages/hudson.war:WEB-INF/lib/commons-fileupload-1.2.1.jar": "pkg:maven/commons-fileupload/commons-fileupload@1.2.1",
- "/packages/hudson.war:WEB-INF/lib/commons-io-1.4.jar": "pkg:maven/commons-io/commons-io@1.4",
- "/packages/hudson.war:WEB-INF/lib/commons-jelly-1.1-hudson-20100305.jar": "pkg:maven/org.jvnet.hudson/commons-jelly@1.1-hudson-20100305",
- "/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-define-1.0.1-hudson-20071021.jar": "pkg:maven/org.jvnet.hudson/commons-jelly-tags-define@1.0.1-hudson-20071021",
- "/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-fmt-1.0.jar": "pkg:maven/commons-jelly/commons-jelly-tags-fmt@1.0",
- "/packages/hudson.war:WEB-INF/lib/commons-jelly-tags-xml-1.1.jar": "pkg:maven/commons-jelly/commons-jelly-tags-xml@1.1",
- "/packages/hudson.war:WEB-INF/lib/commons-jexl-1.1-hudson-20090508.jar": "pkg:maven/org.jvnet.hudson/commons-jexl@1.1-hudson-20090508",
- "/packages/hudson.war:WEB-INF/lib/commons-lang-2.4.jar": "pkg:maven/commons-lang/commons-lang@2.4",
- "/packages/hudson.war:WEB-INF/lib/commons-logging-1.1.jar": "pkg:maven/commons-logging/commons-logging@1.1",
- "/packages/hudson.war:WEB-INF/lib/commons-pool-1.3.jar": "pkg:maven/commons-pool/commons-pool@1.3",
- "/packages/hudson.war:WEB-INF/lib/crypto-util-1.0.jar": "pkg:maven/org.jvnet.hudson/crypto-util@1.0",
- // "/packages/hudson.war:WEB-INF/lib/dom4j-1.6.1-hudson-3.jar": "pkg:maven/org.jvnet.hudson.dom4j/dom4j@1.6.1-hudson-3",
- "/packages/hudson.war:WEB-INF/lib/embedded_su4j-1.1.jar": "pkg:maven/com.sun.solaris/embedded_su4j@1.1",
- "/packages/hudson.war:WEB-INF/lib/ezmorph-1.0.3.jar": "pkg:maven/net.sf.ezmorph/ezmorph@1.0.3",
- "/packages/hudson.war:WEB-INF/lib/graph-layouter-1.0.jar": "pkg:maven/org.kohsuke/graph-layouter@1.0",
- "/packages/hudson.war:WEB-INF/lib/groovy-all-1.6.0.jar": "pkg:maven/org.codehaus.groovy/groovy-all@1.6.0",
- "/packages/hudson.war:WEB-INF/lib/guava-r06.jar": "pkg:maven/com.google.guava/guava@r06",
- "/packages/hudson.war:WEB-INF/lib/hudson-core-1.390.jar": "pkg:maven/org.jvnet.hudson.main/hudson-core@1.390",
- "/packages/hudson.war:WEB-INF/lib/j-interop-2.0.5.jar": "pkg:maven/j-interop/j-interop@2.0.5",
- "/packages/hudson.war:WEB-INF/lib/j-interopdeps-2.0.5.jar": "pkg:maven/j-interopdeps/j-interopdeps@2.0.5",
- "/packages/hudson.war:WEB-INF/lib/jaxen-1.1-beta-11.jar": "pkg:maven/org.jaxen/jaxen@1.1-beta-11",
- "/packages/hudson.war:WEB-INF/lib/jcaptcha-all-1.0-RC6.jar": "pkg:maven/jcaptcha-all/jcaptcha-all@1.0-RC6",
- "/packages/hudson.war:WEB-INF/lib/jcifs-1.3.14-kohsuke-1.jar": "pkg:maven/org.samba.jcifs/jcifs@1.3.14-kohsuke-1",
- "/packages/hudson.war:WEB-INF/lib/jcommon-1.0.12.jar": "pkg:maven/jfree/jcommon@1.0.12",
- "/packages/hudson.war:WEB-INF/lib/jfreechart-1.0.9.jar": "pkg:maven/jfreechart/jfreechart@1.0.9",
- "/packages/hudson.war:WEB-INF/lib/jinterop-proxy-1.1.jar": "pkg:maven/org.kohsuke.jinterop/jinterop-proxy@1.1",
- "/packages/hudson.war:WEB-INF/lib/jinterop-wmi-1.0.jar": "pkg:maven/org.jvnet.hudson/jinterop-wmi@1.0",
- "/packages/hudson.war:WEB-INF/lib/jline-0.9.94.jar": "pkg:maven/jline/jline@0.9.94",
- "/packages/hudson.war:WEB-INF/lib/jmdns-3.1.6-hudson-2.jar": "pkg:maven/com.strangeberry.jmdns.tools.Main/jmdns@3.1.6-hudson-2",
- "/packages/hudson.war:WEB-INF/lib/jna-3.2.4.jar": "pkg:maven/com.sun.jna/jna@3.2.4",
- "/packages/hudson.war:WEB-INF/lib/jna-posix-1.0.3.jar": "pkg:maven/org.jruby.ext.posix/jna-posix@1.0.3",
- "/packages/hudson.war:WEB-INF/lib/json-lib-2.1-rev6.jar": "pkg:maven/json-lib/json-lib@2.1-rev6",
- "/packages/hudson.war:WEB-INF/lib/jstl-1.1.0.jar": "pkg:maven/com.sun/jstl@1.1.0",
- "/packages/hudson.war:WEB-INF/lib/jtidy-4aug2000r7-dev-hudson-1.jar": "pkg:maven/jtidy/jtidy@4aug2000r7-dev-hudson-1",
- "/packages/hudson.war:WEB-INF/lib/libpam4j-1.2.jar": "pkg:maven/org.jvnet.libpam4j/libpam4j@1.2",
- "/packages/hudson.war:WEB-INF/lib/libzfs-0.5.jar": "pkg:maven/org.jvnet.libzfs/libzfs@0.5",
- "/packages/hudson.war:WEB-INF/lib/localizer-1.10.jar": "pkg:maven/org.jvnet.localizer/localizer@1.10",
- "/packages/hudson.war:WEB-INF/lib/log4j-1.2.9.jar": "pkg:maven/log4j/log4j@1.2.9",
- "/packages/hudson.war:WEB-INF/lib/logkit-1.0.1.jar": "pkg:maven/logkit/logkit@1.0.1",
- "/packages/hudson.war:WEB-INF/lib/mail-1.4.jar": "pkg:maven/com.sun/mail@1.4",
- "/packages/hudson.war:WEB-INF/lib/memory-monitor-1.3.jar": "pkg:maven/org.jvnet.hudson/memory-monitor@1.3",
- "/packages/hudson.war:WEB-INF/lib/oro-2.0.8.jar": "pkg:maven/org.apache.oro/oro@2.0.8",
- "/packages/hudson.war:WEB-INF/lib/remoting-1.390.jar:args4j:args4j": "pkg:maven/args4j/args4j@2.0.16",
- "/packages/hudson.war:WEB-INF/lib/remoting-1.390.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- "/packages/hudson.war:WEB-INF/lib/robust-http-client-1.1.jar": "pkg:maven/org.jvnet.robust-http-client/robust-http-client@1.1",
- "/packages/hudson.war:WEB-INF/lib/sezpoz-1.7.jar": "pkg:maven/net.java.sezpoz/sezpoz@1.7",
- "/packages/hudson.war:WEB-INF/lib/spring-aop-2.5.jar": "pkg:maven/org.springframework/spring-aop@2.5",
- "/packages/hudson.war:WEB-INF/lib/spring-beans-2.5.jar": "pkg:maven/org.springframework/spring-beans@2.5",
- "/packages/hudson.war:WEB-INF/lib/spring-context-2.5.jar": "pkg:maven/org.springframework/spring-context@2.5",
- "/packages/hudson.war:WEB-INF/lib/spring-core-2.5.jar": "pkg:maven/org.springframework/spring-core@2.5",
- "/packages/hudson.war:WEB-INF/lib/spring-dao-1.2.9.jar": "pkg:maven/org.springframework/spring-dao@1.2.9",
- "/packages/hudson.war:WEB-INF/lib/spring-jdbc-1.2.9.jar": "pkg:maven/org.springframework/spring-jdbc@1.2.9",
- "/packages/hudson.war:WEB-INF/lib/spring-web-2.5.jar": "pkg:maven/org.springframework/spring-web@2.5",
- "/packages/hudson.war:WEB-INF/lib/stapler-1.155.jar": "pkg:maven/org.kohsuke.stapler/stapler@1.155",
- "/packages/hudson.war:WEB-INF/lib/stapler-adjunct-timeline-1.2.jar": "pkg:maven/org.kohsuke.stapler/stapler-adjunct-timeline@1.2",
- "/packages/hudson.war:WEB-INF/lib/stapler-jelly-1.155.jar": "pkg:maven/org.kohsuke.stapler/stapler-jelly@1.155",
- "/packages/hudson.war:WEB-INF/lib/stax-api-1.0.1.jar": "pkg:maven/stax-api/stax-api@1.0.1",
- "/packages/hudson.war:WEB-INF/lib/task-reactor-1.2.jar": "pkg:maven/org.jvnet.hudson/task-reactor@1.2",
- "/packages/hudson.war:WEB-INF/lib/tiger-types-1.3.jar": "pkg:maven/org.jvnet/tiger-types@1.3",
- "/packages/hudson.war:WEB-INF/lib/trilead-putty-extension-1.0.jar": "pkg:maven/org.kohsuke/trilead-putty-extension@1.0",
- "/packages/hudson.war:WEB-INF/lib/trilead-ssh2-build212-hudson-5.jar": "pkg:maven/org.jvnet.hudson/trilead-ssh2@build212-hudson-5",
- "/packages/hudson.war:WEB-INF/lib/txw2-20070624.jar": "pkg:maven/txw2/txw2@20070624",
- "/packages/hudson.war:WEB-INF/lib/windows-remote-command-1.0.jar": "pkg:maven/org.jvnet.hudson/windows-remote-command@1.0",
- "/packages/hudson.war:WEB-INF/lib/winp-1.14.jar": "pkg:maven/org.jvnet.winp/winp@1.14",
- "/packages/hudson.war:WEB-INF/lib/wstx-asl-3.2.7.jar": "pkg:maven/wstx-asl/wstx-asl@3.2.7",
- // "/packages/hudson.war:WEB-INF/lib/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3_min/xpp3_min@1.1.4c",
- // "/packages/hudson.war:WEB-INF/lib/xpp3-1.1.4c.jar": "pkg:maven/xpp3/xpp3@1.1.4c",
- "/packages/hudson.war:WEB-INF/lib/xstream-1.3.1-hudson-8.jar": "pkg:maven/org.jvnet.hudson/xstream@1.3.1-hudson-8",
- "/packages/hudson.war:WEB-INF/plugins/cvs.hpi": "pkg:maven/org.jvnet.hudson.plugins/cvs@1.2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/avalon-framework-4.1.3.jar": "pkg:maven/avalon-framework/avalon-framework@4.1.3",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/classworlds-1.1.jar": "pkg:maven/org.codehaus.classworlds/classworlds@1.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-codec-1.4.jar": "pkg:maven/commons-codec/commons-codec@1.4",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-httpclient-3.1-rc1.jar": "pkg:maven/commons-httpclient/commons-httpclient@3.1-rc1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/commons-logging-1.1.jar": "pkg:maven/commons-logging/commons-logging@1.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/doxia-sink-api-1.0-alpha-10.jar": "pkg:maven/org.apache.maven.doxia/doxia-sink-api@1.0-alpha-10",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/jsch-0.1.27.jar": "pkg:maven/jsch/jsch@0.1.27",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/log4j-1.2.9.jar": "pkg:maven/log4j/log4j@1.2.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/logkit-1.0.1.jar": "pkg:maven/logkit/logkit@1.0.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-agent-1.390.jar": "pkg:maven/org.jvnet.hudson.main/maven-agent@1.390",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-artifact-2.0.9.jar": "pkg:maven/org.apache.maven/maven-artifact@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-artifact-manager-2.0.9.jar": "pkg:maven/org.apache.maven/maven-artifact-manager@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-core-2.0.9.jar": "pkg:maven/org.apache.maven/maven-core@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-embedder-2.0.4-hudson-1.jar": "pkg:maven/org.jvnet.hudson/maven-embedder@2.0.4-hudson-1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-embedder-2.0.4.jar": "pkg:maven/org.apache.maven/maven-embedder@2.0.4",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-error-diagnostics-2.0.9.jar": "pkg:maven/org.apache.maven/maven-error-diagnostics@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-interceptor-1.390.jar": "pkg:maven/org.jvnet.hudson.main/maven-interceptor@1.390",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-model-2.0.9.jar": "pkg:maven/org.apache.maven/maven-model@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-monitor-2.0.9.jar": "pkg:maven/org.apache.maven/maven-monitor@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-api-2.0.9.jar": "pkg:maven/org.apache.maven/maven-plugin-api@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-descriptor-2.0.9.jar": "pkg:maven/org.apache.maven/maven-plugin-descriptor@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-parameter-documenter-2.0.9.jar": "pkg:maven/org.apache.maven/maven-plugin-parameter-documenter@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-plugin-registry-2.0.9.jar": "pkg:maven/org.apache.maven/maven-plugin-registry@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-profile-2.0.9.jar": "pkg:maven/org.apache.maven/maven-profile@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-project-2.0.9.jar": "pkg:maven/org.apache.maven/maven-project@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-reporting-api-2.0.9.jar": "pkg:maven/org.apache.maven.reporting/maven-reporting-api@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-repository-metadata-2.0.9.jar": "pkg:maven/org.apache.maven/maven-repository-metadata@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven-settings-2.0.9.jar": "pkg:maven/org.apache.maven/maven-settings@2.0.9",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/maven2.1-interceptor-1.2.jar": "pkg:maven/org.jvnet.hudson/maven2.1-interceptor@1.2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-container-default-1.0-alpha-9-stable-1.jar": "pkg:maven/org.codehaus.plexus/plexus-container-default@1.0-alpha-9-stable-1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-interactivity-api-1.0-alpha-4.jar": "pkg:maven/org.codehaus.plexus/plexus-interactivity-api@1.0-alpha-4",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/plexus-utils-1.5.1.jar": "pkg:maven/org.codehaus.plexus/plexus-utils@1.5.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/slide-webdavlib-2.1.jar": "pkg:maven/slide-webdavlib/slide-webdavlib@2.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-file-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-file@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-http-lightweight-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-http-lightweight@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-http-shared-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-http-shared@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-provider-api-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-provider-api@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-ssh@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-common-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-ssh-common@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-ssh-external-1.0-beta-2.jar": "pkg:maven/org.apache.maven.wagon/wagon-ssh-external@1.0-beta-2",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/wagon-webdav-1.0-beta-2-hudson-1.jar": "pkg:maven/org.jvnet.hudson/wagon-webdav@1.0-beta-2-hudson-1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi:WEB-INF/lib/xml-im-exporter-1.1.jar": "pkg:maven/xml-im-exporter/xml-im-exporter@1.1",
- "/packages/hudson.war:WEB-INF/plugins/maven-plugin.hpi": "pkg:maven/org.jvnet.hudson.main/maven-plugin@1.390",
- "/packages/hudson.war:WEB-INF/plugins/ssh-slaves.hpi": "pkg:maven/org.jvnet.hudson.plugins/ssh-slaves@0.14",
- "/packages/hudson.war:WEB-INF/plugins/subversion.hpi:WEB-INF/lib/svnkit-1.3.4-hudson-2.jar": "pkg:maven/svnkit/svnkit@1.3.4-hudson-2",
- "/packages/hudson.war:WEB-INF/plugins/subversion.hpi": "pkg:maven/org.jvnet.hudson.plugins/subversion@1.20",
- "/packages/hudson.war:WEB-INF/remoting.jar:args4j:args4j": "pkg:maven/args4j/args4j@2.0.16",
- "/packages/hudson.war:WEB-INF/remoting.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- "/packages/hudson.war:WEB-INF/slave.jar:args4j:args4j": "pkg:maven/args4j/args4j@2.0.16",
- "/packages/hudson.war:WEB-INF/slave.jar:org.jvnet.hudson.main:remoting": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- // "/packages/hudson.war:WEB-INF/slave.jar": "pkg:maven/org.jvnet.hudson.main/remoting@1.390",
- "/packages/hudson.war:winstone.jar": "pkg:maven/org.jvnet.hudson.winstone/winstone@0.9.10-hudson-24",
- "/packages/hudson.war": "pkg:maven/org.jvnet.hudson.main/hudson-war@1.390",
- "/packages/infinispan-core-11.0.4.Final.jar": "pkg:maven/org.infinispan/infinispan-core@11.0.4.Final",
- "/packages/jeecg-boot-common-3.6.0.jar": "pkg:maven/org.jeecgframework.boot/jeecg-boot-common@3.6.0",
- "/packages/jetty-client-9.4.31.v20200723.jar": "pkg:maven/org.eclipse.jetty/jetty-client@9.4.31.v20200723",
- "/packages/jetty-server-12.0.0.alpha3.jar": "pkg:maven/org.eclipse.jetty/jetty-server@12.0.0.alpha3",
- "/packages/jetty-setuid-java-1.0.4.jar": "pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4",
- "/packages/jmdns-3.4.1.jar": "pkg:maven/javax.jmdns/jmdns@3.4.1",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/jopenssl.jar:rubygems:jruby-openssl": "pkg:maven/rubygems/jruby-openssl@0.9.21",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.jar": "pkg:maven/org.bouncycastle/bcpkix-jdk15on@1.56",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.jar": "pkg:maven/org.bouncycastle/bcprov-jdk15on@1.56",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/org/yaml/snakeyaml/1.18/snakeyaml-1.18.jar": "pkg:maven/org.yaml/snakeyaml@1.18",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar:jline:jline": "pkg:maven/jline/jline@2.11",
- "/packages/jruby-stdlib-9.1.15.0.jar:META-INF/jruby.home/lib/ruby/stdlib/readline.jar:rubygems:jruby-readline": "pkg:maven/rubygems/jruby-readline@1.2.0",
- "/packages/jruby-stdlib-9.1.15.0.jar": "pkg:maven/org.jruby/jruby-stdlib@9.1.15.0",
- "/packages/jsch-0.1.55.jar": "pkg:maven/com.jcraft/jsch@0.1.55",
- "/packages/junit-4.13.1.jar": "pkg:maven/junit/junit@4.13.1",
- "/packages/kafka_2.13-3.2.2.jar": "pkg:maven/org.apache.kafka/kafka_2.13@3.2.2",
- "/packages/keycloak-core-22.0.2.jar": "pkg:maven/org.keycloak/keycloak-core@22.0.2",
- "/packages/log4j-1.2.16.jar": "pkg:maven/log4j/log4j@1.2.16",
- "/packages/log4j-core-2.17.0.jar": "pkg:maven/org.apache.logging.log4j/log4j-core@2.17.0",
- "/packages/log4j-over-slf4j-1.7.36.jar": "pkg:maven/org.slf4j/log4j-over-slf4j@1.7.36",
- "/packages/manager-pojo-1.8.0.jar": "pkg:maven/org.apache.inlong/manager-pojo@1.8.0",
- "/packages/maven-shared-utils-3.2.1.jar": "pkg:maven/org.apache.maven.shared/maven-shared-utils@3.2.1",
- "/packages/mesos-1.7.1.jar": "pkg:maven/org.apache.mesos/mesos@1.7.1",
- "/packages/minio-8.3.8.jar": "pkg:maven/io.minio/minio@8.3.8",
- "/packages/ms-mcms-5.3.1.jar": "pkg:maven/net.mingsoft/ms-mcms@5.3.1",
- "/packages/my-app-1.jar:com.fasterxml:classmate": "pkg:maven/com.fasterxml/classmate@1.5.1",
- "/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-annotations": "pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.13.2",
- "/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-core": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.13.2",
- "/packages/my-app-1.jar:com.fasterxml.jackson.core:jackson-databind": "pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.13.0",
- "/packages/my-app-1.jar:com.google.errorprone:error_prone_annotations": "pkg:maven/com.google.errorprone/error_prone_annotations@2.0.18",
- "/packages/my-app-1.jar:com.google.guava:guava": "pkg:maven/com.google.guava/guava@23.0",
- "/packages/my-app-1.jar:com.google.j2objc:j2objc-annotations": "pkg:maven/com.google.j2objc/j2objc-annotations@1.1",
- "/packages/my-app-1.jar:com.hazelcast:hazelcast-kubernetes": "pkg:maven/com.hazelcast/hazelcast-kubernetes@1.5.4",
- "/packages/my-app-1.jar:com.hierynomus:asn-one": "pkg:maven/com.hierynomus/asn-one@0.5.0",
- "/packages/my-app-1.jar:com.typesafe.netty:netty-reactive-streams": "pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.5",
- "/packages/my-app-1.jar:commons-beanutils:commons-beanutils": "pkg:maven/commons-beanutils/commons-beanutils@1.9.2",
- "/packages/my-app-1.jar:commons-collections:commons-collections": "pkg:maven/commons-collections/commons-collections@3.2.2",
- "/packages/my-app-1.jar:commons-digester:commons-digester": "pkg:maven/commons-digester/commons-digester@1.8.1",
- "/packages/my-app-1.jar:commons-io:commons-io": "pkg:maven/commons-io/commons-io@2.8.0",
- "/packages/my-app-1.jar:commons-logging:commons-logging": "pkg:maven/commons-logging/commons-logging@1.2",
- "/packages/my-app-1.jar:commons-validator:commons-validator": "pkg:maven/commons-validator/commons-validator@1.5.1",
- "/packages/my-app-1.jar:io.netty:netty-buffer": "pkg:maven/io.netty/netty-buffer@4.1.52.Final",
- "/packages/my-app-1.jar:io.netty:netty-codec-dns": "pkg:maven/io.netty/netty-codec-dns@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-codec-http": "pkg:maven/io.netty/netty-codec-http@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-codec-socks": "pkg:maven/io.netty/netty-codec-socks@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-codec": "pkg:maven/io.netty/netty-codec@4.1.52.Final",
- "/packages/my-app-1.jar:io.netty:netty-common": "pkg:maven/io.netty/netty-common@4.1.52.Final",
- "/packages/my-app-1.jar:io.netty:netty-handler-proxy": "pkg:maven/io.netty/netty-handler-proxy@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-handler": "pkg:maven/io.netty/netty-handler@4.1.52.Final",
- "/packages/my-app-1.jar:io.netty:netty-resolver-dns-native-macos": "pkg:maven/io.netty/netty-resolver-dns-native-macos@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-resolver-dns": "pkg:maven/io.netty/netty-resolver-dns@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-resolver": "pkg:maven/io.netty/netty-resolver@4.1.52.Final",
- "/packages/my-app-1.jar:io.netty:netty-transport-native-epoll": "pkg:maven/io.netty/netty-transport-native-epoll@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-transport-native-unix-common": "pkg:maven/io.netty/netty-transport-native-unix-common@4.1.63.Final",
- "/packages/my-app-1.jar:io.netty:netty-transport": "pkg:maven/io.netty/netty-transport@4.1.52.Final",
- "/packages/my-app-1.jar:io.prometheus:simpleclient_common": "pkg:maven/io.prometheus/simpleclient_common@0.9.0",
- "/packages/my-app-1.jar:io.prometheus:simpleclient": "pkg:maven/io.prometheus/simpleclient@0.9.0",
- "/packages/my-app-1.jar:io.vavr:vavr-match": "pkg:maven/io.vavr/vavr-match@0.10.2",
- "/packages/my-app-1.jar:io.vavr:vavr": "pkg:maven/io.vavr/vavr@0.10.2",
- "/packages/my-app-1.jar:jakarta.validation:jakarta.validation-api": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2",
- "/packages/my-app-1.jar:javax.servlet:javax.servlet-api": "pkg:maven/javax.servlet/javax.servlet-api@3.1.0",
- "/packages/my-app-1.jar:org.apache.activemq.protobuf:activemq-protobuf": "pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1",
- "/packages/my-app-1.jar:org.apache.commons:commons-compress": "pkg:maven/org.apache.commons/commons-compress@1.21",
- "/packages/my-app-1.jar:org.apache.commons:commons-lang3": "pkg:maven/org.apache.commons/commons-lang3@3.10",
- "/packages/my-app-1.jar:org.apache.maven.shared:maven-shared-utils": "pkg:maven/org.apache.maven.shared/maven-shared-utils@3.3.4",
- "/packages/my-app-1.jar:org.codehaus.mojo:animal-sniffer-annotations": "pkg:maven/org.codehaus.mojo/animal-sniffer-annotations@1.14",
- "/packages/my-app-1.jar:org.eclipse.jetty:jetty-client": "pkg:maven/org.eclipse.jetty/jetty-client@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty:jetty-http": "pkg:maven/org.eclipse.jetty/jetty-http@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty:jetty-io": "pkg:maven/org.eclipse.jetty/jetty-io@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty:jetty-server": "pkg:maven/org.eclipse.jetty/jetty-server@9.1.0.M0",
- "/packages/my-app-1.jar:org.eclipse.jetty:jetty-util": "pkg:maven/org.eclipse.jetty/jetty-util@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty.http2:http2-common": "pkg:maven/org.eclipse.jetty.http2/http2-common@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty.http2:http2-hpack": "pkg:maven/org.eclipse.jetty.http2/http2-hpack@9.4.43.v20210629",
- "/packages/my-app-1.jar:org.eclipse.jetty.toolchain.setuid:jetty-setuid-java": "pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4",
- "/packages/my-app-1.jar:org.everit.json:org.everit.json.schema": "pkg:maven/org.everit.json/org.everit.json.schema@1.5.1",
- "/packages/my-app-1.jar:org.hibernate.validator:hibernate-validator": "pkg:maven/org.hibernate.validator/hibernate-validator@6.2.4.Final",
- "/packages/my-app-1.jar:org.jboss.logging:jboss-logging": "pkg:maven/org.jboss.logging/jboss-logging@3.4.1.Final",
- "/packages/my-app-1.jar:org.jctools:jctools-core": "pkg:maven/org.jctools/jctools-core@3.1.0",
- "/packages/my-app-1.jar:org.jetbrains:annotations": "pkg:maven/org.jetbrains/annotations@13.0",
- "/packages/my-app-1.jar:org.json:json": "pkg:maven/org.json/json@20160810",
- "/packages/my-app-1.jar:org.kohsuke:github-api": "pkg:maven/org.kohsuke/github-api@1.301",
- "/packages/my-app-1.jar:org.slf4j:log4j-over-slf4j": "pkg:maven/org.slf4j/log4j-over-slf4j@1.7.33",
- "/packages/my-app-1.jar:org.slf4j:slf4j-api": "pkg:maven/org.slf4j/slf4j-api@1.7.33",
- "/packages/my-app-1.jar:org.sonarsource.analyzer-commons:sonar-analyzer-test-commons": "pkg:maven/org.sonarsource.analyzer-commons/sonar-analyzer-test-commons@1.14.1.690",
- "/packages/my-app-1.jar:org.sonarsource.php:php-checks": "pkg:maven/org.sonarsource.php/php-checks@3.17.0.7439",
- "/packages/my-app-1.jar:org.sonarsource.php:php-frontend": "pkg:maven/org.sonarsource.php/php-frontend@3.17.0.7439",
- "/packages/my-app-1.jar:org.sonarsource.python:python-checks": "pkg:maven/org.sonarsource.python/python-checks@3.4.1.8066",
- "/packages/my-app-1.jar:org.sonarsource.python:python-frontend": "pkg:maven/org.sonarsource.python/python-frontend@3.4.1.8066",
- "/packages/my-app-1.jar:org.sonarsource.sslr:sslr-core": "pkg:maven/org.sonarsource.sslr/sslr-core@1.24.0.633",
- "/packages/my-app-1.jar": "pkg:maven/com.mycompany.app/my-app@1",
- "/packages/netty-reactive-streams-2.0.6.jar": "pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.6",
- "/packages/nifi-utils-1.12.0.jar": "pkg:maven/org.apache.nifi/nifi-utils@1.12.0",
- "/packages/nomad.hpi:WEB-INF/lib/annotations-13.0.jar": "pkg:maven/org.jetbrains/annotations@13.0",
- "/packages/nomad.hpi:WEB-INF/lib/gson-2.8.6.jar": "pkg:maven/com.google.code.gson/gson@2.8.6",
- "/packages/nomad.hpi:WEB-INF/lib/json-20200518.jar": "pkg:maven/org.json/json@20200518",
- "/packages/nomad.hpi:WEB-INF/lib/kotlin-stdlib-1.3.70.jar": "pkg:maven/kotlin-stdlib/kotlin-stdlib@1.3.70",
- "/packages/nomad.hpi:WEB-INF/lib/kotlin-stdlib-common-1.3.70.jar": "pkg:maven/kotlin-stdlib-common/kotlin-stdlib-common@1.3.70",
- "/packages/nomad.hpi:WEB-INF/lib/nomad.jar": "pkg:maven/org.jenkins-ci.plugins/nomad@0.7.4",
- "/packages/nomad.hpi:WEB-INF/lib/okhttp-4.5.0.jar": "pkg:maven/com.squareup.okhttp3/okhttp@4.5.0",
- "/packages/nomad.hpi:WEB-INF/lib/okio-2.5.0.jar": "pkg:maven/com.squareup.okio/okio@2.5.0",
- "/packages/nomad.hpi": "pkg:maven/org.jenkins-ci.plugins/nomad@0.7.4",
- "/packages/openmeetings-util-4.0.9.jar": "pkg:maven/org.apache.openmeetings/openmeetings-util@4.0.9",
- "/packages/org.eclipse.ant.core-3.7.0.jar": "pkg:maven/org.eclipse.platform/org.eclipse.ant.core@3.7.0",
- "/packages/org.eclipse.osgi-3.18.0.jar": "pkg:maven/org.eclipse.platform/org.eclipse.osgi@3.18.0",
- "/packages/org.everit.json.schema-1.5.1.jar": "pkg:maven/org.everit.json/org.everit.json.schema@1.5.1",
- "/packages/original-my-app-1.jar:com.fasterxml:classmate": "pkg:maven/com.fasterxml/classmate@1.5.1",
- "/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-annotations": "pkg:maven/com.fasterxml.jackson.core/jackson-annotations@2.13.2",
- "/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-core": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.13.2",
- "/packages/original-my-app-1.jar:com.fasterxml.jackson.core:jackson-databind": "pkg:maven/com.fasterxml.jackson.core/jackson-databind@2.13.0",
- "/packages/original-my-app-1.jar:com.google.errorprone:error_prone_annotations": "pkg:maven/com.google.errorprone/error_prone_annotations@2.0.18",
- "/packages/original-my-app-1.jar:com.google.guava:guava": "pkg:maven/com.google.guava/guava@23.0",
- "/packages/original-my-app-1.jar:com.google.j2objc:j2objc-annotations": "pkg:maven/com.google.j2objc/j2objc-annotations@1.1",
- "/packages/original-my-app-1.jar:com.hazelcast:hazelcast-kubernetes": "pkg:maven/com.hazelcast/hazelcast-kubernetes@1.5.4",
- "/packages/original-my-app-1.jar:com.hierynomus:asn-one": "pkg:maven/com.hierynomus/asn-one@0.5.0",
- "/packages/original-my-app-1.jar:com.typesafe.netty:netty-reactive-streams": "pkg:maven/com.typesafe.netty/netty-reactive-streams@2.0.5",
- "/packages/original-my-app-1.jar:commons-beanutils:commons-beanutils": "pkg:maven/commons-beanutils/commons-beanutils@1.9.2",
- "/packages/original-my-app-1.jar:commons-collections:commons-collections": "pkg:maven/commons-collections/commons-collections@3.2.2",
- "/packages/original-my-app-1.jar:commons-digester:commons-digester": "pkg:maven/commons-digester/commons-digester@1.8.1",
- "/packages/original-my-app-1.jar:commons-io:commons-io": "pkg:maven/commons-io/commons-io@2.8.0",
- "/packages/original-my-app-1.jar:commons-logging:commons-logging": "pkg:maven/commons-logging/commons-logging@1.2",
- "/packages/original-my-app-1.jar:commons-validator:commons-validator": "pkg:maven/commons-validator/commons-validator@1.5.1",
- "/packages/original-my-app-1.jar:io.netty:netty-buffer": "pkg:maven/io.netty/netty-buffer@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-codec-dns": "pkg:maven/io.netty/netty-codec-dns@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-codec-http": "pkg:maven/io.netty/netty-codec-http@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-codec-socks": "pkg:maven/io.netty/netty-codec-socks@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-codec": "pkg:maven/io.netty/netty-codec@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-common": "pkg:maven/io.netty/netty-common@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-handler-proxy": "pkg:maven/io.netty/netty-handler-proxy@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-handler": "pkg:maven/io.netty/netty-handler@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-resolver-dns-native-macos": "pkg:maven/io.netty/netty-resolver-dns-native-macos@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-resolver-dns": "pkg:maven/io.netty/netty-resolver-dns@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-resolver": "pkg:maven/io.netty/netty-resolver@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-transport-native-epoll": "pkg:maven/io.netty/netty-transport-native-epoll@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-transport-native-unix-common": "pkg:maven/io.netty/netty-transport-native-unix-common@4.1.63.Final",
- "/packages/original-my-app-1.jar:io.netty:netty-transport": "pkg:maven/io.netty/netty-transport@4.1.52.Final",
- "/packages/original-my-app-1.jar:io.prometheus:simpleclient_common": "pkg:maven/io.prometheus/simpleclient_common@0.9.0",
- "/packages/original-my-app-1.jar:io.prometheus:simpleclient": "pkg:maven/io.prometheus/simpleclient@0.9.0",
- "/packages/original-my-app-1.jar:io.vavr:vavr-match": "pkg:maven/io.vavr/vavr-match@0.10.2",
- "/packages/original-my-app-1.jar:io.vavr:vavr": "pkg:maven/io.vavr/vavr@0.10.2",
- "/packages/original-my-app-1.jar:jakarta.validation:jakarta.validation-api": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2",
- "/packages/original-my-app-1.jar:javax.servlet:javax.servlet-api": "pkg:maven/javax.servlet/javax.servlet-api@3.1.0",
- "/packages/original-my-app-1.jar:org.apache.activemq.protobuf:activemq-protobuf": "pkg:maven/org.apache.activemq.protobuf/activemq-protobuf@1.1",
- "/packages/original-my-app-1.jar:org.apache.commons:commons-compress": "pkg:maven/org.apache.commons/commons-compress@1.21",
- "/packages/original-my-app-1.jar:org.apache.commons:commons-lang3": "pkg:maven/org.apache.commons/commons-lang3@3.10",
- "/packages/original-my-app-1.jar:org.apache.maven.shared:maven-shared-utils": "pkg:maven/org.apache.maven.shared/maven-shared-utils@3.3.4",
- "/packages/original-my-app-1.jar:org.codehaus.mojo:animal-sniffer-annotations": "pkg:maven/org.codehaus.mojo/animal-sniffer-annotations@1.14",
- "/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-client": "pkg:maven/org.eclipse.jetty/jetty-client@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-http": "pkg:maven/org.eclipse.jetty/jetty-http@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-io": "pkg:maven/org.eclipse.jetty/jetty-io@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-server": "pkg:maven/org.eclipse.jetty/jetty-server@9.1.0.M0",
- "/packages/original-my-app-1.jar:org.eclipse.jetty:jetty-util": "pkg:maven/org.eclipse.jetty/jetty-util@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty.http2:http2-common": "pkg:maven/org.eclipse.jetty.http2/http2-common@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty.http2:http2-hpack": "pkg:maven/org.eclipse.jetty.http2/http2-hpack@9.4.43.v20210629",
- "/packages/original-my-app-1.jar:org.eclipse.jetty.toolchain.setuid:jetty-setuid-java": "pkg:maven/org.eclipse.jetty.toolchain.setuid/jetty-setuid-java@1.0.4",
- "/packages/original-my-app-1.jar:org.everit.json:org.everit.json.schema": "pkg:maven/org.everit.json/org.everit.json.schema@1.5.1",
- "/packages/original-my-app-1.jar:org.hibernate.validator:hibernate-validator": "pkg:maven/org.hibernate.validator/hibernate-validator@6.2.4.Final",
- "/packages/original-my-app-1.jar:org.jboss.logging:jboss-logging": "pkg:maven/org.jboss.logging/jboss-logging@3.4.1.Final",
- "/packages/original-my-app-1.jar:org.jctools:jctools-core": "pkg:maven/org.jctools/jctools-core@3.1.0",
- "/packages/original-my-app-1.jar:org.jetbrains:annotations": "pkg:maven/org.jetbrains/annotations@13.0",
- "/packages/original-my-app-1.jar:org.json:json": "pkg:maven/org.json/json@20160810",
- "/packages/original-my-app-1.jar:org.kohsuke:github-api": "pkg:maven/org.kohsuke/github-api@1.301",
- "/packages/original-my-app-1.jar:org.slf4j:log4j-over-slf4j": "pkg:maven/org.slf4j/log4j-over-slf4j@1.7.33",
- "/packages/original-my-app-1.jar:org.slf4j:slf4j-api": "pkg:maven/org.slf4j/slf4j-api@1.7.33",
- "/packages/original-my-app-1.jar:org.sonarsource.analyzer-commons:sonar-analyzer-test-commons": "pkg:maven/org.sonarsource.analyzer-commons/sonar-analyzer-test-commons@1.14.1.690",
- "/packages/original-my-app-1.jar:org.sonarsource.php:php-checks": "pkg:maven/org.sonarsource.php/php-checks@3.17.0.7439",
- "/packages/original-my-app-1.jar:org.sonarsource.php:php-frontend": "pkg:maven/org.sonarsource.php/php-frontend@3.17.0.7439",
- "/packages/original-my-app-1.jar:org.sonarsource.python:python-checks": "pkg:maven/org.sonarsource.python/python-checks@3.4.1.8066",
- "/packages/original-my-app-1.jar:org.sonarsource.python:python-frontend": "pkg:maven/org.sonarsource.python/python-frontend@3.4.1.8066",
- "/packages/original-my-app-1.jar:org.sonarsource.sslr:sslr-core": "pkg:maven/org.sonarsource.sslr/sslr-core@1.24.0.633",
- "/packages/original-my-app-1.jar": "pkg:maven/com.mycompany.app/my-app@1",
- "/packages/php-frontend-3.9.0.6331.jar": "pkg:maven/org.sonarsource.php/php-frontend@3.9.0.6331",
- "/packages/postgresql-42.5.0.jar": "pkg:maven/org.postgresql/postgresql@42.5.0",
- "/packages/protobuf-java-3.21.6.jar": "pkg:maven/com.google.protobuf/protobuf-java@3.21.6",
- "/packages/python-frontend-3.24.0.10784.jar": "pkg:maven/org.sonarsource.python/python-frontend@3.24.0.10784",
- "/packages/ratpack-core-1.8.2.jar": "pkg:maven/io.ratpack/ratpack-core@1.8.2",
- "/packages/reactor-netty-core-1.0.35.jar": "pkg:maven/io.projectreactor.netty/reactor-netty-core@1.0.35",
- "/packages/reactor-netty-http-1.1.9.jar": "pkg:maven/io.projectreactor.netty/reactor-netty-http@1.1.9",
- "/packages/reactor-netty-incubator-quic-0.1.3.jar": "pkg:maven/io.projectreactor.netty.incubator/reactor-netty-incubator-quic@0.1.3",
- "/packages/resilience4j-prometheus-0.17.0.jar": "pkg:maven/io.github.resilience4j.prometheus/resilience4j-prometheus@0.17.0",
- "/packages/shiro-core-1.9.1.jar": "pkg:maven/org.apache.shiro/shiro-core@1.9.1",
- "/packages/solr-core-8.8.1.jar": "pkg:maven/org.apache.solr/solr-core@8.8.1",
- "/packages/spring-amqp-2.4.17.jar": "pkg:maven/org.springframework.amqp/spring-amqp@2.4.17",
- "/packages/spring-analytics-2.0.0.RELEASE.jar": "pkg:maven/org.springframework.analytics/spring-analytics@2.0.0.RELEASE",
- "/packages/spring-asm-3.0.7.RELEASE.jar": "pkg:maven/org.springframework/spring-asm@3.0.7.RELEASE",
- "/packages/spring-batch-core-4.2.1.RELEASE.jar": "pkg:maven/org.springframework.batch/spring-batch-core@4.2.1.RELEASE",
- "/packages/spring-boot-3.1.2.jar": "pkg:maven/org.springframework.boot/spring-boot@3.1.2",
- "/packages/spring-cloud-app-broker-core-1.6.1.jar": "pkg:maven/org.springframework.cloud/spring-cloud-app-broker-core@1.6.1",
- "/packages/spring-cql-1.5.11.RELEASE.jar": "pkg:maven/org.springframework.data/spring-cql@1.5.11.RELEASE",
- "/packages/spring-credhub-core-1.0.1.RELEASE.jar": "pkg:maven/org.springframework.credhub/spring-credhub-core@1.0.1.RELEASE",
- "/packages/spring-flex-1.0.3.RELEASE.jar": "pkg:maven/org.springframework.flex/spring-flex@1.0.3.RELEASE",
- "/packages/spring-graphql-1.2.2.jar": "pkg:maven/org.springframework.graphql/spring-graphql@1.2.2",
- "/packages/spring-hateoas-2.1.0.jar": "pkg:maven/org.springframework.hateoas/spring-hateoas@2.1.0",
- "/packages/spring-integration-amqp-6.0.5.jar": "pkg:maven/org.springframework.integration/spring-integration-amqp@6.0.5",
- "/packages/spring-kafka-3.0.9.jar": "pkg:maven/org.springframework.kafka/spring-kafka@3.0.9",
- "/packages/spring-security-core-6.0.2.jar": "pkg:maven/org.springframework.security/spring-security-core@6.0.2",
- "/packages/spring-security-kerberos-core-1.0.1.RELEASE.jar": "pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-core@1.0.1.RELEASE",
- "/packages/spring-security-oauth-2.5.1.RELEASE.jar": "pkg:maven/org.springframework.security.oauth/spring-security-oauth@2.5.1.RELEASE",
- "/packages/spring-security-oauth2-autoconfigure-2.5.9.jar": "pkg:maven/org.springframework.security.oauth.boot/spring-security-oauth2-autoconfigure@2.5.9",
- "/packages/spring-security-saml2-core-1.0.10.RELEASE.jar": "pkg:maven/org.springframework.security.extensions/spring-security-saml2-core@1.0.10.RELEASE",
- "/packages/spring-session-core-3.0.0.jar": "pkg:maven/org.springframework.session/spring-session-core@3.0.0",
- "/packages/spring-social-core-1.1.2.RELEASE.jar": "pkg:maven/org.springframework.social/spring-social-core@1.1.2.RELEASE",
- "/packages/spring-vault-core-3.0.1.jar": "pkg:maven/org.springframework.vault/spring-vault-core@3.0.1",
- "/packages/spring-webmvc-3.1.4.RELEASE.jar": "pkg:maven/org.springframework/spring-webmvc@3.1.4.RELEASE",
- "/packages/spring-xml-3.0.3.RELEASE.jar": "pkg:maven/org.springframework.ws/spring-xml@3.0.3.RELEASE",
- "/packages/storm-core-1.2.2.jar:cheshire:cheshire": "pkg:maven/cheshire/cheshire@5.3.1",
- "/packages/storm-core-1.2.2.jar:clj-time:clj-time": "pkg:maven/clj-time/clj-time@0.8.0",
- "/packages/storm-core-1.2.2.jar:clout:clout": "pkg:maven/clout/clout@1.2.0",
- "/packages/storm-core-1.2.2.jar:com.fasterxml.jackson.core:jackson-core": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.9.4",
- "/packages/storm-core-1.2.2.jar:com.fasterxml.jackson.dataformat:jackson-dataformat-smile": "pkg:maven/com.fasterxml.jackson.dataformat/jackson-dataformat-smile@2.9.4",
- "/packages/storm-core-1.2.2.jar:com.google.guava:guava": "pkg:maven/com.google.guava/guava@16.0.1",
- "/packages/storm-core-1.2.2.jar:com.twitter:carbonite": "pkg:maven/com.twitter/carbonite@1.5.0",
- "/packages/storm-core-1.2.2.jar:commons-codec:commons-codec": "pkg:maven/commons-codec/commons-codec@1.6",
- "/packages/storm-core-1.2.2.jar:commons-collections:commons-collections": "pkg:maven/commons-collections/commons-collections@3.2.2",
- "/packages/storm-core-1.2.2.jar:commons-fileupload:commons-fileupload": "pkg:maven/commons-fileupload/commons-fileupload@1.3.2",
- "/packages/storm-core-1.2.2.jar:commons-io:commons-io": "pkg:maven/commons-io/commons-io@2.5",
- "/packages/storm-core-1.2.2.jar:commons-lang:commons-lang": "pkg:maven/commons-lang/commons-lang@2.5",
- "/packages/storm-core-1.2.2.jar:compojure:compojure": "pkg:maven/compojure/compojure@1.1.9",
- "/packages/storm-core-1.2.2.jar:hiccup:hiccup": "pkg:maven/hiccup/hiccup@0.3.6",
- "/packages/storm-core-1.2.2.jar:io.netty:netty": "pkg:maven/io.netty/netty@3.9.9.Final",
- "/packages/storm-core-1.2.2.jar:joda-time:joda-time": "pkg:maven/joda-time/joda-time@2.3",
- "/packages/storm-core-1.2.2.jar:metrics-clojure:metrics-clojure": "pkg:maven/metrics-clojure/metrics-clojure@2.5.1",
- "/packages/storm-core-1.2.2.jar:ns-tracker:ns-tracker": "pkg:maven/ns-tracker/ns-tracker@0.2.2",
- "/packages/storm-core-1.2.2.jar:org.apache.commons:commons-compress": "pkg:maven/org.apache.commons/commons-compress@1.4.1",
- "/packages/storm-core-1.2.2.jar:org.apache.commons:commons-exec": "pkg:maven/org.apache.commons/commons-exec@1.1",
- "/packages/storm-core-1.2.2.jar:org.apache.curator:curator-client": "pkg:maven/org.apache.curator/curator-client@4.0.1",
- "/packages/storm-core-1.2.2.jar:org.apache.curator:curator-framework": "pkg:maven/org.apache.curator/curator-framework@4.0.1",
- "/packages/storm-core-1.2.2.jar:org.apache.curator:curator-recipes": "pkg:maven/org.apache.curator/curator-recipes@4.0.1",
- "/packages/storm-core-1.2.2.jar:org.apache.hadoop:hadoop-auth": "pkg:maven/org.apache.hadoop/hadoop-auth@2.6.1",
- "/packages/storm-core-1.2.2.jar:org.apache.httpcomponents:httpclient": "pkg:maven/org.apache.httpcomponents/httpclient@4.3.3",
- "/packages/storm-core-1.2.2.jar:org.apache.httpcomponents:httpcore": "pkg:maven/org.apache.httpcomponents/httpcore@4.4.1",
- "/packages/storm-core-1.2.2.jar:org.clojure:java.jmx": "pkg:maven/org.clojure/java.jmx@0.3.1",
- "/packages/storm-core-1.2.2.jar:org.clojure:math.numeric-tower": "pkg:maven/org.clojure/math.numeric-tower@0.0.1",
- "/packages/storm-core-1.2.2.jar:org.clojure:tools.cli": "pkg:maven/org.clojure/tools.cli@0.2.4",
- "/packages/storm-core-1.2.2.jar:org.clojure:tools.logging": "pkg:maven/org.clojure/tools.logging@0.2.3",
- "/packages/storm-core-1.2.2.jar:org.clojure:tools.macro": "pkg:maven/org.clojure/tools.macro@0.1.0",
- "/packages/storm-core-1.2.2.jar:org.clojure:tools.namespace": "pkg:maven/org.clojure/tools.namespace@0.2.4",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-client": "pkg:maven/org.eclipse.jetty/jetty-client@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-continuation": "pkg:maven/org.eclipse.jetty/jetty-continuation@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-http": "pkg:maven/org.eclipse.jetty/jetty-http@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-io": "pkg:maven/org.eclipse.jetty/jetty-io@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-security": "pkg:maven/org.eclipse.jetty/jetty-security@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-server": "pkg:maven/org.eclipse.jetty/jetty-server@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-servlet": "pkg:maven/org.eclipse.jetty/jetty-servlet@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-servlets": "pkg:maven/org.eclipse.jetty/jetty-servlets@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.eclipse.jetty:jetty-util": "pkg:maven/org.eclipse.jetty/jetty-util@7.6.13.v20130916",
- "/packages/storm-core-1.2.2.jar:org.jgrapht:jgrapht-core": "pkg:maven/org.jgrapht/jgrapht-core@0.9.0",
- "/packages/storm-core-1.2.2.jar:org.yaml:snakeyaml": "pkg:maven/org.yaml/snakeyaml@1.11",
- "/packages/storm-core-1.2.2.jar:ring:ring-codec": "pkg:maven/ring/ring-codec@1.0.0",
- "/packages/storm-core-1.2.2.jar:ring:ring-core": "pkg:maven/ring/ring-core@1.3.1",
- "/packages/storm-core-1.2.2.jar:ring:ring-devel": "pkg:maven/ring/ring-devel@1.3.1",
- "/packages/storm-core-1.2.2.jar:ring:ring-jetty-adapter": "pkg:maven/ring/ring-jetty-adapter@1.3.1",
- "/packages/storm-core-1.2.2.jar:ring:ring-json": "pkg:maven/ring/ring-json@0.3.1",
- "/packages/storm-core-1.2.2.jar:ring:ring-servlet": "pkg:maven/ring/ring-servlet@1.3.1",
- "/packages/storm-core-1.2.2.jar": "pkg:maven/org.apache.storm/storm-core@1.2.2",
- "/packages/tapestry-core-5.8.1.jar": "pkg:maven/org.apache.tapestry/tapestry-core@5.8.1",
- "/packages/tika-core-1.26.jar": "pkg:maven/org.apache.tika/tika-core@1.26",
- "/packages/tomcat-catalina-11.0.0-M1.jar": "pkg:maven/org.apache.tomcat/tomcat-catalina@11.0.0-M1",
- "/packages/tomcat-embed-core-11.0.0-M7.jar": "pkg:maven/org.apache.tomcat.embed/tomcat-embed-core@11.0.0-M7",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-codec-1.2.jar": "pkg:maven/commons-codec/commons-codec@1.2",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-httpclient-3.1.jar": "pkg:maven/org.apache/commons-httpclient@3.1",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/commons-logging-1.0.4.jar": "pkg:maven/commons-logging/commons-logging@1.0.4",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/log4j-1.2.9.jar": "pkg:maven/log4j/log4j@1.2.9",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-codec:commons-codec": "pkg:maven/commons-codec/commons-codec@1.4",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-lang:commons-lang": "pkg:maven/commons-lang/commons-lang@2.5",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:commons-logging:commons-logging": "pkg:maven/commons-logging/commons-logging@1.1.1",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.apache.httpcomponents:httpclient": "pkg:maven/org.apache.httpcomponents/httpclient@4.1.1",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.apache.httpcomponents:httpcore": "pkg:maven/org.apache.httpcomponents/httpcore@4.1",
- "/packages/TwilioNotifier.hpi:WEB-INF/lib/sdk-3.0.jar:org.easymock:easymock": "pkg:maven/org.easymock/easymock@2.4",
- "/packages/TwilioNotifier.hpi": "pkg:maven/com.twilio.jenkins/TwilioNotifier@0.2.1",
- "/packages/undertow-core-2.3.4.Final.jar": "pkg:maven/io.undertow/undertow-core@2.3.4.Final",
- "/packages/vaadin-client-8.11.3.jar": "pkg:maven/com.vaadin/vaadin-client@8.11.3",
- "/packages/velocity-1.7.jar": "pkg:maven/org.apache.velocity/velocity@1.7",
- "/packages/vertx-web-4.3.7.jar": "pkg:maven/io.vertx/vertx-web@4.3.7",
- "/packages/wicket-core-9.2.0.jar": "pkg:maven/org.apache.wicket/wicket-core@9.2.0",
- "/packages/xalan-2.7.2.jar": "pkg:maven/xalan/xalan@2.7.2",
- "/packages/xmlpull-1.1.3.1.jar": "pkg:maven/xmlpull/xmlpull@1.1.3.1",
- // "/packages/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3/xpp3_min@1.1.4c",
- "/packages/xstream-1.4.11.1.jar": "pkg:maven/com.thoughtworks.xstream/xstream@1.4.11.1",
- "/packages/xstream-1.4.19.jar": "pkg:maven/com.thoughtworks.xstream/xstream@1.4.19",
- "/packages/xwiki-commons-xml-15.1.jar": "pkg:maven/org.xwiki.commons/xwiki-commons-xml@15.1",
- "/packages/xwiki-platform-oldcore-15.3.jar": "pkg:maven/org.xwiki.platform/xwiki-platform-oldcore@15.3",
- "/packages/zookeeper-3.7.1.jar": "pkg:maven/org.apache.zookeeper/zookeeper@3.7.1",
-}
diff --git a/cmd/syft/internal/test/integration/license_list_test.go b/cmd/syft/internal/test/integration/license_list_test.go
deleted file mode 100644
index 7a441e953..000000000
--- a/cmd/syft/internal/test/integration/license_list_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package integration
-
-import (
- "encoding/json"
- "net/http"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/internal/spdxlicense"
-)
-
-func TestSPDXLicenseListIsTheLatest(t *testing.T) {
- resp, err := http.Get("https://spdx.org/licenses/licenses.json")
- if err != nil {
- t.Fatalf("unable to get licenses list: %+v", err)
- }
-
- type licenseList struct {
- Version string `json:"licenseListVersion"`
- Licenses []struct {
- ID string `json:"licenseId"`
- Name string `json:"name"`
- Text string `json:"licenseText"`
- Deprecated bool `json:"isDeprecatedLicenseId"`
- OSIApproved bool `json:"isOsiApproved"`
- SeeAlso []string `json:"seeAlso"`
- } `json:"licenses"`
- }
-
- var latest licenseList
- if err = json.NewDecoder(resp.Body).Decode(&latest); err != nil {
- t.Fatalf("unable to decode license list: %+v", err)
- }
-
- assert.Equal(t, latest.Version, spdxlicense.Version)
-}
diff --git a/cmd/syft/internal/test/integration/mariner_distroless_test.go b/cmd/syft/internal/test/integration/mariner_distroless_test.go
deleted file mode 100644
index 5231f3254..000000000
--- a/cmd/syft/internal/test/integration/mariner_distroless_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestMarinerDistroless(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-mariner-distroless", source.SquashedScope)
-
- expectedPkgs := 12
- actualPkgs := 0
- for range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {
- actualPkgs += 1
- }
-
- if actualPkgs != expectedPkgs {
- t.Errorf("unexpected number of RPM packages: %d != %d", expectedPkgs, actualPkgs)
- }
-}
diff --git a/cmd/syft/internal/test/integration/node_packages_test.go b/cmd/syft/internal/test/integration/node_packages_test.go
deleted file mode 100644
index dcf1c4a73..000000000
--- a/cmd/syft/internal/test/integration/node_packages_test.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package integration
-
-import (
- "reflect"
- "strings"
- "testing"
-
- "github.com/scylladb/go-set/strset"
-
- "github.com/anchore/syft/syft/pkg"
-)
-
-func TestNpmPackageLockDirectory(t *testing.T) {
- sbom, _ := catalogDirectory(t, "test-fixtures/npm-lock")
-
- foundPackages := strset.New()
-
- for actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {
- for _, actualLocation := range actualPkg.Locations.ToSlice() {
- if strings.Contains(actualLocation.RealPath, "node_modules") {
- t.Errorf("found packages from package-lock.json in node_modules: %s", actualLocation)
- }
- }
- foundPackages.Add(actualPkg.Name)
- }
-
- // ensure that integration test commonTestCases stay in sync with the available catalogers
- const expectedPackageCount = 6
- if foundPackages.Size() != expectedPackageCount {
- t.Errorf("found the wrong set of npm package-lock.json packages (expected: %d, actual: %d)", expectedPackageCount, foundPackages.Size())
- }
-}
-
-func TestYarnPackageLockDirectory(t *testing.T) {
- sbom, _ := catalogDirectory(t, "test-fixtures/yarn-lock")
-
- foundPackages := strset.New()
- expectedPackages := strset.New("async@0.9.2", "async@3.2.3", "merge-objects@1.0.5", "should-type@1.3.0", "@4lolo/resize-observer-polyfill@1.5.2")
-
- for actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {
- for _, actualLocation := range actualPkg.Locations.ToSlice() {
- if strings.Contains(actualLocation.RealPath, "node_modules") {
- t.Errorf("found packages from yarn.lock in node_modules: %s", actualLocation)
- }
- }
- foundPackages.Add(actualPkg.Name + "@" + actualPkg.Version)
- }
-
- // ensure that integration test commonTestCases stay in sync with the available catalogers
- if foundPackages.Size() != expectedPackages.Size() {
- t.Errorf("found the wrong set of yarn.lock packages (expected: %d, actual: %d)", expectedPackages.Size(), foundPackages.Size())
- } else if !reflect.DeepEqual(foundPackages, expectedPackages) {
- t.Errorf("found the wrong set of yarn.lock packages (expected: %+q, actual: %+q)", expectedPackages.List(), foundPackages.List())
- }
-}
diff --git a/cmd/syft/internal/test/integration/package_binary_elf_relationships_test.go b/cmd/syft/internal/test/integration/package_binary_elf_relationships_test.go
deleted file mode 100644
index 354c7fba8..000000000
--- a/cmd/syft/internal/test/integration/package_binary_elf_relationships_test.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestBinaryElfRelationships(t *testing.T) {
- // node --> ["dependency of" nodes]
- expectedGraph := map[string][]string{
- "glibc": {
- "libhello_world.so",
- "syfttestfixture",
- },
- "libstdc++": {
- "syfttestfixture",
- },
- "libhello_world.so": {
- "syfttestfixture",
- },
- }
-
- // run the test...
- sbom, _ := catalogFixtureImage(t, "elf-test-fixtures", source.SquashedScope)
-
- // get a mapping of package names to their IDs
- nameToId := map[string]artifact.ID{}
-
- recordPkgId := func(name string) {
- pkgs := sbom.Artifacts.Packages.PackagesByName(name)
- require.NotEmpty(t, pkgs, "expected package %q to be present in the SBOM", name)
- for _, p := range pkgs {
- nameToId[p.Name] = p.ID()
- }
- }
- for name, depNames := range expectedGraph {
- recordPkgId(name)
- for _, depName := range depNames {
- recordPkgId(depName)
- }
- }
-
- for name, expectedDepNames := range expectedGraph {
- pkgId := nameToId[name]
- p := sbom.Artifacts.Packages.Package(pkgId)
- require.NotNil(t, p, "expected package %q to be present in the SBOM", name)
-
- rels := sbom.RelationshipsForPackage(*p, artifact.DependencyOfRelationship)
- require.NotEmpty(t, rels, "expected package %q to have relationships", name)
-
- toIds := map[artifact.ID]struct{}{}
- for _, rel := range rels {
- toIds[rel.To.ID()] = struct{}{}
- }
-
- for _, depName := range expectedDepNames {
- depId := nameToId[depName]
- _, exists := toIds[depId]
- require.True(t, exists, "expected package %q to have a relationship to %q", name, depName)
- }
- }
-
-}
diff --git a/cmd/syft/internal/test/integration/package_cataloger_convention_test.go b/cmd/syft/internal/test/integration/package_cataloger_convention_test.go
deleted file mode 100644
index 4040dbf68..000000000
--- a/cmd/syft/internal/test/integration/package_cataloger_convention_test.go
+++ /dev/null
@@ -1,352 +0,0 @@
-package integration
-
-import (
- "fmt"
- "go/ast"
- "go/parser"
- "go/token"
- "go/types"
- "os"
- "path/filepath"
- "reflect"
- "strings"
- "testing"
-
- "github.com/bmatcuk/doublestar/v4"
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-)
-
-func Test_packageCatalogerExports(t *testing.T) {
- // sanity check that we are actually finding exports
-
- exports := packageCatalogerExports(t)
- require.NotEmpty(t, exports)
-
- expectAtLeast := map[string]*strset.Set{
- "golang": strset.New("NewGoModuleFileCataloger", "NewGoModuleBinaryCataloger", "CatalogerConfig", "DefaultCatalogerConfig"),
- }
-
- for pkg, expected := range expectAtLeast {
- actual, ok := exports[pkg]
- require.True(t, ok, pkg)
- if !assert.True(t, actual.Names().IsSubset(expected), pkg) {
- t.Logf("missing: %s", strset.SymmetricDifference(expected, actual.Names()))
- }
- }
-
-}
-
-func Test_validatePackageCatalogerExport(t *testing.T) {
- cases := []struct {
- name string
- export exportToken
- wantErr assert.ErrorAssertionFunc
- }{
- // valid...
- {
- name: "valid constructor",
- export: exportToken{
- Name: "NewFooCataloger",
- Type: "*ast.FuncType",
- SignatureSize: 1,
- ReturnTypeNames: []string{
- "pkg.Cataloger",
- },
- },
- },
- {
- name: "valid default config",
- export: exportToken{
- Name: "DefaultFooConfig",
- Type: "*ast.FuncType",
- SignatureSize: 0,
- },
- },
- {
- name: "valid config",
- export: exportToken{
- Name: "FooConfig",
- Type: "*ast.StructType",
- },
- },
- // invalid...
- {
- name: "constructor that returns a concrete type",
- export: exportToken{
- Name: "NewFooCataloger",
- Type: "*ast.FuncType",
- SignatureSize: 1,
- ReturnTypeNames: []string{
- "*generic.Cataloger",
- },
- },
- wantErr: assert.Error,
- },
- {
- name: "struct with constructor name",
- export: exportToken{
- Name: "NewFooCataloger",
- Type: "*ast.StructType",
- },
- wantErr: assert.Error,
- },
- {
- name: "struct with default config fn name",
- export: exportToken{
- Name: "DefaultFooConfig",
- Type: "*ast.StructType",
- },
- wantErr: assert.Error,
- },
- {
- name: "fn with struct name",
- export: exportToken{
- Name: "FooConfig",
- Type: "*ast.FuncType",
- },
- wantErr: assert.Error,
- },
- {
- name: "default config with parameters",
- export: exportToken{
- Name: "DefaultFooConfig",
- Type: "*ast.FuncType",
- SignatureSize: 1,
- },
- wantErr: assert.Error,
- },
- }
-
- for _, c := range cases {
- t.Run(c.name, func(t *testing.T) {
- if c.wantErr == nil {
- c.wantErr = assert.NoError
- }
- err := validatePackageCatalogerExport(t, "test", c.export)
- c.wantErr(t, err)
- })
- }
-}
-
-func Test_PackageCatalogerConventions(t *testing.T) {
- // look at each package in syft/pkg/cataloger...
- // we want to make certain that only the following things are exported from the package:
- // - function matching New*Cataloger (e.g. NewAptCataloger)
- // - function matching Default*Config
- // - struct matching *Config
- //
- // anything else that is exported should result in the test failing.
- // note: this is meant to apply to things in static space, not methods on structs or within interfaces.
- //
- // this additionally ensures that:
- // - any config struct has a Default*Config function to pair with it.
- // - all cataloger constructors return pkg.Cataloger interface instead of a concrete type
-
- exportsPerPackage := packageCatalogerExports(t)
-
- //for debugging purposes...
- //for pkg, exports := range exportsPerPackage {
- // t.Log(pkg)
- // for _, export := range exports {
- // t.Logf(" %#v", export)
- // }
- //}
-
- for pkg, exports := range exportsPerPackage {
- for _, export := range exports.List() {
- // assert the export name is valid...
- assert.NoError(t, validatePackageCatalogerExport(t, pkg, export))
-
- // assert that config structs have a Default*Config functions to pair with them...
- if strings.Contains(export.Name, "Config") && !strings.Contains(export.Name, "Default") {
- // this is a config struct, make certain there is a pairing with a Default*Config function
- assert.True(t, exports.Has("Default"+export.Name), "cataloger config struct %q in pkg %q must have a 'Default%s' function", export.Name, pkg, export.Name)
- }
- }
- }
-}
-
-func validatePackageCatalogerExport(t *testing.T, pkg string, export exportToken) error {
-
- constructorMatches, err := doublestar.Match("New*Cataloger", export.Name)
- require.NoError(t, err)
-
- defaultConfigMatches, err := doublestar.Match("Default*Config", export.Name)
- require.NoError(t, err)
-
- configMatches, err := doublestar.Match("*Config", export.Name)
- require.NoError(t, err)
-
- switch {
- case constructorMatches:
- if !export.isFunction() {
- return fmt.Errorf("constructor convention used for non-function in pkg=%q: %#v", pkg, export)
- }
-
- returnTypes := strset.New(export.ReturnTypeNames...)
- if !returnTypes.Has("pkg.Cataloger") {
- return fmt.Errorf("constructor convention is to return pkg.Cataloger and not concrete types. pkg=%q constructor=%q types=%+v", pkg, export.Name, strings.Join(export.ReturnTypeNames, ","))
- }
-
- case defaultConfigMatches:
- if !export.isFunction() {
- return fmt.Errorf("default config convention used for non-function in pkg=%q: %#v", pkg, export)
- }
- if export.SignatureSize != 0 {
- return fmt.Errorf("default config convention used for non-zero signature size in pkg=%q: %#v", pkg, export)
- }
- case configMatches:
- if !export.isStruct() {
- return fmt.Errorf("config convention used for non-struct in pkg=%q: %#v", pkg, export)
- }
- default:
- return fmt.Errorf("unexpected export in pkg=%q: %#v", pkg, export)
- }
- return nil
-}
-
-type exportToken struct {
- Name string
- Type string
- SignatureSize int
- ReturnTypeNames []string
-}
-
-func (e exportToken) isFunction() bool {
- return strings.Contains(e.Type, "ast.FuncType")
-}
-
-func (e exportToken) isStruct() bool {
- return strings.Contains(e.Type, "ast.StructType")
-}
-
-type exportTokenSet map[string]exportToken
-
-func (s exportTokenSet) Names() *strset.Set {
- set := strset.New()
- for k := range s {
- set.Add(k)
- }
- return set
-}
-
-func (s exportTokenSet) Has(name string) bool {
- _, ok := s[name]
- return ok
-}
-
-func (s exportTokenSet) Add(tokens ...exportToken) {
- for _, t := range tokens {
- if _, ok := s[t.Name]; ok {
- panic("duplicate token name: " + t.Name)
- }
- s[t.Name] = t
- }
-}
-
-func (s exportTokenSet) Remove(names ...string) {
- for _, name := range names {
- delete(s, name)
- }
-}
-
-func (s exportTokenSet) List() []exportToken {
- var tokens []exportToken
- for _, t := range s {
- tokens = append(tokens, t)
- }
- return tokens
-}
-
-func packageCatalogerExports(t *testing.T) map[string]exportTokenSet {
- t.Helper()
-
- catalogerPath := filepath.Join(repoRoot(t), "syft", "pkg", "cataloger")
-
- ignorePaths := []string{
- filepath.Join(catalogerPath, "common"),
- filepath.Join(catalogerPath, "generic"),
- }
-
- exportsPerPackage := make(map[string]exportTokenSet)
-
- err := filepath.Walk(catalogerPath, func(path string, info os.FileInfo, err error) error {
- require.NoError(t, err)
-
- if info.IsDir() ||
- !strings.HasSuffix(info.Name(), ".go") ||
- strings.HasSuffix(info.Name(), "_test.go") ||
- strings.Contains(path, "test-fixtures") ||
- strings.Contains(path, "internal") {
- return nil
- }
-
- for _, ignorePath := range ignorePaths {
- if strings.Contains(path, ignorePath) {
- return nil
- }
- }
-
- fset := token.NewFileSet()
- node, err := parser.ParseFile(fset, path, nil, parser.ParseComments)
- require.NoError(t, err)
-
- pkg := node.Name.Name
- for _, f := range node.Decls {
- switch decl := f.(type) {
- case *ast.GenDecl:
- for _, spec := range decl.Specs {
- switch spec := spec.(type) {
- case *ast.TypeSpec:
- if spec.Name.IsExported() {
- if _, ok := exportsPerPackage[pkg]; !ok {
- exportsPerPackage[pkg] = make(exportTokenSet)
- }
- exportsPerPackage[pkg].Add(exportToken{
- Name: spec.Name.Name,
- Type: reflect.TypeOf(spec.Type).String(),
- })
- }
- }
- }
- case *ast.FuncDecl:
- if decl.Recv == nil && decl.Name.IsExported() {
- var returnTypes []string
- if decl.Type.Results != nil {
- for _, field := range decl.Type.Results.List {
- // TODO: there is probably a better way to extract the specific type name
- //ty := strings.Join(strings.Split(fmt.Sprint(field.Type), " "), ".")
- ty := types.ExprString(field.Type)
-
- returnTypes = append(returnTypes, ty)
- }
- }
-
- if _, ok := exportsPerPackage[pkg]; !ok {
- exportsPerPackage[pkg] = make(exportTokenSet)
- }
- exportsPerPackage[pkg].Add(exportToken{
- Name: decl.Name.Name,
- Type: reflect.TypeOf(decl.Type).String(),
- SignatureSize: len(decl.Type.Params.List),
- ReturnTypeNames: returnTypes,
- })
- }
- }
- }
-
- return nil
- })
-
- require.NoError(t, err)
-
- // remove exceptions
- // these are known violations to the common convention that are allowed.
- if vs, ok := exportsPerPackage["binary"]; ok {
- vs.Remove("Classifier", "EvidenceMatcher", "FileContentsVersionMatcher", "DefaultClassifiers")
- }
-
- return exportsPerPackage
-}
diff --git a/cmd/syft/internal/test/integration/package_catalogers_represented_test.go b/cmd/syft/internal/test/integration/package_catalogers_represented_test.go
deleted file mode 100644
index 2375c4290..000000000
--- a/cmd/syft/internal/test/integration/package_catalogers_represented_test.go
+++ /dev/null
@@ -1,204 +0,0 @@
-package integration
-
-import (
- "bytes"
- "go/ast"
- "go/parser"
- "go/token"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "testing"
-
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/internal/task"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
-)
-
-func TestAllPackageCatalogersReachableInTasks(t *testing.T) {
- // we want to see if we can get a task for all package catalogers. This is a bit tricky since we
- // don't have a nice way to find all cataloger names in the codebase. Instead, we'll look at the
- // count of unique task names from the package task factory set and compare that with the known constructors
- // from a source analysis... they should match.
-
- // additionally, at this time they should either have a "directory" or "image" tag as well. If there is no tag
- // on a cataloger task then the test should fail.
-
- taskFactories := task.DefaultPackageTaskFactories()
- taskTagsByName := make(map[string][]string)
- for _, factory := range taskFactories {
- tsk := factory(task.DefaultCatalogingFactoryConfig())
- if taskTagsByName[tsk.Name()] != nil {
- t.Fatalf("duplicate task name: %q", tsk.Name())
- }
-
- require.NotNil(t, tsk)
- if sel, ok := tsk.(task.Selector); ok {
- taskTagsByName[tsk.Name()] = sel.Selectors()
- } else {
- taskTagsByName[tsk.Name()] = []string{}
- }
- }
-
- var constructorCount int
- constructorsPerPackage := getCatalogerConstructors(t)
- for _, constructors := range constructorsPerPackage {
- constructorCount += constructors.Size()
- }
-
- assert.Equal(t, len(taskTagsByName), constructorCount, "mismatch in number of cataloger constructors and task names")
-
- for taskName, tags := range taskTagsByName {
- if taskName == "sbom-cataloger" {
- continue // this is a special case
- }
- if !strset.New(tags...).HasAny(pkgcataloging.ImageTag, pkgcataloging.DirectoryTag) {
- t.Errorf("task %q is missing 'directory' or 'image' a tag", taskName)
- }
- }
-
-}
-
-func TestAllPackageCatalogersRepresentedInSource(t *testing.T) {
- // find all functions in syft/pkg/cataloger/** that either:
- // - match the name glob "New*Cataloger"
- // - are in cataloger.go and match the name glob "New*"
- //
- // Then:
- // - keep track of all packages with cataloger constructors
- // - keep track of all constructors
- constructorsPerPackage := getCatalogerConstructors(t)
-
- // look at the source file in internal/task/package_tasks.go:
- // - ensure all go packages that have constructors are imported
- // - ensure there is a reference to all package constructors
- assertAllPackageCatalogersRepresented(t, constructorsPerPackage)
-}
-
-func getCatalogerConstructors(t *testing.T) map[string]*strset.Set {
- t.Helper()
- root := repoRoot(t)
- catalogerPath := filepath.Join(root, "syft", "pkg", "cataloger")
-
- constructorsPerPackage := make(map[string]*strset.Set)
-
- err := filepath.Walk(catalogerPath, func(path string, info os.FileInfo, err error) error {
- require.NoError(t, err)
-
- // ignore directories and test files...
- if info.IsDir() || strings.HasSuffix(info.Name(), "_test.go") {
- return nil
- }
-
- partialResults := getConstructorsFromExpectedFile(t, path, info)
-
- constructorsPerPackage = mergeConstructors(constructorsPerPackage, partialResults)
-
- partialResults = getCatalogerConstructorsFromPackage(t, path, info)
-
- constructorsPerPackage = mergeConstructors(constructorsPerPackage, partialResults)
-
- return nil
- })
-
- require.NoError(t, err)
-
- // remove some exceptions
- delete(constructorsPerPackage, "generic") // this is not an actual cataloger
-
- return constructorsPerPackage
-}
-
-func getConstructorsFromExpectedFile(t *testing.T, path string, info os.FileInfo) map[string][]string {
- constructorsPerPackage := make(map[string][]string)
-
- if !strings.HasSuffix(info.Name(), "cataloger.go") && !strings.HasSuffix(info.Name(), "catalogers.go") {
- return nil
- }
-
- fset := token.NewFileSet()
- node, err := parser.ParseFile(fset, path, nil, parser.ParseComments)
- require.NoError(t, err)
-
- for _, f := range node.Decls {
- fn, ok := f.(*ast.FuncDecl)
- if !ok || fn.Recv != nil || !strings.HasPrefix(fn.Name.Name, "New") {
- continue
- }
-
- pkg := node.Name.Name
- constructorsPerPackage[pkg] = append(constructorsPerPackage[pkg], fn.Name.Name)
- }
-
- return constructorsPerPackage
-}
-
-func getCatalogerConstructorsFromPackage(t *testing.T, path string, info os.FileInfo) map[string][]string {
- constructorsPerPackage := make(map[string][]string)
-
- if info.IsDir() || !strings.HasSuffix(info.Name(), ".go") {
- return nil
- }
-
- fset := token.NewFileSet()
- node, err := parser.ParseFile(fset, path, nil, parser.ParseComments)
- require.NoError(t, err)
-
- for _, f := range node.Decls {
- fn, ok := f.(*ast.FuncDecl)
- if !ok || fn.Recv != nil || !strings.HasPrefix(fn.Name.Name, "New") || !strings.HasSuffix(fn.Name.Name, "Cataloger") {
- continue
- }
-
- pkg := node.Name.Name
- constructorsPerPackage[pkg] = append(constructorsPerPackage[pkg], fn.Name.Name)
- }
-
- return constructorsPerPackage
-}
-
-func assertAllPackageCatalogersRepresented(t *testing.T, constructorsPerPackage map[string]*strset.Set) {
- t.Helper()
-
- contents, err := os.ReadFile(filepath.Join(repoRoot(t), "internal", "task", "package_tasks.go"))
- require.NoError(t, err)
-
- // ensure all packages (keys) are represented in the package_tasks.go file
- for pkg, constructors := range constructorsPerPackage {
- if !assert.True(t, bytes.Contains(contents, []byte(pkg)), "missing package %q", pkg) {
- continue
- }
- for _, constructor := range constructors.List() {
- assert.True(t, bytes.Contains(contents, []byte(constructor)), "missing constructor %q for package %q", constructor, pkg)
- }
- }
-
-}
-
-func repoRoot(t testing.TB) string {
- t.Helper()
- root, err := exec.Command("git", "rev-parse", "--show-toplevel").Output()
- if err != nil {
- t.Fatalf("unable to find repo root dir: %+v", err)
- }
- absRepoRoot, err := filepath.Abs(strings.TrimSpace(string(root)))
- if err != nil {
- t.Fatal("unable to get abs path to repo root:", err)
- }
- return absRepoRoot
-}
-
-func mergeConstructors(constructorsPerPackage map[string]*strset.Set, partialResults map[string][]string) map[string]*strset.Set {
- for pkg, constructors := range partialResults {
- if _, ok := constructorsPerPackage[pkg]; !ok {
- constructorsPerPackage[pkg] = strset.New()
- }
- constructorsPerPackage[pkg].Add(constructors...)
- }
-
- return constructorsPerPackage
-}
diff --git a/cmd/syft/internal/test/integration/package_deduplication_test.go b/cmd/syft/internal/test/integration/package_deduplication_test.go
deleted file mode 100644
index 12fa9dcf2..000000000
--- a/cmd/syft/internal/test/integration/package_deduplication_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-//go:build !arm64
-
-package integration
-
-import (
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestPackageDeduplication(t *testing.T) {
- tests := []struct {
- scope source.Scope
- packageCount int
- instanceCount map[string]int
- locationCount map[string]int
- }{
- {
- scope: source.AllLayersScope,
- packageCount: 172, // without deduplication this would be 618
- instanceCount: map[string]int{
- "basesystem": 1,
- "wget": 1,
- "curl": 2, // upgraded in the image
- "vsftpd": 1,
- "httpd": 1, // rpm, - we exclude binary
- },
- locationCount: map[string]int{
- "basesystem-10.0-7.el7.centos": 4,
- "curl-7.29.0-59.el7": 1, // from base image
- "curl-7.29.0-59.el7_9.1": 3, // upgrade
- "wget-1.14-18.el7_6.1": 3,
- "vsftpd-3.0.2-29.el7_9": 2,
- "httpd-2.4.6-97.el7.centos.5": 1,
- // "httpd-2.4.6": 1, // binary
- },
- },
- {
- scope: source.SquashedScope,
- packageCount: 170,
- instanceCount: map[string]int{
- "basesystem": 1,
- "wget": 1,
- "curl": 1, // upgraded, but the most recent
- "vsftpd": 1,
- "httpd": 1, // rpm, binary is now excluded by overlap
- },
- locationCount: map[string]int{
- "basesystem-10.0-7.el7.centos": 1,
- "curl-7.29.0-59.el7_9.1": 1, // upgrade
- "wget-1.14-18.el7_6.1": 1,
- "vsftpd-3.0.2-29.el7_9": 1,
- "httpd-2.4.6-97.el7.centos.5": 1,
- // "httpd-2.4.6": 1, // binary (excluded)
- },
- },
- }
-
- for _, tt := range tests {
- t.Run(string(tt.scope), func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-vertical-package-dups", tt.scope)
- for _, p := range sbom.Artifacts.Packages.Sorted() {
- if p.Type == pkg.BinaryPkg {
- assert.NotEmpty(t, p.Name)
- }
- }
-
- assert.Equal(t, tt.packageCount, sbom.Artifacts.Packages.PackageCount())
- for name, expectedInstanceCount := range tt.instanceCount {
- pkgs := sbom.Artifacts.Packages.PackagesByName(name)
-
- // with multiple packages with the same name, something is wrong (or this is the wrong fixture)
- require.Len(t, pkgs, expectedInstanceCount)
-
- for _, p := range pkgs {
- nameVersion := fmt.Sprintf("%s-%s", name, p.Version)
- expectedLocationCount, ok := tt.locationCount[nameVersion]
- if !ok {
- t.Fatalf("missing name-version: %s", nameVersion)
- }
-
- // we should see merged locations (assumption, there was 1 location for each package)
- assert.Len(t, p.Locations.ToSlice(), expectedLocationCount)
-
- // all paths should match
- assert.Len(t, p.Locations.CoordinateSet().Paths(), 1)
- }
- }
-
- })
- }
-}
diff --git a/cmd/syft/internal/test/integration/package_ownership_relationship_test.go b/cmd/syft/internal/test/integration/package_ownership_relationship_test.go
deleted file mode 100644
index dc323ce10..000000000
--- a/cmd/syft/internal/test/integration/package_ownership_relationship_test.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package integration
-
-import (
- "bytes"
- "encoding/json"
- "testing"
-
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/format/syftjson"
- syftjsonModel "github.com/anchore/syft/syft/format/syftjson/model"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestPackageOwnershipRelationships(t *testing.T) {
- // ensure that the json encoder is applying artifact ownership with an image that has expected ownership relationships
- tests := []struct {
- fixture string
- }{
- {
- fixture: "image-owning-package",
- },
- }
-
- for _, test := range tests {
- t.Run(test.fixture, func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, test.fixture, source.SquashedScope)
-
- output := bytes.NewBufferString("")
- err := syftjson.NewFormatEncoder().Encode(output, sbom)
- require.NoError(t, err)
-
- var doc syftjsonModel.Document
- decoder := json.NewDecoder(output)
- if err := decoder.Decode(&doc); err != nil {
- t.Fatalf("unable to decode json doc: %+v", err)
- }
-
- if len(doc.ArtifactRelationships) == 0 {
- t.Errorf("expected to find relationships between packages but found none")
- }
-
- })
- }
-
-}
-
-func TestPackageOwnershipExclusions(t *testing.T) {
- // ensure that the json encoder is excluding packages by artifact ownership with an image that has expected ownership relationships
- tests := []struct {
- name string
- fixture string
- }{
- {
- name: "busybox binary is filtered based on ownership relationship",
- fixture: "image-os-binary-overlap",
- },
- }
-
- for _, test := range tests {
- t.Run(test.fixture, func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, test.fixture, source.SquashedScope)
- binaryPackages := make([]pkg.Package, 0)
- apkPackages := make([]pkg.Package, 0)
- for p := range sbom.Artifacts.Packages.Enumerate() {
- if p.Type == pkg.BinaryPkg && p.Name == "busybox" {
- binaryPackages = append(binaryPackages, p)
- }
- if p.Type == pkg.ApkPkg && p.Name == "busybox" {
- apkPackages = append(apkPackages, p)
- }
- }
-
- if len(binaryPackages) != 0 {
- packageNames := make([]string, 0)
- for _, p := range binaryPackages {
- packageNames = append(packageNames, p.Name)
- }
- t.Errorf("expected to find no binary packages but found %d packages: %v", len(binaryPackages), packageNames)
- }
- if len(apkPackages) == 0 {
- t.Errorf("expected to find apk packages but found none")
- }
- })
- }
-}
diff --git a/cmd/syft/internal/test/integration/regression_apk_scanner_buffer_size_test.go b/cmd/syft/internal/test/integration/regression_apk_scanner_buffer_size_test.go
deleted file mode 100644
index b0f61232e..000000000
--- a/cmd/syft/internal/test/integration/regression_apk_scanner_buffer_size_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestRegression212ApkBufferSize(t *testing.T) {
- // This is a regression test for issue #212 (https://github.com/anchore/syft/issues/212) in which the apk db could
- // not be processed due to a scanner buffer that was too small
- sbom, _ := catalogFixtureImage(t, "image-large-apk-data", source.SquashedScope)
-
- expectedPkgs := 58
- actualPkgs := 0
- for range sbom.Artifacts.Packages.Enumerate(pkg.ApkPkg) {
- actualPkgs += 1
- }
-
- if actualPkgs != expectedPkgs {
- t.Errorf("unexpected number of APK packages: %d != %d", expectedPkgs, actualPkgs)
- }
-}
diff --git a/cmd/syft/internal/test/integration/regression_go_bin_scanner_arch_test.go b/cmd/syft/internal/test/integration/regression_go_bin_scanner_arch_test.go
deleted file mode 100644
index 8a5d23188..000000000
--- a/cmd/syft/internal/test/integration/regression_go_bin_scanner_arch_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package integration
-
-import (
- "strings"
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestRegressionGoArchDiscovery(t *testing.T) {
- const (
- expectedELFPkg = 5
- expectedWINPkg = 5
- expectedMACOSPkg = 5
- )
- // This is a regression test to make sure the way we detect go binary packages
- // stays consistent and reproducible as the tool chain evolves
- sbom, _ := catalogFixtureImage(t, "image-go-bin-arch-coverage", source.SquashedScope)
-
- var actualELF, actualWIN, actualMACOS int
-
- for p := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {
- for _, l := range p.Locations.ToSlice() {
- switch {
- case strings.Contains(l.RealPath, "elf"):
- actualELF++
- case strings.Contains(l.RealPath, "win"):
- actualWIN++
- case strings.Contains(l.RealPath, "macos"):
- actualMACOS++
- default:
-
- }
- }
- }
-
- if actualELF != expectedELFPkg {
- t.Errorf("unexpected number of elf packages: %d != %d", expectedELFPkg, actualELF)
- }
-
- if actualWIN != expectedWINPkg {
- t.Errorf("unexpected number of win packages: %d != %d", expectedWINPkg, actualWIN)
- }
-
- if actualMACOS != expectedMACOSPkg {
- t.Errorf("unexpected number of macos packages: %d != %d", expectedMACOSPkg, actualMACOS)
- }
-}
diff --git a/cmd/syft/internal/test/integration/regression_java_no_main_package_test.go b/cmd/syft/internal/test/integration/regression_java_no_main_package_test.go
deleted file mode 100644
index 31a755efa..000000000
--- a/cmd/syft/internal/test/integration/regression_java_no_main_package_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/source"
-)
-
-func TestRegressionJavaNoMainPackage(t *testing.T) { // Regression: https://github.com/anchore/syft/issues/252
- catalogFixtureImage(t, "image-java-no-main-package", source.SquashedScope)
-}
diff --git a/cmd/syft/internal/test/integration/regression_java_virtualpath_test.go b/cmd/syft/internal/test/integration/regression_java_virtualpath_test.go
deleted file mode 100644
index a4685602e..000000000
--- a/cmd/syft/internal/test/integration/regression_java_virtualpath_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package integration
-
-import (
- "strings"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestWarCatalogedCorrectlyIfRenamed(t *testing.T) {
- // install hudson-war@2.2.1 and renames the file to `/hudson.war`
- sbom, _ := catalogFixtureImage(t, "image-java-virtualpath-regression", source.SquashedScope)
-
- badPURL := "pkg:maven/hudson/hudson@2.2.1"
- goodPURL := "pkg:maven/org.jvnet.hudson.main/hudson-war@2.2.1"
- foundCorrectPackage := false
- badVirtualPath := "/hudson.war:org.jvnet.hudson.main:hudson-war"
- goodVirtualPath := "/hudson.war"
- for _, p := range sbom.Artifacts.Packages.Sorted() {
- if p.Type == pkg.JavaPkg && strings.Contains(p.Name, "hudson") {
- assert.NotEqual(t, badPURL, p.PURL, "must not find bad purl %q", badPURL)
- virtPath := ""
- if meta, ok := p.Metadata.(pkg.JavaArchive); ok {
- virtPath = meta.VirtualPath
- if p.PURL == goodPURL && virtPath == goodVirtualPath {
- foundCorrectPackage = true
- }
- }
- assert.NotEqual(t, badVirtualPath, virtPath, "must not find bad virtual path %q", badVirtualPath)
- }
- }
- assert.True(t, foundCorrectPackage, "must find correct package, but did not")
-}
diff --git a/cmd/syft/internal/test/integration/regression_photon_package_test.go b/cmd/syft/internal/test/integration/regression_photon_package_test.go
deleted file mode 100644
index 6d9aaf322..000000000
--- a/cmd/syft/internal/test/integration/regression_photon_package_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestPhotonPackageRegression(t *testing.T) { // Regression: https://github.com/anchore/syft/pull/1997
- sbom, _ := catalogFixtureImage(t, "image-photon-all-layers", source.AllLayersScope)
- var packages []pkg.Package
- for p := range sbom.Artifacts.Packages.Enumerate() {
- packages = append(packages, p)
- }
-
- if len(packages) < 1 {
- t.Errorf("failed to find packages for photon distro; wanted > 0 got 0")
- }
-}
diff --git a/cmd/syft/internal/test/integration/regression_sbom_duplicate_relationships_test.go b/cmd/syft/internal/test/integration/regression_sbom_duplicate_relationships_test.go
deleted file mode 100644
index 1a093cea7..000000000
--- a/cmd/syft/internal/test/integration/regression_sbom_duplicate_relationships_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package integration
-
-import (
- "fmt"
- "testing"
-
- "github.com/scylladb/go-set/strset"
-
- "github.com/anchore/syft/syft/source"
-)
-
-func TestRelationshipsUnique(t *testing.T) {
- // This test is to ensure that the relationships are deduplicated in the final SBOM.
- // It is not a test of the relationships themselves.
- // This test is a regression test for #syft/2509
- sbom, _ := catalogFixtureImage(t, "image-pkg-coverage", source.SquashedScope)
- observedRelationships := strset.New()
-
- for _, rel := range sbom.Relationships {
- unique := fmt.Sprintf("%s:%s:%s", rel.From.ID(), rel.To.ID(), rel.Type)
- if observedRelationships.Has(unique) {
- t.Errorf("duplicate relationship found: %s", unique)
- }
- observedRelationships.Add(unique)
- }
-}
diff --git a/cmd/syft/internal/test/integration/rust_audit_binary_test.go b/cmd/syft/internal/test/integration/rust_audit_binary_test.go
deleted file mode 100644
index 5a61055e5..000000000
--- a/cmd/syft/internal/test/integration/rust_audit_binary_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestRustAudit(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-rust-auditable", source.SquashedScope)
-
- expectedPkgs := 2
- actualPkgs := 0
- for range sbom.Artifacts.Packages.Enumerate(pkg.RustPkg) {
- actualPkgs += 1
- }
-
- if actualPkgs != expectedPkgs {
- t.Errorf("unexpected number of Rust packages: %d != %d", expectedPkgs, actualPkgs)
- }
-}
diff --git a/cmd/syft/internal/test/integration/sbom_cataloger_test.go b/cmd/syft/internal/test/integration/sbom_cataloger_test.go
deleted file mode 100644
index ef538ac6b..000000000
--- a/cmd/syft/internal/test/integration/sbom_cataloger_test.go
+++ /dev/null
@@ -1,50 +0,0 @@
-package integration
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestSbomCataloger(t *testing.T) {
- assertCount := func(t *testing.T, sbom sbom.SBOM, expectedGoModCatalogerPkgs int, expectedSbomCatalogerPkgs int) {
- actualSbomPkgs := 0
- actualGoModPkgs := 0
-
- for p := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {
- if p.FoundBy == "go-module-file-cataloger" {
- actualGoModPkgs += 1
- } else if p.FoundBy == "sbom-cataloger" {
- actualSbomPkgs += 1
- }
- }
-
- if actualGoModPkgs != expectedGoModCatalogerPkgs {
- t.Errorf("unexpected number of packages from go mod cataloger: %d != %d", expectedGoModCatalogerPkgs, actualGoModPkgs)
- }
- if actualSbomPkgs != expectedSbomCatalogerPkgs {
- t.Errorf("unexpected number of packages from sbom cataloger: %d != %d", expectedSbomCatalogerPkgs, actualSbomPkgs)
- }
- }
-
- t.Run("default catalogers", func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-sbom-cataloger", source.SquashedScope, "+go-module-file-cataloger")
-
- expectedSbomCatalogerPkgs := 0
- expectedGoModCatalogerPkgs := 2
- assertCount(t, sbom, expectedGoModCatalogerPkgs, expectedSbomCatalogerPkgs)
- })
-
- // The image contains a go.mod file with 2 dependencies and an spdx json sbom.
- // The go.mod file contains 2 dependencies, and the sbom includes a go dependency
- // that overlaps with the go.mod
- t.Run("with sbom cataloger", func(t *testing.T) {
- sbom, _ := catalogFixtureImage(t, "image-sbom-cataloger", source.SquashedScope, "+go-module-file-cataloger", "+sbom-cataloger")
-
- expectedSbomCatalogerPkgs := 1
- expectedGoModCatalogerPkgs := 2
- assertCount(t, sbom, expectedGoModCatalogerPkgs, expectedSbomCatalogerPkgs)
- })
-}
diff --git a/cmd/syft/internal/test/integration/sqlite_rpmdb_test.go b/cmd/syft/internal/test/integration/sqlite_rpmdb_test.go
deleted file mode 100644
index 37f21cbba..000000000
--- a/cmd/syft/internal/test/integration/sqlite_rpmdb_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package integration
-
-import (
- "testing"
-
- _ "modernc.org/sqlite"
-
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-func TestSqliteRpm(t *testing.T) {
- // This is a regression test for issue #469 (https://github.com/anchore/syft/issues/469). Recent RPM
- // based distribution store package data in an sqlite database
- sbom, _ := catalogFixtureImage(t, "image-sqlite-rpmdb", source.SquashedScope)
-
- expectedPkgs := 139
- actualPkgs := 0
- for range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {
- actualPkgs += 1
- }
-
- if actualPkgs != expectedPkgs {
- t.Errorf("unexpected number of RPM packages: %d != %d", expectedPkgs, actualPkgs)
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/.gitignore b/cmd/syft/internal/test/integration/test-fixtures/.gitignore
deleted file mode 100644
index ea642e713..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-# we should strive to not commit blobs to the repo and strive to keep the build process of how blobs are acquired in-repo.
-# this blob is generated from syft/syft/catalogers/java/test-fixtures/java-builds , however, preserving the build process
-# twice in the repo seems redundant (even via symlink). Given that the fixture is a few kilobytes in size, the build process is already
-# captured, and integration tests should only be testing if jars can be discovered (not necessarily depth in java detection
-# functionality), committing it seems like an acceptable exception.
-!image-pkg-coverage/pkgs/java/*.jar
-!image-pkg-coverage/pkgs/java/*.hpi
-
-**/go.sum
-!image-go-bin-arch-coverage/go.sum
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/Makefile b/cmd/syft/internal/test/integration/test-fixtures/Makefile
deleted file mode 100644
index 2a75aa436..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# change these if you want CI to not use previous stored cache
-INTEGRATION_CACHE_BUSTER := "894d8ca"
-
-.PHONY: cache.fingerprint
-cache.fingerprint:
- find image-* -type f -exec md5sum {} + | awk '{print $1}' | sort | tee /dev/stderr | md5sum | tee cache.fingerprint && echo "$(INTEGRATION_CACHE_BUSTER)" >> cache.fingerprint
diff --git a/cmd/syft/internal/test/integration/test-fixtures/elf-test-fixtures b/cmd/syft/internal/test/integration/test-fixtures/elf-test-fixtures
deleted file mode 120000
index 0f836c1a4..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/elf-test-fixtures
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../syft/pkg/cataloger/binary/test-fixtures/elf-test-fixtures
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-small-file b/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-small-file
deleted file mode 100644
index 50c7fcb07..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-small-file
+++ /dev/null
@@ -1 +0,0 @@
-some contents!
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-a-small-file b/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-a-small-file
deleted file mode 120000
index 2255208c2..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-a-small-file
+++ /dev/null
@@ -1 +0,0 @@
-./a-small-file
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-file b/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-file
deleted file mode 120000
index 064ba9f04..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a-symlink-to-file
+++ /dev/null
@@ -1 +0,0 @@
-./a/file
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a/file b/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a/file
deleted file mode 100644
index 2ebc965e0..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/files/somewhere/there/is/a/file
+++ /dev/null
@@ -1,10 +0,0 @@
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
-with a lot of contents!
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-distro-id/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-distro-id/Dockerfile
deleted file mode 100644
index 0983819b3..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-distro-id/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM busybox:1.31.1@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209
-
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/Dockerfile
deleted file mode 100644
index 6bf28daaa..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM golang:1.21.1@sha256:cffaba795c36f07e372c7191b35ceaae114d74c31c3763d442982e3a4df3b39e as builder
-WORKDIR /app
-COPY go.sum go.mod app.go ./
-
-RUN GOOS=linux go build -o elf .
-RUN GOOS=windows go build -o win .
-RUN GOOS=darwin go build -o macos .
-
-FROM scratch
-
-WORKDIR /tmp
-COPY --from=builder /app/elf /
-COPY --from=builder /app/win /
-COPY --from=builder /app/macos /
-
-ENTRYPOINT ["/elf"]
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/app.go b/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/app.go
deleted file mode 100644
index 8747558d6..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/app.go
+++ /dev/null
@@ -1,18 +0,0 @@
-//build:ignore
-package main
-
-import (
- "fmt"
- "os"
-
- "golang.org/x/net/html"
- "golang.org/x/term"
-)
-
-var test = html.ErrBufferExceeded
-
-func main() {
- t := term.NewTerminal(os.Stdout, "foo")
- t.Write([]byte("hello anchore"))
- t.Write([]byte(fmt.Sprintf("%v", test)))
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.mod b/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.mod
deleted file mode 100644
index 4add6f7dc..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.mod
+++ /dev/null
@@ -1,14 +0,0 @@
-module github.com/anchore/test
-
-go 1.17
-
-require (
- golang.org/x/net v0.0.0-20211006190231-62292e806868
- golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
-)
-
-require golang.org/x/sys v0.0.0-20211006194710-c8a6f5223071 // indirect
-
-exclude golang.org/x/net v0.0.0-20211005215030-d2e5035098b3
-
-replace golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 => golang.org/x/term v0.0.0-20210916214954-140adaaadfaf
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.sum b/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.sum
deleted file mode 100644
index 832264401..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/go.sum
+++ /dev/null
@@ -1,12 +0,0 @@
-golang.org/x/net v0.0.0-20211006190231-62292e806868 h1:KlOXYy8wQWTUJYFgkUI40Lzr06ofg5IRXUK5C7qZt1k=
-golang.org/x/net v0.0.0-20211006190231-62292e806868/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211006194710-c8a6f5223071 h1:PjhxBct4MZii8FFR8+oeS7QOvxKOTZXgk63EU2XpfJE=
-golang.org/x/sys v0.0.0-20211006194710-c8a6f5223071/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210916214954-140adaaadfaf h1:Ihq/mm/suC88gF8WFcVwk+OV6Tq+wyA1O0E5UEvDglI=
-golang.org/x/term v0.0.0-20210916214954-140adaaadfaf/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/test b/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/test
deleted file mode 100755
index a23873125..000000000
Binary files a/cmd/syft/internal/test/integration/test-fixtures/image-go-bin-arch-coverage/test and /dev/null differ
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-golang-compiler/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-golang-compiler/Dockerfile
deleted file mode 100644
index 2d8e6bbdc..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-golang-compiler/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM golang:1.18.10-alpine
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-java-no-main-package/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-java-no-main-package/Dockerfile
deleted file mode 100644
index dce8deba3..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-java-no-main-package/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-FROM jenkins/jenkins:2.346.3-slim-jdk17@sha256:028fbbd9112c60ed086f5197fcba71992317864d27644e5949cf9c52ff4b65f0
-
-USER root
-
-WORKDIR /usr/share/jenkins
-
-RUN mkdir tmp
-
-WORKDIR /usr/share/jenkins/tmp
-
-RUN apt-get update 2>&1 > /dev/null && apt-get install -y less zip 2>&1 > /dev/null
-
-RUN unzip ../jenkins.war 2>&1 > /dev/null
-
-RUN rm -f ./META-INF/MANIFEST.MF
-
-WORKDIR /usr/share/jenkins
-
-RUN rm -rf jenkins.war
-
-RUN cd ./tmp && zip -r ../jenkins.war . && cd ..
-
-RUN rm -rf ./tmp
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-java-virtualpath-regression/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-java-virtualpath-regression/Dockerfile
deleted file mode 100644
index 63fc6c92a..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-java-virtualpath-regression/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM alpine:3.18.3@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a
-
-RUN wget https://repo1.maven.org/maven2/org/jvnet/hudson/main/hudson-war/2.2.1/hudson-war-2.2.1.war
-
-RUN mv hudson-war-2.2.1.war hudson.war
-
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-large-apk-data/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-large-apk-data/Dockerfile
deleted file mode 100644
index 8187870a8..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-large-apk-data/Dockerfile
+++ /dev/null
@@ -1,8 +0,0 @@
-FROM alpine@sha256:d9a7354e3845ea8466bb00b22224d9116b183e594527fb5b6c3d30bc01a20378
-
-# we keep these unpinned so that if alpine
-# changes our integration tests can adapt
-RUN apk add --no-cache \
- tzdata \
- vim \
- alpine-sdk
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-mariner-distroless/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-mariner-distroless/Dockerfile
deleted file mode 100644
index 6a6e08f61..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-mariner-distroless/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM mcr.microsoft.com/cbl-mariner/distroless/base:2.0.202205275@sha256:f550c5428df17b145851ad75983aca6d613ad4b51ca7983b2a83e67d0ac91a5d
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-os-binary-overlap/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-os-binary-overlap/Dockerfile
deleted file mode 100644
index 21c4d8479..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-os-binary-overlap/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM alpine:3.18.3@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a
-
-# syft should not longer show the binary package for this image:
-# https://github.com/anchore/syft/issues/931
-# busybox 1.36.1 binary <-- not reported synthetic package overlap
-# busybox 1.36.1-r0 apk
-RUN apk update && apk add busybox
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-owning-package/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-owning-package/Dockerfile
deleted file mode 100644
index 192998626..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-owning-package/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM ubuntu:20.04@sha256:33a5cc25d22c45900796a1aca487ad7a7cb09f09ea00b779e3b2026b4fc2faba
-# this covers rpm-python
-RUN apt-get update && apt-get install -y python-pil=6.2.1-3
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-photon-all-layers/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-photon-all-layers/Dockerfile
deleted file mode 100644
index 17bb3691b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-photon-all-layers/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM photon:5.0-20230729@sha256:4cf2a1ce0a3f4625f13a0becb6b9bccfdb014c565be6e9a2ec4c4aad1ff8a5d9
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/Dockerfile
deleted file mode 100644
index 17ad2a6f4..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/Dockerfile
+++ /dev/null
@@ -1,34 +0,0 @@
-FROM fedora:37@sha256:3f987b7657e944cf87a129cc262982d4f80e38bd98f7db313ccaf90ca7069dd2
-
-RUN dnf install 'dnf-command(download)' cpio unzip xz -y
-# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-6.0.7-301.fc37.x86_64.rpm
-# https://dl.fedoraproject.org/pub/fedora/linux/releases/37/Everything/x86_64/os/Packages/k/kernel-modules-6.0.7-301.fc37.x86_64.rpm
-RUN dnf download kernel-core-6.0.7-301.fc37 kernel-modules-6.0.7-301.fc37 -y
-
-RUN rpm2cpio kernel-core-*.rpm | cpio -t && \
- rpm2cpio kernel-core-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/vmlinuz
-
-RUN rpm2cpio kernel-modules-*.rpm | cpio -t && \
- rpm2cpio kernel-modules-*.rpm | cpio -idmv ./lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz
-
-RUN unxz /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko.xz
-
-# dotnet pkg coverage
-# https://nuget.info/packages/DocuSign.eSign.dll/6.8.0
-# https://github.com/docusign/docusign-esign-csharp-client/blob/master/LICENSE
-RUN curl -LO https://www.nuget.org/api/v2/package/DocuSign.eSign.dll/6.8.0
-RUN unzip 6.8.0
-RUN chmod 600 lib/net462/DocuSign.eSign.dll
-RUN rm 6.8.0
-
-FROM scratch
-
-COPY --from=0 lib/net462/DocuSign.eSign.dll .
-COPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz /lib/modules/6.0.7-301.fc37.x86_64/vmlinuz
-COPY --from=0 /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko /lib/modules/6.0.7-301.fc37.x86_64/kernel/drivers/tty/ttynull.ko
-
-
-COPY pkgs/ .
-# we duplicate to show a package count difference between all-layers and squashed scopes
-COPY lib lib
-COPY etc/ .
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/cocoapods/Podfile.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/cocoapods/Podfile.lock
deleted file mode 100644
index 4d82d8ef2..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/cocoapods/Podfile.lock
+++ /dev/null
@@ -1,92 +0,0 @@
-PODS:
- - GlossButtonNode (3.1.2):
- - Texture/Core (~> 3)
- - TextureSwiftSupport (>= 3.10.0)
- - PINCache (3.0.3):
- - PINCache/Arc-exception-safe (= 3.0.3)
- - PINCache/Core (= 3.0.3)
- - PINCache/Arc-exception-safe (3.0.3):
- - PINCache/Core
- - PINCache/Core (3.0.3):
- - PINOperation (~> 1.2.1)
- - PINOperation (1.2.1)
- - PINRemoteImage/Core (3.0.3):
- - PINOperation
- - PINRemoteImage/iOS (3.0.3):
- - PINRemoteImage/Core
- - PINRemoteImage/PINCache (3.0.3):
- - PINCache (~> 3.0.3)
- - PINRemoteImage/Core
- - Reveal-SDK (33)
- - SwiftGen (6.5.1)
- - Texture (3.1.0):
- - Texture/AssetsLibrary (= 3.1.0)
- - Texture/Core (= 3.1.0)
- - Texture/MapKit (= 3.1.0)
- - Texture/Photos (= 3.1.0)
- - Texture/PINRemoteImage (= 3.1.0)
- - Texture/Video (= 3.1.0)
- - Texture/AssetsLibrary (3.1.0):
- - Texture/Core
- - Texture/Core (3.1.0)
- - Texture/MapKit (3.1.0):
- - Texture/Core
- - Texture/Photos (3.1.0):
- - Texture/Core
- - Texture/PINRemoteImage (3.1.0):
- - PINRemoteImage/iOS (~> 3.0.0)
- - PINRemoteImage/PINCache
- - Texture/Core
- - Texture/Video (3.1.0):
- - Texture/Core
- - TextureSwiftSupport (3.13.0):
- - Texture/Core (>= 3)
- - TextureSwiftSupport/Components (= 3.13.0)
- - TextureSwiftSupport/Experiments (= 3.13.0)
- - TextureSwiftSupport/Extensions (= 3.13.0)
- - TextureSwiftSupport/LayoutSpecBuilders (= 3.13.0)
- - TextureSwiftSupport/Components (3.13.0):
- - Texture/Core (>= 3)
- - TextureSwiftSupport/LayoutSpecBuilders
- - TextureSwiftSupport/Experiments (3.13.0):
- - Texture/Core (>= 3)
- - TextureSwiftSupport/Extensions (3.13.0):
- - Texture/Core (>= 3)
- - TextureSwiftSupport/LayoutSpecBuilders (3.13.0):
- - Texture/Core (>= 3)
- - TinyConstraints (4.0.2)
-
-DEPENDENCIES:
- - GlossButtonNode
- - Reveal-SDK
- - SwiftGen
- - Texture
- - TextureSwiftSupport
- - TinyConstraints
-
-SPEC REPOS:
- trunk:
- - GlossButtonNode
- - PINCache
- - PINOperation
- - PINRemoteImage
- - Reveal-SDK
- - SwiftGen
- - Texture
- - TextureSwiftSupport
- - TinyConstraints
-
-SPEC CHECKSUMS:
- GlossButtonNode: 4ea1197a744f2fb5fb875fe31caf17ded4762e8f
- PINCache: 7a8fc1a691173d21dbddbf86cd515de6efa55086
- PINOperation: 00c935935f1e8cf0d1e2d6b542e75b88fc3e5e20
- PINRemoteImage: f1295b29f8c5e640e25335a1b2bd9d805171bd01
- Reveal-SDK: effba1c940b8337195563c425a6b5862ec875caa
- SwiftGen: a6d22010845f08fe18fbdf3a07a8e380fd22e0ea
- Texture: 2e8ab2519452515f7f5a520f5a8f7e0a413abfa3
- TextureSwiftSupport: c515c7927fab92d0d9485f49b885b8c5de34fbfb
- TinyConstraints: 7b7ccc0c485bb3bb47082138ff28bc33cd49897f
-
-PODFILE CHECKSUM: 07aa55f54421f6e6d3a920c11716a89fc9243d1b
-
-COCOAPODS: 1.11.2
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/composer/composer.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/composer/composer.lock
deleted file mode 100644
index b9388fd7b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/composer/composer.lock
+++ /dev/null
@@ -1,298 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "746ba78c06aef0cf954135ea909f9eb9",
- "packages": [
- {
- "name": "adoy/fastcgi-client",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/adoy/PHP-FastCGI-Client.git",
- "reference": "6d9a552f0206a1db7feb442824540aa6c55e5b27"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/adoy/PHP-FastCGI-Client/zipball/6d9a552f0206a1db7feb442824540aa6c55e5b27",
- "reference": "6d9a552f0206a1db7feb442824540aa6c55e5b27",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Adoy\\FastCGI\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Pierrick Charron",
- "email": "pierrick@adoy.net"
- }
- ],
- "description": "Lightweight, single file FastCGI client for PHP.",
- "keywords": [
- "fastcgi",
- "fcgi"
- ],
- "time": "2019-12-11T13:49:21+00:00"
- },
- {
- "name": "alcaeus/mongo-php-adapter",
- "version": "1.1.11",
- "source": {
- "type": "git",
- "url": "https://github.com/alcaeus/mongo-php-adapter.git",
- "reference": "43b6add94c8b4cb9890d662cba4c0defde733dcf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/43b6add94c8b4cb9890d662cba4c0defde733dcf",
- "reference": "43b6add94c8b4cb9890d662cba4c0defde733dcf",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-hash": "*",
- "ext-mongodb": "^1.2.0",
- "mongodb/mongodb": "^1.0.1",
- "php": "^5.6 || ^7.0"
- },
- "provide": {
- "ext-mongo": "1.6.14"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7.27 || ^6.0 || ^7.0",
- "squizlabs/php_codesniffer": "^3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Mongo": "lib/Mongo"
- },
- "psr-4": {
- "Alcaeus\\MongoDbAdapter\\": "lib/Alcaeus/MongoDbAdapter"
- },
- "files": [
- "lib/Mongo/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "alcaeus",
- "email": "alcaeus@alcaeus.org"
- },
- {
- "name": "Olivier Lechevalier",
- "email": "olivier.lechevalier@gmail.com"
- }
- ],
- "description": "Adapter to provide ext-mongo interface on top of mongo-php-libary",
- "keywords": [
- "database",
- "mongodb"
- ],
- "time": "2019-11-11T20:47:32+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "behat/gherkin",
- "version": "v4.6.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Behat/Gherkin.git",
- "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31",
- "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.5|~5",
- "symfony/phpunit-bridge": "~2.7|~3|~4",
- "symfony/yaml": "~2.3|~3|~4"
- },
- "suggest": {
- "symfony/yaml": "If you want to parse features, represented in YAML files"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Behat\\Gherkin": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- }
- ],
- "description": "Gherkin DSL parser for PHP 5.3",
- "homepage": "http://behat.org/",
- "keywords": [
- "BDD",
- "Behat",
- "Cucumber",
- "DSL",
- "gherkin",
- "parser"
- ],
- "time": "2020-03-17T14:03:26+00:00"
- },
- {
- "name": "codeception/codeception",
- "version": "4.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Codeception.git",
- "reference": "5515b6a6c6f1e1c909aaff2e5f3a15c177dfd1a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/5515b6a6c6f1e1c909aaff2e5f3a15c177dfd1a9",
- "reference": "5515b6a6c6f1e1c909aaff2e5f3a15c177dfd1a9",
- "shasum": ""
- },
- "require": {
- "behat/gherkin": "^4.4.0",
- "codeception/lib-asserts": "^1.0",
- "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
- "codeception/stub": "^2.0 | ^3.0",
- "ext-curl": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "guzzlehttp/psr7": "~1.4",
- "php": ">=5.6.0 <8.0",
- "symfony/console": ">=2.7 <6.0",
- "symfony/css-selector": ">=2.7 <6.0",
- "symfony/event-dispatcher": ">=2.7 <6.0",
- "symfony/finder": ">=2.7 <6.0",
- "symfony/yaml": ">=2.7 <6.0"
- },
- "require-dev": {
- "codeception/module-asserts": "*@dev",
- "codeception/module-cli": "*@dev",
- "codeception/module-db": "*@dev",
- "codeception/module-filesystem": "*@dev",
- "codeception/module-phpbrowser": "*@dev",
- "codeception/specify": "~0.3",
- "codeception/util-universalframework": "*@dev",
- "monolog/monolog": "~1.8",
- "squizlabs/php_codesniffer": "~2.0",
- "symfony/process": ">=2.7 <6.0",
- "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0"
- },
- "suggest": {
- "codeception/specify": "BDD-style code blocks",
- "codeception/verify": "BDD-style assertions",
- "hoa/console": "For interactive console functionality",
- "stecman/symfony-console-completion": "For BASH autocompletion",
- "symfony/phpunit-bridge": "For phpunit-bridge support"
- },
- "bin": [
- "codecept"
- ],
- "type": "library",
- "extra": {
- "branch-alias": []
- },
- "autoload": {
- "psr-4": {
- "Codeception\\": "src/Codeception",
- "Codeception\\Extension\\": "ext"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert@mail.ua",
- "homepage": "http://codegyre.com"
- }
- ],
- "description": "BDD-style testing framework",
- "homepage": "http://codeception.com/",
- "keywords": [
- "BDD",
- "TDD",
- "acceptance testing",
- "functional testing",
- "unit testing"
- ],
- "time": "2020-06-07T16:31:51+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {
- "intelligence/bt-base": 20,
- "intelligence/bt-common": 20,
- "intelligence/bt-lib-tools": 20,
- "intelligence/ci-lib-cache": 20,
- "intelligence/ci-lib-client": 20,
- "intelligence/ci-lib-contributed": 20,
- "intelligence/ci-lib-eav": 20,
- "intelligence/ci-lib-report": 20,
- "intelligence/git-leaks-elastic-client": 20,
- "intelligence/phishing-elastic-client": 20,
- "libs/gib-sso-client": 20,
- "mozhin/phplib": 20
- },
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": "^7.4.0",
- "ext-amqp": "^1.9",
- "ext-ctype": "*",
- "ext-curl": "^7.4",
- "ext-date": "^7.4",
- "ext-fileinfo": "*",
- "ext-geoip": "^1.1",
- "ext-gettext": "*",
- "ext-iconv": "*",
- "ext-imagick": "^3.4",
- "ext-imap": "^7.4",
- "ext-intl": "^7.4",
- "ext-json": "*",
- "ext-mbstring": "^7.4",
- "ext-mongodb": "^1.4",
- "ext-mysqli": "^7.4",
- "ext-pdo_mysql": "^7.4",
- "ext-redis": ">=3.1"
- },
- "platform-dev": []
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/conan/conanfile.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/conan/conanfile.txt
deleted file mode 100644
index c265b1328..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/conan/conanfile.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-# Docs at https://docs.conan.io/en/latest/reference/conanfile_txt.html
-
-[requires]
-catch2/2.13.8
-docopt.cpp/0.6.3
-fmt/8.1.1
-spdlog/1.9.2
-sdl/2.0.20
-fltk/1.3.8
-
-[generators]
-cmake_find_package_multi
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/etc/os-release b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/etc/os-release
deleted file mode 100644
index e07dd980d..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/etc/os-release
+++ /dev/null
@@ -1,12 +0,0 @@
-NAME="Ubuntu"
-VERSION="20.04 LTS (Focal Fossa)"
-ID=ubuntu
-ID_LIKE=debian
-PRETTY_NAME="Ubuntu 20.04 LTS"
-VERSION_ID="20.04"
-HOME_URL="https://www.ubuntu.com/"
-SUPPORT_URL="https://help.ubuntu.com/"
-BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
-PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
-VERSION_CODENAME=focal
-UBUNTU_CODENAME=focal
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/cabal.project.freeze b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/cabal.project.freeze
deleted file mode 100644
index f206bbb46..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/cabal.project.freeze
+++ /dev/null
@@ -1,16 +0,0 @@
-active-repositories: hackage.haskell.org:merge
-constraints: any.Cabal ==3.2.1.0,
- any.Diff ==0.4.1,
- any.HUnit ==1.6.2.0,
- any.OneTuple ==0.3.1,
- tls +compat -hans +network,
- any.Only ==0.1,
- any.PyF ==0.10.2.0,
- any.QuickCheck ==2.14.2,
- semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers,
- any.RSA ==2.4.1,
- any.SHA ==1.6.4.4,
- void -safe,
- any.Spock ==0.14.0.0,
-
-index-state: hackage.haskell.org 2022-07-07T01:01:53Z
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml
deleted file mode 100644
index 8c05906e1..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-flags: {}
-extra-package-dbs: []
-packages:
- - .
-resolver: lts-18.28
-extra-deps:
- - ShellCheck-0.8.0@sha256:353c9322847b661e4c6f7c83c2acf8e5c08b682fbe516c7d46c29605937543df,3297
- - colourista-0.1.0.1@sha256:98353ee0e2f5d97d2148513f084c1cd37dfda03e48aa9dd7a017c9d9c0ba710e,3307
- - language-docker-11.0.0@sha256:3406ff0c1d592490f53ead8cf2cd22bdf3d79fd125ccaf3add683f6d71c24d55,3883
- - spdx-1.0.0.2@sha256:7dfac9b454ff2da0abb7560f0ffbe00ae442dd5cb76e8be469f77e6988a70fed,2008
- - hspec-2.9.4@sha256:658a6a74d5a70c040edd6df2a12228c6d9e63082adaad1ed4d0438ad082a0ef3,1709
- - hspec-core-2.9.4@sha256:a126e9087409fef8dcafcd2f8656456527ac7bb163ed4d9cb3a57589042a5fe8,6498
- - hspec-discover-2.9.4@sha256:fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6,2165
- - stm-2.5.0.2@sha256:e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55,2314
-ghc-options:
- "$everything": -haddock
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml.lock
deleted file mode 100644
index a18542255..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/hackage/stack.yaml.lock
+++ /dev/null
@@ -1,75 +0,0 @@
-# This file was autogenerated by Stack.
-# You should not edit this file by hand.
-# For more information, please see the documentation at:
-# https://docs.haskellstack.org/en/stable/lock_files
-
-packages:
-- completed:
- hackage: HTTP-4000.3.16@sha256:6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71,5947
- pantry-tree:
- size: 1428
- sha256: b73a7f6d21cf20bbf819e19039409c9010efb5000d2b72cdd8fd67a9027c14e8
- original:
- hackage: HTTP-4000.3.16@sha256:6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71,5947
-- completed:
- hackage: configurator-pg-0.2.6@sha256:cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be,2849
- pantry-tree:
- size: 2463
- sha256: 97efe7a22afc93033bda5adcffdabc0f1c30dc32b2c3ba02114ce7cd74c942fd
- original:
- hackage: configurator-pg-0.2.6@sha256:cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be,2849
-- completed:
- hackage: hasql-dynamic-statements-0.3.1.1@sha256:2cfe6e75990e690f595a87cbe553f2e90fcd738610f6c66749c81cc4396b2cc4,2675
- pantry-tree:
- size: 595
- sha256: b84ae10a5c776f88f546df73bc957a35e61056400b7e805dad0b254612907e97
- original:
- hackage: hasql-dynamic-statements-0.3.1.1@sha256:2cfe6e75990e690f595a87cbe553f2e90fcd738610f6c66749c81cc4396b2cc4,2675
-- completed:
- hackage: hasql-implicits-0.1.0.4@sha256:0848d3cbc9d94e1e539948fa0be4d0326b26335034161bf8076785293444ca6f,1361
- pantry-tree:
- size: 264
- sha256: d49af8f8749ab7039fa668af4b78f997f7fa2928b4aded6798f573a3d08e76a0
- original:
- hackage: hasql-implicits-0.1.0.4@sha256:0848d3cbc9d94e1e539948fa0be4d0326b26335034161bf8076785293444ca6f,1361
-- completed:
- hackage: hasql-pool-0.5.2.2@sha256:b56d4dea112d97a2ef4b2749508c0ca646828cb2d77b827e8dc433d249bb2062,2438
- pantry-tree:
- size: 412
- sha256: 2741a33f947d28b4076c798c20c1f646beecd21f5eaf522c8256cbeb34d4d6d0
- original:
- hackage: hasql-pool-0.5.2.2@sha256:b56d4dea112d97a2ef4b2749508c0ca646828cb2d77b827e8dc433d249bb2062,2438
-- completed:
- hackage: lens-aeson-1.1.3@sha256:52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050,1764
- pantry-tree:
- size: 541
- sha256: b31392b78f2a03111c805f4400007778eb93b49f998ab41dfbebaaf9b5526bad
- original:
- hackage: lens-aeson-1.1.3@sha256:52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050,1764
-- completed:
- hackage: optparse-applicative-0.16.1.0@sha256:418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731,4982
- pantry-tree:
- size: 2979
- sha256: dd092d843091c08691485d68a1908517079b1bc6f3d73928f37635a19dc27fc1
- original:
- hackage: optparse-applicative-0.16.1.0@sha256:418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731,4982
-- completed:
- hackage: protolude-0.3.2@sha256:2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1,2240
- pantry-tree:
- size: 1594
- sha256: a36d2912ac552d950ba4476de7d950b56b82dd28e48b9f4d0efee938f10bc525
- original:
- hackage: protolude-0.3.2@sha256:2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1,2240
-- completed:
- hackage: ptr-0.16.8.2@sha256:708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac,3959
- pantry-tree:
- size: 1303
- sha256: 557c438345de19f82bf01d676100da2a191ef06f624e7a4b90b09ac17cbb52a5
- original:
- hackage: ptr-0.16.8.2@sha256:708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac,3959
-snapshots:
-- completed:
- size: 618951
- url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/14.yaml
- sha256: 4c31d4ef975b0211078862566aedf3b82b6cea569fc2cde4c72a51e5a8d236ce
- original: lts-19.14
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/lib/apk/db/installed b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/lib/apk/db/installed
deleted file mode 100644
index 34df860ad..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/lib/apk/db/installed
+++ /dev/null
@@ -1,49 +0,0 @@
-C:Q1p78yvTLG094tHE1+dToJGbmYzQE=
-P:libc-utils
-V:0.7.2-r0
-A:x86_64
-S:1175
-I:4096
-T:Meta package to pull in correct libc
-U:http://alpinelinux.org
-L:BSD
-o:libc-dev
-m:Natanael Copa
-t:1575749004
-c:97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479
-D:musl-utils
-
-C:Q1bTtF5526tETKfL+lnigzIDvm+2o=
-P:musl-utils
-V:1.1.24-r2
-A:x86_64
-S:37944
-I:151552
-T:the musl c library (libc) implementation
-U:https://musl.libc.org/
-L:MIT BSD GPL2+
-o:musl
-m:Timo TerƤs
-t:1584790550
-c:4024cc3b29ad4c65544ad068b8f59172b5494306
-D:scanelf so:libc.musl-x86_64.so.1
-p:cmd:getconf cmd:getent cmd:iconv cmd:ldconfig cmd:ldd
-r:libiconv
-F:sbin
-R:ldconfig
-a:0:0:755
-Z:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=
-F:usr
-F:usr/bin
-R:iconv
-a:0:0:755
-Z:Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=
-R:ldd
-a:0:0:755
-Z:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=
-R:getconf
-a:0:0:755
-Z:Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=
-R:getent
-a:0:0:755
-Z:Q1eR2Dz/WylabgbWMTkd2+hGmEya4=
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dart/pubspec.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dart/pubspec.lock
deleted file mode 100644
index c7b912f1a..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dart/pubspec.lock
+++ /dev/null
@@ -1,49 +0,0 @@
-# Generated by pub
-# See https://dart.dev/tools/pub/glossary#lockfile
-packages:
- ale:
- dependency: transitive
- description:
- name: ale
- url: "https://pub.hosted.org"
- source: hosted
- version: "3.3.0"
- analyzer:
- dependency: transitive
- description:
- name: analyzer
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.40.7"
- ansicolor:
- dependency: transitive
- description:
- name: ansicolor
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.1"
- archive:
- dependency: transitive
- description:
- name: archive
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.13"
- args:
- dependency: transitive
- description:
- name: args
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.6.0"
- key_binder:
- dependency: "direct main"
- description:
- path: "."
- ref: HEAD
- resolved-ref: "3f7b3a6350e73c7dcac45301c0e18fbd42af02f7"
- url: "git@github.com:Workiva/key_binder.git"
- source: git
- version: "1.11.20"
-sdks:
- dart: ">=2.12.0 <3.0.0"
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dotnet/TestLibrary.deps.json b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dotnet/TestLibrary.deps.json
deleted file mode 100644
index a429ec409..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/dotnet/TestLibrary.deps.json
+++ /dev/null
@@ -1,235 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v6.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v6.0": {
- "TestLibrary/1.0.0": {
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Newtonsoft.Json": "13.0.1",
- "Serilog": "2.10.0",
- "Serilog.Sinks.Console": "4.0.1",
- "TestCommon": "1.0.0"
- },
- "runtime": {
- "TestLibrary.dll": {}
- }
- },
- "AWSSDK.Core/3.7.10.6": {
- "runtime": {
- "lib/netcoreapp3.1/AWSSDK.Core.dll": {
- "assemblyVersion": "3.3.0.0",
- "fileVersion": "3.7.10.6"
- }
- }
- },
- "Microsoft.Extensions.DependencyInjection/6.0.0": {
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- },
- "runtime": {
- "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
- "runtime": {
- "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Microsoft.Extensions.Logging/6.0.0": {
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.DiagnosticSource": "6.0.0"
- },
- "runtime": {
- "lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Microsoft.Extensions.Logging.Abstractions/6.0.0": {
- "runtime": {
- "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Microsoft.Extensions.Options/6.0.0": {
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- },
- "runtime": {
- "lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Microsoft.Extensions.Primitives/6.0.0": {
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- },
- "runtime": {
- "lib/net6.0/Microsoft.Extensions.Primitives.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.21.52210"
- }
- }
- },
- "Newtonsoft.Json/13.0.1": {
- "runtime": {
- "lib/netstandard2.0/Newtonsoft.Json.dll": {
- "assemblyVersion": "13.0.0.0",
- "fileVersion": "13.0.1.25517"
- }
- }
- },
- "Serilog/2.10.0": {
- "runtime": {
- "lib/netstandard2.1/Serilog.dll": {
- "assemblyVersion": "2.0.0.0",
- "fileVersion": "2.10.0.0"
- }
- }
- },
- "Serilog.Sinks.Console/4.0.1": {
- "dependencies": {
- "Serilog": "2.10.0"
- },
- "runtime": {
- "lib/net5.0/Serilog.Sinks.Console.dll": {
- "assemblyVersion": "4.0.1.0",
- "fileVersion": "4.0.1.0"
- }
- }
- },
- "System.Diagnostics.DiagnosticSource/6.0.0": {
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Runtime.CompilerServices.Unsafe/6.0.0": {},
- "TestCommon/1.0.0": {
- "dependencies": {
- "AWSSDK.Core": "3.7.10.6"
- },
- "runtime": {
- "TestCommon.dll": {}
- }
- }
- }
- },
- "libraries": {
- "TestLibrary/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "AWSSDK.Core/3.7.10.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==",
- "path": "awssdk.core/3.7.10.6",
- "hashPath": "awssdk.core.3.7.10.6.nupkg.sha512"
- },
- "Microsoft.Extensions.DependencyInjection/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
- "path": "microsoft.extensions.dependencyinjection/6.0.0",
- "hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
- "path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
- "hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Logging/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
- "path": "microsoft.extensions.logging/6.0.0",
- "hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Logging.Abstractions/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
- "path": "microsoft.extensions.logging.abstractions/6.0.0",
- "hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Options/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
- "path": "microsoft.extensions.options/6.0.0",
- "hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Primitives/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
- "path": "microsoft.extensions.primitives/6.0.0",
- "hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
- },
- "Newtonsoft.Json/13.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
- "path": "newtonsoft.json/13.0.1",
- "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
- },
- "Serilog/2.10.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==",
- "path": "serilog/2.10.0",
- "hashPath": "serilog.2.10.0.nupkg.sha512"
- },
- "Serilog.Sinks.Console/4.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
- "path": "serilog.sinks.console/4.0.1",
- "hashPath": "serilog.sinks.console.4.0.1.nupkg.sha512"
- },
- "System.Diagnostics.DiagnosticSource/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
- "path": "system.diagnostics.diagnosticsource/6.0.0",
- "hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
- },
- "System.Runtime.CompilerServices.Unsafe/6.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
- "path": "system.runtime.compilerservices.unsafe/6.0.0",
- "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
- },
- "TestCommon/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/elixir/mix.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/elixir/mix.lock
deleted file mode 100644
index 8d9806c1b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/elixir/mix.lock
+++ /dev/null
@@ -1,17 +0,0 @@
-%{
- "castore": {:hex, :castore, "0.1.17", "ba672681de4e51ed8ec1f74ed624d104c0db72742ea1a5e74edbc770c815182f", [:mix], [], "hexpm", "d9844227ed52d26e7519224525cb6868650c272d4a3d327ce3ca5570c12163f9"},
- "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
- "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
- "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
- "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
- "db_connection": {:hex, :db_connection, "2.4.2", "f92e79aff2375299a16bcb069a14ee8615c3414863a6fef93156aee8e86c2ff3", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4fe53ca91b99f55ea249693a0229356a08f4d1a7931d8ffa79289b145fe83668"},
- "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
- "earmark_parser": {:hex, :earmark_parser, "1.4.25", "2024618731c55ebfcc5439d756852ec4e85978a39d0d58593763924d9a15916f", [:mix], [], "hexpm", "56749c5e1c59447f7b7a23ddb235e4b3defe276afc220a6227237f3efe83f51e"},
- "ecto": {:hex, :ecto, "3.8.1", "35e0bd8c8eb772e14a5191a538cd079706ecb45164ea08a7523b4fc69ab70f56", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f1b68f8d5fe3ab89e24f57c03db5b5d0aed3602077972098b3a6006a1be4b69b"},
- "ecto_sql": {:hex, :ecto_sql, "3.8.1", "1acaaba32ca0551fd19e492fc7c80414e72fc1a7140fc9395aaa53c2e8629798", [:mix], [{:db_connection, "~> 2.5 or ~> 2.4.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.8.1", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ba7fc75882edce6f2ceca047315d5db27ead773cafea47f1724e35f1e7964525"},
- "esbuild": {:hex, :esbuild, "0.5.0", "d5bb08ff049d7880ee3609ed5c4b864bd2f46445ea40b16b4acead724fb4c4a3", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "f183a0b332d963c4cfaf585477695ea59eef9a6f2204fdd0efa00e099694ffe5"},
- "ex_doc": {:hex, :ex_doc, "0.28.4", "001a0ea6beac2f810f1abc3dbf4b123e9593eaa5f00dd13ded024eae7c523298", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bf85d003dd34911d89c8ddb8bda1a958af3471a274a4c2150a9c01c78ac3f8ed"},
- "gettext": {:hex, :gettext, "0.19.1", "564953fd21f29358e68b91634799d9d26989f8d039d7512622efb3c3b1c97892", [:mix], [], "hexpm", "10c656c0912b8299adba9b061c06947511e3f109ab0d18b44a866a4498e77222"},
- "hpax": {:hex, :hpax, "0.1.1", "2396c313683ada39e98c20a75a82911592b47e5c24391363343bde74f82396ca", [:mix], [], "hexpm", "0ae7d5a0b04a8a60caf7a39fcf3ec476f35cc2cc16c05abea730d3ce6ac6c826"},
- "jason": {:hex, :jason, "1.3.0", "fa6b82a934feb176263ad2df0dbd91bf633d4a46ebfdffea0c8ae82953714946", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "53fc1f51255390e0ec7e50f9cb41e751c260d065dcba2bf0d08dc51a4002c2ac"},
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/accept.app b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/accept.app
deleted file mode 100644
index a2b960a76..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/accept.app
+++ /dev/null
@@ -1,10 +0,0 @@
-{application,accept,
- [{description,"Accept header(s) for Erlang/Elixir"},
- {vsn,"0.3.5"},
- {registered,[]},
- {applications,[kernel,stdlib]},
- {env,[]},
- {modules, ['accept_encoding_header','accept_header','accept_neg','accept_parser']},
- {maintainers,["Ilya Khaprov"]},
- {licenses,["MIT"]},
- {links,[{"Github","https://github.com/deadtrickster/accept"}]}]}.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/rebar.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/rebar.lock
deleted file mode 100644
index 34397ef86..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/erlang/rebar.lock
+++ /dev/null
@@ -1,26 +0,0 @@
-{"1.2.0",
-[{<<"certifi">>,{pkg,<<"certifi">>,<<"2.9.0">>},0},
- {<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},0},
- {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},0},
- {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},0},
- {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},0},
- {<<"ssl_verify_fun">>,{pkg,<<"ssl_verify_fun">>,<<"1.1.6">>},0},
- {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},0}]}.
-[
-{pkg_hash,[
- {<<"certifi">>, <<"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21">>},
- {<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>},
- {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>},
- {<<"mimerl">>, <<"67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3">>},
- {<<"parse_trans">>, <<"16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8">>},
- {<<"ssl_verify_fun">>, <<"CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0">>},
- {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]},
-{pkg_hash_ext,[
- {<<"certifi">>, <<"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641">>},
- {<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>},
- {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>},
- {<<"mimerl">>, <<"F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323">>},
- {<<"parse_trans">>, <<"07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B">>},
- {<<"ssl_verify_fun">>, <<"BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680">>},
- {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]}
-].
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/github-actions/.github/workflows/validations.yaml b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/github-actions/.github/workflows/validations.yaml
deleted file mode 100644
index 2c8c17526..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/github-actions/.github/workflows/validations.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: "Validations"
-
-on:
- workflow_dispatch:
- pull_request:
- push:
- branches:
- - main
-
-jobs:
- call-workflow-1-in-local-repo:
- uses: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89
-
- Unit-Test:
- name: "Unit tests"
- runs-on: ubuntu-20.04
- steps:
- - uses: actions/checkout@v4
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/go/go.mod b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/go/go.mod
deleted file mode 100644
index 4edcf7e8b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/go/go.mod
+++ /dev/null
@@ -1,7 +0,0 @@
-module github.com/anchore/syft
-
-go 1.14
-
-require (
- github.com/bmatcuk/doublestar v1.3.1
-)
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-java-app-maven-0.1.0.jar b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-java-app-maven-0.1.0.jar
deleted file mode 100644
index 553137839..000000000
Binary files a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-java-app-maven-0.1.0.jar and /dev/null differ
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-jenkins-plugin.hpi b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-jenkins-plugin.hpi
deleted file mode 100644
index fc1f16d2f..000000000
Binary files a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/example-jenkins-plugin.hpi and /dev/null differ
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/generate-fixtures.md b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/generate-fixtures.md
deleted file mode 100644
index 249a21023..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/generate-fixtures.md
+++ /dev/null
@@ -1 +0,0 @@
-See the syft/cataloger/java/test-fixtures/java-builds dir to generate test fixtures and copy to here manually.
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/pom.xml b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/pom.xml
deleted file mode 100644
index 4ab76d1d9..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/java/pom.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
- 4.0.0
-
- org.anchore
- example-java-app-maven
- jar
- 0.1.0
-
-
- 1.8
- 1.8
-
-
-
-
-
- joda-time
- joda-time
- 2.9.2
-
-
-
-
- junit
- junit
- 4.12
- test
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 2.1
-
-
- package
-
- shade
-
-
-
-
- hello.HelloWorld
-
-
-
-
-
-
-
-
-
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-json/package.json b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-json/package.json
deleted file mode 100644
index aba48c6bd..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-json/package.json
+++ /dev/null
@@ -1,314 +0,0 @@
-{
- "version": "6.14.6",
- "name": "npm",
- "description": "a package manager for JavaScript",
- "keywords": [
- "install",
- "modules",
- "package manager",
- "package.json"
- ],
- "preferGlobal": true,
- "config": {
- "publishtest": false
- },
- "homepage": "https://docs.npmjs.com/",
- "author": "Isaac Z. Schlueter (http://blog.izs.me)",
- "repository": {
- "type": "git",
- "url": "https://github.com/npm/cli"
- },
- "bugs": {
- "url": "https://npm.community/c/bugs"
- },
- "directories": {
- "bin": "./bin",
- "doc": "./doc",
- "lib": "./lib",
- "man": "./man"
- },
- "main": "./lib/npm.js",
- "bin": {
- "npm": "./bin/npm-cli.js",
- "npx": "./bin/npx-cli.js"
- },
- "dependencies": {
- "JSONStream": "^1.3.5",
- "abbrev": "~1.1.1",
- "ansicolors": "~0.3.2",
- "ansistyles": "~0.1.3",
- "aproba": "^2.0.0",
- "archy": "~1.0.0",
- "bin-links": "^1.1.7",
- "bluebird": "^3.5.5",
- "byte-size": "^5.0.1",
- "cacache": "^12.0.3",
- "call-limit": "^1.1.1",
- "chownr": "^1.1.4",
- "ci-info": "^2.0.0",
- "cli-columns": "^3.1.2",
- "cli-table3": "^0.5.1",
- "cmd-shim": "^3.0.3",
- "columnify": "~1.5.4",
- "config-chain": "^1.1.12",
- "detect-indent": "~5.0.0",
- "detect-newline": "^2.1.0",
- "dezalgo": "~1.0.3",
- "editor": "~1.0.0",
- "figgy-pudding": "^3.5.1",
- "find-npm-prefix": "^1.0.2",
- "fs-vacuum": "~1.2.10",
- "fs-write-stream-atomic": "~1.0.10",
- "gentle-fs": "^2.3.0",
- "glob": "^7.1.6",
- "graceful-fs": "^4.2.4",
- "has-unicode": "~2.0.1",
- "hosted-git-info": "^2.8.8",
- "iferr": "^1.0.2",
- "infer-owner": "^1.0.4",
- "inflight": "~1.0.6",
- "inherits": "^2.0.4",
- "ini": "^1.3.5",
- "init-package-json": "^1.10.3",
- "is-cidr": "^3.0.0",
- "json-parse-better-errors": "^1.0.2",
- "lazy-property": "~1.0.0",
- "libcipm": "^4.0.7",
- "libnpm": "^3.0.1",
- "libnpmaccess": "^3.0.2",
- "libnpmhook": "^5.0.3",
- "libnpmorg": "^1.0.1",
- "libnpmsearch": "^2.0.2",
- "libnpmteam": "^1.0.2",
- "libnpx": "^10.2.2",
- "lock-verify": "^2.1.0",
- "lockfile": "^1.0.4",
- "lodash._baseuniq": "~4.6.0",
- "lodash.clonedeep": "~4.5.0",
- "lodash.union": "~4.6.0",
- "lodash.uniq": "~4.5.0",
- "lodash.without": "~4.4.0",
- "lru-cache": "^5.1.1",
- "meant": "~1.0.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.5",
- "move-concurrently": "^1.0.1",
- "node-gyp": "^5.1.0",
- "nopt": "^4.0.3",
- "normalize-package-data": "^2.5.0",
- "npm-audit-report": "^1.3.2",
- "npm-cache-filename": "~1.0.2",
- "npm-install-checks": "^3.0.2",
- "npm-lifecycle": "^3.1.4",
- "npm-package-arg": "^6.1.1",
- "npm-packlist": "^1.4.8",
- "npm-pick-manifest": "^3.0.2",
- "npm-profile": "^4.0.4",
- "npm-registry-fetch": "^4.0.5",
- "npm-user-validate": "~1.0.0",
- "npmlog": "~4.1.2",
- "once": "~1.4.0",
- "opener": "^1.5.1",
- "osenv": "^0.1.5",
- "pacote": "^9.5.12",
- "path-is-inside": "~1.0.2",
- "promise-inflight": "~1.0.1",
- "qrcode-terminal": "^0.12.0",
- "query-string": "^6.8.2",
- "qw": "~1.0.1",
- "read": "~1.0.7",
- "read-cmd-shim": "^1.0.5",
- "read-installed": "~4.0.3",
- "read-package-json": "^2.1.1",
- "read-package-tree": "^5.3.1",
- "readable-stream": "^3.6.0",
- "readdir-scoped-modules": "^1.1.0",
- "request": "^2.88.0",
- "retry": "^0.12.0",
- "rimraf": "^2.7.1",
- "safe-buffer": "^5.1.2",
- "semver": "^5.7.1",
- "sha": "^3.0.0",
- "slide": "~1.1.6",
- "sorted-object": "~2.0.1",
- "sorted-union-stream": "~2.1.3",
- "ssri": "^6.0.1",
- "stringify-package": "^1.0.1",
- "tar": "^4.4.13",
- "text-table": "~0.2.0",
- "tiny-relative-date": "^1.3.0",
- "uid-number": "0.0.6",
- "umask": "~1.1.0",
- "unique-filename": "^1.1.1",
- "unpipe": "~1.0.0",
- "update-notifier": "^2.5.0",
- "uuid": "^3.3.3",
- "validate-npm-package-license": "^3.0.4",
- "validate-npm-package-name": "~3.0.0",
- "which": "^1.3.1",
- "worker-farm": "^1.7.0",
- "write-file-atomic": "^2.4.3"
- },
- "bundleDependencies": [
- "abbrev",
- "ansicolors",
- "ansistyles",
- "aproba",
- "archy",
- "bin-links",
- "bluebird",
- "byte-size",
- "cacache",
- "call-limit",
- "chownr",
- "ci-info",
- "cli-columns",
- "cli-table3",
- "cmd-shim",
- "columnify",
- "config-chain",
- "debuglog",
- "detect-indent",
- "detect-newline",
- "dezalgo",
- "editor",
- "figgy-pudding",
- "find-npm-prefix",
- "fs-vacuum",
- "fs-write-stream-atomic",
- "gentle-fs",
- "glob",
- "graceful-fs",
- "has-unicode",
- "hosted-git-info",
- "iferr",
- "imurmurhash",
- "infer-owner",
- "inflight",
- "inherits",
- "ini",
- "init-package-json",
- "is-cidr",
- "json-parse-better-errors",
- "JSONStream",
- "lazy-property",
- "libcipm",
- "libnpm",
- "libnpmaccess",
- "libnpmhook",
- "libnpmorg",
- "libnpmsearch",
- "libnpmteam",
- "libnpx",
- "lock-verify",
- "lockfile",
- "lodash._baseindexof",
- "lodash._baseuniq",
- "lodash._bindcallback",
- "lodash._cacheindexof",
- "lodash._createcache",
- "lodash._getnative",
- "lodash.clonedeep",
- "lodash.restparam",
- "lodash.union",
- "lodash.uniq",
- "lodash.without",
- "lru-cache",
- "meant",
- "mississippi",
- "mkdirp",
- "move-concurrently",
- "node-gyp",
- "nopt",
- "normalize-package-data",
- "npm-audit-report",
- "npm-cache-filename",
- "npm-install-checks",
- "npm-lifecycle",
- "npm-package-arg",
- "npm-packlist",
- "npm-pick-manifest",
- "npm-profile",
- "npm-registry-fetch",
- "npm-user-validate",
- "npmlog",
- "once",
- "opener",
- "osenv",
- "pacote",
- "path-is-inside",
- "promise-inflight",
- "qrcode-terminal",
- "query-string",
- "qw",
- "read-cmd-shim",
- "read-installed",
- "read-package-json",
- "read-package-tree",
- "read",
- "readable-stream",
- "readdir-scoped-modules",
- "request",
- "retry",
- "rimraf",
- "safe-buffer",
- "semver",
- "sha",
- "slide",
- "sorted-object",
- "sorted-union-stream",
- "ssri",
- "stringify-package",
- "tar",
- "text-table",
- "tiny-relative-date",
- "uid-number",
- "umask",
- "unique-filename",
- "unpipe",
- "update-notifier",
- "uuid",
- "validate-npm-package-license",
- "validate-npm-package-name",
- "which",
- "worker-farm",
- "write-file-atomic"
- ],
- "devDependencies": {
- "deep-equal": "^1.0.1",
- "get-stream": "^4.1.0",
- "licensee": "^7.0.3",
- "marked": "^0.6.3",
- "marked-man": "^0.6.0",
- "npm-registry-couchapp": "^2.7.4",
- "npm-registry-mock": "^1.3.1",
- "require-inject": "^1.4.4",
- "sprintf-js": "^1.1.2",
- "standard": "^11.0.1",
- "tacks": "^1.3.0",
- "tap": "^12.7.0",
- "tar-stream": "^2.1.0"
- },
- "scripts": {
- "dumpconf": "env | grep npm | sort | uniq",
- "prepare": "node bin/npm-cli.js rebuild && node bin/npm-cli.js --no-audit --no-timing prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 mandocs",
- "preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true",
- "licenses": "licensee --production --errors-only",
- "tap": "tap -J --timeout 300 --no-esm",
- "tap-cover": "tap -J --nyc-arg=--cache --coverage --timeout 600 --no-esm",
- "lint": "standard",
- "pretest": "npm run lint",
- "test": "npm run test-tap --",
- "test:nocleanup": "NO_TEST_CLEANUP=1 npm run test --",
- "sudotest": "sudo npm run tap -- \"test/tap/*.js\"",
- "sudotest:nocleanup": "sudo NO_TEST_CLEANUP=1 npm run tap -- \"test/tap/*.js\"",
- "posttest": "rimraf test/npm_cache*",
- "test-coverage": "npm run tap-cover -- \"test/tap/*.js\" \"test/network/*.js\"",
- "test-tap": "npm run tap -- \"test/tap/*.js\" \"test/network/*.js\"",
- "test-node": "tap --timeout 240 \"test/tap/*.js\" \"test/network/*.js\""
- },
- "license": "Artistic-2.0",
- "engines": {
- "node": "6 >=6.2.0 || 8 || >=9.3.0"
- }
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-lock/package-lock.json b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-lock/package-lock.json
deleted file mode 100644
index 9eb8f4cf8..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/package-lock/package-lock.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg=="
- }
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/yarn/yarn.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/yarn/yarn.lock
deleted file mode 100644
index a97627b6c..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/javascript/yarn/yarn.lock
+++ /dev/null
@@ -1,12 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
- integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/lib/apk/db/installed b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/lib/apk/db/installed
deleted file mode 100644
index 67a633b40..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/lib/apk/db/installed
+++ /dev/null
@@ -1,49 +0,0 @@
-C:Q1p78yvTLG094tHE1+dToJGbmYzQE=
-P:libc-utils
-V:0.7.2-r0
-A:x86_64
-S:1175
-I:4096
-T:Meta package to pull in correct libc
-U:http://alpinelinux.org
-L:BSD
-o:libc-dev
-m:Natanael Copa
-t:1575749004
-c:97b1c2842faa3bfa30f5811ffbf16d5ff9f1a479
-D:musl-utils
-
-C:Q1bTtF5526tETKfL+lnigzIDvm+2o=
-P:musl-utils
-V:1.1.24-r2
-A:x86_64
-S:37944
-I:151552
-T:the musl c library (libc) implementation
-U:https://musl.libc.org/
-L:MIT BSD GPL2+
-o:musl
-m:Timo TerƤs
-t:1584790550
-c:4024cc3b29ad4c65544ad068b8f59172b5494306
-D:scanelf so:libc.musl-x86_64.so.1
-p:cmd:getconf cmd:getent cmd:iconv cmd:ldconfig cmd:ldd
-r:libiconv
-F:sbin
-R:ldconfig
-a:0:0:755
-Z:Q1Kja2+POZKxEkUOZqwSjC6kmaED4=
-F:usr
-F:usr/bin
-R:iconv
-a:0:0:755
-Z:Q1CVmFbdY+Hv6/jAHl1gec2Kbx1EY=
-R:ldd
-a:0:0:755
-Z:Q1yFAhGggmL7ERgbIA7KQxyTzf3ks=
-R:getconf
-a:0:0:755
-Z:Q1dAdYK8M/INibRQF5B3Rw7cmNDDA=
-R:getent
-a:0:0:755
-Z:Q1eR2Dz/WylabgbWMTkd2+hGmEya4=
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1 b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1
deleted file mode 100644
index fd4ed835d..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/nix/store/h0cnbmfcn93xm5dg2x27ixhag1cwndga-glibc-2.34-210-bin/share/man/glibc.1
+++ /dev/null
@@ -1 +0,0 @@
-the man pages
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/.registry/.channel.pecl.php.net/memcached.reg b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/.registry/.channel.pecl.php.net/memcached.reg
deleted file mode 100644
index fca1bd301..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/.registry/.channel.pecl.php.net/memcached.reg
+++ /dev/null
@@ -1 +0,0 @@
-a:5:{s:4:"name";s:9:"memcached";s:4:"date";s:10:"2022-01-11";s:4:"time";s:8:"15:23:47";s:7:"version";a:2:{s:7:"release";s:5:"3.2.0";s:3:"api";s:5:"3.2.0";}s:7:"license";a:2:{s:7:"attribs";a:1:{s:3:"uri";s:26:"http://www.php.net/license";}s:8:"_content";s:11:"PHP License";}}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/vendor/composer/installed.json b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/vendor/composer/installed.json
deleted file mode 100644
index 39af3b5de..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/php/vendor/composer/installed.json
+++ /dev/null
@@ -1,173 +0,0 @@
-{
- "packages": [
- {
- "name": "nikic/fast-route",
- "version": "v1.3.0",
- "version_normalized": "1.3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/FastRoute.git",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
- "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35|~5.7"
- },
- "time": "2018-02-13T20:26:39+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "FastRoute\\": "src/"
- },
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov",
- "email": "nikic@php.net"
- }
- ],
- "description": "Fast request router for PHP",
- "keywords": [
- "router",
- "routing"
- ],
- "support": {
- "issues": "https://github.com/nikic/FastRoute/issues",
- "source": "https://github.com/nikic/FastRoute/tree/master"
- },
- "install-path": "../nikic/fast-route"
- },
- {
- "name": "psr/container",
- "version": "2.0.2",
- "version_normalized": "2.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "shasum": ""
- },
- "require": {
- "php": ">=7.4.0"
- },
- "time": "2021-11-05T16:47:00+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/2.0.2"
- },
- "install-path": "../psr/container"
- },
- {
- "name": "psr/http-factory",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0"
- },
- "time": "2019-04-30T12:38:16+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for PSR-7 HTTP message factories",
- "keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-factory/tree/master"
- },
- "install-path": "../psr/http-factory"
- }
- ],
- "dev": true,
- "dev-package-names": []
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/METADATA b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/METADATA
deleted file mode 100644
index 924780dfd..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/METADATA
+++ /dev/null
@@ -1,47 +0,0 @@
-Metadata-Version: 2.1
-Name: Pygments
-Version: 2.6.1
-Summary: Pygments is a syntax highlighting package written in Python.
-Home-page: https://pygments.org/
-Author: Georg Brandl
-Author-email: georg@python.org
-License: BSD License
-Keywords: syntax highlighting
-Platform: any
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: End Users/Desktop
-Classifier: Intended Audience :: System Administrators
-Classifier: Development Status :: 6 - Mature
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Operating System :: OS Independent
-Classifier: Topic :: Text Processing :: Filters
-Classifier: Topic :: Utilities
-Requires-Python: >=3.5
-
-
-Pygments
-~~~~~~~~
-
-Pygments is a syntax highlighting package written in Python.
-
-It is a generic syntax highlighter suitable for use in code hosting, forums,
-wikis or other applications that need to prettify source code. Highlights
-are:
-
-* a wide range of over 500 languages and other text formats is supported
-* special attention is paid to details, increasing quality by a fair amount
-* support for new languages and formats are added easily
-* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image formats that PIL supports and ANSI sequences
-* it is usable as a command-line tool and as a library
-
-:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.
-:license: BSD, see LICENSE for details.
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/RECORD b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/RECORD
deleted file mode 100644
index af233f390..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/RECORD
+++ /dev/null
@@ -1,5 +0,0 @@
-../../../bin/pygmentize,sha256=dDhv_U2jiCpmFQwIRHpFRLAHUO4R1jIJPEvT_QYTFp8,220
-Pygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449
-Pygments-2.6.1.dist-info/RECORD,,
-pygments/__pycache__/__init__.cpython-38.pyc,,
-pygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/top_level.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/top_level.txt
deleted file mode 100644
index 1e09fdb90..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/dist-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-top-level-pkg
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/PKG-INFO b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/PKG-INFO
deleted file mode 100644
index a73770668..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/PKG-INFO
+++ /dev/null
@@ -1,134 +0,0 @@
-Metadata-Version: 2.1
-Name: requests
-Version: 2.22.0
-Summary: Python HTTP for Humans.
-Home-page: http://python-requests.org
-Author: Kenneth Reitz
-Author-email: me@kennethreitz.org
-License: Apache 2.0
-Description: Requests: HTTP for Humansā¢
- ==========================
-
- [![image](https://img.shields.io/pypi/v/requests.svg)](https://pypi.org/project/requests/)
- [![image](https://img.shields.io/pypi/l/requests.svg)](https://pypi.org/project/requests/)
- [![image](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests/)
- [![codecov.io](https://codecov.io/github/requests/requests/coverage.svg?branch=master)](https://codecov.io/github/requests/requests)
- [![image](https://img.shields.io/github/contributors/requests/requests.svg)](https://github.com/requests/requests/graphs/contributors)
- [![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/kennethreitz)
-
- Requests is the only *Non-GMO* HTTP library for Python, safe for human
- consumption.
-
- ![image](https://farm5.staticflickr.com/4317/35198386374_1939af3de6_k_d.jpg)
-
- Behold, the power of Requests:
-
- ``` {.sourceCode .python}
- >>> import requests
- >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
- >>> r.status_code
- 200
- >>> r.headers['content-type']
- 'application/json; charset=utf8'
- >>> r.encoding
- 'utf-8'
- >>> r.text
- u'{"type":"User"...'
- >>> r.json()
- {u'disk_usage': 368627, u'private_gists': 484, ...}
- ```
-
- See [the similar code, sans Requests](https://gist.github.com/973705).
-
- [![image](https://raw.githubusercontent.com/requests/requests/master/docs/_static/requests-logo-small.png)](http://docs.python-requests.org/)
-
- Requests allows you to send *organic, grass-fed* HTTP/1.1 requests,
- without the need for manual labor. There's no need to manually add query
- strings to your URLs, or to form-encode your POST data. Keep-alive and
- HTTP connection pooling are 100% automatic, thanks to
- [urllib3](https://github.com/shazow/urllib3).
-
- Besides, all the cool kids are doing it. Requests is one of the most
- downloaded Python packages of all time, pulling in over 11,000,000
- downloads every month. You don't want to be left out!
-
- Feature Support
- ---------------
-
- Requests is ready for today's web.
-
- - International Domains and URLs
- - Keep-Alive & Connection Pooling
- - Sessions with Cookie Persistence
- - Browser-style SSL Verification
- - Basic/Digest Authentication
- - Elegant Key/Value Cookies
- - Automatic Decompression
- - Automatic Content Decoding
- - Unicode Response Bodies
- - Multipart File Uploads
- - HTTP(S) Proxy Support
- - Connection Timeouts
- - Streaming Downloads
- - `.netrc` Support
- - Chunked Requests
-
- Requests officially supports Python 2.7 & 3.4ā3.7, and runs great on
- PyPy.
-
- Installation
- ------------
-
- To install Requests, simply use [pipenv](http://pipenv.org/) (or pip, of
- course):
-
- ``` {.sourceCode .bash}
- $ pipenv install requests
- āØš°āØ
- ```
-
- Satisfaction guaranteed.
-
- Documentation
- -------------
-
- Fantastic documentation is available at
- , for a limited time only.
-
- How to Contribute
- -----------------
-
- 1. Become more familiar with the project by reading our [Contributor's Guide](http://docs.python-requests.org/en/latest/dev/contributing/) and our [development philosophy](http://docs.python-requests.org/en/latest/dev/philosophy/).
- 2. Check for open issues or open a fresh issue to start a discussion
- around a feature idea or a bug. There is a [Contributor
- Friendly](https://github.com/requests/requests/issues?direction=desc&labels=Contributor+Friendly&page=1&sort=updated&state=open)
- tag for issues that should be ideal for people who are not very
- familiar with the codebase yet.
- 3. Fork [the repository](https://github.com/requests/requests) on
- GitHub to start making your changes to the **master** branch (or
- branch off of it).
- 4. Write a test which shows that the bug was fixed or that the feature
- works as expected.
- 5. Send a pull request and bug the maintainer until it gets merged and
- published. :) Make sure to add yourself to
- [AUTHORS](https://github.com/requests/requests/blob/master/AUTHORS.rst).
-
-
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Natural Language :: English
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
-Description-Content-Type: text/markdown
-Provides-Extra: security
-Provides-Extra: socks
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/top_level.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/top_level.txt
deleted file mode 100644
index 1e09fdb90..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-top-level-pkg
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements-dev.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements-dev.txt
deleted file mode 100644
index 16c74e8b5..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements-dev.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-jsonschema==2.6.0
-passlib==1.7.2
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements.txt
deleted file mode 100644
index cb93b3b55..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-flask==4.0.0
-# this is an ignored line
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/test-requirements.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/test-requirements.txt
deleted file mode 100644
index 6f32e8e00..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/requires/test-requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-python-dateutil==2.8.1
-python-swiftclient==3.8.1
-pytz==2019.3
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/setup/setup.py b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/setup/setup.py
deleted file mode 100644
index 6ebfd67fb..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/setup/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from setuptools import setup
-
-# TODO: if py gets upgrade to >=1.6,
-# remove _width_of_current_line in terminal.py
-INSTALL_REQUIRES = [
- "py>=1.5.0",
- "packaging",
- "attrs>=17.4.0", # should match oldattrs tox env.
- "more-itertools>=4.0.0",
- 'atomicwrites>=1.0;sys_platform=="win32"',
- 'pathlib2>=2.2.0;python_version<"3.6"',
- 'colorama;sys_platform=="win32"',
- "pluggy>=0.12,<1.0",
- 'importlib-metadata>=0.12;python_version<"3.8"',
- "wcwidth",
-]
-
-
-def main():
- setup(
- use_scm_version={"write_to": "src/_pytest/_version.py"},
- setup_requires=["setuptools-scm", "setuptools>=40.0"],
- package_dir={"": "src"},
- extras_require={
- "testing": [
- "argcomplete",
- "hypothesis>=3.56",
- "mock",
- "nose",
- "requests",
- "xmlschema",
- ],
- "checkqa-mypy": [
- "mypy==v0.770", # keep this in sync with .pre-commit-config.yaml.
- ],
- },
- install_requires=INSTALL_REQUIRES,
- )
-
-
-if __name__ == "__main__":
- main()
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/PKG-INFO b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/PKG-INFO
deleted file mode 100644
index 6d4758610..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/PKG-INFO
+++ /dev/null
@@ -1,8 +0,0 @@
-Metadata-Version: 2.1
-Name: someotherpkg
-Version: 3.19.0
-Summary: Python HTTP for Humans.
-Home-page: http://python-requests.org
-Author: Kenneth Reitz
-Author-email: me@kennethreitz.org
-License: Apache 2.0
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/top_level.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/top_level.txt
deleted file mode 100644
index 1e09fdb90..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/someotherpkg-3.19.0-py3.8.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-top-level-pkg
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/METADATA b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/METADATA
deleted file mode 100644
index ddc02219b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/METADATA
+++ /dev/null
@@ -1,26 +0,0 @@
-Metadata-Version: 2.1
-Name: somerequests
-Version: 3.22.0
-Summary: stuff
-Home-page: stuff
-Author: Georg Brandl
-Author-email: georg@python.org
-License: BSD License
-Platform: any
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: End Users/Desktop
-Classifier: Intended Audience :: System Administrators
-Classifier: Development Status :: 6 - Mature
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Operating System :: OS Independent
-Classifier: Topic :: Text Processing :: Filters
-Classifier: Topic :: Utilities
-Requires-Python: >=3.5
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/top_level.txt b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/top_level.txt
deleted file mode 100644
index 1e09fdb90..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/python/somerequests-3.22.0.dist-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-top-level-pkg
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/r/base/DESCRIPTION b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/r/base/DESCRIPTION
deleted file mode 100644
index f47edbdd0..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/r/base/DESCRIPTION
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: base
-Version: 4.3.0
-Priority: base
-Title: The R Base Package
-Author: R Core Team and contributors worldwide
-Maintainer: R Core Team
-Contact: R-help mailing list
-Description: Base R functions.
-License: Part of R 4.3.0
-Suggests: methods
-Built: R 4.3.0; ; 2023-04-21 11:33:09 UTC; unix
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rockspec/kong-3.7.0-0.rockspec b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rockspec/kong-3.7.0-0.rockspec
deleted file mode 100644
index cca7ee53d..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rockspec/kong-3.7.0-0.rockspec
+++ /dev/null
@@ -1,612 +0,0 @@
-package = "kong"
-version = "3.7.0-0"
-rockspec_format = "3.0"
-supported_platforms = {"linux", "macosx"}
-source = {
- url = "git+https://github.com/Kong/kong.git",
- tag = "3.7.0"
-}
-description = {
- summary = "Kong is a scalable and customizable API Management Layer built on top of Nginx.",
- homepage = "https://konghq.com",
- license = "Apache 2.0"
-}
-dependencies = {
- "inspect == 3.1.3",
- "luasec == 1.3.2",
- "luasocket == 3.0-rc1",
- "penlight == 1.13.1",
- "lua-resty-http == 0.17.1",
- "lua-resty-jit-uuid == 0.0.7",
- "lua-ffi-zlib == 0.6",
- "multipart == 0.5.9",
- "version == 1.0.1",
- "kong-lapis == 1.16.0.1",
- "kong-pgmoon == 1.16.2",
- "luatz == 0.4",
- "lua_system_constants == 0.1.4",
- "lyaml == 6.2.8",
- "luasyslog == 2.0.1",
- "lua_pack == 2.0.0",
- "binaryheap >= 0.4",
- "luaxxhash >= 1.0",
- "lua-protobuf == 0.5.0",
- "lua-resty-healthcheck == 3.0.1",
- "lua-messagepack == 0.5.4",
- "lua-resty-aws == 1.3.6",
- "lua-resty-openssl == 1.2.0",
- "lua-resty-counter == 0.2.1",
- "lua-resty-ipmatcher == 0.6.1",
- "lua-resty-acme == 0.12.0",
- "lua-resty-session == 4.0.5",
- "lua-resty-timer-ng == 0.2.6",
- "lpeg == 1.1.0",
- "lua-resty-ljsonschema == 1.1.6-2",
-}
-build = {
- type = "builtin",
- modules = {
- ["kong"] = "kong/init.lua",
- ["kong.meta"] = "kong/meta.lua",
- ["kong.cache"] = "kong/cache/init.lua",
- ["kong.cache.warmup"] = "kong/cache/warmup.lua",
- ["kong.global"] = "kong/global.lua",
- ["kong.reports"] = "kong/reports.lua",
- ["kong.constants"] = "kong/constants.lua",
- ["kong.concurrency"] = "kong/concurrency.lua",
- ["kong.deprecation"] = "kong/deprecation.lua",
- ["kong.globalpatches"] = "kong/globalpatches.lua",
- ["kong.error_handlers"] = "kong/error_handlers.lua",
- ["kong.hooks"] = "kong/hooks.lua",
-
- ["kong.router"] = "kong/router/init.lua",
- ["kong.router.traditional"] = "kong/router/traditional.lua",
- ["kong.router.compat"] = "kong/router/compat.lua",
- ["kong.router.expressions"] = "kong/router/expressions.lua",
- ["kong.router.atc"] = "kong/router/atc.lua",
- ["kong.router.fields"] = "kong/router/fields.lua",
- ["kong.router.utils"] = "kong/router/utils.lua",
-
- ["kong.conf_loader"] = "kong/conf_loader/init.lua",
- ["kong.conf_loader.constants"] = "kong/conf_loader/constants.lua",
- ["kong.conf_loader.parse"] = "kong/conf_loader/parse.lua",
- ["kong.conf_loader.listeners"] = "kong/conf_loader/listeners.lua",
-
- ["kong.clustering"] = "kong/clustering/init.lua",
- ["kong.clustering.data_plane"] = "kong/clustering/data_plane.lua",
- ["kong.clustering.control_plane"] = "kong/clustering/control_plane.lua",
- ["kong.clustering.utils"] = "kong/clustering/utils.lua",
- ["kong.clustering.events"] = "kong/clustering/events.lua",
- ["kong.clustering.compat"] = "kong/clustering/compat/init.lua",
- ["kong.clustering.compat.version"] = "kong/clustering/compat/version.lua",
- ["kong.clustering.compat.removed_fields"] = "kong/clustering/compat/removed_fields.lua",
- ["kong.clustering.compat.checkers"] = "kong/clustering/compat/checkers.lua",
- ["kong.clustering.config_helper"] = "kong/clustering/config_helper.lua",
- ["kong.clustering.tls"] = "kong/clustering/tls.lua",
-
- ["kong.cluster_events"] = "kong/cluster_events/init.lua",
- ["kong.cluster_events.strategies.postgres"] = "kong/cluster_events/strategies/postgres.lua",
- ["kong.cluster_events.strategies.off"] = "kong/cluster_events/strategies/off.lua",
-
- ["kong.templates.nginx"] = "kong/templates/nginx.lua",
- ["kong.templates.nginx_kong"] = "kong/templates/nginx_kong.lua",
- ["kong.templates.nginx_kong_gui_include"] = "kong/templates/nginx_kong_gui_include.lua",
- ["kong.templates.nginx_kong_stream"] = "kong/templates/nginx_kong_stream.lua",
- ["kong.templates.kong_defaults"] = "kong/templates/kong_defaults.lua",
- ["kong.templates.nginx_inject"] = "kong/templates/nginx_inject.lua",
- ["kong.templates.nginx_kong_inject"] = "kong/templates/nginx_kong_inject.lua",
- ["kong.templates.nginx_kong_stream_inject"] = "kong/templates/nginx_kong_stream_inject.lua",
- ["kong.templates.kong_yml"] = "kong/templates/kong_yml.lua",
-
- ["kong.resty.dns.client"] = "kong/resty/dns/client.lua",
- ["kong.resty.dns.utils"] = "kong/resty/dns/utils.lua",
- ["kong.resty.ctx"] = "kong/resty/ctx.lua",
-
- ["kong.resty.mlcache"] = "kong/resty/mlcache/init.lua",
- ["kong.resty.mlcache.ipc"] = "kong/resty/mlcache/ipc.lua",
-
- ["kong.cmd"] = "kong/cmd/init.lua",
- ["kong.cmd.roar"] = "kong/cmd/roar.lua",
- ["kong.cmd.stop"] = "kong/cmd/stop.lua",
- ["kong.cmd.quit"] = "kong/cmd/quit.lua",
- ["kong.cmd.start"] = "kong/cmd/start.lua",
- ["kong.cmd.check"] = "kong/cmd/check.lua",
- ["kong.cmd.config"] = "kong/cmd/config.lua",
- ["kong.cmd.reload"] = "kong/cmd/reload.lua",
- ["kong.cmd.restart"] = "kong/cmd/restart.lua",
- ["kong.cmd.prepare"] = "kong/cmd/prepare.lua",
- ["kong.cmd.migrations"] = "kong/cmd/migrations.lua",
- ["kong.cmd.health"] = "kong/cmd/health.lua",
- ["kong.cmd.vault"] = "kong/cmd/vault.lua",
- ["kong.cmd.version"] = "kong/cmd/version.lua",
- ["kong.cmd.hybrid"] = "kong/cmd/hybrid.lua",
- ["kong.cmd.utils.log"] = "kong/cmd/utils/log.lua",
- ["kong.cmd.utils.kill"] = "kong/cmd/utils/kill.lua",
- ["kong.cmd.utils.env"] = "kong/cmd/utils/env.lua",
- ["kong.cmd.utils.migrations"] = "kong/cmd/utils/migrations.lua",
- ["kong.cmd.utils.tty"] = "kong/cmd/utils/tty.lua",
- ["kong.cmd.utils.nginx_signals"] = "kong/cmd/utils/nginx_signals.lua",
- ["kong.cmd.utils.prefix_handler"] = "kong/cmd/utils/prefix_handler.lua",
- ["kong.cmd.utils.process_secrets"] = "kong/cmd/utils/process_secrets.lua",
- ["kong.cmd.utils.inject_confs"] = "kong/cmd/utils/inject_confs.lua",
-
- ["kong.api"] = "kong/api/init.lua",
- ["kong.api.api_helpers"] = "kong/api/api_helpers.lua",
- ["kong.api.arguments"] = "kong/api/arguments.lua",
- ["kong.api.endpoints"] = "kong/api/endpoints.lua",
- ["kong.api.routes.cache"] = "kong/api/routes/cache.lua",
- ["kong.api.routes.certificates"] = "kong/api/routes/certificates.lua",
- ["kong.api.routes.clustering"] = "kong/api/routes/clustering.lua",
- ["kong.api.routes.config"] = "kong/api/routes/config.lua",
- ["kong.api.routes.consumers"] = "kong/api/routes/consumers.lua",
- ["kong.api.routes.debug"] = "kong/api/routes/debug.lua",
- ["kong.api.routes.filter_chains"] = "kong/api/routes/filter_chains.lua",
- ["kong.api.routes.health"] = "kong/api/routes/health.lua",
- ["kong.api.routes.kong"] = "kong/api/routes/kong.lua",
- ["kong.api.routes.plugins"] = "kong/api/routes/plugins.lua",
- ["kong.api.routes.snis"] = "kong/api/routes/snis.lua",
- ["kong.api.routes.tags"] = "kong/api/routes/tags.lua",
- ["kong.api.routes.targets"] = "kong/api/routes/targets.lua",
- ["kong.api.routes.upstreams"] = "kong/api/routes/upstreams.lua",
-
- ["kong.admin_gui"] = "kong/admin_gui/init.lua",
- ["kong.admin_gui.utils"] = "kong/admin_gui/utils.lua",
-
- ["kong.status"] = "kong/status/init.lua",
- ["kong.status.ready"] = "kong/status/ready.lua",
-
- ["kong.tools.dns"] = "kong/tools/dns.lua",
- ["kong.tools.grpc"] = "kong/tools/grpc.lua",
- ["kong.tools.utils"] = "kong/tools/utils.lua",
- ["kong.tools.timestamp"] = "kong/tools/timestamp.lua",
- ["kong.tools.stream_api"] = "kong/tools/stream_api.lua",
- ["kong.tools.queue"] = "kong/tools/queue.lua",
- ["kong.tools.queue_schema"] = "kong/tools/queue_schema.lua",
- ["kong.tools.sandbox"] = "kong/tools/sandbox.lua",
- ["kong.tools.uri"] = "kong/tools/uri.lua",
- ["kong.tools.kong-lua-sandbox"] = "kong/tools/kong-lua-sandbox.lua",
- ["kong.tools.protobuf"] = "kong/tools/protobuf.lua",
- ["kong.tools.mime_type"] = "kong/tools/mime_type.lua",
- ["kong.tools.request_aware_table"] = "kong/tools/request_aware_table.lua",
- ["kong.tools.gzip"] = "kong/tools/gzip.lua",
- ["kong.tools.string"] = "kong/tools/string.lua",
- ["kong.tools.table"] = "kong/tools/table.lua",
- ["kong.tools.sha256"] = "kong/tools/sha256.lua",
- ["kong.tools.yield"] = "kong/tools/yield.lua",
- ["kong.tools.uuid"] = "kong/tools/uuid.lua",
- ["kong.tools.rand"] = "kong/tools/rand.lua",
- ["kong.tools.system"] = "kong/tools/system.lua",
- ["kong.tools.time"] = "kong/tools/time.lua",
- ["kong.tools.module"] = "kong/tools/module.lua",
- ["kong.tools.ip"] = "kong/tools/ip.lua",
- ["kong.tools.http"] = "kong/tools/http.lua",
- ["kong.tools.cjson"] = "kong/tools/cjson.lua",
- ["kong.tools.redis.schema"] = "kong/tools/redis/schema.lua",
-
- ["kong.runloop.handler"] = "kong/runloop/handler.lua",
- ["kong.runloop.events"] = "kong/runloop/events.lua",
- ["kong.runloop.log_level"] = "kong/runloop/log_level.lua",
- ["kong.runloop.certificate"] = "kong/runloop/certificate.lua",
- ["kong.runloop.plugins_iterator"] = "kong/runloop/plugins_iterator.lua",
- ["kong.runloop.upstream_ssl"] = "kong/runloop/upstream_ssl.lua",
- ["kong.runloop.balancer"] = "kong/runloop/balancer/init.lua",
- ["kong.runloop.balancer.balancers"] = "kong/runloop/balancer/balancers.lua",
- ["kong.runloop.balancer.consistent_hashing"] = "kong/runloop/balancer/consistent_hashing.lua",
- ["kong.runloop.balancer.healthcheckers"] = "kong/runloop/balancer/healthcheckers.lua",
- ["kong.runloop.balancer.least_connections"] = "kong/runloop/balancer/least_connections.lua",
- ["kong.runloop.balancer.latency"] = "kong/runloop/balancer/latency.lua",
- ["kong.runloop.balancer.round_robin"] = "kong/runloop/balancer/round_robin.lua",
- ["kong.runloop.balancer.targets"] = "kong/runloop/balancer/targets.lua",
- ["kong.runloop.balancer.upstreams"] = "kong/runloop/balancer/upstreams.lua",
- ["kong.runloop.plugin_servers"] = "kong/runloop/plugin_servers/init.lua",
- ["kong.runloop.plugin_servers.process"] = "kong/runloop/plugin_servers/process.lua",
- ["kong.runloop.plugin_servers.mp_rpc"] = "kong/runloop/plugin_servers/mp_rpc.lua",
- ["kong.runloop.plugin_servers.pb_rpc"] = "kong/runloop/plugin_servers/pb_rpc.lua",
- ["kong.runloop.wasm"] = "kong/runloop/wasm.lua",
- ["kong.runloop.wasm.properties"] = "kong/runloop/wasm/properties.lua",
-
- ["kong.workspaces"] = "kong/workspaces/init.lua",
-
- ["kong.db"] = "kong/db/init.lua",
- ["kong.db.utils"] = "kong/db/utils.lua",
- ["kong.db.errors"] = "kong/db/errors.lua",
- ["kong.db.iteration"] = "kong/db/iteration.lua",
- ["kong.db.dao"] = "kong/db/dao/init.lua",
- ["kong.db.dao.certificates"] = "kong/db/dao/certificates.lua",
- ["kong.db.dao.snis"] = "kong/db/dao/snis.lua",
- ["kong.db.dao.targets"] = "kong/db/dao/targets.lua",
- ["kong.db.dao.plugins"] = "kong/db/dao/plugins.lua",
- ["kong.db.dao.tags"] = "kong/db/dao/tags.lua",
- ["kong.db.dao.vaults"] = "kong/db/dao/vaults.lua",
- ["kong.db.dao.workspaces"] = "kong/db/dao/workspaces.lua",
- ["kong.db.dao.services"] = "kong/db/dao/services.lua",
- ["kong.db.dao.ca_certificates"] = "kong/db/dao/ca_certificates.lua",
- ["kong.db.declarative"] = "kong/db/declarative/init.lua",
- ["kong.db.declarative.marshaller"] = "kong/db/declarative/marshaller.lua",
- ["kong.db.declarative.export"] = "kong/db/declarative/export.lua",
- ["kong.db.declarative.import"] = "kong/db/declarative/import.lua",
- ["kong.db.schema"] = "kong/db/schema/init.lua",
- ["kong.db.dao.keys"] = "kong/db/dao/keys.lua",
- ["kong.db.dao.key_sets"] = "kong/db/dao/key_sets.lua",
- ["kong.db.schema.entities.keys"] = "kong/db/schema/entities/keys.lua",
- ["kong.db.schema.entities.key_sets"] = "kong/db/schema/entities/key_sets.lua",
- ["kong.db.schema.entities.consumers"] = "kong/db/schema/entities/consumers.lua",
- ["kong.db.schema.entities.routes"] = "kong/db/schema/entities/routes.lua",
- ["kong.db.schema.entities.routes_subschemas"] = "kong/db/schema/entities/routes_subschemas.lua",
- ["kong.db.schema.entities.services"] = "kong/db/schema/entities/services.lua",
- ["kong.db.schema.entities.certificates"] = "kong/db/schema/entities/certificates.lua",
- ["kong.db.schema.entities.snis"] = "kong/db/schema/entities/snis.lua",
- ["kong.db.schema.entities.upstreams"] = "kong/db/schema/entities/upstreams.lua",
- ["kong.db.schema.entities.targets"] = "kong/db/schema/entities/targets.lua",
- ["kong.db.schema.entities.plugins"] = "kong/db/schema/entities/plugins.lua",
- ["kong.db.schema.entities.tags"] = "kong/db/schema/entities/tags.lua",
- ["kong.db.schema.entities.ca_certificates"] = "kong/db/schema/entities/ca_certificates.lua",
- ["kong.db.schema.entities.vaults"] = "kong/db/schema/entities/vaults.lua",
- ["kong.db.schema.entities.workspaces"] = "kong/db/schema/entities/workspaces.lua",
- ["kong.db.schema.entities.clustering_data_planes"] = "kong/db/schema/entities/clustering_data_planes.lua",
- ["kong.db.schema.entities.parameters"] = "kong/db/schema/entities/parameters.lua",
- ["kong.db.schema.entities.filter_chains"] = "kong/db/schema/entities/filter_chains.lua",
- ["kong.db.schema.json"] = "kong/db/schema/json.lua",
- ["kong.db.schema.others.migrations"] = "kong/db/schema/others/migrations.lua",
- ["kong.db.schema.others.declarative_config"] = "kong/db/schema/others/declarative_config.lua",
- ["kong.db.schema.entity"] = "kong/db/schema/entity.lua",
- ["kong.db.schema.metaschema"] = "kong/db/schema/metaschema.lua",
- ["kong.db.schema.typedefs"] = "kong/db/schema/typedefs.lua",
- ["kong.db.schema.plugin_loader"] = "kong/db/schema/plugin_loader.lua",
- ["kong.db.schema.vault_loader"] = "kong/db/schema/vault_loader.lua",
- ["kong.db.schema.topological_sort"] = "kong/db/schema/topological_sort.lua",
- ["kong.db.strategies"] = "kong/db/strategies/init.lua",
- ["kong.db.strategies.connector"] = "kong/db/strategies/connector.lua",
- ["kong.db.strategies.postgres"] = "kong/db/strategies/postgres/init.lua",
- ["kong.db.strategies.postgres.connector"] = "kong/db/strategies/postgres/connector.lua",
- ["kong.db.strategies.postgres.tags"] = "kong/db/strategies/postgres/tags.lua",
- ["kong.db.strategies.postgres.services"] = "kong/db/strategies/postgres/services.lua",
- ["kong.db.strategies.postgres.plugins"] = "kong/db/strategies/postgres/plugins.lua",
- ["kong.db.strategies.off"] = "kong/db/strategies/off/init.lua",
- ["kong.db.strategies.off.connector"] = "kong/db/strategies/off/connector.lua",
- ["kong.db.strategies.off.tags"] = "kong/db/strategies/off/tags.lua",
-
- ["kong.db.migrations.state"] = "kong/db/migrations/state.lua",
- ["kong.db.migrations.subsystems"] = "kong/db/migrations/subsystems.lua",
- ["kong.db.migrations.core"] = "kong/db/migrations/core/init.lua",
- ["kong.db.migrations.core.000_base"] = "kong/db/migrations/core/000_base.lua",
- ["kong.db.migrations.core.003_100_to_110"] = "kong/db/migrations/core/003_100_to_110.lua",
- ["kong.db.migrations.core.004_110_to_120"] = "kong/db/migrations/core/004_110_to_120.lua",
- ["kong.db.migrations.core.005_120_to_130"] = "kong/db/migrations/core/005_120_to_130.lua",
- ["kong.db.migrations.core.006_130_to_140"] = "kong/db/migrations/core/006_130_to_140.lua",
- ["kong.db.migrations.core.007_140_to_150"] = "kong/db/migrations/core/007_140_to_150.lua",
- ["kong.db.migrations.core.008_150_to_200"] = "kong/db/migrations/core/008_150_to_200.lua",
- ["kong.db.migrations.core.009_200_to_210"] = "kong/db/migrations/core/009_200_to_210.lua",
- ["kong.db.migrations.core.010_210_to_211"] = "kong/db/migrations/core/010_210_to_211.lua",
- ["kong.db.migrations.core.011_212_to_213"] = "kong/db/migrations/core/011_212_to_213.lua",
- ["kong.db.migrations.core.012_213_to_220"] = "kong/db/migrations/core/012_213_to_220.lua",
- ["kong.db.migrations.core.013_220_to_230"] = "kong/db/migrations/core/013_220_to_230.lua",
- ["kong.db.migrations.core.014_230_to_270"] = "kong/db/migrations/core/014_230_to_270.lua",
- ["kong.db.migrations.core.015_270_to_280"] = "kong/db/migrations/core/015_270_to_280.lua",
- ["kong.db.migrations.core.016_280_to_300"] = "kong/db/migrations/core/016_280_to_300.lua",
- ["kong.db.migrations.core.017_300_to_310"] = "kong/db/migrations/core/017_300_to_310.lua",
- ["kong.db.migrations.core.018_310_to_320"] = "kong/db/migrations/core/018_310_to_320.lua",
- ["kong.db.migrations.core.019_320_to_330"] = "kong/db/migrations/core/019_320_to_330.lua",
- ["kong.db.migrations.core.020_330_to_340"] = "kong/db/migrations/core/020_330_to_340.lua",
- ["kong.db.migrations.core.021_340_to_350"] = "kong/db/migrations/core/021_340_to_350.lua",
- ["kong.db.migrations.core.022_350_to_360"] = "kong/db/migrations/core/022_350_to_360.lua",
- ["kong.db.migrations.operations.200_to_210"] = "kong/db/migrations/operations/200_to_210.lua",
- ["kong.db.migrations.operations.212_to_213"] = "kong/db/migrations/operations/212_to_213.lua",
- ["kong.db.migrations.operations.280_to_300"] = "kong/db/migrations/operations/280_to_300.lua",
- ["kong.db.migrations.migrate_path_280_300"] = "kong/db/migrations/migrate_path_280_300.lua",
- ["kong.db.declarative.migrations"] = "kong/db/declarative/migrations/init.lua",
- ["kong.db.declarative.migrations.route_path"] = "kong/db/declarative/migrations/route_path.lua",
-
- ["kong.pdk"] = "kong/pdk/init.lua",
- ["kong.pdk.private.checks"] = "kong/pdk/private/checks.lua",
- ["kong.pdk.private.phases"] = "kong/pdk/private/phases.lua",
- ["kong.pdk.private.node"] = "kong/pdk/private/node.lua",
- ["kong.pdk.client"] = "kong/pdk/client.lua",
- ["kong.pdk.client.tls"] = "kong/pdk/client/tls.lua",
- ["kong.pdk.ctx"] = "kong/pdk/ctx.lua",
- ["kong.pdk.ip"] = "kong/pdk/ip.lua",
- ["kong.pdk.log"] = "kong/pdk/log.lua",
- ["kong.pdk.service"] = "kong/pdk/service.lua",
- ["kong.pdk.service.request"] = "kong/pdk/service/request.lua",
- ["kong.pdk.service.response"] = "kong/pdk/service/response.lua",
- ["kong.pdk.router"] = "kong/pdk/router.lua",
- ["kong.pdk.request"] = "kong/pdk/request.lua",
- ["kong.pdk.response"] = "kong/pdk/response.lua",
- ["kong.pdk.table"] = "kong/pdk/table.lua",
- ["kong.pdk.node"] = "kong/pdk/node.lua",
- ["kong.pdk.nginx"] = "kong/pdk/nginx.lua",
- ["kong.pdk.cluster"] = "kong/pdk/cluster.lua",
- ["kong.pdk.vault"] = "kong/pdk/vault.lua",
- ["kong.pdk.tracing"] = "kong/pdk/tracing.lua",
- ["kong.pdk.plugin"] = "kong/pdk/plugin.lua",
-
- ["kong.plugins.basic-auth.migrations"] = "kong/plugins/basic-auth/migrations/init.lua",
- ["kong.plugins.basic-auth.migrations.000_base_basic_auth"] = "kong/plugins/basic-auth/migrations/000_base_basic_auth.lua",
- ["kong.plugins.basic-auth.migrations.002_130_to_140"] = "kong/plugins/basic-auth/migrations/002_130_to_140.lua",
- ["kong.plugins.basic-auth.migrations.003_200_to_210"] = "kong/plugins/basic-auth/migrations/003_200_to_210.lua",
- ["kong.plugins.basic-auth.crypto"] = "kong/plugins/basic-auth/crypto.lua",
- ["kong.plugins.basic-auth.handler"] = "kong/plugins/basic-auth/handler.lua",
- ["kong.plugins.basic-auth.access"] = "kong/plugins/basic-auth/access.lua",
- ["kong.plugins.basic-auth.schema"] = "kong/plugins/basic-auth/schema.lua",
- ["kong.plugins.basic-auth.daos"] = "kong/plugins/basic-auth/daos.lua",
-
- ["kong.plugins.key-auth.migrations"] = "kong/plugins/key-auth/migrations/init.lua",
- ["kong.plugins.key-auth.migrations.000_base_key_auth"] = "kong/plugins/key-auth/migrations/000_base_key_auth.lua",
- ["kong.plugins.key-auth.migrations.002_130_to_140"] = "kong/plugins/key-auth/migrations/002_130_to_140.lua",
- ["kong.plugins.key-auth.migrations.003_200_to_210"] = "kong/plugins/key-auth/migrations/003_200_to_210.lua",
- ["kong.plugins.key-auth.migrations.004_320_to_330"] = "kong/plugins/key-auth/migrations/004_320_to_330.lua",
- ["kong.plugins.key-auth.handler"] = "kong/plugins/key-auth/handler.lua",
- ["kong.plugins.key-auth.schema"] = "kong/plugins/key-auth/schema.lua",
- ["kong.plugins.key-auth.daos"] = "kong/plugins/key-auth/daos.lua",
-
- ["kong.plugins.oauth2.migrations"] = "kong/plugins/oauth2/migrations/init.lua",
- ["kong.plugins.oauth2.migrations.000_base_oauth2"] = "kong/plugins/oauth2/migrations/000_base_oauth2.lua",
- ["kong.plugins.oauth2.migrations.003_130_to_140"] = "kong/plugins/oauth2/migrations/003_130_to_140.lua",
- ["kong.plugins.oauth2.migrations.004_200_to_210"] = "kong/plugins/oauth2/migrations/004_200_to_210.lua",
- ["kong.plugins.oauth2.migrations.005_210_to_211"] = "kong/plugins/oauth2/migrations/005_210_to_211.lua",
- ["kong.plugins.oauth2.migrations.006_320_to_330"] = "kong/plugins/oauth2/migrations/006_320_to_330.lua",
- ["kong.plugins.oauth2.migrations.007_320_to_330"] = "kong/plugins/oauth2/migrations/007_320_to_330.lua",
- ["kong.plugins.oauth2.handler"] = "kong/plugins/oauth2/handler.lua",
- ["kong.plugins.oauth2.secret"] = "kong/plugins/oauth2/secret.lua",
- ["kong.plugins.oauth2.access"] = "kong/plugins/oauth2/access.lua",
- ["kong.plugins.oauth2.schema"] = "kong/plugins/oauth2/schema.lua",
- ["kong.plugins.oauth2.daos"] = "kong/plugins/oauth2/daos.lua",
- ["kong.plugins.oauth2.daos.oauth2_tokens"] = "kong/plugins/oauth2/daos/oauth2_tokens.lua",
-
- ["kong.plugins.tcp-log.handler"] = "kong/plugins/tcp-log/handler.lua",
- ["kong.plugins.tcp-log.schema"] = "kong/plugins/tcp-log/schema.lua",
-
- ["kong.plugins.udp-log.handler"] = "kong/plugins/udp-log/handler.lua",
- ["kong.plugins.udp-log.schema"] = "kong/plugins/udp-log/schema.lua",
-
- ["kong.plugins.http-log.handler"] = "kong/plugins/http-log/handler.lua",
- ["kong.plugins.http-log.schema"] = "kong/plugins/http-log/schema.lua",
- ["kong.plugins.http-log.migrations"] = "kong/plugins/http-log/migrations/init.lua",
- ["kong.plugins.http-log.migrations.001_280_to_300"] = "kong/plugins/http-log/migrations/001_280_to_300.lua",
-
- ["kong.plugins.file-log.handler"] = "kong/plugins/file-log/handler.lua",
- ["kong.plugins.file-log.schema"] = "kong/plugins/file-log/schema.lua",
-
- ["kong.plugins.rate-limiting.migrations"] = "kong/plugins/rate-limiting/migrations/init.lua",
- ["kong.plugins.rate-limiting.migrations.000_base_rate_limiting"] = "kong/plugins/rate-limiting/migrations/000_base_rate_limiting.lua",
- ["kong.plugins.rate-limiting.migrations.003_10_to_112"] = "kong/plugins/rate-limiting/migrations/003_10_to_112.lua",
- ["kong.plugins.rate-limiting.migrations.004_200_to_210"] = "kong/plugins/rate-limiting/migrations/004_200_to_210.lua",
- ["kong.plugins.rate-limiting.migrations.005_320_to_330"] = "kong/plugins/rate-limiting/migrations/005_320_to_330.lua",
- ["kong.plugins.rate-limiting.migrations.006_350_to_360"] = "kong/plugins/rate-limiting/migrations/006_350_to_360.lua",
- ["kong.plugins.rate-limiting.expiration"] = "kong/plugins/rate-limiting/expiration.lua",
- ["kong.plugins.rate-limiting.handler"] = "kong/plugins/rate-limiting/handler.lua",
- ["kong.plugins.rate-limiting.schema"] = "kong/plugins/rate-limiting/schema.lua",
- ["kong.plugins.rate-limiting.daos"] = "kong/plugins/rate-limiting/daos.lua",
- ["kong.plugins.rate-limiting.policies"] = "kong/plugins/rate-limiting/policies/init.lua",
- ["kong.plugins.rate-limiting.policies.cluster"] = "kong/plugins/rate-limiting/policies/cluster.lua",
- ["kong.plugins.rate-limiting.clustering.compat.redis_translation"] = "kong/plugins/rate-limiting/clustering/compat/redis_translation.lua",
-
- ["kong.plugins.response-ratelimiting.migrations"] = "kong/plugins/response-ratelimiting/migrations/init.lua",
- ["kong.plugins.response-ratelimiting.migrations.000_base_response_rate_limiting"] = "kong/plugins/response-ratelimiting/migrations/000_base_response_rate_limiting.lua",
- ["kong.plugins.response-ratelimiting.migrations.001_350_to_360"] = "kong/plugins/response-ratelimiting/migrations/001_350_to_360.lua",
- ["kong.plugins.response-ratelimiting.handler"] = "kong/plugins/response-ratelimiting/handler.lua",
- ["kong.plugins.response-ratelimiting.access"] = "kong/plugins/response-ratelimiting/access.lua",
- ["kong.plugins.response-ratelimiting.header_filter"] = "kong/plugins/response-ratelimiting/header_filter.lua",
- ["kong.plugins.response-ratelimiting.log"] = "kong/plugins/response-ratelimiting/log.lua",
- ["kong.plugins.response-ratelimiting.schema"] = "kong/plugins/response-ratelimiting/schema.lua",
- ["kong.plugins.response-ratelimiting.policies"] = "kong/plugins/response-ratelimiting/policies/init.lua",
- ["kong.plugins.response-ratelimiting.policies.cluster"] = "kong/plugins/response-ratelimiting/policies/cluster.lua",
- ["kong.plugins.response-ratelimiting.clustering.compat.redis_translation"] = "kong/plugins/response-ratelimiting/clustering/compat/redis_translation.lua",
-
- ["kong.plugins.request-size-limiting.handler"] = "kong/plugins/request-size-limiting/handler.lua",
- ["kong.plugins.request-size-limiting.schema"] = "kong/plugins/request-size-limiting/schema.lua",
-
- ["kong.plugins.response-transformer.handler"] = "kong/plugins/response-transformer/handler.lua",
- ["kong.plugins.response-transformer.body_transformer"] = "kong/plugins/response-transformer/body_transformer.lua",
- ["kong.plugins.response-transformer.header_transformer"] = "kong/plugins/response-transformer/header_transformer.lua",
- ["kong.plugins.response-transformer.schema"] = "kong/plugins/response-transformer/schema.lua",
-
- ["kong.plugins.cors.handler"] = "kong/plugins/cors/handler.lua",
- ["kong.plugins.cors.schema"] = "kong/plugins/cors/schema.lua",
-
- ["kong.plugins.ip-restriction.handler"] = "kong/plugins/ip-restriction/handler.lua",
- ["kong.plugins.ip-restriction.schema"] = "kong/plugins/ip-restriction/schema.lua",
- ["kong.plugins.ip-restriction.migrations"] = "kong/plugins/ip-restriction/migrations/init.lua",
- ["kong.plugins.ip-restriction.migrations.001_200_to_210"] = "kong/plugins/ip-restriction/migrations/001_200_to_210.lua",
-
- ["kong.plugins.acl.migrations"] = "kong/plugins/acl/migrations/init.lua",
- ["kong.plugins.acl.migrations.000_base_acl"] = "kong/plugins/acl/migrations/000_base_acl.lua",
- ["kong.plugins.acl.migrations.002_130_to_140"] = "kong/plugins/acl/migrations/002_130_to_140.lua",
- ["kong.plugins.acl.migrations.003_200_to_210"] = "kong/plugins/acl/migrations/003_200_to_210.lua",
- ["kong.plugins.acl.migrations.004_212_to_213"] = "kong/plugins/acl/migrations/004_212_to_213.lua",
- ["kong.plugins.acl.handler"] = "kong/plugins/acl/handler.lua",
- ["kong.plugins.acl.schema"] = "kong/plugins/acl/schema.lua",
- ["kong.plugins.acl.daos"] = "kong/plugins/acl/daos.lua",
- ["kong.plugins.acl.groups"] = "kong/plugins/acl/groups.lua",
- ["kong.plugins.acl.acls"] = "kong/plugins/acl/acls.lua",
- ["kong.plugins.acl.api"] = "kong/plugins/acl/api.lua",
-
- ["kong.plugins.correlation-id.handler"] = "kong/plugins/correlation-id/handler.lua",
- ["kong.plugins.correlation-id.schema"] = "kong/plugins/correlation-id/schema.lua",
-
- ["kong.plugins.jwt.migrations"] = "kong/plugins/jwt/migrations/init.lua",
- ["kong.plugins.jwt.migrations.000_base_jwt"] = "kong/plugins/jwt/migrations/000_base_jwt.lua",
- ["kong.plugins.jwt.migrations.002_130_to_140"] = "kong/plugins/jwt/migrations/002_130_to_140.lua",
- ["kong.plugins.jwt.migrations.003_200_to_210"] = "kong/plugins/jwt/migrations/003_200_to_210.lua",
- ["kong.plugins.jwt.handler"] = "kong/plugins/jwt/handler.lua",
- ["kong.plugins.jwt.schema"] = "kong/plugins/jwt/schema.lua",
- ["kong.plugins.jwt.daos"] = "kong/plugins/jwt/daos.lua",
- ["kong.plugins.jwt.jwt_parser"] = "kong/plugins/jwt/jwt_parser.lua",
-
- ["kong.plugins.hmac-auth.migrations"] = "kong/plugins/hmac-auth/migrations/init.lua",
- ["kong.plugins.hmac-auth.migrations.000_base_hmac_auth"] = "kong/plugins/hmac-auth/migrations/000_base_hmac_auth.lua",
- ["kong.plugins.hmac-auth.migrations.002_130_to_140"] = "kong/plugins/hmac-auth/migrations/002_130_to_140.lua",
- ["kong.plugins.hmac-auth.migrations.003_200_to_210"] = "kong/plugins/hmac-auth/migrations/003_200_to_210.lua",
- ["kong.plugins.hmac-auth.handler"] = "kong/plugins/hmac-auth/handler.lua",
- ["kong.plugins.hmac-auth.access"] = "kong/plugins/hmac-auth/access.lua",
- ["kong.plugins.hmac-auth.schema"] = "kong/plugins/hmac-auth/schema.lua",
- ["kong.plugins.hmac-auth.daos"] = "kong/plugins/hmac-auth/daos.lua",
-
- ["kong.plugins.ldap-auth.handler"] = "kong/plugins/ldap-auth/handler.lua",
- ["kong.plugins.ldap-auth.access"] = "kong/plugins/ldap-auth/access.lua",
- ["kong.plugins.ldap-auth.schema"] = "kong/plugins/ldap-auth/schema.lua",
- ["kong.plugins.ldap-auth.ldap"] = "kong/plugins/ldap-auth/ldap.lua",
- ["kong.plugins.ldap-auth.asn1"] = "kong/plugins/ldap-auth/asn1.lua",
-
- ["kong.plugins.syslog.handler"] = "kong/plugins/syslog/handler.lua",
- ["kong.plugins.syslog.schema"] = "kong/plugins/syslog/schema.lua",
-
- ["kong.plugins.loggly.handler"] = "kong/plugins/loggly/handler.lua",
- ["kong.plugins.loggly.schema"] = "kong/plugins/loggly/schema.lua",
-
- ["kong.plugins.datadog.handler"] = "kong/plugins/datadog/handler.lua",
- ["kong.plugins.datadog.schema"] = "kong/plugins/datadog/schema.lua",
- ["kong.plugins.datadog.statsd_logger"] = "kong/plugins/datadog/statsd_logger.lua",
-
- ["kong.plugins.statsd.constants"] = "kong/plugins/statsd/constants.lua",
- ["kong.plugins.statsd.handler"] = "kong/plugins/statsd/handler.lua",
- ["kong.plugins.statsd.log"] = "kong/plugins/statsd/log.lua",
- ["kong.plugins.statsd.schema"] = "kong/plugins/statsd/schema.lua",
- ["kong.plugins.statsd.statsd_logger"] = "kong/plugins/statsd/statsd_logger.lua",
-
- ["kong.plugins.bot-detection.handler"] = "kong/plugins/bot-detection/handler.lua",
- ["kong.plugins.bot-detection.schema"] = "kong/plugins/bot-detection/schema.lua",
- ["kong.plugins.bot-detection.rules"] = "kong/plugins/bot-detection/rules.lua",
- ["kong.plugins.bot-detection.migrations"] = "kong/plugins/bot-detection/migrations/init.lua",
- ["kong.plugins.bot-detection.migrations.001_200_to_210"] = "kong/plugins/bot-detection/migrations/001_200_to_210.lua",
-
- ["kong.plugins.request-termination.handler"] = "kong/plugins/request-termination/handler.lua",
- ["kong.plugins.request-termination.schema"] = "kong/plugins/request-termination/schema.lua",
-
- ["kong.plugins.aws-lambda.handler"] = "kong/plugins/aws-lambda/handler.lua",
- ["kong.plugins.aws-lambda.schema"] = "kong/plugins/aws-lambda/schema.lua",
- ["kong.plugins.aws-lambda.request-util"] = "kong/plugins/aws-lambda/request-util.lua",
-
- ["kong.plugins.grpc-gateway.deco"] = "kong/plugins/grpc-gateway/deco.lua",
- ["kong.plugins.grpc-gateway.handler"] = "kong/plugins/grpc-gateway/handler.lua",
- ["kong.plugins.grpc-gateway.schema"] = "kong/plugins/grpc-gateway/schema.lua",
-
- ["kong.plugins.acme.api"] = "kong/plugins/acme/api.lua",
- ["kong.plugins.acme.client"] = "kong/plugins/acme/client.lua",
- ["kong.plugins.acme.clustering.compat.redis_translation"] = "kong/plugins/acme/clustering/compat/redis_translation.lua",
- ["kong.plugins.acme.daos"] = "kong/plugins/acme/daos.lua",
- ["kong.plugins.acme.handler"] = "kong/plugins/acme/handler.lua",
- ["kong.plugins.acme.migrations.000_base_acme"] = "kong/plugins/acme/migrations/000_base_acme.lua",
- ["kong.plugins.acme.migrations.001_280_to_300"] = "kong/plugins/acme/migrations/001_280_to_300.lua",
- ["kong.plugins.acme.migrations.002_320_to_330"] = "kong/plugins/acme/migrations/002_320_to_330.lua",
- ["kong.plugins.acme.migrations.003_350_to_360"] = "kong/plugins/acme/migrations/003_350_to_360.lua",
- ["kong.plugins.acme.migrations"] = "kong/plugins/acme/migrations/init.lua",
- ["kong.plugins.acme.schema"] = "kong/plugins/acme/schema.lua",
- ["kong.plugins.acme.storage.kong"] = "kong/plugins/acme/storage/kong.lua",
- ["kong.plugins.acme.storage.config_adapters"] = "kong/plugins/acme/storage/config_adapters/init.lua",
- ["kong.plugins.acme.storage.config_adapters.redis"] = "kong/plugins/acme/storage/config_adapters/redis.lua",
- ["kong.plugins.acme.reserved_words"] = "kong/plugins/acme/reserved_words.lua",
-
- ["kong.plugins.prometheus.api"] = "kong/plugins/prometheus/api.lua",
- ["kong.plugins.prometheus.status_api"] = "kong/plugins/prometheus/status_api.lua",
- ["kong.plugins.prometheus.exporter"] = "kong/plugins/prometheus/exporter.lua",
- ["kong.plugins.prometheus.handler"] = "kong/plugins/prometheus/handler.lua",
- ["kong.plugins.prometheus.prometheus"] = "kong/plugins/prometheus/prometheus.lua",
- ["kong.plugins.prometheus.serve"] = "kong/plugins/prometheus/serve.lua",
- ["kong.plugins.prometheus.schema"] = "kong/plugins/prometheus/schema.lua",
-
- ["kong.plugins.session.handler"] = "kong/plugins/session/handler.lua",
- ["kong.plugins.session.schema"] = "kong/plugins/session/schema.lua",
- ["kong.plugins.session.access"] = "kong/plugins/session/access.lua",
- ["kong.plugins.session.header_filter"] = "kong/plugins/session/header_filter.lua",
- ["kong.plugins.session.session"] = "kong/plugins/session/session.lua",
- ["kong.plugins.session.daos"] = "kong/plugins/session/daos.lua",
- ["kong.plugins.session.storage.kong"] = "kong/plugins/session/storage/kong.lua",
- ["kong.plugins.session.migrations.000_base_session"] = "kong/plugins/session/migrations/000_base_session.lua",
- ["kong.plugins.session.migrations.001_add_ttl_index"] = "kong/plugins/session/migrations/001_add_ttl_index.lua",
- ["kong.plugins.session.migrations.002_320_to_330"] = "kong/plugins/session/migrations/002_320_to_330.lua",
- ["kong.plugins.session.migrations"] = "kong/plugins/session/migrations/init.lua",
-
- ["kong.plugins.proxy-cache.handler"] = "kong/plugins/proxy-cache/handler.lua",
- ["kong.plugins.proxy-cache.cache_key"] = "kong/plugins/proxy-cache/cache_key.lua",
- ["kong.plugins.proxy-cache.schema"] = "kong/plugins/proxy-cache/schema.lua",
- ["kong.plugins.proxy-cache.api"] = "kong/plugins/proxy-cache/api.lua",
- ["kong.plugins.proxy-cache.strategies"] = "kong/plugins/proxy-cache/strategies/init.lua",
- ["kong.plugins.proxy-cache.strategies.memory"] = "kong/plugins/proxy-cache/strategies/memory.lua",
-
- ["kong.plugins.grpc-web.deco"] = "kong/plugins/grpc-web/deco.lua",
- ["kong.plugins.grpc-web.handler"] = "kong/plugins/grpc-web/handler.lua",
- ["kong.plugins.grpc-web.schema"] = "kong/plugins/grpc-web/schema.lua",
-
- ["kong.plugins.pre-function._handler"] = "kong/plugins/pre-function/_handler.lua",
- ["kong.plugins.pre-function._schema"] = "kong/plugins/pre-function/_schema.lua",
- ["kong.plugins.pre-function.migrations._001_280_to_300"] = "kong/plugins/pre-function/migrations/_001_280_to_300.lua",
-
- ["kong.plugins.pre-function.handler"] = "kong/plugins/pre-function/handler.lua",
- ["kong.plugins.pre-function.schema"] = "kong/plugins/pre-function/schema.lua",
- ["kong.plugins.pre-function.migrations"] = "kong/plugins/pre-function/migrations/init.lua",
- ["kong.plugins.pre-function.migrations.001_280_to_300"] = "kong/plugins/pre-function/migrations/001_280_to_300.lua",
-
- ["kong.plugins.post-function.handler"] = "kong/plugins/post-function/handler.lua",
- ["kong.plugins.post-function.schema"] = "kong/plugins/post-function/schema.lua",
- ["kong.plugins.post-function.migrations"] = "kong/plugins/post-function/migrations/init.lua",
- ["kong.plugins.post-function.migrations.001_280_to_300"] = "kong/plugins/post-function/migrations/001_280_to_300.lua",
-
- ["kong.plugins.zipkin.handler"] = "kong/plugins/zipkin/handler.lua",
- ["kong.plugins.zipkin.reporter"] = "kong/plugins/zipkin/reporter.lua",
- ["kong.plugins.zipkin.span"] = "kong/plugins/zipkin/span.lua",
- ["kong.plugins.zipkin.schema"] = "kong/plugins/zipkin/schema.lua",
- ["kong.plugins.zipkin.request_tags"] = "kong/plugins/zipkin/request_tags.lua",
-
- ["kong.plugins.request-transformer.migrations.postgres"] = "kong/plugins/request-transformer/migrations/postgres.lua",
- ["kong.plugins.request-transformer.migrations.common"] = "kong/plugins/request-transformer/migrations/common.lua",
- ["kong.plugins.request-transformer.handler"] = "kong/plugins/request-transformer/handler.lua",
- ["kong.plugins.request-transformer.access"] = "kong/plugins/request-transformer/access.lua",
- ["kong.plugins.request-transformer.schema"] = "kong/plugins/request-transformer/schema.lua",
-
- ["kong.plugins.azure-functions.handler"] = "kong/plugins/azure-functions/handler.lua",
- ["kong.plugins.azure-functions.schema"] = "kong/plugins/azure-functions/schema.lua",
-
- ["kong.plugins.opentelemetry.handler"] = "kong/plugins/opentelemetry/handler.lua",
- ["kong.plugins.opentelemetry.schema"] = "kong/plugins/opentelemetry/schema.lua",
- ["kong.plugins.opentelemetry.proto"] = "kong/plugins/opentelemetry/proto.lua",
- ["kong.plugins.opentelemetry.otlp"] = "kong/plugins/opentelemetry/otlp.lua",
-
- ["kong.plugins.ai-proxy.handler"] = "kong/plugins/ai-proxy/handler.lua",
- ["kong.plugins.ai-proxy.schema"] = "kong/plugins/ai-proxy/schema.lua",
-
- ["kong.plugins.ai-request-transformer.handler"] = "kong/plugins/ai-request-transformer/handler.lua",
- ["kong.plugins.ai-request-transformer.schema"] = "kong/plugins/ai-request-transformer/schema.lua",
-
- ["kong.plugins.ai-response-transformer.handler"] = "kong/plugins/ai-response-transformer/handler.lua",
- ["kong.plugins.ai-response-transformer.schema"] = "kong/plugins/ai-response-transformer/schema.lua",
-
- ["kong.llm"] = "kong/llm/init.lua",
- ["kong.llm.drivers.shared"] = "kong/llm/drivers/shared.lua",
- ["kong.llm.drivers.openai"] = "kong/llm/drivers/openai.lua",
- ["kong.llm.drivers.azure"] = "kong/llm/drivers/azure.lua",
- ["kong.llm.drivers.cohere"] = "kong/llm/drivers/cohere.lua",
- ["kong.llm.drivers.anthropic"] = "kong/llm/drivers/anthropic.lua",
- ["kong.llm.drivers.mistral"] = "kong/llm/drivers/mistral.lua",
- ["kong.llm.drivers.llama2"] = "kong/llm/drivers/llama2.lua",
-
- ["kong.plugins.ai-prompt-decorator.handler"] = "kong/plugins/ai-prompt-decorator/handler.lua",
- ["kong.plugins.ai-prompt-decorator.schema"] = "kong/plugins/ai-prompt-decorator/schema.lua",
-
- ["kong.plugins.ai-prompt-template.handler"] = "kong/plugins/ai-prompt-template/handler.lua",
- ["kong.plugins.ai-prompt-template.schema"] = "kong/plugins/ai-prompt-template/schema.lua",
- ["kong.plugins.ai-prompt-template.templater"] = "kong/plugins/ai-prompt-template/templater.lua",
-
- ["kong.plugins.ai-prompt-guard.handler"] = "kong/plugins/ai-prompt-guard/handler.lua",
- ["kong.plugins.ai-prompt-guard.schema"] = "kong/plugins/ai-prompt-guard/schema.lua",
-
- ["kong.vaults.env"] = "kong/vaults/env/init.lua",
- ["kong.vaults.env.schema"] = "kong/vaults/env/schema.lua",
-
- ["kong.tracing.instrumentation"] = "kong/tracing/instrumentation.lua",
- ["kong.tracing.propagation"] = "kong/tracing/propagation.lua",
- ["kong.tracing.request_id"] = "kong/tracing/request_id.lua",
- ["kong.tracing.tracing_context"] = "kong/tracing/tracing_context.lua",
-
- ["kong.timing"] = "kong/timing/init.lua",
- ["kong.timing.context"] = "kong/timing/context.lua",
- ["kong.timing.hooks"] = "kong/timing/hooks/init.lua",
- ["kong.timing.hooks.dns"] = "kong/timing/hooks/dns.lua",
- ["kong.timing.hooks.http"] = "kong/timing/hooks/http.lua",
- ["kong.timing.hooks.redis"] = "kong/timing/hooks/redis.lua",
- ["kong.timing.hooks.socket"] = "kong/timing/hooks/socket.lua",
-
- ["kong.dynamic_hook"] = "kong/dynamic_hook/init.lua",
- ["kong.dynamic_hook.wrap_function_gen"] = "kong/dynamic_hook/wrap_function_gen.lua",
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/Gemfile.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/Gemfile.lock
deleted file mode 100644
index b7d23ad3c..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/Gemfile.lock
+++ /dev/null
@@ -1,160 +0,0 @@
-PATH
- remote: ../google-cloud-errors
- specs:
- google-cloud-errors (1.3.0)
-
-GIT
- remote: https://github.com/rails/turbolinks.git
- revision: 80216ce9d89920bf073709405e3fce6d0a3ccd9a
- specs:
- turbolinks (3.0.0)
- coffee-rails
-
-GEM
- remote: https://rubygems.org/
- specs:
- actionmailer (4.1.1)
- actionpack (= 4.1.1)
- actionview (= 4.1.1)
- mail (~> 2.5.4)
- actionpack (4.1.1)
- actionview (= 4.1.1)
- activesupport (= 4.1.1)
- rack (~> 1.5.2)
- rack-test (~> 0.6.2)
- actionview (4.1.1)
- activesupport (= 4.1.1)
- builder (~> 3.1)
- erubis (~> 2.7.0)
- activemodel (4.1.1)
- activesupport (= 4.1.1)
- builder (~> 3.1)
- activerecord (4.1.1)
- activemodel (= 4.1.1)
- activesupport (= 4.1.1)
- arel (~> 5.0.0)
- activesupport (4.1.1)
- i18n (~> 0.6, >= 0.6.9)
- json (~> 1.7, >= 1.7.7)
- minitest (~> 5.1)
- thread_safe (~> 0.1)
- tzinfo (~> 1.1)
- arel (5.0.1.20140414130214)
- bootstrap-sass (3.1.1.1)
- sass (~> 3.2)
- builder (3.2.2)
- coffee-rails (4.0.1)
- coffee-script (>= 2.2.0)
- railties (>= 4.0.0, < 5.0)
- coffee-script (2.2.0)
- coffee-script-source
- execjs
- coffee-script-source (1.7.0)
- erubis (2.7.0)
- execjs (2.0.2)
- hike (1.2.3)
- i18n (0.6.9)
- jbuilder (2.0.7)
- activesupport (>= 3.0.0, < 5)
- multi_json (~> 1.2)
- jquery-rails (3.1.0)
- railties (>= 3.0, < 5.0)
- thor (>= 0.14, < 2.0)
- json (1.8.1)
- kgio (2.9.2)
- libv8 (3.16.14.3)
- mail (2.5.4)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mime-types (1.25.1)
- minitest (5.3.4)
- multi_json (1.10.1)
- mysql2 (0.3.16)
- polyglot (0.3.4)
- rack (1.5.2)
- rack-test (0.6.2)
- rack (>= 1.0)
- rails (4.1.1)
- actionmailer (= 4.1.1)
- actionpack (= 4.1.1)
- actionview (= 4.1.1)
- activemodel (= 4.1.1)
- activerecord (= 4.1.1)
- activesupport (= 4.1.1)
- bundler (>= 1.3.0, < 2.0)
- railties (= 4.1.1)
- sprockets-rails (~> 2.0)
- railties (4.1.1)
- actionpack (= 4.1.1)
- activesupport (= 4.1.1)
- rake (>= 0.8.7)
- thor (>= 0.18.1, < 2.0)
- raindrops (0.13.0)
- rake (10.3.2)
- rdoc (4.1.1)
- json (~> 1.4)
- ref (1.0.5)
- sass (3.2.19)
- sass-rails (4.0.3)
- railties (>= 4.0.0, < 5.0)
- sass (~> 3.2.0)
- sprockets (~> 2.8, <= 2.11.0)
- sprockets-rails (~> 2.0)
- sdoc (0.4.0)
- json (~> 1.8)
- rdoc (~> 4.0, < 5.0)
- spring (1.1.3)
- sprockets (2.11.0)
- hike (~> 1.2)
- multi_json (~> 1.0)
- rack (~> 1.0)
- tilt (~> 1.1, != 1.3.0)
- sprockets-rails (2.1.3)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- sprockets (~> 2.8)
- sqlite3 (1.3.9)
- therubyracer (0.12.1)
- libv8 (~> 3.16.14.0)
- ref
- thor (0.19.1)
- thread_safe (0.3.3)
- tilt (1.4.1)
- treetop (1.4.15)
- polyglot
- polyglot (>= 0.3.1)
- tzinfo (1.2.0)
- thread_safe (~> 0.1)
- uglifier (2.5.0)
- execjs (>= 0.3.0)
- json (>= 1.8.0)
- unicorn (4.8.3)
- kgio (~> 2.6)
- rack
- raindrops (~> 0.7)
-
-BAD-SECTION
- bad-entry (5.5.5)
- bad-kgio (~> 2.6)
- bad-rack
- bad-raindrops (~> 0.7)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- bootstrap-sass
- coffee-rails (~> 4.0.0)
- google-cloud-errors!
- jbuilder (~> 2.0)
- jquery-rails
- mysql2 (~> 0.3.16)
- rails (= 4.1.1)
- sass-rails (~> 4.0.3)
- sdoc (~> 0.4.0)
- spring
- sqlite3
- therubyracer
- turbolinks!
- uglifier (>= 1.3.0)
- unicorn
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/bundler.gemspec b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/bundler.gemspec
deleted file mode 100644
index 450b81096..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/bundler.gemspec
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-# -*- encoding: utf-8 -*-
-# stub: bundler 2.1.4 ruby lib
-
-Gem::Specification.new do |s|
- s.name = "bundler".freeze
- s.version = "2.1.4"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 2.5.2".freeze) if s.respond_to? :required_rubygems_version=
- s.require_paths = ["lib".freeze]
- s.authors = ["Andr\u00E9 Arko".freeze, "Samuel Giddins".freeze, "Colby Swandale".freeze, "Hiroshi Shibata".freeze, "David Rodr\u00EDguez".freeze, "Grey Baker".f
- s.bindir = "exe".freeze
- s.date = "2020-01-05"
- s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably".freeze
- s.email = ["team@bundler.io".freeze]
- s.executables = ["bundle".freeze, "bundler".freeze]
- s.files = ["exe/bundle".freeze, "exe/bundler".freeze]
- s.homepage = "https://bundler.io".freeze
- s.licenses = ["MIT".freeze]
- s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze)
- s.rubygems_version = "3.1.2".freeze
- s.summary = "The best way to manage your application's dependencies".freeze
-
- s.installed_by_version = "3.1.2" if s.respond_to? :installed_by_version
- end
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/default/unbundler.gemspec b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/default/unbundler.gemspec
deleted file mode 100644
index f5f493c61..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/ruby/specifications/default/unbundler.gemspec
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-# -*- encoding: utf-8 -*-
-# stub: unbundler 2.1.4 ruby lib
-
-Gem::Specification.new do |s|
- s.name = "unbundler".freeze
- s.version = "3.1.4"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 2.5.2".freeze) if s.respond_to? :required_rubygems_version=
- s.require_paths = ["lib".freeze]
- s.authors = ["Andr\u00E9 Arko".freeze, "Samuel Giddins".freeze, "Colby Swandale".freeze, "Hiroshi Shibata".freeze, "David Rodr\u00EDguez".freeze, "Grey Baker".f
- s.bindir = "exe".freeze
- s.date = "2020-01-05"
- s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably".freeze
- s.email = ["team@unbundler.io".freeze]
- s.executables = ["unbundle".freeze, "unbundler".freeze]
- s.files = ["exe/unbundle".freeze, "exe/unbundler".freeze]
- s.homepage = "https://unbundler.io".freeze
- s.licenses = ["MIT".freeze]
- s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze)
- s.rubygems_version = "3.1.2".freeze
- s.summary = "The best way to manage your application's dependencies".freeze
-
- s.installed_by_version = "3.1.2" if s.respond_to? :installed_by_version
- end
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rust/Cargo.lock b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rust/Cargo.lock
deleted file mode 100644
index f2a838632..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/rust/Cargo.lock
+++ /dev/null
@@ -1,25 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-
-[[package]]
-name = "memchr"
-version = "2.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
-
-[[package]]
-name = "nom"
-version = "4.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
-dependencies = [
- "memchr",
- "version_check",
-]
-
-[[package]]
-name = "version_check"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS
deleted file mode 100644
index 26fdf9282..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/CONTENTS
+++ /dev/null
@@ -1,13 +0,0 @@
-dir /usr
-dir /usr/bin
-obj /usr/bin/skopeo 376c02bd3b22804df8fdfdc895e7dbfb 1649284374
-dir /etc
-dir /etc/containers
-obj /etc/containers/policy.json c01eb6950f03419e09d4fc88cb42ff6f 1649284375
-dir /etc/containers/registries.d
-obj /etc/containers/registries.d/default.yaml e6e66cd3c24623e0667f26542e0e08f6 1649284375
-dir /var
-dir /var/lib
-dir /var/lib/atomic
-dir /var/lib/atomic/sigstore
-obj /var/lib/atomic/sigstore/.keep_app-containers_skopeo-0 d41d8cd98f00b204e9800998ecf8427e 1649284375
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE
deleted file mode 100644
index 2591f6bf2..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-Apache-2.0 BSD BSD-2 CC-BY-SA-4.0 ISC MIT
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/SIZE b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/SIZE
deleted file mode 100644
index fd07ace22..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/db/pkg/app-containers/skopeo-1.5.1/SIZE
+++ /dev/null
@@ -1 +0,0 @@
-27937835
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status
deleted file mode 100644
index da9beca38..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status
+++ /dev/null
@@ -1,35 +0,0 @@
-Package: apt
-Status: install ok installed
-Priority: required
-Section: admin
-Installed-Size: 4064
-Maintainer: APT Development Team
-Architecture: amd64
-Version: 1.8.2
-Source: apt-dev
-Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)
-Provides: apt-transport-https (= 1.8.2)
-Depends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, libapt-pkg5.0 (>= 1.7.0~alpha3~), libc6 (>= 2.15), libgcc1 (>= 1:3.0), libgnutls30 (>= 3.6.6), libseccomp2 (>= 1.0.1), libstdc++6 (>= 5.2)
-Recommends: ca-certificates
-Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base
-Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)
-Conffiles:
- /etc/apt/apt.conf.d/01autoremove 76120d358bc9037bb6358e737b3050b5
- /etc/cron.daily/apt-compat 49e9b2cfa17849700d4db735d04244f3
- /etc/kernel/postinst.d/apt-auto-removal 4ad976a68f045517cf4696cec7b8aa3a
- /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3
-Description: commandline package manager
- This package provides commandline tools for searching and
- managing as well as querying information about packages
- as a low-level access to all features of the libapt-pkg library.
- .
- These include:
- * apt-get for retrieval of packages and information about them
- from authenticated sources and for installation, upgrade and
- removal of packages together with their dependencies
- * apt-cache for querying available information about installed
- as well as installable packages
- * apt-cdrom to use removable media as a source for packages
- * apt-config as an interface to the configuration settings
- * apt-key as an interface to manage authentication keys
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/dash b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/dash
deleted file mode 100644
index fadd180a1..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/dash
+++ /dev/null
@@ -1,18 +0,0 @@
-Package: dash
-Version: 0.5.8-2.4
-Architecture: amd64
-Essential: yes
-Maintainer: Gerrit Pape
-Installed-Size: 204
-Pre-Depends: libc6 (>= 2.14)
-Depends: debianutils (>= 2.15), dpkg (>= 1.15.0)
-Section: shells
-Priority: required
-Homepage: http://gondor.apana.org.au/~herbert/dash/
-Description: POSIX-compliant shell
- The Debian Almquist Shell (dash) is a POSIX-compliant shell derived
- from ash.
- .
- Since it executes scripts faster than bash, and has fewer library
- dependencies (making it more robust against software or hardware
- failures), it is used as the default system shell on Debian systems.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/netbase b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/netbase
deleted file mode 100644
index 4d0475aa6..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/dpkg/status.d/netbase
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: netbase
-Version: 5.4
-Architecture: all
-Maintainer: Marco d'Itri
-Installed-Size: 44
-Section: admin
-Priority: important
-Multi-Arch: foreign
-Description: Basic TCP/IP networking system
- This package provides the necessary infrastructure for basic TCP/IP based
- networking.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/ALPM_DB_VERSION b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/ALPM_DB_VERSION
deleted file mode 100644
index ec635144f..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/ALPM_DB_VERSION
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/desc b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/desc
deleted file mode 100644
index 1b49de1e5..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/desc
+++ /dev/null
@@ -1,57 +0,0 @@
-%NAME%
-pacman
-
-%VERSION%
-6.0.1-5
-
-%BASE%
-pacman
-
-%DESC%
-A library-based package manager with dependency support
-
-%URL%
-https://www.archlinux.org/pacman/
-
-%ARCH%
-x86_64
-
-%BUILDDATE%
-1652116331
-
-%INSTALLDATE%
-1654074247
-
-%PACKAGER%
-Morten Linderud
-
-%SIZE%
-4925474
-
-%REASON%
-1
-
-%GROUPS%
-base-devel
-
-%LICENSE%
-GPL
-
-%VALIDATION%
-pgp
-
-%DEPENDS%
-bash
-glibc
-libarchive
-curl
-gpgme
-pacman-mirrorlist
-archlinux-keyring
-
-%OPTDEPENDS%
-perl-locale-gettext: translation support in makepkg-template
-
-%PROVIDES%
-libalpm.so=13-64
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/files b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/files
deleted file mode 100644
index 9609ce3d7..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/files
+++ /dev/null
@@ -1,30 +0,0 @@
-%FILES%
-etc/
-etc/makepkg.conf
-etc/pacman.conf
-usr/
-usr/bin/
-usr/bin/makepkg
-usr/bin/makepkg-template
-usr/bin/pacman
-usr/bin/pacman-conf
-usr/bin/pacman-db-upgrade
-usr/bin/pacman-key
-usr/bin/repo-add
-usr/bin/repo-elephant
-usr/bin/repo-remove
-usr/bin/testpkg
-usr/bin/vercmp
-usr/include/
-usr/include/alpm.h
-usr/include/alpm_list.h
-usr/lib/
-usr/lib/libalpm.so
-usr/lib/libalpm.so.13
-usr/lib/libalpm.so.13.0.1
-usr/lib/pkgconfig/
-usr/lib/pkgconfig/libalpm.pc
-
-%BACKUP%
-etc/pacman.conf de541390e52468165b96511c4665bff4
-etc/makepkg.conf 79fce043df7dfc676ae5ecb903762d8b
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/mtree b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/mtree
deleted file mode 100644
index 005ad8ece..000000000
Binary files a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/pacman/local/pacman-6.0.1-5/mtree and /dev/null differ
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/Packages b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/Packages
deleted file mode 100644
index ef499f2f8..000000000
Binary files a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/Packages and /dev/null differ
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/generate-fixture.sh b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/generate-fixture.sh
deleted file mode 100755
index 80bf0996c..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/var/lib/rpm/generate-fixture.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-set -eux
-
-docker create --name generate-rpmdb-fixture centos:latest sh -c 'tail -f /dev/null'
-
-function cleanup {
- docker kill generate-rpmdb-fixture
- docker rm generate-rpmdb-fixture
-}
-trap cleanup EXIT
-
-docker start generate-rpmdb-fixture
-docker exec -i --tty=false generate-rpmdb-fixture bash <<-EOF
- mkdir -p /scratch
- cd /scratch
- rpm --initdb --dbpath /scratch
- curl -sSLO https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm
- rpm --dbpath /scratch -ivh dive_0.9.2_linux_amd64.rpm
- rm dive_0.9.2_linux_amd64.rpm
- rpm --dbpath /scratch -qa
-EOF
-
-docker cp generate-rpmdb-fixture:/scratch/Packages .
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/wordpress/wp-content/plugins/akismet/akismet.php b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/wordpress/wp-content/plugins/akismet/akismet.php
deleted file mode 100644
index f70330b46..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/pkgs/wordpress/wp-content/plugins/akismet/akismet.php
+++ /dev/null
@@ -1,17 +0,0 @@
-protect your blog from spam. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
-Version: 5.3
-Requires at least: 5.8
-Requires PHP: 5.6.20
-Author: Automattic - Anti-spam Team
-Author URI: https://automattic.com/wordpress-plugins/
-License: GPLv2 or later
-Text Domain: akismet
-*/
-// rest of plugin's code ...
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/swift/Package.resolved b/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/swift/Package.resolved
deleted file mode 100644
index d8e20bb8b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-pkg-coverage/swift/Package.resolved
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "pins" : [
- {
- "identity" : "swift-algorithms",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-algorithms.git",
- "state" : {
- "revision" : "b14b7f4c528c942f121c8b860b9410b2bf57825e",
- "version" : "1.0.0"
- }
- },
- {
- "identity" : "swift-async-algorithms",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-async-algorithms.git",
- "state" : {
- "revision" : "9cfed92b026c524674ed869a4ff2dcfdeedf8a2a",
- "version" : "0.1.0"
- }
- },
- {
- "identity" : "swift-atomics",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-atomics.git",
- "state" : {
- "revision" : "6c89474e62719ddcc1e9614989fff2f68208fe10",
- "version" : "1.1.0"
- }
- },
- {
- "identity" : "swift-collections",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-collections.git",
- "state" : {
- "revision" : "937e904258d22af6e447a0b72c0bc67583ef64a2",
- "version" : "1.0.4"
- }
- },
- {
- "identity" : "swift-numerics",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-numerics",
- "state" : {
- "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b",
- "version" : "1.0.2"
- }
- }
- ],
- "version" : 2
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-rust-auditable/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-rust-auditable/Dockerfile
deleted file mode 100644
index 64540e99f..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-rust-auditable/Dockerfile
+++ /dev/null
@@ -1,2 +0,0 @@
-# An image containing the example hello-auditable binary from https://github.com/Shnatsel/rust-audit/tree/master/hello-auditable
-FROM docker.io/tofay/hello-rust-auditable@sha256:1d35d1e007180b3f7500aae5e27560697909132ca9a6d480c4c825534c1c47a9
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/Dockerfile
deleted file mode 100644
index b32adc7f6..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM scratch
-COPY go.mod /
-COPY test.spdx.json /
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/go.mod b/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/go.mod
deleted file mode 100644
index 195dfd4ac..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/go.mod
+++ /dev/null
@@ -1,8 +0,0 @@
-module github.com/anchore/syft
-
-go 1.14
-
-require (
- github.com/anchore/packageurl-go v0.1.1-0.20220428202044-a072fa3cb6d7
- github.com/bmatcuk/doublestar v1.3.1
-)
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/test.spdx.json b/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/test.spdx.json
deleted file mode 100644
index e200cb524..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-sbom-cataloger/test.spdx.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "SPDXID": "SPDXRef-DOCUMENT",
- "name": "test/integration/test-fixtures/image-sbom-cataloger",
- "spdxVersion": "SPDX-2.2",
- "creationInfo": {
- "created": "2022-08-18T05:23:38.066146511Z",
- "creators": [
- "Organization: Anchore, Inc",
- "Tool: syft-0.53.0"
- ],
- "licenseListVersion": "3.17"
- },
- "dataLicense": "CC0-1.0",
- "documentNamespace": "https://anchore.com/syft/dir/test/integration/test-fixtures/image-sbom-cataloger-057e7aa2-332c-4b50-bbd1-a17dd62ddce4",
- "packages": [
- {
- "SPDXID": "SPDXRef-45209ca0cdcbafa",
- "name": "github.com/bmatcuk/doublestar",
- "licenseConcluded": "NONE",
- "downloadLocation": "NOASSERTION",
- "externalRefs": [
- {
- "referenceCategory": "SECURITY",
- "referenceLocator": "cpe:2.3:a:bmatcuk:doublestar:v1.3.1:*:*:*:*:*:*:*",
- "referenceType": "cpe23Type"
- },
- {
- "referenceCategory": "PACKAGE_MANAGER",
- "referenceLocator": "pkg:golang/github.com/bmatcuk/doublestar@v1.3.1",
- "referenceType": "purl"
- }
- ],
- "filesAnalyzed": false,
- "licenseDeclared": "NONE",
- "sourceInfo": "acquired package info from go module information: go.mod",
- "versionInfo": "v1.3.1"
- }
- ]
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-sqlite-rpmdb/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-sqlite-rpmdb/Dockerfile
deleted file mode 100644
index 938b431d5..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-sqlite-rpmdb/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM fedora:35@sha256:36af84ba69e21c9ef86a0424a090674c433b2b80c2462e57503886f1d823abe8
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-suse-all-layers/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-suse-all-layers/Dockerfile
deleted file mode 100644
index 339983d88..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-suse-all-layers/Dockerfile
+++ /dev/null
@@ -1,2 +0,0 @@
-FROM registry.suse.com/suse/sle15:15.3.17.20.20@sha256:fd657ecbab5ca564d6933e887f6ae8542a9398e6a4b399f352ce10c3a24afc64
-RUN zypper in -y wget
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-test-java-purls/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-test-java-purls/Dockerfile
deleted file mode 100644
index 9d9b93041..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-test-java-purls/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM anchore/test_images:java-1abc58f@sha256:3add9f90e9ed35739cc99b7830767e09eec921052e2412adf4491648c741f066
diff --git a/cmd/syft/internal/test/integration/test-fixtures/image-vertical-package-dups/Dockerfile b/cmd/syft/internal/test/integration/test-fixtures/image-vertical-package-dups/Dockerfile
deleted file mode 100644
index cd0e69b5d..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/image-vertical-package-dups/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM centos:7.9.2009@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
-# modifying the RPM DB multiple times will result in duplicate packages when using all-layers (if there was no de-dup logic)
-# curl is tricky, it already exists in the image and is being upgraded
-RUN yum install -y wget-1.14-18.el7_6.1 curl-7.29.0-59.el7_9.1
-RUN yum install -y vsftpd-3.0.2-29.el7_9
-RUN yum install -y httpd-2.4.6-97.el7.centos.5
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.d.ts b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.d.ts
deleted file mode 100644
index dc15b553f..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Collapse whitespace to a single space.
- *
- * @param {string} value
- * @returns {string}
- */
-export function collapseWhiteSpace(value: string): string;
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.js
deleted file mode 100644
index baa70d8b2..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Collapse whitespace to a single space.
- *
- * @param {string} value
- * @returns {string}
- */
-export function collapseWhiteSpace(value) {
- return String(value).replace(/\s+/g, ' ')
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/license b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/license
deleted file mode 100644
index 32e7a3d93..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/license
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2015 Titus Wormer
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package-lock.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package-lock.json
deleted file mode 100644
index b3c33eeb7..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package-lock.json
+++ /dev/null
@@ -1,8360 +0,0 @@
-{
- "name": "collapse-white-space",
- "version": "2.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.14.5"
- }
- },
- "@babel/compat-data": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
- "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz",
- "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.0",
- "@babel/helper-compilation-targets": "^7.15.0",
- "@babel/helper-module-transforms": "^7.15.0",
- "@babel/helpers": "^7.14.8",
- "@babel/parser": "^7.15.0",
- "@babel/template": "^7.14.5",
- "@babel/traverse": "^7.15.0",
- "@babel/types": "^7.15.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "@babel/eslint-parser": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.15.0.tgz",
- "integrity": "sha512-+gSPtjSBxOZz4Uh8Ggqu7HbfpB8cT1LwW0DnVVLZEJvzXauiD0Di3zszcBkRmfGGrLdYeHUwcflG7i3tr9kQlw==",
- "dev": true,
- "requires": {
- "eslint-scope": "^5.1.1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
- "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.15.0",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz",
- "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.15.0",
- "@babel/helper-validator-option": "^7.14.5",
- "browserslist": "^4.16.6",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz",
- "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.14.5",
- "@babel/template": "^7.14.5",
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz",
- "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz",
- "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz",
- "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.15.0"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz",
- "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz",
- "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.14.5",
- "@babel/helper-replace-supers": "^7.15.0",
- "@babel/helper-simple-access": "^7.14.8",
- "@babel/helper-split-export-declaration": "^7.14.5",
- "@babel/helper-validator-identifier": "^7.14.9",
- "@babel/template": "^7.14.5",
- "@babel/traverse": "^7.15.0",
- "@babel/types": "^7.15.0"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz",
- "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz",
- "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==",
- "dev": true,
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.15.0",
- "@babel/helper-optimise-call-expression": "^7.14.5",
- "@babel/traverse": "^7.15.0",
- "@babel/types": "^7.15.0"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.14.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
- "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.8"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz",
- "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.14.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
- "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
- "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.15.3",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz",
- "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.14.5",
- "@babel/traverse": "^7.15.0",
- "@babel/types": "^7.15.0"
- }
- },
- "@babel/highlight": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
- "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@babel/parser": {
- "version": "7.15.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
- "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz",
- "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/parser": "^7.14.5",
- "@babel/types": "^7.14.5"
- }
- },
- "@babel/traverse": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
- "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.0",
- "@babel/helper-function-name": "^7.14.5",
- "@babel/helper-hoist-variables": "^7.14.5",
- "@babel/helper-split-export-declaration": "^7.14.5",
- "@babel/parser": "^7.15.0",
- "@babel/types": "^7.15.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "dependencies": {
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- }
- }
- },
- "@babel/types": {
- "version": "7.15.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
- "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.9",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
- "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- }
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
- "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
- "dev": true
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "dev": true
- },
- "@mrmlnc/readdir-enhanced": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
- "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
- "dev": true,
- "requires": {
- "call-me-maybe": "^1.0.1",
- "glob-to-regexp": "^0.3.0"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
- "dev": true
- },
- "@szmarczak/http-timer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
- "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
- "dev": true,
- "requires": {
- "defer-to-connect": "^1.0.1"
- }
- },
- "@types/eslint": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",
- "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==",
- "dev": true,
- "requires": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "@types/estree": {
- "version": "0.0.50",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
- "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==",
- "dev": true
- },
- "@types/glob": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==",
- "dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
- "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==",
- "dev": true
- },
- "@types/json-schema": {
- "version": "7.0.9",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
- "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
- "dev": true
- },
- "@types/mdast": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.8.tgz",
- "integrity": "sha512-HdUXWDNtDenuVJFrV2xBCLEMiw1Vn7FMuJxqJC5oBvC2adA3pgtp6CPCIMQdz3pmWxGuJjT+hOp6FnOXy6dXoQ==",
- "dev": true,
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/minimatch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
- "dev": true
- },
- "@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "@types/node": {
- "version": "16.6.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.2.tgz",
- "integrity": "sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA==",
- "dev": true
- },
- "@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true
- },
- "@types/tape": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.2.tgz",
- "integrity": "sha512-V1ez/RtYRGN9cNYApw5xf27DpMkTB0033X6a2i3KUmKhSojBfbWN0i3EgZxboUG96WJLHLdOyZ01aiZwVW5aSA==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/unist": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
- "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.2.tgz",
- "integrity": "sha512-x4EMgn4BTfVd9+Z+r+6rmWxoAzBaapt4QFqE+d8L8sUtYZYLDTK6VG/y/SMMWA5t1/BVU5Kf+20rX4PtWzUYZg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "4.29.2",
- "@typescript-eslint/scope-manager": "4.29.2",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "@typescript-eslint/experimental-utils": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.2.tgz",
- "integrity": "sha512-P6mn4pqObhftBBPAv4GQtEK7Yos1fz/MlpT7+YjH9fTxZcALbiiPKuSIfYP/j13CeOjfq8/fr9Thr2glM9ub7A==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.29.2",
- "@typescript-eslint/types": "4.29.2",
- "@typescript-eslint/typescript-estree": "4.29.2",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.2.tgz",
- "integrity": "sha512-WQ6BPf+lNuwteUuyk1jD/aHKqMQ9jrdCn7Gxt9vvBnzbpj7aWEf+aZsJ1zvTjx5zFxGCt000lsbD9tQPEL8u6g==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "4.29.2",
- "@typescript-eslint/types": "4.29.2",
- "@typescript-eslint/typescript-estree": "4.29.2",
- "debug": "^4.3.1"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.2.tgz",
- "integrity": "sha512-mfHmvlQxmfkU8D55CkZO2sQOueTxLqGvzV+mG6S/6fIunDiD2ouwsAoiYCZYDDK73QCibYjIZmGhpvKwAB5BOA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.29.2",
- "@typescript-eslint/visitor-keys": "4.29.2"
- }
- },
- "@typescript-eslint/types": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.2.tgz",
- "integrity": "sha512-K6ApnEXId+WTGxqnda8z4LhNMa/pZmbTFkDxEBLQAbhLZL50DjeY0VIDCml/0Y3FlcbqXZrABqrcKxq+n0LwzQ==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.2.tgz",
- "integrity": "sha512-TJ0/hEnYxapYn9SGn3dCnETO0r+MjaxtlWZ2xU+EvytF0g4CqTpZL48SqSNn2hXsPolnewF30pdzR9a5Lj3DNg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.29.2",
- "@typescript-eslint/visitor-keys": "4.29.2",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "globby": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
- "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "4.29.2",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.2.tgz",
- "integrity": "sha512-bDgJLQ86oWHJoZ1ai4TZdgXzJxsea3Ee9u9wsTAvjChdj2WLcVsgWYAPeY7RQMn16tKrlQaBnpKv7KBfs4EQag==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.29.2",
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-align": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
- "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
- "dev": true,
- "requires": {
- "string-width": "^3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-find": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz",
- "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=",
- "dev": true
- },
- "array-includes": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
- "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "get-intrinsic": "^1.1.1",
- "is-string": "^1.0.5"
- }
- },
- "array-iterate": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz",
- "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==",
- "dev": true
- },
- "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
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "array.prototype.flat": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
- "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1"
- }
- },
- "arrify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
- "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "available-typed-arrays": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz",
- "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==",
- "dev": true
- },
- "bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
- "dev": true
- },
- "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
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "boxen": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz",
- "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==",
- "dev": true,
- "requires": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.0",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.16.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz",
- "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001251",
- "colorette": "^1.3.0",
- "electron-to-chromium": "^1.3.811",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.75"
- }
- },
- "buf-compare": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz",
- "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "c8": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/c8/-/c8-7.8.0.tgz",
- "integrity": "sha512-x2Bx+IIEd608B1LmjiNQ/kizRPkCWo5XzuV57J9afPjAHSnYXALwbCSOkQ7cSaNXBNblfqcvdycj+klmL+j6yA==",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@istanbuljs/schema": "^0.1.2",
- "find-up": "^5.0.0",
- "foreground-child": "^2.0.0",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-reports": "^3.0.2",
- "rimraf": "^3.0.0",
- "test-exclude": "^6.0.0",
- "v8-to-istanbul": "^8.0.0",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.7"
- }
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "cacheable-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
- "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
- "dev": true,
- "requires": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "dependencies": {
- "get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true
- }
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "call-me-maybe": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
- "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30001251",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz",
- "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==",
- "dev": true
- },
- "ccount": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz",
- "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==",
- "dev": true
- },
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
- "dev": true
- },
- "character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
- "dev": true
- },
- "character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
- "dev": true
- },
- "chokidar": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
- "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "clean-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
- "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "cli-boxes": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
- "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
- "dev": true
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
- "dev": true,
- "requires": {
- "mimic-response": "^1.0.0"
- }
- },
- "co": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
- "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
- "dev": true
- },
- "collapse-white-space": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
- "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "colorette": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz",
- "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
- "dev": true,
- "requires": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- }
- },
- "confusing-browser-globals": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz",
- "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "core-assert": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz",
- "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=",
- "dev": true,
- "requires": {
- "buf-compare": "^1.0.0",
- "is-error": "^2.2.0"
- }
- },
- "cosmiconfig": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
- "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
- "dev": true,
- "requires": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "dev": true
- },
- "debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decamelize-keys": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
- "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
- "dev": true,
- "requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- }
- }
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
- "dev": true,
- "requires": {
- "mimic-response": "^1.0.0"
- }
- },
- "deep-equal": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
- "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "es-get-iterator": "^1.1.1",
- "get-intrinsic": "^1.0.1",
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.2",
- "is-regex": "^1.1.1",
- "isarray": "^2.0.5",
- "object-is": "^1.1.4",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "regexp.prototype.flags": "^1.3.0",
- "side-channel": "^1.0.3",
- "which-boxed-primitive": "^1.0.1",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.2"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "deep-strict-equal": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz",
- "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=",
- "dev": true,
- "requires": {
- "core-assert": "^0.2.0"
- }
- },
- "defer-to-connect": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
- "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "defined": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
- "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
- "requires": {
- "is-obj": "^2.0.0"
- }
- },
- "dotignore": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
- "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
- "dev": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.3.813",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.813.tgz",
- "integrity": "sha512-YcSRImHt6JZZ2sSuQ4Bzajtk98igQ0iKkksqlzZLzbh4p0OIyJRSvUbsgqfcR8txdfsoYCc4ym306t4p2kP/aw==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "enhance-visitors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz",
- "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=",
- "dev": true,
- "requires": {
- "lodash": "^4.13.1"
- }
- },
- "enhanced-resolve": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
- "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.2.0",
- "tapable": "^0.1.8"
- }
- },
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "env-editor": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz",
- "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.18.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
- "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.3",
- "is-string": "^1.0.6",
- "object-inspect": "^1.11.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
- }
- },
- "es-get-iterator": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
- "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.0",
- "has-symbols": "^1.0.1",
- "is-arguments": "^1.1.0",
- "is-map": "^2.0.2",
- "is-set": "^2.0.2",
- "is-string": "^1.0.5",
- "isarray": "^2.0.5"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-goat": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
- "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "eslint": {
- "version": "7.32.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
- "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "eslint-config-prettier": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz",
- "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==",
- "dev": true
- },
- "eslint-config-xo": {
- "version": "0.35.0",
- "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.35.0.tgz",
- "integrity": "sha512-+WyZTLWUJlvExFrBU/Ldw8AB/S0d3x+26JQdBWbcqig2ZaWh0zinYcHok+ET4IoPaEcRRf3FE9kjItNVjBwnAg==",
- "dev": true,
- "requires": {
- "confusing-browser-globals": "1.0.10"
- }
- },
- "eslint-config-xo-typescript": {
- "version": "0.38.0",
- "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.38.0.tgz",
- "integrity": "sha512-f5z0gN1r9X84PK1qav6T6YT1zW6KcAqtsMPtmqoKBLt4ACRr6tbAddtFwqkluAEH9JvHjWxuB8vu4KJFcjuzdQ==",
- "dev": true
- },
- "eslint-formatter-pretty": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz",
- "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==",
- "dev": true,
- "requires": {
- "@types/eslint": "^7.2.13",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "eslint-rule-docs": "^1.1.5",
- "log-symbols": "^4.0.0",
- "plur": "^4.0.0",
- "string-width": "^4.2.0",
- "supports-hyperlinks": "^2.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "eslint-import-resolver-node": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
- "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
- "dev": true,
- "requires": {
- "debug": "^3.2.7",
- "resolve": "^1.20.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- }
- }
- },
- "eslint-import-resolver-webpack": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.1.tgz",
- "integrity": "sha512-O/8mG6AHmaKYSMb4lWxiXPpaARxOJ4rMQEHJ8vTgjS1MXooJA3KPgBPPAdOPoV17v5ML5120qod5FBLM+DtgEw==",
- "dev": true,
- "requires": {
- "array-find": "^1.0.0",
- "debug": "^3.2.7",
- "enhanced-resolve": "^0.9.1",
- "find-root": "^1.1.0",
- "has": "^1.0.3",
- "interpret": "^1.4.0",
- "is-core-module": "^2.4.0",
- "is-regex": "^1.1.3",
- "lodash": "^4.17.21",
- "resolve": "^1.20.0",
- "semver": "^5.7.1"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz",
- "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==",
- "dev": true,
- "requires": {
- "debug": "^3.2.7",
- "pkg-dir": "^2.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "pkg-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "dev": true,
- "requires": {
- "find-up": "^2.1.0"
- }
- }
- }
- },
- "eslint-plugin-ava": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-11.0.0.tgz",
- "integrity": "sha512-UMGedfl/gIKx1tzjGtAsTSJgowyAEZU2VWmpoWXYcuuV4B2H4Cu90yuMgMPEVt1mQlIZ21L7YM2CSpHUFJo/LQ==",
- "dev": true,
- "requires": {
- "deep-strict-equal": "^0.2.0",
- "enhance-visitors": "^1.0.0",
- "eslint-utils": "^2.1.0",
- "espree": "^7.2.0",
- "espurify": "^2.0.1",
- "import-modules": "^2.0.0",
- "micro-spelling-correcter": "^1.1.1",
- "pkg-dir": "^4.2.0",
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "eslint-plugin-es": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
- "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
- "dev": true,
- "requires": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "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,
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
- }
- },
- "eslint-plugin-import": {
- "version": "2.24.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.1.tgz",
- "integrity": "sha512-KSFWhNxPH8OGJwpRJJs+Z7I0a13E2iFQZJIvSnCu6KUs4qmgAm3xN9GYBCSoiGWmwA7gERZPXqYQjcoCROnYhQ==",
- "dev": true,
- "requires": {
- "array-includes": "^3.1.3",
- "array.prototype.flat": "^1.2.4",
- "debug": "^2.6.9",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.6.2",
- "find-up": "^2.0.0",
- "has": "^1.0.3",
- "is-core-module": "^2.6.0",
- "minimatch": "^3.0.4",
- "object.values": "^1.1.4",
- "pkg-up": "^2.0.0",
- "read-pkg-up": "^3.0.0",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.10.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- }
- }
- },
- "eslint-plugin-no-use-extend-native": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz",
- "integrity": "sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==",
- "dev": true,
- "requires": {
- "is-get-set-prop": "^1.0.0",
- "is-js-type": "^2.0.0",
- "is-obj-prop": "^1.0.0",
- "is-proto-prop": "^2.0.0"
- }
- },
- "eslint-plugin-node": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
- "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
- "dev": true,
- "requires": {
- "eslint-plugin-es": "^3.0.0",
- "eslint-utils": "^2.0.0",
- "ignore": "^5.1.1",
- "minimatch": "^3.0.4",
- "resolve": "^1.10.1",
- "semver": "^6.1.0"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- }
- }
- },
- "eslint-plugin-prettier": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
- "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-plugin-promise": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz",
- "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==",
- "dev": true
- },
- "eslint-plugin-unicorn": {
- "version": "28.0.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-28.0.2.tgz",
- "integrity": "sha512-k4AoFP7n8/oq6lBXkdc9Flid6vw2B8j7aXFCxgzJCyKvmaKrCUFb1TFPhG9eSJQFZowqmymMPRtl8oo9NKLUbw==",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0",
- "clean-regexp": "^1.0.0",
- "eslint-template-visitor": "^2.2.2",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "import-modules": "^2.1.0",
- "lodash": "^4.17.20",
- "pluralize": "^8.0.0",
- "read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.22",
- "reserved-words": "^0.1.2",
- "safe-regex": "^2.1.1",
- "semver": "^7.3.4"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "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,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "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,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "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,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "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,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "eslint-rule-docs": {
- "version": "1.1.231",
- "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz",
- "integrity": "sha512-egHz9A1WG7b8CS0x1P6P/Rj5FqZOjray/VjpJa14tMZalfRKvpE2ONJ3plCM7+PcinmU4tcmbPLv0VtwzSdLVA==",
- "dev": true
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-template-visitor": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz",
- "integrity": "sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.16",
- "@babel/eslint-parser": "^7.12.16",
- "eslint-visitor-keys": "^2.0.0",
- "esquery": "^1.3.1",
- "multimap": "^1.1.0"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- },
- "espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "requires": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "espurify": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.1.1.tgz",
- "integrity": "sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==",
- "dev": true
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
- "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
- "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fastq": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz",
- "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fault": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
- "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
- "dev": true,
- "requires": {
- "format": "^0.2.0"
- }
- },
- "figgy-pudding": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
- "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
- "dev": true
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-cache-dir": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-root": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
- "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
- "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
- "dev": true
- },
- "for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.3"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
- "dev": true
- },
- "foreground-child": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
- "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^3.0.2"
- }
- },
- "format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=",
- "dev": true
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
- "get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
- },
- "get-set-props": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz",
- "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=",
- "dev": true
- },
- "get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "github-slugger": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz",
- "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==",
- "dev": true,
- "requires": {
- "emoji-regex": ">=6.0.0 <=6.1.1"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
- "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=",
- "dev": true
- }
- }
- },
- "glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-to-regexp": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
- "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
- "dev": true
- },
- "global-dirs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
- "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
- "dev": true,
- "requires": {
- "ini": "2.0.0"
- },
- "dependencies": {
- "ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "dev": true
- }
- }
- },
- "globals": {
- "version": "13.11.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
- "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
- "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- },
- "dependencies": {
- "@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
- "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
- "dev": true,
- "requires": {
- "path-type": "^3.0.0"
- }
- },
- "fast-glob": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
- "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
- "dev": true,
- "requires": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "got": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
- "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
- "dev": true,
- "requires": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
- },
- "dependencies": {
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- }
- }
- },
- "graceful-fs": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
- "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
- "dev": true
- },
- "hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
- "dev": true
- },
- "has-dynamic-import": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.0.tgz",
- "integrity": "sha512-GYPi/aZmACJVrVfEhP1rNUFmtCuK+SQ96mn8Bs7mXiGZRAJiI4VjaMmjj4uuvW8qaF085uWJvyJk9UNYUIYn0A==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "dev": true
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "has-yarn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
- "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
- "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
- },
- "http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
- "dev": true
- },
- "human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true
- },
- "ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "dependencies": {
- "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
- }
- }
- },
- "import-lazy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
- "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
- "dev": true
- },
- "import-modules": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz",
- "integrity": "sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==",
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "internal-slot": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "irregular-plurals": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz",
- "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==",
- "dev": true
- },
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "dev": true
- },
- "is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dev": true,
- "requires": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- }
- },
- "is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true
- },
- "is-callable": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
- "dev": true
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
- "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true
- },
- "is-empty": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
- "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=",
- "dev": true
- },
- "is-error": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz",
- "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==",
- "dev": true
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-get-set-prop": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz",
- "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=",
- "dev": true,
- "requires": {
- "get-set-props": "^0.1.0",
- "lowercase-keys": "^1.0.0"
- }
- },
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "dev": true
- },
- "is-installed-globally": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
- "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
- "dev": true,
- "requires": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
- }
- },
- "is-js-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz",
- "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=",
- "dev": true,
- "requires": {
- "js-types": "^1.0.0"
- }
- },
- "is-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
- "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
- "dev": true
- },
- "is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
- "dev": true
- },
- "is-negative-zero": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
- "dev": true
- },
- "is-npm": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
- "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-number-object": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true
- },
- "is-obj-prop": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz",
- "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=",
- "dev": true,
- "requires": {
- "lowercase-keys": "^1.0.0",
- "obj-props": "^1.0.0"
- }
- },
- "is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-proto-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-2.0.0.tgz",
- "integrity": "sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==",
- "dev": true,
- "requires": {
- "lowercase-keys": "^1.0.0",
- "proto-props": "^2.0.0"
- }
- },
- "is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "requires": {
- "is-unc-path": "^1.0.0"
- }
- },
- "is-set": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
- "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
- "dev": true
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
- },
- "is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typed-array": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.7.tgz",
- "integrity": "sha512-VxlpTBGknhQ3o7YiVjIhdLU6+oD8dPz/79vvvH4F+S/c8608UCVa9fgDpa1kZgFoUST2DCgacc70UszKgzKuvA==",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.4",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "requires": {
- "unc-path-regex": "^0.1.2"
- }
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-weakmap": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
- "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
- "dev": true
- },
- "is-weakset": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz",
- "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "is-yarn-global": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
- "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
- "dev": true
- },
- "isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "istanbul-lib-coverage": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
- "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
- "dev": true
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- }
- },
- "istanbul-reports": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
- "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-types": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz",
- "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "keyv": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
- "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
- "dev": true,
- "requires": {
- "json-buffer": "3.0.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "latest-version": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
- "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
- "dev": true,
- "requires": {
- "package-json": "^6.3.0"
- }
- },
- "levenshtein-edit-distance": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz",
- "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk=",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "libnpmconfig": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz",
- "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1",
- "find-up": "^3.0.0",
- "ini": "^1.3.5"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "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,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "line-column-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz",
- "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==",
- "dev": true,
- "requires": {
- "type-fest": "^0.4.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz",
- "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==",
- "dev": true
- }
- }
- },
- "lines-and-columns": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
- "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
- "dev": true
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- }
- }
- },
- "load-plugin": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-3.0.0.tgz",
- "integrity": "sha512-od7eKCCZ62ITvFf8nHHrIiYmgOHb4xVNDRDqxBWSaao5FZyyZVX8OmRCbwjDGPrSrgIulwPNyBsWCGnhiDC0oQ==",
- "dev": true,
- "requires": {
- "libnpmconfig": "^1.0.0",
- "resolve-from": "^5.0.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
- "dev": true
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- }
- }
- },
- "longest-streak": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
- "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
- "dev": true
- },
- "lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "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,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-obj": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz",
- "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "markdown-extensions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
- "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==",
- "dev": true
- },
- "markdown-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
- "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
- "dev": true,
- "requires": {
- "repeat-string": "^1.0.0"
- }
- },
- "match-casing": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/match-casing/-/match-casing-1.0.3.tgz",
- "integrity": "sha512-oMyC3vUVCFbGu+M2Zxl212LPJThcaw7QxB5lFuJPQCgV/dsGBP0yZeCoLmX6CiBkoBcVbAKDJZrBpJVu0XcLMw==",
- "dev": true
- },
- "mdast-comment-marker": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz",
- "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==",
- "dev": true
- },
- "mdast-util-find-and-replace": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz",
- "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^4.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "dependencies": {
- "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
- }
- }
- },
- "mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
- "dev": true,
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
- },
- "mdast-util-gfm": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz",
- "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==",
- "dev": true,
- "requires": {
- "mdast-util-gfm-autolink-literal": "^0.1.0",
- "mdast-util-gfm-strikethrough": "^0.2.0",
- "mdast-util-gfm-table": "^0.1.0",
- "mdast-util-gfm-task-list-item": "^0.1.0",
- "mdast-util-to-markdown": "^0.6.1"
- }
- },
- "mdast-util-gfm-autolink-literal": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz",
- "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==",
- "dev": true,
- "requires": {
- "ccount": "^1.0.0",
- "mdast-util-find-and-replace": "^1.1.0",
- "micromark": "^2.11.3"
- }
- },
- "mdast-util-gfm-strikethrough": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz",
- "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==",
- "dev": true,
- "requires": {
- "mdast-util-to-markdown": "^0.6.0"
- }
- },
- "mdast-util-gfm-table": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz",
- "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==",
- "dev": true,
- "requires": {
- "markdown-table": "^2.0.0",
- "mdast-util-to-markdown": "~0.6.0"
- }
- },
- "mdast-util-gfm-task-list-item": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz",
- "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==",
- "dev": true,
- "requires": {
- "mdast-util-to-markdown": "~0.6.0"
- }
- },
- "mdast-util-heading-style": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.6.tgz",
- "integrity": "sha512-8ZuuegRqS0KESgjAGW8zTx4tJ3VNIiIaGFNEzFpRSAQBavVc7AvOo9I4g3crcZBfYisHs4seYh0rAVimO6HyOw==",
- "dev": true
- },
- "mdast-util-to-markdown": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
- "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "longest-streak": "^2.0.0",
- "mdast-util-to-string": "^2.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.0.0",
- "zwitch": "^1.0.0"
- }
- },
- "mdast-util-to-nlcst": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz",
- "integrity": "sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "repeat-string": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "vfile-location": "^3.1.0"
- }
- },
- "mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "dev": true
- },
- "mdast-util-toc": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz",
- "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==",
- "dev": true,
- "requires": {
- "@types/mdast": "^3.0.3",
- "@types/unist": "^2.0.3",
- "extend": "^3.0.2",
- "github-slugger": "^1.2.1",
- "mdast-util-to-string": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "memory-fs": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
- "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
- "dev": true
- },
- "meow": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
- "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
- "dev": true,
- "requires": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize": "^1.2.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "dependencies": {
- "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,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "hosted-git-info": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
- "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "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,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "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,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "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,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true
- }
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micro-spelling-correcter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/micro-spelling-correcter/-/micro-spelling-correcter-1.1.1.tgz",
- "integrity": "sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==",
- "dev": true
- },
- "micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
- }
- },
- "micromark-extension-gfm": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz",
- "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==",
- "dev": true,
- "requires": {
- "micromark": "~2.11.0",
- "micromark-extension-gfm-autolink-literal": "~0.5.0",
- "micromark-extension-gfm-strikethrough": "~0.6.5",
- "micromark-extension-gfm-table": "~0.4.0",
- "micromark-extension-gfm-tagfilter": "~0.3.0",
- "micromark-extension-gfm-task-list-item": "~0.3.0"
- }
- },
- "micromark-extension-gfm-autolink-literal": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz",
- "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==",
- "dev": true,
- "requires": {
- "micromark": "~2.11.3"
- }
- },
- "micromark-extension-gfm-strikethrough": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz",
- "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==",
- "dev": true,
- "requires": {
- "micromark": "~2.11.0"
- }
- },
- "micromark-extension-gfm-table": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz",
- "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==",
- "dev": true,
- "requires": {
- "micromark": "~2.11.0"
- }
- },
- "micromark-extension-gfm-tagfilter": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz",
- "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==",
- "dev": true
- },
- "micromark-extension-gfm-task-list-item": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz",
- "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==",
- "dev": true,
- "requires": {
- "micromark": "~2.11.0"
- }
- },
- "micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true
- },
- "min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- },
- "minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "dependencies": {
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
- }
- }
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "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
- },
- "multimap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz",
- "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==",
- "dev": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "nlcst-is-literal": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/nlcst-is-literal/-/nlcst-is-literal-1.2.2.tgz",
- "integrity": "sha512-R+1OJEmRl3ZOp9d8PbiRxGpnvmpi3jU+lzSqCJoLeogdEh0FYDRH1aC223qUbaKffxNTJkEfeDOeQfziw749yA==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0"
- }
- },
- "nlcst-normalize": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/nlcst-normalize/-/nlcst-normalize-2.1.5.tgz",
- "integrity": "sha512-xSqTKv8IHIy3n/orD7wj81BZljLfbrTot0Pv64MYUnQUXfDbi1xDSpJR4qEmbFWyFoHsmivcOdgrK+o7ky3mcw==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0"
- }
- },
- "nlcst-search": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/nlcst-search/-/nlcst-search-2.0.0.tgz",
- "integrity": "sha512-+3xdctMFTcG+76vKAa0wObNg1EYq7IIQlZcL+HxSFXkHO1DgSPRjsPJrmelVIvMg7rk+wmBcdPEoScv/CTT1Zw==",
- "dev": true,
- "requires": {
- "nlcst-is-literal": "^1.0.0",
- "nlcst-normalize": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "nlcst-to-string": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz",
- "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==",
- "dev": true
- },
- "node-releases": {
- "version": "1.1.75",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz",
- "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "normalize-url": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
- "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "number-to-words": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/number-to-words/-/number-to-words-1.2.4.tgz",
- "integrity": "sha512-/fYevVkXRcyBiZDg6yzZbm0RuaD6i0qRfn8yr+6D0KgBMOndFPxuW10qCHpzs50nN8qKuv78k8MuotZhcVX6Pw==",
- "dev": true
- },
- "obj-props": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.3.0.tgz",
- "integrity": "sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg==",
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-inspect": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
- "dev": true
- },
- "object-is": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "object.values": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz",
- "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.2"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- }
- },
- "open-editor": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-3.0.0.tgz",
- "integrity": "sha512-00Nqoa7k8F4AK1oSFMIIhYku+essXiCljR2L2kV+bl5j90ANgbQgzEeTdZu23LsikDoz+KfhyRHpGLAwpQhugA==",
- "dev": true,
- "requires": {
- "env-editor": "^0.4.1",
- "execa": "^5.0.0",
- "line-column-path": "^2.0.0",
- "open": "^7.3.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-cancelable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
- "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
- "dev": true
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "p-reduce": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
- "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==",
- "dev": true
- },
- "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
- },
- "package-json": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
- "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
- "dev": true,
- "requires": {
- "got": "^9.6.0",
- "registry-auth-token": "^4.0.0",
- "registry-url": "^5.0.0",
- "semver": "^6.2.0"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-english": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.2.0.tgz",
- "integrity": "sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "parse-latin": "^4.0.0",
- "unist-util-modify-children": "^2.0.0",
- "unist-util-visit-children": "^1.0.0"
- }
- },
- "parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "dev": true,
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "parse-latin": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz",
- "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "unist-util-modify-children": "^2.0.0",
- "unist-util-visit-children": "^1.0.0"
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-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
- },
- "picomatch": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
- "dev": true
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "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,
- "requires": {
- "find-up": "^4.0.0"
- },
- "dependencies": {
- "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,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "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,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "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,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "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,
- "requires": {
- "p-limit": "^2.2.0"
- }
- }
- }
- },
- "pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
- "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
- "dev": true,
- "requires": {
- "find-up": "^2.1.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "plur": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz",
- "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==",
- "dev": true,
- "requires": {
- "irregular-plurals": "^3.2.0"
- }
- },
- "pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
- "dev": true
- },
- "prettier": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz",
- "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==",
- "dev": true
- },
- "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,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "propose": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz",
- "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=",
- "dev": true,
- "requires": {
- "levenshtein-edit-distance": "^1.0.0"
- }
- },
- "proto-props": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz",
- "integrity": "sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "pupa": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
- "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
- "dev": true,
- "requires": {
- "escape-goat": "^2.0.0"
- }
- },
- "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
- },
- "quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true
- },
- "quotation": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/quotation/-/quotation-1.1.3.tgz",
- "integrity": "sha512-45gUgmX/RtQOQV1kwM06boP49OYXcKCPrYwdmAvs5YqkpiobhNKKwo524JM6Ma0ko3oN9tXNcWs9+ABq3Ry7YA==",
- "dev": true
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- }
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- }
- }
- },
- "read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "requires": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "dependencies": {
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- }
- }
- },
- "regexp-tree": {
- "version": "0.1.23",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.23.tgz",
- "integrity": "sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw==",
- "dev": true
- },
- "regexp.prototype.flags": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
- "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "registry-auth-token": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
- "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
- "dev": true,
- "requires": {
- "rc": "^1.2.8"
- }
- },
- "registry-url": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
- "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
- "dev": true,
- "requires": {
- "rc": "^1.2.8"
- }
- },
- "remark": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz",
- "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
- "dev": true,
- "requires": {
- "remark-parse": "^9.0.0",
- "remark-stringify": "^9.0.0",
- "unified": "^9.1.0"
- }
- },
- "remark-cli": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-9.0.0.tgz",
- "integrity": "sha512-y6kCXdwZoMoh0Wo4Och1tDW50PmMc86gW6GpF08v9d+xUCEJE2wwXdQ+TnTaUamRnfFdU+fE+eNf2PJ53cyq8g==",
- "dev": true,
- "requires": {
- "markdown-extensions": "^1.1.0",
- "remark": "^13.0.0",
- "unified-args": "^8.0.0"
- }
- },
- "remark-comment-config": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/remark-comment-config/-/remark-comment-config-6.0.0.tgz",
- "integrity": "sha512-hpv4RS6AASn+ah+j9k+3+RsQmtAfRbt2evXCEoW/9W93CJ7PLkxCgeoNnkssGjQ6mLNV6vS5vNflSVIJALn29Q==",
- "dev": true,
- "requires": {
- "mdast-comment-marker": "^1.0.1"
- }
- },
- "remark-gfm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz",
- "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==",
- "dev": true,
- "requires": {
- "mdast-util-gfm": "^0.1.0",
- "micromark-extension-gfm": "^0.3.0"
- }
- },
- "remark-github": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/remark-github/-/remark-github-10.1.0.tgz",
- "integrity": "sha512-q0BTFb41N6/uXQVkxRwLRTFRfLFPYP+8li26Js5XC0GKritCSaxrftd+t+8sfN+1i9BtmJPUKoS7CZwtccj0Fg==",
- "dev": true,
- "requires": {
- "mdast-util-find-and-replace": "^1.0.0",
- "mdast-util-to-string": "^1.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz",
- "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==",
- "dev": true,
- "requires": {
- "remark-message-control": "^6.0.0"
- }
- },
- "remark-lint-blockquote-indentation": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-2.0.1.tgz",
- "integrity": "sha512-uJ9az/Ms9AapnkWpLSCJfawBfnBI2Tn1yUsPNqIFv6YM98ymetItUMyP6ng9NFPqDvTQBbiarulkgoEo0wcafQ==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-checkbox-character-style": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-checkbox-character-style/-/remark-lint-checkbox-character-style-3.0.0.tgz",
- "integrity": "sha512-691OJ5RdBRXVpvnOEiBhMB4uhHJSHVttw83O4qyAkNBiqxa1Axqhsz8FgmzYgRLQbOGd2ncVUcXG1LOJt6C0DQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-checkbox-content-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-checkbox-content-indent/-/remark-lint-checkbox-content-indent-3.0.0.tgz",
- "integrity": "sha512-+T4+hoY85qZE2drD2rCe14vF7fAgD3Kv2fkFd1HRvv3M5Riy148w/4YeoBI5U5BpybGTVUeEUYLCeJ8zbJLjkw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-code-block-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-2.0.1.tgz",
- "integrity": "sha512-eRhmnColmSxJhO61GHZkvO67SpHDshVxs2j3+Zoc5Y1a4zQT2133ZAij04XKaBFfsVLjhbY/+YOWxgvtjx2nmA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-definition-case": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-2.0.1.tgz",
- "integrity": "sha512-M+XlThtQwEJLQnQb5Gi6xZdkw92rGp7m2ux58WMw/Qlcg02WgHR/O0OcHPe5VO5hMJrtI+cGG5T0svsCgRZd3w==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-definition-spacing": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-2.0.1.tgz",
- "integrity": "sha512-xK9DOQO5MudITD189VyUiMHBIKltW1oc55L7Fti3i9DedXoBG7Phm+V9Mm7IdWzCVkquZVgVk63xQdqzSQRrSQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-emphasis-marker": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-2.0.1.tgz",
- "integrity": "sha512-7mpbAUrSnHiWRyGkbXRL5kfSKY9Cs8cdob7Fw+Z02/pufXMF4yRWaegJ5NTUu1RE+SKlF44wtWWjvcIoyY6/aw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-fenced-code-flag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-2.0.1.tgz",
- "integrity": "sha512-+COnWHlS/h02FMxoZWxNlZW3Y8M0cQQpmx3aNCbG7xkyMyCKsMLg9EmRvYHHIbxQCuF3JT0WWx5AySqlc7d+NA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-fenced-code-marker": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-2.0.1.tgz",
- "integrity": "sha512-lujpjm04enn3ma6lITlttadld6eQ1OWAEcT3qZzvFHp+zPraC0yr0eXlvtDN/0UH8mrln/QmGiZp3i8IdbucZg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-file-extension": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-1.0.5.tgz",
- "integrity": "sha512-oVQdf5vEomwHkfQ7R/mgmsWW2H/t9kSvnrxtVoNOHr+qnOEafKKDn+AFhioN2kqtjCZBAjSSrePs6xGKmXKDTw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-final-definition": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-2.1.0.tgz",
- "integrity": "sha512-83K7n2icOHPfBzbR5Mr1o7cu8gOjD8FwJkFx/ly+rW+8SHfjCj4D3WOFGQ1xVdmHjfomBDXXDSNo2oiacADVXQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-final-newline": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-1.0.5.tgz",
- "integrity": "sha512-rfLlW8+Fz2dqnaEgU4JwLA55CQF1T4mfSs/GwkkeUCGPenvEYwSkCN2KO2Gr1dy8qPoOdTFE1rSufLjmeTW5HA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-first-heading-level": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-first-heading-level/-/remark-lint-first-heading-level-2.0.1.tgz",
- "integrity": "sha512-XoK/eLfnz1VSA8QkfMbdbvlCqOwgw29MAWEGC4Cv0666nTcY9uWHlZ/SV/20YNmuEVdfCA+92v92mM486qcASQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-hard-break-spaces": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-2.0.1.tgz",
- "integrity": "sha512-Qfn/BMQFamHhtbfLrL8Co/dbYJFLRL4PGVXZ5wumkUO5f9FkZC2RsV+MD9lisvGTkJK0ZEJrVVeaPbUIFM0OAw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-heading-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-2.0.1.tgz",
- "integrity": "sha512-IrFLNs0M5Vbn9qg51AYhGUfzgLAcDOjh2hFGMz3mx664dV6zLcNZOPSdJBBJq3JQR4gKpoXcNwN1+FFaIATj+A==",
- "dev": true,
- "requires": {
- "mdast-util-heading-style": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-link-title-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-2.0.1.tgz",
- "integrity": "sha512-+Q7Ew8qpOQzjqbDF6sUHmn9mKgje+m2Ho8Xz7cEnGIRaKJgtJzkn/dZqQM/az0gn3zaN6rOuwTwqw4EsT5EsIg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-list-item-bullet-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-list-item-bullet-indent/-/remark-lint-list-item-bullet-indent-3.0.0.tgz",
- "integrity": "sha512-X2rleWP8XReC4LXKF7Qi5vYiPJkA4Grx5zxsjHofFrVRz6j0PYOCuz7vsO+ZzMunFMfom6FODnscSWz4zouDVw==",
- "dev": true,
- "requires": {
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-list-item-indent": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-2.0.1.tgz",
- "integrity": "sha512-4IKbA9GA14Q9PzKSQI6KEHU/UGO36CSQEjaDIhmb9UOhyhuzz4vWhnSIsxyI73n9nl9GGRAMNUSGzr4pQUFwTA==",
- "dev": true,
- "requires": {
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-maximum-heading-length": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-2.0.1.tgz",
- "integrity": "sha512-1CjJ71YDqEpoOjUnc4wrwZV8ZGXWUIYRYeGoarAy3QKHepJL9M+zkdbOxZDfhc3tjVoDW/LWcgsW+DEpczgiMA==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-maximum-line-length": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-2.0.3.tgz",
- "integrity": "sha512-zyWHBFh1oPAy+gkaVFXiTHYP2WwriIeBtaarDqkweytw0+qmuikjVMJTWbQ3+XfYBreD7KKDM9SI79nkp0/IZQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-auto-link-without-protocol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-2.0.1.tgz",
- "integrity": "sha512-TFcXxzucsfBb/5uMqGF1rQA+WJJqm1ZlYQXyvJEXigEZ8EAxsxZGPb/gOQARHl/y0vymAuYxMTaChavPKaBqpQ==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-no-blockquote-without-marker": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-4.0.0.tgz",
- "integrity": "sha512-Y59fMqdygRVFLk1gpx2Qhhaw5IKOR9T38Wf7pjR07bEFBGUNfcoNVIFMd1TCJfCPQxUyJzzSqfZz/KT7KdUuiQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-no-consecutive-blank-lines": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-3.0.0.tgz",
- "integrity": "sha512-kmzLlOLrapBKEngwYFTdCZDmeOaze6adFPB7G0EdymD9V1mpAlnneINuOshRLEDKK5fAhXKiZXxdGIaMPkiXrA==",
- "dev": true,
- "requires": {
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-duplicate-defined-urls": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-defined-urls/-/remark-lint-no-duplicate-defined-urls-1.0.1.tgz",
- "integrity": "sha512-fUx4grm0oboxl+uwsHsRQGp3A929ujORrFoB/5eIyMDslxrgMTHKYf9ylxcC5yBRypkZi9AhFWBJ/wtVrxYEAg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-duplicate-definitions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-2.0.1.tgz",
- "integrity": "sha512-XL22benJZB01m+aOse91nsu1IMFqeWJWme9QvoJuxIcBROO1BG1VoqLOkwNcawE/M/0CkvTo5rfx0eMlcnXOIw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-duplicate-headings-in-section": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings-in-section/-/remark-lint-no-duplicate-headings-in-section-2.0.2.tgz",
- "integrity": "sha512-qtpTAvXgKkzDas7z3H3tzf/SDQIZ6zPEc9CaGZS/qMA2b5ORfQv+EC8NueK4x6+el19kbS6tX23iEnPXVYq1VQ==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-no-emphasis-as-heading": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-2.0.1.tgz",
- "integrity": "sha512-z86+yWtVivtuGIxIC4g9RuATbgZgOgyLcnaleonJ7/HdGTYssjJNyqCJweaWSLoaI0akBQdDwmtJahW5iuX3/g==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-empty-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-empty-url/-/remark-lint-no-empty-url-2.0.1.tgz",
- "integrity": "sha512-CBO5hgxlHWrnBPex0GfKZy6ORe2wkLrrHODVPUpLplDA72cQbDzQKedHGgh76euGDs+jvP7RO+IljozdLLfSTw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-file-name-articles": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.5.tgz",
- "integrity": "sha512-AQk5eTb3s3TAPPjiglZgqlQj4ycao+gPs8/XkdN1VCPUtewW0GgwoQe7YEuBKayJ6ioN8dGP37Kg/P/PlKaRQA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-no-file-name-consecutive-dashes": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.5.tgz",
- "integrity": "sha512-Mg2IDsi790/dSdAzwnBnsMYdZm3qC2QgGwqOWcr0TPABJhhjC3p8r5fX4MNMTXI5It7B7bW9+ImmCeLOZiXkLg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-no-file-name-irregular-characters": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.5.tgz",
- "integrity": "sha512-Oe5i99qNUKc2bxmiH421o5B/kqlf1dfjAxpHNLhi2X2dXE91zRGavrlRM/4f4oR0N9Bqb3qB9JZPyMPWrzu9XA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-no-file-name-mixed-case": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.5.tgz",
- "integrity": "sha512-ilrUCbHZin/ENwr8c3SC2chgkFsizXjBQIB/oZ7gnm1IkCkZPiMyXZAHdpwC/DjbrpGxfMYh9JmIHao4giS5+A==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-no-file-name-outer-dashes": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.6.tgz",
- "integrity": "sha512-rT8CmcIlenegS0Yst4maYXdZfqIjBOiRUY8j/KJkORF5tKH+3O1/S07025qPGmcRihzK3w4yO0K8rgkKQw0b9w==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0"
- }
- },
- "remark-lint-no-heading-content-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-3.0.0.tgz",
- "integrity": "sha512-yULDoVSIqKylLDfW6mVUbrHlyEWUSFtVFiKc+/BA412xDIhm8HZLUnP+FsuBC0OzbIZ+bO9Txy52WtO3LGnK1A==",
- "dev": true,
- "requires": {
- "mdast-util-heading-style": "^1.0.2",
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-heading-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-indent/-/remark-lint-no-heading-indent-3.0.0.tgz",
- "integrity": "sha512-b8ImhLv2AnRDxtYUODplzsl/7IwQ+lqRmD1bwbZgSerEP9MLaULW3SjH37EyA6z+8rCDjvEyppKKU6zec0TCjg==",
- "dev": true,
- "requires": {
- "pluralize": "^8.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-heading-like-paragraph": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-like-paragraph/-/remark-lint-no-heading-like-paragraph-2.0.1.tgz",
- "integrity": "sha512-9JDhpIvs4996PnHF5KUnx8/YN39MvZR0uf+EeVILdJbJ2IUL8BOlGNhMFc0CSmxajtIxobjiS+yzAvLG57pUFw==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-heading-punctuation": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-2.0.1.tgz",
- "integrity": "sha512-lY/eF6GbMeGu4cSuxfGHyvaQQBIq/6T/o+HvAR5UfxSTxmxZFwbZneAI2lbeR1zPcqOU87NsZ5ZZzWVwdLpPBw==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-no-html": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-html/-/remark-lint-no-html-2.0.1.tgz",
- "integrity": "sha512-fDISacCkZCRgl1MeCx5Fx+eWL0iS2GK1EOETR1yAA0av7LYiF8tUwsP4/iRqcxIT30YoDlYoiNRyprD2eyWsUg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-inline-padding": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-3.0.0.tgz",
- "integrity": "sha512-3s9uW3Yux9RFC0xV81MQX3bsYs+UY7nPnRuMxeIxgcVwxQ4E/mTJd9QjXUwBhU9kdPtJ5AalngdmOW2Tgar8Cg==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-no-literal-urls": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.1.tgz",
- "integrity": "sha512-IDdKtWOMuKVQIlb1CnsgBoyoTcXU3LppelDFAIZePbRPySVHklTtuK57kacgU5grc7gPM04bZV96eliGrRU7Iw==",
- "dev": true,
- "requires": {
- "mdast-util-to-string": "^1.0.2",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "remark-lint-no-missing-blank-lines": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-missing-blank-lines/-/remark-lint-no-missing-blank-lines-2.0.1.tgz",
- "integrity": "sha512-gM46JM8NMFj5PG8pkxOQ0AvkRMEX1lD7UO9b/eqUgYQ6OiJaCG8dInogCd++MVSUDpMMf4FF9dksRM/AOiFgIQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-multiple-toplevel-headings": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-2.0.1.tgz",
- "integrity": "sha512-VKSItR6c+u3OsE5pUiSmNusERNyQS9Nnji26ezoQ1uvy06k3RypIjmzQqJ/hCkSiF+hoyC3ibtrrGT8gorzCmQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-paragraph-content-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-paragraph-content-indent/-/remark-lint-no-paragraph-content-indent-3.0.0.tgz",
- "integrity": "sha512-breI0QSFAxvs2osc8yAzPqWoi4VfY9ccyV+/WQKOIIU8yTj8swN/kFFqnP7wdeY4O9BSmUJ7bPdWCsmrVworXA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-no-reference-like-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-reference-like-url/-/remark-lint-no-reference-like-url-2.0.1.tgz",
- "integrity": "sha512-MeZtlimw30Hd74tBQOe5xlKXU9K5EGF6q/rj/VU4vfdwmCWI9LBCarxPmqHYkm7sbD3P7k9g5oB4StmWZYr5pQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-shell-dollars": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-2.0.2.tgz",
- "integrity": "sha512-zhkHZOuyaD3r/TUUkkVqW0OxsR9fnSrAnHIF63nfJoAAUezPOu8D1NBsni6rX8H2DqGbPYkoeWrNsTwiKP0yow==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-shortcut-reference-image": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-2.0.1.tgz",
- "integrity": "sha512-2jcZBdnN6ecP7u87gkOVFrvICLXIU5OsdWbo160FvS/2v3qqqwF2e/n/e7D9Jd+KTq1mR1gEVVuTqkWWuh3cig==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-shortcut-reference-link": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-2.0.1.tgz",
- "integrity": "sha512-pTZbslG412rrwwGQkIboA8wpBvcjmGFmvugIA+UQR+GfFysKtJ5OZMPGJ98/9CYWjw9Z5m0/EktplZ5TjFjqwA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-table-indentation": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-3.0.0.tgz",
- "integrity": "sha512-+l7GovI6T+3LhnTtz/SmSRyOb6Fxy6tmaObKHrwb/GAebI/4MhFS1LVo3vbiP/RpPYtyQoFbbuXI55hqBG4ibQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-no-tabs": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-tabs/-/remark-lint-no-tabs-2.0.1.tgz",
- "integrity": "sha512-Fy5fMKNA8AsfhRtxyxBnHlGMpDDfns9VSSYv00RiC96qwRD82VhDRM3tYWZRBBxE+j71t6g47x9o/poGC7PThQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "remark-lint-no-undefined-references": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-3.0.0.tgz",
- "integrity": "sha512-0hzaJS9GuzSQVOeeNdJr/s66LRQOzp618xuOQPYWHcJdd+SCaRTyWbjMrTM/cCI5L1sYjgurp410NkIBQ32Vqg==",
- "dev": true,
- "requires": {
- "collapse-white-space": "^1.0.4",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.1.0",
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.1.0"
- }
- },
- "remark-lint-no-unneeded-full-reference-image": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-unneeded-full-reference-image/-/remark-lint-no-unneeded-full-reference-image-2.0.1.tgz",
- "integrity": "sha512-ZqkrW6l/n1EmcGdtzBFoDygG2ehd/Wx46Id9Dagg15oLzwvbhp5mJIXArXU2qGrF82w1hfainCaZzyH/OBJtEg==",
- "dev": true,
- "requires": {
- "collapse-white-space": "^1.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-unneeded-full-reference-link": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-unneeded-full-reference-link/-/remark-lint-no-unneeded-full-reference-link-2.0.1.tgz",
- "integrity": "sha512-OcPQiG6meVpvfydzxkxPdVc8jcXdklQW4gMjY2BevLtVoaIJ+dgNBPazyYHP/0EzpVY2RftD3CZ+5hiLW2rgpA==",
- "dev": true,
- "requires": {
- "collapse-white-space": "^1.0.0",
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-no-unused-definitions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-2.0.1.tgz",
- "integrity": "sha512-+BMc0BOjc364SvKYLkspmxDch8OaKPbnUGgQBvK0Bmlwy42baR4C9zhwAWBxm0SBy5Z4AyM4G4jKpLXPH40Oxg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-ordered-list-marker-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-2.0.1.tgz",
- "integrity": "sha512-Cnpw1Dn9CHn+wBjlyf4qhPciiJroFOEGmyfX008sQ8uGoPZsoBVIJx76usnHklojSONbpjEDcJCjnOvfAcWW1A==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-ordered-list-marker-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-2.0.1.tgz",
- "integrity": "sha512-blt9rS7OKxZ2NW8tqojELeyNEwPhhTJGVa+YpUkdEH+KnrdcD7Nzhnj6zfLWOx6jFNZk3jpq5nvLFAPteHaNKg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-rule-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-2.0.1.tgz",
- "integrity": "sha512-hz4Ff9UdlYmtO6Czz99WJavCjqCer7Cav4VopXt+yVIikObw96G5bAuLYcVS7hvMUGqC9ZuM02/Y/iq9n8pkAg==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-strong-marker": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-2.0.1.tgz",
- "integrity": "sha512-8X2IsW1jZ5FmW9PLfQjkL0OVy/J3xdXLcZrG1GTeQKQ91BrPFyEZqUM2oM6Y4S6LGtxWer+neZkPZNroZoRPBQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-table-cell-padding": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-3.0.0.tgz",
- "integrity": "sha512-sEKrbyFZPZpxI39R8/r+CwUrin9YtyRwVn0SQkNQEZWZcIpylK+bvoKIldvLIXQPob+ZxklL0GPVRzotQMwuWQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-table-pipe-alignment": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-2.0.1.tgz",
- "integrity": "sha512-O89U7bp0ja6uQkT2uQrNB76GaPvFabrHiUGhqEUnld21yEdyj7rgS57kn84lZNSuuvN1Oor6bDyCwWQGzzpoOQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-table-pipes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-3.0.0.tgz",
- "integrity": "sha512-QPokSazEdl0Y8ayUV9UB0Ggn3Jos/RAQwIo0z1KDGnJlGDiF80Jc6iU9RgDNUOjlpQffSLIfSVxH5VVYF/K3uQ==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-lint-unordered-list-marker-style": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-2.0.1.tgz",
- "integrity": "sha512-8KIDJNDtgbymEvl3LkrXgdxPMTOndcux3BHhNGB2lU4UnxSpYeHsxcDgirbgU6dqCAfQfvMjPvfYk19QTF9WZA==",
- "dev": true,
- "requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "remark-message-control": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-6.0.0.tgz",
- "integrity": "sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==",
- "dev": true,
- "requires": {
- "mdast-comment-marker": "^1.0.0",
- "unified-message-control": "^3.0.0"
- }
- },
- "remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
- "dev": true,
- "requires": {
- "mdast-util-from-markdown": "^0.8.0"
- }
- },
- "remark-preset-lint-recommended": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/remark-preset-lint-recommended/-/remark-preset-lint-recommended-5.0.0.tgz",
- "integrity": "sha512-uu+Ab8JCwMMaKvvB0LOWTWtM3uAvJbKQM/oyWCEJqj7lUVNTKZS575Ro5rKM3Dx7kQjjR1iw0e99bpAYTc5xNA==",
- "dev": true,
- "requires": {
- "remark-lint": "^8.0.0",
- "remark-lint-final-newline": "^1.0.0",
- "remark-lint-hard-break-spaces": "^2.0.0",
- "remark-lint-list-item-bullet-indent": "^3.0.0",
- "remark-lint-list-item-indent": "^2.0.0",
- "remark-lint-no-auto-link-without-protocol": "^2.0.0",
- "remark-lint-no-blockquote-without-marker": "^4.0.0",
- "remark-lint-no-duplicate-definitions": "^2.0.0",
- "remark-lint-no-heading-content-indent": "^3.0.0",
- "remark-lint-no-inline-padding": "^3.0.0",
- "remark-lint-no-literal-urls": "^2.0.0",
- "remark-lint-no-shortcut-reference-image": "^2.0.0",
- "remark-lint-no-shortcut-reference-link": "^2.0.0",
- "remark-lint-no-undefined-references": "^3.0.0",
- "remark-lint-no-unused-definitions": "^2.0.0",
- "remark-lint-ordered-list-marker-style": "^2.0.0"
- }
- },
- "remark-preset-wooorm": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/remark-preset-wooorm/-/remark-preset-wooorm-8.0.1.tgz",
- "integrity": "sha512-Dk1eduxMSgyfPTSWMMGhuDlbeoQbx+yjwitrVE+gYmCo1EBn+oKpsTjYbF0jKhDIEMKOfCqMJgH5gfa5UnLByA==",
- "dev": true,
- "requires": {
- "remark-comment-config": "^6.0.0",
- "remark-gfm": "^1.0.0",
- "remark-github": "^10.0.0",
- "remark-lint-blockquote-indentation": "^2.0.0",
- "remark-lint-checkbox-character-style": "^3.0.0",
- "remark-lint-checkbox-content-indent": "^3.0.0",
- "remark-lint-code-block-style": "^2.0.0",
- "remark-lint-definition-case": "^2.0.0",
- "remark-lint-definition-spacing": "^2.0.0",
- "remark-lint-emphasis-marker": "^2.0.0",
- "remark-lint-fenced-code-flag": "^2.0.0",
- "remark-lint-fenced-code-marker": "^2.0.0",
- "remark-lint-file-extension": "^1.0.0",
- "remark-lint-final-definition": "^2.0.0",
- "remark-lint-first-heading-level": "^2.0.0",
- "remark-lint-heading-style": "^2.0.0",
- "remark-lint-link-title-style": "^2.0.0",
- "remark-lint-maximum-heading-length": "^2.0.0",
- "remark-lint-maximum-line-length": "^2.0.0",
- "remark-lint-no-consecutive-blank-lines": "^3.0.0",
- "remark-lint-no-duplicate-defined-urls": "^1.0.0",
- "remark-lint-no-duplicate-definitions": "^2.0.0",
- "remark-lint-no-duplicate-headings-in-section": "^2.0.0",
- "remark-lint-no-emphasis-as-heading": "^2.0.0",
- "remark-lint-no-empty-url": "^2.0.0",
- "remark-lint-no-file-name-articles": "^1.0.0",
- "remark-lint-no-file-name-consecutive-dashes": "^1.0.0",
- "remark-lint-no-file-name-irregular-characters": "^1.0.0",
- "remark-lint-no-file-name-mixed-case": "^1.0.0",
- "remark-lint-no-file-name-outer-dashes": "^1.0.0",
- "remark-lint-no-heading-content-indent": "^3.0.0",
- "remark-lint-no-heading-indent": "^3.0.0",
- "remark-lint-no-heading-like-paragraph": "^2.0.0",
- "remark-lint-no-heading-punctuation": "^2.0.0",
- "remark-lint-no-html": "^2.0.0",
- "remark-lint-no-missing-blank-lines": "^2.0.0",
- "remark-lint-no-multiple-toplevel-headings": "^2.0.0",
- "remark-lint-no-paragraph-content-indent": "^3.0.0",
- "remark-lint-no-reference-like-url": "^2.0.0",
- "remark-lint-no-shell-dollars": "^2.0.0",
- "remark-lint-no-table-indentation": "^3.0.0",
- "remark-lint-no-tabs": "^2.0.0",
- "remark-lint-no-unneeded-full-reference-image": "^2.0.0",
- "remark-lint-no-unneeded-full-reference-link": "^2.0.0",
- "remark-lint-ordered-list-marker-value": "^2.0.0",
- "remark-lint-rule-style": "^2.0.0",
- "remark-lint-strong-marker": "^2.0.0",
- "remark-lint-table-cell-padding": "^3.0.0",
- "remark-lint-table-pipe-alignment": "^2.0.0",
- "remark-lint-table-pipes": "^3.0.0",
- "remark-lint-unordered-list-marker-style": "^2.0.0",
- "remark-preset-lint-recommended": "^5.0.0",
- "remark-retext": "^4.0.0",
- "remark-toc": "^7.0.0",
- "remark-validate-links": "^10.0.0",
- "retext-english": "^3.0.0",
- "retext-preset-wooorm": "^3.0.0",
- "unified": "^9.0.0"
- }
- },
- "remark-retext": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-4.0.0.tgz",
- "integrity": "sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==",
- "dev": true,
- "requires": {
- "mdast-util-to-nlcst": "^4.0.0"
- }
- },
- "remark-stringify": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz",
- "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
- "dev": true,
- "requires": {
- "mdast-util-to-markdown": "^0.6.0"
- }
- },
- "remark-toc": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/remark-toc/-/remark-toc-7.2.0.tgz",
- "integrity": "sha512-ppHepvpbg7j5kPFmU5rzDC4k2GTcPDvWcxXyr/7BZzO1cBSPk0stKtEJdsgAyw2WHKPGxadcHIZRjb2/sHxjkg==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.3",
- "mdast-util-toc": "^5.0.0"
- }
- },
- "remark-validate-links": {
- "version": "10.0.4",
- "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-10.0.4.tgz",
- "integrity": "sha512-oNGRcsoQkL35WoZKLMMBugDwvHfyu0JPA5vSYkEcvR6YBsFKBo4RedpecuokTK1wgD9l01rPxaQ9dPmRQYFhyg==",
- "dev": true,
- "requires": {
- "github-slugger": "^1.0.0",
- "hosted-git-info": "^3.0.0",
- "mdast-util-to-string": "^1.0.0",
- "propose": "0.0.5",
- "to-vfile": "^6.0.0",
- "trough": "^1.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==",
- "dev": true
- }
- }
- },
- "repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "reserved-words": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
- "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=",
- "dev": true
- },
- "resolve": {
- "version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
- "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "responselike": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
- "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
- "dev": true,
- "requires": {
- "lowercase-keys": "^1.0.0"
- }
- },
- "resumer": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
- "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
- "dev": true,
- "requires": {
- "through": "~2.3.4"
- }
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "retext-contractions": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/retext-contractions/-/retext-contractions-4.0.0.tgz",
- "integrity": "sha512-0T+QE+mFBfYiZHqD+86yM19PjEN3w6Z2boTWpYZb4L6JyzMN4luHUzNHwaL8HtkbxHEe0j8yqLrYnTD+qoOEyw==",
- "dev": true,
- "requires": {
- "nlcst-is-literal": "^1.0.0",
- "nlcst-to-string": "^2.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "retext-diacritics": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retext-diacritics/-/retext-diacritics-3.0.0.tgz",
- "integrity": "sha512-QayeY2hpQ1UEsPlderfl6k90sA+mSxnlOMqiA3N5teDPyKo3REwkm+o/fClCxjLSm6NJgqNthOZjjSBUgQvSSw==",
- "dev": true,
- "requires": {
- "match-casing": "^1.0.0",
- "nlcst-search": "^2.0.0",
- "nlcst-to-string": "^2.0.0",
- "quotation": "^1.0.1",
- "unist-util-position": "^3.0.0"
- }
- },
- "retext-english": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.4.tgz",
- "integrity": "sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==",
- "dev": true,
- "requires": {
- "parse-english": "^4.0.0",
- "unherit": "^1.0.4"
- }
- },
- "retext-indefinite-article": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/retext-indefinite-article/-/retext-indefinite-article-2.0.3.tgz",
- "integrity": "sha512-96D1Vk4l7FIf6egKoFVlml32kMmQbKi6FSxQ7YPDsU+F+JnJeLZFCJh9GBQ/LkBKpcyi2izGqYjDgj4DTBz73A==",
- "dev": true,
- "requires": {
- "format": "^0.2.2",
- "nlcst-to-string": "^2.0.0",
- "number-to-words": "^1.2.3",
- "unist-util-is": "^4.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "retext-preset-wooorm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retext-preset-wooorm/-/retext-preset-wooorm-3.0.0.tgz",
- "integrity": "sha512-mzxzW+V0iF4ygunqoukVBtjpgNX2cB7eCZ7IF5GNQA3QExqJF40bVQeCkW3fI/c1vC3OitNlpjz3R66i58sslA==",
- "dev": true,
- "requires": {
- "retext-contractions": "^4.0.0",
- "retext-diacritics": "^3.0.0",
- "retext-indefinite-article": "^2.0.0",
- "retext-quotes": "^4.0.0",
- "retext-redundant-acronyms": "^3.0.0",
- "retext-repeated-words": "^3.0.0",
- "retext-sentence-spacing": "^4.0.0"
- }
- },
- "retext-quotes": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/retext-quotes/-/retext-quotes-4.0.0.tgz",
- "integrity": "sha512-YtHJ3Yw0yk8sGp0FMAVWe2a/q0DaHjSKfrAYkO5rZXLofGYYG+LCoqzqlX0tbfae1ImlsqhsLVCuZ0fkUO087g==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "retext-redundant-acronyms": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retext-redundant-acronyms/-/retext-redundant-acronyms-3.0.0.tgz",
- "integrity": "sha512-pu5um9ObH+j/AguHPVm+u23DK43zey2Jim0dmzccczvilbIRiYh7ZQMSOIuLNpE+7jNP0quX3oe/ommrLlwECQ==",
- "dev": true,
- "requires": {
- "nlcst-normalize": "^2.0.0",
- "nlcst-search": "^2.0.0",
- "nlcst-to-string": "^2.0.0",
- "pluralize": "^8.0.0",
- "quotation": "^1.0.0",
- "unist-util-find-after": "^3.0.0",
- "unist-util-position": "^3.0.0"
- }
- },
- "retext-repeated-words": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retext-repeated-words/-/retext-repeated-words-3.0.0.tgz",
- "integrity": "sha512-c9awbCxn3h+SVVYwEeJA+rcWWFiOvxrcD8MVFpyVpWu0q1cXG7NIyWclEzXDV12SkqKgR/vmBJh3tIJCfxmDAA==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "retext-sentence-spacing": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/retext-sentence-spacing/-/retext-sentence-spacing-4.0.0.tgz",
- "integrity": "sha512-CKdHlVBbZDkdjxZ1IctBQ1u4/sHQraGoTuI8qvB2C4jSaM0MEY0hxpMdVjnznWAWm4VOqwSXZDkR71Pv6Yw0TA==",
- "dev": true,
- "requires": {
- "nlcst-to-string": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz",
- "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==",
- "dev": true,
- "requires": {
- "regexp-tree": "~0.1.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "semver-diff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
- "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
- "dev": true,
- "requires": {
- "semver": "^6.3.0"
- }
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- },
- "sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
- "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "string.prototype.trim": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz",
- "integrity": "sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- }
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
- },
- "strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "requires": {
- "min-indent": "^1.0.0"
- }
- },
- "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
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- }
- },
- "table": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
- "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
- "dev": true,
- "requires": {
- "ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
- "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- }
- }
- },
- "tapable": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
- "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
- "dev": true
- },
- "tape": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/tape/-/tape-5.3.1.tgz",
- "integrity": "sha512-Mj3h+/dgfI2xct4kTpzqZaRxhhglXcMg//xGTbB0AQisfiOYa6ZBNQIgv46xi1MqbgthuNLSS1SAySDZsb7MMA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "deep-equal": "^2.0.5",
- "defined": "^1.0.0",
- "dotignore": "^0.1.2",
- "for-each": "^0.3.3",
- "get-package-type": "^0.1.0",
- "glob": "^7.1.7",
- "has": "^1.0.3",
- "has-dynamic-import": "^2.0.0",
- "inherits": "^2.0.4",
- "is-regex": "^1.1.4",
- "minimist": "^1.2.5",
- "object-inspect": "^1.11.0",
- "object-is": "^1.1.5",
- "object.assign": "^4.1.2",
- "resolve": "^2.0.0-next.3",
- "resumer": "^0.0.0",
- "string.prototype.trim": "^1.2.4",
- "through": "^2.3.8"
- }
- },
- "test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- }
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-readable-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
- "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
- "dev": true
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "dependencies": {
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- }
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "to-vfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz",
- "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==",
- "dev": true,
- "requires": {
- "is-buffer": "^2.0.0",
- "vfile": "^4.0.0"
- }
- },
- "trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true
- },
- "trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
- "dev": true
- },
- "tsconfig-paths": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz",
- "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==",
- "dev": true,
- "requires": {
- "json5": "^2.2.0",
- "minimist": "^1.2.0",
- "strip-bom": "^3.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-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
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
- "dev": true,
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "typescript": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
- "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
- "dev": true
- },
- "unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
- "dev": true
- },
- "unherit": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
- "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "unified": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
- "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
- "dev": true,
- "requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
- }
- },
- "unified-args": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.1.0.tgz",
- "integrity": "sha512-t1HPS1cQPsVvt/6EtyWIbQGurza5684WGRigNghZRvzIdHm3LPgMdXPyGx0npORKzdiy5+urkF0rF5SXM8lBuQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "chalk": "^3.0.0",
- "chokidar": "^3.0.0",
- "fault": "^1.0.2",
- "json5": "^2.0.0",
- "minimist": "^1.2.0",
- "text-table": "^0.2.0",
- "unified-engine": "^8.0.0"
- }
- },
- "unified-engine": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-8.2.0.tgz",
- "integrity": "sha512-ZlMm62ejrf+tJHdyOjQfljszngQjRor95q2XZMGk6rpJUYi7ZIHY/EXEhOcj9PZkMKKdLIM+dqL4s0ceyk9wbA==",
- "dev": true,
- "requires": {
- "concat-stream": "^2.0.0",
- "debug": "^4.0.0",
- "fault": "^1.0.0",
- "figures": "^3.0.0",
- "glob": "^7.0.3",
- "ignore": "^5.0.0",
- "is-buffer": "^2.0.0",
- "is-empty": "^1.0.0",
- "is-plain-obj": "^2.0.0",
- "js-yaml": "^3.6.1",
- "load-plugin": "^3.0.0",
- "parse-json": "^5.0.0",
- "to-vfile": "^6.0.0",
- "trough": "^1.0.0",
- "unist-util-inspect": "^5.0.0",
- "vfile-reporter": "^6.0.0",
- "vfile-statistics": "^1.1.0"
- }
- },
- "unified-lint-rule": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.6.tgz",
- "integrity": "sha512-YPK15YBFwnsVorDFG/u0cVVQN5G2a3V8zv5/N6KN3TCG+ajKtaALcy7u14DCSrJI+gZeyYquFL9cioJXOGXSvg==",
- "dev": true,
- "requires": {
- "wrapped": "^1.0.1"
- }
- },
- "unified-message-control": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.3.tgz",
- "integrity": "sha512-oY5z2n8ugjpNHXOmcgrw0pQeJzavHS0VjPBP21tOcm7rc2C+5Q+kW9j5+gqtf8vfW/8sabbsK5+P+9QPwwEHDA==",
- "dev": true,
- "requires": {
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
- }
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "dev": true,
- "requires": {
- "crypto-random-string": "^2.0.0"
- }
- },
- "unist-util-find-after": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz",
- "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==",
- "dev": true,
- "requires": {
- "unist-util-is": "^4.0.0"
- }
- },
- "unist-util-generated": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz",
- "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==",
- "dev": true
- },
- "unist-util-inspect": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-5.0.1.tgz",
- "integrity": "sha512-fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==",
- "dev": true,
- "requires": {
- "is-empty": "^1.0.0"
- }
- },
- "unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
- "dev": true
- },
- "unist-util-modify-children": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz",
- "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==",
- "dev": true,
- "requires": {
- "array-iterate": "^1.0.0"
- }
- },
- "unist-util-position": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz",
- "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==",
- "dev": true
- },
- "unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.2"
- }
- },
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- }
- },
- "unist-util-visit-children": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz",
- "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==",
- "dev": true
- },
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "update-notifier": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
- "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
- "dev": true,
- "requires": {
- "boxen": "^5.0.0",
- "chalk": "^4.1.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.4.0",
- "is-npm": "^5.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.1.0",
- "pupa": "^2.1.1",
- "semver": "^7.3.4",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "url-parse-lax": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
- "dev": true,
- "requires": {
- "prepend-http": "^2.0.0"
- }
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "v8-to-istanbul": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz",
- "integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- }
- },
- "vfile-location": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
- "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==",
- "dev": true
- },
- "vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "dev": true,
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
- },
- "vfile-reporter": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.2.tgz",
- "integrity": "sha512-GN2bH2gs4eLnw/4jPSgfBjo+XCuvnX9elHICJZjVD4+NM0nsUrMTvdjGY5Sc/XG69XVTgLwj7hknQVc6M9FukA==",
- "dev": true,
- "requires": {
- "repeat-string": "^1.5.0",
- "string-width": "^4.0.0",
- "supports-color": "^6.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-sort": "^2.1.2",
- "vfile-statistics": "^1.1.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "vfile-sort": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz",
- "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==",
- "dev": true
- },
- "vfile-statistics": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz",
- "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-collection": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
- "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
- "dev": true,
- "requires": {
- "is-map": "^2.0.1",
- "is-set": "^2.0.1",
- "is-weakmap": "^2.0.1",
- "is-weakset": "^2.0.1"
- }
- },
- "which-typed-array": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.6.tgz",
- "integrity": "sha512-DdY984dGD5sQ7Tf+x1CkXzdg85b9uEel6nr4UkFg1LoE9OXv3uRuZhe5CoWdawhGACeFpEZXH8fFLQnDhbpm/Q==",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.4",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.6"
- }
- },
- "widest-line": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
- "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
- "dev": true,
- "requires": {
- "string-width": "^4.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrapped": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
- "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
- "dev": true,
- "requires": {
- "co": "3.1.0",
- "sliced": "^1.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "xdg-basedir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
- "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
- "dev": true
- },
- "xo": {
- "version": "0.38.2",
- "resolved": "https://registry.npmjs.org/xo/-/xo-0.38.2.tgz",
- "integrity": "sha512-bGDGXgyPQyiVYIiqrkbFm4S1IIwlKDrNxgWnz9xWrdT4jdbfDU9fHkW6Mwab7jGms7ymoul+aRZVa3uMhcQlTw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/eslint-plugin": "^4.15.1",
- "@typescript-eslint/parser": "^4.15.1",
- "arrify": "^2.0.1",
- "cosmiconfig": "^7.0.0",
- "debug": "^4.3.1",
- "eslint": "^7.20.0",
- "eslint-config-prettier": "^7.2.0",
- "eslint-config-xo": "^0.35.0",
- "eslint-config-xo-typescript": "^0.38.0",
- "eslint-formatter-pretty": "^4.0.0",
- "eslint-import-resolver-webpack": "^0.13.0",
- "eslint-plugin-ava": "^11.0.0",
- "eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-import": "^2.22.1",
- "eslint-plugin-no-use-extend-native": "^0.5.0",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-prettier": "^3.3.1",
- "eslint-plugin-promise": "^4.3.1",
- "eslint-plugin-unicorn": "^28.0.2",
- "find-cache-dir": "^3.3.1",
- "find-up": "^5.0.0",
- "fs-extra": "^9.1.0",
- "get-stdin": "^8.0.0",
- "globby": "^9.2.0",
- "has-flag": "^4.0.0",
- "imurmurhash": "^0.1.4",
- "is-path-inside": "^3.0.2",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "json5": "^2.2.0",
- "lodash": "^4.17.20",
- "meow": "^9.0.0",
- "micromatch": "^4.0.2",
- "open-editor": "^3.0.0",
- "p-reduce": "^2.1.0",
- "path-exists": "^4.0.0",
- "prettier": "^2.2.1",
- "resolve-cwd": "^3.0.0",
- "resolve-from": "^5.0.0",
- "semver": "^7.3.4",
- "slash": "^3.0.0",
- "to-absolute-glob": "^2.0.2",
- "typescript": "^4.1.5",
- "update-notifier": "^5.1.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true
- },
- "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
- },
- "zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
- "dev": true
- }
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package.json
deleted file mode 100644
index 9e82ef70a..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/package.json
+++ /dev/null
@@ -1,109 +0,0 @@
-{
- "_from": "collapse-white-space",
- "_id": "collapse-white-space@2.0.0",
- "_inBundle": false,
- "_integrity": "sha512-eh9krktAIMDL0KHuN7WTBJ/0PMv8KUvfQRBkIlGmW61idRM2DJjgd1qXEPr4wyk2PimZZeNww3RVYo6CMvDGlg==",
- "_location": "/collapse-white-space",
- "_phantomChildren": {},
- "_requested": {
- "type": "tag",
- "registry": true,
- "raw": "collapse-white-space",
- "name": "collapse-white-space",
- "escapedName": "collapse-white-space",
- "rawSpec": "",
- "saveSpec": null,
- "fetchSpec": "latest"
- },
- "_requiredBy": [
- "#USER",
- "/"
- ],
- "_resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.0.0.tgz",
- "_shasum": "37d8521344cdd36635db180a7c83e9d515ac281b",
- "_spec": "collapse-white-space",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock",
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/collapse-white-space/issues"
- },
- "bundleDependencies": false,
- "contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
- ],
- "deprecated": false,
- "description": "Replace multiple white space characters with a single space",
- "devDependencies": {
- "@types/tape": "^4.0.0",
- "c8": "^7.0.0",
- "prettier": "^2.0.0",
- "remark-cli": "^9.0.0",
- "remark-preset-wooorm": "^8.0.0",
- "rimraf": "^3.0.0",
- "tape": "^5.0.0",
- "typescript": "^4.0.0",
- "xo": "^0.38.0"
- },
- "files": [
- "index.d.ts",
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/collapse-white-space#readme",
- "keywords": [
- "collapse",
- "white",
- "space"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "collapse-white-space",
- "prettier": {
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "bracketSpacing": false,
- "semi": false,
- "trailingComma": "none"
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/collapse-white-space.git"
- },
- "scripts": {
- "build": "tsc",
- "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
- "prebuild": "rimraf \"*.d.ts\"",
- "prepublishOnly": "npm run build",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node test.js"
- },
- "sideEffects": false,
- "type": "module",
- "types": "index.d.ts",
- "version": "2.0.0",
- "xo": {
- "prettier": true,
- "rules": {
- "no-var": "off",
- "prefer-arrow-callback": "off"
- }
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/readme.md b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/readme.md
deleted file mode 100644
index e2600f0c8..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/collapse-white-space/readme.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# collapse-white-space
-
-[![Build][build-badge]][build]
-[![Coverage][coverage-badge]][coverage]
-[![Downloads][downloads-badge]][downloads]
-[![Size][size-badge]][size]
-
-Replace multiple whitespace characters with a single space.
-
-## Install
-
-This package is ESM only: Node 12+ is needed to use it and it must be `import`ed
-instead of `require`d.
-
-[npm][]:
-
-```sh
-npm install collapse-white-space
-```
-
-## Use
-
-```js
-import {collapseWhiteSpace} from 'collapse-white-space'
-
-collapseWhiteSpace('\tfoo \n\tbar \t\r\nbaz') //=> ' foo bar baz'
-```
-
-## API
-
-This package exports the following identifiers: `collapseWhiteSpace`.
-There is no default export.
-
-### `collapseWhiteSpace(value)`
-
-Replace multiple whitespace characters in `value` (`string`) with a single
-space.
-
-## License
-
-[MIT][license] Ā© [Titus Wormer][author]
-
-
-
-[build-badge]: https://github.com/wooorm/collapse-white-space/workflows/main/badge.svg
-
-[build]: https://github.com/wooorm/collapse-white-space/actions
-
-[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/collapse-white-space.svg
-
-[coverage]: https://codecov.io/github/wooorm/collapse-white-space
-
-[downloads-badge]: https://img.shields.io/npm/dm/collapse-white-space.svg
-
-[downloads]: https://www.npmjs.com/package/collapse-white-space
-
-[size-badge]: https://img.shields.io/bundlephobia/minzip/collapse-white-space.svg
-
-[size]: https://bundlephobia.com/result?p=collapse-white-space
-
-[npm]: https://docs.npmjs.com/cli/install
-
-[license]: license
-
-[author]: https://wooorm.com
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/LICENSE
deleted file mode 100644
index 757562ec5..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Mathias Buus
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/README.md b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/README.md
deleted file mode 100644
index 857b14bd7..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# end-of-stream
-
-A node module that calls a callback when a readable/writable/duplex stream has completed or failed.
-
- npm install end-of-stream
-
-[![Build status](https://travis-ci.org/mafintosh/end-of-stream.svg?branch=master)](https://travis-ci.org/mafintosh/end-of-stream)
-
-## Usage
-
-Simply pass a stream and a callback to the `eos`.
-Both legacy streams, streams2 and stream3 are supported.
-
-``` js
-var eos = require('end-of-stream');
-
-eos(readableStream, function(err) {
- // this will be set to the stream instance
- if (err) return console.log('stream had an error or closed early');
- console.log('stream has ended', this === readableStream);
-});
-
-eos(writableStream, function(err) {
- if (err) return console.log('stream had an error or closed early');
- console.log('stream has finished', this === writableStream);
-});
-
-eos(duplexStream, function(err) {
- if (err) return console.log('stream had an error or closed early');
- console.log('stream has ended and finished', this === duplexStream);
-});
-
-eos(duplexStream, {readable:false}, function(err) {
- if (err) return console.log('stream had an error or closed early');
- console.log('stream has finished but might still be readable');
-});
-
-eos(duplexStream, {writable:false}, function(err) {
- if (err) return console.log('stream had an error or closed early');
- console.log('stream has ended but might still be writable');
-});
-
-eos(readableStream, {error:false}, function(err) {
- // do not treat emit('error', err) as a end-of-stream
-});
-```
-
-## License
-
-MIT
-
-## Related
-
-`end-of-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/index.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/index.js
deleted file mode 100644
index c77f0d5d7..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/index.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var once = require('once');
-
-var noop = function() {};
-
-var isRequest = function(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-};
-
-var isChildProcess = function(stream) {
- return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
-};
-
-var eos = function(stream, opts, callback) {
- if (typeof opts === 'function') return eos(stream, null, opts);
- if (!opts) opts = {};
-
- callback = once(callback || noop);
-
- var ws = stream._writableState;
- var rs = stream._readableState;
- var readable = opts.readable || (opts.readable !== false && stream.readable);
- var writable = opts.writable || (opts.writable !== false && stream.writable);
- var cancelled = false;
-
- var onlegacyfinish = function() {
- if (!stream.writable) onfinish();
- };
-
- var onfinish = function() {
- writable = false;
- if (!readable) callback.call(stream);
- };
-
- var onend = function() {
- readable = false;
- if (!writable) callback.call(stream);
- };
-
- var onexit = function(exitCode) {
- callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
- };
-
- var onerror = function(err) {
- callback.call(stream, err);
- };
-
- var onclose = function() {
- process.nextTick(onclosenexttick);
- };
-
- var onclosenexttick = function() {
- if (cancelled) return;
- if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));
- if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));
- };
-
- var onrequest = function() {
- stream.req.on('finish', onfinish);
- };
-
- if (isRequest(stream)) {
- stream.on('complete', onfinish);
- stream.on('abort', onclose);
- if (stream.req) onrequest();
- else stream.on('request', onrequest);
- } else if (writable && !ws) { // legacy streams
- stream.on('end', onlegacyfinish);
- stream.on('close', onlegacyfinish);
- }
-
- if (isChildProcess(stream)) stream.on('exit', onexit);
-
- stream.on('end', onend);
- stream.on('finish', onfinish);
- if (opts.error !== false) stream.on('error', onerror);
- stream.on('close', onclose);
-
- return function() {
- cancelled = true;
- stream.removeListener('complete', onfinish);
- stream.removeListener('abort', onclose);
- stream.removeListener('request', onrequest);
- if (stream.req) stream.req.removeListener('finish', onfinish);
- stream.removeListener('end', onlegacyfinish);
- stream.removeListener('close', onlegacyfinish);
- stream.removeListener('finish', onfinish);
- stream.removeListener('exit', onexit);
- stream.removeListener('end', onend);
- stream.removeListener('error', onerror);
- stream.removeListener('close', onclose);
- };
-};
-
-module.exports = eos;
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/package.json
deleted file mode 100644
index 8e3ebab7c..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/end-of-stream/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "_from": "end-of-stream@^1.1.0",
- "_id": "end-of-stream@1.4.4",
- "_inBundle": false,
- "_integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "_location": "/end-of-stream",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "end-of-stream@^1.1.0",
- "name": "end-of-stream",
- "escapedName": "end-of-stream",
- "rawSpec": "^1.1.0",
- "saveSpec": null,
- "fetchSpec": "^1.1.0"
- },
- "_requiredBy": [
- "/pump"
- ],
- "_resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "_shasum": "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0",
- "_spec": "end-of-stream@^1.1.0",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock/node_modules/pump",
- "author": {
- "name": "Mathias Buus",
- "email": "mathiasbuus@gmail.com"
- },
- "bugs": {
- "url": "https://github.com/mafintosh/end-of-stream/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "once": "^1.4.0"
- },
- "deprecated": false,
- "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
- "devDependencies": {
- "tape": "^4.11.0"
- },
- "files": [
- "index.js"
- ],
- "homepage": "https://github.com/mafintosh/end-of-stream",
- "keywords": [
- "stream",
- "streams",
- "callback",
- "finish",
- "close",
- "end",
- "wait"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "end-of-stream",
- "repository": {
- "type": "git",
- "url": "git://github.com/mafintosh/end-of-stream.git"
- },
- "scripts": {
- "test": "node test.js"
- },
- "version": "1.4.4"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/LICENSE
deleted file mode 100644
index ee27ba4b4..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/example.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/example.js
deleted file mode 100644
index c1b700c39..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/example.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var on = require('dom-event');
-var insertCss = require('./');
-
-document.querySelector('body').innerHTML = 'insert-css example
';
-
-on(document.querySelector('#blue'), 'click', function() {
- insertCss('body{background: blue}');
-});
-
-on(document.querySelector('#red'), 'click', function() {
- insertCss('body{background: red}');
-});
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/index.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/index.js
deleted file mode 100644
index db4631071..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/index.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var containers = []; // will store container HTMLElement references
-var styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}
-
-var usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';
-
-function insertCss(css, options) {
- options = options || {};
-
- if (css === undefined) {
- throw new Error(usage);
- }
-
- var position = options.prepend === true ? 'prepend' : 'append';
- var container = options.container !== undefined ? options.container : document.querySelector('head');
- var containerId = containers.indexOf(container);
-
- // first time we see this container, create the necessary entries
- if (containerId === -1) {
- containerId = containers.push(container) - 1;
- styleElements[containerId] = {};
- }
-
- // try to get the correponding container + position styleElement, create it otherwise
- var styleElement;
-
- if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {
- styleElement = styleElements[containerId][position];
- } else {
- styleElement = styleElements[containerId][position] = createStyleElement();
-
- if (position === 'prepend') {
- container.insertBefore(styleElement, container.childNodes[0]);
- } else {
- container.appendChild(styleElement);
- }
- }
-
- // strip potential UTF-8 BOM if css was read from a file
- if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }
-
- // actually add the stylesheet
- if (styleElement.styleSheet) {
- styleElement.styleSheet.cssText += css
- } else {
- styleElement.textContent += css;
- }
-
- return styleElement;
-};
-
-function createStyleElement() {
- var styleElement = document.createElement('style');
- styleElement.setAttribute('type', 'text/css');
- return styleElement;
-}
-
-module.exports = insertCss;
-module.exports.insertCss = insertCss;
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/package.json
deleted file mode 100644
index c1dfc3f01..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/package.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "_from": "insert-css",
- "_id": "insert-css@2.0.0",
- "_inBundle": false,
- "_integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=",
- "_location": "/insert-css",
- "_phantomChildren": {},
- "_requested": {
- "type": "tag",
- "registry": true,
- "raw": "insert-css",
- "name": "insert-css",
- "escapedName": "insert-css",
- "rawSpec": "",
- "saveSpec": null,
- "fetchSpec": "latest"
- },
- "_requiredBy": [
- "#USER",
- "/"
- ],
- "_resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz",
- "_shasum": "eb5d1097b7542f4c79ea3060d3aee07d053880f4",
- "_spec": "insert-css",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock",
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "bugs": {
- "url": "https://github.com/substack/insert-css/issues"
- },
- "bundleDependencies": false,
- "dependencies": {},
- "deprecated": false,
- "description": "insert a string of css into the ",
- "devDependencies": {
- "browserify": "^13.0.1",
- "budo": "^8.3.0",
- "computed-style": "^0.3.0",
- "dom-event": "^1.0.0",
- "tape": "^4.6.0",
- "tape-run": "^2.1.4"
- },
- "homepage": "https://github.com/substack/insert-css",
- "keywords": [
- "css",
- "insert",
- "dom",
- "browser",
- "browserify",
- "inject",
- "styles",
- "stylesheet",
- "style",
- "html",
- "head",
- "link"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "insert-css",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/insert-css.git"
- },
- "scripts": {
- "example": "budo example.js",
- "test": "browserify test.js | tape-run"
- },
- "testling": {
- "files": "test.js",
- "browsers": [
- "ie/6..latest",
- "chrome/20..latest",
- "firefox/10..latest",
- "safari/latest",
- "opera/11.0..latest",
- "iphone/6",
- "ipad/6"
- ]
- },
- "version": "2.0.0"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/readme.markdown b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/readme.markdown
deleted file mode 100644
index 64db1494a..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/readme.markdown
+++ /dev/null
@@ -1,44 +0,0 @@
-# insert-css
-
-insert a string of css into the ``
-
-[![browser support](https://ci.testling.com/substack/insert-css.png)](https://ci.testling.com/substack/insert-css)
-
-# example
-
-``` js
- var insertCss = require('insert-css');
- var styleElement = insertCss('body { background:blue; }');
-```
-
-# api
-
-``` js
- var insertCss = require('insert-css');
-```
-
-## var styleElement = insertCss(css, opts);
-
-Insert some CSS into the page.
-
-* `opts.container` - Which HTMLElement to use as the base mounting point, defaults to
-`document.querySelector('head')`.
-
-* `opts.prepend` - Add the CSS at the top level of the container instead of at the bottom level (default).
-
-This is particullary useful for library creators where you may want your default CSS to be prepended so it
-can be easily overriden by user styles.
-
-# development
-
-## example
-
-``` sh
-npm run example
-```
-
-## test
-
-``` sh
-npm test
-```
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/test.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/test.js
deleted file mode 100644
index d97aee957..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/insert-css/test.js
+++ /dev/null
@@ -1,78 +0,0 @@
-var test = require('tape');
-
-test(function (t) {
- var insertCss = require('.');
- var initialNbStyleTags = nbStyleTags();
-
- // basic usage
- var baseStyle = 'body{position:relative;text-decoration:overline}';
- insertCss(baseStyle);
- t.equal(position(), 'relative', 'initial position is `relative`');
-
- // adds one style tag
- t.equal(nbStyleTags(), initialNbStyleTags + 1, 'we added one style tag');
-
- // default to appending style
- var appendStyle = 'body{position:absolute}';
- var appendStyleTag = insertCss(appendStyle);
- t.equal(position(), 'absolute', 'new position is `absolute`');
-
- // reuse same style tag
- t.equal(nbStyleTags(), initialNbStyleTags + 1, 'we kept using the same style tag');
-
- // prepend should add a new style tag before the append one
- t.equal(textDecoration(), 'overline', 'text-decoration is overline by default');
- var prependStyleTag = insertCss('body{text-decoration:underline !important}', {prepend: true});
- t.equal(nbStyleTags(), initialNbStyleTags + 2, 'we added a new style tag');
- t.equal(textDecoration(), 'underline', 'text-decoration is now underline');
- var tag = prependStyleTag;
- while (tag !== appendStyleTag) {
- tag = tag.nextSibling;
- }
- t.equal(tag, appendStyleTag, 'prepend mode should add a style tag before the append one');
-
- // uses old school styleSheet prop when present (IE)
- if (!appendStyleTag.styleSheet) {
- appendStyleTag.styleSheet = {cssText: 'a'};
- insertCss('p{color:blue}');
- t.equal(appendStyleTag.styleSheet.cssText, 'ap{color:blue}', 'we use old school styleSheet prop');
- delete appendStyleTag.styleSheet;
- }
-
- // allow re-adding added style
- insertCss(baseStyle);
- t.equal(position(), 'relative', 'position is again `relative`');
-
- // allow using a custom container
- var customContainer = document.createElement('div');
- document.querySelector('body').appendChild(customContainer);
- t.equal(nbStyleTags(customContainer), 0, 'no style tag in custom container');
- insertCss('body{position:absolute}', {container: customContainer});
- t.equal(nbStyleTags(customContainer), 1, 'new style tag added in custom container');
- t.equal(position(), 'absolute', 'position is absolute again');
-
- t.end();
-});
-
-test(function testEmpty(t) {
- var insertCss = require('./');
-
- t.equal(insertCss(), false, 'insertCss() with no arguments returns `false`');
-
- t.end();
-});
-
-function position() {
- var getStyle = require('computed-style');
- return getStyle(document.querySelector('body'), 'position');
-}
-
-function textDecoration() {
- var getStyle = require('computed-style');
- return getStyle(document.querySelector('body'), 'text-decoration');
-}
-
-function nbStyleTags(container) {
- if (!container) container = document;
- return container.querySelectorAll('style').length
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-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.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/README.md b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/README.md
deleted file mode 100644
index 1f1ffca93..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# once
-
-Only call a function once.
-
-## usage
-
-```javascript
-var once = require('once')
-
-function load (file, cb) {
- cb = once(cb)
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Or add to the Function.prototype in a responsible way:
-
-```javascript
-// only has to be done once
-require('once').proto()
-
-function load (file, cb) {
- cb = cb.once()
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Ironically, the prototype feature makes this module twice as
-complicated as necessary.
-
-To check whether you function has been called, use `fn.called`. Once the
-function is called for the first time the return value of the original
-function is saved in `fn.value` and subsequent calls will continue to
-return this value.
-
-```javascript
-var once = require('once')
-
-function load (cb) {
- cb = once(cb)
- var stream = createStream()
- stream.once('data', cb)
- stream.once('end', function () {
- if (!cb.called) cb(new Error('not found'))
- })
-}
-```
-
-## `once.strict(func)`
-
-Throw an error if the function is called twice.
-
-Some functions are expected to be called only once. Using `once` for them would
-potentially hide logical errors.
-
-In the example below, the `greet` function has to call the callback only once:
-
-```javascript
-function greet (name, cb) {
- // return is missing from the if statement
- // when no name is passed, the callback is called twice
- if (!name) cb('Hello anonymous')
- cb('Hello ' + name)
-}
-
-function log (msg) {
- console.log(msg)
-}
-
-// this will print 'Hello anonymous' but the logical error will be missed
-greet(null, once(msg))
-
-// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
-greet(null, once.strict(msg))
-```
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/once.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/once.js
deleted file mode 100644
index 235406736..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/once.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var wrappy = require('wrappy')
-module.exports = wrappy(once)
-module.exports.strict = wrappy(onceStrict)
-
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
-
- Object.defineProperty(Function.prototype, 'onceStrict', {
- value: function () {
- return onceStrict(this)
- },
- configurable: true
- })
-})
-
-function once (fn) {
- var f = function () {
- if (f.called) return f.value
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- f.called = false
- return f
-}
-
-function onceStrict (fn) {
- var f = function () {
- if (f.called)
- throw new Error(f.onceError)
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- var name = fn.name || 'Function wrapped with `once`'
- f.onceError = name + " shouldn't be called more than once"
- f.called = false
- return f
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/package.json
deleted file mode 100644
index bc4b68a50..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/once/package.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "_from": "once@^1.3.1",
- "_id": "once@1.4.0",
- "_inBundle": false,
- "_integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "_location": "/once",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "once@^1.3.1",
- "name": "once",
- "escapedName": "once",
- "rawSpec": "^1.3.1",
- "saveSpec": null,
- "fetchSpec": "^1.3.1"
- },
- "_requiredBy": [
- "/end-of-stream",
- "/pump"
- ],
- "_resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "_shasum": "583b1aa775961d4b113ac17d9c50baef9dd76bd1",
- "_spec": "once@^1.3.1",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock/node_modules/pump",
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "bugs": {
- "url": "https://github.com/isaacs/once/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "wrappy": "1"
- },
- "deprecated": false,
- "description": "Run a function exactly one time",
- "devDependencies": {
- "tap": "^7.0.1"
- },
- "directories": {
- "test": "test"
- },
- "files": [
- "once.js"
- ],
- "homepage": "https://github.com/isaacs/once#readme",
- "keywords": [
- "once",
- "function",
- "one",
- "single"
- ],
- "license": "ISC",
- "main": "once.js",
- "name": "once",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/once.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "1.4.0"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/.travis.yml b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/.travis.yml
deleted file mode 100644
index 17f94330e..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
-
-script: "npm test"
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/LICENSE
deleted file mode 100644
index 757562ec5..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Mathias Buus
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/README.md b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/README.md
deleted file mode 100644
index 4c81471a0..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# pump
-
-pump is a small node module that pipes streams together and destroys all of them if one of them closes.
-
-```
-npm install pump
-```
-
-[![build status](http://img.shields.io/travis/mafintosh/pump.svg?style=flat)](http://travis-ci.org/mafintosh/pump)
-
-## What problem does it solve?
-
-When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
-You are also not able to provide a callback to tell when then pipe has finished.
-
-pump does these two things for you
-
-## Usage
-
-Simply pass the streams you want to pipe together to pump and add an optional callback
-
-``` js
-var pump = require('pump')
-var fs = require('fs')
-
-var source = fs.createReadStream('/dev/random')
-var dest = fs.createWriteStream('/dev/null')
-
-pump(source, dest, function(err) {
- console.log('pipe finished', err)
-})
-
-setTimeout(function() {
- dest.destroy() // when dest is closed pump will destroy source
-}, 1000)
-```
-
-You can use pump to pipe more than two streams together as well
-
-``` js
-var transform = someTransformStream()
-
-pump(source, transform, anotherTransform, dest, function(err) {
- console.log('pipe finished', err)
-})
-```
-
-If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.
-
-Similarly to `stream.pipe()`, `pump()` returns the last stream passed in, so you can do:
-
-```
-return pump(s1, s2) // returns s2
-```
-
-If you want to return a stream that combines *both* s1 and s2 to a single stream use
-[pumpify](https://github.com/mafintosh/pumpify) instead.
-
-## License
-
-MIT
-
-## Related
-
-`pump` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/index.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/index.js
deleted file mode 100644
index c15059f17..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var once = require('once')
-var eos = require('end-of-stream')
-var fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes
-
-var noop = function () {}
-var ancient = /^v?\.0/.test(process.version)
-
-var isFn = function (fn) {
- return typeof fn === 'function'
-}
-
-var isFS = function (stream) {
- if (!ancient) return false // newer node version do not need to care about fs is a special way
- if (!fs) return false // browser
- return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
-}
-
-var isRequest = function (stream) {
- return stream.setHeader && isFn(stream.abort)
-}
-
-var destroyer = function (stream, reading, writing, callback) {
- callback = once(callback)
-
- var closed = false
- stream.on('close', function () {
- closed = true
- })
-
- eos(stream, {readable: reading, writable: writing}, function (err) {
- if (err) return callback(err)
- closed = true
- callback()
- })
-
- var destroyed = false
- return function (err) {
- if (closed) return
- if (destroyed) return
- destroyed = true
-
- if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
- if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
-
- if (isFn(stream.destroy)) return stream.destroy()
-
- callback(err || new Error('stream was destroyed'))
- }
-}
-
-var call = function (fn) {
- fn()
-}
-
-var pipe = function (from, to) {
- return from.pipe(to)
-}
-
-var pump = function () {
- var streams = Array.prototype.slice.call(arguments)
- var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
-
- if (Array.isArray(streams[0])) streams = streams[0]
- if (streams.length < 2) throw new Error('pump requires two streams per minimum')
-
- var error
- var destroys = streams.map(function (stream, i) {
- var reading = i < streams.length - 1
- var writing = i > 0
- return destroyer(stream, reading, writing, function (err) {
- if (!error) error = err
- if (err) destroys.forEach(call)
- if (reading) return
- destroys.forEach(call)
- callback(error)
- })
- })
-
- return streams.reduce(pipe)
-}
-
-module.exports = pump
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/package.json
deleted file mode 100644
index c4fbb095e..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "_from": "pump",
- "_id": "pump@3.0.0",
- "_inBundle": false,
- "_integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "_location": "/pump",
- "_phantomChildren": {},
- "_requested": {
- "type": "tag",
- "registry": true,
- "raw": "pump",
- "name": "pump",
- "escapedName": "pump",
- "rawSpec": "",
- "saveSpec": null,
- "fetchSpec": "latest"
- },
- "_requiredBy": [
- "#DEV:/",
- "#USER"
- ],
- "_resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "_shasum": "b4a2116815bde2f4e1ea602354e8c75565107a64",
- "_spec": "pump",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock",
- "author": {
- "name": "Mathias Buus Madsen",
- "email": "mathiasbuus@gmail.com"
- },
- "browser": {
- "fs": false
- },
- "bugs": {
- "url": "https://github.com/mafintosh/pump/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- },
- "deprecated": false,
- "description": "pipe streams together and close all of them if one of them closes",
- "homepage": "https://github.com/mafintosh/pump#readme",
- "keywords": [
- "streams",
- "pipe",
- "destroy",
- "callback"
- ],
- "license": "MIT",
- "name": "pump",
- "repository": {
- "type": "git",
- "url": "git://github.com/mafintosh/pump.git"
- },
- "scripts": {
- "test": "node test-browser.js && node test-node.js"
- },
- "version": "3.0.0"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-browser.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-browser.js
deleted file mode 100644
index 9a06c8a4c..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-browser.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var stream = require('stream')
-var pump = require('./index')
-
-var rs = new stream.Readable()
-var ws = new stream.Writable()
-
-rs._read = function (size) {
- this.push(Buffer(size).fill('abc'))
-}
-
-ws._write = function (chunk, encoding, cb) {
- setTimeout(function () {
- cb()
- }, 100)
-}
-
-var toHex = function () {
- var reverse = new (require('stream').Transform)()
-
- reverse._transform = function (chunk, enc, callback) {
- reverse.push(chunk.toString('hex'))
- callback()
- }
-
- return reverse
-}
-
-var wsClosed = false
-var rsClosed = false
-var callbackCalled = false
-
-var check = function () {
- if (wsClosed && rsClosed && callbackCalled) {
- console.log('test-browser.js passes')
- clearTimeout(timeout)
- }
-}
-
-ws.on('finish', function () {
- wsClosed = true
- check()
-})
-
-rs.on('end', function () {
- rsClosed = true
- check()
-})
-
-var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
- callbackCalled = true
- check()
-})
-
-if (res !== ws) {
- throw new Error('should return last stream')
-}
-
-setTimeout(function () {
- rs.push(null)
- rs.emit('close')
-}, 1000)
-
-var timeout = setTimeout(function () {
- check()
- throw new Error('timeout')
-}, 5000)
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-node.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-node.js
deleted file mode 100644
index 561251a08..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/pump/test-node.js
+++ /dev/null
@@ -1,53 +0,0 @@
-var pump = require('./index')
-
-var rs = require('fs').createReadStream('/dev/random')
-var ws = require('fs').createWriteStream('/dev/null')
-
-var toHex = function () {
- var reverse = new (require('stream').Transform)()
-
- reverse._transform = function (chunk, enc, callback) {
- reverse.push(chunk.toString('hex'))
- callback()
- }
-
- return reverse
-}
-
-var wsClosed = false
-var rsClosed = false
-var callbackCalled = false
-
-var check = function () {
- if (wsClosed && rsClosed && callbackCalled) {
- console.log('test-node.js passes')
- clearTimeout(timeout)
- }
-}
-
-ws.on('close', function () {
- wsClosed = true
- check()
-})
-
-rs.on('close', function () {
- rsClosed = true
- check()
-})
-
-var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
- callbackCalled = true
- check()
-})
-
-if (res !== ws) {
- throw new Error('should return last stream')
-}
-
-setTimeout(function () {
- rs.destroy()
-}, 1000)
-
-var timeout = setTimeout(function () {
- throw new Error('timeout')
-}, 5000)
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/LICENSE
deleted file mode 100644
index 19129e315..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-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.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/README.md b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/README.md
deleted file mode 100644
index 98eab2522..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# wrappy
-
-Callback wrapping utility
-
-## USAGE
-
-```javascript
-var wrappy = require("wrappy")
-
-// var wrapper = wrappy(wrapperFunction)
-
-// make sure a cb is called only once
-// See also: http://npm.im/once for this specific use case
-var once = wrappy(function (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
-})
-
-function printBoo () {
- console.log('boo')
-}
-// has some rando property
-printBoo.iAmBooPrinter = true
-
-var onlyPrintOnce = once(printBoo)
-
-onlyPrintOnce() // prints 'boo'
-onlyPrintOnce() // does nothing
-
-// random property is retained!
-assert.equal(onlyPrintOnce.iAmBooPrinter, true)
-```
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package-lock.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package-lock.json
deleted file mode 100644
index 425c6598f..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package-lock.json
+++ /dev/null
@@ -1,1859 +0,0 @@
-{
- "name": "wrappy",
- "version": "1.0.2",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
- "dev": true
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "asn1": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
- "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
- "dev": true,
- "optional": true
- },
- "assert-plus": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
- "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
- "dev": true,
- "optional": true
- },
- "async": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
- "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
- "dev": true,
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
- "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
- "dev": true,
- "optional": true
- },
- "aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
- "dev": true
- },
- "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
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "bl": {
- "version": "0.9.5",
- "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz",
- "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=",
- "dev": true,
- "requires": {
- "readable-stream": "~1.0.26"
- },
- "dependencies": {
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- }
- }
- },
- "boom": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz",
- "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=",
- "dev": true,
- "optional": true,
- "requires": {
- "hoek": "0.9.x"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
- "caseless": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.6.0.tgz",
- "integrity": "sha1-gWfBq4OX+1u5X5bSjlqBxQ8kesQ=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "codecov.io": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/codecov.io/-/codecov.io-0.1.6.tgz",
- "integrity": "sha1-Wd/QLaH/McL7K5Uq2K0W/TeBtyg=",
- "dev": true,
- "requires": {
- "request": "2.42.0",
- "urlgrey": "0.4.0"
- }
- },
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true
- },
- "combined-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
- "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
- "dev": true,
- "optional": true,
- "requires": {
- "delayed-stream": "0.0.5"
- }
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "coveralls": {
- "version": "2.13.3",
- "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz",
- "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==",
- "dev": true,
- "requires": {
- "js-yaml": "3.6.1",
- "lcov-parse": "0.0.10",
- "log-driver": "1.2.5",
- "minimist": "1.2.0",
- "request": "2.79.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
- "dev": true
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
- "dev": true,
- "requires": {
- "hoek": "2.x.x"
- }
- },
- "caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "dev": true,
- "requires": {
- "boom": "2.x.x"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.5",
- "mime-types": "^2.1.12"
- }
- },
- "hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
- "dev": true,
- "requires": {
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "hoek": "2.x.x",
- "sntp": "1.x.x"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
- "dev": true
- },
- "http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
- "dev": true,
- "requires": {
- "assert-plus": "^0.2.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "js-yaml": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz",
- "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^2.6.0"
- }
- },
- "mime-types": {
- "version": "2.1.32",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
- "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
- "dev": true,
- "requires": {
- "mime-db": "1.49.0"
- }
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
- "dev": true
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "qs": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
- "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
- "dev": true
- },
- "request": {
- "version": "2.79.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
- "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.6.0",
- "aws4": "^1.2.1",
- "caseless": "~0.11.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.0",
- "forever-agent": "~0.6.1",
- "form-data": "~2.1.1",
- "har-validator": "~2.0.6",
- "hawk": "~3.1.3",
- "http-signature": "~1.1.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.7",
- "oauth-sign": "~0.8.1",
- "qs": "~6.3.0",
- "stringstream": "~0.0.4",
- "tough-cookie": "~2.3.0",
- "tunnel-agent": "~0.4.1",
- "uuid": "^3.0.0"
- }
- },
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "dev": true,
- "requires": {
- "hoek": "2.x.x"
- }
- },
- "tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
- "dev": true,
- "requires": {
- "punycode": "^1.4.1"
- }
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- }
- }
- },
- "cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "cryptiles": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz",
- "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=",
- "dev": true,
- "optional": true,
- "requires": {
- "boom": "0.4.x"
- }
- },
- "ctype": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
- "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
- "dev": true,
- "optional": true
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "deep-equal": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
- "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "deeper": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/deeper/-/deeper-2.1.0.tgz",
- "integrity": "sha1-vFZOX3MXT98gHgiwADDooU2nQ2g=",
- "dev": true
- },
- "defined": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
- "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
- "dev": true
- },
- "delayed-stream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
- "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
- "dev": true,
- "optional": true
- },
- "diff": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
- "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
- "dev": true
- },
- "duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
- "dev": true
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "escodegen": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.7.1.tgz",
- "integrity": "sha1-MOz89mypjcZ80v0WKr626vqM5vw=",
- "dev": true,
- "requires": {
- "esprima": "^1.2.2",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.5.0",
- "source-map": "~0.2.0"
- },
- "dependencies": {
- "esprima": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz",
- "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
- "estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "events-to-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz",
- "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=",
- "dev": true
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz",
- "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=",
- "dev": true
- },
- "fileset": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz",
- "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=",
- "dev": true,
- "requires": {
- "glob": "5.x",
- "minimatch": "2.x"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
- "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.0.0"
- }
- }
- }
- },
- "foreground-child": {
- "version": "1.5.6",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
- "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
- "dev": true,
- "requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
- },
- "dependencies": {
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
- "dev": true
- }
- }
- },
- "forever-agent": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz",
- "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=",
- "dev": true
- },
- "form-data": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz",
- "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=",
- "dev": true,
- "optional": true,
- "requires": {
- "async": "~0.9.0",
- "combined-stream": "~0.0.4",
- "mime": "~1.2.11"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "generate-function": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
- "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
- "dev": true,
- "requires": {
- "is-property": "^1.0.2"
- }
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
- "dev": true,
- "requires": {
- "is-property": "^1.0.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
- "wordwrap": "^1.0.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
- "dev": true,
- "requires": {
- "chalk": "^1.1.1",
- "commander": "^2.9.0",
- "is-my-json-valid": "^2.12.4",
- "pinkie-promise": "^2.0.0"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "hawk": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
- "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=",
- "dev": true,
- "optional": true,
- "requires": {
- "boom": "0.4.x",
- "cryptiles": "0.2.x",
- "hoek": "0.9.x",
- "sntp": "0.2.x"
- }
- },
- "hoek": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz",
- "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=",
- "dev": true,
- "optional": true
- },
- "http-signature": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
- "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
- "dev": true,
- "optional": true,
- "requires": {
- "asn1": "0.1.11",
- "assert-plus": "^0.1.5",
- "ctype": "0.5.3"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-my-ip-valid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
- "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
- "dev": true
- },
- "is-my-json-valid": {
- "version": "2.20.5",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz",
- "integrity": "sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A==",
- "dev": true,
- "requires": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "is-my-ip-valid": "^1.0.0",
- "jsonpointer": "^4.0.0",
- "xtend": "^4.0.0"
- }
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "istanbul": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.3.22.tgz",
- "integrity": "sha1-PhZNhQIf4ZyYXR8OfvDD4i0BLrY=",
- "dev": true,
- "requires": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.7.x",
- "esprima": "2.5.x",
- "fileset": "0.2.x",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
- },
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "esprima": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.5.0.tgz",
- "integrity": "sha1-84ekb9NEwbGjm6+MIL+0O20AWMw=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- }
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
- "jsonpointer": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz",
- "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "lcov-parse": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz",
- "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=",
- "dev": true
- },
- "levn": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz",
- "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.0",
- "type-check": "~0.3.1"
- }
- },
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
- },
- "log-driver": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz",
- "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=",
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "mime": {
- "version": "1.2.11",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
- "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
- "dev": true,
- "optional": true
- },
- "mime-db": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
- "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
- "dev": true
- },
- "mime-types": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
- "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "dev": true
- }
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node-uuid": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
- "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
- "dev": true
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "nyc": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-3.2.2.tgz",
- "integrity": "sha1-ohIj/82Gvz0tKunhS4oIrq3gRu4=",
- "dev": true,
- "requires": {
- "foreground-child": "1.3.0",
- "glob": "^5.0.14",
- "istanbul": "^0.3.19",
- "lodash": "^3.10.0",
- "mkdirp": "^0.5.0",
- "rimraf": "^2.4.2",
- "signal-exit": "^2.1.1",
- "spawn-wrap": "^1.0.1",
- "strip-bom": "^2.0.0",
- "yargs": "^3.15.0"
- },
- "dependencies": {
- "foreground-child": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "signal-exit": "^2.0.0",
- "win-spawn": "^2.0.0"
- },
- "dependencies": {
- "win-spawn": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true
- }
- }
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "spawn-wrap": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "foreground-child": "^1.2.0",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.3.3",
- "signal-exit": "^2.0.0"
- },
- "dependencies": {
- "os-homedir": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- }
- }
- }
- }
- },
- "oauth-sign": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.4.0.tgz",
- "integrity": "sha1-8ilW8x6nFRqCHl8vsywRPK2Ln2k=",
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "only-shallow": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/only-shallow/-/only-shallow-1.2.0.tgz",
- "integrity": "sha1-cc7O26kyS8BRiu8Q7AgNMkncJGU=",
- "dev": true
- },
- "opener": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
- "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
- "dev": true
- },
- "optionator": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz",
- "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.2",
- "fast-levenshtein": "~1.0.0",
- "levn": "~0.2.5",
- "prelude-ls": "~1.1.1",
- "type-check": "~0.3.1",
- "wordwrap": "~0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- }
- }
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "dev": true,
- "optional": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true,
- "optional": true
- },
- "qs": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz",
- "integrity": "sha1-GbV/8k3CqZzh+L32r82ln472H4g=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "request": {
- "version": "2.42.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.42.0.tgz",
- "integrity": "sha1-VyvQFIk4VkBArHqxSLlkI6BjMEo=",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.5.0",
- "bl": "~0.9.0",
- "caseless": "~0.6.0",
- "forever-agent": "~0.5.0",
- "form-data": "~0.1.0",
- "hawk": "1.1.1",
- "http-signature": "~0.10.0",
- "json-stringify-safe": "~5.0.0",
- "mime-types": "~1.0.1",
- "node-uuid": "~1.4.0",
- "oauth-sign": "~0.4.0",
- "qs": "~1.2.0",
- "stringstream": "~0.0.4",
- "tough-cookie": ">=0.12.0",
- "tunnel-agent": "~0.4.0"
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "resumer": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
- "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
- "dev": true,
- "requires": {
- "through": "~2.3.4"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "signal-exit": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz",
- "integrity": "sha1-N1h5sfkuvDszRIDQONxUam1VhWQ=",
- "dev": true
- },
- "sntp": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz",
- "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=",
- "dev": true,
- "optional": true,
- "requires": {
- "hoek": "0.9.x"
- }
- },
- "source-map": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- },
- "split": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
- "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "dependencies": {
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
- "dev": true,
- "requires": {
- "duplexer": "~0.1.1"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "stringstream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
- "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "supports-color": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz",
- "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=",
- "dev": true
- },
- "tap": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tap/-/tap-2.3.4.tgz",
- "integrity": "sha1-x7a9OX/x2fv5Pljr5Yx5Ff2ogLQ=",
- "dev": true,
- "requires": {
- "codecov.io": "^0.1.6",
- "coveralls": "^2.11.2",
- "deeper": "^2.1.0",
- "foreground-child": "^1.2.0",
- "glob": "^6.0.1",
- "js-yaml": "^3.3.1",
- "mkdirp": "^0.5.0",
- "nyc": "^3.1.0",
- "only-shallow": "^1.0.2",
- "opener": "^1.4.1",
- "readable-stream": "^2.0.2",
- "signal-exit": "^2.0.0",
- "supports-color": "^1.3.1",
- "tap-mocha-reporter": "0.0 || 1",
- "tap-parser": "^1.2.2",
- "tmatch": "^1.0.2"
- }
- },
- "tap-mocha-reporter": {
- "version": "0.0.27",
- "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-0.0.27.tgz",
- "integrity": "sha1-svcvPh6Lp4DuApGPzes6QNqAGPc=",
- "dev": true,
- "requires": {
- "color-support": "^1.1.0",
- "debug": "^2.1.3",
- "diff": "^1.3.2",
- "escape-string-regexp": "^1.0.3",
- "glob": "^7.0.5",
- "js-yaml": "^3.3.1",
- "readable-stream": "^1.1.13",
- "tap-parser": "^1.0.4",
- "unicode-length": "^1.0.0"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- }
- }
- },
- "tap-parser": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-1.3.2.tgz",
- "integrity": "sha1-EgxQiciMPIp5PvKIhn3jIeGPjCI=",
- "dev": true,
- "requires": {
- "events-to-array": "^1.0.1",
- "inherits": "~2.0.1",
- "js-yaml": "^3.2.7",
- "readable-stream": "^2"
- }
- },
- "tape": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.0.tgz",
- "integrity": "sha1-Df7scJIn+8yRcKvn8EaWKycUMds=",
- "dev": true,
- "requires": {
- "deep-equal": "~0.1.0",
- "defined": "~0.0.0",
- "inherits": "~2.0.1",
- "jsonify": "~0.0.0",
- "resumer": "~0.0.0",
- "split": "~0.2.10",
- "stream-combiner": "~0.0.2",
- "through": "~2.3.4"
- }
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "tmatch": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-1.0.2.tgz",
- "integrity": "sha1-RYx5SN4L1SLHgfxBI1dpqjxEclc=",
- "dev": true
- },
- "tough-cookie": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
- "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
- "dev": true,
- "optional": true,
- "requires": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.1.2"
- }
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- },
- "uglify-js": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz",
- "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==",
- "dev": true,
- "optional": true
- },
- "unicode-length": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz",
- "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=",
- "dev": true,
- "requires": {
- "punycode": "^1.3.2",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "optional": true
- },
- "urlgrey": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.0.tgz",
- "integrity": "sha1-8GU1cED7NcOzEdTl3DZITZbb6gY=",
- "dev": true,
- "requires": {
- "tape": "2.3.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
- "dev": true
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
- "y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.1",
- "cliui": "^3.0.3",
- "decamelize": "^1.1.1",
- "os-locale": "^1.4.0",
- "string-width": "^1.0.1",
- "window-size": "^0.1.4",
- "y18n": "^3.2.0"
- }
- }
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package.json
deleted file mode 100644
index 6d6034d86..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "_from": "wrappy@1",
- "_id": "wrappy@1.0.2",
- "_inBundle": false,
- "_integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "_location": "/wrappy",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "wrappy@1",
- "name": "wrappy",
- "escapedName": "wrappy",
- "rawSpec": "1",
- "saveSpec": null,
- "fetchSpec": "1"
- },
- "_requiredBy": [
- "/once"
- ],
- "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
- "_spec": "wrappy@1",
- "_where": "/Users/kzantow/projects/syft/test/integration/test-fixtures/npm-lock/node_modules/once",
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "bugs": {
- "url": "https://github.com/npm/wrappy/issues"
- },
- "bundleDependencies": false,
- "dependencies": {},
- "deprecated": false,
- "description": "Callback wrapping utility",
- "devDependencies": {
- "tap": "^2.3.1"
- },
- "directories": {
- "test": "test"
- },
- "files": [
- "wrappy.js"
- ],
- "homepage": "https://github.com/npm/wrappy",
- "license": "ISC",
- "main": "wrappy.js",
- "name": "wrappy",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/wrappy.git"
- },
- "scripts": {
- "test": "tap --coverage test/*.js"
- },
- "version": "1.0.2"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/wrappy.js b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/wrappy.js
deleted file mode 100644
index bb7e7d6fc..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/node_modules/wrappy/wrappy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
-
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
-
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
-
- return wrapper
-
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package-lock.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package-lock.json
deleted file mode 100644
index f18505de8..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package-lock.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "npm-lock",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "collapse-white-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.0.0.tgz",
- "integrity": "sha512-eh9krktAIMDL0KHuN7WTBJ/0PMv8KUvfQRBkIlGmW61idRM2DJjgd1qXEPr4wyk2PimZZeNww3RVYo6CMvDGlg=="
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "insert-css": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz",
- "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- }
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package.json b/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package.json
deleted file mode 100644
index e13065b69..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/npm-lock/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "npm-lock",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "collapse-white-space": "^2.0.0",
- "insert-css": "^2.0.0"
- },
- "devDependencies": {
- "pump": "^3.0.0"
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/LICENSE
deleted file mode 100644
index b18aed692..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2018 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/bower.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/bower.json
deleted file mode 100644
index 390c6502f..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/bower.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "async",
- "main": "dist/async.js",
- "ignore": [
- "bower_components",
- "lib",
- "test",
- "node_modules",
- "perf",
- "support",
- "**/.*",
- "*.config.js",
- "*.json",
- "index.js",
- "Makefile"
- ]
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/package.json
deleted file mode 100644
index 2c729a808..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/async/package.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "3.2.3",
- "main": "dist/async.js",
- "author": "Caolan McMahon",
- "homepage": "https://caolan.github.io/async/",
- "repository": {
- "type": "git",
- "url": "https://github.com/caolan/async.git"
- },
- "bugs": {
- "url": "https://github.com/caolan/async/issues"
- },
- "keywords": [
- "async",
- "callback",
- "module",
- "utility"
- ],
- "devDependencies": {
- "babel-core": "^6.26.3",
- "babel-eslint": "^8.2.6",
- "babel-minify": "^0.5.0",
- "babel-plugin-add-module-exports": "^0.2.1",
- "babel-plugin-istanbul": "^5.1.4",
- "babel-plugin-syntax-async-generators": "^6.13.0",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-es2017": "^6.22.0",
- "babel-register": "^6.26.0",
- "babelify": "^8.0.0",
- "benchmark": "^2.1.1",
- "bluebird": "^3.4.6",
- "browserify": "^16.2.3",
- "chai": "^4.2.0",
- "cheerio": "^0.22.0",
- "coveralls": "^3.0.4",
- "es6-promise": "^2.3.0",
- "eslint": "^6.0.1",
- "eslint-plugin-prefer-arrow": "^1.1.5",
- "fs-extra": "^0.26.7",
- "jsdoc": "^3.6.2",
- "karma": "^4.1.0",
- "karma-browserify": "^5.3.0",
- "karma-edge-launcher": "^0.4.2",
- "karma-firefox-launcher": "^1.1.0",
- "karma-junit-reporter": "^1.2.0",
- "karma-mocha": "^1.2.0",
- "karma-mocha-reporter": "^2.2.0",
- "karma-safari-launcher": "^1.0.0",
- "mocha": "^6.1.4",
- "mocha-junit-reporter": "^1.18.0",
- "native-promise-only": "^0.8.0-a",
- "nyc": "^14.1.1",
- "rollup": "^0.63.4",
- "rollup-plugin-node-resolve": "^2.0.0",
- "rollup-plugin-npm": "^2.0.0",
- "rsvp": "^3.0.18",
- "semver": "^5.5.0",
- "yargs": "^11.0.0"
- },
- "scripts": {
- "coverage": "nyc npm run mocha-node-test -- --grep @nycinvalid --invert",
- "coveralls": "npm run coverage && nyc report --reporter=text-lcov | coveralls",
- "jsdoc": "jsdoc -c ./support/jsdoc/jsdoc.json && node support/jsdoc/jsdoc-fix-html.js",
- "lint": "eslint --fix lib/ test/ perf/memory.js perf/suites.js perf/benchmark.js support/build/ support/*.js karma.conf.js",
- "mocha-browser-test": "karma start",
- "mocha-node-test": "mocha",
- "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test",
- "test": "npm run lint && npm run mocha-node-test"
- },
- "license": "MIT",
- "nyc": {
- "exclude": [
- "test"
- ]
- },
- "module": "dist/async.mjs"
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/LICENSE.md b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/LICENSE.md
deleted file mode 100644
index e8e783803..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/LICENSE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 Oleksii Shevchenko (http://shevaroller.me)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/package.json
deleted file mode 100644
index 78b6c76b0..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/merge-objects/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "merge-objects",
- "version": "1.0.5",
- "description": "Merge two objects and concatenate arrays that are values of the same object key.",
- "main": "lib/merge-objects.js",
- "scripts": {
- "test": "node test/test.js"
- },
- "repository": {
- "type": "git",
- "url": "git@github.com:shevaroller/node-merge-objects.git"
- },
- "keywords": [
- "merge",
- "object",
- "extend",
- "concat",
- "array",
- "mixin"
- ],
- "author": "Oleksii Shevchenko (http://shevaroller.me)",
- "license": "MIT"
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/LICENSE
deleted file mode 100644
index 43ced45a3..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Denis Rul
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/package.json
deleted file mode 100644
index 9d67cf0f4..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/resize-observer-polyfill/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "name": "@4lolo/resize-observer-polyfill",
- "author": "Denis Rul ",
- "version": "1.5.2",
- "description": "A polyfill for the Resize Observer API",
- "main": "dist/ResizeObserver.js",
- "module": "dist/ResizeObserver.es.js",
- "scripts": {
- "build": "rollup -c && cpy src/index.js.flow dist --rename=ResizeObserver.js.flow",
- "test": "npm run test:lint && npm run test:spec",
- "test:ci": "npm run test:lint && npm run test:spec:sauce && npm run test:spec:node",
- "test:ci:pull": "npm run test:lint && karma start --browsers Firefox && npm run test:spec:node",
- "test:lint": "node ./node_modules/eslint/bin/eslint.js \"**/*.js\" --ignore-pattern \"/dist/\"",
- "test:spec": "karma start --browsers Chrome && npm run test:spec:node",
- "test:spec:sauce": "karma start --sauce=windows && karma start --sauce=linux && karma start --sauce=osx",
- "test:spec:node": "npm run build && node tests/node/index.js",
- "test:spec:custom": "karma start --no-browsers",
- "test:spec:native": "karma start --no-browsers --native"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/que-etc/resize-observer-polyfill.git"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/que-etc/resize-observer-polyfill/issues"
- },
- "types": "src/index.d.ts",
- "files": [
- "src/",
- "dist/"
- ],
- "keywords": [
- "ResizeObserver",
- "resize",
- "observer",
- "util",
- "client",
- "browser",
- "polyfill",
- "ponyfill"
- ],
- "homepage": "https://github.com/que-etc/resize-observer-polyfill",
- "devDependencies": {
- "babel-eslint": "10.0.1",
- "cpy-cli": "2.0.0",
- "eslint": "5.10.0",
- "jasmine": "2.8.0",
- "jasmine-core": "2.8.0",
- "karma": "3.1.3",
- "karma-chrome-launcher": "2.2.0",
- "karma-firefox-launcher": "1.1.0",
- "karma-jasmine": "1.1.2",
- "karma-jasmine-html-reporter": "0.2.2",
- "karma-rollup-preprocessor": "6.1.1",
- "karma-sauce-launcher": "1.2.0",
- "karma-sourcemap-loader": "0.3.7",
- "karma-spec-reporter": "0.0.32",
- "promise-polyfill": "8.1.0",
- "rollup": "0.67.4",
- "rollup-plugin-typescript": "1.0.0",
- "typescript": "3.2.2"
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/LICENSE
deleted file mode 100644
index d7e0e57ac..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/package.json
deleted file mode 100644
index 1c984c99b..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/node_modules/should-type/package.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "should-type",
- "version": "1.3.0",
- "description": "Simple module to get instance type. Like a bit more advanced version of typeof",
- "main": "cjs/should-type.js",
- "jsnext:main": "es6/should-type.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/shouldjs/type.git"
- },
- "keywords": [
- "should",
- "type"
- ],
- "files": [
- "cjs/*",
- "es6/*",
- "README.md",
- "LICENSE"
- ],
- "scripts": {
- "cjs": "rollup --format=cjs --output=cjs/should-type.js index.js",
- "es6": "rollup --format=es --output=es6/should-type.js index.js",
- "build": "npm run cjs && npm run es6",
- "prepublish": "npm run build"
- },
- "author": "Denis Bardadym ",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/shouldjs/type/issues"
- },
- "homepage": "https://github.com/shouldjs/type",
- "devDependencies": {
- "eslint": "^3.0.0",
- "eslint-config-shouldjs": "^1.0.2",
- "rollup": "^0.34.3"
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/package.json
deleted file mode 100644
index 694aad3c3..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "yarn-lock",
- "version": "1.0.0",
- "main": "index.js",
- "license": "MIT",
- "private": true,
- "workspaces": {
- "packages": [
- "packages/*"
- ]
- },
- "dependencies": {
- "async": "^3.2.3"
- },
- "devDependencies": {
- "merge-objects": "^1.0.5",
- "should-type": "https://github.com/shouldjs/type.git#1.3.0"
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/LICENSE b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/LICENSE
deleted file mode 100644
index 8f2969858..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2010-2014 Caolan McMahon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/bower.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/bower.json
deleted file mode 100644
index 18176881e..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/bower.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "0.9.2",
- "main": "lib/async.js",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/caolan/async.git"
- },
- "devDependencies": {
- "nodeunit": ">0.0.0",
- "uglify-js": "1.2.x",
- "nodelint": ">0.0.0",
- "lodash": ">=2.4.1"
- },
- "moduleType": [
- "amd",
- "globals",
- "node"
- ],
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ],
- "authors": [
- "Caolan McMahon"
- ]
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/component.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/component.json
deleted file mode 100644
index 5003a7c52..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/component.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "version": "0.9.2",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "license": "MIT",
- "repository": "caolan/async",
- "scripts": [
- "lib/async.js"
- ]
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/package.json
deleted file mode 100644
index 1424c76cb..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/node_modules/async/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "async",
- "description": "Higher-order functions and common patterns for asynchronous code",
- "main": "lib/async.js",
- "author": "Caolan McMahon",
- "version": "0.9.2",
- "keywords": [
- "async",
- "callback",
- "utility",
- "module"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/caolan/async.git"
- },
- "bugs": {
- "url": "https://github.com/caolan/async/issues"
- },
- "license": "MIT",
- "devDependencies": {
- "nodeunit": ">0.0.0",
- "uglify-js": "1.2.x",
- "nodelint": ">0.0.0",
- "lodash": ">=2.4.1"
- },
- "jam": {
- "main": "lib/async.js",
- "include": [
- "lib/async.js",
- "README.md",
- "LICENSE"
- ],
- "categories": [
- "Utilities"
- ]
- },
- "scripts": {
- "test": "nodeunit test/test-async.js"
- },
- "spm": {
- "main": "lib/async.js"
- },
- "volo": {
- "main": "lib/async.js",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
- }
-}
\ No newline at end of file
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/package.json b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/package.json
deleted file mode 100644
index 548be34b2..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/packages/nested-package/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "yarn-lock-nested-package",
- "version": "1.0.0",
- "main": "index.js",
- "license": "MIT",
- "dependencies": {
- "async": "0.9.2",
- "resize-observer-polyfill": "^1.5.1"
- }
-}
diff --git a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/yarn.lock b/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/yarn.lock
deleted file mode 100644
index 90845fa18..000000000
--- a/cmd/syft/internal/test/integration/test-fixtures/yarn-lock/yarn.lock
+++ /dev/null
@@ -1,28 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-async@0.9.2:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
- integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
-
-async@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
- integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
-
-merge-objects@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/merge-objects/-/merge-objects-1.0.5.tgz#ad923ff3910091acc1438f53eb75b8f37d862a86"
- integrity sha1-rZI/85EAkazBQ49T63W4832GKoY=
-
-resize-observer-polyfill@^1.5.1:
- name "resize-observer-polyfill"
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/@4lolo/resize-observer-polyfill/-/resize-observer-polyfill-1.5.2.tgz#58868fc7224506236b5550d0c68357f0a874b84b"
- integrity sha512-HY4JYLITsWBOdeqCF/x3q7Aa2PVl/BmfkPv4H/Qzplc4Lrn9cKmWz6jHyAREH9tFuD0xELjJVgX3JaEmdcXu3g==
-
-"should-type@https://github.com/shouldjs/type.git#1.3.0":
- version "1.3.0"
- resolved "https://github.com/shouldjs/type.git#31d26945cb3b4ad21d2308776e4442c461666390"
diff --git a/cmd/syft/internal/test/integration/utils_test.go b/cmd/syft/internal/test/integration/utils_test.go
deleted file mode 100644
index 4e1ffb209..000000000
--- a/cmd/syft/internal/test/integration/utils_test.go
+++ /dev/null
@@ -1,82 +0,0 @@
-package integration
-
-import (
- "context"
- "testing"
-
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/clio"
- "github.com/anchore/stereoscope/pkg/imagetest"
- "github.com/anchore/syft/cmd/syft/internal/options"
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-func catalogFixtureImage(t *testing.T, fixtureImageName string, scope source.Scope, catalogerSelection ...string) (sbom.SBOM, source.Source) {
- cfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{
- Name: "syft-tester",
- Version: "v0.99.0",
- }).WithCatalogerSelection(
- pkgcataloging.NewSelectionRequest().
- WithExpression(catalogerSelection...),
- )
- cfg.Search.Scope = scope
-
- return catalogFixtureImageWithConfig(t, fixtureImageName, cfg)
-}
-
-func catalogFixtureImageWithConfig(t *testing.T, fixtureImageName string, cfg *syft.CreateSBOMConfig) (sbom.SBOM, source.Source) {
- cfg.CatalogerSelection = cfg.CatalogerSelection.WithDefaults(pkgcataloging.ImageTag)
-
- // get the fixture image tar file
- tarPath := imagetest.GetFixtureImageTarPath(t, fixtureImageName)
-
- // get the source to build an SBOM against
- theSource, err := syft.GetSource(context.Background(), tarPath, syft.DefaultGetSourceConfig().WithSources("docker-archive"))
- require.NoError(t, err)
-
- t.Cleanup(func() {
- require.NoError(t, theSource.Close())
- })
-
- s, err := syft.CreateSBOM(context.Background(), theSource, cfg)
-
- require.NoError(t, err)
- require.NotNil(t, s)
-
- return *s, theSource
-}
-
-func catalogDirectory(t *testing.T, dir string, catalogerSelection ...string) (sbom.SBOM, source.Source) {
- cfg := options.DefaultCatalog().ToSBOMConfig(clio.Identification{
- Name: "syft-tester",
- Version: "v0.99.0",
- }).WithCatalogerSelection(
- pkgcataloging.NewSelectionRequest().
- WithExpression(catalogerSelection...),
- )
-
- return catalogDirectoryWithConfig(t, dir, cfg)
-}
-
-func catalogDirectoryWithConfig(t *testing.T, dir string, cfg *syft.CreateSBOMConfig) (sbom.SBOM, source.Source) {
- cfg.CatalogerSelection = cfg.CatalogerSelection.WithDefaults(pkgcataloging.DirectoryTag)
-
- // get the source to build an sbom against
- theSource, err := syft.GetSource(context.Background(), dir, syft.DefaultGetSourceConfig().WithSources("dir"))
- require.NoError(t, err)
- t.Cleanup(func() {
- require.NoError(t, theSource.Close())
- })
-
- // build the SBOM
- s, err := syft.CreateSBOM(context.Background(), theSource, cfg)
-
- require.NoError(t, err)
- require.NotNil(t, s)
-
- return *s, theSource
-}
diff --git a/cmd/syft/internal/ui/capture_test.go b/cmd/syft/internal/ui/capture_test.go
deleted file mode 100644
index da3175549..000000000
--- a/cmd/syft/internal/ui/capture_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package ui
-
-import (
- "bytes"
- "io"
- "os"
- "testing"
-
- "github.com/stretchr/testify/require"
-)
-
-func Test_capture(t *testing.T) {
- r, w, _ := os.Pipe()
- t.Logf("pipe1: %+v", w)
-
- buf := &bytes.Buffer{}
- buf2 := &bytes.Buffer{}
-
- go func() {
- // write to the main file (e.g. os.Stdout)
- _, _ = w.WriteString("write1")
-
- // capture the output to the provided buffer
- restoreInitial := capture(&w, buf, 1024)
- t.Logf("pipe2: %+v", w)
- _, _ = w.WriteString("write2")
-
- // capture output nested
- restoreFirstCapture := capture(&w, buf2, 1024)
- t.Logf("pipe3: %+v", w)
- _, _ = w.WriteString("write3")
-
- // discard file used to write the "write3"
- restoreFirstCapture()
-
- // restore should block until all output has been captured, so it's safe to read buf2 here
- require.Equal(t, "write3", buf2.String())
-
- // restore should be safe to call multiple times
- restoreFirstCapture()
- require.Equal(t, "write3", buf2.String())
-
- // write again to the initial buffer
- t.Logf("pipe2+: %+v", w)
- _, _ = w.WriteString("write2+")
-
- // restore the initial file (e.g. os.Stdout) and write more to it
- restoreInitial()
- t.Logf("pipe1+: %+v", w)
- _, _ = w.WriteString("write1+")
-
- // close the pipe to continue with the io.ReadAll, below
- _ = w.Close()
- }()
-
- got, err := io.ReadAll(r)
- require.NoError(t, err)
- require.Equal(t, "write1write1+", string(got))
-
- require.Equal(t, "write2write2+", buf.String())
-}
-
-func Test_captureBufSizes(t *testing.T) {
- _, w, _ := os.Pipe()
-
- buf := &bytes.Buffer{}
- restore := capture(&w, buf, 200)
-
- line := "line1\nline2\nline3"
-
- _, err := w.WriteString(line)
- require.NoError(t, err)
-
- restore()
- require.Equal(t, line, buf.String())
-
- buf.Reset()
- restore = capture(&w, buf, 2)
-
- _, err = w.WriteString(line)
- require.NoError(t, err)
-
- restore()
- require.Equal(t, line, buf.String())
-}
diff --git a/cmd/syft/internal/ui/event_writer_test.go b/cmd/syft/internal/ui/event_writer_test.go
deleted file mode 100644
index 159b35029..000000000
--- a/cmd/syft/internal/ui/event_writer_test.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package ui
-
-import (
- "bytes"
- "testing"
-
- "github.com/gkampitakis/go-snaps/snaps"
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-partybus"
-
- "github.com/anchore/syft/syft/event"
- "github.com/anchore/syft/syft/event/parsers"
-)
-
-func Test_writeEvents(t *testing.T) {
- tests := []struct {
- name string
- quiet bool
- events []partybus.Event
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "no events",
- },
- {
- name: "all events",
- events: []partybus.Event{
- {
- Type: event.CLINotification,
- Value: "\n\n\n\n",
- },
- {
- Type: event.CLINotification,
- Value: "",
- },
- {
- Type: event.CLIAppUpdateAvailable,
- Value: parsers.UpdateCheck{
- New: "v0.33.0",
- Current: "[not provided]",
- },
- },
- {
- Type: event.CLINotification,
- Value: "",
- },
- {
- Type: event.CLIReport,
- Value: "\n\n\n\n",
- },
- {
- Type: event.CLIReport,
- Value: "",
- },
- },
- },
- {
- name: "quiet only shows report",
- quiet: true,
- events: []partybus.Event{
-
- {
- Type: event.CLINotification,
- Value: "",
- },
- {
- Type: event.CLIAppUpdateAvailable,
- Value: parsers.UpdateCheck{
- New: "",
- Current: "",
- },
- },
- {
- Type: event.CLIReport,
- Value: "",
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- stdout := &bytes.Buffer{}
- stderr := &bytes.Buffer{}
-
- err := writeEvents(stdout, stderr, tt.quiet, tt.events...)
- tt.wantErr(t, err)
-
- t.Run("stdout", func(t *testing.T) {
- snaps.MatchSnapshot(t, stdout.String())
- })
-
- t.Run("stderr", func(t *testing.T) {
- snaps.MatchSnapshot(t, stderr.String())
- })
- })
- }
-}
diff --git a/cmd/syft/internal/ui/log_writer_test.go b/cmd/syft/internal/ui/log_writer_test.go
deleted file mode 100644
index 3ed48f8b5..000000000
--- a/cmd/syft/internal/ui/log_writer_test.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package ui
-
-import (
- "io"
- "testing"
-
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/go-logger"
- "github.com/anchore/syft/internal/log"
-)
-
-func Test_logWriter(t *testing.T) {
- w := newLogWriter()
-
- orig := log.Get()
- t.Cleanup(func() {
- log.Set(orig)
- })
-
- bl := &bufferLogger{}
- log.Set(bl)
-
- _, _ = w.Write([]byte("a\nvalue"))
-
- expected := []any{"[unexpected stdout] a", "[unexpected stdout] value"}
- require.Equal(t, expected, bl.values)
-
- bl.values = nil
- _, _ = w.Write([]byte("some"))
- _, _ = w.Write([]byte("thing"))
-
- expected = []any{"[unexpected stdout] some", "[unexpected stdout] thing"}
- require.Equal(t, expected, bl.values)
-}
-
-type bufferLogger struct{ values []any }
-
-func (l *bufferLogger) Tracef(_ string, _ ...interface{}) {}
-
-func (l *bufferLogger) Debugf(_ string, _ ...interface{}) {}
-
-func (l *bufferLogger) Infof(_ string, _ ...interface{}) {}
-
-func (l *bufferLogger) Warnf(_ string, _ ...interface{}) {}
-
-func (l *bufferLogger) Errorf(_ string, _ ...interface{}) {}
-
-func (l *bufferLogger) Trace(vals ...interface{}) {
- l.values = append(l.values, vals...)
-}
-
-func (l *bufferLogger) Debug(_ ...interface{}) {}
-
-func (l *bufferLogger) Info(_ ...interface{}) {}
-
-func (l *bufferLogger) Warn(vals ...interface{}) {
- l.values = append(l.values, vals...)
-}
-
-func (l *bufferLogger) Error(_ ...interface{}) {}
-
-func (l *bufferLogger) WithFields(_ ...interface{}) logger.MessageLogger { return l }
-
-func (l *bufferLogger) Nested(_ ...interface{}) logger.Logger { return l }
-
-func (l *bufferLogger) SetOutput(_ io.Writer) {}
-
-func (l *bufferLogger) GetOutput() io.Writer { return nil }
diff --git a/examples/README.md b/examples/README.md
deleted file mode 100644
index 8b6f1d45c..000000000
--- a/examples/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Syft API Examples
-
-This directory contains examples of how to use the Syft API.
-
-- `create_simple_sbom`: Create a simple SBOM from scratch
-- `create_custom_sbom`: Create an SBOM using as much custom configuration as possible, including a custom cataloger implementation
-- `decode_sbom`: Take an existing SBOM file (of arbitrary format) and decode it into a Syft SBOM object
-- `source_detection`: Shows how to detect what to catalog automatically from a user string (e.g. container image vs directory)
-- `source_from_image`: Construct a source from a only a container image
-
-You can run any of these examples from this directory with:
-
-```bash
-go run ./DIRECTORY_NAME
-```
diff --git a/examples/create_custom_sbom/alpine_configuration_cataloger.go b/examples/create_custom_sbom/alpine_configuration_cataloger.go
deleted file mode 100644
index 94f826e68..000000000
--- a/examples/create_custom_sbom/alpine_configuration_cataloger.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package main
-
-import (
- "context"
- "fmt"
- "io"
- "path"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
-)
-
-/*
- This is a contrived cataloger that attempts to capture useful APK files from the image as if it were a package.
- This isn't a real cataloger, but it is a good example of how to use API elements to create a custom cataloger.
-*/
-
-var _ pkg.Cataloger = (*alpineConfigurationCataloger)(nil)
-
-type alpineConfigurationCataloger struct {
-}
-
-func newAlpineConfigurationCataloger() pkg.Cataloger {
- return alpineConfigurationCataloger{}
-}
-
-func (m alpineConfigurationCataloger) Name() string {
- return "apk-configuration-cataloger"
-}
-
-func (m alpineConfigurationCataloger) Catalog(_ context.Context, resolver file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {
- version, versionLocations, err := getVersion(resolver)
- if err != nil {
- return nil, nil, fmt.Errorf("unable to get alpine version: %w", err)
- }
- if len(versionLocations) == 0 {
- // this doesn't mean we should stop cataloging, just that we don't have a version to use, thus no package to raise up
- return nil, nil, nil
- }
-
- metadata, metadataLocations, err := newAlpineConfiguration(resolver)
- if err != nil {
- return nil, nil, err
- }
-
- var locations []file.Location
- locations = append(locations, versionLocations...)
- locations = append(locations, metadataLocations...)
-
- p := newPackage(version, *metadata, locations...)
-
- return []pkg.Package{p}, nil, nil
-}
-
-func newPackage(version string, metadata AlpineConfiguration, locations ...file.Location) pkg.Package {
- return pkg.Package{
- Name: "alpine-configuration",
- Version: version,
- Locations: file.NewLocationSet(locations...),
- Type: pkg.Type("system-configuration"), // you can make up your own package type here or use an existing one
- Metadata: metadata,
- }
-}
-
-func newAlpineConfiguration(resolver file.Resolver) (*AlpineConfiguration, []file.Location, error) {
- var locations []file.Location
-
- keys, keyLocations, err := getAPKKeys(resolver)
- if err != nil {
- return nil, nil, err
- }
-
- locations = append(locations, keyLocations...)
-
- return &AlpineConfiguration{
- APKKeys: keys,
- }, locations, nil
-
-}
-
-func getVersion(resolver file.Resolver) (string, []file.Location, error) {
- locations, err := resolver.FilesByPath("/etc/alpine-release")
- if err != nil {
- return "", nil, fmt.Errorf("unable to get alpine version: %w", err)
- }
- if len(locations) == 0 {
- return "", nil, nil
- }
-
- reader, err := resolver.FileContentsByLocation(locations[0])
- if err != nil {
- return "", nil, fmt.Errorf("unable to read alpine version: %w", err)
- }
-
- version, err := io.ReadAll(reader)
- if err != nil {
- return "", nil, fmt.Errorf("unable to read alpine version: %w", err)
- }
-
- return string(version), locations, nil
-}
-
-func getAPKKeys(resolver file.Resolver) (map[string]string, []file.Location, error) {
- // name-to-content values
- keyContent := make(map[string]string)
-
- locations, err := resolver.FilesByGlob("/etc/apk/keys/*.rsa.pub")
- if err != nil {
- return nil, nil, fmt.Errorf("unable to get apk keys: %w", err)
- }
- for _, location := range locations {
- basename := path.Base(location.RealPath)
- reader, err := resolver.FileContentsByLocation(location)
- content, err := io.ReadAll(reader)
- if err != nil {
- return nil, nil, fmt.Errorf("unable to read apk key content at %s: %w", location.RealPath, err)
- }
- keyContent[basename] = string(content)
- }
- return keyContent, locations, nil
-}
-
-type AlpineConfiguration struct {
- APKKeys map[string]string `json:"apkKeys" yaml:"apkKeys"`
- // Add more data you want to capture as part of the package metadata here...
-}
diff --git a/examples/create_custom_sbom/main.go b/examples/create_custom_sbom/main.go
deleted file mode 100644
index aa51ffc0f..000000000
--- a/examples/create_custom_sbom/main.go
+++ /dev/null
@@ -1,128 +0,0 @@
-package main
-
-import (
- "context"
- "crypto"
- "fmt"
- "os"
-
- "gopkg.in/yaml.v3"
-
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/cataloging"
- "github.com/anchore/syft/syft/cataloging/filecataloging"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-const defaultImage = "alpine:3.19"
-
-func main() {
- // automagically get a source.Source for arbitrary string input
- src := getSource(imageReference())
-
- // will catalog the given source and return a SBOM keeping in mind several configurable options
- sbom := getSBOM(src)
-
- // show a simple package summary
- summarize(sbom)
-
- // show the alpine-configuration cataloger results
- showAlpineConfiguration(sbom)
-}
-
-func imageReference() string {
- // read an image string reference from the command line or use a default
- if len(os.Args) > 1 {
- return os.Args[1]
- }
- return defaultImage
-}
-
-func getSource(input string) source.Source {
- fmt.Println("detecting source type for input:", input, "...")
-
- src, err := syft.GetSource(context.Background(), input, nil)
-
- if err != nil {
- panic(err)
- }
-
- return src
-}
-
-func getSBOM(src source.Source) sbom.SBOM {
- fmt.Println("creating SBOM...")
-
- cfg := syft.DefaultCreateSBOMConfig().
- // run the catalogers in parallel (5 at a time concurrently max)
- WithParallelism(5).
- // bake a specific tool name and version into the SBOM
- WithTool("my-tool", "v1.0").
- // catalog all files with 3 digests
- WithFilesConfig(
- filecataloging.DefaultConfig().
- WithSelection(file.AllFilesSelection).
- WithHashers(
- crypto.MD5,
- crypto.SHA1,
- crypto.SHA256,
- ),
- ).
- // only use OS related catalogers that would have been used with the kind of
- // source type (container image or directory), but also add a specific python cataloger
- WithCatalogerSelection(
- pkgcataloging.NewSelectionRequest().
- WithSubSelections("os").
- WithAdditions("python-package-cataloger"),
- ).
- // which relationships to include
- WithRelationshipsConfig(
- cataloging.RelationshipsConfig{
- PackageFileOwnership: true,
- PackageFileOwnershipOverlap: true,
- ExcludeBinaryPackagesWithFileOwnershipOverlap: true,
- },
- ).
- // add your own cataloger to the mix
- WithCatalogers(
- pkgcataloging.NewAlwaysEnabledCatalogerReference(
- newAlpineConfigurationCataloger(),
- ),
- )
-
- s, err := syft.CreateSBOM(context.Background(), src, cfg)
- if err != nil {
- panic(err)
- }
-
- return *s
-}
-
-func summarize(s sbom.SBOM) {
- fmt.Printf("Cataloged %d packages:\n", s.Artifacts.Packages.PackageCount())
- for _, p := range s.Artifacts.Packages.Sorted() {
- fmt.Printf(" - %s@%s (%s)\n", p.Name, p.Version, p.Type)
- }
- fmt.Println()
-}
-
-func showAlpineConfiguration(s sbom.SBOM) {
- pkgs := s.Artifacts.Packages.PackagesByName("alpine-configuration")
- if len(pkgs) == 0 {
- fmt.Println("no alpine-configuration package found")
- return
- }
-
- p := pkgs[0]
-
- fmt.Printf("All 'alpine-configuration' packages: %s\n", p.Version)
- meta, err := yaml.Marshal(p.Metadata)
- if err != nil {
- panic(err)
- }
- fmt.Println(string(meta))
-
-}
diff --git a/examples/create_simple_sbom/main.go b/examples/create_simple_sbom/main.go
deleted file mode 100644
index 9116f0561..000000000
--- a/examples/create_simple_sbom/main.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package main
-
-import (
- "context"
- "fmt"
- "os"
-
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/format"
- "github.com/anchore/syft/syft/format/syftjson"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-const defaultImage = "alpine:3.19"
-
-func main() {
- // automagically get a source.Source for arbitrary string input
- src := getSource(imageReference())
-
- // catalog the given source and return a SBOM
- sbom := getSBOM(src)
-
- // take the SBOM object and encode it into the syft-json representation
- bytes := formatSBOM(sbom)
-
- // show the SBOM!
- fmt.Println(string(bytes))
-}
-
-func imageReference() string {
- // read an image string reference from the command line or use a default
- if len(os.Args) > 1 {
- return os.Args[1]
- }
- return defaultImage
-}
-
-func getSource(input string) source.Source {
- src, err := syft.GetSource(context.Background(), input, nil)
-
- if err != nil {
- panic(err)
- }
-
- return src
-}
-
-func getSBOM(src source.Source) sbom.SBOM {
- s, err := syft.CreateSBOM(context.Background(), src, nil)
- if err != nil {
- panic(err)
- }
-
- return *s
-}
-
-func formatSBOM(s sbom.SBOM) []byte {
- bytes, err := format.Encode(s, syftjson.NewFormatEncoder())
- if err != nil {
- panic(err)
- }
- return bytes
-}
diff --git a/examples/decode_sbom/alpine.syft.json b/examples/decode_sbom/alpine.syft.json
deleted file mode 100644
index 57327b7b2..000000000
--- a/examples/decode_sbom/alpine.syft.json
+++ /dev/null
@@ -1,4964 +0,0 @@
-{
- "artifacts": [
- {
- "id": "70a21b16f1a2cc6a",
- "name": "alpine-baselayout",
- "version": "3.2.0-r7",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-only",
- "spdxExpression": "GPL-2.0-only",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine:alpine-baselayout:3.2.0-r7:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine:alpine_baselayout:3.2.0-r7:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/alpine-baselayout@3.2.0-r7?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "alpine-baselayout",
- "originPackage": "alpine-baselayout",
- "maintainer": "Natanael Copa ",
- "version": "3.2.0-r7",
- "architecture": "aarch64",
- "url": "https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout",
- "description": "Alpine base dir structure and init scripts",
- "size": 19906,
- "installedSize": 401408,
- "pullDependencies": [
- "/bin/sh",
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "cmd:mkmntdirs"
- ],
- "pullChecksum": "Q11bDnATFCrlCl73j/624EDFiVusQ=",
- "gitCommitOfApkPort": "c3ce4065bd8a69d20ad392d4cf006ed652c3f1a7",
- "files": [
- {
- "path": "/dev"
- },
- {
- "path": "/dev/pts"
- },
- {
- "path": "/dev/shm"
- },
- {
- "path": "/etc"
- },
- {
- "path": "/etc/fstab",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q11Q7hNe8QpDS531guqCdrXBzoA/o="
- }
- },
- {
- "path": "/etc/group",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1oJ16xWudgKOrXIEquEDzlF2Lsm4="
- }
- },
- {
- "path": "/etc/hostname",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q16nVwYVXP/tChvUPdukVD2ifXOmc="
- }
- },
- {
- "path": "/etc/hosts",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1BD6zJKZTRWyqGnPi4tSfd3krsMU="
- }
- },
- {
- "path": "/etc/inittab",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1TsthbhW7QzWRe1E/NKwTOuD4pHc="
- }
- },
- {
- "path": "/etc/modules",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1toogjUipHGcMgECgPJX64SwUT1M="
- }
- },
- {
- "path": "/etc/motd",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1XmduVVNURHQ27TvYp1Lr5TMtFcA="
- }
- },
- {
- "path": "/etc/mtab",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1kiljhXXH1LlQroHsEJIkPZg2eiw="
- }
- },
- {
- "path": "/etc/passwd",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1TchuuLUfur0izvfZQZxgN/LJhB8="
- }
- },
- {
- "path": "/etc/profile",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1KpFb8kl5LvwXWlY3e58FNsjrI34="
- }
- },
- {
- "path": "/etc/protocols",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q13FqXUnvuOpMDrH/6rehxuYAEE34="
- }
- },
- {
- "path": "/etc/services",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1C6HJNgQvLWqt5VY+n7MZJ1rsDuY="
- }
- },
- {
- "path": "/etc/shadow",
- "ownerUid": "0",
- "ownerGid": "42",
- "permissions": "640",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1ltrPIAW2zHeDiajsex2Bdmq3uqA="
- }
- },
- {
- "path": "/etc/shells",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1ojm2YdpCJ6B/apGDaZ/Sdb2xJkA="
- }
- },
- {
- "path": "/etc/sysctl.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q14upz3tfnNxZkIEsUhWn7Xoiw96g="
- }
- },
- {
- "path": "/etc/apk"
- },
- {
- "path": "/etc/conf.d"
- },
- {
- "path": "/etc/crontabs"
- },
- {
- "path": "/etc/crontabs/root",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "600",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1vfk1apUWI4yLJGhhNRd0kJixfvY="
- }
- },
- {
- "path": "/etc/init.d"
- },
- {
- "path": "/etc/modprobe.d"
- },
- {
- "path": "/etc/modprobe.d/aliases.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1WUbh6TBYNVK7e4Y+uUvLs/7viqk="
- }
- },
- {
- "path": "/etc/modprobe.d/blacklist.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1xxYGU6S6TLQvb7ervPrWWwAWqMg="
- }
- },
- {
- "path": "/etc/modprobe.d/i386.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1pnay/njn6ol9cCssL7KiZZ8etlc="
- }
- },
- {
- "path": "/etc/modprobe.d/kms.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1ynbLn3GYDpvajba/ldp1niayeog="
- }
- },
- {
- "path": "/etc/modules-load.d"
- },
- {
- "path": "/etc/network"
- },
- {
- "path": "/etc/network/if-down.d"
- },
- {
- "path": "/etc/network/if-post-down.d"
- },
- {
- "path": "/etc/network/if-pre-up.d"
- },
- {
- "path": "/etc/network/if-up.d"
- },
- {
- "path": "/etc/opt"
- },
- {
- "path": "/etc/periodic"
- },
- {
- "path": "/etc/periodic/15min"
- },
- {
- "path": "/etc/periodic/daily"
- },
- {
- "path": "/etc/periodic/hourly"
- },
- {
- "path": "/etc/periodic/monthly"
- },
- {
- "path": "/etc/periodic/weekly"
- },
- {
- "path": "/etc/profile.d"
- },
- {
- "path": "/etc/profile.d/color_prompt",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q10wL23GuSCVfumMRgakabUI6EsSk="
- }
- },
- {
- "path": "/etc/profile.d/locale.sh",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1S8j+WW71mWxfVy8ythqU7HUVoBw="
- }
- },
- {
- "path": "/etc/sysctl.d"
- },
- {
- "path": "/home"
- },
- {
- "path": "/lib"
- },
- {
- "path": "/lib/firmware"
- },
- {
- "path": "/lib/mdev"
- },
- {
- "path": "/lib/modules-load.d"
- },
- {
- "path": "/lib/sysctl.d"
- },
- {
- "path": "/lib/sysctl.d/00-alpine.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1HpElzW1xEgmKfERtTy7oommnq6c="
- }
- },
- {
- "path": "/media"
- },
- {
- "path": "/media/cdrom"
- },
- {
- "path": "/media/floppy"
- },
- {
- "path": "/media/usb"
- },
- {
- "path": "/mnt"
- },
- {
- "path": "/opt"
- },
- {
- "path": "/proc"
- },
- {
- "path": "/root",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "700"
- },
- {
- "path": "/run"
- },
- {
- "path": "/sbin"
- },
- {
- "path": "/sbin/mkmntdirs",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1zmX3BDBctenbCV8dx/3QLz2bdRA="
- }
- },
- {
- "path": "/srv"
- },
- {
- "path": "/sys"
- },
- {
- "path": "/tmp",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "1777"
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/lib"
- },
- {
- "path": "/usr/lib/modules-load.d"
- },
- {
- "path": "/usr/local"
- },
- {
- "path": "/usr/local/bin"
- },
- {
- "path": "/usr/local/lib"
- },
- {
- "path": "/usr/local/share"
- },
- {
- "path": "/usr/sbin"
- },
- {
- "path": "/usr/share"
- },
- {
- "path": "/usr/share/man"
- },
- {
- "path": "/usr/share/misc"
- },
- {
- "path": "/var"
- },
- {
- "path": "/var/run",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q11/SNZz/8cK2dSKK+cJpVrZIuF4Q="
- }
- },
- {
- "path": "/var/cache"
- },
- {
- "path": "/var/cache/misc"
- },
- {
- "path": "/var/empty",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "555"
- },
- {
- "path": "/var/lib"
- },
- {
- "path": "/var/lib/misc"
- },
- {
- "path": "/var/local"
- },
- {
- "path": "/var/lock"
- },
- {
- "path": "/var/lock/subsys"
- },
- {
- "path": "/var/log"
- },
- {
- "path": "/var/mail"
- },
- {
- "path": "/var/opt"
- },
- {
- "path": "/var/spool"
- },
- {
- "path": "/var/spool/mail",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1dzbdazYZA2nTzSIG3YyNw7d4Juc="
- }
- },
- {
- "path": "/var/spool/cron"
- },
- {
- "path": "/var/spool/cron/crontabs",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1OFZt+ZMp7j0Gny0rqSKuWJyqYmA="
- }
- },
- {
- "path": "/var/tmp",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "1777"
- }
- ]
- }
- },
- {
- "id": "300e781a409ed72e",
- "name": "alpine-keys",
- "version": "2.4-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "MIT",
- "spdxExpression": "MIT",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:alpine-keys:alpine-keys:2.4-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine-keys:alpine_keys:2.4-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine_keys:alpine-keys:2.4-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine_keys:alpine_keys:2.4-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine:alpine-keys:2.4-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:alpine:alpine_keys:2.4-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/alpine-keys@2.4-r0?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "alpine-keys",
- "originPackage": "alpine-keys",
- "maintainer": "Natanael Copa ",
- "version": "2.4-r0",
- "architecture": "aarch64",
- "url": "https://alpinelinux.org",
- "description": "Public keys for Alpine Linux packages",
- "size": 13692,
- "installedSize": 159744,
- "pullDependencies": [],
- "provides": [],
- "pullChecksum": "Q1NfxIKYE+5VU69ul2zrXwNHhvSQg=",
- "gitCommitOfApkPort": "ad113d7b2c64187bba3c3e1f71c2774a3246800e",
- "files": [
- {
- "path": "/etc"
- },
- {
- "path": "/etc/apk"
- },
- {
- "path": "/etc/apk/keys"
- },
- {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1BTqS+H/UUyhQuzHwiBl47+BTKuU="
- }
- },
- {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Oaxdcsa6AYoPdLi0U4lO3J2we18="
- }
- },
- {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1I9Dy6hryacL2YWXg+KlE6WvwEd4="
- }
- },
- {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ="
- }
- },
- {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1V/a5P9pKRJb6tihE3e8O6xaPgLU="
- }
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/share"
- },
- {
- "path": "/usr/share/apk"
- },
- {
- "path": "/usr/share/apk/keys"
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1OvCFSO94z97c80mIDCxqGkh2Og4="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1v7YWZYzAWoclaLDI45jEguI7YN0="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1BTqS+H/UUyhQuzHwiBl47+BTKuU="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1NnGuDsdQOx4ZNYfB3N97eLyGPkI="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Oaxdcsa6AYoPdLi0U4lO3J2we18="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1yPq+su65ksNox3uXB+DR7P18+QU="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1MpZDNX0LeLHvSOwVUyXiXx11NN0="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1glCQ/eJbvA5xqcswdjFrWv5Fnk0="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1XUdDEoNTtjlvrS+iunk6ziFgIpU="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1lZlTESNrelWTNkL/oQzmAU8a99A="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1WNW6Sy87HpJ3IdemQy8pju33Kms="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1I9Dy6hryacL2YWXg+KlE6WvwEd4="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1NSnsgmcMbU4g7j5JaNs0tVHpHVA="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1VaMBBk4Rxv6boPLKF+I085Q8y2E="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q13hJBMHAUquPbp5jpAPFjQI2Y1vQ="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1V/a5P9pKRJb6tihE3e8O6xaPgLU="
- }
- },
- {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q13wLJrcKQajql5a1p9Q45U+ZXENA="
- }
- },
- {
- "path": "/usr/share/apk/keys/aarch64"
- },
- {
- "path": "/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q17j9nWJkQ+wfIuVQzIFrmFZ7fSOc="
- }
- },
- {
- "path": "/usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1snr+Q1UbfHyCr/cmmtVvMIS7SGs="
- }
- },
- {
- "path": "/usr/share/apk/keys/armhf"
- },
- {
- "path": "/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg="
- }
- },
- {
- "path": "/usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1bC+AdQ0qWBTmefXiI0PvmYOJoVQ="
- }
- },
- {
- "path": "/usr/share/apk/keys/armv7"
- },
- {
- "path": "/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1U9QtsdN+rYZ9Zh76EfXy00JZHMg="
- }
- },
- {
- "path": "/usr/share/apk/keys/armv7/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1xbIVu7ScwqGHxXGwI22aSe5OdUY="
- }
- },
- {
- "path": "/usr/share/apk/keys/mips64"
- },
- {
- "path": "/usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1hCZdFx+LvzbLtPs753je78gEEBQ="
- }
- },
- {
- "path": "/usr/share/apk/keys/ppc64le"
- },
- {
- "path": "/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1t21dhCLbTJmAHXSCeOMq/2vfSgo="
- }
- },
- {
- "path": "/usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1PS9zNIPJanC8qcsc5qarEWqhV5Q="
- }
- },
- {
- "path": "/usr/share/apk/keys/riscv64"
- },
- {
- "path": "/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1NVPbZavaXpsItFwQYDWbpor7yYE="
- }
- },
- {
- "path": "/usr/share/apk/keys/riscv64/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1U6tfuKRy5J8C6iaKPMZaT/e8tbA="
- }
- },
- {
- "path": "/usr/share/apk/keys/s390x"
- },
- {
- "path": "/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1sjbV2r2w0Ih2vwdzC4Jq6UI7cMQ="
- }
- },
- {
- "path": "/usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1l09xa7RnbOIC1dI9FqbaCfS/GXY="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86"
- },
- {
- "path": "/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Ii51i7Nrc4uft14HhqugaUqdH64="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Y49eVxhpvftbQ3yAdvlLfcrPLTU="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1HjdvcVkpBZzr1aSe3p7oQfAtm/E="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86_64"
- },
- {
- "path": "/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Ii51i7Nrc4uft14HhqugaUqdH64="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1AUFY+fwSBTcrYetjT7NHvafrSQc="
- }
- },
- {
- "path": "/usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1qKA23VzMUDle+Dqnrr5Kz+Xvty4="
- }
- }
- ]
- }
- },
- {
- "id": "87076443f088ac71",
- "name": "apk-tools",
- "version": "2.10.8-r1",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-only",
- "spdxExpression": "GPL-2.0-only",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:apk-tools:apk-tools:2.10.8-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:apk-tools:apk_tools:2.10.8-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:apk_tools:apk-tools:2.10.8-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:apk_tools:apk_tools:2.10.8-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:apk:apk-tools:2.10.8-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:apk:apk_tools:2.10.8-r1:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/apk-tools@2.10.8-r1?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "apk-tools",
- "originPackage": "apk-tools",
- "maintainer": "Natanael Copa ",
- "version": "2.10.8-r1",
- "architecture": "aarch64",
- "url": "https://gitlab.alpinelinux.org/alpine/apk-tools",
- "description": "Alpine Package Keeper - package manager for alpine",
- "size": 106330,
- "installedSize": 274432,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1",
- "so:libcrypto.so.1.1",
- "so:libssl.so.1.1",
- "so:libz.so.1"
- ],
- "provides": [
- "cmd:apk"
- ],
- "pullChecksum": "Q1NJwrNBaATecXdHtXo3mplM1oJow=",
- "gitCommitOfApkPort": "6a528d0bdbd1dc3aac4c1ec1f6c841765bc6ae75",
- "files": [
- {
- "path": "/etc"
- },
- {
- "path": "/etc/apk"
- },
- {
- "path": "/etc/apk/keys"
- },
- {
- "path": "/etc/apk/protected_paths.d"
- },
- {
- "path": "/sbin"
- },
- {
- "path": "/sbin/apk",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1QIkQB4hy0Bq5y7oJ9pUYkoNhgDw="
- }
- },
- {
- "path": "/var"
- },
- {
- "path": "/var/cache"
- },
- {
- "path": "/var/cache/misc"
- },
- {
- "path": "/var/lib"
- },
- {
- "path": "/var/lib/apk"
- }
- ]
- }
- },
- {
- "id": "db9331b6a3a9d6f7",
- "name": "busybox",
- "version": "1.31.1-r22",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-only",
- "spdxExpression": "GPL-2.0-only",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:busybox:busybox:1.31.1-r22:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/busybox@1.31.1-r22?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "busybox",
- "originPackage": "busybox",
- "maintainer": "Natanael Copa ",
- "version": "1.31.1-r22",
- "architecture": "aarch64",
- "url": "https://busybox.net/",
- "description": "Size optimized toolbox of many common UNIX utilities",
- "size": 517882,
- "installedSize": 1007616,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "/bin/sh",
- "cmd:busybox",
- "cmd:sh"
- ],
- "pullChecksum": "Q1ElJNcYpfArndKCXUEFkc6EMKJx8=",
- "gitCommitOfApkPort": "41c9e389fd1ebce7fc2e723a9074fa7f2a00e11a",
- "files": [
- {
- "path": "/bin"
- },
- {
- "path": "/bin/busybox",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1MLz73DQ9PwDwx4wY1G7S/AUtj4g="
- }
- },
- {
- "path": "/bin/sh",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1pcfTfDNEbNKQc2s1tia7da05M8Q="
- }
- },
- {
- "path": "/etc"
- },
- {
- "path": "/etc/securetty",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1RpeOldjaFVFDbjnK5fzpLGtxunM="
- }
- },
- {
- "path": "/etc/udhcpd.conf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1UAiPZcDIW1ClRzobfggcCQ77V28="
- }
- },
- {
- "path": "/etc/logrotate.d"
- },
- {
- "path": "/etc/logrotate.d/acpid",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1TylyCINVmnS+A/Tead4vZhE7Bks="
- }
- },
- {
- "path": "/etc/network"
- },
- {
- "path": "/etc/network/if-down.d"
- },
- {
- "path": "/etc/network/if-post-down.d"
- },
- {
- "path": "/etc/network/if-post-up.d"
- },
- {
- "path": "/etc/network/if-pre-down.d"
- },
- {
- "path": "/etc/network/if-pre-up.d"
- },
- {
- "path": "/etc/network/if-up.d"
- },
- {
- "path": "/etc/network/if-up.d/dad",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "775",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1hlxd3qExrihH8bYxDQ3i7TsM/44="
- }
- },
- {
- "path": "/sbin"
- },
- {
- "path": "/tmp",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "1777"
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/sbin"
- },
- {
- "path": "/usr/share"
- },
- {
- "path": "/usr/share/udhcpc"
- },
- {
- "path": "/usr/share/udhcpc/default.script",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1N2KRDz/R6RqKhGqujQ4Y6EokMXY="
- }
- },
- {
- "path": "/var"
- },
- {
- "path": "/var/cache"
- },
- {
- "path": "/var/cache/misc"
- },
- {
- "path": "/var/lib"
- },
- {
- "path": "/var/lib/udhcpd"
- }
- ]
- }
- },
- {
- "id": "49852edd7b8e27bc",
- "name": "ca-certificates-bundle",
- "version": "20211220-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-or-later",
- "spdxExpression": "GPL-2.0-or-later",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- },
- {
- "value": "MPL-2.0",
- "spdxExpression": "MPL-2.0",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca-certificates:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca-certificates:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca_certificates:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca_certificates:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:mozilla:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:mozilla:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca:ca-certificates-bundle:20211220-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:ca:ca_certificates_bundle:20211220-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/ca-certificates-bundle@20211220-r0?arch=aarch64&upstream=ca-certificates&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "ca-certificates-bundle",
- "originPackage": "ca-certificates",
- "maintainer": "Natanael Copa ",
- "version": "20211220-r0",
- "architecture": "aarch64",
- "url": "https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/",
- "description": "Pre generated bundle of Mozilla certificates",
- "size": 119492,
- "installedSize": 221184,
- "pullDependencies": [],
- "provides": [
- "ca-certificates-cacert=20211220-r0"
- ],
- "pullChecksum": "Q1gTd1q6+fUJ5dWxizEjOFrYOkJAs=",
- "gitCommitOfApkPort": "ff8801d22feefbb59c634f4e5bd3763869025a9f",
- "files": [
- {
- "path": "/etc"
- },
- {
- "path": "/etc/ssl"
- },
- {
- "path": "/etc/ssl/cert.pem",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Nj6gTBdkZpTFW/obJGdpfvK0StA="
- }
- },
- {
- "path": "/etc/ssl/certs"
- },
- {
- "path": "/etc/ssl/certs/ca-certificates.crt",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1m2cJofoNZtCCK41yvjTgX4K7dvs="
- }
- }
- ]
- }
- },
- {
- "id": "da2d83f64297fd63",
- "name": "libc-utils",
- "version": "0.7.2-r3",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "BSD-2-Clause AND BSD-3-Clause",
- "spdxExpression": "BSD-2-Clause AND BSD-3-Clause",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:libc-utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*",
- "cpe:2.3:a:libc-utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*",
- "cpe:2.3:a:libc_utils:libc-utils:0.7.2-r3:*:*:*:*:*:*:*",
- "cpe:2.3:a:libc_utils:libc_utils:0.7.2-r3:*:*:*:*:*:*:*",
- "cpe:2.3:a:libc:libc-utils:0.7.2-r3:*:*:*:*:*:*:*",
- "cpe:2.3:a:libc:libc_utils:0.7.2-r3:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/libc-utils@0.7.2-r3?arch=aarch64&upstream=libc-dev&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "libc-utils",
- "originPackage": "libc-dev",
- "maintainer": "Natanael Copa ",
- "version": "0.7.2-r3",
- "architecture": "aarch64",
- "url": "https://alpinelinux.org",
- "description": "Meta package to pull in correct libc",
- "size": 1225,
- "installedSize": 4096,
- "pullDependencies": [
- "musl-utils"
- ],
- "provides": [],
- "pullChecksum": "Q17TxuYvbVV3Bx3QnFnmFDKT6RtBk=",
- "gitCommitOfApkPort": "60424133be2e79bbfeff3d58147a22886f817ce2",
- "files": []
- }
- },
- {
- "id": "3534729b6cc222b7",
- "name": "libcrypto1.1",
- "version": "1.1.1n-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "OpenSSL",
- "spdxExpression": "OpenSSL",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:libcrypto1.1:libcrypto1.1:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libcrypto1.1:libcrypto:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libcrypto:libcrypto1.1:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libcrypto:libcrypto:1.1.1n-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/libcrypto1.1@1.1.1n-r0?arch=aarch64&upstream=openssl&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "libcrypto1.1",
- "originPackage": "openssl",
- "maintainer": "Timo Teras ",
- "version": "1.1.1n-r0",
- "architecture": "aarch64",
- "url": "https://www.openssl.org/",
- "description": "Crypto library from openssl",
- "size": 1100482,
- "installedSize": 2469888,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "so:libcrypto.so.1.1=1.1"
- ],
- "pullChecksum": "Q1Y2uwiZ4pMJ+aOtwNwUkxMEAKmkA=",
- "gitCommitOfApkPort": "b759455d39ebc9606b4b980416c55aa87303ba5f",
- "files": [
- {
- "path": "/etc"
- },
- {
- "path": "/etc/ssl"
- },
- {
- "path": "/etc/ssl/ct_log_list.cnf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1olh8TpdAi2QnTl4FK3TjdUiSwTo="
- }
- },
- {
- "path": "/etc/ssl/ct_log_list.cnf.dist",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1olh8TpdAi2QnTl4FK3TjdUiSwTo="
- }
- },
- {
- "path": "/etc/ssl/openssl.cnf",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA="
- }
- },
- {
- "path": "/etc/ssl/openssl.cnf.dist",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1wGuxVEOK9iGLj1i8D3BSBnT7MJA="
- }
- },
- {
- "path": "/etc/ssl/certs"
- },
- {
- "path": "/etc/ssl/misc"
- },
- {
- "path": "/etc/ssl/misc/CA.pl",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1IACevKhK93GYBHp96Ie26jgZ17s="
- }
- },
- {
- "path": "/etc/ssl/misc/tsget",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q13NVgfr7dQUuGYxur0tNalH6EIjU="
- }
- },
- {
- "path": "/etc/ssl/misc/tsget.pl",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1dIIouz/IZaWh9ah1d+bWyFrIyFI="
- }
- },
- {
- "path": "/etc/ssl/private"
- },
- {
- "path": "/lib"
- },
- {
- "path": "/lib/libcrypto.so.1.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1jMWuykHLp49JqfXNb4ylcrjkbaU="
- }
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/lib"
- },
- {
- "path": "/usr/lib/libcrypto.so.1.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1T2si+c7ts7sgDxQYve4B3i1Dgo0="
- }
- },
- {
- "path": "/usr/lib/engines-1.1"
- },
- {
- "path": "/usr/lib/engines-1.1/afalg.so",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1oIagSDEM9En4g3EVj+OP1oPl5lU="
- }
- },
- {
- "path": "/usr/lib/engines-1.1/capi.so",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1tzhXBEwKCXeBdk60P8vAgKPgPEE="
- }
- },
- {
- "path": "/usr/lib/engines-1.1/padlock.so",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Z7bW7J1miX5iqN6Ofy6zgmxvwxc="
- }
- }
- ]
- }
- },
- {
- "id": "d0400558bea1fa0e",
- "name": "libssl1.1",
- "version": "1.1.1n-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "OpenSSL",
- "spdxExpression": "OpenSSL",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:libssl1.1:libssl1.1:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libssl1.1:libssl:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libssl:libssl1.1:1.1.1n-r0:*:*:*:*:*:*:*",
- "cpe:2.3:a:libssl:libssl:1.1.1n-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/libssl1.1@1.1.1n-r0?arch=aarch64&upstream=openssl&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "libssl1.1",
- "originPackage": "openssl",
- "maintainer": "Timo Teras ",
- "version": "1.1.1n-r0",
- "architecture": "aarch64",
- "url": "https://www.openssl.org/",
- "description": "SSL shared libraries",
- "size": 209147,
- "installedSize": 536576,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1",
- "so:libcrypto.so.1.1"
- ],
- "provides": [
- "so:libssl.so.1.1=1.1"
- ],
- "pullChecksum": "Q10FSdADnxG9qZTsIGQ39aaq32sjA=",
- "gitCommitOfApkPort": "b759455d39ebc9606b4b980416c55aa87303ba5f",
- "files": [
- {
- "path": "/lib"
- },
- {
- "path": "/lib/libssl.so.1.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q15R6WogvhTyQIh4ujf2m3Hi3igMw="
- }
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/lib"
- },
- {
- "path": "/usr/lib/libssl.so.1.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q18j35pe3yp6HOgMih1wlGP1/mm2c="
- }
- }
- ]
- }
- },
- {
- "id": "4dd349e42df17a96",
- "name": "libtls-standalone",
- "version": "2.9.1-r1",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "ISC",
- "spdxExpression": "ISC",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:libtls-standalone:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:libtls-standalone:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:libtls_standalone:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:libtls_standalone:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:libtls:libtls-standalone:2.9.1-r1:*:*:*:*:*:*:*",
- "cpe:2.3:a:libtls:libtls_standalone:2.9.1-r1:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/libtls-standalone@2.9.1-r1?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "libtls-standalone",
- "originPackage": "libtls-standalone",
- "maintainer": "",
- "version": "2.9.1-r1",
- "architecture": "aarch64",
- "url": "https://www.libressl.org/",
- "description": "libtls extricated from libressl sources",
- "size": 31457,
- "installedSize": 110592,
- "pullDependencies": [
- "ca-certificates-bundle",
- "so:libc.musl-aarch64.so.1",
- "so:libcrypto.so.1.1",
- "so:libssl.so.1.1"
- ],
- "provides": [
- "so:libtls-standalone.so.1=1.0.0"
- ],
- "pullChecksum": "Q1DUhwBWiB9vjN4qWbvbfL6gagsPo=",
- "gitCommitOfApkPort": "7ebfa23b6119a24ca9b9375bdc55373259192da1",
- "files": [
- {
- "path": "/usr"
- },
- {
- "path": "/usr/lib"
- },
- {
- "path": "/usr/lib/libtls-standalone.so.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1MePJJ8Ajcuvc5x+6vlF3ygJoZYw="
- }
- },
- {
- "path": "/usr/lib/libtls-standalone.so.1.0.0",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1m2L9fYCclhgYL+t0i/aO/uZ5Hoc="
- }
- }
- ]
- }
- },
- {
- "id": "761f5684fa0274c6",
- "name": "musl",
- "version": "1.1.24-r10",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "MIT",
- "spdxExpression": "MIT",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:musl-libc:musl:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl_libc:musl:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl:musl:1.1.24-r10:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/musl@1.1.24-r10?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "musl",
- "originPackage": "musl",
- "maintainer": "Timo TerƤs ",
- "version": "1.1.24-r10",
- "architecture": "aarch64",
- "url": "https://musl.libc.org/",
- "description": "the musl c library (libc) implementation",
- "size": 383126,
- "installedSize": 638976,
- "pullDependencies": [],
- "provides": [
- "so:libc.musl-aarch64.so.1=1"
- ],
- "pullChecksum": "Q12uzTrvht/xFcFxMtQUnMCMp/Q7U=",
- "gitCommitOfApkPort": "908046ad5f96c4c1df5541ff4b0251767e110c85",
- "files": [
- {
- "path": "/lib"
- },
- {
- "path": "/lib/ld-musl-aarch64.so.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1OjfEikBQOAxRpOpB65rFxXrJSBY="
- }
- },
- {
- "path": "/lib/libc.musl-aarch64.so.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q14RpiCEfZIqcg1XDcVqp8QEpc9ks="
- }
- }
- ]
- }
- },
- {
- "id": "618e6d5faa1432fe",
- "name": "musl-utils",
- "version": "1.1.24-r10",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "BSD",
- "spdxExpression": "",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- },
- {
- "value": "GPL2+",
- "spdxExpression": "GPL-2.0-or-later",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- },
- {
- "value": "MIT",
- "spdxExpression": "MIT",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:musl-utils:musl-utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl-utils:musl_utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl_utils:musl-utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl_utils:musl_utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl-libc:musl-utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl-libc:musl_utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl:musl-utils:1.1.24-r10:*:*:*:*:*:*:*",
- "cpe:2.3:a:musl:musl_utils:1.1.24-r10:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/musl-utils@1.1.24-r10?arch=aarch64&upstream=musl&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "musl-utils",
- "originPackage": "musl",
- "maintainer": "Timo TerƤs ",
- "version": "1.1.24-r10",
- "architecture": "aarch64",
- "url": "https://musl.libc.org/",
- "description": "the musl c library (libc) implementation",
- "size": 37550,
- "installedSize": 139264,
- "pullDependencies": [
- "scanelf",
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "cmd:getconf",
- "cmd:getent",
- "cmd:iconv",
- "cmd:ldconfig",
- "cmd:ldd"
- ],
- "pullChecksum": "Q1anVvYA5k/ok52UU/FaIWoK2sYf8=",
- "gitCommitOfApkPort": "908046ad5f96c4c1df5541ff4b0251767e110c85",
- "files": [
- {
- "path": "/sbin"
- },
- {
- "path": "/sbin/ldconfig",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1Kja2+POZKxEkUOZqwSjC6kmaED4="
- }
- },
- {
- "path": "/usr"
- },
- {
- "path": "/usr/bin"
- },
- {
- "path": "/usr/bin/getconf",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1kdlRltC4b4df6xvZ4XtVw6LPnk4="
- }
- },
- {
- "path": "/usr/bin/getent",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1l8d/wLfUmI/BWCMfD6L0Vfczr+g="
- }
- },
- {
- "path": "/usr/bin/iconv",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1YmPm4OKk7cY+cKGyugmFI9cDUAo="
- }
- },
- {
- "path": "/usr/bin/ldd",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1r+KYty/HCLl4p4dvPt8kCb1mhB0="
- }
- }
- ]
- }
- },
- {
- "id": "6c34a9b817d73d7b",
- "name": "scanelf",
- "version": "1.2.6-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-only",
- "spdxExpression": "GPL-2.0-only",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:scanelf:scanelf:1.2.6-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/scanelf@1.2.6-r0?arch=aarch64&upstream=pax-utils&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "scanelf",
- "originPackage": "pax-utils",
- "maintainer": "Natanael Copa ",
- "version": "1.2.6-r0",
- "architecture": "aarch64",
- "url": "https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities",
- "description": "Scan ELF binaries for stuff",
- "size": 36381,
- "installedSize": 94208,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "cmd:scanelf"
- ],
- "pullChecksum": "Q1rsUhHDqsLsp5CECQg8L6K2oe8PA=",
- "gitCommitOfApkPort": "753fa8d765c7a4edb76f11b1995f84cdcb45bce5",
- "files": [
- {
- "path": "/usr"
- },
- {
- "path": "/usr/bin"
- },
- {
- "path": "/usr/bin/scanelf",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1PoUsJHtFOYHiAujB4RsURvdq3t8="
- }
- }
- ]
- }
- },
- {
- "id": "ea144a516278f0ea",
- "name": "ssl_client",
- "version": "1.31.1-r22",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "GPL-2.0-only",
- "spdxExpression": "GPL-2.0-only",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:ssl-client:ssl-client:1.31.1-r22:*:*:*:*:*:*:*",
- "cpe:2.3:a:ssl-client:ssl_client:1.31.1-r22:*:*:*:*:*:*:*",
- "cpe:2.3:a:ssl_client:ssl-client:1.31.1-r22:*:*:*:*:*:*:*",
- "cpe:2.3:a:ssl_client:ssl_client:1.31.1-r22:*:*:*:*:*:*:*",
- "cpe:2.3:a:ssl:ssl-client:1.31.1-r22:*:*:*:*:*:*:*",
- "cpe:2.3:a:ssl:ssl_client:1.31.1-r22:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/ssl_client@1.31.1-r22?arch=aarch64&upstream=busybox&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "ssl_client",
- "originPackage": "busybox",
- "maintainer": "Natanael Copa ",
- "version": "1.31.1-r22",
- "architecture": "aarch64",
- "url": "https://busybox.net/",
- "description": "EXternal ssl_client for busybox wget",
- "size": 4289,
- "installedSize": 24576,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1",
- "so:libtls-standalone.so.1"
- ],
- "provides": [
- "cmd:ssl_client"
- ],
- "pullChecksum": "Q1ovyIuDBoKvoqqwFdTpvyxGB0Zso=",
- "gitCommitOfApkPort": "41c9e389fd1ebce7fc2e723a9074fa7f2a00e11a",
- "files": [
- {
- "path": "/usr"
- },
- {
- "path": "/usr/bin"
- },
- {
- "path": "/usr/bin/ssl_client",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1pokN906jhF8cZfksfXQDDQAv3jg="
- }
- }
- ]
- }
- },
- {
- "id": "f871830fe4975a68",
- "name": "zlib",
- "version": "1.2.12-r0",
- "type": "apk",
- "foundBy": "apk-db-cataloger",
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ],
- "licenses": [
- {
- "value": "Zlib",
- "spdxExpression": "Zlib",
- "type": "declared",
- "urls": [],
- "locations": [
- {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "accessPath": "/lib/apk/db/installed",
- "annotations": {
- "evidence": "primary"
- }
- }
- ]
- }
- ],
- "language": "",
- "cpes": [
- "cpe:2.3:a:zlib:zlib:1.2.12-r0:*:*:*:*:*:*:*"
- ],
- "purl": "pkg:apk/alpine/zlib@1.2.12-r0?arch=aarch64&distro=alpine-3.12.12",
- "metadataType": "apk-db-entry",
- "metadata": {
- "package": "zlib",
- "originPackage": "zlib",
- "maintainer": "Natanael Copa ",
- "version": "1.2.12-r0",
- "architecture": "aarch64",
- "url": "https://zlib.net/",
- "description": "A compression/decompression Library",
- "size": 52231,
- "installedSize": 102400,
- "pullDependencies": [
- "so:libc.musl-aarch64.so.1"
- ],
- "provides": [
- "so:libz.so.1=1.2.12"
- ],
- "pullChecksum": "Q1pmoYrJ0Z+qYAN3/bFhlKoWkmdN8=",
- "gitCommitOfApkPort": "370acac0e4514c90d8c4e33a9740a7c92254853a",
- "files": [
- {
- "path": "/lib"
- },
- {
- "path": "/lib/libz.so.1",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "777",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1+aBjyJ7dmLatVkyqCNnAChlDZh8="
- }
- },
- {
- "path": "/lib/libz.so.1.2.12",
- "ownerUid": "0",
- "ownerGid": "0",
- "permissions": "755",
- "digest": {
- "algorithm": "'Q1'+base64(sha1)",
- "value": "Q1t8k1PRj167dkycAt7Ax8yOdws60="
- }
- }
- ]
- }
- }
- ],
- "artifactRelationships": [
- {
- "parent": "300e781a409ed72e",
- "child": "03873777fed9ff43",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "0acf160f41630757",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "13dd5ed25240c27e",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "22bbedf698c71e11",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "237ea5b321ae0600",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "2ff45fbb92b82580",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "469c33e9d320fb4e",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "5a062656ece9d33f",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "5d8389605f14788c",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "5dc069665c5b6c2d",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "879b86f3d56992e3",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "8b8fbab211078ce3",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "8c1b0c306b55d52e",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "8c39a34f27d7b8b8",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "95e4dac118918344",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "a07bc89128850ea8",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "aca7829e5caaafec",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "c735ab9278164f87",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "cb4516b26ca8e5df",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "e3bbed8d2f3aa967",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "fcb3750e5159e213",
- "type": "contains"
- },
- {
- "parent": "300e781a409ed72e",
- "child": "fe1d8dac14773061",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "24adce31408e2b35",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "40f8c3687a866b44",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "4dd349e42df17a96",
- "type": "dependency-of"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "56bd948d4f18705e",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "582750a63290fb66",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "87076443f088ac71",
- "type": "dependency-of"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "ad399331b09e180e",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "b1f03a6b00cbd2fe",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "d0400558bea1fa0e",
- "type": "dependency-of"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "e557179542ac31a5",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "f2afd5237fe2c3a4",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "f51cbcf6ae499899",
- "type": "contains"
- },
- {
- "parent": "3534729b6cc222b7",
- "child": "faeab95f86dd9efc",
- "type": "contains"
- },
- {
- "parent": "49852edd7b8e27bc",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "49852edd7b8e27bc",
- "child": "4dd349e42df17a96",
- "type": "dependency-of"
- },
- {
- "parent": "49852edd7b8e27bc",
- "child": "b93f18b241f5e8fa",
- "type": "contains"
- },
- {
- "parent": "4dd349e42df17a96",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "4dd349e42df17a96",
- "child": "84404fd6464f61be",
- "type": "contains"
- },
- {
- "parent": "4dd349e42df17a96",
- "child": "ea144a516278f0ea",
- "type": "dependency-of"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "0ea04a3bc4f3e371",
- "type": "contains"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "18d1f9e5760a915a",
- "type": "contains"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "1c96050d6f593ed6",
- "type": "contains"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "4983f048a5f72416",
- "type": "contains"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "da2d83f64297fd63",
- "type": "dependency-of"
- },
- {
- "parent": "618e6d5faa1432fe",
- "child": "f87d9fc71efb8382",
- "type": "contains"
- },
- {
- "parent": "6c34a9b817d73d7b",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "6c34a9b817d73d7b",
- "child": "618e6d5faa1432fe",
- "type": "dependency-of"
- },
- {
- "parent": "6c34a9b817d73d7b",
- "child": "99744ea397e4db46",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "003d67101ea3f703",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "0adde64b7419bc06",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "101f0230d16cd4cc",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "16b538190bd2d8e4",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "193e0466ebf75373",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "1ca4e605d79309bd",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "1f21b922ea357603",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "280df73804363fac",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "2e86066068a63825",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "3239a4705c81f17b",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "3ab6b534ff2a041d",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "3ff8019c27859ee5",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "421dffb84f68146d",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "4605d980af91d78c",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "57fdaca74461eada",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "65b95b833f4c85f9",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "8e5d70036925d90e",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "92846e0b9a31fa99",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "9511997217af8f59",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "a4878fc8e917a20e",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "c13d4ccfc8334055",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "d3f9378623d81cfb",
- "type": "contains"
- },
- {
- "parent": "70a21b16f1a2cc6a",
- "child": "d5707bd5de9a3be4",
- "type": "contains"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "3534729b6cc222b7",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "4dd349e42df17a96",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "618e6d5faa1432fe",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "6c34a9b817d73d7b",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "70a21b16f1a2cc6a",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "87076443f088ac71",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "c840950da1ceb044",
- "type": "contains"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "d0400558bea1fa0e",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "db9331b6a3a9d6f7",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "ea144a516278f0ea",
- "type": "dependency-of"
- },
- {
- "parent": "761f5684fa0274c6",
- "child": "f871830fe4975a68",
- "type": "dependency-of"
- },
- {
- "parent": "87076443f088ac71",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "87076443f088ac71",
- "child": "c555bffc18a4c941",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "300e781a409ed72e",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "3534729b6cc222b7",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "49852edd7b8e27bc",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "4dd349e42df17a96",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "618e6d5faa1432fe",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "6c34a9b817d73d7b",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "70a21b16f1a2cc6a",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "761f5684fa0274c6",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "87076443f088ac71",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "d0400558bea1fa0e",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "da2d83f64297fd63",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "db9331b6a3a9d6f7",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "ea144a516278f0ea",
- "type": "contains"
- },
- {
- "parent": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "child": "f871830fe4975a68",
- "type": "contains"
- },
- {
- "parent": "d0400558bea1fa0e",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "d0400558bea1fa0e",
- "child": "4dd349e42df17a96",
- "type": "dependency-of"
- },
- {
- "parent": "d0400558bea1fa0e",
- "child": "83fe247fdca374e0",
- "type": "contains"
- },
- {
- "parent": "d0400558bea1fa0e",
- "child": "87076443f088ac71",
- "type": "dependency-of"
- },
- {
- "parent": "da2d83f64297fd63",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "1a6b06b0bb5a0d17",
- "type": "contains"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "59a8ba7df46c2920",
- "type": "contains"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "63db6a190e31d94c",
- "type": "contains"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "66cd3d11c9a64a91",
- "type": "contains"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "70a21b16f1a2cc6a",
- "type": "dependency-of"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "c2a2950ea79092e3",
- "type": "contains"
- },
- {
- "parent": "db9331b6a3a9d6f7",
- "child": "c81a1e5c8ec53a85",
- "type": "contains"
- },
- {
- "parent": "ea144a516278f0ea",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "ea144a516278f0ea",
- "child": "3da24b68eb0cb573",
- "type": "contains"
- },
- {
- "parent": "f871830fe4975a68",
- "child": "3859b6ea22aa5e17",
- "type": "evident-by"
- },
- {
- "parent": "f871830fe4975a68",
- "child": "783dcad80474487b",
- "type": "contains"
- },
- {
- "parent": "f871830fe4975a68",
- "child": "87076443f088ac71",
- "type": "dependency-of"
- }
- ],
- "files": [
- {
- "id": "59a8ba7df46c2920",
- "location": {
- "path": "/bin/busybox",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 886368
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "30bcfbdc343d3f00f0c78c18d46ed2fc052d8f88"
- },
- {
- "algorithm": "sha256",
- "value": "c624a8adfdcb3670022e56e1aab2b1a5668ef0bdedd9fc3c1f3f40bb1071d6b3"
- }
- ]
- },
- {
- "id": "469c33e9d320fb4e",
- "location": {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "053a92f87fd4532850bb31f0881978efe0532ae5"
- },
- {
- "algorithm": "sha256",
- "value": "1bb2a846c0ea4ca9d0e7862f970863857fc33c32f5506098c636a62a726a847b"
- }
- ]
- },
- {
- "id": "cb4516b26ca8e5df",
- "location": {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "39ac5d72c6ba018a0f74b8b453894edc9db07b5f"
- },
- {
- "algorithm": "sha256",
- "value": "73867d92083f2f8ab899a26ccda7ef63dfaa0032a938620eda605558958a8041"
- }
- ]
- },
- {
- "id": "e3bbed8d2f3aa967",
- "location": {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "23d0f2ea1af269c2f66165e0f8a944e96bf011de"
- },
- {
- "algorithm": "sha256",
- "value": "10877cce0a935e46ad88cb79e174a2491680508eccda08e92bf04fb9bf37fbc1"
- }
- ]
- },
- {
- "id": "0acf160f41630757",
- "location": {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "de1241307014aae3dba798e900f163408d98d6f4"
- },
- {
- "algorithm": "sha256",
- "value": "ebe717d228555aa58133c202314a451f81e71f174781fd7ff8d8970d6cfa60da"
- }
- ]
- },
- {
- "id": "a07bc89128850ea8",
- "location": {
- "path": "/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "57f6b93fda4a4496fab62844ddef0eeb168f80b5"
- },
- {
- "algorithm": "sha256",
- "value": "d11f6b21c61b4274e182eb888883a8ba8acdbf820dcc7a6d82a7d9fc2fd2836d"
- }
- ]
- },
- {
- "id": "d3f9378623d81cfb",
- "location": {
- "path": "/etc/crontabs/root",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 600,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/tab-separated-values",
- "size": 283
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "bdf9356a9516238c8b2468613517749098b17ef6"
- },
- {
- "algorithm": "sha256",
- "value": "575d810a9fae5f2f0671c9b2c0ce973e46c7207fbe5cb8d1b0d1836a6a0470e3"
- }
- ]
- },
- {
- "id": "65b95b833f4c85f9",
- "location": {
- "path": "/etc/fstab",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/csv",
- "size": 89
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "d50ee135ef10a434b9df582ea8276b5c1ce803fa"
- },
- {
- "algorithm": "sha256",
- "value": "a3efca2e8d62785c87517283092b4c800d88612b6f3f06b80a4c2f39d8e68841"
- }
- ]
- },
- {
- "id": "101f0230d16cd4cc",
- "location": {
- "path": "/etc/group",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 682
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a09d7ac56b9d80a3ab5c812ab840f3945d8bb26e"
- },
- {
- "algorithm": "sha256",
- "value": "412af628e00706d3c90a5d465d59cc422ff68d79eeb8870c4f33ed6df04b2871"
- }
- ]
- },
- {
- "id": "9511997217af8f59",
- "location": {
- "path": "/etc/hostname",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 10
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "ea75706155cffed0a1bd43ddba4543da27d73a67"
- },
- {
- "algorithm": "sha256",
- "value": "d906aecb61d076a967d9ffe8821c7b04b063f72df9d9e35b33ef36b1c0d98f16"
- }
- ]
- },
- {
- "id": "3ab6b534ff2a041d",
- "location": {
- "path": "/etc/hosts",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/tab-separated-values",
- "size": 79
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "043eb324a653456caa1a73e2e2d49f77792bb0c5"
- },
- {
- "algorithm": "sha256",
- "value": "e3998dbe02b51dada33de87ae43d18a93ab6915b9e34f5a751bf2b9b25a55492"
- }
- ]
- },
- {
- "id": "92846e0b9a31fa99",
- "location": {
- "path": "/etc/inittab",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 570
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "4ecb616e15bb4335917b513f34ac133ae0f8a477"
- },
- {
- "algorithm": "sha256",
- "value": "54a5f36970125bf70cdf7b215c9e12a287d92ad76a693bd72aec4cbc5645df87"
- }
- ]
- },
- {
- "id": "63db6a190e31d94c",
- "location": {
- "path": "/etc/logrotate.d/acpid",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 140
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "4f29720883559a74be03f4de69de2f66113b064b"
- },
- {
- "algorithm": "sha256",
- "value": "d608a3b7715886b5735def0cc50a6359fd364fac2e0e0a459c588c04be471031"
- }
- ]
- },
- {
- "id": "003d67101ea3f703",
- "location": {
- "path": "/etc/modprobe.d/aliases.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 1545
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "5946e1e930583552bb7b863eb94bcbb3feef8aa9"
- },
- {
- "algorithm": "sha256",
- "value": "3ebaba946f213670170c7d69949f690a3854553bd0b1560f1d980cba4c83a942"
- }
- ]
- },
- {
- "id": "d5707bd5de9a3be4",
- "location": {
- "path": "/etc/modprobe.d/blacklist.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 1998
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "c7160653a4ba4cb42f6fb7abbcfad65b0016a8c8"
- },
- {
- "algorithm": "sha256",
- "value": "2e2a6fd7a554924bbb5cbdd30f73dc05963fe0c458437b520cf4d503d4d73ff7"
- }
- ]
- },
- {
- "id": "193e0466ebf75373",
- "location": {
- "path": "/etc/modprobe.d/i386.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 122
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a676b2fe78e7ea897d702b2c2fb2a2659f1eb657"
- },
- {
- "algorithm": "sha256",
- "value": "6c46c4cbfb8b7594f19eb94801a350fa2221ae9ac5239a8819d15555caa76ae8"
- }
- ]
- },
- {
- "id": "4605d980af91d78c",
- "location": {
- "path": "/etc/modprobe.d/kms.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 91
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "ca76cb9f71980e9bda8db6bf95da759e26b27a88"
- },
- {
- "algorithm": "sha256",
- "value": "50467fa732f809f3a2bb5738628765c5f895c3a237e1c1ad09f85d41fd9ca7c5"
- }
- ]
- },
- {
- "id": "421dffb84f68146d",
- "location": {
- "path": "/etc/modules",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 15
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "b68a208d48a91c670c8040a03c95fae12c144f53"
- },
- {
- "algorithm": "sha256",
- "value": "2c881de75a5409c35d2433a24f180b8b02ba478ef2c1c60ea3434a35bcbc335d"
- }
- ]
- },
- {
- "id": "1f21b922ea357603",
- "location": {
- "path": "/etc/motd",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 283
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "5e676e555354447436ed3bd8a752ebe5332d15c0"
- },
- {
- "algorithm": "sha256",
- "value": "4ada0c700c4460f85252987092650c6708f17b4ccebc9ae4fcf8732089a1485f"
- }
- ]
- },
- {
- "id": "c81a1e5c8ec53a85",
- "location": {
- "path": "/etc/network/if-up.d/dad",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 775,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 218
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "865c5ddea131ae2847f1b6310d0de2ed3b0cff8e"
- },
- {
- "algorithm": "sha256",
- "value": "eadec0a3e18ef58316d8657c6e42b6f4d35d26de52d19cfeb3d3a256622c955b"
- }
- ]
- },
- {
- "id": "3ff8019c27859ee5",
- "location": {
- "path": "/etc/passwd",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 1172
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "4dc86eb8b51fbabd22cef7d9419c6037f2c9841f"
- },
- {
- "algorithm": "sha256",
- "value": "2e0902cf0a7f64bf4e64ef2fad66ae977b4d01975dddf5352a84aea5c4e901f0"
- }
- ]
- },
- {
- "id": "3239a4705c81f17b",
- "location": {
- "path": "/etc/profile",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 238
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "2a915bf249792efc175a56377b9f0536c8eb237e"
- },
- {
- "algorithm": "sha256",
- "value": "88dc4b847ee3ca91501b025dee3ff49590a85360a20e90a5e0f1a37bd610f598"
- }
- ]
- },
- {
- "id": "16b538190bd2d8e4",
- "location": {
- "path": "/etc/profile.d/color_prompt",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 295
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "d302f6dc6b920957ee98c4606a469b508e84b129"
- },
- {
- "algorithm": "sha256",
- "value": "a00b56dbd437d3f2c32ced50974daa3cfc84a8dd1cbaf75cf307be20b398fc75"
- }
- ]
- },
- {
- "id": "280df73804363fac",
- "location": {
- "path": "/etc/profile.d/locale.sh",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 61
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "4bc8fe596ef5996c5f572f32b61a94ec7515a01c"
- },
- {
- "algorithm": "sha256",
- "value": "84eb9034099d759ff08e6da5a731cacfc63a319547ad0f1dfc1c64853aca93f2"
- }
- ]
- },
- {
- "id": "0adde64b7419bc06",
- "location": {
- "path": "/etc/protocols",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 1865
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "dc5a97527bee3a9303ac7ffaade871b98004137e"
- },
- {
- "algorithm": "sha256",
- "value": "a6695dbd53b87c7b41dfdafd40b1c8ba34fed2f0fa8eaaa296ad17c0b154603e"
- }
- ]
- },
- {
- "id": "1a6b06b0bb5a0d17",
- "location": {
- "path": "/etc/securetty",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 70
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "46978e95d8da1551436e39cae5fce92c6b71ba73"
- },
- {
- "algorithm": "sha256",
- "value": "c8070bc7fc443ac96502b2d811afc3f7d62b24c0417451f9cc65e3eca2a2af13"
- }
- ]
- },
- {
- "id": "1ca4e605d79309bd",
- "location": {
- "path": "/etc/services",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 14464
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "0ba1c936042f2d6aade5563e9fb319275aec0ee6"
- },
- {
- "algorithm": "sha256",
- "value": "a1c2d8af47c1a951f39f11cf53160703f282946d9821068eadf97b7d43208a34"
- }
- ]
- },
- {
- "id": "57fdaca74461eada",
- "location": {
- "path": "/etc/shadow",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 640,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 42,
- "mimeType": "text/plain",
- "size": 422
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "2877ffc63a5c635e09f404933b7871e210c3d013"
- },
- {
- "algorithm": "sha256",
- "value": "2d6f677c66af468f483597fbaa53dbe7150eb925a111c2da25c96220915c6a1a"
- }
- ]
- },
- {
- "id": "2e86066068a63825",
- "location": {
- "path": "/etc/shells",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 38
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a239b661da4227a07f6a9183699fd275bdb12640"
- },
- {
- "algorithm": "sha256",
- "value": "24be6ceb236610df45684c83b06c918ae45635be55f69975e43676b7595bbc5f"
- }
- ]
- },
- {
- "id": "b93f18b241f5e8fa",
- "location": {
- "path": "/etc/ssl/certs/ca-certificates.crt",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 203223
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "9b6709a1fa0d66d0822b8d72be34e05f82bb76fb"
- },
- {
- "algorithm": "sha256",
- "value": "07a23c1a1a5094e6c049c61f87ad09150abbda7590797bfbde8c34349f8dabd0"
- }
- ]
- },
- {
- "id": "f2afd5237fe2c3a4",
- "location": {
- "path": "/etc/ssl/ct_log_list.cnf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 412
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a2587c4e97408b64274e5e052b74e3754892c13a"
- },
- {
- "algorithm": "sha256",
- "value": "f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b"
- }
- ]
- },
- {
- "id": "ad399331b09e180e",
- "location": {
- "path": "/etc/ssl/ct_log_list.cnf.dist",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 412
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a2587c4e97408b64274e5e052b74e3754892c13a"
- },
- {
- "algorithm": "sha256",
- "value": "f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b"
- }
- ]
- },
- {
- "id": "24adce31408e2b35",
- "location": {
- "path": "/etc/ssl/misc/CA.pl",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/x-perl",
- "size": 7598
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "20009ebca84af77198047a7de887b6ea3819d7bb"
- },
- {
- "algorithm": "sha256",
- "value": "61ab95f7e96f2b0f2acdcafb8afde2f6c43e899416397230c2fae9c1e701e45b"
- }
- ]
- },
- {
- "id": "582750a63290fb66",
- "location": {
- "path": "/etc/ssl/misc/tsget.pl",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/x-perl",
- "size": 6579
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "748228bb3fc865a5a1f5a87577e6d6c85ac8c852"
- },
- {
- "algorithm": "sha256",
- "value": "212174afdc2b4b12cb2d28ec41bfc73bc500f5ad72c445843f9f7796a735496a"
- }
- ]
- },
- {
- "id": "faeab95f86dd9efc",
- "location": {
- "path": "/etc/ssl/openssl.cnf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 10909
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "c06bb154438af6218b8f58bc0f70520674fb3090"
- },
- {
- "algorithm": "sha256",
- "value": "f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b"
- }
- ]
- },
- {
- "id": "b1f03a6b00cbd2fe",
- "location": {
- "path": "/etc/ssl/openssl.cnf.dist",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 10909
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "c06bb154438af6218b8f58bc0f70520674fb3090"
- },
- {
- "algorithm": "sha256",
- "value": "f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b"
- }
- ]
- },
- {
- "id": "a4878fc8e917a20e",
- "location": {
- "path": "/etc/sysctl.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 53
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "e2ea73ded7e7371664204b148569fb5e88b0f7a8"
- },
- {
- "algorithm": "sha256",
- "value": "8bba47da45bc8715c69ac904a60410eabffaa7bbbef640f9c1368ab9c48493d0"
- }
- ]
- },
- {
- "id": "66cd3d11c9a64a91",
- "location": {
- "path": "/etc/udhcpd.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 5306
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "50088f65c0c85b50a5473a1b7e081c090efb576f"
- },
- {
- "algorithm": "sha256",
- "value": "edf929b3bf6da1fbde03687020739ee97a9a3edc825db6b768e3e2ce08ebbdd3"
- }
- ]
- },
- {
- "id": "3859b6ea22aa5e17",
- "location": {
- "path": "/lib/apk/db/installed",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- }
- },
- {
- "id": "c840950da1ceb044",
- "location": {
- "path": "/lib/ld-musl-aarch64.so.1",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 621016
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3a37c48a4050380c51a4ea41eb9ac5c57ac94816"
- },
- {
- "algorithm": "sha256",
- "value": "99c589a28a4639e8b82627ef39794fab8d3e25badc5ec9496c0fe3fd2e89aadc"
- }
- ]
- },
- {
- "id": "e557179542ac31a5",
- "location": {
- "path": "/lib/libcrypto.so.1.1",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 2342480
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "8cc5aeca41cba78f49a9f5cd6f8ca572b8e46da5"
- },
- {
- "algorithm": "sha256",
- "value": "78ac2b6af32a71d895ebfa350c782c5e642231378432e28a3b936291ed5fe984"
- }
- ]
- },
- {
- "id": "83fe247fdca374e0",
- "location": {
- "path": "/lib/libssl.so.1.1",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 519496
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "e51e96a20be14f2408878ba37f69b71e2de280cc"
- },
- {
- "algorithm": "sha256",
- "value": "e742f89e940a7e93c22928a374d215a7354a80bc2e26fa262e4d8ff205d2b049"
- }
- ]
- },
- {
- "id": "783dcad80474487b",
- "location": {
- "path": "/lib/libz.so.1.2.12",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 91888
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "b7c9353d18f5ebb764c9c02dec0c7cc8e770b3ad"
- },
- {
- "algorithm": "sha256",
- "value": "da39c3b228641ea2bc568684cee24527e74d6219bcef9b922deca4e5d29e5506"
- }
- ]
- },
- {
- "id": "c13d4ccfc8334055",
- "location": {
- "path": "/lib/sysctl.d/00-alpine.conf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 1278
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "1e9125cd6d7112098a7c446d4f2ee8a269a7aba7"
- },
- {
- "algorithm": "sha256",
- "value": "ee169bea2cb6859420b55ca7a9c23fb68b50adc1d26c951f904dec9e8f767380"
- }
- ]
- },
- {
- "id": "c555bffc18a4c941",
- "location": {
- "path": "/sbin/apk",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 223056
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "408910078872d01ab9cbba09f69518928361803c"
- },
- {
- "algorithm": "sha256",
- "value": "8bec9ddd79c361763a76b59b051497aba6879c0c7ef9a81aacea39e02662afc4"
- }
- ]
- },
- {
- "id": "18d1f9e5760a915a",
- "location": {
- "path": "/sbin/ldconfig",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 393
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "2a36b6f8f3992b112450e66ac128c2ea499a103e"
- },
- {
- "algorithm": "sha256",
- "value": "b4a2c06db38742e8c42c3c9838b285a7d8cdac6c091ff3df5ff9a15f1e41b9c7"
- }
- ]
- },
- {
- "id": "8e5d70036925d90e",
- "location": {
- "path": "/sbin/mkmntdirs",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 5712
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "ce65f704305cb5e9db095f1dc7fdd02f3d9b7510"
- },
- {
- "algorithm": "sha256",
- "value": "c6597bce70930e51b48d00e4508bbf8831d951e3d49d796f95915ce4c7e2f027"
- }
- ]
- },
- {
- "id": "f87d9fc71efb8382",
- "location": {
- "path": "/usr/bin/getconf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 34648
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "91d95196d0b86f875feb1bd9e17b55c3a2cf9e4e"
- },
- {
- "algorithm": "sha256",
- "value": "88d1b3ca6f4381f4ef6bec9c223f5f1aab705e12bf6bd62cd0dd9871b3c8e565"
- }
- ]
- },
- {
- "id": "0ea04a3bc4f3e371",
- "location": {
- "path": "/usr/bin/getent",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 49712
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "97c77fc0b7d4988fc158231f0fa2f455f733afe8"
- },
- {
- "algorithm": "sha256",
- "value": "cdf20f3c528dcca61170fc2d39895c4783dc819efd5171e67aea8d0e62c23872"
- }
- ]
- },
- {
- "id": "1c96050d6f593ed6",
- "location": {
- "path": "/usr/bin/iconv",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 23216
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "6263e6e0e2a4edc63e70a1b2ba098523d703500a"
- },
- {
- "algorithm": "sha256",
- "value": "6d3f770e026b5e73044a8462cbc821c672bb0fafde003c6e7b7cb6ce20f7f598"
- }
- ]
- },
- {
- "id": "4983f048a5f72416",
- "location": {
- "path": "/usr/bin/ldd",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 53
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "afe298b72fc708b978a7876f3edf2409bd66841d"
- },
- {
- "algorithm": "sha256",
- "value": "5f115be8562262bcc50ec469e25c0af2fda3bad72a960c6aa3488acd7a7da8cf"
- }
- ]
- },
- {
- "id": "99744ea397e4db46",
- "location": {
- "path": "/usr/bin/scanelf",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 79560
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3e852c247b453981e202e8c1e11b1446f76adedf"
- },
- {
- "algorithm": "sha256",
- "value": "be87c7f3079fa22494861a5cdf0979ba74f34d028d1a62b99f2cc74eb0f1aa4d"
- }
- ]
- },
- {
- "id": "3da24b68eb0cb573",
- "location": {
- "path": "/usr/bin/ssl_client",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 9808
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a6890df74ea3845f1c65f92c7d74030d002fde38"
- },
- {
- "algorithm": "sha256",
- "value": "f6e7fd1c20782a4de5ff42a8723d960d513bc0c041f5357990111c9730796757"
- }
- ]
- },
- {
- "id": "40f8c3687a866b44",
- "location": {
- "path": "/usr/lib/engines-1.1/afalg.so",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 18568
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "a086a048310cf449f88371158fe38fd683e5e655"
- },
- {
- "algorithm": "sha256",
- "value": "619fe939e7116910a2123378ae33703a3f3d2daa6ae5ea65f6da60c7081dbe2d"
- }
- ]
- },
- {
- "id": "f51cbcf6ae499899",
- "location": {
- "path": "/usr/lib/engines-1.1/capi.so",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 5672
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "b73857044c0a097781764eb43fcbc080a3e03c41"
- },
- {
- "algorithm": "sha256",
- "value": "a657bc2985efc3ff5b71e2f168ede1baf9ceb6a450b04c582361aeae85cd860f"
- }
- ]
- },
- {
- "id": "56bd948d4f18705e",
- "location": {
- "path": "/usr/lib/engines-1.1/padlock.so",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 5672
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "67b6d6ec9d66897e62a8de8e7f2eb3826c6fc317"
- },
- {
- "algorithm": "sha256",
- "value": "45abb6629c60e922e4af6390dee8c281e346658c55ad02521fd51d37416cd073"
- }
- ]
- },
- {
- "id": "84404fd6464f61be",
- "location": {
- "path": "/usr/lib/libtls-standalone.so.1.0.0",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "application/x-sharedlib",
- "size": 96032
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "9b62fd7d809c9618182feb748bf68efee6791e87"
- },
- {
- "algorithm": "sha256",
- "value": "3708a8f2fe798b424b8fa4d050dbdf7f4d3c28ac8f836753c3f26af35a34e4cf"
- }
- ]
- },
- {
- "id": "95e4dac118918344",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3af08548ef78cfdedcf349880c2c6a1a48763a0e"
- },
- {
- "algorithm": "sha256",
- "value": "9c102bcc376af1498d549b77bdbfa815ae86faa1d2d82f040e616b18ef2df2d4"
- }
- ]
- },
- {
- "id": "237ea5b321ae0600",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "bfb616658cc05a872568b0c8e398c482e23b60dd"
- },
- {
- "algorithm": "sha256",
- "value": "ebf31683b56410ecc4c00acd9f6e2839e237a3b62b5ae7ef686705c7ba0396a9"
- }
- ]
- },
- {
- "id": "fcb3750e5159e213",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "053a92f87fd4532850bb31f0881978efe0532ae5"
- },
- {
- "algorithm": "sha256",
- "value": "1bb2a846c0ea4ca9d0e7862f970863857fc33c32f5506098c636a62a726a847b"
- }
- ]
- },
- {
- "id": "8c1b0c306b55d52e",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3671ae0ec7503b1e193587c1dcdf7b78bc863e42"
- },
- {
- "algorithm": "sha256",
- "value": "12f899e55a7691225603d6fb3324940fc51cd7f133e7ead788663c2b7eecb00c"
- }
- ]
- },
- {
- "id": "8b8fbab211078ce3",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "39ac5d72c6ba018a0f74b8b453894edc9db07b5f"
- },
- {
- "algorithm": "sha256",
- "value": "73867d92083f2f8ab899a26ccda7ef63dfaa0032a938620eda605558958a8041"
- }
- ]
- },
- {
- "id": "03873777fed9ff43",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "c8fabeb2eeb992c368c77b9707e0d1ecfd7cf905"
- },
- {
- "algorithm": "sha256",
- "value": "9a4cd858d9710963848e6d5f555325dc199d1c952b01cf6e64da2c15deedbd97"
- }
- ]
- },
- {
- "id": "8c39a34f27d7b8b8",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "329643357d0b78b1ef48ec155325e25f1d7534dd"
- },
- {
- "algorithm": "sha256",
- "value": "780b3ed41786772cbc7b68136546fa3f897f28a23b30c72dde6225319c44cfff"
- }
- ]
- },
- {
- "id": "22bbedf698c71e11",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "825090fde25bbc0e71a9cb3076316b5afe459e4d"
- },
- {
- "algorithm": "sha256",
- "value": "59c01c57b446633249f67c04b115dd6787f4378f183dff2bbf65406df93f176d"
- }
- ]
- },
- {
- "id": "13dd5ed25240c27e",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 451
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "5d4743128353b6396fad2fa2ba793ace21602295"
- },
- {
- "algorithm": "sha256",
- "value": "db0b49163f07ffba64a5ca198bcf1688610b0bd1f0d8d5afeaf78559d73f2278"
- }
- ]
- },
- {
- "id": "2ff45fbb92b82580",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "95995311236b7a55933642ffa10ce6014f1af7d0"
- },
- {
- "algorithm": "sha256",
- "value": "207e4696d3c05f7cb05966aee557307151f1f00217af4143c1bcaf33b8df733f"
- }
- ]
- },
- {
- "id": "5dc069665c5b6c2d",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "58d5ba4b2f3b1e927721d7a6432f298eedf72a6b"
- },
- {
- "algorithm": "sha256",
- "value": "128d34d4aec39b0daedea8163cd8dc24dff36fd3d848630ab97eeb1d3084bbb3"
- }
- ]
- },
- {
- "id": "5d8389605f14788c",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "23d0f2ea1af269c2f66165e0f8a944e96bf011de"
- },
- {
- "algorithm": "sha256",
- "value": "10877cce0a935e46ad88cb79e174a2491680508eccda08e92bf04fb9bf37fbc1"
- }
- ]
- },
- {
- "id": "5a062656ece9d33f",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3529ec82670c6d4e20ee3e4968db34b551e91d50"
- },
- {
- "algorithm": "sha256",
- "value": "4a095a9daca86da496a3cd9adcd95ee2197fdbeb84638656d469f05a4d740751"
- }
- ]
- },
- {
- "id": "c735ab9278164f87",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "55a301064e11c6fe9ba0f2ca17e234f3943ccb61"
- },
- {
- "algorithm": "sha256",
- "value": "0caf5662fde45616d88cfd7021b7bda269a2fcaf311e51c48945a967a609ec0b"
- }
- ]
- },
- {
- "id": "fe1d8dac14773061",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "de1241307014aae3dba798e900f163408d98d6f4"
- },
- {
- "algorithm": "sha256",
- "value": "ebe717d228555aa58133c202314a451f81e71f174781fd7ff8d8970d6cfa60da"
- }
- ]
- },
- {
- "id": "879b86f3d56992e3",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "57f6b93fda4a4496fab62844ddef0eeb168f80b5"
- },
- {
- "algorithm": "sha256",
- "value": "d11f6b21c61b4274e182eb888883a8ba8acdbf820dcc7a6d82a7d9fc2fd2836d"
- }
- ]
- },
- {
- "id": "aca7829e5caaafec",
- "location": {
- "path": "/usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 644,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 800
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "df02c9adc2906a3aa5e5ad69f50e3953e65710d0"
- },
- {
- "algorithm": "sha256",
- "value": "40a216cbd163f22e5f16a9e0929de7cde221b9cbae8e36aa368b1e128afe0a31"
- }
- ]
- },
- {
- "id": "c2a2950ea79092e3",
- "location": {
- "path": "/usr/share/udhcpc/default.script",
- "layerID": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6"
- },
- "metadata": {
- "mode": 755,
- "type": "RegularFile",
- "userID": 0,
- "groupID": 0,
- "mimeType": "text/plain",
- "size": 3121
- },
- "digests": [
- {
- "algorithm": "sha1",
- "value": "3762910f3fd1e91a8a846aae8d0e18e84a243176"
- },
- {
- "algorithm": "sha256",
- "value": "18982a8d0bc50408b9893fa04c00bb390d43f6787655043915cbc21edf76a4a1"
- }
- ]
- }
- ],
- "source": {
- "id": "8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "name": "alpine",
- "version": "3.12",
- "type": "image",
- "metadata": {
- "userInput": "alpine:3.12",
- "imageID": "sha256:cc604a625da1289c5dd57f947318133161ff7f40fb03dc2a649300473b97e743",
- "manifestDigest": "sha256:8cb449c3c0a4611deee6858f633eaa9378ee2eb00c2c2ae643e76e82d06b850b",
- "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
- "tags": [
- "alpine:3.12"
- ],
- "imageSize": 5326796,
- "layers": [
- {
- "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
- "digest": "sha256:d80e0208345a5c0e0e5575f11f35d99a179bcdfec9a075828e774145c0245eb6",
- "size": 5326796
- }
- ],
- "manifest": "eyJzY2hlbWFWZXJzaW9uIjoyLCJtZWRpYVR5cGUiOiJhcHBsaWNhdGlvbi92bmQuZG9ja2VyLmRpc3RyaWJ1dGlvbi5tYW5pZmVzdC52Mitqc29uIiwiY29uZmlnIjp7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuY29udGFpbmVyLmltYWdlLnYxK2pzb24iLCJzaXplIjoxNDg3LCJkaWdlc3QiOiJzaGEyNTY6Y2M2MDRhNjI1ZGExMjg5YzVkZDU3Zjk0NzMxODEzMzE2MWZmN2Y0MGZiMDNkYzJhNjQ5MzAwNDczYjk3ZTc0MyJ9LCJsYXllcnMiOlt7Im1lZGlhVHlwZSI6ImFwcGxpY2F0aW9uL3ZuZC5kb2NrZXIuaW1hZ2Uucm9vdGZzLmRpZmYudGFyLmd6aXAiLCJzaXplIjo1NjE2MTI4LCJkaWdlc3QiOiJzaGEyNTY6ZDgwZTAyMDgzNDVhNWMwZTBlNTU3NWYxMWYzNWQ5OWExNzliY2RmZWM5YTA3NTgyOGU3NzQxNDVjMDI0NWViNiJ9XX0=",
- "config": "eyJhcmNoaXRlY3R1cmUiOiJhcm02NCIsImNvbmZpZyI6eyJIb3N0bmFtZSI6IiIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giXSwiSW1hZ2UiOiJzaGEyNTY6MDZhOWI5YTE3NTgwYjU2YmUxYzVlMjhjMzBjMWEzYjQ2M2JjZjY3MTRhMjcxMzQ1ZTQwNzUxNTY2YWU1M2M1OSIsIlZvbHVtZXMiOm51bGwsIldvcmtpbmdEaXIiOiIiLCJFbnRyeXBvaW50IjpudWxsLCJPbkJ1aWxkIjpudWxsLCJMYWJlbHMiOm51bGx9LCJjb250YWluZXIiOiJiZWUwNDg4MDRjYzgwZDA2ZTQ2ZGJkYzk2YTZkZjY4OTJmNjJhYjRhNTNiMzBiMDA1NTcxZTkwYzRjYTVhMjgzIiwiY29udGFpbmVyX2NvbmZpZyI6eyJIb3N0bmFtZSI6ImJlZTA0ODgwNGNjOCIsIkRvbWFpbm5hbWUiOiIiLCJVc2VyIjoiIiwiQXR0YWNoU3RkaW4iOmZhbHNlLCJBdHRhY2hTdGRvdXQiOmZhbHNlLCJBdHRhY2hTdGRlcnIiOmZhbHNlLCJUdHkiOmZhbHNlLCJPcGVuU3RkaW4iOmZhbHNlLCJTdGRpbk9uY2UiOmZhbHNlLCJFbnYiOlsiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iXSwiQ21kIjpbIi9iaW4vc2giLCItYyIsIiMobm9wKSAiLCJDTUQgW1wiL2Jpbi9zaFwiXSJdLCJJbWFnZSI6InNoYTI1NjowNmE5YjlhMTc1ODBiNTZiZTFjNWUyOGMzMGMxYTNiNDYzYmNmNjcxNGEyNzEzNDVlNDA3NTE1NjZhZTUzYzU5IiwiVm9sdW1lcyI6bnVsbCwiV29ya2luZ0RpciI6IiIsIkVudHJ5cG9pbnQiOm51bGwsIk9uQnVpbGQiOm51bGwsIkxhYmVscyI6e319LCJjcmVhdGVkIjoiMjAyMi0wNC0wNFQyMzozOTo1My41NTU0MjI1MzZaIiwiZG9ja2VyX3ZlcnNpb24iOiIyMC4xMC4xMiIsImhpc3RvcnkiOlt7ImNyZWF0ZWQiOiIyMDIyLTA0LTA0VDIzOjM5OjUzLjQzNDc0NDIwNFoiLCJjcmVhdGVkX2J5IjoiL2Jpbi9zaCAtYyAjKG5vcCkgQUREIGZpbGU6YTJhOTkyYjdmNmFmMWU2ZjhmNTY0OGYzMjlmNGE0MDU4ZDhjNDM3NzQxN2FjMjNhZTIxMTI5MGMwY2RjOGY0YiBpbiAvICJ9LHsiY3JlYXRlZCI6IjIwMjItMDQtMDRUMjM6Mzk6NTMuNTU1NDIyNTM2WiIsImNyZWF0ZWRfYnkiOiIvYmluL3NoIC1jICMobm9wKSAgQ01EIFtcIi9iaW4vc2hcIl0iLCJlbXB0eV9sYXllciI6dHJ1ZX1dLCJvcyI6ImxpbnV4Iiwicm9vdGZzIjp7InR5cGUiOiJsYXllcnMiLCJkaWZmX2lkcyI6WyJzaGEyNTY6ZDgwZTAyMDgzNDVhNWMwZTBlNTU3NWYxMWYzNWQ5OWExNzliY2RmZWM5YTA3NTgyOGU3NzQxNDVjMDI0NWViNiJdfSwidmFyaWFudCI6InY4In0=",
- "repoDigests": [
- "alpine@sha256:c75ac27b49326926b803b9ed43bf088bc220d22556de1bc5f72d742c91398f69"
- ],
- "architecture": "arm64",
- "os": "linux"
- }
- },
- "distro": {
- "prettyName": "Alpine Linux v3.12",
- "name": "Alpine Linux",
- "id": "alpine",
- "versionID": "3.12.12",
- "homeURL": "https://alpinelinux.org/",
- "bugReportURL": "https://bugs.alpinelinux.org/"
- },
- "descriptor": {
- "name": "syft",
- "version": "0.101.1",
- "configuration": {
- "catalogers": {
- "requested": {
- "default": [
- "image"
- ]
- },
- "used": [
- "alpm-db-cataloger",
- "apk-db-cataloger",
- "binary-cataloger",
- "cargo-auditable-binary-cataloger",
- "conan-info-cataloger",
- "dotnet-portable-executable-cataloger",
- "dpkg-db-cataloger",
- "go-module-binary-cataloger",
- "graalvm-native-image-cataloger",
- "java-archive-cataloger",
- "javascript-package-cataloger",
- "nix-store-cataloger",
- "php-composer-installed-cataloger",
- "portage-cataloger",
- "python-installed-package-cataloger",
- "r-package-cataloger",
- "rpm-db-cataloger",
- "ruby-installed-gemspec-cataloger",
- "sbom-cataloger"
- ]
- },
- "data-generation": {
- "generate-cpes": true
- },
- "files": {
- "content": {
- "globs": null,
- "skip-files-above-size": 0
- },
- "hashers": [
- "sha-1",
- "sha-256"
- ],
- "selection": "owned-by-package"
- },
- "packages": {
- "binary": [
- "python-binary",
- "python-binary-lib",
- "pypy-binary-lib",
- "go-binary",
- "julia-binary",
- "helm",
- "redis-binary",
- "java-binary-openjdk",
- "java-binary-ibm",
- "java-binary-oracle",
- "nodejs-binary",
- "go-binary-hint",
- "busybox-binary",
- "haproxy-binary",
- "perl-binary",
- "php-cli-binary",
- "php-fpm-binary",
- "php-apache-binary",
- "php-composer-binary",
- "httpd-binary",
- "memcached-binary",
- "traefik-binary",
- "postgresql-binary",
- "mysql-binary",
- "mysql-binary",
- "mysql-binary",
- "xtrabackup-binary",
- "mariadb-binary",
- "rust-standard-library-linux",
- "rust-standard-library-macos",
- "ruby-binary",
- "erlang-binary",
- "consul-binary",
- "nginx-binary",
- "bash-binary",
- "openssl-binary",
- "gcc-binary",
- "wordpress-cli-binary"
- ],
- "golang": {
- "local-mod-cache-dir": "/Users/wagoodman/go/pkg/mod",
- "proxies": [
- "https://proxy.golang.org",
- "direct"
- ],
- "search-local-mod-cache-licenses": false,
- "search-remote-licenses": false
- },
- "java-archive": {
- "include-indexed-archives": true,
- "include-unindexed-archives": false,
- "maven-base-url": "https://repo1.maven.org/maven2",
- "max-parent-recursive-depth": 5,
- "use-network": false
- },
- "javascript": {
- "npm-base-url": "https://registry.npmjs.org",
- "search-remote-licenses": false
- },
- "linux-kernel": {
- "catalog-modules": true
- },
- "python": {
- "guess-unpinned-requirements": false
- }
- },
- "relationships": {
- "exclude-binary-packages-with-file-ownership-overlap": true,
- "package-file-ownership": true,
- "package-file-ownership-overlap": true
- },
- "search": {
- "scope": "squashed"
- }
- }
- },
- "schema": {
- "version": "13.0.0",
- "url": "https://raw.githubusercontent.com/anchore/syft/main/schema/json/schema-13.0.0.json"
- }
-}
diff --git a/examples/decode_sbom/main.go b/examples/decode_sbom/main.go
deleted file mode 100644
index fbdcb7667..000000000
--- a/examples/decode_sbom/main.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package main
-
-import (
- _ "embed"
- "fmt"
- "io"
- "os"
- "strings"
-
- "github.com/anchore/syft/syft/format"
-)
-
-//go:embed alpine.syft.json
-var sbomContents string
-
-func main() {
- // decode the SBOM
- fmt.Println("decoding SBOM...")
- sbom, sbomFormat, formatVersion, err := format.Decode(sbomReader())
- if err != nil {
- fmt.Printf("failed to decode sbom: %+v\n", err)
- os.Exit(1)
- }
-
- fmt.Printf("SBOM format: %s@%s\n", sbomFormat, formatVersion)
-
- // print packages found...
- fmt.Println("\nPackages found:")
- for _, pkg := range sbom.Artifacts.Packages.Sorted() {
- fmt.Printf(" %s : %s@%s (%s)\n", pkg.ID(), pkg.Name, pkg.Version, pkg.Type)
- }
-
- // print files found...
- fmt.Println("\nFiles found:")
- for c, f := range sbom.Artifacts.FileMetadata {
- fmt.Printf(" %s : %s\n", c.ID(), f.Path)
- }
-}
-
-func sbomReader() io.Reader {
- // read file from sys args (or use the default)
- var reader io.Reader
- if len(os.Args) < 2 {
- reader = strings.NewReader(sbomContents)
- } else {
- var err error
- reader, err = os.Open(os.Args[1])
- if err != nil {
- panic(err)
- }
- }
- return reader
-}
diff --git a/examples/select_catalogers/main.go b/examples/select_catalogers/main.go
deleted file mode 100644
index 79cdd4400..000000000
--- a/examples/select_catalogers/main.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package main
-
-import (
- "context"
- "encoding/json"
- "os"
-
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
- "github.com/anchore/syft/syft/sbom"
- "github.com/anchore/syft/syft/source"
-)
-
-const defaultImage = "alpine:3.19"
-
-func main() {
- // automagically get a source.Source for arbitrary string input
- src := getSource(imageReference())
-
- // catalog the given source and return a SBOM
- // let's explicitly use catalogers that are:
- // - for installed software
- // - used in the directory scan
- sbom := getSBOM(src, pkgcataloging.InstalledTag, pkgcataloging.DirectoryTag)
-
- // Show a basic catalogers and input configuration used
- enc := json.NewEncoder(os.Stdout)
- enc.SetIndent("", " ")
- if err := enc.Encode(sbom.Descriptor.Configuration); err != nil {
- panic(err)
- }
-
-}
-
-func imageReference() string {
- // read an image string reference from the command line or use a default
- if len(os.Args) > 1 {
- return os.Args[1]
- }
- return defaultImage
-}
-
-func getSource(input string) source.Source {
- src, err := syft.GetSource(context.Background(), input, nil)
-
- if err != nil {
- panic(err)
- }
-
- return src
-}
-
-func getSBOM(src source.Source, defaultTags ...string) sbom.SBOM {
- cfg := syft.DefaultCreateSBOMConfig().
- WithCatalogerSelection(
- // here you can sub-select, add, remove catalogers from the default selection...
- // or replace the default selection entirely!
- pkgcataloging.NewSelectionRequest().
- WithDefaults(defaultTags...),
- )
-
- s, err := syft.CreateSBOM(context.Background(), src, cfg)
- if err != nil {
- panic(err)
- }
-
- return *s
-}
diff --git a/examples/source_detection/main.go b/examples/source_detection/main.go
deleted file mode 100644
index 99b00a191..000000000
--- a/examples/source_detection/main.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package main
-
-import (
- "context"
- "encoding/json"
- "os"
-
- "github.com/anchore/go-collections"
- "github.com/anchore/stereoscope"
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/source"
- "github.com/anchore/syft/syft/source/sourceproviders"
-)
-
-/*
- This example demonstrates how to create a source object from a generic string input.
-
- Example inputs:
- alpine:3.19 pull an image from the docker daemon, podman, or the registry (based on what's available)
- ./my.tar interpret a local archive as an OCI archive, docker save archive, or raw file from disk to catalog
- docker:yourrepo/yourimage:tag explicitly use the Docker daemon
- podman:yourrepo/yourimage:tag explicitly use the Podman daemon
- registry:yourrepo/yourimage:tag pull image directly from a registry (no container runtime required)
- docker-archive:path/to/yourimage.tar use a tarball from disk for archives created from "docker save"
- oci-archive:path/to/yourimage.tar use a tarball from disk for OCI archives (from Skopeo or otherwise)
- oci-dir:path/to/yourimage read directly from a path on disk for OCI layout directories (from Skopeo or otherwise)
- singularity:path/to/yourimage.sif read directly from a Singularity Image Format (SIF) container on disk
- dir:path/to/yourproject read directly from a path on disk (any directory)
- file:path/to/yourproject/file read directly from a path on disk (any single file)
-
-*/
-
-const defaultImage = "alpine:3.19"
-
-func main() {
- userInput := imageReference()
-
- // parse the scheme against the known set of schemes
- schemeSource, newUserInput := stereoscope.ExtractSchemeSource(userInput, allSourceTags()...)
-
- // set up the GetSourceConfig
- getSourceCfg := syft.DefaultGetSourceConfig()
- if schemeSource != "" {
- getSourceCfg = getSourceCfg.WithSources(schemeSource)
- userInput = newUserInput
- }
- src, err := syft.GetSource(context.Background(), userInput, getSourceCfg)
-
- if err != nil {
- panic(err)
- }
-
- // Show a basic description of the source to the screen
- enc := json.NewEncoder(os.Stdout)
- enc.SetIndent("", " ")
- if err := enc.Encode(src.Describe()); err != nil {
- panic(err)
- }
-}
-
-func imageReference() string {
- // read an image string reference from the command line or use a default
- if len(os.Args) > 1 {
- return os.Args[1]
- }
- return defaultImage
-}
-
-func allSourceTags() []string {
- return collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All("", nil)...).Tags()
-}
diff --git a/examples/source_from_image/main.go b/examples/source_from_image/main.go
deleted file mode 100644
index c4d82a290..000000000
--- a/examples/source_from_image/main.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package main
-
-import (
- "context"
- "encoding/json"
- "os"
-
- "github.com/anchore/stereoscope"
- "github.com/anchore/stereoscope/pkg/image/oci"
- "github.com/anchore/syft/syft/source/stereoscopesource"
-)
-
-/*
- This shows how to create a source from an image reference. This is useful when you are programmatically always
- expecting to catalog a container image and always from the same source (e.g. docker daemon, podman, registry, etc).
-*/
-
-const defaultImage = "alpine:3.19"
-
-func main() {
- // using oci.Registry causes the lookup to always use the registry, there are several other "Source" options here
- img, err := stereoscope.GetImageFromSource(context.Background(), imageReference(), oci.Registry, stereoscope.WithPlatform("linux/amd64"))
- if err != nil {
- panic(err)
- }
-
- src := stereoscopesource.New(img, stereoscopesource.ImageConfig{
- Reference: imageReference(),
- })
-
- // Show a basic description of the source to the screen
- enc := json.NewEncoder(os.Stdout)
- enc.SetIndent("", " ")
- if err := enc.Encode(src.Describe()); err != nil {
- panic(err)
- }
-}
-
-func imageReference() string {
- // read an image string reference from the command line or use a default
- if len(os.Args) > 1 {
- return os.Args[1]
- }
- return defaultImage
-}
diff --git a/examples/source_from_registry/main.go b/examples/source_from_registry/main.go
deleted file mode 100644
index 158731259..000000000
--- a/examples/source_from_registry/main.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package main
-
-import (
- "context"
- "os"
-
- "github.com/anchore/syft/syft"
- "github.com/anchore/syft/syft/format/syftjson"
-)
-
-// This example demonstrates how to create an SBOM, pulling only from "registry", with error handling omitted
-func main() {
- image := "alpine:3.19"
-
- src, _ := syft.GetSource(context.Background(), image, syft.DefaultGetSourceConfig().WithSources("registry"))
-
- sbom, _ := syft.CreateSBOM(context.Background(), src, syft.DefaultCreateSBOMConfig())
-
- _ = syftjson.NewFormatEncoder().Encode(os.Stdout, *sbom)
-}
diff --git a/go.mod b/go.mod
index 0c9f7dddd..2dc477853 100644
--- a/go.mod
+++ b/go.mod
@@ -1,52 +1,54 @@
module github.com/anchore/syft
-go 1.21.0
+go 1.22.5
+
+toolchain go1.22.8
require (
- github.com/CycloneDX/cyclonedx-go v0.8.0
+ github.com/CycloneDX/cyclonedx-go v0.9.1
github.com/Masterminds/semver v1.5.0
- github.com/Masterminds/sprig/v3 v3.2.3
+ github.com/Masterminds/sprig/v3 v3.3.0
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
github.com/acobaugh/osrelease v0.1.0
github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9
github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa
- github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f
+ github.com/anchore/fangs v0.0.0-20240903175602-e716ef12c23d
github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537
github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b
- github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f
- github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185
+ github.com/anchore/packageurl-go v0.1.1-0.20241018175412-5c22e6360c4f
+ github.com/anchore/stereoscope v0.0.5-0.20241018131503-a38c93517fc7
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be
// we are hinting brotli to latest due to warning when installing archiver v3:
// go: warning: github.com/andybalholm/brotli@v1.0.1: retracted by module author: occasional panics and data corruption
github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46
- github.com/bmatcuk/doublestar/v4 v4.6.1
- github.com/charmbracelet/bubbles v0.18.0
- github.com/charmbracelet/bubbletea v0.26.3
- github.com/charmbracelet/lipgloss v0.11.0
- github.com/dave/jennifer v1.7.0
+ github.com/bmatcuk/doublestar/v4 v4.7.1
+ github.com/charmbracelet/bubbles v0.20.0
+ github.com/charmbracelet/bubbletea v1.1.1
+ github.com/charmbracelet/lipgloss v0.13.0
+ github.com/dave/jennifer v1.7.1
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da
github.com/distribution/reference v0.6.0
- github.com/docker/docker v26.1.3+incompatible
+ github.com/docker/docker v27.3.1+incompatible
github.com/dustin/go-humanize v1.0.1
github.com/elliotchance/phpserialize v1.4.0
github.com/facebookincubator/nvdtools v0.1.5
- github.com/github/go-spdx/v2 v2.2.0
- github.com/gkampitakis/go-snaps v0.5.4
+ github.com/github/go-spdx/v2 v2.3.2
+ github.com/gkampitakis/go-snaps v0.5.7
github.com/go-git/go-billy/v5 v5.5.0
github.com/go-git/go-git/v5 v5.12.0
- github.com/go-test/deep v1.1.0
+ github.com/go-test/deep v1.1.1
github.com/google/go-cmp v0.6.0
- github.com/google/go-containerregistry v0.19.1
+ github.com/google/go-containerregistry v0.20.2
github.com/google/licensecheck v0.3.1
github.com/google/uuid v1.6.0
github.com/gookit/color v1.5.4
github.com/hashicorp/go-multierror v1.1.1
github.com/iancoleman/strcase v0.3.0
github.com/invopop/jsonschema v0.7.0
- github.com/jedib0t/go-pretty/v6 v6.5.9
+ github.com/jedib0t/go-pretty/v6 v6.6.1
github.com/jinzhu/copier v0.4.0
github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953
github.com/knqyf263/go-rpmdb v0.1.1
@@ -55,50 +57,55 @@ require (
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/mitchellh/mapstructure v1.5.0
- github.com/moby/sys/mountinfo v0.7.1
+ github.com/moby/sys/mountinfo v0.7.2
github.com/olekukonko/tablewriter v0.0.5
github.com/opencontainers/go-digest v1.0.0
github.com/pelletier/go-toml v1.9.5
github.com/quasilyte/go-ruleguard/dsl v0.3.22
- github.com/saferwall/pe v1.5.3
+ github.com/saferwall/pe v1.5.4
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d
github.com/sanity-io/litter v1.5.5
github.com/sassoftware/go-rpmutils v0.4.0
// pinned to pull in 386 arch fix: https://github.com/scylladb/go-set/commit/cc7b2070d91ebf40d233207b633e28f5bd8f03a5
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
- github.com/spdx/tools-golang v0.5.4
+ github.com/spdx/tools-golang v0.5.5
github.com/spf13/afero v1.11.0
- github.com/spf13/cobra v1.8.0
+ github.com/spf13/cobra v1.8.1
github.com/stretchr/testify v1.9.0
- github.com/vbatts/go-mtree v0.5.3
+ github.com/vbatts/go-mtree v0.5.4
github.com/vifraa/gopom v1.0.0
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651
github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0
github.com/xeipuuv/gojsonschema v1.2.0
github.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1
go.uber.org/goleak v1.3.0
- golang.org/x/mod v0.17.0
- golang.org/x/net v0.25.0
+ golang.org/x/mod v0.21.0
+ golang.org/x/net v0.30.0
gopkg.in/yaml.v3 v3.0.1
- modernc.org/sqlite v1.29.10
+ modernc.org/sqlite v1.33.1
)
-require google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
+require google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
-require github.com/magiconair/properties v1.8.7
+require (
+ github.com/BurntSushi/toml v1.4.0
+ github.com/OneOfOne/xxhash v1.2.8
+ github.com/adrg/xdg v0.5.1
+ github.com/magiconair/properties v1.8.7
+ golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
+)
require (
- dario.cat/mergo v1.0.0 // indirect
+ dario.cat/mergo v1.0.1 // indirect
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect
github.com/DataDog/zstd v1.5.5 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
- github.com/Masterminds/semver/v3 v3.2.0 // indirect
- github.com/Microsoft/go-winio v0.6.1 // indirect
- github.com/Microsoft/hcsshim v0.11.4 // indirect
+ github.com/Masterminds/semver/v3 v3.3.0 // indirect
+ github.com/Microsoft/go-winio v0.6.2 // indirect
+ github.com/Microsoft/hcsshim v0.11.7 // indirect
github.com/ProtonMail/go-crypto v1.0.0 // indirect
- github.com/adrg/xdg v0.4.0 // indirect
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 // indirect
@@ -106,22 +113,23 @@ require (
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/becheran/wildmatch-go v1.0.0 // indirect
github.com/charmbracelet/harmonica v0.2.0 // indirect
- github.com/charmbracelet/x/ansi v0.1.1 // indirect
- github.com/charmbracelet/x/input v0.1.0 // indirect
- github.com/charmbracelet/x/term v0.1.1 // indirect
- github.com/charmbracelet/x/windows v0.1.0 // indirect
+ github.com/charmbracelet/x/ansi v0.2.3 // indirect
+ github.com/charmbracelet/x/term v0.2.0 // indirect
github.com/cloudflare/circl v1.3.8 // indirect
github.com/containerd/cgroups v1.1.0 // indirect
- github.com/containerd/containerd v1.7.11 // indirect
+ github.com/containerd/containerd v1.7.23 // indirect
+ github.com/containerd/containerd/api v1.7.19 // indirect
github.com/containerd/continuity v0.4.2 // indirect
+ github.com/containerd/errdefs v0.3.0 // indirect
github.com/containerd/fifo v1.1.0 // indirect
github.com/containerd/log v0.1.0 // indirect
+ github.com/containerd/platforms v0.2.1 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
- github.com/containerd/ttrpc v1.2.2 // indirect
+ github.com/containerd/ttrpc v1.2.5 // indirect
github.com/containerd/typeurl/v2 v2.1.1 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
- github.com/docker/cli v24.0.0+incompatible // indirect
+ github.com/docker/cli v27.3.1+incompatible // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker-credential-helpers v0.7.0 // indirect
github.com/docker/go-connections v0.4.0 // indirect
@@ -132,26 +140,25 @@ require (
github.com/emirpasic/gods v1.18.1 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/felixge/fgprof v0.9.3 // indirect
- github.com/felixge/httpsnoop v1.0.3 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/gabriel-vasile/mimetype v1.4.0 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.6 // indirect
github.com/gkampitakis/ciinfo v0.3.0 // indirect
github.com/gkampitakis/go-diff v1.3.2 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
- github.com/go-logr/logr v1.2.4 // indirect
+ github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-restruct/restruct v1.2.0-alpha // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/huandu/xstrings v1.3.3 // indirect
+ github.com/huandu/xstrings v1.5.0 // indirect
github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect
- github.com/imdario/mergo v0.3.15 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
@@ -159,13 +166,13 @@ require (
github.com/klauspost/pgzip v1.2.5 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
- github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 // indirect
+ github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/maruel/natural v1.1.1 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect
- github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
@@ -173,19 +180,19 @@ require (
github.com/moby/locker v1.0.1 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
github.com/moby/sys/signal v0.7.0 // indirect
+ github.com/moby/sys/user v0.3.0 // indirect
+ github.com/moby/sys/userns v0.1.0 // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
- github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/nwaples/rardecode v1.1.0 // indirect
- github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
- github.com/opencontainers/runc v1.1.12 // indirect
- github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect
+ github.com/opencontainers/image-spec v1.1.0 // indirect
+ github.com/opencontainers/runtime-spec v1.1.0 // indirect
github.com/opencontainers/selinux v1.11.0 // indirect
github.com/pborman/indent v1.2.1 // indirect
- github.com/pelletier/go-toml/v2 v2.1.0 // indirect
- github.com/pierrec/lz4/v4 v4.1.15 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.2 // indirect
+ github.com/pierrec/lz4/v4 v4.1.19 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/profile v1.7.0 // indirect
@@ -195,18 +202,18 @@ require (
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
- github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f // indirect
+ github.com/sahilm/fuzzy v0.1.1 // indirect
github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d // indirect
- github.com/shopspring/decimal v1.2.0 // indirect
+ github.com/shopspring/decimal v1.4.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/skeema/knownhosts v1.2.2 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
- github.com/spf13/cast v1.6.0 // indirect
+ github.com/spf13/cast v1.7.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
- github.com/spf13/viper v1.18.2 // indirect
+ github.com/spf13/viper v1.19.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
- github.com/sylabs/sif/v2 v2.11.5 // indirect
- github.com/sylabs/squashfs v0.6.1 // indirect
+ github.com/sylabs/sif/v2 v2.19.1 // indirect
+ github.com/sylabs/squashfs v1.0.0 // indirect
github.com/therootcompany/xz v1.0.1 // indirect
github.com/tidwall/gjson v1.17.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
@@ -220,27 +227,25 @@ require (
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect
- go.opentelemetry.io/otel v1.19.0 // indirect
- go.opentelemetry.io/otel/metric v1.19.0 // indirect
- go.opentelemetry.io/otel/trace v1.19.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
+ go.opentelemetry.io/otel v1.24.0 // indirect
+ go.opentelemetry.io/otel/metric v1.24.0 // indirect
+ go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
- golang.org/x/crypto v0.23.0 // indirect
- golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 // indirect
- golang.org/x/sync v0.7.0 // indirect
- golang.org/x/sys v0.20.0 // indirect
- golang.org/x/term v0.20.0 // indirect
- golang.org/x/text v0.15.0 // indirect
- golang.org/x/tools v0.19.0 // indirect
+ golang.org/x/crypto v0.28.0 // indirect
+ golang.org/x/sync v0.8.0 // indirect
+ golang.org/x/sys v0.26.0 // indirect
+ golang.org/x/term v0.25.0 // indirect
+ golang.org/x/text v0.19.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
- google.golang.org/grpc v1.59.0 // indirect
- google.golang.org/protobuf v1.33.0 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect
+ google.golang.org/grpc v1.62.1 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
- modernc.org/libc v1.49.3 // indirect
+ modernc.org/libc v1.55.3 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/memory v1.8.0 // indirect
modernc.org/strutil v1.2.0 // indirect
diff --git a/go.sum b/go.sum
index 39afa2f86..c4f66295d 100644
--- a/go.sum
+++ b/go.sum
@@ -45,8 +45,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
-dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
+dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
+dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
@@ -57,9 +57,11 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg6
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
+github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M=
-github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk=
+github.com/CycloneDX/cyclonedx-go v0.9.1 h1:yffaWOZsv77oTJa/SdVZYdgAgFioCeycBUKkqS2qzQM=
+github.com/CycloneDX/cyclonedx-go v0.9.1/go.mod h1:NE/EWvzELOFlG6+ljX/QeMlVt9VKcTwu8u0ccsACEsw=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
@@ -67,24 +69,26 @@ github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJ
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
-github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
-github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
-github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
+github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0=
+github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
+github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs=
+github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
-github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
-github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
-github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=
-github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ=
+github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
+github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE=
github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY=
-github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
-github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
+github.com/adrg/xdg v0.5.1 h1:Im8iDbEFARltY09yOJlSGu4Asjk2vF85+3Dyru8uJ0U=
+github.com/adrg/xdg v0.5.1/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -95,8 +99,8 @@ github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9 h1:p0ZIe0htYOX284Y4
github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9/go.mod h1:3ZsFB9tzW3vl4gEiUeuSOMDnwroWxIxJelOOHUp8dSw=
github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa h1:pwlAn4O9SBUnlgfa69YcqIynbUyobLVFYu8HxSoCffA=
github.com/anchore/clio v0.0.0-20240522144804-d81e109008aa/go.mod h1:nD3H5uIvjxlfmakOBgtyFQbk5Zjp3l538kxfpHPslzI=
-github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f h1:NOhzafCyNYFi88qxkBFjMzQo4dRa1vDhBzx+0Uovx8Q=
-github.com/anchore/fangs v0.0.0-20240508143433-f016b099950f/go.mod h1:sVpRS2yNCw6tLVpvA1QSDVWTJVpCuAm8JNZgn4Sjz/k=
+github.com/anchore/fangs v0.0.0-20240903175602-e716ef12c23d h1:ZD4wdCBgJJzJybjTUIEiiupLF7B9H3WLuBTjspBO2Mc=
+github.com/anchore/fangs v0.0.0-20240903175602-e716ef12c23d/go.mod h1:Xh4ObY3fmoMzOEVXwDtS1uK44JC7+nRD0n29/1KYFYg=
github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537 h1:GjNGuwK5jWjJMyVppBjYS54eOiiSNv4Ba869k4wh72Q=
github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537/go.mod h1:1aiktV46ATCkuVg0O573ZrH56BUawTECPETbZyBcqT8=
github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a h1:nJ2G8zWKASyVClGVgG7sfM5mwoZlZ2zYpIzN2OhjWkw=
@@ -109,10 +113,10 @@ github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04 h1:VzprUTpc0v
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04/go.mod h1:6dK64g27Qi1qGQZ67gFmBFvEHScy0/C8qhQhNe5B5pQ=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=
-github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f h1:B/E9ixKNCasntpoch61NDaQyGPDXLEJlL+B9B/PbdbA=
-github.com/anchore/packageurl-go v0.1.1-0.20240507183024-848e011fc24f/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4=
-github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185 h1:SuViDJ27nZ+joGdKbAkxAlm7tYMt9NTxTZZ05po4hls=
-github.com/anchore/stereoscope v0.0.3-0.20240501181043-2e9894674185/go.mod h1:ckIamHiRMp8iBwWoTtE5Xkt9VQ5QC+6+O4VzwqyZr5Q=
+github.com/anchore/packageurl-go v0.1.1-0.20241018175412-5c22e6360c4f h1:dAQPIrQ3a5PBqZeZ+B9NGZsGmodk4NO9OjDIsQmQyQM=
+github.com/anchore/packageurl-go v0.1.1-0.20241018175412-5c22e6360c4f/go.mod h1:KoYIv7tdP5+CC9VGkeZV4/vGCKsY55VvoG+5dadg4YI=
+github.com/anchore/stereoscope v0.0.5-0.20241018131503-a38c93517fc7 h1:CBKDfuMWKRt12EnKtgT/an9FQSQI83mOU1KT57z81IU=
+github.com/anchore/stereoscope v0.0.5-0.20241018131503-a38c93517fc7/go.mod h1:wH79ZauZcd3erKPocg9+qhDC6Q/z125sD+Isi4d61a4=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
@@ -141,8 +145,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=
-github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
+github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q=
+github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
@@ -153,22 +157,18 @@ github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0=
-github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw=
-github.com/charmbracelet/bubbletea v0.26.3 h1:iXyGvI+FfOWqkB2V07m1DF3xxQijxjY2j8PqiXYqasg=
-github.com/charmbracelet/bubbletea v0.26.3/go.mod h1:bpZHfDHTYJC5g+FBK+ptJRCQotRC+Dhh3AoMxa/2+3Q=
+github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE=
+github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU=
+github.com/charmbracelet/bubbletea v1.1.1 h1:KJ2/DnmpfqFtDNVTvYZ6zpPFL9iRCRr0qqKOCvppbPY=
+github.com/charmbracelet/bubbletea v1.1.1/go.mod h1:9Ogk0HrdbHolIKHdjfFpyXJmiCzGwy+FesYkZr7hYU4=
github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
-github.com/charmbracelet/lipgloss v0.11.0 h1:UoAcbQ6Qml8hDwSWs0Y1cB5TEQuZkDPH/ZqwWWYTG4g=
-github.com/charmbracelet/lipgloss v0.11.0/go.mod h1:1UdRTH9gYgpcdNN5oBtjbu/IzNKtzVtb7sqN1t9LNn8=
-github.com/charmbracelet/x/ansi v0.1.1 h1:CGAduulr6egay/YVbGc8Hsu8deMg1xZ/bkaXTPi1JDk=
-github.com/charmbracelet/x/ansi v0.1.1/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw=
-github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ=
-github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28=
-github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI=
-github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw=
-github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4=
-github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ=
+github.com/charmbracelet/lipgloss v0.13.0 h1:4X3PPeoWEDCMvzDvGmTajSyYPcZM4+y8sCA/SsA3cjw=
+github.com/charmbracelet/lipgloss v0.13.0/go.mod h1:nw4zy0SBX/F/eAO1cWdcvy6qnkDUxr8Lw7dvFrAIbbY=
+github.com/charmbracelet/x/ansi v0.2.3 h1:VfFN0NUpcjBRd4DnKfRaIRo53KRgey/nhOoEqosGDEY=
+github.com/charmbracelet/x/ansi v0.2.3/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw=
+github.com/charmbracelet/x/term v0.2.0 h1:cNB9Ot9q8I711MyZ7myUR5HFWL/lc3OpU8jZ4hwm0x0=
+github.com/charmbracelet/x/term v0.2.0/go.mod h1:GVxgxAbjUrmpvIINHIQnJJKpMlHiZ4cktEQCN6GWyF0=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
@@ -190,18 +190,24 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
-github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw=
-github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE=
+github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ=
+github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw=
+github.com/containerd/containerd/api v1.7.19 h1:VWbJL+8Ap4Ju2mx9c9qS1uFSB1OVYr5JJrW2yT5vFoA=
+github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig=
github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM=
github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ=
+github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4=
+github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY=
github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
+github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
+github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k=
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
-github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs=
-github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak=
+github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU=
+github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=
github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4=
github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -209,12 +215,12 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE=
-github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
+github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=
+github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -225,12 +231,12 @@ github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4i
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/docker/cli v24.0.0+incompatible h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM=
-github.com/docker/cli v24.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v27.3.1+incompatible h1:qEGdFBF3Xu6SCvCYhc7CzaQTlBmqDuzxPDpigSyeKQQ=
+github.com/docker/cli v27.3.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v26.1.3+incompatible h1:lLCzRbrVZrljpVNobJu1J2FHk8V0s4BawoZippkc+xo=
-github.com/docker/docker v26.1.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI=
+github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
@@ -275,24 +281,24 @@ github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA=
github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI=
github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
-github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
-github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro=
-github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
+github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc=
+github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/github/go-spdx/v2 v2.2.0 h1:yBBLMasHA70Ujd35OpL/OjJOWWVNXcJGbars0GinGRI=
-github.com/github/go-spdx/v2 v2.2.0/go.mod h1:hMCrsFgT0QnCwn7G8gxy/MxMpy67WgZrwFeISTn0o6w=
+github.com/github/go-spdx/v2 v2.3.2 h1:IfdyNHTqzs4zAJjXdVQfRnxt1XMfycXoHBE2Vsm1bjs=
+github.com/github/go-spdx/v2 v2.3.2/go.mod h1:2ZxKsOhvBp+OYBDlsGnUMcchLeo2mrpEBn2L1C+U3IQ=
github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8=
github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
-github.com/gkampitakis/go-snaps v0.5.4 h1:GX+dkKmVsRenz7SoTbdIEL4KQARZctkMiZ8ZKprRwT8=
-github.com/gkampitakis/go-snaps v0.5.4/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y=
+github.com/gkampitakis/go-snaps v0.5.7 h1:uVGjHR4t4pPHU944udMx7VKHpwepZXmvDMF+yDmI0rg=
+github.com/gkampitakis/go-snaps v0.5.7/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y=
github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4=
github.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0=
github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=
@@ -313,16 +319,16 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
+github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc=
github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
-github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
+github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
+github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
@@ -359,8 +365,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
@@ -382,8 +388,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY=
-github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI=
+github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo=
+github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=
github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY=
@@ -409,7 +415,6 @@ github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8I
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -461,8 +466,8 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
-github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
-github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
+github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
+github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk=
github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
@@ -471,9 +476,6 @@ github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
-github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
-github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
@@ -481,8 +483,8 @@ github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy77
github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
-github.com/jedib0t/go-pretty/v6 v6.5.9 h1:ACteMBRrrmm1gMsXe9PSTOClQ63IXDUt03H5U+UV8OU=
-github.com/jedib0t/go-pretty/v6 v6.5.9/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E=
+github.com/jedib0t/go-pretty/v6 v6.6.1 h1:iJ65Xjb680rHcikRj6DSIbzCex2huitmc7bDtxYVWyc=
+github.com/jedib0t/go-pretty/v6 v6.6.1/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E=
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -520,8 +522,9 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 h1:bqDmpDG49ZRnB5PcgP0RXtQvnMSgIF14M7CBd2shtXs=
github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
+github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
+github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=
@@ -549,9 +552,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw=
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
-github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
-github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
-github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
+github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
@@ -561,7 +563,6 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -574,19 +575,22 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
-github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g=
-github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
+github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=
+github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=
github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg=
+github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo=
+github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
+github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=
+github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -600,8 +604,6 @@ github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
-github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
-github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@@ -615,12 +617,10 @@ github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
-github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
-github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss=
-github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8=
-github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w=
-github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
+github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
+github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
+github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -630,11 +630,11 @@ github.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrp
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
-github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
+github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
-github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pierrec/lz4/v4 v4.1.19 h1:tYLzDnjDXh9qIxSTKHwXwOYmm9d887Y7Y1ZkyXYHAN4=
+github.com/pierrec/lz4/v4 v4.1.19/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -663,14 +663,12 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo=
github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=
github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
-github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
@@ -682,15 +680,15 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/saferwall/pe v1.5.3 h1:tZ2KJWeJK6N2jjJx+B9hm+wq6qe0o56pql2PXUaQ9eI=
-github.com/saferwall/pe v1.5.3/go.mod h1:mJx+PuptmNpoPFBNhWs/uDMFL/kTHVZIkg0d4OUJFbQ=
+github.com/saferwall/pe v1.5.4 h1:tLmMggEMUfeqrpJ25zS/okUQmyFdD5xWKL2+z9njCqg=
+github.com/saferwall/pe v1.5.4/go.mod h1:mJx+PuptmNpoPFBNhWs/uDMFL/kTHVZIkg0d4OUJFbQ=
github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
-github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f h1:MvTmaQdww/z0Q4wrYjDSCcZ78NoftLQyHBSLW/Cx79Y=
-github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
+github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=
+github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo=
@@ -700,21 +698,20 @@ github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jN
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ=
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
-github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
-github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
+github.com/sebdah/goldie/v2 v2.5.5 h1:rx1mwF95RxZ3/83sdS4Yp7t2C5TCokvWP4TBRbAyEWY=
+github.com/sebdah/goldie/v2 v2.5.5/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d h1:RQqyEogx5J6wPdoxqL132b100j8KjcVHO1c0KLRoIhc=
github.com/secDre4mer/pkcs7 v0.0.0-20240322103146-665324a4461d/go.mod h1:PegD7EVqlN88z7TpCqH92hHP+GBpfomGCCnw1PFtNOA=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
-github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
-github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
+github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
+github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
@@ -724,25 +721,24 @@ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9yS
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM=
-github.com/spdx/tools-golang v0.5.4 h1:fRW4iz16P1ZCUtWStFqS6YiMgnK7WgfTFU/lrsYlvqY=
-github.com/spdx/tools-golang v0.5.4/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE=
+github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk=
+github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
-github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
-github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
+github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
+github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
-github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
-github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
+github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
+github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=
-github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
-github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
+github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
+github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
@@ -766,10 +762,10 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
-github.com/sylabs/sif/v2 v2.11.5 h1:7ssPH3epSonsTrzbS1YxeJ9KuqAN7ISlSM61a7j/mQM=
-github.com/sylabs/sif/v2 v2.11.5/go.mod h1:GBoZs9LU3e4yJH1dcZ3Akf/jsqYgy5SeguJQC+zd75Y=
-github.com/sylabs/squashfs v0.6.1 h1:4hgvHnD9JGlYWwT0bPYNt9zaz23mAV3Js+VEgQoRGYQ=
-github.com/sylabs/squashfs v0.6.1/go.mod h1:ZwpbPCj0ocIvMy2br6KZmix6Gzh6fsGQcCnydMF+Kx8=
+github.com/sylabs/sif/v2 v2.19.1 h1:1eeMmFc8elqJe60ZiWwXgL3gMheb0IP4GmNZ4q0IEA0=
+github.com/sylabs/sif/v2 v2.19.1/go.mod h1:U1SUhvl8X1JIxAylC0DYz1fa/Xba6EMZD1dGPGBH83E=
+github.com/sylabs/squashfs v1.0.0 h1:xAyMS21ogglkuR5HaY55PCfqY3H32ma9GkasTYo28Zg=
+github.com/sylabs/squashfs v1.0.0/go.mod h1:rhWzvgefq1X+R+LZdts10hfMsTg3g74OfGunW8tvg/4=
github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo=
github.com/terminalstatic/go-xsd-validate v0.1.5/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw=
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
@@ -791,8 +787,8 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
-github.com/vbatts/go-mtree v0.5.3 h1:S/jYlfG8rZ+a0bhZd+RANXejy7M4Js8fq9U+XoWTd5w=
-github.com/vbatts/go-mtree v0.5.3/go.mod h1:eXsdoPMdL2jcJx6HweWi9lYQxBsTp4lNhqqAjgkZUg8=
+github.com/vbatts/go-mtree v0.5.4 h1:OMAb8jaCyiFA7zXj0Zc/oARcxBDBoeu2LizjB8BVJl0=
+github.com/vbatts/go-mtree v0.5.4/go.mod h1:5GqJbVhm9BBiCc4K5uc/c42FPgXulHaQs4sFUEfIWMo=
github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=
github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY=
github.com/vifraa/gopom v1.0.0 h1:L9XlKbyvid8PAIK8nr0lihMApJQg/12OBvMA28BcWh0=
@@ -834,20 +830,20 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q=
-go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs=
-go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
+go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
+go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU=
-go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE=
-go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8=
-go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o=
-go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
-go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg=
-go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo=
+go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
+go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
+go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
+go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
+go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
+go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
@@ -872,11 +868,10 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
-golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
+golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -917,8 +912,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
+golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -959,15 +954,14 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
+golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -998,8 +992,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1074,20 +1068,19 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
+golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
-golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
+golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1100,8 +1093,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
+golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1163,8 +1156,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
-golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1273,12 +1266,12 @@ google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ6
google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
-google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
-google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo=
-google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc=
+google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y=
+google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s=
+google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ=
+google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -1306,8 +1299,8 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
-google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
+google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
+google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1322,8 +1315,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1342,7 +1335,6 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -1357,18 +1349,18 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-modernc.org/cc/v4 v4.20.0 h1:45Or8mQfbUqJOG9WaxvlFYOAQO0lQ5RvqBcFCXngjxk=
-modernc.org/cc/v4 v4.20.0/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
-modernc.org/ccgo/v4 v4.16.0 h1:ofwORa6vx2FMm0916/CkZjpFPSR70VwTjUCe2Eg5BnA=
-modernc.org/ccgo/v4 v4.16.0/go.mod h1:dkNyWIjFrVIZ68DTo36vHK+6/ShBn4ysU61So6PIqCI=
+modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ=
+modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
+modernc.org/ccgo/v4 v4.19.2 h1:lwQZgvboKD0jBwdaeVCTouxhxAyN6iawF3STraAal8Y=
+modernc.org/ccgo/v4 v4.19.2/go.mod h1:ysS3mxiMV38XGRTTcgo0DQTeTmAO4oCmJl1nX9VFI3s=
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
-modernc.org/libc v1.49.3 h1:j2MRCRdwJI2ls/sGbeSk0t2bypOG/uvPZUsGQFDulqg=
-modernc.org/libc v1.49.3/go.mod h1:yMZuGkn7pXbKfoT/M35gFJOAEdSKdxL0q64sF7KqCDo=
+modernc.org/libc v1.55.3 h1:AzcW1mhlPNrRtjS5sS+eW2ISCgSOLLNyFzRh/V3Qj/U=
+modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
@@ -1377,8 +1369,8 @@ modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
-modernc.org/sqlite v1.29.10 h1:3u93dz83myFnMilBGCOLbr+HjklS6+5rJLx4q86RDAg=
-modernc.org/sqlite v1.29.10/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA=
+modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM=
+modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k=
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
diff --git a/install.sh b/install.sh
index f5680271e..1c2f49f0f 100755
--- a/install.sh
+++ b/install.sh
@@ -2,33 +2,25 @@
# note: we require errors to propagate (don't set -e)
set -u
-PROJECT_NAME="syft"
+PROJECT_NAME=syft
OWNER=anchore
REPO="${PROJECT_NAME}"
GITHUB_DOWNLOAD_PREFIX=https://github.com/${OWNER}/${REPO}/releases/download
INSTALL_SH_BASE_URL=https://raw.githubusercontent.com/${OWNER}/${PROJECT_NAME}
PROGRAM_ARGS=$@
-# do not change the name of this parameter (this must always be backwards compatible)
-DOWNLOAD_TAG_INSTALL_SCRIPT=${DOWNLOAD_TAG_INSTALL_SCRIPT:-true}
+# signature verification options
-#
-# usage [script-name]
-#
-usage() (
- this=$1
- cat </dev/null | tr '\t' ' ' | cut -d ' ' -f 1)
+ target_basename=${target##*/}
+ want=$(grep "${target_basename}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cut -d ' ' -f 1)
if [ -z "$want" ]; then
- log_err "hash_sha256_verify unable to find checksum for '${TARGET}' in '${checksums}'"
+ log_err "hash_sha256_verify unable to find checksum for '${target}' in '${checksums}'"
return 1
fi
- got=$(hash_sha256 "$TARGET")
+ got=$(hash_sha256 "$target")
if [ "$want" != "$got" ]; then
- log_err "hash_sha256_verify checksum for '$TARGET' did not verify ${want} vs $got"
+ log_err "hash_sha256_verify checksum for '$target' did not verify ${want} vs $got"
return 1
fi
)
@@ -358,30 +350,71 @@ github_release_tag() (
echo "$tag"
)
-# download_github_release_checksums [release-url-prefix] [name] [version] [output-dir]
+# github_release_asset_url [release-url-prefix] [name] [version] [output-dir] [filename]
#
-# outputs path to the downloaded checksums file
+# outputs the url to the release asset
#
-download_github_release_checksums() (
+github_release_asset_url() (
+ download_url="$1"
+ name="$2"
+ version="$3"
+ filename="$4"
+
+ complete_filename="${name}_${version}_${filename}"
+ complete_url="${download_url}/${complete_filename}"
+
+ echo "${complete_url}"
+)
+
+# download_github_release_checksums_files [release-url-prefix] [name] [version] [output-dir] [filename]
+#
+# outputs path to the downloaded checksums related file
+#
+download_github_release_checksums_files() (
download_url="$1"
name="$2"
version="$3"
output_dir="$4"
+ filename="$5"
- log_trace "download_github_release_checksums(url=${download_url}, name=${name}, version=${version}, output_dir=${output_dir})"
+ log_trace "download_github_release_checksums_files(url=${download_url}, name=${name}, version=${version}, output_dir=${output_dir}, filename=${filename})"
- checksum_filename=${name}_${version}_checksums.txt
- checksum_url=${download_url}/${checksum_filename}
- output_path="${output_dir}/${checksum_filename}"
+ complete_filename="${name}_${version}_${filename}"
+ complete_url=$(github_release_asset_url "${download_url}" "${name}" "${version}" "${filename}")
+ output_path="${output_dir}/${complete_filename}"
- http_download "${output_path}" "${checksum_url}" ""
+ http_download "${output_path}" "${complete_url}" ""
asset_file_exists "${output_path}"
- log_trace "download_github_release_checksums() returned '${output_path}'"
+ log_trace "download_github_release_checksums_files() returned '${output_path}' for file '${complete_filename}'"
echo "${output_path}"
)
+# download_github_release_checksums [release-url-prefix] [name] [version] [output-dir]
+#
+# outputs path to the downloaded checksums file
+#
+download_github_release_checksums() (
+ download_github_release_checksums_files "$@" "checksums.txt"
+)
+
+# github_release_checksums_sig_url [release-url-prefix] [name] [version]
+#
+# outputs the url to the release checksums signature file
+#
+github_release_checksums_sig_url() (
+ github_release_asset_url "$@" "checksums.txt.sig"
+)
+
+# github_release_checksums_cert_url [release-url-prefix] [name] [version]
+#
+# outputs the url to the release checksums certificate file
+#
+github_release_checksums_cert_url() (
+ github_release_asset_url "$@" "checksums.txt.pem"
+)
+
# search_for_asset [checksums-file-path] [name] [os] [arch] [format]
#
# outputs name of the asset to download
@@ -535,7 +568,10 @@ download_and_install_asset() (
format="$8"
binary="$9"
- asset_filepath=$(download_asset "${download_url}" "${download_path}" "${name}" "${os}" "${arch}" "${version}" "${format}")
+ if ! asset_filepath=$(download_asset "${download_url}" "${download_path}" "${name}" "${os}" "${arch}" "${version}" "${format}"); then
+ log_err "could not download asset for os='${os}' arch='${arch}' format='${format}'"
+ return 1
+ fi
# don't continue if we couldn't download an asset
if [ -z "${asset_filepath}" ]; then
@@ -546,6 +582,36 @@ download_and_install_asset() (
install_asset "${asset_filepath}" "${install_path}" "${binary}"
)
+# verify_sign [checksums-file-path] [certificate-reference] [signature-reference] [version]
+#
+# attempts verify the signature of the checksums file from the release workflow in Github Actions run against the main branch.
+#
+verify_sign() {
+ checksums_file=$1
+ cert_reference=$2
+ sig_reference=$3
+
+ log_trace "verifying artifact $1"
+
+ log_file=$(mktemp)
+
+ ${COSIGN_BINARY} \
+ verify-blob "$checksums_file" \
+ --certificate "$cert_reference" \
+ --signature "$sig_reference" \
+ --certificate-identity "https://github.com/${OWNER}/${REPO}/.github/workflows/release.yaml@refs/heads/main" \
+ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" > "${log_file}" 2>&1
+
+ if [ $? -ne 0 ]; then
+ log_err "$(cat "${log_file}")"
+ rm -f "${log_file}"
+ return 1
+ fi
+
+ rm -f "${log_file}"
+}
+
+
# download_asset [release-url-prefix] [download-path] [name] [os] [arch] [version] [format] [binary]
#
# outputs the path to the downloaded asset asset_filepath
@@ -572,6 +638,20 @@ download_asset() (
return 1
fi
+ if [ "$VERIFY_SIGN" = true ]; then
+ checksum_sig_file_url=$(github_release_checksums_sig_url "${download_url}" "${name}" "${version}")
+ log_trace "checksums signature url: ${checksum_sig_file_url}"
+
+ checksums_cert_file_url=$(github_release_checksums_cert_url "${download_url}" "${name}" "${version}")
+ log_trace "checksums certificate url: ${checksums_cert_file_url}"
+
+ if ! verify_sign "${checksums_filepath}" "${checksums_cert_file_url}" "${checksum_sig_file_url}"; then
+ log_err "signature verification failed"
+ return 1
+ fi
+ log_info "signature verification succeeded"
+ fi
+
asset_url="${download_url}/${asset_filename}"
asset_filepath="${destination}/${asset_filename}"
http_download "${asset_filepath}" "${asset_url}" ""
@@ -609,6 +689,79 @@ install_asset() (
install "${archive_dir}/${binary}" "${destination}/"
)
+# compare two semver strings. Returns 0 if version1 >= version2, 1 otherwise.
+# Note: pre-release (-) and metadata (+) are not supported.
+compare_semver() {
+ # remove leading 'v' if present
+ version1=${1#v}
+ version2=${2#v}
+
+ IFS=. read -r major1 minor1 patch1 <= '$VERIFY_SIGN_SUPPORTED_VERSION')"
+ log_err "aborting installation"
+ return 1
+ else
+ log_trace "${PROJECT_NAME} release '$version' supports signature verification (>= '$VERIFY_SIGN_SUPPORTED_VERSION')"
+ fi
+
+ # will invoking an earlier version of this script work (considering the -v flag)?
+ if ! compare_semver "$version" "$VERIFY_SIGN_FLAG_VERSION"; then
+ # the -v argument did not always exist, so we cannot be guaranteed that invoking an earlier version of this script
+ # will work (error with "illegal option -v"). However, the user requested signature verification, so we will
+ # attempt to install the application with this version of the script (keeping signature verification).
+ DOWNLOAD_TAG_INSTALL_SCRIPT=false
+ log_debug "provided version install script does not support -v flag (>= '$VERIFY_SIGN_FLAG_VERSION'), using current script for installation"
+ else
+ log_trace "provided version install script supports -v flag (>= '$VERIFY_SIGN_FLAG_VERSION')"
+ fi
+
+ # check to see if the cosign binary is installed
+ if is_command "${COSIGN_BINARY}"; then
+ log_trace "${COSIGN_BINARY} binary is installed"
+ else
+ log_err "signature verification is requested but ${COSIGN_BINARY} binary is not installed (see https://docs.sigstore.dev/system_config/installation/ to install it)"
+ return 1
+ fi
+}
+
main() (
# parse arguments
@@ -616,7 +769,7 @@ main() (
install_dir=${install_dir:-./bin}
# note: never change the program flags or arguments (this must always be backwards compatible)
- while getopts "b:dh?x" arg; do
+ while getopts "b:dvh?x" arg; do
case "$arg" in
b) install_dir="$OPTARG" ;;
d)
@@ -628,25 +781,37 @@ main() (
log_set_priority $log_trace_priority
fi
;;
- h | \?) usage "$0" ;;
+ v) VERIFY_SIGN=true;;
+ h | \?)
+ cat < i && tt.seekOffsets[i] >= 0 {
- _, err := bs.Seek(tt.seekOffsets[i], tt.seekWhence[i])
- tt.seekError(t, err)
- if err != nil {
- continue
- }
- }
-
- if length >= 0 {
- buf := make([]byte, length)
- n, err := bs.Read(buf)
- tt.readError(t, err)
- if err != nil {
- continue
- }
- assert.Equalf(t, tt.expectedReads[i], string(buf[:n]), "read index %d", i)
- }
- }
- })
- }
-}
-
-func TestBufferedSeeker_Close(t *testing.T) {
- bs := NewBufferedSeeker(io.NopCloser(bytes.NewBufferString("Hello, World!")))
- err := bs.Close()
- assert.NoError(t, err)
- n, err := bs.Read(make([]byte, 1))
- assert.Equal(t, 0, n)
- assert.Error(t, err)
-}
diff --git a/internal/cache/README.md b/internal/cache/README.md
new file mode 100644
index 000000000..b24a6f934
--- /dev/null
+++ b/internal/cache/README.md
@@ -0,0 +1,51 @@
+# Caching
+
+All caches are created from a global `manager`. By default this is a `bypassedCache`, which performs no caching.
+One benefit of this is that tests don't need to worry about caching causing issues unless they explicitly need
+to test the cache and can opt-in using the `cache.TestCache(t)` helper.
+
+Syft sets a `filesystemCache` when the [cache options](../../cmd/syft/internal/options/cache.go) are loaded.
+
+When using the `filesystemCache` all items are stored on disk under a root directory, generally in the form of:
+```
+///path/to/data
+```
+
+# Using the cache
+
+The easiest and preferred method to use the cache is a `cache.Resolver`, which automatically creates a ``
+based on the _structure_ of the provided type.
+If the structure changes in any way it will end up with a new version key and all will re populate this new key,
+ignoring cached values from older, different versions.
+The resolver will store items using the `json` package to serialize/deserialize values, so to save space
+it is encouraged to use `omitempty`. For example:
+
+```go
+type myCacheItem struct {
+ Name string `json:"name",omitempty`
+}
+```
+
+It is possible to use core types such as `pkg.Package` as long as they support the standard `json` serialization,
+but this is discouraged in order to decouple changes to them from affecting the information stored in the cache.
+
+To get a cache for this type:
+```go
+resolver := cache.GetResolver[myCacheItem]("myCacheName", "v1")
+```
+
+Using the `resolver` is a single call, which manages checking for items in the cache, expiry times,
+and if not found invoking the callback to populate the cache and return a value:
+```go
+data := resolver.Resolve("some/cache/key", func() (myCacheItem, error) {
+ // do things to return a myCacheItem or error
+})
+```
+
+If it is common that checking for an item will result in errors, and you do not want to re-run the resolve function
+when errors are encountered, instead of using `GetResolver`, you can use `GetResolverCachingErrors`, which is useful
+for things such as resolving artifacts over a network, where a number of them will not be resolved, and you do not want
+to continue to have the expense of running the network resolution. This should be used when it is acceptable a network
+outage and cached errors is an acceptable risk.
+
+An example can be seen in the [golang cataloger](../../syft/pkg/cataloger/golang/licenses.go) fetching remote licenses.
diff --git a/internal/cache/bypass.go b/internal/cache/bypass.go
new file mode 100644
index 000000000..4d32f1a61
--- /dev/null
+++ b/internal/cache/bypass.go
@@ -0,0 +1,24 @@
+package cache
+
+import "io"
+
+type bypassedCache struct{}
+
+func (b *bypassedCache) Read(_ string) (ReaderAtCloser, error) {
+ return nil, errNotFound
+}
+
+func (b *bypassedCache) Write(_ string, contents io.Reader) error {
+ if closer, ok := contents.(io.Closer); ok {
+ _ = closer.Close()
+ }
+ return nil
+}
+
+func (b *bypassedCache) GetCache(_, _ string) Cache {
+ return b
+}
+
+func (b *bypassedCache) RootDirs() []string {
+ return nil
+}
diff --git a/internal/cache/cache.go b/internal/cache/cache.go
new file mode 100644
index 000000000..3ca2ece98
--- /dev/null
+++ b/internal/cache/cache.go
@@ -0,0 +1,49 @@
+package cache
+
+import (
+ "io"
+)
+
+// Manager is responsible for managing cache data and instantiating all caches
+type Manager interface {
+ // GetCache returns a cache scoped to the given named, versioned data
+ GetCache(name, version string) Cache
+
+ // RootDirs returns any root directories this cache manager uses
+ RootDirs() []string
+}
+
+// ReaderAtCloser is an amalgamation of: io.Reader, io.ReaderAt, and io.Closer
+type ReaderAtCloser interface {
+ io.Reader
+ io.ReaderAt
+ io.Closer
+}
+
+// Cache is what the application interacts with to get and set cached data
+type Cache interface {
+ // Read returns a reader for the cache value, if found and not expired
+ // or errors when unable to find / expired
+ Read(key string) (ReaderAtCloser, error)
+
+ // Write writes the contents of the reader to the cache
+ // and closes it, if the reader implements io.Closer
+ Write(key string, contents io.Reader) error
+}
+
+// GetManager returns the global cache manager, which is used to instantiate all caches
+func GetManager() Manager {
+ return manager
+}
+
+// SetManager sets the global cache manager, which is used to instantiate all caches.
+// Setting this to nil disables caching.
+func SetManager(m Manager) {
+ if m == nil {
+ manager = &bypassedCache{}
+ } else {
+ manager = m
+ }
+}
+
+var manager Manager = &bypassedCache{}
diff --git a/internal/cache/error_resolver.go b/internal/cache/error_resolver.go
new file mode 100644
index 000000000..efbf915aa
--- /dev/null
+++ b/internal/cache/error_resolver.go
@@ -0,0 +1,40 @@
+package cache
+
+import "fmt"
+
+// GetResolverCachingErrors returns a Resolver that caches errors and will return them
+// instead of continuing to call the provided resolve functions
+func GetResolverCachingErrors[T any](name, version string) Resolver[T] {
+ return &errorResolver[T]{
+ resolver: GetResolver[errResponse[T]](name, version),
+ }
+}
+
+type errResponse[T any] struct {
+ Error string `json:"err,omitempty"`
+ Value T `json:"val,omitempty"`
+}
+
+type errorResolver[T any] struct {
+ resolver Resolver[errResponse[T]]
+}
+
+func (r *errorResolver[T]) Resolve(key string, resolver resolverFunc[T]) (T, error) {
+ v, err := r.resolver.Resolve(key, func() (errResponse[T], error) {
+ v, err := resolver()
+ out := errResponse[T]{
+ Value: v,
+ }
+ if err != nil {
+ out.Error = err.Error()
+ }
+ return out, nil
+ })
+ if err != nil {
+ return v.Value, err
+ }
+ if v.Error != "" {
+ return v.Value, fmt.Errorf("failed to resolve cache: %s", v.Error)
+ }
+ return v.Value, nil
+}
diff --git a/internal/cache/filesystem.go b/internal/cache/filesystem.go
new file mode 100644
index 000000000..6e7175999
--- /dev/null
+++ b/internal/cache/filesystem.go
@@ -0,0 +1,120 @@
+package cache
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "net/url"
+ "os"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "time"
+
+ "github.com/spf13/afero"
+
+ "github.com/anchore/syft/internal/log"
+)
+
+// NewFromDir creates a new cache manager which returns caches stored on disk, rooted at the given directory
+func NewFromDir(dir string, ttl time.Duration) (Manager, error) {
+ dir = filepath.Clean(dir)
+ fsys, err := subFs(afero.NewOsFs(), dir)
+ if err != nil {
+ return nil, err
+ }
+ return &filesystemCache{
+ dir: dir,
+ fs: fsys,
+ ttl: ttl,
+ }, nil
+}
+
+const filePermissions = 0700
+const dirPermissions = os.ModeDir | filePermissions
+
+type filesystemCache struct {
+ dir string
+ fs afero.Fs
+ ttl time.Duration
+}
+
+func (d *filesystemCache) GetCache(name, version string) Cache {
+ fsys, err := subFs(d.fs, name, version)
+ if err != nil {
+ log.Warnf("error getting cache for: %s/%s: %v", name, version, err)
+ return &bypassedCache{}
+ }
+ return &filesystemCache{
+ dir: filepath.Join(d.dir, name, version),
+ fs: fsys,
+ ttl: d.ttl,
+ }
+}
+
+func (d *filesystemCache) RootDirs() []string {
+ if d.dir == "" {
+ return nil
+ }
+ return []string{d.dir}
+}
+
+func (d *filesystemCache) Read(key string) (ReaderAtCloser, error) {
+ path := makeDiskKey(key)
+ f, err := d.fs.Open(path)
+ if err != nil {
+ log.Tracef("no cache entry for %s %s: %v", d.dir, key, err)
+ return nil, errNotFound
+ } else if stat, err := f.Stat(); err != nil || stat == nil || time.Since(stat.ModTime()) > d.ttl {
+ log.Tracef("cache entry is too old for %s %s", d.dir, key)
+ return nil, errExpired
+ }
+ log.Tracef("using cache for %s %s", d.dir, key)
+ return f, nil
+}
+
+func (d *filesystemCache) Write(key string, contents io.Reader) error {
+ path := makeDiskKey(key)
+ return afero.WriteReader(d.fs, path, contents)
+}
+
+// subFs returns a writable directory with the given name under the root cache directory returned from findRoot,
+// the directory will be created if it does not exist
+func subFs(fsys afero.Fs, subDirs ...string) (afero.Fs, error) {
+ dir := filepath.Join(subDirs...)
+ dir = filepath.Clean(dir)
+ stat, err := fsys.Stat(dir)
+ if errors.Is(err, afero.ErrFileNotFound) {
+ err = fsys.MkdirAll(dir, dirPermissions)
+ if err != nil {
+ return nil, fmt.Errorf("unable to create directory at '%s': %v", dir, err)
+ }
+ stat, err = fsys.Stat(dir)
+ if err != nil {
+ return nil, err
+ }
+ }
+ if err != nil || stat == nil || !stat.IsDir() {
+ return nil, fmt.Errorf("unable to verify directory '%s': %v", dir, err)
+ }
+ fsys = afero.NewBasePathFs(fsys, dir)
+ return fsys, err
+}
+
+var keyReplacer = regexp.MustCompile("[^-._/a-zA-Z0-9]")
+
+// makeDiskKey makes a safe sub-path but not escape forward slashes, this allows for logical partitioning on disk
+func makeDiskKey(key string) string {
+ // encode single dot directory
+ if key == "." {
+ return "%2E"
+ }
+ // replace any disallowed chars with encoded form
+ key = keyReplacer.ReplaceAllStringFunc(key, url.QueryEscape)
+ // allow . in names but not ..
+ key = strings.ReplaceAll(key, "..", "%2E%2E")
+ return key
+}
+
+var errNotFound = fmt.Errorf("not found")
+var errExpired = fmt.Errorf("expired")
diff --git a/internal/cache/hash_type.go b/internal/cache/hash_type.go
new file mode 100644
index 000000000..c7b3c4a42
--- /dev/null
+++ b/internal/cache/hash_type.go
@@ -0,0 +1,71 @@
+package cache
+
+import (
+ "fmt"
+ "reflect"
+
+ "github.com/mitchellh/hashstructure/v2"
+)
+
+// hashType returns a stable hash based on the structure of the type
+func hashType[T any]() string {
+ // get the base type and hash an empty instance
+ var t T
+ empty := emptyValue(reflect.TypeOf(t)).Interface()
+ hash, err := hashstructure.Hash(empty, hashstructure.FormatV2, &hashstructure.HashOptions{
+ ZeroNil: false,
+ IgnoreZeroValue: false,
+ SlicesAsSets: false,
+ UseStringer: false,
+ })
+ if err != nil {
+ panic(fmt.Errorf("unable to use type as cache key: %w", err))
+ }
+ return fmt.Sprintf("%x", hash)
+}
+
+func emptyValue(t reflect.Type) reflect.Value {
+ switch t.Kind() {
+ case reflect.Pointer:
+ e := t.Elem()
+ v := emptyValue(e)
+ if v.CanAddr() {
+ return v.Addr()
+ }
+ ptrv := reflect.New(e)
+ ptrv.Elem().Set(v)
+ return ptrv
+ case reflect.Slice:
+ v := emptyValue(t.Elem())
+ s := reflect.MakeSlice(t, 1, 1)
+ s.Index(0).Set(v)
+ return s
+ case reflect.Struct:
+ v := reflect.New(t).Elem()
+ // get all empty field values, too
+ for i := 0; i < v.NumField(); i++ {
+ f := t.Field(i)
+ if isIgnored(f) {
+ continue
+ }
+ fv := v.Field(i)
+ if fv.CanSet() {
+ fv.Set(emptyValue(f.Type))
+ }
+ }
+ return v
+ default:
+ return reflect.New(t).Elem()
+ }
+}
+
+func isIgnored(f reflect.StructField) bool {
+ if !f.IsExported() {
+ return true
+ }
+ tag := f.Tag.Get("hash")
+ if tag == "-" || tag == "ignore" {
+ return true
+ }
+ return false
+}
diff --git a/internal/cache/memory.go b/internal/cache/memory.go
new file mode 100644
index 000000000..696f8c9be
--- /dev/null
+++ b/internal/cache/memory.go
@@ -0,0 +1,19 @@
+package cache
+
+import (
+ "time"
+
+ "github.com/spf13/afero"
+)
+
+// NewInMemory returns an in-memory only cache manager
+func NewInMemory(ttl time.Duration) Manager {
+ if ttl <= 0 {
+ return &bypassedCache{}
+ }
+ return &filesystemCache{
+ dir: "",
+ fs: afero.NewMemMapFs(),
+ ttl: ttl,
+ }
+}
diff --git a/internal/cache/resolver.go b/internal/cache/resolver.go
new file mode 100644
index 000000000..68af21a2b
--- /dev/null
+++ b/internal/cache/resolver.go
@@ -0,0 +1,83 @@
+package cache
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "path"
+
+ "github.com/anchore/syft/internal"
+ "github.com/anchore/syft/internal/log"
+)
+
+// Resolver interface provides a single Resolve method, which will return from cache
+// or call the provided resolve function to get the value if not available in cache
+type Resolver[T any] interface {
+ // Resolve attempts to resolve the given key from cache and convert it to the type of the cache,
+ // or calls the resolver function if unable to resolve a cached value
+ Resolve(key string, resolver resolverFunc[T]) (T, error)
+}
+
+// GetResolver returns a cache resolver for persistent cached data across Syft runs, stored in a unique
+// location based on the provided name and versioned by the type
+func GetResolver[T any](name, version string) Resolver[T] {
+ typeHash := hashType[T]()
+ versionKey := path.Join(version, typeHash)
+ return &cacheResolver[T]{
+ name: fmt.Sprintf("%s/%s", name, versionKey),
+ cache: manager.GetCache(name, versionKey),
+ }
+}
+
+const resolverKeySuffix = ".json"
+
+type resolverFunc[T any] func() (T, error)
+
+type cacheResolver[T any] struct {
+ name string
+ cache Cache
+}
+
+var _ interface {
+ Resolver[int]
+} = (*cacheResolver[int])(nil)
+
+func (r *cacheResolver[T]) Resolve(key string, resolver resolverFunc[T]) (T, error) {
+ key += resolverKeySuffix
+
+ rdr, err := r.cache.Read(key)
+ if rdr == nil || err != nil {
+ return r.resolveAndCache(key, resolver)
+ }
+ defer internal.CloseAndLogError(rdr, key)
+
+ dec := json.NewDecoder(rdr)
+ if dec == nil {
+ log.Tracef("error getting cache json decoder for %s %v: %v", r.name, key, err)
+ return r.resolveAndCache(key, resolver)
+ }
+ var t T
+ err = dec.Decode(&t)
+ if err != nil {
+ log.Tracef("error decoding cached entry for %s %v: %v", r.name, key, err)
+ return r.resolveAndCache(key, resolver)
+ }
+ // no error, able to resolve from cache
+ return t, nil
+}
+
+func (r *cacheResolver[T]) resolveAndCache(key string, resolver func() (T, error)) (T, error) {
+ t, err := resolver()
+ if err != nil {
+ return t, err
+ }
+ var data bytes.Buffer
+ enc := json.NewEncoder(&data)
+ enc.SetEscapeHTML(false)
+ err = enc.Encode(t)
+ if err != nil {
+ return t, err
+ }
+ err = r.cache.Write(key, &data)
+ return t, err
+}
diff --git a/internal/constants.go b/internal/constants.go
index f53b47ce7..4dd27cf79 100644
--- a/internal/constants.go
+++ b/internal/constants.go
@@ -3,5 +3,5 @@ package internal
const (
// JSONSchemaVersion is the current schema version output by the JSON encoder
// This is roughly following the "SchemaVer" guidelines for versioning the JSON schema. Please see schema/json/README.md for details on how to increment.
- JSONSchemaVersion = "16.0.12"
+ JSONSchemaVersion = "16.0.18"
)
diff --git a/internal/file/digest_test.go b/internal/file/digest_test.go
deleted file mode 100644
index df50798f2..000000000
--- a/internal/file/digest_test.go
+++ /dev/null
@@ -1,132 +0,0 @@
-package file
-
-import (
- "crypto"
- "os"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/file"
-)
-
-func TestCleanDigestAlgorithmName(t *testing.T) {
- tests := []struct {
- name string
- input string
- want string
- }{
- {
- name: "go case",
- input: "SHA-256",
- want: "sha256",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, CleanDigestAlgorithmName(tt.input))
- })
- }
-}
-
-func TestNewDigestsFromFile(t *testing.T) {
- require.NotEmpty(t, supportedHashAlgorithms())
-
- tests := []struct {
- name string
- fixture string
- hashes []crypto.Hash
- want []file.Digest
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "check supported hash algorithms",
- fixture: "test-fixtures/digest.txt",
- hashes: supportedHashAlgorithms(),
- want: []file.Digest{
- {
- Algorithm: "md5",
- Value: "e8818a24402ae7f8b874cdd9350c1b51",
- },
- {
- Algorithm: "sha1",
- Value: "eea4671d168c81fd52e615ed9fb3531a526f4748",
- },
- {
- Algorithm: "sha224",
- Value: "fd993e84c7afb449d34bcae7c5ee118f5c73b50170da05171523b22c",
- },
- {
- Algorithm: "sha256",
- Value: "cbf1a703b7e4a67529d6e17114880dfa9f879f3749872e1a9d4a20ac509165ad",
- },
- {
- Algorithm: "sha384",
- Value: "1eaded3f17fb8d7b731c9175a0f355d3a35575c3cb6cdda46a5272b632968d7257a5e6437d0efae599a81a1b2dcc81ba",
- },
- {
- Algorithm: "sha512",
- Value: "b49d5995456edba144dce750eaa8eae12af8fd08c076d401fcf78aac4172080feb70baaa5ed8c1b05046ec278446330fbf77e8ca9e60c03945ded761a641a7e1",
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- fh, err := os.Open(tt.fixture)
- require.NoError(t, err)
-
- got, err := NewDigestsFromFile(fh, tt.hashes)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
- assert.Equal(t, tt.want, got)
- })
- }
-}
-
-func TestHashers(t *testing.T) {
- tests := []struct {
- name string
- names []string
- want []crypto.Hash
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "check supported hash algorithms",
- names: []string{"MD-5", "shA1", "sHa224", "sha---256", "sha384", "sha512"},
- want: []crypto.Hash{
- crypto.MD5,
- crypto.SHA1,
- crypto.SHA224,
- crypto.SHA256,
- crypto.SHA384,
- crypto.SHA512,
- },
- },
- {
- name: "error on unsupported hash algorithm",
- names: []string{"made-up"},
- wantErr: require.Error,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
- got, err := Hashers(tt.names...)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
- assert.Equal(t, tt.want, got)
- })
- }
-}
diff --git a/internal/file/glob_match_test.go b/internal/file/glob_match_test.go
deleted file mode 100644
index aab2803dc..000000000
--- a/internal/file/glob_match_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package file
-
-import (
- "strings"
- "testing"
-)
-
-func TestGlobMatch(t *testing.T) {
- var tests = []struct {
- pattern string
- data string
- ok bool
- }{
- {"", "", true},
- {"x", "", false},
- {"", "x", false},
- {"abc", "abc", true},
- {"*", "abc", true},
- {"*c", "abc", true},
- {"*b", "abc", false},
- {"a*", "abc", true},
- {"b*", "abc", false},
- {"a*", "a", true},
- {"*a", "a", true},
- {"a*b*c*d*e*", "axbxcxdxe", true},
- {"a*b*c*d*e*", "axbxcxdxexxx", true},
- {"a*b?c*x", "abxbbxdbxebxczzx", true},
- {"a*b?c*x", "abxbbxdbxebxczzy", false},
- {"a*a*a*a*b", strings.Repeat("a", 100), false},
- {"*x", "xxx", true},
- {"/home/place/**", "/home/place/a/thing", true},
- }
-
- for _, test := range tests {
- if GlobMatch(test.pattern, test.data) != test.ok {
- t.Errorf("failed glob='%s' data='%s'", test.pattern, test.data)
- }
- }
-}
diff --git a/internal/file/normalize_hashes_test.go b/internal/file/normalize_hashes_test.go
deleted file mode 100644
index 8667ec605..000000000
--- a/internal/file/normalize_hashes_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package file
-
-import (
- "crypto"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestNormalizeHashes(t *testing.T) {
-
- tests := []struct {
- name string
- input []crypto.Hash
- want []crypto.Hash
- }{
- {
- name: "deduplicate hashes",
- input: []crypto.Hash{
- crypto.SHA1,
- crypto.SHA1,
- },
- want: []crypto.Hash{
- crypto.SHA1,
- },
- },
- {
- name: "sort hashes",
- input: []crypto.Hash{
- crypto.SHA512,
- crypto.SHA1,
- },
- want: []crypto.Hash{
- crypto.SHA1,
- crypto.SHA512,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, NormalizeHashes(tt.input))
- })
- }
-}
diff --git a/internal/file/test-fixtures/digest.txt b/internal/file/test-fixtures/digest.txt
deleted file mode 100644
index 887a7ea37..000000000
--- a/internal/file/test-fixtures/digest.txt
+++ /dev/null
@@ -1 +0,0 @@
-hello, file!
\ No newline at end of file
diff --git a/internal/file/test-fixtures/generate-zip-fixture-from-source-dir.sh b/internal/file/test-fixtures/generate-zip-fixture-from-source-dir.sh
deleted file mode 100755
index f73ea4ba0..000000000
--- a/internal/file/test-fixtures/generate-zip-fixture-from-source-dir.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-set -eux
-
-# $1 āā absolute path to destination file, should end with .zip, ideally
-# $2 āā absolute path to directory from which to add entries to the archive
-# $3 āā if files should be zip64 or not
-
-if [[$3]]; then
- pushd "$2" && find . -print | zip -fz "$1" -@ && popd
-else
- pushd "$2" && find . -print | zip "$1" -@ && popd
-fi
diff --git a/internal/file/test-fixtures/zip-source/b-file.txt b/internal/file/test-fixtures/zip-source/b-file.txt
deleted file mode 100644
index a8f5b7786..000000000
--- a/internal/file/test-fixtures/zip-source/b-file.txt
+++ /dev/null
@@ -1 +0,0 @@
-B file...
\ No newline at end of file
diff --git a/internal/file/test-fixtures/zip-source/some-dir/a-file.txt b/internal/file/test-fixtures/zip-source/some-dir/a-file.txt
deleted file mode 100644
index 365875220..000000000
--- a/internal/file/test-fixtures/zip-source/some-dir/a-file.txt
+++ /dev/null
@@ -1 +0,0 @@
-A file! nice!
\ No newline at end of file
diff --git a/internal/file/zip_file_helpers_test.go b/internal/file/zip_file_helpers_test.go
deleted file mode 100644
index a94304cca..000000000
--- a/internal/file/zip_file_helpers_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package file
-
-import (
- "os"
- "os/exec"
- "path"
- "path/filepath"
- "syscall"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-var expectedZipArchiveEntries = []string{
- "some-dir" + string(os.PathSeparator),
- filepath.Join("some-dir", "a-file.txt"),
- "b-file.txt",
- "nested.zip",
-}
-
-// createZipArchive creates a new ZIP archive file at destinationArchivePath based on the directory found at
-// sourceDirPath. It forces a zip64 archive if zip64 is "0".
-func createZipArchive(t testing.TB, sourceDirPath, destinationArchivePath string, zip64 bool) {
- t.Helper()
-
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatalf("unable to get cwd: %+v", err)
- }
- zip64Arg := "0"
- if zip64 {
- zip64Arg = "1"
- }
-
- cmd := exec.Command("./generate-zip-fixture-from-source-dir.sh", destinationArchivePath, path.Base(sourceDirPath), zip64Arg)
- cmd.Dir = filepath.Join(cwd, "test-fixtures")
-
- if err := cmd.Start(); err != nil {
- t.Fatalf("unable to start generate zip fixture script: %+v", err)
- }
-
- if err := cmd.Wait(); err != nil {
- if exiterr, ok := err.(*exec.ExitError); ok {
- // The program has exited with an exit code != 0
-
- // This works on both Unix and Windows. Although package
- // syscall is generally platform dependent, WaitStatus is
- // defined for both Unix and Windows and in both cases has
- // an ExitStatus() method with the same signature.
- if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
- if status.ExitStatus() != 0 {
- t.Fatalf("failed to generate fixture: rc=%d", status.ExitStatus())
- }
- }
- } else {
- t.Fatalf("unable to get generate fixture script result: %+v", err)
- }
- }
-
-}
-
-func assertNoError(t testing.TB, fn func() error) func() {
- return func() {
- assert.NoError(t, fn())
- }
-}
-
-// setupZipFileTest encapsulates common test setup work for zip file tests. It returns a cleanup function,
-// which should be called (typically deferred) by the caller, the path of the created zip archive, and an error,
-// which should trigger a fatal test failure in the consuming test. The returned cleanup function will never be nil
-// (even if there's an error), and it should always be called.
-func setupZipFileTest(t testing.TB, sourceDirPath string, zip64 bool) string {
- t.Helper()
-
- archivePrefix := path.Join(t.TempDir(), "syft-ziputil-archive-TEST-")
- destinationArchiveFilePath := archivePrefix + ".zip"
- t.Logf("archive path: %s", destinationArchiveFilePath)
- createZipArchive(t, sourceDirPath, destinationArchiveFilePath, zip64)
-
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatalf("unable to get cwd: %+v", err)
- }
-
- t.Logf("running from: %s", cwd)
-
- return destinationArchiveFilePath
-}
-
-// TODO: Consider moving any non-git asset generation to a task (e.g. make) that's run ahead of running go tests.
-func ensureNestedZipExists(t *testing.T, sourceDirPath string) error {
- t.Helper()
-
- nestedArchiveFilePath := path.Join(sourceDirPath, "nested.zip")
- createZipArchive(t, sourceDirPath, nestedArchiveFilePath, false)
-
- return nil
-}
diff --git a/internal/file/zip_file_manifest.go b/internal/file/zip_file_manifest.go
index 6306ca6b0..ac61e6ae9 100644
--- a/internal/file/zip_file_manifest.go
+++ b/internal/file/zip_file_manifest.go
@@ -1,7 +1,6 @@
package file
import (
- "fmt"
"os"
"sort"
"strings"
@@ -19,12 +18,13 @@ func NewZipFileManifest(archivePath string) (ZipFileManifest, error) {
zipReader, err := OpenZip(archivePath)
manifest := make(ZipFileManifest)
if err != nil {
- return manifest, fmt.Errorf("unable to open zip archive (%s): %w", archivePath, err)
+ log.Debugf("unable to open zip archive (%s): %v", archivePath, err)
+ return manifest, err
}
defer func() {
err = zipReader.Close()
if err != nil {
- log.Warnf("unable to close zip archive (%s): %+v", archivePath, err)
+ log.Debugf("unable to close zip archive (%s): %+v", archivePath, err)
}
}()
diff --git a/internal/file/zip_file_manifest_test.go b/internal/file/zip_file_manifest_test.go
deleted file mode 100644
index 75d445228..000000000
--- a/internal/file/zip_file_manifest_test.go
+++ /dev/null
@@ -1,142 +0,0 @@
-//go:build !windows
-// +build !windows
-
-package file
-
-import (
- "encoding/json"
- "os"
- "path"
- "testing"
-)
-
-func TestNewZipFileManifest(t *testing.T) {
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatal(err)
- }
-
- sourceDirPath := path.Join(cwd, "test-fixtures", "zip-source")
- err = ensureNestedZipExists(t, sourceDirPath)
- if err != nil {
- t.Fatal(err)
- }
-
- archiveFilePath := setupZipFileTest(t, sourceDirPath, false)
-
- actual, err := NewZipFileManifest(archiveFilePath)
- if err != nil {
- t.Fatalf("unable to extract from unzip archive: %+v", err)
- }
-
- if len(expectedZipArchiveEntries) != len(actual) {
- t.Fatalf("mismatched manifest: %d != %d", len(actual), len(expectedZipArchiveEntries))
- }
-
- for _, e := range expectedZipArchiveEntries {
- _, ok := actual[e]
- if !ok {
- t.Errorf("missing path: %s", e)
- }
- }
-
- if t.Failed() {
- b, err := json.MarshalIndent(actual, "", " ")
- if err != nil {
- t.Fatalf("can't show results: %+v", err)
- }
-
- t.Errorf("full result: %s", string(b))
- }
-}
-
-func TestNewZip64FileManifest(t *testing.T) {
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatal(err)
- }
-
- sourceDirPath := path.Join(cwd, "test-fixtures", "zip-source")
- archiveFilePath := setupZipFileTest(t, sourceDirPath, true)
-
- actual, err := NewZipFileManifest(archiveFilePath)
- if err != nil {
- t.Fatalf("unable to extract from unzip archive: %+v", err)
- }
-
- if len(expectedZipArchiveEntries) != len(actual) {
- t.Fatalf("mismatched manifest: %d != %d", len(actual), len(expectedZipArchiveEntries))
- }
-
- for _, e := range expectedZipArchiveEntries {
- _, ok := actual[e]
- if !ok {
- t.Errorf("missing path: %s", e)
- }
- }
-
- if t.Failed() {
- b, err := json.MarshalIndent(actual, "", " ")
- if err != nil {
- t.Fatalf("can't show results: %+v", err)
- }
-
- t.Errorf("full result: %s", string(b))
- }
-}
-
-func TestZipFileManifest_GlobMatch(t *testing.T) {
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatal(err)
- }
-
- sourceDirPath := path.Join(cwd, "test-fixtures", "zip-source")
- err = ensureNestedZipExists(t, sourceDirPath)
- if err != nil {
- t.Fatal(err)
- }
-
- archiveFilePath := setupZipFileTest(t, sourceDirPath, false)
-
- z, err := NewZipFileManifest(archiveFilePath)
- if err != nil {
- t.Fatalf("unable to extract from unzip archive: %+v", err)
- }
-
- cases := []struct {
- glob string
- expected string
- }{
- {
- "/b*",
- "b-file.txt",
- },
- {
- "*/a-file.txt",
- "some-dir/a-file.txt",
- },
- {
- "*/A-file.txt",
- "some-dir/a-file.txt",
- },
- {
- "**/*.zip",
- "nested.zip",
- },
- }
-
- for _, tc := range cases {
- t.Run(tc.glob, func(t *testing.T) {
- glob := tc.glob
-
- results := z.GlobMatch(true, glob)
-
- if len(results) == 1 && results[0] == tc.expected {
- return
- }
-
- t.Errorf("unexpected results for glob '%s': %+v", glob, results)
- })
- }
-}
diff --git a/internal/file/zip_file_traversal_test.go b/internal/file/zip_file_traversal_test.go
deleted file mode 100644
index d5a81d273..000000000
--- a/internal/file/zip_file_traversal_test.go
+++ /dev/null
@@ -1,315 +0,0 @@
-//go:build !windows
-// +build !windows
-
-package file
-
-import (
- "crypto/sha256"
- "encoding/json"
- "errors"
- "fmt"
- "io"
- "os"
- "path"
- "path/filepath"
- "strings"
- "testing"
-
- "github.com/go-test/deep"
- "github.com/stretchr/testify/assert"
-)
-
-func equal(r1, r2 io.Reader) (bool, error) {
- w1 := sha256.New()
- w2 := sha256.New()
- n1, err1 := io.Copy(w1, r1)
- if err1 != nil {
- return false, err1
- }
- n2, err2 := io.Copy(w2, r2)
- if err2 != nil {
- return false, err2
- }
-
- var b1, b2 [sha256.Size]byte
- copy(b1[:], w1.Sum(nil))
- copy(b2[:], w2.Sum(nil))
-
- return n1 != n2 || b1 == b2, nil
-}
-
-func TestUnzipToDir(t *testing.T) {
- cwd, err := os.Getwd()
- if err != nil {
- t.Fatal(err)
- }
-
- goldenRootDir := filepath.Join(cwd, "test-fixtures")
- sourceDirPath := path.Join(goldenRootDir, "zip-source")
- archiveFilePath := setupZipFileTest(t, sourceDirPath, false)
-
- unzipDestinationDir := t.TempDir()
-
- t.Logf("content path: %s", unzipDestinationDir)
-
- expectedPaths := len(expectedZipArchiveEntries)
- observedPaths := 0
-
- err = UnzipToDir(archiveFilePath, unzipDestinationDir)
- if err != nil {
- t.Fatalf("unable to unzip archive: %+v", err)
- }
-
- // compare the source dir tree and the unzipped tree
- err = filepath.Walk(unzipDestinationDir,
- func(path string, info os.FileInfo, err error) error {
- // We don't unzip the root archive dir, since there's no archive entry for it
- if path != unzipDestinationDir {
- t.Logf("unzipped path: %s", path)
- observedPaths++
- }
-
- if err != nil {
- t.Fatalf("this should not happen")
- return err
- }
-
- goldenPath := filepath.Join(sourceDirPath, strings.TrimPrefix(path, unzipDestinationDir))
-
- if info.IsDir() {
- i, err := os.Stat(goldenPath)
- if err != nil {
- t.Fatalf("unable to stat golden path: %+v", err)
- }
- if !i.IsDir() {
- t.Fatalf("mismatched file types: %s", goldenPath)
- }
- return nil
- }
-
- // this is a file, not a dir...
-
- testFile, err := os.Open(path)
- if err != nil {
- t.Fatalf("unable to open test file=%s :%+v", path, err)
- }
-
- goldenFile, err := os.Open(goldenPath)
- if err != nil {
- t.Fatalf("unable to open golden file=%s :%+v", goldenPath, err)
- }
-
- same, err := equal(testFile, goldenFile)
- if err != nil {
- t.Fatalf("could not compare files (%s, %s): %+v", goldenPath, path, err)
- }
-
- if !same {
- t.Errorf("paths are not the same (%s, %s)", goldenPath, path)
- }
-
- return nil
- })
-
- if err != nil {
- t.Errorf("failed to walk dir: %+v", err)
- }
-
- if observedPaths != expectedPaths {
- t.Errorf("missed test paths: %d != %d", observedPaths, expectedPaths)
- }
-}
-
-func TestContentsFromZip(t *testing.T) {
- tests := []struct {
- name string
- archivePrep func(tb testing.TB) string
- }{
- {
- name: "standard, non-nested zip",
- archivePrep: prepZipSourceFixture,
- },
- {
- name: "zip with prepended bytes",
- archivePrep: prependZipSourceFixtureWithString(t, "junk at the beginning of the file..."),
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- archivePath := test.archivePrep(t)
- expected := zipSourceFixtureExpectedContents()
-
- var paths []string
- for p := range expected {
- paths = append(paths, p)
- }
-
- actual, err := ContentsFromZip(archivePath, paths...)
- if err != nil {
- t.Fatalf("unable to extract from unzip archive: %+v", err)
- }
-
- assertZipSourceFixtureContents(t, actual, expected)
- })
- }
-}
-
-func prependZipSourceFixtureWithString(tb testing.TB, value string) func(tb testing.TB) string {
- if len(value) == 0 {
- tb.Fatalf("no bytes given to prefix")
- }
- return func(t testing.TB) string {
- archivePath := prepZipSourceFixture(t)
-
- // create a temp file
- tmpFile, err := os.CreateTemp(tb.TempDir(), "syft-ziputil-prependZipSourceFixtureWithString-")
- if err != nil {
- t.Fatalf("unable to create tempfile: %+v", err)
- }
- defer tmpFile.Close()
-
- // write value to the temp file
- if _, err := tmpFile.WriteString(value); err != nil {
- t.Fatalf("unable to write to tempfile: %+v", err)
- }
-
- // open the original archive
- sourceFile, err := os.Open(archivePath)
- if err != nil {
- t.Fatalf("unable to read source file: %+v", err)
- }
-
- // copy all contents from the archive to the temp file
- if _, err := io.Copy(tmpFile, sourceFile); err != nil {
- t.Fatalf("unable to copy source to dest: %+v", err)
- }
-
- sourceFile.Close()
-
- // remove the original archive and replace it with the temp file
- if err := os.Remove(archivePath); err != nil {
- t.Fatalf("unable to remove original source archive (%q): %+v", archivePath, err)
- }
-
- if err := os.Rename(tmpFile.Name(), archivePath); err != nil {
- t.Fatalf("unable to move new archive to old path (%q): %+v", tmpFile.Name(), err)
- }
-
- return archivePath
- }
-}
-
-func prepZipSourceFixture(t testing.TB) string {
- t.Helper()
- archivePrefix := path.Join(t.TempDir(), "syft-ziputil-prepZipSourceFixture-")
-
- // the zip utility will add ".zip" to the end of the given name
- archivePath := archivePrefix + ".zip"
-
- t.Logf("archive path: %s", archivePath)
-
- createZipArchive(t, "zip-source", archivePrefix, false)
-
- return archivePath
-}
-
-func zipSourceFixtureExpectedContents() map[string]string {
- return map[string]string{
- filepath.Join("some-dir", "a-file.txt"): "A file! nice!",
- filepath.Join("b-file.txt"): "B file...",
- }
-}
-
-func assertZipSourceFixtureContents(t testing.TB, actual map[string]string, expected map[string]string) {
- t.Helper()
- diffs := deep.Equal(actual, expected)
- if len(diffs) > 0 {
- for _, d := range diffs {
- t.Errorf("diff: %+v", d)
- }
-
- b, err := json.MarshalIndent(actual, "", " ")
- if err != nil {
- t.Fatalf("can't show results: %+v", err)
- }
-
- t.Errorf("full result: %s", string(b))
- }
-}
-
-// looks like there isn't a helper for this yet? https://github.com/stretchr/testify/issues/497
-func assertErrorAs(expectedErr interface{}) assert.ErrorAssertionFunc {
- return func(t assert.TestingT, actualErr error, i ...interface{}) bool {
- return errors.As(actualErr, &expectedErr)
- }
-}
-
-func TestSafeJoin(t *testing.T) {
- tests := []struct {
- prefix string
- args []string
- expected string
- errAssertion assert.ErrorAssertionFunc
- }{
- // go cases...
- {
- prefix: "/a/place",
- args: []string{
- "somewhere/else",
- },
- expected: "/a/place/somewhere/else",
- errAssertion: assert.NoError,
- },
- {
- prefix: "/a/place",
- args: []string{
- "somewhere/../else",
- },
- expected: "/a/place/else",
- errAssertion: assert.NoError,
- },
- {
- prefix: "/a/../place",
- args: []string{
- "somewhere/else",
- },
- expected: "/place/somewhere/else",
- errAssertion: assert.NoError,
- },
- // zip slip examples....
- {
- prefix: "/a/place",
- args: []string{
- "../../../etc/passwd",
- },
- expected: "",
- errAssertion: assertErrorAs(&errZipSlipDetected{}),
- },
- {
- prefix: "/a/place",
- args: []string{
- "../",
- "../",
- },
- expected: "",
- errAssertion: assertErrorAs(&errZipSlipDetected{}),
- },
- {
- prefix: "/a/place",
- args: []string{
- "../",
- },
- expected: "",
- errAssertion: assertErrorAs(&errZipSlipDetected{}),
- },
- }
-
- for _, test := range tests {
- t.Run(fmt.Sprintf("%+v:%+v", test.prefix, test.args), func(t *testing.T) {
- actual, err := safeJoin(test.prefix, test.args...)
- test.errAssertion(t, err)
- assert.Equal(t, test.expected, actual)
- })
- }
-}
diff --git a/internal/file/zip_read_closer.go b/internal/file/zip_read_closer.go
index 5722092db..fd45f52a1 100644
--- a/internal/file/zip_read_closer.go
+++ b/internal/file/zip_read_closer.go
@@ -6,7 +6,10 @@ import (
"errors"
"fmt"
"io"
+ "math"
"os"
+
+ "github.com/anchore/syft/internal/log"
)
// directoryEndLen, readByf, directoryEnd, and findSignatureInBlock were copied from the golang stdlib, specifically:
@@ -45,18 +48,25 @@ func OpenZip(filepath string) (*ZipReadCloser, error) {
// need to find the start of the archive and keep track of this offset.
offset, err := findArchiveStartOffset(f, fi.Size())
if err != nil {
- return nil, fmt.Errorf("cannot find beginning of zip archive=%q : %w", filepath, err)
+ log.Debugf("cannot find beginning of zip archive=%q : %v", filepath, err)
+ return nil, err
}
if _, err := f.Seek(0, io.SeekStart); err != nil {
return nil, fmt.Errorf("unable to seek to beginning of archive: %w", err)
}
- size := fi.Size() - int64(offset)
+ if offset > math.MaxInt64 {
+ return nil, fmt.Errorf("archive start offset too large: %v", offset)
+ }
+ offset64 := int64(offset)
- r, err := zip.NewReader(io.NewSectionReader(f, int64(offset), size), size)
+ size := fi.Size() - offset64
+
+ r, err := zip.NewReader(io.NewSectionReader(f, offset64, size), size)
if err != nil {
- return nil, fmt.Errorf("unable to open ZipReadCloser @ %q: %w", filepath, err)
+ log.Debugf("unable to open ZipReadCloser @ %q: %v", filepath, err)
+ return nil, err
}
return &ZipReadCloser{
@@ -95,8 +105,6 @@ type directoryEnd struct {
}
// note: this is derived from readDirectoryEnd within the archive/zip package
-//
-//nolint:gocognit
func findArchiveStartOffset(r io.ReaderAt, size int64) (startOfArchive uint64, err error) {
// look for directoryEndSignature in the last 1k, then in the last 65k
var buf []byte
@@ -150,7 +158,7 @@ func findArchiveStartOffset(r io.ReaderAt, size int64) (startOfArchive uint64, e
startOfArchive = uint64(directoryEndOffset) - d.directorySize - d.directoryOffset
// Make sure directoryOffset points to somewhere in our file.
- if o := int64(d.directoryOffset); o < 0 || o >= size {
+ if d.directoryOffset >= uint64(size) {
return 0, zip.ErrFormat
}
return startOfArchive, nil
diff --git a/internal/file/zip_read_closer_test.go b/internal/file/zip_read_closer_test.go
deleted file mode 100644
index 349bfcc9b..000000000
--- a/internal/file/zip_read_closer_test.go
+++ /dev/null
@@ -1,50 +0,0 @@
-//go:build !windows
-// +build !windows
-
-package file
-
-import (
- "os"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestFindArchiveStartOffset(t *testing.T) {
- tests := []struct {
- name string
- archivePrep func(tb testing.TB) string
- expected uint64
- }{
- {
- name: "standard, non-nested zip",
- archivePrep: prepZipSourceFixture,
- expected: 0,
- },
- {
- name: "zip with prepended bytes",
- archivePrep: prependZipSourceFixtureWithString(t, "junk at the beginning of the file..."),
- expected: 36,
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- archivePath := test.archivePrep(t)
- f, err := os.Open(archivePath)
- if err != nil {
- t.Fatalf("could not open archive %q: %+v", archivePath, err)
- }
- fi, err := os.Stat(f.Name())
- if err != nil {
- t.Fatalf("unable to stat archive: %+v", err)
- }
-
- actual, err := findArchiveStartOffset(f, fi.Size())
- if err != nil {
- t.Fatalf("unable to find offset: %+v", err)
- }
- assert.Equal(t, test.expected, actual)
- })
- }
-}
diff --git a/internal/licenses/context.go b/internal/licenses/context.go
new file mode 100644
index 000000000..9a1224dae
--- /dev/null
+++ b/internal/licenses/context.go
@@ -0,0 +1,18 @@
+package licenses
+
+import (
+ "context"
+)
+
+type licenseScannerKey struct{}
+
+func SetContextLicenseScanner(ctx context.Context, s Scanner) context.Context {
+ return context.WithValue(ctx, licenseScannerKey{}, s)
+}
+
+func ContextLicenseScanner(ctx context.Context) Scanner {
+ if s, ok := ctx.Value(licenseScannerKey{}).(Scanner); ok {
+ return s
+ }
+ return NewDefaultScanner()
+}
diff --git a/internal/licenses/parser.go b/internal/licenses/parser.go
deleted file mode 100644
index 58e4deb2d..000000000
--- a/internal/licenses/parser.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package licenses
-
-import (
- "io"
-
- "github.com/google/licensecheck"
-
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/license"
- "github.com/anchore/syft/syft/pkg"
-)
-
-const (
- coverageThreshold = 75
- unknownLicenseType = "UNKNOWN"
-)
-
-// Parse scans the contents of a license file to attempt to determine the type of license it is
-func Parse(reader io.Reader, l file.Location) (licenses []pkg.License, err error) {
- licenses = make([]pkg.License, 0)
- contents, err := io.ReadAll(reader)
- if err != nil {
- return nil, err
- }
- cov := licensecheck.Scan(contents)
- if cov.Percent < coverageThreshold {
- // unknown or no licenses here?
- return licenses, nil
- }
-
- for _, m := range cov.Match {
- lic := pkg.NewLicenseFromLocations(m.ID, l)
- lic.Type = license.Concluded
-
- licenses = append(licenses, lic)
- }
-
- return licenses, nil
-}
diff --git a/internal/licenses/scanner.go b/internal/licenses/scanner.go
new file mode 100644
index 000000000..5efb1d3a3
--- /dev/null
+++ b/internal/licenses/scanner.go
@@ -0,0 +1,68 @@
+package licenses
+
+import (
+ "context"
+ "io"
+
+ "github.com/google/licensecheck"
+
+ "github.com/anchore/syft/internal/log"
+)
+
+const coverageThreshold = 75 // determined by experimentation
+
+type Scanner interface {
+ IdentifyLicenseIDs(context.Context, io.Reader) ([]string, error)
+}
+
+var _ Scanner = (*scanner)(nil)
+
+type scanner struct {
+ coverageThreshold float64 // between 0 and 100
+ scanner func([]byte) licensecheck.Coverage
+}
+
+// NewDefaultScanner returns a scanner that uses a new instance of the default licensecheck package scanner.
+func NewDefaultScanner() Scanner {
+ s, err := licensecheck.NewScanner(licensecheck.BuiltinLicenses())
+ if err != nil {
+ log.WithFields("error", err).Trace("unable to create default license scanner")
+ s = nil
+ }
+ return &scanner{
+ coverageThreshold: coverageThreshold,
+ scanner: s.Scan,
+ }
+}
+
+// TestingOnlyScanner returns a scanner that uses the built-in license scanner from the licensecheck package.
+// THIS IS ONLY MEANT FOR TEST CODE, NOT PRODUCTION CODE.
+func TestingOnlyScanner() Scanner {
+ return &scanner{
+ coverageThreshold: coverageThreshold,
+ scanner: licensecheck.Scan,
+ }
+}
+
+func (s scanner) IdentifyLicenseIDs(_ context.Context, reader io.Reader) ([]string, error) {
+ if s.scanner == nil {
+ return nil, nil
+ }
+
+ content, err := io.ReadAll(reader)
+ if err != nil {
+ return nil, err
+ }
+
+ cov := s.scanner(content)
+ if cov.Percent < s.coverageThreshold {
+ // unknown or no licenses here?
+ return nil, nil
+ }
+
+ var ids []string
+ for _, m := range cov.Match {
+ ids = append(ids, m.ID)
+ }
+ return ids, nil
+}
diff --git a/internal/licenses/search.go b/internal/licenses/search.go
new file mode 100644
index 000000000..47dc14e45
--- /dev/null
+++ b/internal/licenses/search.go
@@ -0,0 +1,28 @@
+package licenses
+
+import (
+ "context"
+
+ "github.com/anchore/syft/syft/file"
+ "github.com/anchore/syft/syft/license"
+ "github.com/anchore/syft/syft/pkg"
+)
+
+// Search scans the contents of a license file to attempt to determine the type of license it is
+func Search(ctx context.Context, scanner Scanner, reader file.LocationReadCloser) (licenses []pkg.License, err error) {
+ licenses = make([]pkg.License, 0)
+
+ ids, err := scanner.IdentifyLicenseIDs(ctx, reader)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, id := range ids {
+ lic := pkg.NewLicenseFromLocations(id, reader.Location)
+ lic.Type = license.Concluded
+
+ licenses = append(licenses, lic)
+ }
+
+ return licenses, nil
+}
diff --git a/internal/mimetype/mimetype_helper_test.go b/internal/mimetype/mimetype_helper_test.go
deleted file mode 100644
index 8c6da33d8..000000000
--- a/internal/mimetype/mimetype_helper_test.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package mimetype
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func Test_IsArchive(t *testing.T) {
-
- tests := []struct {
- name string
- mimeType string
- expected bool
- }{
- {
- name: "not an archive",
- mimeType: "application/vnd.unknown",
- expected: false,
- },
- {
- name: "archive",
- mimeType: "application/x-rar-compressed",
- expected: true,
- },
- }
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- assert.Equal(t, test.expected, IsArchive(test.mimeType))
- })
- }
-}
-
-func Test_IsExecutable(t *testing.T) {
-
- tests := []struct {
- name string
- mimeType string
- expected bool
- }{
- {
- name: "not an executable",
- mimeType: "application/vnd.unknown",
- expected: false,
- },
- {
- name: "executable",
- mimeType: "application/x-mach-binary",
- expected: true,
- },
- }
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- assert.Equal(t, test.expected, IsExecutable(test.mimeType))
- })
- }
-}
diff --git a/internal/regex_helpers_test.go b/internal/regex_helpers_test.go
deleted file mode 100644
index 1c4837753..000000000
--- a/internal/regex_helpers_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package internal
-
-import (
- "regexp"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestMatchCaptureGroups(t *testing.T) {
- tests := []struct {
- name string
- input string
- pattern string
- expected map[string]string
- }{
- {
- name: "go-case",
- input: "match this thing",
- pattern: `(?Pmatch).*(?Pthing)`,
- expected: map[string]string{
- "name": "match",
- "version": "thing",
- },
- },
- {
- name: "only matches the first instance",
- input: "match this thing batch another think",
- pattern: `(?P[mb]atch).*?(?Pthin[gk])`,
- expected: map[string]string{
- "name": "match",
- "version": "thing",
- },
- },
- {
- name: "nested capture groups",
- input: "cool something to match against",
- pattern: `((?Pmatch) (?Pagainst))`,
- expected: map[string]string{
- "name": "match",
- "version": "against",
- },
- },
- {
- name: "nested optional capture groups",
- input: "cool something to match against",
- pattern: `((?Pmatch) (?Pagainst))?`,
- expected: map[string]string{
- "name": "match",
- "version": "against",
- },
- },
- {
- name: "nested optional capture groups with larger match",
- input: "cool something to match against match never",
- pattern: `.*?((?Pmatch) (?P(against|never)))?`,
- expected: map[string]string{
- "name": "match",
- "version": "against",
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- actual := MatchNamedCaptureGroups(regexp.MustCompile(test.pattern), test.input)
- assert.Equal(t, test.expected, actual)
- })
- }
-}
diff --git a/internal/relationship/binary/binary_dependencies.go b/internal/relationship/binary/binary_dependencies.go
index e30b64282..210f88114 100644
--- a/internal/relationship/binary/binary_dependencies.go
+++ b/internal/relationship/binary/binary_dependencies.go
@@ -21,28 +21,22 @@ func NewDependencyRelationships(resolver file.Resolver, accessor sbomsync.Access
// 3. craft package-to-package relationships for each binary that represent shared library dependencies
//note: we only care about package-to-package relationships
- var relIndex *relationship.Index
- accessor.ReadFromSBOM(func(s *sbom.SBOM) {
- relIndex = relationship.NewIndex(s.Relationships...)
- })
-
- return generateRelationships(resolver, accessor, index, relIndex)
+ return generateRelationships(resolver, accessor, index)
}
-func generateRelationships(resolver file.Resolver, accessor sbomsync.Accessor, index *sharedLibraryIndex, relIndex *relationship.Index) []artifact.Relationship {
- // read all existing dependencyOf relationships
- accessor.ReadFromSBOM(func(s *sbom.SBOM) {
- for _, r := range s.Relationships {
- if r.Type != artifact.DependencyOfRelationship {
- continue
- }
- relIndex.Track(r)
- }
- })
+func generateRelationships(resolver file.Resolver, accessor sbomsync.Accessor, index *sharedLibraryIndex) []artifact.Relationship {
+ newRelationships := relationship.NewIndex()
// find all package-to-package relationships for shared library dependencies
accessor.ReadFromSBOM(func(s *sbom.SBOM) {
- for _, parentPkg := range s.Artifacts.Packages.Sorted(pkg.BinaryPkg) {
+ relIndex := relationship.NewIndex(s.Relationships...)
+
+ addRelationship := func(r artifact.Relationship) {
+ if !relIndex.Contains(r) {
+ newRelationships.Add(r)
+ }
+ }
+ for _, parentPkg := range allElfPackages(s) {
for _, evidentLocation := range parentPkg.Locations.ToSlice() {
if evidentLocation.Annotations[pkg.EvidenceAnnotationKey] != pkg.PrimaryEvidenceAnnotation {
continue
@@ -54,12 +48,12 @@ func generateRelationships(resolver file.Resolver, accessor sbomsync.Accessor, i
continue
}
- populateRelationships(exec, parentPkg, resolver, relIndex, index)
+ populateRelationships(exec, parentPkg, resolver, addRelationship, index)
}
}
})
- return relIndex.NewRelationships()
+ return newRelationships.All()
}
// PackagesToRemove returns a list of binary packages (resolved by the ELF cataloger) that should be removed from the SBOM
@@ -106,7 +100,7 @@ func onlyPrimaryEvidenceLocations(p pkg.Package) []file.Location {
func allElfPackages(s *sbom.SBOM) []pkg.Package {
var elfPkgs []pkg.Package
- for _, p := range s.Artifacts.Packages.Sorted(pkg.BinaryPkg) {
+ for _, p := range s.Artifacts.Packages.Sorted() {
if !isElfPackage(p) {
continue
}
@@ -147,7 +141,7 @@ func getBinaryPackagesToDelete(resolver file.Resolver, s *sbom.SBOM) []artifact.
return pkgsToDelete
}
-func populateRelationships(exec file.Executable, parentPkg pkg.Package, resolver file.Resolver, relIndex *relationship.Index, index *sharedLibraryIndex) {
+func populateRelationships(exec file.Executable, parentPkg pkg.Package, resolver file.Resolver, addRelationship func(artifact.Relationship), index *sharedLibraryIndex) {
for _, libReference := range exec.ImportedLibraries {
// for each library reference, check s.Artifacts.Packages.Sorted(pkg.BinaryPkg) for a binary package that represents that library
// if found, create a relationship between the parent package and the library package
@@ -167,7 +161,7 @@ func populateRelationships(exec file.Executable, parentPkg pkg.Package, resolver
realBaseName := path.Base(loc.RealPath)
pkgCollection := index.owningLibraryPackage(realBaseName)
if pkgCollection.PackageCount() < 1 {
- relIndex.Add(
+ addRelationship(
artifact.Relationship{
From: loc.Coordinates,
To: parentPkg,
@@ -176,7 +170,7 @@ func populateRelationships(exec file.Executable, parentPkg pkg.Package, resolver
)
}
for _, p := range pkgCollection.Sorted() {
- relIndex.Add(
+ addRelationship(
artifact.Relationship{
From: p,
To: parentPkg,
diff --git a/internal/relationship/binary/binary_dependencies_test.go b/internal/relationship/binary/binary_dependencies_test.go
deleted file mode 100644
index 8696b82b4..000000000
--- a/internal/relationship/binary/binary_dependencies_test.go
+++ /dev/null
@@ -1,352 +0,0 @@
-package binary
-
-import (
- "path"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/google/go-cmp/cmp/cmpopts"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/sbom"
-)
-
-func TestPackagesToRemove(t *testing.T) {
- glibcCoordinate := file.NewCoordinates("/usr/lib64/libc.so.6", "")
- glibCPackage := pkg.Package{
- Name: "glibc",
- Version: "2.28-236.el8_9.12",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {
- Path: glibcCoordinate.RealPath,
- },
- },
- },
- }
- glibCPackage.SetID()
-
- glibCBinaryELFPackage := pkg.Package{
- Name: "glibc",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),
- ),
- Type: pkg.BinaryPkg,
- Metadata: pkg.ELFBinaryPackageNoteJSONPayload{
- Type: "testfixture",
- Vendor: "syft",
- System: "syftsys",
- SourceRepo: "https://github.com/someone/somewhere.git",
- Commit: "5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb",
- },
- }
- glibCBinaryELFPackage.SetID()
-
- glibCBinaryClassifierPackage := pkg.Package{
- Name: "glibc",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),
- ),
- Type: pkg.BinaryPkg,
- Metadata: pkg.BinarySignature{},
- }
- glibCBinaryClassifierPackage.SetID()
-
- libCBinaryClassifierPackage := pkg.Package{
- Name: "libc",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),
- ),
- Type: pkg.BinaryPkg,
- Metadata: pkg.BinarySignature{},
- }
- libCBinaryClassifierPackage.SetID()
-
- tests := []struct {
- name string
- resolver file.Resolver
- accessor sbomsync.Accessor
- want []artifact.ID
- }{
- {
- name: "remove packages that are overlapping rpm --> binary",
- resolver: file.NewMockResolverForPaths(glibcCoordinate.RealPath),
- accessor: newAccessor([]pkg.Package{glibCPackage, glibCBinaryELFPackage}, map[file.Coordinates]file.Executable{}, nil),
- want: []artifact.ID{glibCBinaryELFPackage.ID()},
- },
- {
- name: "remove no packages when there is a single binary package",
- resolver: file.NewMockResolverForPaths(glibcCoordinate.RealPath),
- accessor: newAccessor([]pkg.Package{glibCBinaryELFPackage}, map[file.Coordinates]file.Executable{}, nil),
- want: []artifact.ID{},
- },
- {
- name: "remove packages when there is a single binary package and a classifier package",
- resolver: file.NewMockResolverForPaths(glibcCoordinate.RealPath),
- accessor: newAccessor([]pkg.Package{glibCBinaryELFPackage, glibCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),
- want: []artifact.ID{glibCBinaryClassifierPackage.ID()},
- },
- {
- name: "ensure we're considering ELF packages, not just binary packages (supporting evidence)",
- resolver: file.NewMockResolverForPaths(glibcCoordinate.RealPath),
- accessor: newAccessor([]pkg.Package{glibCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),
- want: []artifact.ID{},
- },
- {
- name: "ensure we're considering ELF packages, not just binary packages (primary evidence)",
- resolver: file.NewMockResolverForPaths(glibcCoordinate.RealPath),
- accessor: newAccessor([]pkg.Package{libCBinaryClassifierPackage}, map[file.Coordinates]file.Executable{}, nil),
- want: []artifact.ID{},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- pkgsToDelete := PackagesToRemove(tt.resolver, tt.accessor)
- if diff := cmp.Diff(tt.want, pkgsToDelete); diff != "" {
- t.Errorf("unexpected packages to delete (-want, +got): %s", diff)
- }
- })
- }
-}
-
-func TestNewDependencyRelationships(t *testing.T) {
- // coordinates for the files under test
- glibcCoordinate := file.NewCoordinates("/usr/lib64/libc.so.6", "")
- secondGlibcCoordinate := file.NewCoordinates("/usr/local/lib64/libc.so.6", "")
- nestedLibCoordinate := file.NewCoordinates("/usr/local/bin/elftests/elfbinwithnestedlib/bin/elfbinwithnestedlib", "")
- parallelLibCoordinate := file.NewCoordinates("/usr/local/bin/elftests/elfbinwithsisterlib/bin/elfwithparallellibbin1", "")
-
- // rpm package that was discovered in linked section of the ELF binary package
- glibCPackage := pkg.Package{
- Name: "glibc",
- Version: "2.28-236.el8_9.12",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath),
- file.NewLocation("some/other/path"),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {
- Path: glibcCoordinate.RealPath,
- },
- {
- Path: "some/other/path",
- },
- },
- },
- }
- glibCPackage.SetID()
-
- // second rpm package that could be discovered in linked section of the ELF binary package (same base path as above)
- glibCustomPackage := pkg.Package{
- Name: "glibc",
- Version: "2.28-236.el8_9.12",
- Locations: file.NewLocationSet(file.NewLocation(secondGlibcCoordinate.RealPath)),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {
- Path: secondGlibcCoordinate.RealPath,
- },
- },
- },
- }
- glibCustomPackage.SetID()
-
- // binary package that is an executable that can link against above rpm packages
- syftTestFixturePackage := pkg.Package{
- Name: "syfttestfixture",
- Version: "0.01",
- PURL: "pkg:generic/syftsys/syfttestfixture@0.01",
- FoundBy: "",
- Locations: file.NewLocationSet(
- file.NewLocation(nestedLibCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),
- file.NewLocation(parallelLibCoordinate.RealPath).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),
- ),
- Language: "",
- Type: pkg.BinaryPkg,
- Metadata: pkg.ELFBinaryPackageNoteJSONPayload{
- Type: "testfixture",
- Vendor: "syft",
- System: "syftsys",
- SourceRepo: "https://github.com/someone/somewhere.git",
- Commit: "5534c38d0ffef9a3f83154f0b7a7fb6ab0ab6dbb",
- },
- }
- syftTestFixturePackage.SetID()
-
- // dummy executable representation of glibc
- glibcExecutable := file.Executable{
- Format: "elf",
- HasExports: true,
- HasEntrypoint: true,
- ImportedLibraries: []string{},
- }
-
- // executable representation of the syftTestFixturePackage
- syftTestFixtureExecutable := file.Executable{
- Format: "elf",
- HasExports: true,
- HasEntrypoint: true,
- ImportedLibraries: []string{
- path.Base(glibcCoordinate.RealPath),
- },
- }
-
- // second executable representation that has no parent package
- syftTestFixtureExecutable2 := file.Executable{
- Format: "elf",
- HasExports: true,
- HasEntrypoint: true,
- ImportedLibraries: []string{
- // this should not be a relationship because it is not a coordinate
- "foo.so.6",
- },
- }
-
- tests := []struct {
- name string
- resolver file.Resolver
- coordinateIndex map[file.Coordinates]file.Executable
- packages []pkg.Package
- prexistingRelationships []artifact.Relationship
- want []artifact.Relationship
- }{
- {
- name: "blank sbom and accessor returns empty relationships",
- resolver: nil,
- coordinateIndex: map[file.Coordinates]file.Executable{},
- packages: []pkg.Package{},
- },
- {
- name: "given a package that imports glibc, expect a relationship between the two packages when the package is an executable",
- resolver: file.NewMockResolverForPaths(
- glibcCoordinate.RealPath,
- nestedLibCoordinate.RealPath,
- parallelLibCoordinate.RealPath,
- ),
- // path -> executable (above mock resolver needs to be able to resolve to paths in this map)
- coordinateIndex: map[file.Coordinates]file.Executable{
- glibcCoordinate: glibcExecutable,
- nestedLibCoordinate: syftTestFixtureExecutable,
- parallelLibCoordinate: syftTestFixtureExecutable2,
- },
- packages: []pkg.Package{glibCPackage, syftTestFixturePackage},
- want: []artifact.Relationship{
- {
- From: glibCPackage,
- To: syftTestFixturePackage,
- Type: artifact.DependencyOfRelationship,
- },
- },
- },
- {
- name: "given an executable maps to one base path represented by two RPM we make two relationships",
- resolver: file.NewMockResolverForPaths(
- glibcCoordinate.RealPath,
- secondGlibcCoordinate.RealPath,
- nestedLibCoordinate.RealPath,
- parallelLibCoordinate.RealPath,
- ),
- coordinateIndex: map[file.Coordinates]file.Executable{
- glibcCoordinate: glibcExecutable,
- secondGlibcCoordinate: glibcExecutable,
- nestedLibCoordinate: syftTestFixtureExecutable,
- parallelLibCoordinate: syftTestFixtureExecutable2,
- },
- packages: []pkg.Package{glibCPackage, glibCustomPackage, syftTestFixturePackage},
- want: []artifact.Relationship{
- {
- From: glibCPackage,
- To: syftTestFixturePackage,
- Type: artifact.DependencyOfRelationship,
- },
- {
- From: glibCustomPackage,
- To: syftTestFixturePackage,
- Type: artifact.DependencyOfRelationship,
- },
- },
- },
- {
- name: "given some dependency relationships already exist, expect no duplicate relationships to be created",
- resolver: file.NewMockResolverForPaths(
- glibcCoordinate.RealPath,
- nestedLibCoordinate.RealPath,
- parallelLibCoordinate.RealPath,
- ),
- coordinateIndex: map[file.Coordinates]file.Executable{
- glibcCoordinate: glibcExecutable,
- nestedLibCoordinate: syftTestFixtureExecutable,
- parallelLibCoordinate: syftTestFixtureExecutable2,
- },
- packages: []pkg.Package{glibCPackage, glibCustomPackage, syftTestFixturePackage},
- prexistingRelationships: []artifact.Relationship{
- {
- From: glibCPackage,
- To: syftTestFixturePackage,
- Type: artifact.DependencyOfRelationship,
- },
- },
- },
- {
- name: "given a package that imports a library that is not tracked by the resolver, expect no relationships to be created",
- resolver: file.NewMockResolverForPaths(),
- coordinateIndex: map[file.Coordinates]file.Executable{
- glibcCoordinate: glibcExecutable,
- nestedLibCoordinate: syftTestFixtureExecutable,
- parallelLibCoordinate: syftTestFixtureExecutable2,
- },
- packages: []pkg.Package{glibCPackage, syftTestFixturePackage},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- accessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)
- // given a resolver that knows about the paths of the packages and executables,
- // and given an SBOM accessor that knows about the packages and executables,
- // we should be able to create a set of relationships between the packages and executables
- relationships := NewDependencyRelationships(tt.resolver, accessor)
- if diff := relationshipComparer(tt.want, relationships); diff != "" {
- t.Errorf("unexpected relationships (-want, +got): %s", diff)
- }
- })
- }
-}
-
-func relationshipComparer(x, y []artifact.Relationship) string {
- return cmp.Diff(x, y, cmpopts.IgnoreUnexported(
- pkg.Package{},
- artifact.Relationship{},
- file.LocationSet{},
- pkg.LicenseSet{},
- ))
-}
-
-func newAccessor(pkgs []pkg.Package, coordinateIndex map[file.Coordinates]file.Executable, preexistingRelationships []artifact.Relationship) sbomsync.Accessor {
- sb := sbom.SBOM{
- Artifacts: sbom.Artifacts{
- Packages: pkg.NewCollection(),
- },
- }
-
- builder := sbomsync.NewBuilder(&sb)
- builder.AddPackages(pkgs...)
-
- accessor := builder.(sbomsync.Accessor)
- accessor.WriteToSBOM(func(s *sbom.SBOM) {
- s.Artifacts.Executables = coordinateIndex
- if preexistingRelationships != nil {
- s.Relationships = preexistingRelationships
- }
- })
- return accessor
-}
diff --git a/internal/relationship/binary/shared_library_index_test.go b/internal/relationship/binary/shared_library_index_test.go
deleted file mode 100644
index fadaaa303..000000000
--- a/internal/relationship/binary/shared_library_index_test.go
+++ /dev/null
@@ -1,105 +0,0 @@
-package binary
-
-import (
- "path"
- "testing"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
-)
-
-func Test_newShareLibIndex(t *testing.T) {
- tests := []struct {
- name string
- resolver file.Resolver
- coordinateIndex map[file.Coordinates]file.Executable
- packages []pkg.Package
- prexistingRelationships []artifact.Relationship
- }{
- {
- name: "constructor",
- resolver: file.NewMockResolverForPaths(),
- coordinateIndex: map[file.Coordinates]file.Executable{},
- packages: []pkg.Package{},
- prexistingRelationships: []artifact.Relationship{},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- accessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)
- sharedLibraryIndex := newShareLibIndex(tt.resolver, accessor)
- if sharedLibraryIndex == nil {
- t.Errorf("newShareLibIndex() = %v, want non-nil", sharedLibraryIndex)
- }
- })
- }
-}
-
-func Test_sharedLibraryIndex_build(t *testing.T) {
- glibcCoordinate := file.NewCoordinates("/usr/lib64/libc.so.6", "")
- secondGlibcCoordinate := file.NewCoordinates("/usr/local/lib64/libc.so.6", "")
- glibcExecutable := file.Executable{
- Format: "elf",
- HasExports: true,
- HasEntrypoint: true,
- ImportedLibraries: []string{
- path.Base(glibcCoordinate.RealPath),
- path.Base(secondGlibcCoordinate.RealPath),
- },
- }
- glibCPackage := pkg.Package{
- Name: "glibc",
- Version: "2.28-236.el8_9.12",
- Locations: file.NewLocationSet(
- file.NewLocation(glibcCoordinate.RealPath),
- file.NewLocation("some/other/path"),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {
- Path: glibcCoordinate.RealPath,
- },
- {
- Path: "some/other/path",
- },
- },
- },
- }
-
- tests := []struct {
- name string
- resolver file.Resolver
- coordinateIndex map[file.Coordinates]file.Executable
- packages []pkg.Package
- prexistingRelationships []artifact.Relationship
- }{
- {
- name: "build with locations and packages",
- resolver: file.NewMockResolverForPaths([]string{
- glibcCoordinate.RealPath,
- secondGlibcCoordinate.RealPath,
- }...),
- coordinateIndex: map[file.Coordinates]file.Executable{
- glibcCoordinate: glibcExecutable,
- secondGlibcCoordinate: glibcExecutable,
- },
- packages: []pkg.Package{
- glibCPackage,
- },
- prexistingRelationships: []artifact.Relationship{},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- accessor := newAccessor(tt.packages, tt.coordinateIndex, tt.prexistingRelationships)
- sharedLibraryIndex := newShareLibIndex(tt.resolver, accessor)
- sharedLibraryIndex.build(tt.resolver, accessor)
- pkgs := sharedLibraryIndex.owningLibraryPackage(path.Base(glibcCoordinate.RealPath))
- if pkgs.PackageCount() < 1 {
- t.Errorf("owningLibraryPackage() = %v, want non-empty", pkgs)
- }
- })
- }
-}
diff --git a/internal/relationship/binary/test-fixtures/elf-test-fixtures b/internal/relationship/binary/test-fixtures/elf-test-fixtures
deleted file mode 120000
index 883705cd4..000000000
--- a/internal/relationship/binary/test-fixtures/elf-test-fixtures
+++ /dev/null
@@ -1 +0,0 @@
-../../../../syft/pkg/cataloger/binary/test-fixtures/elf-test-fixtures
\ No newline at end of file
diff --git a/internal/relationship/by_file_ownership_test.go b/internal/relationship/by_file_ownership_test.go
deleted file mode 100644
index f87b228a4..000000000
--- a/internal/relationship/by_file_ownership_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-package relationship
-
-import (
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/internal/cmptest"
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
-)
-
-func TestOwnershipByFilesRelationship(t *testing.T) {
-
- tests := []struct {
- name string
- setup func(t testing.TB) ([]pkg.Package, []artifact.Relationship)
- }{
- {
- name: "owns-by-real-path",
- setup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {
- parent := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/a/path", "/another/path"),
- file.NewVirtualLocation("/b/path", "/bee/path"),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {Path: "/owning/path/1"},
- {Path: "/owning/path/2"},
- {Path: "/d/path"},
- },
- },
- }
- parent.SetID()
-
- child := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/c/path", "/another/path"),
- file.NewVirtualLocation("/d/path", "/another/path"),
- ),
- Type: pkg.NpmPkg,
- }
- child.SetID()
-
- relationship := artifact.Relationship{
- From: parent,
- To: child,
- Type: artifact.OwnershipByFileOverlapRelationship,
- Data: ownershipByFilesMetadata{
- Files: []string{
- "/d/path",
- },
- },
- }
-
- return []pkg.Package{parent, child}, []artifact.Relationship{relationship}
- },
- },
- {
- name: "owns-by-virtual-path",
- setup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {
- parent := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/a/path", "/some/other/path"),
- file.NewVirtualLocation("/b/path", "/bee/path"),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {Path: "/owning/path/1"},
- {Path: "/owning/path/2"},
- {Path: "/another/path"},
- },
- },
- }
- parent.SetID()
-
- child := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/c/path", "/another/path"),
- file.NewLocation("/d/path"),
- ),
- Type: pkg.NpmPkg,
- }
- child.SetID()
-
- relationship := artifact.Relationship{
- From: parent,
- To: child,
- Type: artifact.OwnershipByFileOverlapRelationship,
- Data: ownershipByFilesMetadata{
- Files: []string{
- "/another/path",
- },
- },
- }
- return []pkg.Package{parent, child}, []artifact.Relationship{relationship}
- },
- },
- {
- name: "ignore-empty-path",
- setup: func(t testing.TB) ([]pkg.Package, []artifact.Relationship) {
- parent := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/a/path", "/some/other/path"),
- file.NewVirtualLocation("/b/path", "/bee/path"),
- ),
- Type: pkg.RpmPkg,
- Metadata: pkg.RpmDBEntry{
- Files: []pkg.RpmFileRecord{
- {Path: "/owning/path/1"},
- {Path: "/owning/path/2"},
- {Path: ""},
- },
- },
- }
-
- parent.SetID()
-
- child := pkg.Package{
- Locations: file.NewLocationSet(
- file.NewVirtualLocation("/c/path", "/another/path"),
- file.NewLocation("/d/path"),
- ),
- Type: pkg.NpmPkg,
- }
-
- child.SetID()
-
- return []pkg.Package{parent, child}, nil
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- pkgs, expectedRelations := test.setup(t)
- c := pkg.NewCollection(pkgs...)
- relationships := byFileOwnershipOverlap(c)
-
- assert.Len(t, relationships, len(expectedRelations))
- for idx, expectedRelationship := range expectedRelations {
- actualRelationship := relationships[idx]
- if d := cmp.Diff(expectedRelationship, actualRelationship, cmptest.DefaultCommonOptions()...); d != "" {
- t.Errorf("unexpected relationship (-want, +got): %s", d)
- }
- }
- })
- }
-}
diff --git a/internal/relationship/evident_by.go b/internal/relationship/evident_by.go
index 4050e96fd..ba4191325 100644
--- a/internal/relationship/evident_by.go
+++ b/internal/relationship/evident_by.go
@@ -9,15 +9,18 @@ func EvidentBy(catalog *pkg.Collection) []artifact.Relationship {
var edges []artifact.Relationship
for _, p := range catalog.Sorted() {
for _, l := range p.Locations.ToSlice() {
- if v, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists || v != pkg.PrimaryEvidenceAnnotation {
- // skip non-primary evidence from being expressed as a relationship.
- // note: this may be configurable in the future.
- continue
+ kind := pkg.SupportingEvidenceAnnotation
+ if v, exists := l.Annotations[pkg.EvidenceAnnotationKey]; exists {
+ kind = v
}
+
edges = append(edges, artifact.Relationship{
From: p,
To: l.Coordinates,
Type: artifact.EvidentByRelationship,
+ Data: map[string]string{
+ "kind": kind,
+ },
})
}
}
diff --git a/internal/relationship/evident_by_test.go b/internal/relationship/evident_by_test.go
deleted file mode 100644
index 9e08d967b..000000000
--- a/internal/relationship/evident_by_test.go
+++ /dev/null
@@ -1,88 +0,0 @@
-package relationship
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
-)
-
-func TestRelationshipsEvidentBy(t *testing.T) {
-
- c := pkg.NewCollection()
-
- coordA := file.Coordinates{
- RealPath: "/somewhere/real",
- FileSystemID: "abc",
- }
- coordC := file.Coordinates{
- RealPath: "/somewhere/real",
- FileSystemID: "abc",
- }
- coordD := file.Coordinates{
- RealPath: "/somewhere/real",
- FileSystemID: "abc",
- }
- pkgA := pkg.Package{
- Locations: file.NewLocationSet(
- // added!
- file.NewLocationFromCoordinates(coordA).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),
- // ignored...
- file.NewLocationFromCoordinates(coordC).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.SupportingEvidenceAnnotation),
- file.NewLocationFromCoordinates(coordD),
- ),
- }
- pkgA.SetID()
- c.Add(pkgA)
-
- coordB := file.Coordinates{
- RealPath: "/somewhere-else/real",
- FileSystemID: "def",
- }
- pkgB := pkg.Package{
- Locations: file.NewLocationSet(
- // added!
- file.NewLocationFromCoordinates(coordB).WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation),
- ),
- }
- pkgB.SetID()
- c.Add(pkgB)
-
- tests := []struct {
- name string
- catalog *pkg.Collection
- want []artifact.Relationship
- }{
- {
- name: "go case",
- catalog: c,
- want: []artifact.Relationship{
- {
- From: pkgB,
- To: coordB,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: pkgA,
- To: coordA,
- Type: artifact.EvidentByRelationship,
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- actual := EvidentBy(tt.catalog)
- require.Len(t, actual, len(tt.want))
- for i := range actual {
- assert.Equal(t, tt.want[i].From.ID(), actual[i].From.ID(), "from mismatch at index %d", i)
- assert.Equal(t, tt.want[i].To.ID(), actual[i].To.ID(), "to mismatch at index %d", i)
- assert.Equal(t, tt.want[i].Type, actual[i].Type, "type mismatch at index %d", i)
- }
- })
- }
-}
diff --git a/internal/relationship/exclude_binaries_by_file_ownership_overlap.go b/internal/relationship/exclude_binaries_by_file_ownership_overlap.go
index 03e2d7fbc..648646657 100644
--- a/internal/relationship/exclude_binaries_by_file_ownership_overlap.go
+++ b/internal/relationship/exclude_binaries_by_file_ownership_overlap.go
@@ -1,6 +1,7 @@
package relationship
import (
+ "reflect"
"slices"
"github.com/anchore/syft/internal/sbomsync"
@@ -21,44 +22,105 @@ var (
binaryCatalogerTypes = []pkg.Type{
pkg.BinaryPkg,
}
+ binaryMetadataTypes = []string{
+ reflect.TypeOf(pkg.ELFBinaryPackageNoteJSONPayload{}).Name(),
+ reflect.TypeOf(pkg.BinarySignature{}).Name(),
+ reflect.TypeOf(pkg.JavaVMInstallation{}).Name(),
+ }
)
func ExcludeBinariesByFileOwnershipOverlap(accessor sbomsync.Accessor) {
accessor.WriteToSBOM(func(s *sbom.SBOM) {
for _, r := range s.Relationships {
- if excludeBinaryByFileOwnershipOverlap(r, s.Artifacts.Packages) {
- s.Artifacts.Packages.Delete(r.To.ID())
- s.Relationships = RemoveRelationshipsByID(s.Relationships, r.To.ID())
+ if idToRemove := excludeByFileOwnershipOverlap(r, s.Artifacts.Packages); idToRemove != "" {
+ s.Artifacts.Packages.Delete(idToRemove)
+ s.Relationships = RemoveRelationshipsByID(s.Relationships, idToRemove)
}
}
})
}
-// excludeBinaryByFileOwnershipOverlap will remove packages from a collection given the following properties are true
-// 1) the relationship between packages is OwnershipByFileOverlap
-// 2) the parent is an "os" package
-// 3) the child is a synthetic package generated by the binary cataloger
-// 4) the package names are identical
-// This was implemented as a way to help resolve: https://github.com/anchore/syft/issues/931
-func excludeBinaryByFileOwnershipOverlap(r artifact.Relationship, c *pkg.Collection) bool {
+// excludeByFileOwnershipOverlap will remove packages that should be overridden by a more authoritative package,
+// such as an OS package or a package from a cataloger with more specific information being raised up.
+func excludeByFileOwnershipOverlap(r artifact.Relationship, c *pkg.Collection) artifact.ID {
if artifact.OwnershipByFileOverlapRelationship != r.Type {
- return false
+ return ""
}
parent := c.Package(r.From.ID())
if parent == nil {
- return false
- }
-
- parentInExclusion := slices.Contains(osCatalogerTypes, parent.Type)
- if !parentInExclusion {
- return false
+ return ""
}
child := c.Package(r.To.ID())
if child == nil {
- return false
+ return ""
+ }
+
+ if idToRemove := identifyOverlappingOSRelationship(parent, child); idToRemove != "" {
+ return idToRemove
+ }
+
+ if idToRemove := identifyOverlappingJVMRelationship(parent, child); idToRemove != "" {
+ return idToRemove
+ }
+
+ return ""
+}
+
+// identifyOverlappingJVMRelationship indicates the package to remove if this is a binary -> binary pkg relationship
+// with a java binary signature package and a more authoritative JVM release package.
+func identifyOverlappingJVMRelationship(parent *pkg.Package, child *pkg.Package) artifact.ID {
+ if !slices.Contains(binaryCatalogerTypes, parent.Type) {
+ return ""
+ }
+
+ if !slices.Contains(binaryCatalogerTypes, child.Type) {
+ return ""
+ }
+
+ if child.Metadata == nil {
+ return ""
+ }
+
+ var (
+ foundJVM bool
+ idToRemove artifact.ID
+ )
+ for _, p := range []*pkg.Package{parent, child} {
+ switch p.Metadata.(type) {
+ case pkg.JavaVMInstallation:
+ foundJVM = true
+ default:
+ idToRemove = p.ID()
+ }
+ }
+
+ if foundJVM {
+ return idToRemove
+ }
+
+ return ""
+}
+
+// identifyOverlappingOSRelationship indicates the package ID to remove if this is an OS pkg -> bin pkg relationship.
+// This was implemented as a way to help resolve: https://github.com/anchore/syft/issues/931
+func identifyOverlappingOSRelationship(parent *pkg.Package, child *pkg.Package) artifact.ID {
+ if !slices.Contains(osCatalogerTypes, parent.Type) {
+ return ""
+ }
+
+ if slices.Contains(binaryCatalogerTypes, child.Type) {
+ return child.ID()
+ }
+
+ if child.Metadata == nil {
+ return ""
+ }
+
+ if !slices.Contains(binaryMetadataTypes, reflect.TypeOf(child.Metadata).Name()) {
+ return ""
}
- return slices.Contains(binaryCatalogerTypes, child.Type)
+ return child.ID()
}
diff --git a/internal/relationship/exclude_binaries_by_file_ownership_overlap_test.go b/internal/relationship/exclude_binaries_by_file_ownership_overlap_test.go
deleted file mode 100644
index 6074e0c16..000000000
--- a/internal/relationship/exclude_binaries_by_file_ownership_overlap_test.go
+++ /dev/null
@@ -1,76 +0,0 @@
-package relationship
-
-import (
- "testing"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/pkg"
-)
-
-func TestExclude(t *testing.T) {
- packageA := pkg.Package{Name: "package-a", Type: pkg.ApkPkg}
- packageB := pkg.Package{Name: "package-a", Type: pkg.PythonPkg}
- packageC := pkg.Package{Name: "package-a", Type: pkg.BinaryPkg}
- packageD := pkg.Package{Name: "package-d", Type: pkg.BinaryPkg}
- for _, p := range []*pkg.Package{&packageA, &packageB, &packageC, &packageD} {
- p := p
- p.SetID()
- }
-
- tests := []struct {
- name string
- relationship artifact.Relationship
- packages *pkg.Collection
- shouldExclude bool
- }{
- {
- name: "no exclusions from os -> python",
- relationship: artifact.Relationship{
- Type: artifact.OwnershipByFileOverlapRelationship,
- From: packageA,
- To: packageB,
- },
- packages: pkg.NewCollection(packageA, packageB),
- shouldExclude: false,
- },
- {
- name: "exclusions from os -> binary",
- relationship: artifact.Relationship{
- Type: artifact.OwnershipByFileOverlapRelationship,
- From: packageA,
- To: packageC,
- },
- packages: pkg.NewCollection(packageA, packageC),
- shouldExclude: true,
- },
- {
- name: "no exclusions from python -> binary",
- relationship: artifact.Relationship{
- Type: artifact.OwnershipByFileOverlapRelationship,
- From: packageB,
- To: packageC,
- },
- packages: pkg.NewCollection(packageB, packageC),
- shouldExclude: false,
- },
- {
- name: "no exclusions for different package names",
- relationship: artifact.Relationship{
- Type: artifact.OwnershipByFileOverlapRelationship,
- From: packageA,
- To: packageD,
- },
- packages: pkg.NewCollection(packageA, packageD),
- shouldExclude: false,
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- if !excludeBinaryByFileOwnershipOverlap(test.relationship, test.packages) && test.shouldExclude {
- t.Errorf("expected to exclude relationship %+v", test.relationship)
- }
- })
-
- }
-}
diff --git a/internal/relationship/index.go b/internal/relationship/index.go
index e99211606..ab78c62b4 100644
--- a/internal/relationship/index.go
+++ b/internal/relationship/index.go
@@ -1,88 +1,217 @@
package relationship
import (
- "github.com/scylladb/go-set/strset"
+ "slices"
+ "strings"
"github.com/anchore/syft/syft/artifact"
+ "github.com/anchore/syft/syft/file"
)
+// Index indexes relationships, preventing duplicates
type Index struct {
- typesByFromTo map[artifact.ID]map[artifact.ID]*strset.Set
- existing []artifact.Relationship
- additional []artifact.Relationship
+ all []*sortableRelationship
+ fromID map[artifact.ID]*mappedRelationships
+ toID map[artifact.ID]*mappedRelationships
}
-func NewIndex(existing ...artifact.Relationship) *Index {
- r := &Index{
- typesByFromTo: make(map[artifact.ID]map[artifact.ID]*strset.Set),
+// NewIndex returns a new relationship Index
+func NewIndex(relationships ...artifact.Relationship) *Index {
+ out := Index{
+ fromID: make(map[artifact.ID]*mappedRelationships),
+ toID: make(map[artifact.ID]*mappedRelationships),
}
- r.TrackAll(existing...)
- return r
+ out.Add(relationships...)
+ return &out
}
-func (i *Index) track(r artifact.Relationship) bool {
- fromID := r.From.ID()
- if _, ok := i.typesByFromTo[fromID]; !ok {
- i.typesByFromTo[fromID] = make(map[artifact.ID]*strset.Set)
+// Add adds all the given relationships to the index, without adding duplicates
+func (i *Index) Add(relationships ...artifact.Relationship) {
+ // store appropriate indexes for stable ordering to minimize ID() calls
+ for _, r := range relationships {
+ // prevent duplicates
+ if i.Contains(r) {
+ continue
+ }
+
+ fromID := r.From.ID()
+ toID := r.To.ID()
+
+ relationship := &sortableRelationship{
+ from: fromID,
+ to: toID,
+ relationship: r,
+ }
+
+ // add to all relationships
+ i.all = append(i.all, relationship)
+
+ // add from -> to mapping
+ mapped := i.fromID[fromID]
+ if mapped == nil {
+ mapped = &mappedRelationships{}
+ i.fromID[fromID] = mapped
+ }
+ mapped.add(toID, relationship)
+
+ // add to -> from mapping
+ mapped = i.toID[toID]
+ if mapped == nil {
+ mapped = &mappedRelationships{}
+ i.toID[toID] = mapped
+ }
+ mapped.add(fromID, relationship)
}
+}
+
+func (i *Index) Remove(id artifact.ID) {
+ delete(i.fromID, id)
+ delete(i.toID, id)
- toID := r.To.ID()
- if _, ok := i.typesByFromTo[fromID][toID]; !ok {
- i.typesByFromTo[fromID][toID] = strset.New()
+ for idx := 0; idx < len(i.all); {
+ if i.all[idx].from == id || i.all[idx].to == id {
+ i.all = append(i.all[:idx], i.all[idx+1:]...)
+ } else {
+ idx++
+ }
}
+}
- var exists bool
- if i.typesByFromTo[fromID][toID].Has(string(r.Type)) {
- exists = true
+func (i *Index) Replace(ogID artifact.ID, replacement artifact.Identifiable) {
+ for _, mapped := range fromMappedByID(i.fromID, ogID) {
+ i.Add(artifact.Relationship{
+ From: replacement,
+ To: mapped.relationship.To,
+ Type: mapped.relationship.Type,
+ })
}
- i.typesByFromTo[fromID][toID].Add(string(r.Type))
+ for _, mapped := range fromMappedByID(i.toID, ogID) {
+ i.Add(artifact.Relationship{
+ From: mapped.relationship.From,
+ To: replacement,
+ Type: mapped.relationship.Type,
+ })
+ }
+
+ i.Remove(ogID)
+}
+
+// From returns all relationships from the given identifiable, with specified types
+func (i *Index) From(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {
+ return toSortedSlice(fromMapped(i.fromID, identifiable), types)
+}
+
+// To returns all relationships to the given identifiable, with specified types
+func (i *Index) To(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {
+ return toSortedSlice(fromMapped(i.toID, identifiable), types)
+}
- return !exists
+// References returns all relationships that reference to or from the given identifiable
+func (i *Index) References(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []artifact.Relationship {
+ return toSortedSlice(append(fromMapped(i.fromID, identifiable), fromMapped(i.toID, identifiable)...), types)
}
-// Track this relationship as "exists" in the index (this is used to prevent duplicate relationships from being added).
-// returns true if the relationship is new to the index, false otherwise.
-func (i *Index) Track(r artifact.Relationship) bool {
- unique := i.track(r)
- if unique {
- i.existing = append(i.existing, r)
+// Coordinates returns all coordinates for the provided identifiable for provided relationship types
+// If no types are provided, all relationship types are considered.
+func (i *Index) Coordinates(identifiable artifact.Identifiable, types ...artifact.RelationshipType) []file.Coordinates {
+ var coordinates []file.Coordinates
+ for _, relationship := range i.References(identifiable, types...) {
+ cords := extractCoordinates(relationship)
+ coordinates = append(coordinates, cords...)
}
- return unique
+ return coordinates
}
-// Add a new relationship to the index, returning true if the relationship is new to the index, false otherwise (thus is a duplicate).
-func (i *Index) Add(r artifact.Relationship) bool {
- if i.track(r) {
- i.additional = append(i.additional, r)
- return true
+// Contains indicates the relationship is present in this index
+func (i *Index) Contains(r artifact.Relationship) bool {
+ if mapped := i.fromID[r.From.ID()]; mapped != nil {
+ if ids := mapped.typeMap[r.Type]; ids != nil {
+ return ids[r.To.ID()] != nil
+ }
}
return false
}
-func (i *Index) TrackAll(rs ...artifact.Relationship) {
- for _, r := range rs {
- i.Track(r)
+// All returns a sorted set of relationships matching all types, or all relationships if no types specified
+func (i *Index) All(types ...artifact.RelationshipType) []artifact.Relationship {
+ return toSortedSlice(i.all, types)
+}
+
+func fromMapped(idMap map[artifact.ID]*mappedRelationships, identifiable artifact.Identifiable) []*sortableRelationship {
+ if identifiable == nil {
+ return nil
+ }
+ return fromMappedByID(idMap, identifiable.ID())
+}
+
+func fromMappedByID(idMap map[artifact.ID]*mappedRelationships, id artifact.ID) []*sortableRelationship {
+ if idMap == nil {
+ return nil
+ }
+ mapped := idMap[id]
+ if mapped == nil {
+ return nil
}
+ return mapped.allRelated
}
-func (i *Index) AddAll(rs ...artifact.Relationship) {
- for _, r := range rs {
- i.Add(r)
+func toSortedSlice(relationships []*sortableRelationship, types []artifact.RelationshipType) []artifact.Relationship {
+ // always return sorted for SBOM stability
+ slices.SortFunc(relationships, sortFunc)
+ var out []artifact.Relationship
+ for _, r := range relationships {
+ if len(types) == 0 || slices.Contains(types, r.relationship.Type) {
+ out = append(out, r.relationship)
+ }
+ }
+ return out
+}
+
+func extractCoordinates(relationship artifact.Relationship) (results []file.Coordinates) {
+ if coordinates, exists := relationship.From.(file.Coordinates); exists {
+ results = append(results, coordinates)
+ }
+
+ if coordinates, exists := relationship.To.(file.Coordinates); exists {
+ results = append(results, coordinates)
}
+
+ return results
}
-func (i *Index) NewRelationships() []artifact.Relationship {
- return i.additional
+type mappedRelationships struct {
+ typeMap map[artifact.RelationshipType]map[artifact.ID]*sortableRelationship
+ allRelated []*sortableRelationship
}
-func (i *Index) ExistingRelationships() []artifact.Relationship {
- return i.existing
+func (m *mappedRelationships) add(id artifact.ID, newRelationship *sortableRelationship) {
+ m.allRelated = append(m.allRelated, newRelationship)
+ if m.typeMap == nil {
+ m.typeMap = map[artifact.RelationshipType]map[artifact.ID]*sortableRelationship{}
+ }
+ typeMap := m.typeMap[newRelationship.relationship.Type]
+ if typeMap == nil {
+ typeMap = map[artifact.ID]*sortableRelationship{}
+ m.typeMap[newRelationship.relationship.Type] = typeMap
+ }
+ typeMap[id] = newRelationship
}
-func (i *Index) AllUniqueRelationships() []artifact.Relationship {
- var all []artifact.Relationship
- all = append(all, i.existing...)
- all = append(all, i.additional...)
- return all
+type sortableRelationship struct {
+ from artifact.ID
+ to artifact.ID
+ relationship artifact.Relationship
+}
+
+func sortFunc(a, b *sortableRelationship) int {
+ cmp := strings.Compare(string(a.relationship.Type), string(b.relationship.Type))
+ if cmp != 0 {
+ return cmp
+ }
+ cmp = strings.Compare(string(a.from), string(b.from))
+ if cmp != 0 {
+ return cmp
+ }
+ return strings.Compare(string(a.to), string(b.to))
}
diff --git a/internal/relationship/index_test.go b/internal/relationship/index_test.go
deleted file mode 100644
index b1acbc214..000000000
--- a/internal/relationship/index_test.go
+++ /dev/null
@@ -1,225 +0,0 @@
-package relationship
-
-import (
- "testing"
-
- "github.com/google/go-cmp/cmp"
-
- "github.com/anchore/syft/syft/artifact"
-)
-
-func Test_newRelationshipIndex(t *testing.T) {
- from := fakeIdentifiable{id: "from"}
- to := fakeIdentifiable{id: "to"}
- tests := []struct {
- name string
- given []artifact.Relationship
- track []artifact.Relationship
- add []artifact.Relationship
- wantExisting []string
- wantAdditional []string
- }{
- {
- name: "empty",
- },
- {
- name: "tracks existing relationships",
- given: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- wantExisting: []string{"from [evident-by] to"},
- },
- {
- name: "deduplicate tracked relationships",
- given: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- track: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- wantExisting: []string{"from [evident-by] to"},
- },
- {
- name: "deduplicate any input relationships",
- given: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- track: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- add: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- wantExisting: []string{"from [evident-by] to"},
- },
- {
- name: "deduplicate any added relationships",
- add: []artifact.Relationship{
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- {
- From: from,
- To: to,
- Type: artifact.EvidentByRelationship,
- },
- },
- wantAdditional: []string{"from [evident-by] to"},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- idx := NewIndex(tt.given...)
- idx.TrackAll(tt.track...)
- idx.AddAll(tt.add...)
- diffRelationships(t, tt.wantExisting, idx.existing)
- diffRelationships(t, tt.wantAdditional, idx.additional)
- })
- }
-}
-
-func diffRelationships(t *testing.T, expected []string, actual []artifact.Relationship) {
- if d := cmp.Diff(expected, stringRelationships(actual)); d != "" {
- t.Errorf("unexpected relationships (-want, +got): %s", d)
- }
-}
-
-func stringRelationships(relationships []artifact.Relationship) []string {
- var result []string
- for _, r := range relationships {
- result = append(result, string(r.From.ID())+" ["+string(r.Type)+"] "+string(r.To.ID()))
- }
- return result
-
-}
-
-func Test_relationshipIndex_track(t *testing.T) {
- from := fakeIdentifiable{id: "from"}
- to := fakeIdentifiable{id: "to"}
- relationship := artifact.Relationship{From: from, To: to, Type: artifact.EvidentByRelationship}
- tests := []struct {
- name string
- existing []artifact.Relationship
- given artifact.Relationship
- want bool
- }{
- {
- name: "track returns true for a new relationship",
- existing: []artifact.Relationship{},
- given: relationship,
- want: true,
- },
- {
- name: "track returns false for an existing relationship",
- existing: []artifact.Relationship{relationship},
- given: relationship,
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- i := NewIndex(tt.existing...)
- if got := i.Track(tt.given); got != tt.want {
- t.Errorf("track() = %v, want %v", got, tt.want)
- }
- })
- }
-}
-
-func Test_relationshipIndex_add(t *testing.T) {
- from := fakeIdentifiable{id: "from"}
- to := fakeIdentifiable{id: "to"}
- relationship := artifact.Relationship{From: from, To: to, Type: artifact.EvidentByRelationship}
- tests := []struct {
- name string
- existing []artifact.Relationship
- given artifact.Relationship
- want bool
- }{
- {
- name: "add returns true for a new relationship",
- existing: []artifact.Relationship{},
- given: relationship,
- want: true,
- },
- {
- name: "add returns false for an existing relationship",
- existing: []artifact.Relationship{relationship},
- given: relationship,
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- i := NewIndex(tt.existing...)
- if got := i.Add(tt.given); got != tt.want {
- t.Errorf("add() = %v, want %v", got, tt.want)
- }
- })
- }
-
-}
-
-type fakeIdentifiable struct {
- id string
-}
-
-func (f fakeIdentifiable) ID() artifact.ID {
- return artifact.ID(f.id)
-}
diff --git a/internal/sbomsync/builder_test.go b/internal/sbomsync/builder_test.go
deleted file mode 100644
index 2c1671ecb..000000000
--- a/internal/sbomsync/builder_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package sbomsync
-
-import (
- "testing"
-
- "github.com/magiconair/properties/assert"
-
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/sbom"
-)
-
-func TestNewBuilder(t *testing.T) {
- tests := []struct {
- name string
- sbom sbom.SBOM
- }{
- {
- "TestNewBuilder with empty sbom",
- sbom.SBOM{
- Artifacts: sbom.Artifacts{
- Packages: pkg.NewCollection(),
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- builder := NewBuilder(&tt.sbom)
- builder.AddPackages(pkg.Package{})
- accessor := builder.(Accessor)
- accessor.ReadFromSBOM(func(s *sbom.SBOM) {
- packageCount := s.Artifacts.Packages.PackageCount()
- assert.Equal(t, packageCount, 1, "expected 1 package in sbom")
- })
- })
- }
-}
-
-func Test_sbomBuilder_DeletePackages(t *testing.T) {
- testPackage := pkg.Package{
- Name: "test",
- Version: "1.0.0",
- Type: pkg.DebPkg,
- }
- testPackage.SetID()
-
- keepMe := pkg.Package{
- Name: "keepMe",
- Version: "1.0.0",
- Type: pkg.DebPkg,
- }
-
- prexistingRelationships := []artifact.Relationship{
- {
- From: testPackage,
- To: testPackage,
- Type: artifact.DependencyOfRelationship,
- },
- }
-
- tests := []struct {
- name string
- sbom sbom.SBOM
- }{
- {
- "Test_sbomBuilder_DeletePackages deletes a given package",
- sbom.SBOM{
- Artifacts: sbom.Artifacts{
- Packages: pkg.NewCollection(),
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- builder := NewBuilder(&tt.sbom)
- builder.AddPackages(testPackage, keepMe)
- accessor := builder.(Accessor)
- accessor.WriteToSBOM(func(s *sbom.SBOM) {
- s.Relationships = prexistingRelationships
- })
-
- builder.DeletePackages(testPackage.ID())
- newAccess := builder.(Accessor)
- newAccess.ReadFromSBOM(func(s *sbom.SBOM) {
- packageCount := s.Artifacts.Packages.PackageCount()
-
- // deleted target package
- assert.Equal(t, packageCount, 1, "expected 1 packages in sbom")
- relationshipCount := len(s.Relationships)
-
- // deleted relationships that reference the deleted package
- assert.Equal(t, relationshipCount, 0, "expected 0 relationships in sbom")
- })
- })
- }
-}
diff --git a/internal/set.go b/internal/set.go
new file mode 100644
index 000000000..2d15bee92
--- /dev/null
+++ b/internal/set.go
@@ -0,0 +1,68 @@
+package internal
+
+import (
+ "fmt"
+ "sort"
+)
+
+// Set represents a generic set type.
+type Set[T comparable] map[T]struct{}
+
+// NewSet creates a new empty Set.
+func NewSet[T comparable](start ...T) Set[T] {
+ ret := make(Set[T])
+ for _, v := range start {
+ ret.Add(v)
+ }
+ return ret
+}
+
+// Add adds elements to the set.
+func (s Set[T]) Add(elements ...T) {
+ for _, e := range elements {
+ s[e] = struct{}{}
+ }
+}
+
+// Remove removes an element from the set.
+func (s Set[T]) Remove(element T) {
+ delete(s, element)
+}
+
+// Contains checks if an element is in the set.
+func (s Set[T]) Contains(element T) bool {
+ _, ok := s[element]
+ return ok
+}
+
+// ToSlice returns a sorted slice of elements in the set.
+func (s Set[T]) ToSlice() []T {
+ ret := make([]T, len(s))
+ idx := 0
+ for v := range s {
+ ret[idx] = v
+ idx++
+ }
+ sort.Slice(ret, func(i, j int) bool {
+ return fmt.Sprintf("%v", ret[i]) < fmt.Sprintf("%v", ret[j])
+ })
+ return ret
+}
+
+// Equals checks if two sets are equal.
+func (s Set[T]) Equals(o Set[T]) bool {
+ if len(s) != len(o) {
+ return false
+ }
+ for k := range s {
+ if !o.Contains(k) {
+ return false
+ }
+ }
+ return true
+}
+
+// Empty checks if the set is empty.
+func (s Set[T]) Empty() bool {
+ return len(s) == 0
+}
diff --git a/internal/spdxlicense/generate/generate_license_list_test.go b/internal/spdxlicense/generate/generate_license_list_test.go
deleted file mode 100644
index 978f5eaf6..000000000
--- a/internal/spdxlicense/generate/generate_license_list_test.go
+++ /dev/null
@@ -1,1244 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "os"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/require"
-)
-
-func TestReplaceDeprecatedLicenses(t *testing.T) {
- results := LicenseList{
- Licenses: []License{
- license1,
- license2,
- license3,
- license4,
- license5,
- license6,
- },
- }
-
- expected := map[string]string{
- "abc1": "ABC-1.0-only",
- "abc1only": "ABC-1.0-only",
- "abc1.0": "ABC-1.0-only",
- "abc1.0.0": "ABC-1.0-only",
- "abc1.0only": "ABC-1.0-only",
- "abc1.0.0only": "ABC-1.0-only",
- "abc1+": "ABC-1.0-or-later",
- "abc1.0+": "ABC-1.0-or-later",
- "abc1.0.0+": "ABC-1.0-or-later",
- "abc1orlater": "ABC-1.0-or-later",
- "abc1.0orlater": "ABC-1.0-or-later",
- "abc1.0.0orlater": "ABC-1.0-or-later",
- "duh1": "Duh-1.0",
- "duh1.0": "Duh-1.0",
- "duh1.0.0": "Duh-1.0",
- "duh1duh": "Duh-1.0-duh",
- "duh1.0duh": "Duh-1.0-duh",
- "duh1.0.0duh": "Duh-1.0-duh",
- }
-
- licenses := processSPDXLicense(results)
- for k, v := range licenses {
- e := expected[k]
- require.Equal(t, e, v, k)
- }
-}
-
-func Test_processSPDXLicense(t *testing.T) {
- tests := []struct {
- fixture string
- want map[string]string
- }{
- {
- fixture: "test-fixtures/licenses.json",
- want: map[string]string{
- "0bsd": "0BSD",
- "aal": "AAL",
- "abstyles": "Abstyles",
- "adacoredoc": "AdaCore-doc",
- "adobe2006": "Adobe-2006",
- "adobe2006.0": "Adobe-2006",
- "adobe2006.0.0": "Adobe-2006",
- "adobeglyph": "Adobe-Glyph",
- "adsl": "ADSL",
- "afl1": "AFL-1.1",
- "afl1.1": "AFL-1.1",
- "afl1.1.0": "AFL-1.1",
- "afl1.2": "AFL-1.2",
- "afl1.2.0": "AFL-1.2",
- "afl2": "AFL-2.0",
- "afl2.0": "AFL-2.0",
- "afl2.0.0": "AFL-2.0",
- "afl2.1": "AFL-2.1",
- "afl2.1.0": "AFL-2.1",
- "afl3": "AFL-3.0",
- "afl3.0": "AFL-3.0",
- "afl3.0.0": "AFL-3.0",
- "afmparse": "Afmparse",
- "agpl1": "AGPL-1.0-only",
- "agpl1+": "AGPL-1.0-or-later",
- "agpl1.0": "AGPL-1.0-only",
- "agpl1.0+": "AGPL-1.0-or-later",
- "agpl1.0.0": "AGPL-1.0-only",
- "agpl1.0.0+": "AGPL-1.0-or-later",
- "agpl1.0.0only": "AGPL-1.0-only",
- "agpl1.0.0orlater": "AGPL-1.0-or-later",
- "agpl1.0only": "AGPL-1.0-only",
- "agpl1.0orlater": "AGPL-1.0-or-later",
- "agpl1only": "AGPL-1.0-only",
- "agpl1orlater": "AGPL-1.0-or-later",
- "agpl3": "AGPL-3.0-only",
- "agpl3+": "AGPL-3.0-or-later",
- "agpl3.0": "AGPL-3.0-only",
- "agpl3.0+": "AGPL-3.0-or-later",
- "agpl3.0.0": "AGPL-3.0-only",
- "agpl3.0.0+": "AGPL-3.0-or-later",
- "agpl3.0.0only": "AGPL-3.0-only",
- "agpl3.0.0orlater": "AGPL-3.0-or-later",
- "agpl3.0only": "AGPL-3.0-only",
- "agpl3.0orlater": "AGPL-3.0-or-later",
- "agpl3only": "AGPL-3.0-only",
- "agpl3orlater": "AGPL-3.0-or-later",
- "aladdin": "Aladdin",
- "amdplpa": "AMDPLPA",
- "aml": "AML",
- "ampas": "AMPAS",
- "antlrpd": "ANTLR-PD",
- "antlrpdfallback": "ANTLR-PD-fallback",
- "apache1": "Apache-1.0",
- "apache1.0": "Apache-1.0",
- "apache1.0.0": "Apache-1.0",
- "apache1.1": "Apache-1.1",
- "apache1.1.0": "Apache-1.1",
- "apache2": "Apache-2.0",
- "apache2.0": "Apache-2.0",
- "apache2.0.0": "Apache-2.0",
- "apafml": "APAFML",
- "apl1": "APL-1.0",
- "apl1.0": "APL-1.0",
- "apl1.0.0": "APL-1.0",
- "apps2.0.0p": "App-s2p",
- "apps2.0p": "App-s2p",
- "apps2p": "App-s2p",
- "apsl1": "APSL-1.0",
- "apsl1.0": "APSL-1.0",
- "apsl1.0.0": "APSL-1.0",
- "apsl1.1": "APSL-1.1",
- "apsl1.1.0": "APSL-1.1",
- "apsl1.2": "APSL-1.2",
- "apsl1.2.0": "APSL-1.2",
- "apsl2": "APSL-2.0",
- "apsl2.0": "APSL-2.0",
- "apsl2.0.0": "APSL-2.0",
- "arphic1999": "Arphic-1999",
- "arphic1999.0": "Arphic-1999",
- "arphic1999.0.0": "Arphic-1999",
- "artistic1": "Artistic-1.0",
- "artistic1.0": "Artistic-1.0",
- "artistic1.0.0": "Artistic-1.0",
- "artistic1.0.0cl8": "Artistic-1.0-cl8",
- "artistic1.0.0perl": "Artistic-1.0-Perl",
- "artistic1.0cl8": "Artistic-1.0-cl8",
- "artistic1.0perl": "Artistic-1.0-Perl",
- "artistic1cl8": "Artistic-1.0-cl8",
- "artistic1perl": "Artistic-1.0-Perl",
- "artistic2": "Artistic-2.0",
- "artistic2.0": "Artistic-2.0",
- "artistic2.0.0": "Artistic-2.0",
- "baekmuk": "Baekmuk",
- "bahyph": "Bahyph",
- "barr": "Barr",
- "beerware": "Beerware",
- "bitstreamcharter": "Bitstream-Charter",
- "bitstreamvera": "Bitstream-Vera",
- "bittorrent1": "BitTorrent-1.0",
- "bittorrent1.0": "BitTorrent-1.0",
- "bittorrent1.0.0": "BitTorrent-1.0",
- "bittorrent1.1": "BitTorrent-1.1",
- "bittorrent1.1.0": "BitTorrent-1.1",
- "blessing": "blessing",
- "blueoak1": "BlueOak-1.0.0",
- "blueoak1.0": "BlueOak-1.0.0",
- "blueoak1.0.0": "BlueOak-1.0.0",
- "borceux": "Borceux",
- "briangladman3.0.0clause": "Brian-Gladman-3-Clause",
- "briangladman3.0clause": "Brian-Gladman-3-Clause",
- "briangladman3clause": "Brian-Gladman-3-Clause",
- "bsd1.0.0clause": "BSD-1-Clause",
- "bsd1.0clause": "BSD-1-Clause",
- "bsd1clause": "BSD-1-Clause",
- "bsd2.0.0clause": "BSD-2-Clause",
- "bsd2.0.0clausefreebsd": "BSD-2-Clause-Views",
- "bsd2.0.0clausenetbsd": "BSD-2-Clause",
- "bsd2.0.0clausepatent": "BSD-2-Clause-Patent",
- "bsd2.0.0clauseviews": "BSD-2-Clause-Views",
- "bsd2.0clause": "BSD-2-Clause",
- "bsd2.0clausefreebsd": "BSD-2-Clause-Views",
- "bsd2.0clausenetbsd": "BSD-2-Clause",
- "bsd2.0clausepatent": "BSD-2-Clause-Patent",
- "bsd2.0clauseviews": "BSD-2-Clause-Views",
- "bsd2clause": "BSD-2-Clause",
- "bsd2clausefreebsd": "BSD-2-Clause-Views",
- "bsd2clausenetbsd": "BSD-2-Clause",
- "bsd2clausepatent": "BSD-2-Clause-Patent",
- "bsd2clauseviews": "BSD-2-Clause-Views",
- "bsd3.0.0clause": "BSD-3-Clause",
- "bsd3.0.0clauseattribution": "BSD-3-Clause-Attribution",
- "bsd3.0.0clauseclear": "BSD-3-Clause-Clear",
- "bsd3.0.0clauselbnl": "BSD-3-Clause-LBNL",
- "bsd3.0.0clausemodification": "BSD-3-Clause-Modification",
- "bsd3.0.0clausenomilitarylicense": "BSD-3-Clause-No-Military-License",
- "bsd3.0.0clausenonuclearlicense": "BSD-3-Clause-No-Nuclear-License",
- "bsd3.0.0clausenonuclearlicense2014": "BSD-3-Clause-No-Nuclear-License-2014",
- "bsd3.0.0clausenonuclearwarranty": "BSD-3-Clause-No-Nuclear-Warranty",
- "bsd3.0.0clauseopenmpi": "BSD-3-Clause-Open-MPI",
- "bsd3.0clause": "BSD-3-Clause",
- "bsd3.0clauseattribution": "BSD-3-Clause-Attribution",
- "bsd3.0clauseclear": "BSD-3-Clause-Clear",
- "bsd3.0clauselbnl": "BSD-3-Clause-LBNL",
- "bsd3.0clausemodification": "BSD-3-Clause-Modification",
- "bsd3.0clausenomilitarylicense": "BSD-3-Clause-No-Military-License",
- "bsd3.0clausenonuclearlicense": "BSD-3-Clause-No-Nuclear-License",
- "bsd3.0clausenonuclearlicense2014": "BSD-3-Clause-No-Nuclear-License-2014",
- "bsd3.0clausenonuclearwarranty": "BSD-3-Clause-No-Nuclear-Warranty",
- "bsd3.0clauseopenmpi": "BSD-3-Clause-Open-MPI",
- "bsd3clause": "BSD-3-Clause",
- "bsd3clauseattribution": "BSD-3-Clause-Attribution",
- "bsd3clauseclear": "BSD-3-Clause-Clear",
- "bsd3clauselbnl": "BSD-3-Clause-LBNL",
- "bsd3clausemodification": "BSD-3-Clause-Modification",
- "bsd3clausenomilitarylicense": "BSD-3-Clause-No-Military-License",
- "bsd3clausenonuclearlicense": "BSD-3-Clause-No-Nuclear-License",
- "bsd3clausenonuclearlicense2014": "BSD-3-Clause-No-Nuclear-License-2014",
- "bsd3clausenonuclearwarranty": "BSD-3-Clause-No-Nuclear-Warranty",
- "bsd3clauseopenmpi": "BSD-3-Clause-Open-MPI",
- "bsd4.0.0clause": "BSD-4-Clause",
- "bsd4.0.0clauseshortened": "BSD-4-Clause-Shortened",
- "bsd4.0.0clauseuc": "BSD-4-Clause-UC",
- "bsd4.0clause": "BSD-4-Clause",
- "bsd4.0clauseshortened": "BSD-4-Clause-Shortened",
- "bsd4.0clauseuc": "BSD-4-Clause-UC",
- "bsd4.3.0reno": "BSD-4.3RENO",
- "bsd4.3.0tahoe": "BSD-4.3TAHOE",
- "bsd4.3reno": "BSD-4.3RENO",
- "bsd4.3tahoe": "BSD-4.3TAHOE",
- "bsd4clause": "BSD-4-Clause",
- "bsd4clauseshortened": "BSD-4-Clause-Shortened",
- "bsd4clauseuc": "BSD-4-Clause-UC",
- "bsd4reno": "BSD-4.3RENO",
- "bsd4tahoe": "BSD-4.3TAHOE",
- "bsdadvertisingacknowledgement": "BSD-Advertising-Acknowledgement",
- "bsdattributionhpnddisclaimer": "BSD-Attribution-HPND-disclaimer",
- "bsdprotection": "BSD-Protection",
- "bsdsourcecode": "BSD-Source-Code",
- "bsl1": "BSL-1.0",
- "bsl1.0": "BSL-1.0",
- "bsl1.0.0": "BSL-1.0",
- "busl1": "BUSL-1.1",
- "busl1.1": "BUSL-1.1",
- "busl1.1.0": "BUSL-1.1",
- "bzip21": "bzip2-1.0.6",
- "bzip21.0": "bzip2-1.0.6",
- "bzip21.0.5": "bzip2-1.0.6",
- "bzip21.0.6": "bzip2-1.0.6",
- "cal1": "CAL-1.0",
- "cal1.0": "CAL-1.0",
- "cal1.0.0": "CAL-1.0",
- "cal1.0.0combinedworkexception": "CAL-1.0-Combined-Work-Exception",
- "cal1.0combinedworkexception": "CAL-1.0-Combined-Work-Exception",
- "cal1combinedworkexception": "CAL-1.0-Combined-Work-Exception",
- "caldera": "Caldera",
- "catosl1": "CATOSL-1.1",
- "catosl1.1": "CATOSL-1.1",
- "catosl1.1.0": "CATOSL-1.1",
- "cc01": "CC0-1.0",
- "cc01.0": "CC0-1.0",
- "cc01.0.0": "CC0-1.0",
- "ccby1": "CC-BY-1.0",
- "ccby1.0": "CC-BY-1.0",
- "ccby1.0.0": "CC-BY-1.0",
- "ccby2": "CC-BY-2.0",
- "ccby2.0": "CC-BY-2.0",
- "ccby2.0.0": "CC-BY-2.0",
- "ccby2.5": "CC-BY-2.5",
- "ccby2.5.0": "CC-BY-2.5",
- "ccby2.5.0au": "CC-BY-2.5-AU",
- "ccby2.5au": "CC-BY-2.5-AU",
- "ccby2au": "CC-BY-2.5-AU",
- "ccby3": "CC-BY-3.0",
- "ccby3.0": "CC-BY-3.0",
- "ccby3.0.0": "CC-BY-3.0",
- "ccby3.0.0at": "CC-BY-3.0-AT",
- "ccby3.0.0de": "CC-BY-3.0-DE",
- "ccby3.0.0igo": "CC-BY-3.0-IGO",
- "ccby3.0.0nl": "CC-BY-3.0-NL",
- "ccby3.0.0us": "CC-BY-3.0-US",
- "ccby3.0at": "CC-BY-3.0-AT",
- "ccby3.0de": "CC-BY-3.0-DE",
- "ccby3.0igo": "CC-BY-3.0-IGO",
- "ccby3.0nl": "CC-BY-3.0-NL",
- "ccby3.0us": "CC-BY-3.0-US",
- "ccby3at": "CC-BY-3.0-AT",
- "ccby3de": "CC-BY-3.0-DE",
- "ccby3igo": "CC-BY-3.0-IGO",
- "ccby3nl": "CC-BY-3.0-NL",
- "ccby3us": "CC-BY-3.0-US",
- "ccby4": "CC-BY-4.0",
- "ccby4.0": "CC-BY-4.0",
- "ccby4.0.0": "CC-BY-4.0",
- "ccbync1": "CC-BY-NC-1.0",
- "ccbync1.0": "CC-BY-NC-1.0",
- "ccbync1.0.0": "CC-BY-NC-1.0",
- "ccbync2": "CC-BY-NC-2.0",
- "ccbync2.0": "CC-BY-NC-2.0",
- "ccbync2.0.0": "CC-BY-NC-2.0",
- "ccbync2.5": "CC-BY-NC-2.5",
- "ccbync2.5.0": "CC-BY-NC-2.5",
- "ccbync3": "CC-BY-NC-3.0",
- "ccbync3.0": "CC-BY-NC-3.0",
- "ccbync3.0.0": "CC-BY-NC-3.0",
- "ccbync3.0.0de": "CC-BY-NC-3.0-DE",
- "ccbync3.0de": "CC-BY-NC-3.0-DE",
- "ccbync3de": "CC-BY-NC-3.0-DE",
- "ccbync4": "CC-BY-NC-4.0",
- "ccbync4.0": "CC-BY-NC-4.0",
- "ccbync4.0.0": "CC-BY-NC-4.0",
- "ccbyncnd1": "CC-BY-NC-ND-1.0",
- "ccbyncnd1.0": "CC-BY-NC-ND-1.0",
- "ccbyncnd1.0.0": "CC-BY-NC-ND-1.0",
- "ccbyncnd2": "CC-BY-NC-ND-2.0",
- "ccbyncnd2.0": "CC-BY-NC-ND-2.0",
- "ccbyncnd2.0.0": "CC-BY-NC-ND-2.0",
- "ccbyncnd2.5": "CC-BY-NC-ND-2.5",
- "ccbyncnd2.5.0": "CC-BY-NC-ND-2.5",
- "ccbyncnd3": "CC-BY-NC-ND-3.0",
- "ccbyncnd3.0": "CC-BY-NC-ND-3.0",
- "ccbyncnd3.0.0": "CC-BY-NC-ND-3.0",
- "ccbyncnd3.0.0de": "CC-BY-NC-ND-3.0-DE",
- "ccbyncnd3.0.0igo": "CC-BY-NC-ND-3.0-IGO",
- "ccbyncnd3.0de": "CC-BY-NC-ND-3.0-DE",
- "ccbyncnd3.0igo": "CC-BY-NC-ND-3.0-IGO",
- "ccbyncnd3de": "CC-BY-NC-ND-3.0-DE",
- "ccbyncnd3igo": "CC-BY-NC-ND-3.0-IGO",
- "ccbyncnd4": "CC-BY-NC-ND-4.0",
- "ccbyncnd4.0": "CC-BY-NC-ND-4.0",
- "ccbyncnd4.0.0": "CC-BY-NC-ND-4.0",
- "ccbyncsa1": "CC-BY-NC-SA-1.0",
- "ccbyncsa1.0": "CC-BY-NC-SA-1.0",
- "ccbyncsa1.0.0": "CC-BY-NC-SA-1.0",
- "ccbyncsa2": "CC-BY-NC-SA-2.0",
- "ccbyncsa2.0": "CC-BY-NC-SA-2.0",
- "ccbyncsa2.0.0": "CC-BY-NC-SA-2.0",
- "ccbyncsa2.0.0de": "CC-BY-NC-SA-2.0-DE",
- "ccbyncsa2.0.0fr": "CC-BY-NC-SA-2.0-FR",
- "ccbyncsa2.0.0uk": "CC-BY-NC-SA-2.0-UK",
- "ccbyncsa2.0de": "CC-BY-NC-SA-2.0-DE",
- "ccbyncsa2.0fr": "CC-BY-NC-SA-2.0-FR",
- "ccbyncsa2.0uk": "CC-BY-NC-SA-2.0-UK",
- "ccbyncsa2.5": "CC-BY-NC-SA-2.5",
- "ccbyncsa2.5.0": "CC-BY-NC-SA-2.5",
- "ccbyncsa2de": "CC-BY-NC-SA-2.0-DE",
- "ccbyncsa2fr": "CC-BY-NC-SA-2.0-FR",
- "ccbyncsa2uk": "CC-BY-NC-SA-2.0-UK",
- "ccbyncsa3": "CC-BY-NC-SA-3.0",
- "ccbyncsa3.0": "CC-BY-NC-SA-3.0",
- "ccbyncsa3.0.0": "CC-BY-NC-SA-3.0",
- "ccbyncsa3.0.0de": "CC-BY-NC-SA-3.0-DE",
- "ccbyncsa3.0.0igo": "CC-BY-NC-SA-3.0-IGO",
- "ccbyncsa3.0de": "CC-BY-NC-SA-3.0-DE",
- "ccbyncsa3.0igo": "CC-BY-NC-SA-3.0-IGO",
- "ccbyncsa3de": "CC-BY-NC-SA-3.0-DE",
- "ccbyncsa3igo": "CC-BY-NC-SA-3.0-IGO",
- "ccbyncsa4": "CC-BY-NC-SA-4.0",
- "ccbyncsa4.0": "CC-BY-NC-SA-4.0",
- "ccbyncsa4.0.0": "CC-BY-NC-SA-4.0",
- "ccbynd1": "CC-BY-ND-1.0",
- "ccbynd1.0": "CC-BY-ND-1.0",
- "ccbynd1.0.0": "CC-BY-ND-1.0",
- "ccbynd2": "CC-BY-ND-2.0",
- "ccbynd2.0": "CC-BY-ND-2.0",
- "ccbynd2.0.0": "CC-BY-ND-2.0",
- "ccbynd2.5": "CC-BY-ND-2.5",
- "ccbynd2.5.0": "CC-BY-ND-2.5",
- "ccbynd3": "CC-BY-ND-3.0",
- "ccbynd3.0": "CC-BY-ND-3.0",
- "ccbynd3.0.0": "CC-BY-ND-3.0",
- "ccbynd3.0.0de": "CC-BY-ND-3.0-DE",
- "ccbynd3.0de": "CC-BY-ND-3.0-DE",
- "ccbynd3de": "CC-BY-ND-3.0-DE",
- "ccbynd4": "CC-BY-ND-4.0",
- "ccbynd4.0": "CC-BY-ND-4.0",
- "ccbynd4.0.0": "CC-BY-ND-4.0",
- "ccbysa1": "CC-BY-SA-1.0",
- "ccbysa1.0": "CC-BY-SA-1.0",
- "ccbysa1.0.0": "CC-BY-SA-1.0",
- "ccbysa2": "CC-BY-SA-2.0",
- "ccbysa2.0": "CC-BY-SA-2.0",
- "ccbysa2.0.0": "CC-BY-SA-2.0",
- "ccbysa2.0.0uk": "CC-BY-SA-2.0-UK",
- "ccbysa2.0uk": "CC-BY-SA-2.0-UK",
- "ccbysa2.1.0jp": "CC-BY-SA-2.1-JP",
- "ccbysa2.1jp": "CC-BY-SA-2.1-JP",
- "ccbysa2.5": "CC-BY-SA-2.5",
- "ccbysa2.5.0": "CC-BY-SA-2.5",
- "ccbysa2jp": "CC-BY-SA-2.1-JP",
- "ccbysa2uk": "CC-BY-SA-2.0-UK",
- "ccbysa3": "CC-BY-SA-3.0",
- "ccbysa3.0": "CC-BY-SA-3.0",
- "ccbysa3.0.0": "CC-BY-SA-3.0",
- "ccbysa3.0.0at": "CC-BY-SA-3.0-AT",
- "ccbysa3.0.0de": "CC-BY-SA-3.0-DE",
- "ccbysa3.0at": "CC-BY-SA-3.0-AT",
- "ccbysa3.0de": "CC-BY-SA-3.0-DE",
- "ccbysa3at": "CC-BY-SA-3.0-AT",
- "ccbysa3de": "CC-BY-SA-3.0-DE",
- "ccbysa4": "CC-BY-SA-4.0",
- "ccbysa4.0": "CC-BY-SA-4.0",
- "ccbysa4.0.0": "CC-BY-SA-4.0",
- "ccpddc": "CC-PDDC",
- "cddl1": "CDDL-1.0",
- "cddl1.0": "CDDL-1.0",
- "cddl1.0.0": "CDDL-1.0",
- "cddl1.1": "CDDL-1.1",
- "cddl1.1.0": "CDDL-1.1",
- "cdl1": "CDL-1.0",
- "cdl1.0": "CDL-1.0",
- "cdl1.0.0": "CDL-1.0",
- "cdlapermissive1": "CDLA-Permissive-1.0",
- "cdlapermissive1.0": "CDLA-Permissive-1.0",
- "cdlapermissive1.0.0": "CDLA-Permissive-1.0",
- "cdlapermissive2": "CDLA-Permissive-2.0",
- "cdlapermissive2.0": "CDLA-Permissive-2.0",
- "cdlapermissive2.0.0": "CDLA-Permissive-2.0",
- "cdlasharing1": "CDLA-Sharing-1.0",
- "cdlasharing1.0": "CDLA-Sharing-1.0",
- "cdlasharing1.0.0": "CDLA-Sharing-1.0",
- "cecill1": "CECILL-1.0",
- "cecill1.0": "CECILL-1.0",
- "cecill1.0.0": "CECILL-1.0",
- "cecill1.1": "CECILL-1.1",
- "cecill1.1.0": "CECILL-1.1",
- "cecill2": "CECILL-2.0",
- "cecill2.0": "CECILL-2.0",
- "cecill2.0.0": "CECILL-2.0",
- "cecill2.1": "CECILL-2.1",
- "cecill2.1.0": "CECILL-2.1",
- "cecillb": "CECILL-B",
- "cecillc": "CECILL-C",
- "cernohl1": "CERN-OHL-1.1",
- "cernohl1.1": "CERN-OHL-1.1",
- "cernohl1.1.0": "CERN-OHL-1.1",
- "cernohl1.2": "CERN-OHL-1.2",
- "cernohl1.2.0": "CERN-OHL-1.2",
- "cernohlp2": "CERN-OHL-P-2.0",
- "cernohlp2.0": "CERN-OHL-P-2.0",
- "cernohlp2.0.0": "CERN-OHL-P-2.0",
- "cernohls2": "CERN-OHL-S-2.0",
- "cernohls2.0": "CERN-OHL-S-2.0",
- "cernohls2.0.0": "CERN-OHL-S-2.0",
- "cernohlw2": "CERN-OHL-W-2.0",
- "cernohlw2.0": "CERN-OHL-W-2.0",
- "cernohlw2.0.0": "CERN-OHL-W-2.0",
- "cfitsio": "CFITSIO",
- "checkmk": "checkmk",
- "clartistic": "ClArtistic",
- "clips": "Clips",
- "cmumach": "CMU-Mach",
- "cnrijython": "CNRI-Jython",
- "cnripython": "CNRI-Python",
- "cnripythongplcompatible": "CNRI-Python-GPL-Compatible",
- "coil1": "COIL-1.0",
- "coil1.0": "COIL-1.0",
- "coil1.0.0": "COIL-1.0",
- "communityspec1": "Community-Spec-1.0",
- "communityspec1.0": "Community-Spec-1.0",
- "communityspec1.0.0": "Community-Spec-1.0",
- "condor1": "Condor-1.1",
- "condor1.1": "Condor-1.1",
- "condor1.1.0": "Condor-1.1",
- "copyleftnext0.3": "copyleft-next-0.3.0",
- "copyleftnext0.3.0": "copyleft-next-0.3.0",
- "copyleftnext0.3.1": "copyleft-next-0.3.1",
- "cornelllosslessjpeg": "Cornell-Lossless-JPEG",
- "cpal1": "CPAL-1.0",
- "cpal1.0": "CPAL-1.0",
- "cpal1.0.0": "CPAL-1.0",
- "cpl1": "CPL-1.0",
- "cpl1.0": "CPL-1.0",
- "cpl1.0.0": "CPL-1.0",
- "cpol1": "CPOL-1.02",
- "cpol1.02": "CPOL-1.02",
- "cpol1.02.0": "CPOL-1.02",
- "crossword": "Crossword",
- "crystalstacker": "CrystalStacker",
- "cuaopl1": "CUA-OPL-1.0",
- "cuaopl1.0": "CUA-OPL-1.0",
- "cuaopl1.0.0": "CUA-OPL-1.0",
- "cube": "Cube",
- "cuda1": "C-UDA-1.0",
- "cuda1.0": "C-UDA-1.0",
- "cuda1.0.0": "C-UDA-1.0",
- "curl": "curl",
- "dfsl1": "D-FSL-1.0",
- "dfsl1.0": "D-FSL-1.0",
- "dfsl1.0.0": "D-FSL-1.0",
- "diffmark": "diffmark",
- "dldeby2": "DL-DE-BY-2.0",
- "dldeby2.0": "DL-DE-BY-2.0",
- "dldeby2.0.0": "DL-DE-BY-2.0",
- "doc": "DOC",
- "dotseqn": "Dotseqn",
- "drl1": "DRL-1.0",
- "drl1.0": "DRL-1.0",
- "drl1.0.0": "DRL-1.0",
- "dsdp": "DSDP",
- "dvipdfm": "dvipdfm",
- "ecl1": "ECL-1.0",
- "ecl1.0": "ECL-1.0",
- "ecl1.0.0": "ECL-1.0",
- "ecl2": "ECL-2.0",
- "ecl2.0": "ECL-2.0",
- "ecl2.0.0": "ECL-2.0",
- "ecos2": "eCos-2.0",
- "ecos2.0": "eCos-2.0",
- "ecos2.0.0": "eCos-2.0",
- "efl1": "EFL-1.0",
- "efl1.0": "EFL-1.0",
- "efl1.0.0": "EFL-1.0",
- "efl2": "EFL-2.0",
- "efl2.0": "EFL-2.0",
- "efl2.0.0": "EFL-2.0",
- "egenix": "eGenix",
- "elastic2": "Elastic-2.0",
- "elastic2.0": "Elastic-2.0",
- "elastic2.0.0": "Elastic-2.0",
- "entessa": "Entessa",
- "epics": "EPICS",
- "epl1": "EPL-1.0",
- "epl1.0": "EPL-1.0",
- "epl1.0.0": "EPL-1.0",
- "epl2": "EPL-2.0",
- "epl2.0": "EPL-2.0",
- "epl2.0.0": "EPL-2.0",
- "erlpl1": "ErlPL-1.1",
- "erlpl1.1": "ErlPL-1.1",
- "erlpl1.1.0": "ErlPL-1.1",
- "etalab2": "etalab-2.0",
- "etalab2.0": "etalab-2.0",
- "etalab2.0.0": "etalab-2.0",
- "eudatagrid": "EUDatagrid",
- "eupl1": "EUPL-1.0",
- "eupl1.0": "EUPL-1.0",
- "eupl1.0.0": "EUPL-1.0",
- "eupl1.1": "EUPL-1.1",
- "eupl1.1.0": "EUPL-1.1",
- "eupl1.2": "EUPL-1.2",
- "eupl1.2.0": "EUPL-1.2",
- "eurosym": "Eurosym",
- "fair": "Fair",
- "fdkaac": "FDK-AAC",
- "frameworx1": "Frameworx-1.0",
- "frameworx1.0": "Frameworx-1.0",
- "frameworx1.0.0": "Frameworx-1.0",
- "freebsddoc": "FreeBSD-DOC",
- "freeimage": "FreeImage",
- "fsfap": "FSFAP",
- "fsful": "FSFUL",
- "fsfullr": "FSFULLR",
- "fsfullrwd": "FSFULLRWD",
- "ftl": "FTL",
- "gd": "GD",
- "gfdl1": "GFDL-1.1-only",
- "gfdl1+": "GFDL-1.1-or-later",
- "gfdl1+invariants": "GFDL-1.1-invariants-or-later",
- "gfdl1+noinvariants": "GFDL-1.1-no-invariants-or-later",
- "gfdl1.1": "GFDL-1.1-only",
- "gfdl1.1+": "GFDL-1.1-or-later",
- "gfdl1.1+invariants": "GFDL-1.1-invariants-or-later",
- "gfdl1.1+noinvariants": "GFDL-1.1-no-invariants-or-later",
- "gfdl1.1.0": "GFDL-1.1-only",
- "gfdl1.1.0+": "GFDL-1.1-or-later",
- "gfdl1.1.0+invariants": "GFDL-1.1-invariants-or-later",
- "gfdl1.1.0+noinvariants": "GFDL-1.1-no-invariants-or-later",
- "gfdl1.1.0invariantsonly": "GFDL-1.1-invariants-only",
- "gfdl1.1.0invariantsorlater": "GFDL-1.1-invariants-or-later",
- "gfdl1.1.0noinvariantsonly": "GFDL-1.1-no-invariants-only",
- "gfdl1.1.0noinvariantsorlater": "GFDL-1.1-no-invariants-or-later",
- "gfdl1.1.0only": "GFDL-1.1-only",
- "gfdl1.1.0orlater": "GFDL-1.1-or-later",
- "gfdl1.1invariantsonly": "GFDL-1.1-invariants-only",
- "gfdl1.1invariantsorlater": "GFDL-1.1-invariants-or-later",
- "gfdl1.1noinvariantsonly": "GFDL-1.1-no-invariants-only",
- "gfdl1.1noinvariantsorlater": "GFDL-1.1-no-invariants-or-later",
- "gfdl1.1only": "GFDL-1.1-only",
- "gfdl1.1orlater": "GFDL-1.1-or-later",
- "gfdl1.2": "GFDL-1.2-only",
- "gfdl1.2+": "GFDL-1.2-or-later",
- "gfdl1.2+invariants": "GFDL-1.2-invariants-or-later",
- "gfdl1.2+noinvariants": "GFDL-1.2-no-invariants-or-later",
- "gfdl1.2.0": "GFDL-1.2-only",
- "gfdl1.2.0+": "GFDL-1.2-or-later",
- "gfdl1.2.0+invariants": "GFDL-1.2-invariants-or-later",
- "gfdl1.2.0+noinvariants": "GFDL-1.2-no-invariants-or-later",
- "gfdl1.2.0invariantsonly": "GFDL-1.2-invariants-only",
- "gfdl1.2.0invariantsorlater": "GFDL-1.2-invariants-or-later",
- "gfdl1.2.0noinvariantsonly": "GFDL-1.2-no-invariants-only",
- "gfdl1.2.0noinvariantsorlater": "GFDL-1.2-no-invariants-or-later",
- "gfdl1.2.0only": "GFDL-1.2-only",
- "gfdl1.2.0orlater": "GFDL-1.2-or-later",
- "gfdl1.2invariantsonly": "GFDL-1.2-invariants-only",
- "gfdl1.2invariantsorlater": "GFDL-1.2-invariants-or-later",
- "gfdl1.2noinvariantsonly": "GFDL-1.2-no-invariants-only",
- "gfdl1.2noinvariantsorlater": "GFDL-1.2-no-invariants-or-later",
- "gfdl1.2only": "GFDL-1.2-only",
- "gfdl1.2orlater": "GFDL-1.2-or-later",
- "gfdl1.3": "GFDL-1.3-only",
- "gfdl1.3+": "GFDL-1.3-or-later",
- "gfdl1.3+invariants": "GFDL-1.3-invariants-or-later",
- "gfdl1.3+noinvariants": "GFDL-1.3-no-invariants-or-later",
- "gfdl1.3.0": "GFDL-1.3-only",
- "gfdl1.3.0+": "GFDL-1.3-or-later",
- "gfdl1.3.0+invariants": "GFDL-1.3-invariants-or-later",
- "gfdl1.3.0+noinvariants": "GFDL-1.3-no-invariants-or-later",
- "gfdl1.3.0invariantsonly": "GFDL-1.3-invariants-only",
- "gfdl1.3.0invariantsorlater": "GFDL-1.3-invariants-or-later",
- "gfdl1.3.0noinvariantsonly": "GFDL-1.3-no-invariants-only",
- "gfdl1.3.0noinvariantsorlater": "GFDL-1.3-no-invariants-or-later",
- "gfdl1.3.0only": "GFDL-1.3-only",
- "gfdl1.3.0orlater": "GFDL-1.3-or-later",
- "gfdl1.3invariantsonly": "GFDL-1.3-invariants-only",
- "gfdl1.3invariantsorlater": "GFDL-1.3-invariants-or-later",
- "gfdl1.3noinvariantsonly": "GFDL-1.3-no-invariants-only",
- "gfdl1.3noinvariantsorlater": "GFDL-1.3-no-invariants-or-later",
- "gfdl1.3only": "GFDL-1.3-only",
- "gfdl1.3orlater": "GFDL-1.3-or-later",
- "gfdl1invariantsonly": "GFDL-1.1-invariants-only",
- "gfdl1invariantsorlater": "GFDL-1.1-invariants-or-later",
- "gfdl1noinvariantsonly": "GFDL-1.1-no-invariants-only",
- "gfdl1noinvariantsorlater": "GFDL-1.1-no-invariants-or-later",
- "gfdl1only": "GFDL-1.1-only",
- "gfdl1orlater": "GFDL-1.1-or-later",
- "giftware": "Giftware",
- "gl2.0.0ps": "GL2PS",
- "gl2.0ps": "GL2PS",
- "gl2ps": "GL2PS",
- "glide": "Glide",
- "glulxe": "Glulxe",
- "glwtpl": "GLWTPL",
- "gnuplot": "gnuplot",
- "gpl1": "GPL-1.0-only",
- "gpl1+": "GPL-1.0-or-later",
- "gpl1.0": "GPL-1.0-only",
- "gpl1.0+": "GPL-1.0-or-later",
- "gpl1.0.0": "GPL-1.0-only",
- "gpl1.0.0+": "GPL-1.0-or-later",
- "gpl1.0.0only": "GPL-1.0-only",
- "gpl1.0.0orlater": "GPL-1.0-or-later",
- "gpl1.0only": "GPL-1.0-only",
- "gpl1.0orlater": "GPL-1.0-or-later",
- "gpl1only": "GPL-1.0-only",
- "gpl1orlater": "GPL-1.0-or-later",
- "gpl2": "GPL-2.0-only",
- "gpl2+": "GPL-2.0-or-later",
- "gpl2.0": "GPL-2.0-only",
- "gpl2.0+": "GPL-2.0-or-later",
- "gpl2.0.0": "GPL-2.0-only",
- "gpl2.0.0+": "GPL-2.0-or-later",
- "gpl2.0.0only": "GPL-2.0-only",
- "gpl2.0.0orlater": "GPL-2.0-or-later",
- "gpl2.0.0withautoconfexception": "GPL-2.0-with-autoconf-exception",
- "gpl2.0.0withbisonexception": "GPL-2.0-with-bison-exception",
- "gpl2.0.0withclasspathexception": "GPL-2.0-with-classpath-exception",
- "gpl2.0.0withfontexception": "GPL-2.0-with-font-exception",
- "gpl2.0.0withgccexception": "GPL-2.0-with-GCC-exception",
- "gpl2.0only": "GPL-2.0-only",
- "gpl2.0orlater": "GPL-2.0-or-later",
- "gpl2.0withautoconfexception": "GPL-2.0-with-autoconf-exception",
- "gpl2.0withbisonexception": "GPL-2.0-with-bison-exception",
- "gpl2.0withclasspathexception": "GPL-2.0-with-classpath-exception",
- "gpl2.0withfontexception": "GPL-2.0-with-font-exception",
- "gpl2.0withgccexception": "GPL-2.0-with-GCC-exception",
- "gpl2only": "GPL-2.0-only",
- "gpl2orlater": "GPL-2.0-or-later",
- "gpl2withautoconfexception": "GPL-2.0-with-autoconf-exception",
- "gpl2withbisonexception": "GPL-2.0-with-bison-exception",
- "gpl2withclasspathexception": "GPL-2.0-with-classpath-exception",
- "gpl2withfontexception": "GPL-2.0-with-font-exception",
- "gpl2withgccexception": "GPL-2.0-with-GCC-exception",
- "gpl3": "GPL-3.0-only",
- "gpl3+": "GPL-3.0-or-later",
- "gpl3.0": "GPL-3.0-only",
- "gpl3.0+": "GPL-3.0-or-later",
- "gpl3.0.0": "GPL-3.0-only",
- "gpl3.0.0+": "GPL-3.0-or-later",
- "gpl3.0.0only": "GPL-3.0-only",
- "gpl3.0.0orlater": "GPL-3.0-or-later",
- "gpl3.0.0withautoconfexception": "GPL-3.0-with-autoconf-exception",
- "gpl3.0.0withgccexception": "GPL-3.0-with-GCC-exception",
- "gpl3.0only": "GPL-3.0-only",
- "gpl3.0orlater": "GPL-3.0-or-later",
- "gpl3.0withautoconfexception": "GPL-3.0-with-autoconf-exception",
- "gpl3.0withgccexception": "GPL-3.0-with-GCC-exception",
- "gpl3only": "GPL-3.0-only",
- "gpl3orlater": "GPL-3.0-or-later",
- "gpl3withautoconfexception": "GPL-3.0-with-autoconf-exception",
- "gpl3withgccexception": "GPL-3.0-with-GCC-exception",
- "graphicsgems": "Graphics-Gems",
- "gsoap1.3.0b": "gSOAP-1.3b",
- "gsoap1.3b": "gSOAP-1.3b",
- "gsoap1b": "gSOAP-1.3b",
- "haskellreport": "HaskellReport",
- "hippocratic2": "Hippocratic-2.1",
- "hippocratic2.1": "Hippocratic-2.1",
- "hippocratic2.1.0": "Hippocratic-2.1",
- "hp1986": "HP-1986",
- "hp1986.0": "HP-1986",
- "hp1986.0.0": "HP-1986",
- "hpnd": "HPND",
- "hpndexportus": "HPND-export-US",
- "hpndmarkuskuhn": "HPND-Markus-Kuhn",
- "hpndsellvariant": "HPND-sell-variant",
- "hpndsellvariantmitdisclaimer": "HPND-sell-variant-MIT-disclaimer",
- "htmltidy": "HTMLTIDY",
- "ibmpibs": "IBM-pibs",
- "icu": "ICU",
- "ieccodecomponentseula": "IEC-Code-Components-EULA",
- "ijg": "IJG",
- "ijgshort": "IJG-short",
- "imagemagick": "ImageMagick",
- "imatix": "iMatix",
- "imlib2": "Imlib2",
- "imlib2.0": "Imlib2",
- "imlib2.0.0": "Imlib2",
- "infozip": "Info-ZIP",
- "intel": "Intel",
- "intelacpi": "Intel-ACPI",
- "interbase1": "Interbase-1.0",
- "interbase1.0": "Interbase-1.0",
- "interbase1.0.0": "Interbase-1.0",
- "ipa": "IPA",
- "ipl1": "IPL-1.0",
- "ipl1.0": "IPL-1.0",
- "ipl1.0.0": "IPL-1.0",
- "isc": "ISC",
- "jam": "Jam",
- "jasper2": "JasPer-2.0",
- "jasper2.0": "JasPer-2.0",
- "jasper2.0.0": "JasPer-2.0",
- "jplimage": "JPL-image",
- "jpnic": "JPNIC",
- "json": "JSON",
- "kazlib": "Kazlib",
- "knuthctan": "Knuth-CTAN",
- "lal1": "LAL-1.2",
- "lal1.2": "LAL-1.2",
- "lal1.2.0": "LAL-1.2",
- "lal1.3": "LAL-1.3",
- "lal1.3.0": "LAL-1.3",
- "latex2.0.0e": "Latex2e",
- "latex2.0e": "Latex2e",
- "latex2e": "Latex2e",
- "leptonica": "Leptonica",
- "lgpl2": "LGPL-2.0-only",
- "lgpl2+": "LGPL-2.0-or-later",
- "lgpl2.0": "LGPL-2.0-only",
- "lgpl2.0+": "LGPL-2.0-or-later",
- "lgpl2.0.0": "LGPL-2.0-only",
- "lgpl2.0.0+": "LGPL-2.0-or-later",
- "lgpl2.0.0only": "LGPL-2.0-only",
- "lgpl2.0.0orlater": "LGPL-2.0-or-later",
- "lgpl2.0only": "LGPL-2.0-only",
- "lgpl2.0orlater": "LGPL-2.0-or-later",
- "lgpl2.1": "LGPL-2.1-only",
- "lgpl2.1+": "LGPL-2.1-or-later",
- "lgpl2.1.0": "LGPL-2.1-only",
- "lgpl2.1.0+": "LGPL-2.1-or-later",
- "lgpl2.1.0only": "LGPL-2.1-only",
- "lgpl2.1.0orlater": "LGPL-2.1-or-later",
- "lgpl2.1only": "LGPL-2.1-only",
- "lgpl2.1orlater": "LGPL-2.1-or-later",
- "lgpl2only": "LGPL-2.0-only",
- "lgpl2orlater": "LGPL-2.0-or-later",
- "lgpl3": "LGPL-3.0-only",
- "lgpl3+": "LGPL-3.0-or-later",
- "lgpl3.0": "LGPL-3.0-only",
- "lgpl3.0+": "LGPL-3.0-or-later",
- "lgpl3.0.0": "LGPL-3.0-only",
- "lgpl3.0.0+": "LGPL-3.0-or-later",
- "lgpl3.0.0only": "LGPL-3.0-only",
- "lgpl3.0.0orlater": "LGPL-3.0-or-later",
- "lgpl3.0only": "LGPL-3.0-only",
- "lgpl3.0orlater": "LGPL-3.0-or-later",
- "lgpl3only": "LGPL-3.0-only",
- "lgpl3orlater": "LGPL-3.0-or-later",
- "lgpllr": "LGPLLR",
- "libpng": "Libpng",
- "libpng2": "libpng-2.0",
- "libpng2.0": "libpng-2.0",
- "libpng2.0.0": "libpng-2.0",
- "libselinux1": "libselinux-1.0",
- "libselinux1.0": "libselinux-1.0",
- "libselinux1.0.0": "libselinux-1.0",
- "libtiff": "libtiff",
- "libutildavidnugent": "libutil-David-Nugent",
- "liliqp1": "LiLiQ-P-1.1",
- "liliqp1.1": "LiLiQ-P-1.1",
- "liliqp1.1.0": "LiLiQ-P-1.1",
- "liliqr1": "LiLiQ-R-1.1",
- "liliqr1.1": "LiLiQ-R-1.1",
- "liliqr1.1.0": "LiLiQ-R-1.1",
- "liliqrplus1": "LiLiQ-Rplus-1.1",
- "liliqrplus1.1": "LiLiQ-Rplus-1.1",
- "liliqrplus1.1.0": "LiLiQ-Rplus-1.1",
- "linuxmanpagescopyleft": "Linux-man-pages-copyleft",
- "linuxopenib": "Linux-OpenIB",
- "loop": "LOOP",
- "lpl1": "LPL-1.0",
- "lpl1.0": "LPL-1.0",
- "lpl1.0.0": "LPL-1.0",
- "lpl1.02": "LPL-1.02",
- "lpl1.02.0": "LPL-1.02",
- "lppl1": "LPPL-1.0",
- "lppl1.0": "LPPL-1.0",
- "lppl1.0.0": "LPPL-1.0",
- "lppl1.1": "LPPL-1.1",
- "lppl1.1.0": "LPPL-1.1",
- "lppl1.2": "LPPL-1.2",
- "lppl1.2.0": "LPPL-1.2",
- "lppl1.3.0a": "LPPL-1.3a",
- "lppl1.3.0c": "LPPL-1.3c",
- "lppl1.3a": "LPPL-1.3a",
- "lppl1.3c": "LPPL-1.3c",
- "lppl1a": "LPPL-1.3a",
- "lppl1c": "LPPL-1.3c",
- "lzmasdk9": "LZMA-SDK-9.22",
- "lzmasdk9.11.0to9.20": "LZMA-SDK-9.11-to-9.20",
- "lzmasdk9.11to9.20": "LZMA-SDK-9.11-to-9.20",
- "lzmasdk9.22": "LZMA-SDK-9.22",
- "lzmasdk9.22.0": "LZMA-SDK-9.22",
- "lzmasdk9to9.20": "LZMA-SDK-9.11-to-9.20",
- "makeindex": "MakeIndex",
- "martinbirgmeier": "Martin-Birgmeier",
- "minpack": "Minpack",
- "miros": "MirOS",
- "mit": "MIT",
- "mit0": "MIT-0",
- "mitadvertising": "MIT-advertising",
- "mitcmu": "MIT-CMU",
- "mitenna": "MIT-enna",
- "mitfeh": "MIT-feh",
- "mitmodernvariant": "MIT-Modern-Variant",
- "mitnfa": "MITNFA",
- "mitopengroup": "MIT-open-group",
- "mitwu": "MIT-Wu",
- "motosoto": "Motosoto",
- "mpich2": "mpich2",
- "mpich2.0": "mpich2",
- "mpich2.0.0": "mpich2",
- "mpipermissive": "mpi-permissive",
- "mpl1": "MPL-1.0",
- "mpl1.0": "MPL-1.0",
- "mpl1.0.0": "MPL-1.0",
- "mpl1.1": "MPL-1.1",
- "mpl1.1.0": "MPL-1.1",
- "mpl2": "MPL-2.0",
- "mpl2.0": "MPL-2.0",
- "mpl2.0.0": "MPL-2.0",
- "mpl2.0.0nocopyleftexception": "MPL-2.0-no-copyleft-exception",
- "mpl2.0nocopyleftexception": "MPL-2.0-no-copyleft-exception",
- "mpl2nocopyleftexception": "MPL-2.0-no-copyleft-exception",
- "mplus": "mplus",
- "mslpl": "MS-LPL",
- "mspl": "MS-PL",
- "msrl": "MS-RL",
- "mtll": "MTLL",
- "mulanpsl1": "MulanPSL-1.0",
- "mulanpsl1.0": "MulanPSL-1.0",
- "mulanpsl1.0.0": "MulanPSL-1.0",
- "mulanpsl2": "MulanPSL-2.0",
- "mulanpsl2.0": "MulanPSL-2.0",
- "mulanpsl2.0.0": "MulanPSL-2.0",
- "multics": "Multics",
- "mup": "Mup",
- "naist2003": "NAIST-2003",
- "naist2003.0": "NAIST-2003",
- "naist2003.0.0": "NAIST-2003",
- "nasa1": "NASA-1.3",
- "nasa1.3": "NASA-1.3",
- "nasa1.3.0": "NASA-1.3",
- "naumen": "Naumen",
- "nbpl1": "NBPL-1.0",
- "nbpl1.0": "NBPL-1.0",
- "nbpl1.0.0": "NBPL-1.0",
- "ncgluk2": "NCGL-UK-2.0",
- "ncgluk2.0": "NCGL-UK-2.0",
- "ncgluk2.0.0": "NCGL-UK-2.0",
- "ncsa": "NCSA",
- "netcdf": "NetCDF",
- "netsnmp": "Net-SNMP",
- "newsletr": "Newsletr",
- "ngpl": "NGPL",
- "nicta1": "NICTA-1.0",
- "nicta1.0": "NICTA-1.0",
- "nicta1.0.0": "NICTA-1.0",
- "nistpd": "NIST-PD",
- "nistpdfallback": "NIST-PD-fallback",
- "nlod1": "NLOD-1.0",
- "nlod1.0": "NLOD-1.0",
- "nlod1.0.0": "NLOD-1.0",
- "nlod2": "NLOD-2.0",
- "nlod2.0": "NLOD-2.0",
- "nlod2.0.0": "NLOD-2.0",
- "nlpl": "NLPL",
- "nokia": "Nokia",
- "nosl": "NOSL",
- "noweb": "Noweb",
- "npl1": "NPL-1.0",
- "npl1.0": "NPL-1.0",
- "npl1.0.0": "NPL-1.0",
- "npl1.1": "NPL-1.1",
- "npl1.1.0": "NPL-1.1",
- "nposl3": "NPOSL-3.0",
- "nposl3.0": "NPOSL-3.0",
- "nposl3.0.0": "NPOSL-3.0",
- "nrl": "NRL",
- "ntp": "NTP",
- "ntp0": "NTP-0",
- "nunit": "Nunit",
- "occtpl": "OCCT-PL",
- "oclc2": "OCLC-2.0",
- "oclc2.0": "OCLC-2.0",
- "oclc2.0.0": "OCLC-2.0",
- "odbl1": "ODbL-1.0",
- "odbl1.0": "ODbL-1.0",
- "odbl1.0.0": "ODbL-1.0",
- "odcby1": "ODC-By-1.0",
- "odcby1.0": "ODC-By-1.0",
- "odcby1.0.0": "ODC-By-1.0",
- "offis": "OFFIS",
- "ofl1": "OFL-1.0",
- "ofl1.0": "OFL-1.0",
- "ofl1.0.0": "OFL-1.0",
- "ofl1.0.0norfn": "OFL-1.0-no-RFN",
- "ofl1.0.0rfn": "OFL-1.0-RFN",
- "ofl1.0norfn": "OFL-1.0-no-RFN",
- "ofl1.0rfn": "OFL-1.0-RFN",
- "ofl1.1": "OFL-1.1",
- "ofl1.1.0": "OFL-1.1",
- "ofl1.1.0norfn": "OFL-1.1-no-RFN",
- "ofl1.1.0rfn": "OFL-1.1-RFN",
- "ofl1.1norfn": "OFL-1.1-no-RFN",
- "ofl1.1rfn": "OFL-1.1-RFN",
- "ofl1norfn": "OFL-1.0-no-RFN",
- "ofl1rfn": "OFL-1.0-RFN",
- "ogc1": "OGC-1.0",
- "ogc1.0": "OGC-1.0",
- "ogc1.0.0": "OGC-1.0",
- "ogdltaiwan1": "OGDL-Taiwan-1.0",
- "ogdltaiwan1.0": "OGDL-Taiwan-1.0",
- "ogdltaiwan1.0.0": "OGDL-Taiwan-1.0",
- "oglcanada2": "OGL-Canada-2.0",
- "oglcanada2.0": "OGL-Canada-2.0",
- "oglcanada2.0.0": "OGL-Canada-2.0",
- "ogluk1": "OGL-UK-1.0",
- "ogluk1.0": "OGL-UK-1.0",
- "ogluk1.0.0": "OGL-UK-1.0",
- "ogluk2": "OGL-UK-2.0",
- "ogluk2.0": "OGL-UK-2.0",
- "ogluk2.0.0": "OGL-UK-2.0",
- "ogluk3": "OGL-UK-3.0",
- "ogluk3.0": "OGL-UK-3.0",
- "ogluk3.0.0": "OGL-UK-3.0",
- "ogtsl": "OGTSL",
- "oldap1": "OLDAP-1.1",
- "oldap1.1": "OLDAP-1.1",
- "oldap1.1.0": "OLDAP-1.1",
- "oldap1.2": "OLDAP-1.2",
- "oldap1.2.0": "OLDAP-1.2",
- "oldap1.3": "OLDAP-1.3",
- "oldap1.3.0": "OLDAP-1.3",
- "oldap1.4": "OLDAP-1.4",
- "oldap1.4.0": "OLDAP-1.4",
- "oldap2": "OLDAP-2.0",
- "oldap2.0": "OLDAP-2.0",
- "oldap2.0.0": "OLDAP-2.0",
- "oldap2.0.1": "OLDAP-2.0.1",
- "oldap2.1": "OLDAP-2.1",
- "oldap2.1.0": "OLDAP-2.1",
- "oldap2.2": "OLDAP-2.2",
- "oldap2.2.0": "OLDAP-2.2",
- "oldap2.2.1": "OLDAP-2.2.1",
- "oldap2.2.2": "OLDAP-2.2.2",
- "oldap2.3": "OLDAP-2.3",
- "oldap2.3.0": "OLDAP-2.3",
- "oldap2.4": "OLDAP-2.4",
- "oldap2.4.0": "OLDAP-2.4",
- "oldap2.5": "OLDAP-2.5",
- "oldap2.5.0": "OLDAP-2.5",
- "oldap2.6": "OLDAP-2.6",
- "oldap2.6.0": "OLDAP-2.6",
- "oldap2.7": "OLDAP-2.7",
- "oldap2.7.0": "OLDAP-2.7",
- "oldap2.8": "OLDAP-2.8",
- "oldap2.8.0": "OLDAP-2.8",
- "oml": "OML",
- "openpbs2": "OpenPBS-2.3",
- "openpbs2.3": "OpenPBS-2.3",
- "openpbs2.3.0": "OpenPBS-2.3",
- "openssl": "OpenSSL",
- "opl1": "OPL-1.0",
- "opl1.0": "OPL-1.0",
- "opl1.0.0": "OPL-1.0",
- "opubl1": "OPUBL-1.0",
- "opubl1.0": "OPUBL-1.0",
- "opubl1.0.0": "OPUBL-1.0",
- "osetpl2": "OSET-PL-2.1",
- "osetpl2.1": "OSET-PL-2.1",
- "osetpl2.1.0": "OSET-PL-2.1",
- "osl1": "OSL-1.0",
- "osl1.0": "OSL-1.0",
- "osl1.0.0": "OSL-1.0",
- "osl1.1": "OSL-1.1",
- "osl1.1.0": "OSL-1.1",
- "osl2": "OSL-2.0",
- "osl2.0": "OSL-2.0",
- "osl2.0.0": "OSL-2.0",
- "osl2.1": "OSL-2.1",
- "osl2.1.0": "OSL-2.1",
- "osl3": "OSL-3.0",
- "osl3.0": "OSL-3.0",
- "osl3.0.0": "OSL-3.0",
- "ouda1": "O-UDA-1.0",
- "ouda1.0": "O-UDA-1.0",
- "ouda1.0.0": "O-UDA-1.0",
- "parity6": "Parity-6.0.0",
- "parity6.0": "Parity-6.0.0",
- "parity6.0.0": "Parity-6.0.0",
- "parity7": "Parity-7.0.0",
- "parity7.0": "Parity-7.0.0",
- "parity7.0.0": "Parity-7.0.0",
- "pddl1": "PDDL-1.0",
- "pddl1.0": "PDDL-1.0",
- "pddl1.0.0": "PDDL-1.0",
- "php3": "PHP-3.0",
- "php3.0": "PHP-3.0",
- "php3.0.0": "PHP-3.0",
- "php3.01": "PHP-3.01",
- "php3.01.0": "PHP-3.01",
- "plexus": "Plexus",
- "polyformnoncommercial1": "PolyForm-Noncommercial-1.0.0",
- "polyformnoncommercial1.0": "PolyForm-Noncommercial-1.0.0",
- "polyformnoncommercial1.0.0": "PolyForm-Noncommercial-1.0.0",
- "polyformsmallbusiness1": "PolyForm-Small-Business-1.0.0",
- "polyformsmallbusiness1.0": "PolyForm-Small-Business-1.0.0",
- "polyformsmallbusiness1.0.0": "PolyForm-Small-Business-1.0.0",
- "postgresql": "PostgreSQL",
- "psf2": "PSF-2.0",
- "psf2.0": "PSF-2.0",
- "psf2.0.0": "PSF-2.0",
- "psfrag": "psfrag",
- "psutils": "psutils",
- "python2": "Python-2.0",
- "python2.0": "Python-2.0",
- "python2.0.0": "Python-2.0",
- "python2.0.1": "Python-2.0.1",
- "qhull": "Qhull",
- "qpl1": "QPL-1.0",
- "qpl1.0": "QPL-1.0",
- "qpl1.0.0": "QPL-1.0",
- "qpl1.0.0inria2004": "QPL-1.0-INRIA-2004",
- "qpl1.0inria2004": "QPL-1.0-INRIA-2004",
- "qpl1inria2004": "QPL-1.0-INRIA-2004",
- "rdisc": "Rdisc",
- "rhecos1": "RHeCos-1.1",
- "rhecos1.1": "RHeCos-1.1",
- "rhecos1.1.0": "RHeCos-1.1",
- "rpl1": "RPL-1.1",
- "rpl1.1": "RPL-1.1",
- "rpl1.1.0": "RPL-1.1",
- "rpl1.5": "RPL-1.5",
- "rpl1.5.0": "RPL-1.5",
- "rpsl1": "RPSL-1.0",
- "rpsl1.0": "RPSL-1.0",
- "rpsl1.0.0": "RPSL-1.0",
- "rsamd": "RSA-MD",
- "rscpl": "RSCPL",
- "ruby": "Ruby",
- "saxpath": "Saxpath",
- "saxpd": "SAX-PD",
- "scea": "SCEA",
- "schemereport": "SchemeReport",
- "sendmail": "Sendmail",
- "sendmail8": "Sendmail-8.23",
- "sendmail8.23": "Sendmail-8.23",
- "sendmail8.23.0": "Sendmail-8.23",
- "sgib1": "SGI-B-1.0",
- "sgib1.0": "SGI-B-1.0",
- "sgib1.0.0": "SGI-B-1.0",
- "sgib1.1": "SGI-B-1.1",
- "sgib1.1.0": "SGI-B-1.1",
- "sgib2": "SGI-B-2.0",
- "sgib2.0": "SGI-B-2.0",
- "sgib2.0.0": "SGI-B-2.0",
- "shl0.5": "SHL-0.5",
- "shl0.5.0": "SHL-0.5",
- "shl0.51": "SHL-0.51",
- "shl0.51.0": "SHL-0.51",
- "simpl2": "SimPL-2.0",
- "simpl2.0": "SimPL-2.0",
- "simpl2.0.0": "SimPL-2.0",
- "sissl": "SISSL",
- "sissl1": "SISSL-1.2",
- "sissl1.2": "SISSL-1.2",
- "sissl1.2.0": "SISSL-1.2",
- "sleepycat": "Sleepycat",
- "smlnj": "SMLNJ",
- "smppl": "SMPPL",
- "snia": "SNIA",
- "snprintf": "snprintf",
- "spencer86": "Spencer-86",
- "spencer86.0": "Spencer-86",
- "spencer86.0.0": "Spencer-86",
- "spencer94": "Spencer-94",
- "spencer94.0": "Spencer-94",
- "spencer94.0.0": "Spencer-94",
- "spencer99": "Spencer-99",
- "spencer99.0": "Spencer-99",
- "spencer99.0.0": "Spencer-99",
- "spl1": "SPL-1.0",
- "spl1.0": "SPL-1.0",
- "spl1.0.0": "SPL-1.0",
- "sshopenssh": "SSH-OpenSSH",
- "sshshort": "SSH-short",
- "sspl1": "SSPL-1.0",
- "sspl1.0": "SSPL-1.0",
- "sspl1.0.0": "SSPL-1.0",
- "standardmlnj": "SMLNJ",
- "sugarcrm1": "SugarCRM-1.1.3",
- "sugarcrm1.1": "SugarCRM-1.1.3",
- "sugarcrm1.1.3": "SugarCRM-1.1.3",
- "sunpro": "SunPro",
- "swl": "SWL",
- "symlinks": "Symlinks",
- "taprohl1": "TAPR-OHL-1.0",
- "taprohl1.0": "TAPR-OHL-1.0",
- "taprohl1.0.0": "TAPR-OHL-1.0",
- "tcl": "TCL",
- "tcpwrappers": "TCP-wrappers",
- "tmate": "TMate",
- "torque1": "TORQUE-1.1",
- "torque1.1": "TORQUE-1.1",
- "torque1.1.0": "TORQUE-1.1",
- "tosl": "TOSL",
- "tpdl": "TPDL",
- "tpl1": "TPL-1.0",
- "tpl1.0": "TPL-1.0",
- "tpl1.0.0": "TPL-1.0",
- "ttwl": "TTWL",
- "tuberlin1": "TU-Berlin-1.0",
- "tuberlin1.0": "TU-Berlin-1.0",
- "tuberlin1.0.0": "TU-Berlin-1.0",
- "tuberlin2": "TU-Berlin-2.0",
- "tuberlin2.0": "TU-Berlin-2.0",
- "tuberlin2.0.0": "TU-Berlin-2.0",
- "ucar": "UCAR",
- "ucl1": "UCL-1.0",
- "ucl1.0": "UCL-1.0",
- "ucl1.0.0": "UCL-1.0",
- "unicodedfs2015": "Unicode-DFS-2015",
- "unicodedfs2015.0": "Unicode-DFS-2015",
- "unicodedfs2015.0.0": "Unicode-DFS-2015",
- "unicodedfs2016": "Unicode-DFS-2016",
- "unicodedfs2016.0": "Unicode-DFS-2016",
- "unicodedfs2016.0.0": "Unicode-DFS-2016",
- "unicodetou": "Unicode-TOU",
- "unlicense": "Unlicense",
- "upl1": "UPL-1.0",
- "upl1.0": "UPL-1.0",
- "upl1.0.0": "UPL-1.0",
- "vim": "Vim",
- "vostrom": "VOSTROM",
- "vsl1": "VSL-1.0",
- "vsl1.0": "VSL-1.0",
- "vsl1.0.0": "VSL-1.0",
- "w3.0.0c": "W3C",
- "w3.0.0c19980720": "W3C-19980720",
- "w3.0.0c20150513": "W3C-20150513",
- "w3.0.0m": "w3m",
- "w3.0c": "W3C",
- "w3.0c19980720": "W3C-19980720",
- "w3.0c20150513": "W3C-20150513",
- "w3.0m": "w3m",
- "w3c": "W3C",
- "w3c19980720": "W3C-19980720",
- "w3c20150513": "W3C-20150513",
- "w3m": "w3m",
- "watcom1": "Watcom-1.0",
- "watcom1.0": "Watcom-1.0",
- "watcom1.0.0": "Watcom-1.0",
- "wsuipa": "Wsuipa",
- "wtfpl": "WTFPL",
- "wxwindows": "wxWindows",
- "x11": "X11",
- "x11.0": "X11",
- "x11.0.0": "X11",
- "x11.0.0distributemodificationsvariant": "X11-distribute-modifications-variant",
- "x11.0distributemodificationsvariant": "X11-distribute-modifications-variant",
- "x11distributemodificationsvariant": "X11-distribute-modifications-variant",
- "xerox": "Xerox",
- "xfree861": "XFree86-1.1",
- "xfree861.1": "XFree86-1.1",
- "xfree861.1.0": "XFree86-1.1",
- "xinetd": "xinetd",
- "xlock": "xlock",
- "xnet": "Xnet",
- "xpp": "xpp",
- "xskat": "XSkat",
- "ypl1": "YPL-1.0",
- "ypl1.0": "YPL-1.0",
- "ypl1.0.0": "YPL-1.0",
- "ypl1.1": "YPL-1.1",
- "ypl1.1.0": "YPL-1.1",
- "zed": "Zed",
- "zend2": "Zend-2.0",
- "zend2.0": "Zend-2.0",
- "zend2.0.0": "Zend-2.0",
- "zimbra1": "Zimbra-1.3",
- "zimbra1.3": "Zimbra-1.3",
- "zimbra1.3.0": "Zimbra-1.3",
- "zimbra1.4": "Zimbra-1.4",
- "zimbra1.4.0": "Zimbra-1.4",
- "zlib": "Zlib",
- "zlibacknowledgement": "zlib-acknowledgement",
- "zpl1": "ZPL-1.1",
- "zpl1.1": "ZPL-1.1",
- "zpl1.1.0": "ZPL-1.1",
- "zpl2": "ZPL-2.0",
- "zpl2.0": "ZPL-2.0",
- "zpl2.0.0": "ZPL-2.0",
- "zpl2.1": "ZPL-2.1",
- "zpl2.1.0": "ZPL-2.1",
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.fixture, func(t *testing.T) {
- f, err := os.Open(tt.fixture)
- require.NoError(t, err)
-
- var list LicenseList
- require.NoError(t, json.NewDecoder(f).Decode(&list))
-
- d := cmp.Diff(tt.want, processSPDXLicense(list))
- if d != "" {
- t.Log("differing license list:\n" + d)
- t.Fail()
- }
- })
- }
-}
diff --git a/internal/spdxlicense/generate/license_test.go b/internal/spdxlicense/generate/license_test.go
deleted file mode 100644
index 410478170..000000000
--- a/internal/spdxlicense/generate/license_test.go
+++ /dev/null
@@ -1,223 +0,0 @@
-package main
-
-import (
- "strings"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-var (
- license1 = License{
- ID: "ABC-1.0+",
- Name: "The ABC License 1.0",
- Deprecated: true,
- }
-
- license2 = License{
- ID: "ABC-1.0-or-later",
- Name: "The ABC License 1.0",
- }
-
- license3 = License{
- ID: "ABC-1.0",
- Name: "The ABC License 1.0 Only",
- Deprecated: true,
- }
-
- license4 = License{
- ID: "ABC-1.0-only",
- Name: "The ABC License 1.0 Only",
- }
- license5 = License{
- ID: "Duh-1.0",
- Name: "The Duh License 1.0",
- Deprecated: true,
- }
- license6 = License{
- ID: "Duh-1.0-duh",
- Name: "The Duh License 1.0",
- Deprecated: true,
- }
-)
-
-func TestLicense_canReplace(t *testing.T) {
- tests := []struct {
- l1, l2 License
- expected bool
- }{
- {license1, license2, false},
- {license2, license1, true},
- {license2, license3, false},
- {license3, license2, false},
- }
-
- for _, tt := range tests {
- t.Run(tt.l1.ID+" - "+tt.l2.ID, func(t *testing.T) {
- assert.Equal(t, tt.expected, tt.l1.canReplace(tt.l2))
- })
- }
-}
-
-func TestLicensePermutations(t *testing.T) {
- var tests = []struct {
- shortName string
- permutations []string
- }{
- {
- "GPL-1-only",
- []string{
- "gpl1only",
- "gpl1.0only",
- "gpl1.0.0only",
- },
- },
- {
- "GPL-2",
- []string{
- "gpl2",
- "gpl2.0",
- "gpl2.0.0",
- },
- },
- {
- "GPL-2.0+",
- []string{
- "gpl2+",
- "gpl2.0+",
- "gpl2.0.0+",
- },
- },
- {
- "GPL-3.0.0-or-later",
- []string{
- "gpl3orlater",
- "gpl3.0orlater",
- "gpl3.0.0orlater",
- "gpl3.0.0+",
- "gpl3.0+",
- "gpl3+",
- },
- },
- {
- "abc-1.1",
- []string{
- "abc1",
- "abc1.1",
- "abc1.1.0",
- },
- },
- {
- "oldap-2.0",
- []string{
- "oldap2",
- "oldap2.0",
- "oldap2.0.0",
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.shortName, func(t *testing.T) {
- cleanID := cleanLicenseID(test.shortName)
- perms := buildLicenseIDPermutations(cleanID)
- assert.ElementsMatch(t, test.permutations, perms)
- })
- }
-}
-
-func TestVersionPermutations(t *testing.T) {
- var tests = []struct {
- version []string
- permutations []string
- }{
- {
- []string{"1", "0"},
- []string{"1", "1.0", "1.0.0"},
- },
- {
- []string{"2"},
- []string{"2", "2.0", "2.0.0"},
- },
- {
- []string{"2", "0"},
- []string{"2", "2.0", "2.0.0"},
- },
-
- {
- []string{"3", "0", "0"},
- []string{"3", "3.0", "3.0.0"},
- },
- {
- []string{"0", "3"},
- []string{"0.3", "0.3.0"},
- },
- {
- []string{"0", "0", "3"},
- []string{"0.0.3"},
- },
- }
-
- for _, test := range tests {
- t.Run(strings.Join(test.version, "."), func(t *testing.T) {
- got := versionPermutations(test.version)
- assert.ElementsMatch(t, test.permutations, got)
- })
- }
-}
-
-func TestFindLicenseVersion(t *testing.T) {
- var tests = []struct {
- license string
- version []string
- }{
- {
- "GPL-1.0-only",
- []string{"1", "0"},
- },
- {
- "GPL-2.0",
- []string{"2", "0"},
- },
- {
- "GPL-2.0.0",
- []string{"2", "0", "0"},
- },
- {
- "GPL-2",
- []string{"2"},
- },
- {
- "php-3.01",
- []string{"3", "01"},
- },
- {
- "oldap-2.0",
- []string{"2", "0"},
- },
- }
-
- for _, test := range tests {
- t.Run(test.license, func(t *testing.T) {
- got := findLicenseVersion(test.license)
- assert.Equal(t, test.version, got)
- })
- }
-}
-
-func Test_findReplacementLicense(t *testing.T) {
- tests := []struct {
- l License
- expected *License
- licenses LicenseList
- }{
- {license1, nil, LicenseList{}},
- {license1, nil, LicenseList{Licenses: []License{license3}}},
- {license1, &license2, LicenseList{Licenses: []License{license2, license3}}},
- {license1, &license2, LicenseList{Licenses: []License{license2, license3, license4, license5}}},
- }
-
- for _, tt := range tests {
- assert.Equal(t, tt.expected, tt.licenses.findReplacementLicense(tt.l))
- }
-}
diff --git a/internal/spdxlicense/generate/test-fixtures/licenses.json b/internal/spdxlicense/generate/test-fixtures/licenses.json
deleted file mode 100644
index b398c963c..000000000
--- a/internal/spdxlicense/generate/test-fixtures/licenses.json
+++ /dev/null
@@ -1,6744 +0,0 @@
-{
- "licenseListVersion": "3.20",
- "licenses": [
- {
- "reference": "https://spdx.org/licenses/SCEA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SCEA.json",
- "referenceNumber": 0,
- "name": "SCEA Shared Source License",
- "licenseId": "SCEA",
- "seeAlso": [
- "http://research.scea.com/scea_shared_source_license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/RSA-MD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RSA-MD.json",
- "referenceNumber": 1,
- "name": "RSA Message-Digest License",
- "licenseId": "RSA-MD",
- "seeAlso": [
- "http://www.faqs.org/rfcs/rfc1321.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Leptonica.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Leptonica.json",
- "referenceNumber": 2,
- "name": "Leptonica License",
- "licenseId": "Leptonica",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Leptonica"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Ruby.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Ruby.json",
- "referenceNumber": 3,
- "name": "Ruby License",
- "licenseId": "Ruby",
- "seeAlso": [
- "http://www.ruby-lang.org/en/LICENSE.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Zlib.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Zlib.json",
- "referenceNumber": 4,
- "name": "zlib License",
- "licenseId": "Zlib",
- "seeAlso": [
- "http://www.zlib.net/zlib_license.html",
- "https://opensource.org/licenses/Zlib"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json",
- "referenceNumber": 5,
- "name": "GNU Free Documentation License v1.2",
- "licenseId": "GFDL-1.2",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json",
- "referenceNumber": 6,
- "name": "Unicode License Agreement - Data Files and Software (2016)",
- "licenseId": "Unicode-DFS-2016",
- "seeAlso": [
- "http://www.unicode.org/copyright.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json",
- "referenceNumber": 7,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
- "licenseId": "CC-BY-NC-ND-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FSFULLRWD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json",
- "referenceNumber": 8,
- "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)",
- "licenseId": "FSFULLRWD",
- "seeAlso": [
- "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json",
- "referenceNumber": 9,
- "name": "Q Public License 1.0 - INRIA 2004 variant",
- "licenseId": "QPL-1.0-INRIA-2004",
- "seeAlso": [
- "https://github.com/maranget/hevea/blob/master/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json",
- "referenceNumber": 10,
- "name": "BSD 3-Clause No Nuclear Warranty",
- "licenseId": "BSD-3-Clause-No-Nuclear-Warranty",
- "seeAlso": [
- "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OSL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json",
- "referenceNumber": 11,
- "name": "Open Software License 2.0",
- "licenseId": "OSL-2.0",
- "seeAlso": [
- "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/mpi-permissive.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json",
- "referenceNumber": 12,
- "name": "mpi Permissive License",
- "licenseId": "mpi-permissive",
- "seeAlso": [
- "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json",
- "referenceNumber": 13,
- "name": "CUA Office Public License v1.0",
- "licenseId": "CUA-OPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/CUA-OPL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json",
- "referenceNumber": 14,
- "name": "Creative Commons Attribution 3.0 Austria",
- "licenseId": "CC-BY-3.0-AT",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/at/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json",
- "referenceNumber": 15,
- "name": "GNU Free Documentation License v1.3",
- "licenseId": "GFDL-1.3",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json",
- "referenceNumber": 16,
- "name": "GNU Free Documentation License v1.3 only",
- "licenseId": "GFDL-1.3-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json",
- "referenceNumber": 17,
- "name": "Open LDAP Public License v2.2",
- "licenseId": "OLDAP-2.2",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NCSA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NCSA.json",
- "referenceNumber": 18,
- "name": "University of Illinois/NCSA Open Source License",
- "licenseId": "NCSA",
- "seeAlso": [
- "http://otm.illinois.edu/uiuc_openSource",
- "https://opensource.org/licenses/NCSA"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/LPPL-1.3c.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json",
- "referenceNumber": 19,
- "name": "LaTeX Project Public License v1.3c",
- "licenseId": "LPPL-1.3c",
- "seeAlso": [
- "http://www.latex-project.org/lppl/lppl-1-3c.txt",
- "https://opensource.org/licenses/LPPL-1.3c"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/OpenPBS-2.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json",
- "referenceNumber": 20,
- "name": "OpenPBS v2.3 Software License",
- "licenseId": "OpenPBS-2.3",
- "seeAlso": [
- "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt",
- "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json",
- "referenceNumber": 21,
- "name": "Licence Libre du QuĆ©bec ā RĆ©ciprocitĆ© version 1.1",
- "licenseId": "LiLiQ-R-1.1",
- "seeAlso": [
- "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/",
- "http://opensource.org/licenses/LiLiQ-R-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/W3C-20150513.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json",
- "referenceNumber": 22,
- "name": "W3C Software Notice and Document License (2015-05-13)",
- "licenseId": "W3C-20150513",
- "seeAlso": [
- "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json",
- "referenceNumber": 23,
- "name": "Taiwan Open Government Data License, version 1.0",
- "licenseId": "OGDL-Taiwan-1.0",
- "seeAlso": [
- "https://data.gov.tw/license"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/O-UDA-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json",
- "referenceNumber": 24,
- "name": "Open Use of Data Agreement v1.0",
- "licenseId": "O-UDA-1.0",
- "seeAlso": [
- "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md",
- "https://cdla.dev/open-use-of-data-agreement-v1-0/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json",
- "referenceNumber": 25,
- "name": "Community Data License Agreement Permissive 2.0",
- "licenseId": "CDLA-Permissive-2.0",
- "seeAlso": [
- "https://cdla.dev/permissive-2-0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Graphics-Gems.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json",
- "referenceNumber": 26,
- "name": "Graphics Gems License",
- "licenseId": "Graphics-Gems",
- "seeAlso": [
- "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/PHP-3.01.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json",
- "referenceNumber": 27,
- "name": "PHP License v3.01",
- "licenseId": "PHP-3.01",
- "seeAlso": [
- "http://www.php.net/license/3_01.txt"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json",
- "referenceNumber": 28,
- "name": "Creative Commons Attribution 3.0 Germany",
- "licenseId": "CC-BY-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Cube.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Cube.json",
- "referenceNumber": 29,
- "name": "Cube License",
- "licenseId": "Cube",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Cube"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MTLL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MTLL.json",
- "referenceNumber": 30,
- "name": "Matrix Template Library License",
- "licenseId": "MTLL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-0.json",
- "referenceNumber": 31,
- "name": "MIT No Attribution",
- "licenseId": "MIT-0",
- "seeAlso": [
- "https://github.com/aws/mit-0",
- "https://romanrm.net/mit-zero",
- "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/WTFPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/WTFPL.json",
- "referenceNumber": 32,
- "name": "Do What The F*ck You Want To Public License",
- "licenseId": "WTFPL",
- "seeAlso": [
- "http://www.wtfpl.net/about/",
- "http://sam.zoy.org/wtfpl/COPYING"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/EUDatagrid.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json",
- "referenceNumber": 33,
- "name": "EU DataGrid Software License",
- "licenseId": "EUDatagrid",
- "seeAlso": [
- "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html",
- "https://opensource.org/licenses/EUDatagrid"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/RSCPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RSCPL.json",
- "referenceNumber": 34,
- "name": "Ricoh Source Code Public License",
- "licenseId": "RSCPL",
- "seeAlso": [
- "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml",
- "https://opensource.org/licenses/RSCPL"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Vim.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Vim.json",
- "referenceNumber": 35,
- "name": "Vim License",
- "licenseId": "Vim",
- "seeAlso": [
- "http://vimdoc.sourceforge.net/htmldoc/uganda.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/gnuplot.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/gnuplot.json",
- "referenceNumber": 36,
- "name": "gnuplot License",
- "licenseId": "gnuplot",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Gnuplot"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/diffmark.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/diffmark.json",
- "referenceNumber": 37,
- "name": "diffmark license",
- "licenseId": "diffmark",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/diffmark"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json",
- "referenceNumber": 38,
- "name": "SIL Open Font License 1.1 with no Reserved Font Name",
- "licenseId": "OFL-1.1-no-RFN",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
- "https://opensource.org/licenses/OFL-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CDDL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json",
- "referenceNumber": 39,
- "name": "Common Development and Distribution License 1.1",
- "licenseId": "CDDL-1.1",
- "seeAlso": [
- "http://glassfish.java.net/public/CDDL+GPL_1_1.html",
- "https://javaee.github.io/glassfish/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json",
- "referenceNumber": 40,
- "name": "SugarCRM Public License v1.1.3",
- "licenseId": "SugarCRM-1.1.3",
- "seeAlso": [
- "http://www.sugarcrm.com/crm/SPL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json",
- "referenceNumber": 41,
- "name": "BSD 4.3 TAHOE License",
- "licenseId": "BSD-4.3TAHOE",
- "seeAlso": [
- "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json",
- "referenceNumber": 42,
- "name": "GNU General Public License v2.0 w/Bison exception",
- "licenseId": "GPL-2.0-with-bison-exception",
- "seeAlso": [
- "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFFIS.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFFIS.json",
- "referenceNumber": 43,
- "name": "OFFIS License",
- "licenseId": "OFFIS",
- "seeAlso": [
- "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json",
- "referenceNumber": 44,
- "name": "SIL Open Font License 1.1 with Reserved Font Name",
- "licenseId": "OFL-1.1-RFN",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
- "https://opensource.org/licenses/OFL-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Nokia.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Nokia.json",
- "referenceNumber": 45,
- "name": "Nokia Open Source License",
- "licenseId": "Nokia",
- "seeAlso": [
- "https://opensource.org/licenses/nokia"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/DSDP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/DSDP.json",
- "referenceNumber": 46,
- "name": "DSDP License",
- "licenseId": "DSDP",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/DSDP"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AFL-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json",
- "referenceNumber": 47,
- "name": "Academic Free License v3.0",
- "licenseId": "AFL-3.0",
- "seeAlso": [
- "http://www.rosenlaw.com/AFL3.0.htm",
- "https://opensource.org/licenses/afl-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json",
- "referenceNumber": 48,
- "name": "Creative Commons Attribution Non Commercial 1.0 Generic",
- "licenseId": "CC-BY-NC-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/1.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-C.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-C.json",
- "referenceNumber": 49,
- "name": "CeCILL-C Free Software License Agreement",
- "licenseId": "CECILL-C",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OpenSSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OpenSSL.json",
- "referenceNumber": 50,
- "name": "OpenSSL License",
- "licenseId": "OpenSSL",
- "seeAlso": [
- "http://www.openssl.org/source/license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.7.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json",
- "referenceNumber": 51,
- "name": "Open LDAP Public License v2.7",
- "licenseId": "OLDAP-2.7",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/NGPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NGPL.json",
- "referenceNumber": 52,
- "name": "Nethack General Public License",
- "licenseId": "NGPL",
- "seeAlso": [
- "https://opensource.org/licenses/NGPL"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json",
- "referenceNumber": 53,
- "name": "Linux man-pages Copyleft",
- "licenseId": "Linux-man-pages-copyleft",
- "seeAlso": [
- "https://www.kernel.org/doc/man-pages/licenses.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-3.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json",
- "referenceNumber": 54,
- "name": "GNU Affero General Public License v3.0",
- "licenseId": "AGPL-3.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/agpl.txt",
- "https://opensource.org/licenses/AGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json",
- "referenceNumber": 55,
- "name": "Open LDAP Public License v2.5",
- "licenseId": "OLDAP-2.5",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CAL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json",
- "referenceNumber": 56,
- "name": "Cryptographic Autonomy License 1.0",
- "licenseId": "CAL-1.0",
- "seeAlso": [
- "http://cryptographicautonomylicense.com/license-text.html",
- "https://opensource.org/licenses/CAL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json",
- "referenceNumber": 57,
- "name": "Creative Commons Attribution Share Alike 2.0 England and Wales",
- "licenseId": "CC-BY-SA-2.0-UK",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TCP-wrappers.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json",
- "referenceNumber": 58,
- "name": "TCP Wrappers License",
- "licenseId": "TCP-wrappers",
- "seeAlso": [
- "http://rc.quest.com/topics/openssh/license.php#tcpwrappers"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Dotseqn.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Dotseqn.json",
- "referenceNumber": 59,
- "name": "Dotseqn License",
- "licenseId": "Dotseqn",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Dotseqn"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OSL-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json",
- "referenceNumber": 60,
- "name": "Open Software License 3.0",
- "licenseId": "OSL-3.0",
- "seeAlso": [
- "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm",
- "https://opensource.org/licenses/OSL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Linux-OpenIB.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json",
- "referenceNumber": 61,
- "name": "Linux Kernel Variant of OpenIB.org license",
- "licenseId": "Linux-OpenIB",
- "seeAlso": [
- "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SMPPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SMPPL.json",
- "referenceNumber": 62,
- "name": "Secure Messaging Protocol Public License",
- "licenseId": "SMPPL",
- "seeAlso": [
- "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-1.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json",
- "referenceNumber": 63,
- "name": "Affero General Public License v1.0",
- "licenseId": "AGPL-1.0",
- "seeAlso": [
- "http://www.affero.org/oagpl.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json",
- "referenceNumber": 64,
- "name": "GNU Free Documentation License v1.3 or later - no invariants",
- "licenseId": "GFDL-1.3-no-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Net-SNMP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json",
- "referenceNumber": 65,
- "name": "Net-SNMP License",
- "licenseId": "Net-SNMP",
- "seeAlso": [
- "http://net-snmp.sourceforge.net/about/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LAL-1.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json",
- "referenceNumber": 66,
- "name": "Licence Art Libre 1.3",
- "licenseId": "LAL-1.3",
- "seeAlso": [
- "https://artlibre.org/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json",
- "referenceNumber": 67,
- "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant",
- "licenseId": "HPND-Markus-Kuhn",
- "seeAlso": [
- "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c",
- "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dreadline/readline/support/wcwidth.c;h\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\u003dHEAD#l55"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FSFULLR.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FSFULLR.json",
- "referenceNumber": 68,
- "name": "FSF Unlimited License (with License Retention)",
- "licenseId": "FSFULLR",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/QPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json",
- "referenceNumber": 69,
- "name": "Q Public License 1.0",
- "licenseId": "QPL-1.0",
- "seeAlso": [
- "http://doc.qt.nokia.com/3.3/license.html",
- "https://opensource.org/licenses/QPL-1.0",
- "https://doc.qt.io/archives/3.3/license.html"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/AFL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json",
- "referenceNumber": 70,
- "name": "Academic Free License v1.2",
- "licenseId": "AFL-1.2",
- "seeAlso": [
- "http://opensource.linux-mirror.org/licenses/afl-1.2.txt",
- "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/AFL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json",
- "referenceNumber": 71,
- "name": "Academic Free License v1.1",
- "licenseId": "AFL-1.1",
- "seeAlso": [
- "http://opensource.linux-mirror.org/licenses/afl-1.1.txt",
- "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Apache-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json",
- "referenceNumber": 72,
- "name": "Apache License 2.0",
- "licenseId": "Apache-2.0",
- "seeAlso": [
- "https://www.apache.org/licenses/LICENSE-2.0",
- "https://opensource.org/licenses/Apache-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/UPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json",
- "referenceNumber": 73,
- "name": "Universal Permissive License v1.0",
- "licenseId": "UPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/UPL"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GLWTPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GLWTPL.json",
- "referenceNumber": 74,
- "name": "Good Luck With That Public License",
- "licenseId": "GLWTPL",
- "seeAlso": [
- "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/RPL-1.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json",
- "referenceNumber": 75,
- "name": "Reciprocal Public License 1.5",
- "licenseId": "RPL-1.5",
- "seeAlso": [
- "https://opensource.org/licenses/RPL-1.5"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/bzip2-1.0.5.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json",
- "referenceNumber": 76,
- "name": "bzip2 and libbzip2 License v1.0.5",
- "licenseId": "bzip2-1.0.5",
- "seeAlso": [
- "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html",
- "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json",
- "referenceNumber": 77,
- "name": "SIL Open Font License 1.0",
- "licenseId": "OFL-1.0",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/LPL-1.02.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json",
- "referenceNumber": 78,
- "name": "Lucent Public License v1.02",
- "licenseId": "LPL-1.02",
- "seeAlso": [
- "http://plan9.bell-labs.com/plan9/license.html",
- "https://opensource.org/licenses/LPL-1.02"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json",
- "referenceNumber": 79,
- "name": "SIL Open Font License 1.1",
- "licenseId": "OFL-1.1",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
- "https://opensource.org/licenses/OFL-1.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Mup.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Mup.json",
- "referenceNumber": 80,
- "name": "Mup License",
- "licenseId": "Mup",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Mup"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Borceux.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Borceux.json",
- "referenceNumber": 81,
- "name": "Borceux license",
- "licenseId": "Borceux",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Borceux"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json",
- "referenceNumber": 82,
- "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France",
- "licenseId": "CC-BY-NC-SA-2.0-FR",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json",
- "referenceNumber": 83,
- "name": "BSD with Attribution and HPND disclaimer",
- "licenseId": "BSD-Attribution-HPND-disclaimer",
- "seeAlso": [
- "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OGL-UK-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json",
- "referenceNumber": 84,
- "name": "Open Government Licence v1.0",
- "licenseId": "OGL-UK-1.0",
- "seeAlso": [
- "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Parity-6.0.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json",
- "referenceNumber": 85,
- "name": "The Parity Public License 6.0.0",
- "licenseId": "Parity-6.0.0",
- "seeAlso": [
- "https://paritylicense.com/versions/6.0.0.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json",
- "referenceNumber": 86,
- "name": "Sun Public License v1.0",
- "licenseId": "SPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/SPL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json",
- "referenceNumber": 87,
- "name": "CeCILL Free Software License Agreement v2.0",
- "licenseId": "CECILL-2.0",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/TPDL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TPDL.json",
- "referenceNumber": 88,
- "name": "Time::ParseDate License",
- "licenseId": "TPDL",
- "seeAlso": [
- "https://metacpan.org/pod/Time::ParseDate#LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LOOP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LOOP.json",
- "referenceNumber": 89,
- "name": "Common Lisp LOOP License",
- "licenseId": "LOOP",
- "seeAlso": [
- "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp",
- "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\u003dVersion_2_6_13pre",
- "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp",
- "https://github.com/cl-adams/adams/blob/master/LICENSE.md",
- "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp",
- "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-Source-Code.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json",
- "referenceNumber": 90,
- "name": "BSD Source Code Attribution",
- "licenseId": "BSD-Source-Code",
- "seeAlso": [
- "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json",
- "referenceNumber": 91,
- "name": "GNU Free Documentation License v1.1",
- "licenseId": "GFDL-1.1",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MulanPSL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json",
- "referenceNumber": 92,
- "name": "Mulan Permissive Software License, Version 2",
- "licenseId": "MulanPSL-2.0",
- "seeAlso": [
- "https://license.coscl.org.cn/MulanPSL2/"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.8.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json",
- "referenceNumber": 93,
- "name": "Open LDAP Public License v2.8",
- "licenseId": "OLDAP-2.8",
- "seeAlso": [
- "http://www.openldap.org/software/release/license.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json",
- "referenceNumber": 94,
- "name": "BSD 3-Clause No Nuclear License 2014",
- "licenseId": "BSD-3-Clause-No-Nuclear-License-2014",
- "seeAlso": [
- "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FDK-AAC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json",
- "referenceNumber": 95,
- "name": "Fraunhofer FDK AAC Codec Library",
- "licenseId": "FDK-AAC",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/FDK-AAC",
- "https://directory.fsf.org/wiki/License:Fdk"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json",
- "referenceNumber": 96,
- "name": "GNU General Public License v1.0 or later",
- "licenseId": "GPL-1.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Sendmail.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Sendmail.json",
- "referenceNumber": 97,
- "name": "Sendmail License",
- "licenseId": "Sendmail",
- "seeAlso": [
- "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf",
- "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json",
- "referenceNumber": 98,
- "name": "Creative Commons Attribution No Derivatives 3.0 Germany",
- "licenseId": "CC-BY-ND-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Afmparse.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Afmparse.json",
- "referenceNumber": 99,
- "name": "Afmparse License",
- "licenseId": "Afmparse",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Afmparse"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-feh.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-feh.json",
- "referenceNumber": 100,
- "name": "feh License",
- "licenseId": "MIT-feh",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MIT#feh"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json",
- "referenceNumber": 101,
- "name": "Creative Commons Attribution No Derivatives 2.0 Generic",
- "licenseId": "CC-BY-ND-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/2.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/SHL-0.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json",
- "referenceNumber": 102,
- "name": "Solderpad Hardware License v0.5",
- "licenseId": "SHL-0.5",
- "seeAlso": [
- "https://solderpad.org/licenses/SHL-0.5/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-CMU.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json",
- "referenceNumber": 103,
- "name": "CMU License",
- "licenseId": "MIT-CMU",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style",
- "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Adobe-2006.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json",
- "referenceNumber": 104,
- "name": "Adobe Systems Incorporated Source Code License Agreement",
- "licenseId": "Adobe-2006",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/AdobeLicense"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/EPL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json",
- "referenceNumber": 105,
- "name": "Eclipse Public License 2.0",
- "licenseId": "EPL-2.0",
- "seeAlso": [
- "https://www.eclipse.org/legal/epl-2.0",
- "https://www.opensource.org/licenses/EPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/ODbL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json",
- "referenceNumber": 106,
- "name": "Open Data Commons Open Database License v1.0",
- "licenseId": "ODbL-1.0",
- "seeAlso": [
- "http://www.opendatacommons.org/licenses/odbl/1.0/",
- "https://opendatacommons.org/licenses/odbl/1-0/"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json",
- "referenceNumber": 107,
- "name": "CERN Open Hardware Licence v1.1",
- "licenseId": "CERN-OHL-1.1",
- "seeAlso": [
- "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/App-s2p.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/App-s2p.json",
- "referenceNumber": 108,
- "name": "App::s2p License",
- "licenseId": "App-s2p",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/App-s2p"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SWL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SWL.json",
- "referenceNumber": 109,
- "name": "Scheme Widget Library (SWL) Software License Agreement",
- "licenseId": "SWL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/SWL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json",
- "referenceNumber": 110,
- "name": "GNU General Public License v3.0 or later",
- "licenseId": "GPL-3.0+",
- "seeAlso": [
- "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
- "https://opensource.org/licenses/GPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/NASA-1.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json",
- "referenceNumber": 111,
- "name": "NASA Open Source Agreement 1.3",
- "licenseId": "NASA-1.3",
- "seeAlso": [
- "http://ti.arc.nasa.gov/opensource/nosa/",
- "https://opensource.org/licenses/NASA-1.3"
- ],
- "isOsiApproved": true,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json",
- "referenceNumber": 112,
- "name": "Open LDAP Public License v2.2.1",
- "licenseId": "OLDAP-2.2.1",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Libpng.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Libpng.json",
- "referenceNumber": 113,
- "name": "libpng License",
- "licenseId": "Libpng",
- "seeAlso": [
- "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json",
- "referenceNumber": 114,
- "name": "BSD 2-Clause NetBSD License",
- "licenseId": "BSD-2-Clause-NetBSD",
- "seeAlso": [
- "http://www.netbsd.org/about/redistribution.html#default"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/checkmk.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/checkmk.json",
- "referenceNumber": 115,
- "name": "Checkmk License",
- "licenseId": "checkmk",
- "seeAlso": [
- "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ZPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json",
- "referenceNumber": 116,
- "name": "Zope Public License 1.1",
- "licenseId": "ZPL-1.1",
- "seeAlso": [
- "http://old.zope.org/Resources/License/ZPL-1.1"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Saxpath.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Saxpath.json",
- "referenceNumber": 117,
- "name": "Saxpath License",
- "licenseId": "Saxpath",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Saxpath_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/xinetd.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/xinetd.json",
- "referenceNumber": 118,
- "name": "xinetd License",
- "licenseId": "xinetd",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Xinetd_License"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/HP-1986.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HP-1986.json",
- "referenceNumber": 119,
- "name": "Hewlett-Packard 1986 License",
- "licenseId": "HP-1986",
- "seeAlso": [
- "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/hppa/memchr.S;h\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\u003dHEAD#l2"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SSH-OpenSSH.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json",
- "referenceNumber": 120,
- "name": "SSH OpenSSH license",
- "licenseId": "SSH-OpenSSH",
- "seeAlso": [
- "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json",
- "referenceNumber": 121,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany",
- "licenseId": "CC-BY-NC-ND-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/APAFML.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APAFML.json",
- "referenceNumber": 122,
- "name": "Adobe Postscript AFM License",
- "licenseId": "APAFML",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/PHP-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json",
- "referenceNumber": 123,
- "name": "PHP License v3.0",
- "licenseId": "PHP-3.0",
- "seeAlso": [
- "http://www.php.net/license/3_0.txt",
- "https://opensource.org/licenses/PHP-3.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json",
- "referenceNumber": 124,
- "name": "GNU Free Documentation License v1.2 only",
- "licenseId": "GFDL-1.2-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/UCAR.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/UCAR.json",
- "referenceNumber": 125,
- "name": "UCAR License",
- "licenseId": "UCAR",
- "seeAlso": [
- "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ErlPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json",
- "referenceNumber": 126,
- "name": "Erlang Public License v1.1",
- "licenseId": "ErlPL-1.1",
- "seeAlso": [
- "http://www.erlang.org/EPLICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LPPL-1.3a.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json",
- "referenceNumber": 127,
- "name": "LaTeX Project Public License v1.3a",
- "licenseId": "LPPL-1.3a",
- "seeAlso": [
- "http://www.latex-project.org/lppl/lppl-1-3a.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json",
- "referenceNumber": 128,
- "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
- "licenseId": "CERN-OHL-S-2.0",
- "seeAlso": [
- "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/MIT.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT.json",
- "referenceNumber": 129,
- "name": "MIT License",
- "licenseId": "MIT",
- "seeAlso": [
- "https://opensource.org/licenses/MIT"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json",
- "referenceNumber": 130,
- "name": "Creative Commons Attribution Share Alike 2.1 Japan",
- "licenseId": "CC-BY-SA-2.1-JP",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-4.3RENO.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json",
- "referenceNumber": 131,
- "name": "BSD 4.3 RENO License",
- "licenseId": "BSD-4.3RENO",
- "seeAlso": [
- "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/strcasecmp.c;h\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\u003dHEAD"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CMU-Mach.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json",
- "referenceNumber": 132,
- "name": "CMU Mach License",
- "licenseId": "CMU-Mach",
- "seeAlso": [
- "https://www.cs.cmu.edu/~410/licenses.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json",
- "referenceNumber": 133,
- "name": "Creative Commons Attribution 3.0 United States",
- "licenseId": "CC-BY-3.0-US",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/us/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TOSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TOSL.json",
- "referenceNumber": 134,
- "name": "Trusster Open Source License",
- "licenseId": "TOSL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/TOSL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Giftware.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Giftware.json",
- "referenceNumber": 135,
- "name": "Giftware License",
- "licenseId": "Giftware",
- "seeAlso": [
- "http://liballeg.org/license.html#allegro-4-the-giftware-license"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/dvipdfm.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/dvipdfm.json",
- "referenceNumber": 136,
- "name": "dvipdfm License",
- "licenseId": "dvipdfm",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/dvipdfm"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json",
- "referenceNumber": 137,
- "name": "GNU Free Documentation License v1.1 only",
- "licenseId": "GFDL-1.1-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Crossword.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Crossword.json",
- "referenceNumber": 138,
- "name": "Crossword License",
- "licenseId": "Crossword",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Crossword"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json",
- "referenceNumber": 139,
- "name": "GNU Library General Public License v2 only",
- "licenseId": "LGPL-2.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json",
- "referenceNumber": 140,
- "name": "Non-Commercial Government Licence",
- "licenseId": "NCGL-UK-2.0",
- "seeAlso": [
- "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json",
- "referenceNumber": 141,
- "name": "Netscape Public License v1.0",
- "licenseId": "NPL-1.0",
- "seeAlso": [
- "http://www.mozilla.org/MPL/NPL/1.0/"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/SchemeReport.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SchemeReport.json",
- "referenceNumber": 142,
- "name": "Scheme Language Report License",
- "licenseId": "SchemeReport",
- "seeAlso": [],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NLOD-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json",
- "referenceNumber": 143,
- "name": "Norwegian Licence for Open Government Data (NLOD) 2.0",
- "licenseId": "NLOD-2.0",
- "seeAlso": [
- "http://data.norge.no/nlod/en/2.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Intel-ACPI.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json",
- "referenceNumber": 144,
- "name": "Intel ACPI Software License Agreement",
- "licenseId": "Intel-ACPI",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json",
- "referenceNumber": 145,
- "name": "GNU Library General Public License v2 or later",
- "licenseId": "LGPL-2.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/SMLNJ.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SMLNJ.json",
- "referenceNumber": 146,
- "name": "Standard ML of New Jersey License",
- "licenseId": "SMLNJ",
- "seeAlso": [
- "https://www.smlnj.org/license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json",
- "referenceNumber": 147,
- "name": "GNU Free Documentation License v1.2 or later",
- "licenseId": "GFDL-1.2-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Bitstream-Charter.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json",
- "referenceNumber": 148,
- "name": "Bitstream Charter Font License",
- "licenseId": "Bitstream-Charter",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Charter#License_Text",
- "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Elastic-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json",
- "referenceNumber": 149,
- "name": "Elastic License 2.0",
- "licenseId": "Elastic-2.0",
- "seeAlso": [
- "https://www.elastic.co/licensing/elastic-license",
- "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json",
- "referenceNumber": 150,
- "name": "GNU Lesser General Public License v3.0 or later",
- "licenseId": "LGPL-3.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
- "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
- "https://opensource.org/licenses/LGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/ECL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json",
- "referenceNumber": 151,
- "name": "Educational Community License v1.0",
- "licenseId": "ECL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/ECL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Wsuipa.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Wsuipa.json",
- "referenceNumber": 152,
- "name": "Wsuipa License",
- "licenseId": "Wsuipa",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Wsuipa"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Sendmail-8.23.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json",
- "referenceNumber": 153,
- "name": "Sendmail License 8.23",
- "licenseId": "Sendmail-8.23",
- "seeAlso": [
- "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf",
- "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json",
- "referenceNumber": 154,
- "name": "Creative Commons Attribution Share Alike 4.0 International",
- "licenseId": "CC-BY-SA-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/4.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/ODC-By-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json",
- "referenceNumber": 155,
- "name": "Open Data Commons Attribution License v1.0",
- "licenseId": "ODC-By-1.0",
- "seeAlso": [
- "https://opendatacommons.org/licenses/by/1.0/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json",
- "referenceNumber": 156,
- "name": "GNU Lesser General Public License v2.1 or later",
- "licenseId": "LGPL-2.1-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
- "https://opensource.org/licenses/LGPL-2.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/etalab-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json",
- "referenceNumber": 157,
- "name": "Etalab Open License 2.0",
- "licenseId": "etalab-2.0",
- "seeAlso": [
- "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf",
- "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Xerox.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Xerox.json",
- "referenceNumber": 158,
- "name": "Xerox License",
- "licenseId": "Xerox",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Xerox"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json",
- "referenceNumber": 159,
- "name": "Creative Commons Attribution 4.0 International",
- "licenseId": "CC-BY-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/4.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Zend-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json",
- "referenceNumber": 160,
- "name": "Zend License v2.0",
- "licenseId": "Zend-2.0",
- "seeAlso": [
- "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Zimbra-1.4.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json",
- "referenceNumber": 161,
- "name": "Zimbra Public License v1.4",
- "licenseId": "Zimbra-1.4",
- "seeAlso": [
- "http://www.zimbra.com/legal/zimbra-public-license-1-4"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Qhull.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Qhull.json",
- "referenceNumber": 162,
- "name": "Qhull License",
- "licenseId": "Qhull",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Qhull"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/curl.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/curl.json",
- "referenceNumber": 163,
- "name": "curl License",
- "licenseId": "curl",
- "seeAlso": [
- "https://github.com/bagder/curl/blob/master/COPYING"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/W3C.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/W3C.json",
- "referenceNumber": 164,
- "name": "W3C Software Notice and License (2002-12-31)",
- "licenseId": "W3C",
- "seeAlso": [
- "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html",
- "https://opensource.org/licenses/W3C"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Hippocratic-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json",
- "referenceNumber": 165,
- "name": "Hippocratic License 2.1",
- "licenseId": "Hippocratic-2.1",
- "seeAlso": [
- "https://firstdonoharm.dev/version/2/1/license.html",
- "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json",
- "referenceNumber": 166,
- "name": "Common Public License 1.0",
- "licenseId": "CPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/CPL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-2-Clause.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json",
- "referenceNumber": 167,
- "name": "BSD 2-Clause \"Simplified\" License",
- "licenseId": "BSD-2-Clause",
- "seeAlso": [
- "https://opensource.org/licenses/BSD-2-Clause"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Caldera.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Caldera.json",
- "referenceNumber": 168,
- "name": "Caldera License",
- "licenseId": "Caldera",
- "seeAlso": [
- "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OPUBL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json",
- "referenceNumber": 169,
- "name": "Open Publication License v1.0",
- "licenseId": "OPUBL-1.0",
- "seeAlso": [
- "http://opencontent.org/openpub/",
- "https://www.debian.org/opl",
- "https://www.ctan.org/license/opl"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json",
- "referenceNumber": 170,
- "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany",
- "licenseId": "CC-BY-NC-SA-2.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CDL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json",
- "referenceNumber": 171,
- "name": "Common Documentation License 1.0",
- "licenseId": "CDL-1.0",
- "seeAlso": [
- "http://www.opensource.apple.com/cdl/",
- "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License",
- "https://www.gnu.org/licenses/license-list.html#ACDL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MS-LPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MS-LPL.json",
- "referenceNumber": 172,
- "name": "Microsoft Limited Public License",
- "licenseId": "MS-LPL",
- "seeAlso": [
- "https://www.openhub.net/licenses/mslpl",
- "https://github.com/gabegundy/atlserver/blob/master/License.txt",
- "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NAIST-2003.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json",
- "referenceNumber": 173,
- "name": "Nara Institute of Science and Technology License (2003)",
- "licenseId": "NAIST-2003",
- "seeAlso": [
- "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text",
- "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json",
- "referenceNumber": 174,
- "name": "GNU Free Documentation License v1.1 or later - invariants",
- "licenseId": "GFDL-1.1-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json",
- "referenceNumber": 175,
- "name": "GNU General Public License v2.0 only",
- "licenseId": "GPL-2.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
- "https://opensource.org/licenses/GPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BitTorrent-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json",
- "referenceNumber": 176,
- "name": "BitTorrent Open Source License v1.1",
- "licenseId": "BitTorrent-1.1",
- "seeAlso": [
- "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json",
- "referenceNumber": 177,
- "name": "GNU General Public License v2.0 w/GCC Runtime Library exception",
- "licenseId": "GPL-2.0-with-GCC-exception",
- "seeAlso": [
- "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/IPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json",
- "referenceNumber": 178,
- "name": "IBM Public License v1.0",
- "licenseId": "IPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/IPL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json",
- "referenceNumber": 179,
- "name": "CeCILL Free Software License Agreement v1.1",
- "licenseId": "CECILL-1.1",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json",
- "referenceNumber": 180,
- "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)",
- "licenseId": "CAL-1.0-Combined-Work-Exception",
- "seeAlso": [
- "http://cryptographicautonomylicense.com/license-text.html",
- "https://opensource.org/licenses/CAL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/PDDL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json",
- "referenceNumber": 181,
- "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0",
- "licenseId": "PDDL-1.0",
- "seeAlso": [
- "http://opendatacommons.org/licenses/pddl/1.0/",
- "https://opendatacommons.org/licenses/pddl/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ANTLR-PD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json",
- "referenceNumber": 182,
- "name": "ANTLR Software Rights Notice",
- "licenseId": "ANTLR-PD",
- "seeAlso": [
- "http://www.antlr2.org/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json",
- "referenceNumber": 183,
- "name": "GNU General Public License v2.0 or later",
- "licenseId": "GPL-2.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
- "https://opensource.org/licenses/GPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/IJG.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IJG.json",
- "referenceNumber": 184,
- "name": "Independent JPEG Group License",
- "licenseId": "IJG",
- "seeAlso": [
- "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-1.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json",
- "referenceNumber": 185,
- "name": "Affero General Public License v1.0 only",
- "licenseId": "AGPL-1.0-only",
- "seeAlso": [
- "http://www.affero.org/oagpl.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Spencer-99.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Spencer-99.json",
- "referenceNumber": 186,
- "name": "Spencer License 99",
- "licenseId": "Spencer-99",
- "seeAlso": [
- "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.1+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json",
- "referenceNumber": 187,
- "name": "GNU Lesser General Public License v2.1 or later",
- "licenseId": "LGPL-2.1+",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
- "https://opensource.org/licenses/LGPL-2.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json",
- "referenceNumber": 188,
- "name": "BSD-4-Clause (University of California-Specific)",
- "licenseId": "BSD-4-Clause-UC",
- "seeAlso": [
- "http://www.freebsd.org/copyright/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC0-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json",
- "referenceNumber": 189,
- "name": "Creative Commons Zero v1.0 Universal",
- "licenseId": "CC0-1.0",
- "seeAlso": [
- "https://creativecommons.org/publicdomain/zero/1.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MPL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json",
- "referenceNumber": 190,
- "name": "Mozilla Public License 2.0",
- "licenseId": "MPL-2.0",
- "seeAlso": [
- "https://www.mozilla.org/MPL/2.0/",
- "https://opensource.org/licenses/MPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json",
- "referenceNumber": 191,
- "name": "LZMA SDK License (versions 9.11 to 9.20)",
- "licenseId": "LZMA-SDK-9.11-to-9.20",
- "seeAlso": [
- "https://www.7-zip.org/sdk.html",
- "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Sleepycat.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Sleepycat.json",
- "referenceNumber": 192,
- "name": "Sleepycat License",
- "licenseId": "Sleepycat",
- "seeAlso": [
- "https://opensource.org/licenses/Sleepycat"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CrystalStacker.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json",
- "referenceNumber": 193,
- "name": "CrystalStacker License",
- "licenseId": "CrystalStacker",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json",
- "referenceNumber": 194,
- "name": "Mozilla Public License 2.0 (no copyleft exception)",
- "licenseId": "MPL-2.0-no-copyleft-exception",
- "seeAlso": [
- "https://www.mozilla.org/MPL/2.0/",
- "https://opensource.org/licenses/MPL-2.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Unicode-TOU.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json",
- "referenceNumber": 195,
- "name": "Unicode Terms of Use",
- "licenseId": "Unicode-TOU",
- "seeAlso": [
- "http://www.unicode.org/copyright.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FreeImage.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FreeImage.json",
- "referenceNumber": 196,
- "name": "FreeImage Public License v1.0",
- "licenseId": "FreeImage",
- "seeAlso": [
- "http://freeimage.sourceforge.net/freeimage-license.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AFL-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json",
- "referenceNumber": 197,
- "name": "Academic Free License v2.1",
- "licenseId": "AFL-2.1",
- "seeAlso": [
- "http://opensource.linux-mirror.org/licenses/afl-2.1.txt"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/NBPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json",
- "referenceNumber": 198,
- "name": "Net Boolean Public License v1",
- "licenseId": "NBPL-1.0",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NLOD-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json",
- "referenceNumber": 199,
- "name": "Norwegian Licence for Open Government Data (NLOD) 1.0",
- "licenseId": "NLOD-1.0",
- "seeAlso": [
- "http://data.norge.no/nlod/en/1.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ADSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ADSL.json",
- "referenceNumber": 200,
- "name": "Amazon Digital Services License",
- "licenseId": "ADSL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SHL-0.51.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json",
- "referenceNumber": 201,
- "name": "Solderpad Hardware License, Version 0.51",
- "licenseId": "SHL-0.51",
- "seeAlso": [
- "https://solderpad.org/licenses/SHL-0.51/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Spencer-94.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Spencer-94.json",
- "referenceNumber": 202,
- "name": "Spencer License 94",
- "licenseId": "Spencer-94",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/PSF-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json",
- "referenceNumber": 203,
- "name": "Python Software Foundation License 2.0",
- "licenseId": "PSF-2.0",
- "seeAlso": [
- "https://opensource.org/licenses/Python-2.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json",
- "referenceNumber": 204,
- "name": "SIL Open Font License 1.0 with no Reserved Font Name",
- "licenseId": "OFL-1.0-no-RFN",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json",
- "referenceNumber": 205,
- "name": "IEC Code Components End-user licence agreement",
- "licenseId": "IEC-Code-Components-EULA",
- "seeAlso": [
- "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf",
- "https://www.iec.ch/CCv1",
- "https://www.iec.ch/copyright"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Jam.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Jam.json",
- "referenceNumber": 206,
- "name": "Jam License",
- "licenseId": "Jam",
- "seeAlso": [
- "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html",
- "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json",
- "referenceNumber": 207,
- "name": "Technische Universitaet Berlin License 1.0",
- "licenseId": "TU-Berlin-1.0",
- "seeAlso": [
- "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json",
- "referenceNumber": 208,
- "name": "Creative Commons Attribution Share Alike 3.0 Unported",
- "licenseId": "CC-BY-SA-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/3.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/APSL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json",
- "referenceNumber": 209,
- "name": "Apple Public Source License 1.2",
- "licenseId": "APSL-1.2",
- "seeAlso": [
- "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json",
- "referenceNumber": 210,
- "name": "Creative Commons Attribution Share Alike 3.0 Austria",
- "licenseId": "CC-BY-SA-3.0-AT",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ImageMagick.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ImageMagick.json",
- "referenceNumber": 211,
- "name": "ImageMagick License",
- "licenseId": "ImageMagick",
- "seeAlso": [
- "http://www.imagemagick.org/script/license.php"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Newsletr.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Newsletr.json",
- "referenceNumber": 212,
- "name": "Newsletr License",
- "licenseId": "Newsletr",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Newsletr"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/IPA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IPA.json",
- "referenceNumber": 213,
- "name": "IPA Font License",
- "licenseId": "IPA",
- "seeAlso": [
- "https://opensource.org/licenses/IPA"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Unlicense.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Unlicense.json",
- "referenceNumber": 214,
- "name": "The Unlicense",
- "licenseId": "Unlicense",
- "seeAlso": [
- "https://unlicense.org/"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json",
- "referenceNumber": 215,
- "name": "MIT License Modern Variant",
- "licenseId": "MIT-Modern-Variant",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants",
- "https://ptolemy.berkeley.edu/copyright.htm",
- "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/ECL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json",
- "referenceNumber": 216,
- "name": "Educational Community License v2.0",
- "licenseId": "ECL-2.0",
- "seeAlso": [
- "https://opensource.org/licenses/ECL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Barr.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Barr.json",
- "referenceNumber": 217,
- "name": "Barr License",
- "licenseId": "Barr",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Barr"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json",
- "referenceNumber": 218,
- "name": "GNU General Public License v2.0 or later",
- "licenseId": "GPL-2.0+",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
- "https://opensource.org/licenses/GPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BitTorrent-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json",
- "referenceNumber": 219,
- "name": "BitTorrent Open Source License v1.0",
- "licenseId": "BitTorrent-1.0",
- "seeAlso": [
- "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json",
- "referenceNumber": 220,
- "name": "Brian Gladman 3-Clause License",
- "licenseId": "Brian-Gladman-3-Clause",
- "seeAlso": [
- "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SSH-short.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SSH-short.json",
- "referenceNumber": 221,
- "name": "SSH short notice",
- "licenseId": "SSH-short",
- "seeAlso": [
- "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h",
- "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1",
- "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json",
- "referenceNumber": 222,
- "name": "Creative Commons Attribution No Derivatives 4.0 International",
- "licenseId": "CC-BY-ND-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/4.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/VSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json",
- "referenceNumber": 223,
- "name": "Vovida Software License v1.0",
- "licenseId": "VSL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/VSL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/eCos-2.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json",
- "referenceNumber": 224,
- "name": "eCos license version 2.0",
- "licenseId": "eCos-2.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/ecos-license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Info-ZIP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json",
- "referenceNumber": 225,
- "name": "Info-ZIP License",
- "licenseId": "Info-ZIP",
- "seeAlso": [
- "http://www.info-zip.org/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SGI-B-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json",
- "referenceNumber": 226,
- "name": "SGI Free Software License B v1.0",
- "licenseId": "SGI-B-1.0",
- "seeAlso": [
- "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json",
- "referenceNumber": 227,
- "name": "BSD 3-Clause No Military License",
- "licenseId": "BSD-3-Clause-No-Military-License",
- "seeAlso": [
- "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE",
- "https://github.com/greymass/swift-eosio/blob/master/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ISC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ISC.json",
- "referenceNumber": 228,
- "name": "ISC License",
- "licenseId": "ISC",
- "seeAlso": [
- "https://www.isc.org/licenses/",
- "https://www.isc.org/downloads/software-support-policy/isc-license/",
- "https://opensource.org/licenses/ISC"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/FSFUL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FSFUL.json",
- "referenceNumber": 229,
- "name": "FSF Unlimited License",
- "licenseId": "FSFUL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OSET-PL-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json",
- "referenceNumber": 230,
- "name": "OSET Public License version 2.1",
- "licenseId": "OSET-PL-2.1",
- "seeAlso": [
- "http://www.osetfoundation.org/public-license",
- "https://opensource.org/licenses/OPL-2.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/ClArtistic.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ClArtistic.json",
- "referenceNumber": 231,
- "name": "Clarified Artistic License",
- "licenseId": "ClArtistic",
- "seeAlso": [
- "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/",
- "http://www.ncftp.com/ncftp/doc/LICENSE.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/NTP-0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NTP-0.json",
- "referenceNumber": 232,
- "name": "NTP No Attribution",
- "licenseId": "NTP-0",
- "seeAlso": [
- "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NTP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NTP.json",
- "referenceNumber": 233,
- "name": "NTP License",
- "licenseId": "NTP",
- "seeAlso": [
- "https://opensource.org/licenses/NTP"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/AMPAS.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AMPAS.json",
- "referenceNumber": 234,
- "name": "Academy of Motion Picture Arts and Sciences BSD",
- "licenseId": "AMPAS",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPLLR.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPLLR.json",
- "referenceNumber": 235,
- "name": "Lesser General Public License For Linguistic Resources",
- "licenseId": "LGPLLR",
- "seeAlso": [
- "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json",
- "referenceNumber": 236,
- "name": "GNU General Public License v2.0 w/Font exception",
- "licenseId": "GPL-2.0-with-font-exception",
- "seeAlso": [
- "https://www.gnu.org/licenses/gpl-faq.html#FontException"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AFL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json",
- "referenceNumber": 237,
- "name": "Academic Free License v2.0",
- "licenseId": "AFL-2.0",
- "seeAlso": [
- "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-PDDC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json",
- "referenceNumber": 238,
- "name": "Creative Commons Public Domain Dedication and Certification",
- "licenseId": "CC-PDDC",
- "seeAlso": [
- "https://creativecommons.org/licenses/publicdomain/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Spencer-86.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Spencer-86.json",
- "referenceNumber": 239,
- "name": "Spencer License 86",
- "licenseId": "Spencer-86",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/W3C-19980720.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json",
- "referenceNumber": 240,
- "name": "W3C Software Notice and License (1998-07-20)",
- "licenseId": "W3C-19980720",
- "seeAlso": [
- "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json",
- "referenceNumber": 241,
- "name": "Creative Commons Attribution Share Alike 2.5 Generic",
- "licenseId": "CC-BY-SA-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/2.5/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ICU.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ICU.json",
- "referenceNumber": 242,
- "name": "ICU License",
- "licenseId": "ICU",
- "seeAlso": [
- "http://source.icu-project.org/repos/icu/icu/trunk/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/JasPer-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json",
- "referenceNumber": 243,
- "name": "JasPer License",
- "licenseId": "JasPer-2.0",
- "seeAlso": [
- "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Bahyph.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Bahyph.json",
- "referenceNumber": 244,
- "name": "Bahyph License",
- "licenseId": "Bahyph",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Bahyph"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json",
- "referenceNumber": 245,
- "name": "Lucent Public License Version 1.0",
- "licenseId": "LPL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/LPL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Glulxe.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Glulxe.json",
- "referenceNumber": 246,
- "name": "Glulxe License",
- "licenseId": "Glulxe",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Glulxe"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SISSL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json",
- "referenceNumber": 247,
- "name": "Sun Industry Standards Source License v1.2",
- "licenseId": "SISSL-1.2",
- "seeAlso": [
- "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/ZPL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json",
- "referenceNumber": 248,
- "name": "Zope Public License 2.0",
- "licenseId": "ZPL-2.0",
- "seeAlso": [
- "http://old.zope.org/Resources/License/ZPL-2.0",
- "https://opensource.org/licenses/ZPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/TPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json",
- "referenceNumber": 249,
- "name": "THOR Public License 1.0",
- "licenseId": "TPL-1.0",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json",
- "referenceNumber": 250,
- "name": "GNU Free Documentation License v1.1 only - invariants",
- "licenseId": "GFDL-1.1-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/APSL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json",
- "referenceNumber": 251,
- "name": "Apple Public Source License 2.0",
- "licenseId": "APSL-2.0",
- "seeAlso": [
- "http://www.opensource.apple.com/license/apsl/"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/EPICS.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EPICS.json",
- "referenceNumber": 252,
- "name": "EPICS Open License",
- "licenseId": "EPICS",
- "seeAlso": [
- "https://epics.anl.gov/license/open.php"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/D-FSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json",
- "referenceNumber": 253,
- "name": "Deutsche Freie Software Lizenz",
- "licenseId": "D-FSL-1.0",
- "seeAlso": [
- "http://www.dipp.nrw.de/d-fsl/lizenzen/",
- "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt",
- "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt",
- "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl",
- "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz",
- "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license",
- "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file",
- "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json",
- "referenceNumber": 254,
- "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
- "licenseId": "CERN-OHL-W-2.0",
- "seeAlso": [
- "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/IBM-pibs.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json",
- "referenceNumber": 255,
- "name": "IBM PowerPC Initialization and Boot Software",
- "licenseId": "IBM-pibs",
- "seeAlso": [
- "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SISSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SISSL.json",
- "referenceNumber": 256,
- "name": "Sun Industry Standards Source License v1.1",
- "licenseId": "SISSL",
- "seeAlso": [
- "http://www.openoffice.org/licenses/sissl_license.html",
- "https://opensource.org/licenses/SISSL"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json",
- "referenceNumber": 257,
- "name": "Licence Libre du QuĆ©bec ā RĆ©ciprocitĆ© forte version 1.1",
- "licenseId": "LiLiQ-Rplus-1.1",
- "seeAlso": [
- "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/",
- "http://opensource.org/licenses/LiLiQ-Rplus-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/iMatix.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/iMatix.json",
- "referenceNumber": 258,
- "name": "iMatix Standard Function Library Agreement",
- "licenseId": "iMatix",
- "seeAlso": [
- "http://legacy.imatix.com/html/sfl/sfl4.htm#license"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.4.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json",
- "referenceNumber": 259,
- "name": "Open LDAP Public License v2.4",
- "licenseId": "OLDAP-2.4",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json",
- "referenceNumber": 260,
- "name": "BSD 3-Clause No Nuclear License",
- "licenseId": "BSD-3-Clause-No-Nuclear-License",
- "seeAlso": [
- "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\u003d1467140197_43d516ce1776bd08a58235a7785be1cc"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Condor-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json",
- "referenceNumber": 261,
- "name": "Condor Public License v1.1",
- "licenseId": "Condor-1.1",
- "seeAlso": [
- "http://research.cs.wisc.edu/condor/license.html#condor",
- "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json",
- "referenceNumber": 262,
- "name": "Boost Software License 1.0",
- "licenseId": "BSL-1.0",
- "seeAlso": [
- "http://www.boost.org/LICENSE_1_0.txt",
- "https://opensource.org/licenses/BSL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Community-Spec-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json",
- "referenceNumber": 263,
- "name": "Community Specification License 1.0",
- "licenseId": "Community-Spec-1.0",
- "seeAlso": [
- "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/DRL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json",
- "referenceNumber": 264,
- "name": "Detection Rule License 1.0",
- "licenseId": "DRL-1.0",
- "seeAlso": [
- "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NRL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NRL.json",
- "referenceNumber": 265,
- "name": "NRL License",
- "licenseId": "NRL",
- "seeAlso": [
- "http://web.mit.edu/network/isakmp/nrllicense.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Xnet.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Xnet.json",
- "referenceNumber": 266,
- "name": "X.Net License",
- "licenseId": "Xnet",
- "seeAlso": [
- "https://opensource.org/licenses/Xnet"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json",
- "referenceNumber": 267,
- "name": "Artistic License 1.0 w/clause 8",
- "licenseId": "Artistic-1.0-cl8",
- "seeAlso": [
- "https://opensource.org/licenses/Artistic-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json",
- "referenceNumber": 268,
- "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO",
- "licenseId": "CC-BY-NC-SA-3.0-IGO",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/YPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json",
- "referenceNumber": 269,
- "name": "Yahoo! Public License v1.1",
- "licenseId": "YPL-1.1",
- "seeAlso": [
- "http://www.zimbra.com/license/yahoo_public_license_1.1.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/APL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APL-1.0.json",
- "referenceNumber": 270,
- "name": "Adaptive Public License 1.0",
- "licenseId": "APL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/APL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Intel.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Intel.json",
- "referenceNumber": 271,
- "name": "Intel Open Source License",
- "licenseId": "Intel",
- "seeAlso": [
- "https://opensource.org/licenses/Intel"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/XSkat.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/XSkat.json",
- "referenceNumber": 272,
- "name": "XSkat License",
- "licenseId": "XSkat",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/XSkat_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SNIA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SNIA.json",
- "referenceNumber": 273,
- "name": "SNIA Public License 1.1",
- "licenseId": "SNIA",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NLPL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NLPL.json",
- "referenceNumber": 274,
- "name": "No Limit Public License",
- "licenseId": "NLPL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/NLPL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AAL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AAL.json",
- "referenceNumber": 275,
- "name": "Attribution Assurance License",
- "licenseId": "AAL",
- "seeAlso": [
- "https://opensource.org/licenses/attribution"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-3.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json",
- "referenceNumber": 276,
- "name": "GNU Lesser General Public License v3.0 only",
- "licenseId": "LGPL-3.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
- "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
- "https://opensource.org/licenses/LGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json",
- "referenceNumber": 277,
- "name": "Creative Commons Attribution No Derivatives 3.0 Unported",
- "licenseId": "CC-BY-ND-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/3.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/NIST-PD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NIST-PD.json",
- "referenceNumber": 278,
- "name": "NIST Public Domain Notice",
- "licenseId": "NIST-PD",
- "seeAlso": [
- "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt",
- "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/w3m.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/w3m.json",
- "referenceNumber": 279,
- "name": "w3m License",
- "licenseId": "w3m",
- "seeAlso": [
- "https://github.com/tats/w3m/blob/master/COPYING"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json",
- "referenceNumber": 280,
- "name": "Creative Commons Attribution Share Alike 2.0 Generic",
- "licenseId": "CC-BY-SA-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/2.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json",
- "referenceNumber": 281,
- "name": "GNU Free Documentation License v1.2 or later - invariants",
- "licenseId": "GFDL-1.2-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/JPL-image.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/JPL-image.json",
- "referenceNumber": 282,
- "name": "JPL Image Use Policy",
- "licenseId": "JPL-image",
- "seeAlso": [
- "https://www.jpl.nasa.gov/jpl-image-use-policy"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/EFL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json",
- "referenceNumber": 283,
- "name": "Eiffel Forum License v2.0",
- "licenseId": "EFL-2.0",
- "seeAlso": [
- "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html",
- "https://opensource.org/licenses/EFL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json",
- "referenceNumber": 284,
- "name": "Creative Commons Attribution Non Commercial 4.0 International",
- "licenseId": "CC-BY-NC-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/4.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json",
- "referenceNumber": 285,
- "name": "PolyForm Noncommercial License 1.0.0",
- "licenseId": "PolyForm-Noncommercial-1.0.0",
- "seeAlso": [
- "https://polyformproject.org/licenses/noncommercial/1.0.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Plexus.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Plexus.json",
- "referenceNumber": 286,
- "name": "Plexus Classworlds License",
- "licenseId": "Plexus",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json",
- "referenceNumber": 287,
- "name": "GNU Free Documentation License v1.3 or later - invariants",
- "licenseId": "GFDL-1.3-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json",
- "referenceNumber": 288,
- "name": "HPND sell variant with MIT disclaimer",
- "licenseId": "HPND-sell-variant-MIT-disclaimer",
- "seeAlso": [
- "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/X11.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/X11.json",
- "referenceNumber": 289,
- "name": "X11 License",
- "licenseId": "X11",
- "seeAlso": [
- "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Arphic-1999.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json",
- "referenceNumber": 290,
- "name": "Arphic Public License",
- "licenseId": "Arphic-1999",
- "seeAlso": [
- "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json",
- "referenceNumber": 291,
- "name": "Creative Commons Attribution 2.5 Australia",
- "licenseId": "CC-BY-2.5-AU",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/2.5/au/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/APSL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json",
- "referenceNumber": 292,
- "name": "Apple Public Source License 1.1",
- "licenseId": "APSL-1.1",
- "seeAlso": [
- "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json",
- "referenceNumber": 293,
- "name": "GNU Free Documentation License v1.1 or later - no invariants",
- "licenseId": "GFDL-1.1-no-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json",
- "referenceNumber": 294,
- "name": "CERN Open Hardware Licence Version 2 - Permissive",
- "licenseId": "CERN-OHL-P-2.0",
- "seeAlso": [
- "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json",
- "referenceNumber": 295,
- "name": "GNU Affero General Public License v3.0 or later",
- "licenseId": "AGPL-3.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/agpl.txt",
- "https://opensource.org/licenses/AGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/bzip2-1.0.6.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json",
- "referenceNumber": 296,
- "name": "bzip2 and libbzip2 License v1.0.6",
- "licenseId": "bzip2-1.0.6",
- "seeAlso": [
- "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6",
- "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OSL-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json",
- "referenceNumber": 297,
- "name": "Open Software License 2.1",
- "licenseId": "OSL-2.1",
- "seeAlso": [
- "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm",
- "https://opensource.org/licenses/OSL-2.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OCCT-PL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json",
- "referenceNumber": 298,
- "name": "Open CASCADE Technology Public License",
- "licenseId": "OCCT-PL",
- "seeAlso": [
- "http://www.opencascade.com/content/occt-public-license"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CPAL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json",
- "referenceNumber": 299,
- "name": "Common Public Attribution License 1.0",
- "licenseId": "CPAL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/CPAL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json",
- "referenceNumber": 300,
- "name": "Creative Commons Attribution Non Commercial 3.0 Germany",
- "licenseId": "CC-BY-NC-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json",
- "referenceNumber": 301,
- "name": "Open LDAP Public License v2.0.1",
- "licenseId": "OLDAP-2.0.1",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NOSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NOSL.json",
- "referenceNumber": 302,
- "name": "Netizen Open Source License",
- "licenseId": "NOSL",
- "seeAlso": [
- "http://bits.netizen.com.au/licenses/NOSL/nosl.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Python-2.0.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json",
- "referenceNumber": 303,
- "name": "Python License 2.0.1",
- "licenseId": "Python-2.0.1",
- "seeAlso": [
- "https://www.python.org/download/releases/2.0.1/license/",
- "https://docs.python.org/3/license.html",
- "https://github.com/python/cpython/blob/main/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json",
- "referenceNumber": 304,
- "name": "Unicode License Agreement - Data Files and Software (2015)",
- "licenseId": "Unicode-DFS-2015",
- "seeAlso": [
- "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json",
- "referenceNumber": 305,
- "name": "Technische Universitaet Berlin License 2.0",
- "licenseId": "TU-Berlin-2.0",
- "seeAlso": [
- "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Fair.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Fair.json",
- "referenceNumber": 306,
- "name": "Fair License",
- "licenseId": "Fair",
- "seeAlso": [
- "http://fairlicense.org/",
- "https://opensource.org/licenses/Fair"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json",
- "referenceNumber": 307,
- "name": "Community Data License Agreement Permissive 1.0",
- "licenseId": "CDLA-Permissive-1.0",
- "seeAlso": [
- "https://cdla.io/permissive-1-0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/libpng-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json",
- "referenceNumber": 308,
- "name": "PNG Reference Library version 2",
- "licenseId": "libpng-2.0",
- "seeAlso": [
- "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json",
- "referenceNumber": 309,
- "name": "GNU General Public License v2.0 w/Classpath exception",
- "licenseId": "GPL-2.0-with-classpath-exception",
- "seeAlso": [
- "https://www.gnu.org/software/classpath/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/C-UDA-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json",
- "referenceNumber": 310,
- "name": "Computational Use of Data Agreement v1.0",
- "licenseId": "C-UDA-1.0",
- "seeAlso": [
- "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md",
- "https://cdla.dev/computational-use-of-data-agreement-v1-0/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json",
- "referenceNumber": 311,
- "name": "Creative Commons Attribution Non Commercial 2.0 Generic",
- "licenseId": "CC-BY-NC-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/2.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json",
- "referenceNumber": 312,
- "name": "GNU General Public License v3.0 only",
- "licenseId": "GPL-3.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
- "https://opensource.org/licenses/GPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/RPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json",
- "referenceNumber": 313,
- "name": "Reciprocal Public License 1.1",
- "licenseId": "RPL-1.1",
- "seeAlso": [
- "https://opensource.org/licenses/RPL-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json",
- "referenceNumber": 314,
- "name": "GNU Free Documentation License v1.2 only - invariants",
- "licenseId": "GFDL-1.2-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SGI-B-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json",
- "referenceNumber": 315,
- "name": "SGI Free Software License B v1.1",
- "licenseId": "SGI-B-1.1",
- "seeAlso": [
- "http://oss.sgi.com/projects/FreeB/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json",
- "referenceNumber": 316,
- "name": "GNU General Public License v2.0 only",
- "licenseId": "GPL-2.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
- "https://opensource.org/licenses/GPL-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Frameworx-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json",
- "referenceNumber": 317,
- "name": "Frameworx Open License 1.0",
- "licenseId": "Frameworx-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/Frameworx-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json",
- "referenceNumber": 318,
- "name": "BSD with attribution",
- "licenseId": "BSD-3-Clause-Attribution",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json",
- "referenceNumber": 319,
- "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
- "licenseId": "CC-BY-NC-SA-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CNRI-Jython.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json",
- "referenceNumber": 320,
- "name": "CNRI Jython License",
- "licenseId": "CNRI-Jython",
- "seeAlso": [
- "http://www.jython.org/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SSPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json",
- "referenceNumber": 321,
- "name": "Server Side Public License, v 1",
- "licenseId": "SSPL-1.0",
- "seeAlso": [
- "https://www.mongodb.com/licensing/server-side-public-license"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TTWL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TTWL.json",
- "referenceNumber": 322,
- "name": "Text-Tabs+Wrap License",
- "licenseId": "TTWL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/TTWL",
- "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MirOS.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MirOS.json",
- "referenceNumber": 323,
- "name": "The MirOS Licence",
- "licenseId": "MirOS",
- "seeAlso": [
- "https://opensource.org/licenses/MirOS"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/OGTSL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGTSL.json",
- "referenceNumber": 324,
- "name": "Open Group Test Suite License",
- "licenseId": "OGTSL",
- "seeAlso": [
- "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt",
- "https://opensource.org/licenses/OGTSL"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GL2PS.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GL2PS.json",
- "referenceNumber": 325,
- "name": "GL2PS License",
- "licenseId": "GL2PS",
- "seeAlso": [
- "http://www.geuz.org/gl2ps/COPYING.GL2PS"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json",
- "referenceNumber": 326,
- "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
- "licenseId": "CC-BY-NC-SA-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json",
- "referenceNumber": 327,
- "name": "GNU General Public License v2.0 w/Autoconf exception",
- "licenseId": "GPL-2.0-with-autoconf-exception",
- "seeAlso": [
- "http://ac-archive.sourceforge.net/doc/copyright.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HPND-sell-variant.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json",
- "referenceNumber": 328,
- "name": "Historical Permission Notice and Disclaimer - sell variant",
- "licenseId": "HPND-sell-variant",
- "seeAlso": [
- "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json",
- "referenceNumber": 329,
- "name": "Creative Commons Attribution No Derivatives 2.5 Generic",
- "licenseId": "CC-BY-ND-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/2.5/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/JPNIC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/JPNIC.json",
- "referenceNumber": 330,
- "name": "Japan Network Information Center License",
- "licenseId": "JPNIC",
- "seeAlso": [
- "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json",
- "referenceNumber": 331,
- "name": "Creative Commons Attribution 2.5 Generic",
- "licenseId": "CC-BY-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/2.5/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Apache-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json",
- "referenceNumber": 332,
- "name": "Apache License 1.1",
- "licenseId": "Apache-1.1",
- "seeAlso": [
- "http://apache.org/licenses/LICENSE-1.1",
- "https://opensource.org/licenses/Apache-1.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Parity-7.0.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json",
- "referenceNumber": 333,
- "name": "The Parity Public License 7.0.0",
- "licenseId": "Parity-7.0.0",
- "seeAlso": [
- "https://paritylicense.com/versions/7.0.0.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OGC-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json",
- "referenceNumber": 334,
- "name": "OGC Software License, Version 1.0",
- "licenseId": "OGC-1.0",
- "seeAlso": [
- "https://www.ogc.org/ogc/software/1.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json",
- "referenceNumber": 335,
- "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany",
- "licenseId": "CC-BY-NC-SA-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json",
- "referenceNumber": 336,
- "name": "CERN Open Hardware Licence v1.2",
- "licenseId": "CERN-OHL-1.2",
- "seeAlso": [
- "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Entessa.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Entessa.json",
- "referenceNumber": 337,
- "name": "Entessa Public License v1.0",
- "licenseId": "Entessa",
- "seeAlso": [
- "https://opensource.org/licenses/Entessa"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json",
- "referenceNumber": 338,
- "name": "GNU General Public License v3.0 or later",
- "licenseId": "GPL-3.0-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
- "https://opensource.org/licenses/GPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/FTL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FTL.json",
- "referenceNumber": 339,
- "name": "Freetype Project License",
- "licenseId": "FTL",
- "seeAlso": [
- "http://freetype.fis.uniroma2.it/FTL.TXT",
- "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT",
- "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/PostgreSQL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json",
- "referenceNumber": 340,
- "name": "PostgreSQL License",
- "licenseId": "PostgreSQL",
- "seeAlso": [
- "http://www.postgresql.org/about/licence",
- "https://opensource.org/licenses/PostgreSQL"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json",
- "referenceNumber": 341,
- "name": "Creative Commons Attribution 3.0 Unported",
- "licenseId": "CC-BY-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json",
- "referenceNumber": 342,
- "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
- "licenseId": "CC-BY-NC-SA-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OCLC-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json",
- "referenceNumber": 343,
- "name": "OCLC Research Public License 2.0",
- "licenseId": "OCLC-2.0",
- "seeAlso": [
- "http://www.oclc.org/research/activities/software/license/v2final.htm",
- "https://opensource.org/licenses/OCLC-2.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Knuth-CTAN.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json",
- "referenceNumber": 344,
- "name": "Knuth CTAN License",
- "licenseId": "Knuth-CTAN",
- "seeAlso": [
- "https://ctan.org/license/knuth"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json",
- "referenceNumber": 345,
- "name": "BSD 3-Clause Open MPI variant",
- "licenseId": "BSD-3-Clause-Open-MPI",
- "seeAlso": [
- "https://www.open-mpi.org/community/license.php",
- "http://www.netlib.org/lapack/LICENSE.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-B.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-B.json",
- "referenceNumber": 346,
- "name": "CeCILL-B Free Software License Agreement",
- "licenseId": "CECILL-B",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Abstyles.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Abstyles.json",
- "referenceNumber": 347,
- "name": "Abstyles License",
- "licenseId": "Abstyles",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Abstyles"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/xpp.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/xpp.json",
- "referenceNumber": 348,
- "name": "XPP License",
- "licenseId": "xpp",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/xpp"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FSFAP.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FSFAP.json",
- "referenceNumber": 349,
- "name": "FSF All Permissive License",
- "licenseId": "FSFAP",
- "seeAlso": [
- "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/HaskellReport.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HaskellReport.json",
- "referenceNumber": 350,
- "name": "Haskell Language Report License",
- "licenseId": "HaskellReport",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json",
- "referenceNumber": 351,
- "name": "X11 License Distribution Modification Variant",
- "licenseId": "X11-distribute-modifications-variant",
- "seeAlso": [
- "https://github.com/mirror/ncurses/blob/master/COPYING"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json",
- "referenceNumber": 352,
- "name": "BSD-2-Clause Plus Patent License",
- "licenseId": "BSD-2-Clause-Patent",
- "seeAlso": [
- "https://opensource.org/licenses/BSDplusPatent"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/NIST-PD-fallback.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json",
- "referenceNumber": 353,
- "name": "NIST Public Domain Notice with license fallback",
- "licenseId": "NIST-PD-fallback",
- "seeAlso": [
- "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE",
- "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Bitstream-Vera.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json",
- "referenceNumber": 354,
- "name": "Bitstream Vera Font License",
- "licenseId": "Bitstream-Vera",
- "seeAlso": [
- "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/",
- "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json",
- "referenceNumber": 355,
- "name": "Open Government Licence - Canada",
- "licenseId": "OGL-Canada-2.0",
- "seeAlso": [
- "https://open.canada.ca/en/open-government-licence-canada"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LAL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json",
- "referenceNumber": 356,
- "name": "Licence Art Libre 1.2",
- "licenseId": "LAL-1.2",
- "seeAlso": [
- "http://artlibre.org/licence/lal/licence-art-libre-12/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.1-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json",
- "referenceNumber": 357,
- "name": "GNU Lesser General Public License v2.1 only",
- "licenseId": "LGPL-2.1-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
- "https://opensource.org/licenses/LGPL-2.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json",
- "referenceNumber": 358,
- "name": "CNRI Python Open Source GPL Compatible License Agreement",
- "licenseId": "CNRI-Python-GPL-Compatible",
- "seeAlso": [
- "http://www.python.org/download/releases/1.6.1/download_win/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json",
- "referenceNumber": 359,
- "name": "Creative Commons Attribution 1.0 Generic",
- "licenseId": "CC-BY-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/1.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Zed.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Zed.json",
- "referenceNumber": 360,
- "name": "Zed License",
- "licenseId": "Zed",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Zed"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SunPro.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SunPro.json",
- "referenceNumber": 361,
- "name": "SunPro License",
- "licenseId": "SunPro",
- "seeAlso": [
- "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c",
- "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TMate.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TMate.json",
- "referenceNumber": 362,
- "name": "TMate Open Source License",
- "licenseId": "TMate",
- "seeAlso": [
- "http://svnkit.com/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json",
- "referenceNumber": 363,
- "name": "GNU General Public License v3.0 w/GCC Runtime Library exception",
- "licenseId": "GPL-3.0-with-GCC-exception",
- "seeAlso": [
- "https://www.gnu.org/licenses/gcc-exception-3.1.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json",
- "referenceNumber": 364,
- "name": "ANTLR Software Rights Notice with license fallback",
- "licenseId": "ANTLR-PD-fallback",
- "seeAlso": [
- "http://www.antlr2.org/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/COIL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json",
- "referenceNumber": 365,
- "name": "Copyfree Open Innovation License",
- "licenseId": "COIL-1.0",
- "seeAlso": [
- "https://coil.apotheon.org/plaintext/01.0.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-Wu.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json",
- "referenceNumber": 366,
- "name": "MIT Tom Wu Variant",
- "licenseId": "MIT-Wu",
- "seeAlso": [
- "https://github.com/chromium/octane/blob/master/crypto.js"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MITNFA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MITNFA.json",
- "referenceNumber": 367,
- "name": "MIT +no-false-attribs license",
- "licenseId": "MITNFA",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MITNFA"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-open-group.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json",
- "referenceNumber": 368,
- "name": "MIT Open Group variant",
- "licenseId": "MIT-open-group",
- "seeAlso": [
- "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING",
- "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING",
- "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING",
- "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json",
- "referenceNumber": 369,
- "name": "GNU Free Documentation License v1.1 or later",
- "licenseId": "GFDL-1.1-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json",
- "referenceNumber": 370,
- "name": "Affero General Public License v1.0 or later",
- "licenseId": "AGPL-1.0-or-later",
- "seeAlso": [
- "http://www.affero.org/oagpl.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Latex2e.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Latex2e.json",
- "referenceNumber": 371,
- "name": "Latex2e License",
- "licenseId": "Latex2e",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Latex2e"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/0BSD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/0BSD.json",
- "referenceNumber": 372,
- "name": "BSD Zero Clause License",
- "licenseId": "0BSD",
- "seeAlso": [
- "http://landley.net/toybox/license.html",
- "https://opensource.org/licenses/0BSD"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json",
- "referenceNumber": 373,
- "name": "BSD Advertising Acknowledgement License",
- "licenseId": "BSD-Advertising-Acknowledgement",
- "seeAlso": [
- "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json",
- "referenceNumber": 374,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
- "licenseId": "CC-BY-NC-ND-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json",
- "referenceNumber": 375,
- "name": "Lawrence Berkeley National Labs BSD variant license",
- "licenseId": "BSD-3-Clause-LBNL",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/LBNLBSD"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/MPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json",
- "referenceNumber": 376,
- "name": "Mozilla Public License 1.1",
- "licenseId": "MPL-1.1",
- "seeAlso": [
- "http://www.mozilla.org/MPL/MPL-1.1.html",
- "https://opensource.org/licenses/MPL-1.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/libutil-David-Nugent.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json",
- "referenceNumber": 377,
- "name": "libutil David Nugent License",
- "licenseId": "libutil-David-Nugent",
- "seeAlso": [
- "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3",
- "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BUSL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json",
- "referenceNumber": 378,
- "name": "Business Source License 1.1",
- "licenseId": "BUSL-1.1",
- "seeAlso": [
- "https://mariadb.com/bsl11/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json",
- "referenceNumber": 379,
- "name": "Licence Libre du QuĆ©bec ā Permissive version 1.1",
- "licenseId": "LiLiQ-P-1.1",
- "seeAlso": [
- "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/",
- "http://opensource.org/licenses/LiLiQ-P-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/MPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json",
- "referenceNumber": 380,
- "name": "Mozilla Public License 1.0",
- "licenseId": "MPL-1.0",
- "seeAlso": [
- "http://www.mozilla.org/MPL/MPL-1.0.html",
- "https://opensource.org/licenses/MPL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Clips.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Clips.json",
- "referenceNumber": 381,
- "name": "Clips License",
- "licenseId": "Clips",
- "seeAlso": [
- "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HPND-export-US.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json",
- "referenceNumber": 382,
- "name": "HPND with US Government export control warning",
- "licenseId": "HPND-export-US",
- "seeAlso": [
- "https://www.kermitproject.org/ck90.html#source"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-1.4.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json",
- "referenceNumber": 383,
- "name": "Open LDAP Public License v1.4",
- "licenseId": "OLDAP-1.4",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json",
- "referenceNumber": 384,
- "name": "Open LDAP Public License v1.1",
- "licenseId": "OLDAP-1.1",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json",
- "referenceNumber": 385,
- "name": "Data licence Germany ā attribution ā version 2.0",
- "licenseId": "DL-DE-BY-2.0",
- "seeAlso": [
- "https://www.govdata.de/dl-de/by-2-0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HTMLTIDY.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json",
- "referenceNumber": 386,
- "name": "HTML Tidy License",
- "licenseId": "HTMLTIDY",
- "seeAlso": [
- "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-1.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json",
- "referenceNumber": 387,
- "name": "GNU General Public License v1.0 only",
- "licenseId": "GPL-1.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/EFL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json",
- "referenceNumber": 388,
- "name": "Eiffel Forum License v1.0",
- "licenseId": "EFL-1.0",
- "seeAlso": [
- "http://www.eiffel-nice.org/license/forum.txt",
- "https://opensource.org/licenses/EFL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json",
- "referenceNumber": 389,
- "name": "Open LDAP Public License v2.1",
- "licenseId": "OLDAP-2.1",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/libselinux-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json",
- "referenceNumber": 390,
- "name": "libselinux public domain notice",
- "licenseId": "libselinux-1.0",
- "seeAlso": [
- "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/psutils.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/psutils.json",
- "referenceNumber": 391,
- "name": "psutils License",
- "licenseId": "psutils",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/psutils"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Symlinks.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Symlinks.json",
- "referenceNumber": 392,
- "name": "Symlinks License",
- "licenseId": "Symlinks",
- "seeAlso": [
- "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json",
- "referenceNumber": 393,
- "name": "GNU Free Documentation License v1.2 or later - no invariants",
- "licenseId": "GFDL-1.2-no-invariants-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json",
- "referenceNumber": 394,
- "name": "Open LDAP Public License 2.2.2",
- "licenseId": "OLDAP-2.2.2",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json",
- "referenceNumber": 395,
- "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
- "licenseId": "CC-BY-NC-SA-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json",
- "referenceNumber": 396,
- "name": "Cornell Lossless JPEG License",
- "licenseId": "Cornell-Lossless-JPEG",
- "seeAlso": [
- "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16",
- "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h",
- "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NICTA-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json",
- "referenceNumber": 397,
- "name": "NICTA Public Software License, Version 1.0",
- "licenseId": "NICTA-1.0",
- "seeAlso": [
- "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/zlib-acknowledgement.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json",
- "referenceNumber": 398,
- "name": "zlib/libpng License with Acknowledgement",
- "licenseId": "zlib-acknowledgement",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CNRI-Python.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json",
- "referenceNumber": 399,
- "name": "CNRI Python License",
- "licenseId": "CNRI-Python",
- "seeAlso": [
- "https://opensource.org/licenses/CNRI-Python"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/VOSTROM.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/VOSTROM.json",
- "referenceNumber": 400,
- "name": "VOSTROM Public License for Open Source",
- "licenseId": "VOSTROM",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/VOSTROM"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Zimbra-1.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json",
- "referenceNumber": 401,
- "name": "Zimbra Public License v1.3",
- "licenseId": "Zimbra-1.3",
- "seeAlso": [
- "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json",
- "referenceNumber": 402,
- "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
- "licenseId": "OLDAP-2.0",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/eGenix.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/eGenix.json",
- "referenceNumber": 403,
- "name": "eGenix.com Public License 1.1.0",
- "licenseId": "eGenix",
- "seeAlso": [
- "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf",
- "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/blessing.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/blessing.json",
- "referenceNumber": 404,
- "name": "SQLite Blessing",
- "licenseId": "blessing",
- "seeAlso": [
- "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9",
- "https://sqlite.org/src/artifact/df5091916dbb40e6"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json",
- "referenceNumber": 405,
- "name": "copyleft-next 0.3.0",
- "licenseId": "copyleft-next-0.3.0",
- "seeAlso": [
- "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Motosoto.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Motosoto.json",
- "referenceNumber": 406,
- "name": "Motosoto License",
- "licenseId": "Motosoto",
- "seeAlso": [
- "https://opensource.org/licenses/Motosoto"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json",
- "referenceNumber": 407,
- "name": "Creative Commons Attribution Share Alike 1.0 Generic",
- "licenseId": "CC-BY-SA-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/1.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json",
- "referenceNumber": 408,
- "name": "Open Public License v1.0",
- "licenseId": "OPL-1.0",
- "seeAlso": [
- "http://old.koalateam.com/jackaroo/OPL_1_0.TXT",
- "https://fedoraproject.org/wiki/Licensing/Open_Public_License"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json",
- "referenceNumber": 409,
- "name": "Open LDAP Public License v1.2",
- "licenseId": "OLDAP-1.2",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/NPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json",
- "referenceNumber": 410,
- "name": "Netscape Public License v1.1",
- "licenseId": "NPL-1.1",
- "seeAlso": [
- "http://www.mozilla.org/MPL/NPL/1.1/"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json",
- "referenceNumber": 411,
- "name": "Creative Commons Attribution No Derivatives 1.0 Generic",
- "licenseId": "CC-BY-ND-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd/1.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/ZPL-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json",
- "referenceNumber": 412,
- "name": "Zope Public License 2.1",
- "licenseId": "ZPL-2.1",
- "seeAlso": [
- "http://old.zope.org/Resources/ZPL/"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CATOSL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json",
- "referenceNumber": 413,
- "name": "Computer Associates Trusted Open Source License 1.1",
- "licenseId": "CATOSL-1.1",
- "seeAlso": [
- "https://opensource.org/licenses/CATOSL-1.1"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/Beerware.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Beerware.json",
- "referenceNumber": 414,
- "name": "Beerware License",
- "licenseId": "Beerware",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Beerware",
- "https://people.freebsd.org/~phk/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CFITSIO.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CFITSIO.json",
- "referenceNumber": 415,
- "name": "CFITSIO License",
- "licenseId": "CFITSIO",
- "seeAlso": [
- "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Watcom-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json",
- "referenceNumber": 416,
- "name": "Sybase Open Watcom Public License 1.0",
- "licenseId": "Watcom-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/Watcom-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/MS-PL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MS-PL.json",
- "referenceNumber": 417,
- "name": "Microsoft Public License",
- "licenseId": "MS-PL",
- "seeAlso": [
- "http://www.microsoft.com/opensource/licenses.mspx",
- "https://opensource.org/licenses/MS-PL"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/snprintf.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/snprintf.json",
- "referenceNumber": 418,
- "name": "snprintf License",
- "licenseId": "snprintf",
- "seeAlso": [
- "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Naumen.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Naumen.json",
- "referenceNumber": 419,
- "name": "Naumen Public License",
- "licenseId": "Naumen",
- "seeAlso": [
- "https://opensource.org/licenses/Naumen"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/EUPL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json",
- "referenceNumber": 420,
- "name": "European Union Public License 1.2",
- "licenseId": "EUPL-1.2",
- "seeAlso": [
- "https://joinup.ec.europa.eu/page/eupl-text-11-12",
- "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf",
- "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt",
- "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt",
- "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863",
- "https://opensource.org/licenses/EUPL-1.2"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/DOC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/DOC.json",
- "referenceNumber": 421,
- "name": "DOC License",
- "licenseId": "DOC",
- "seeAlso": [
- "http://www.cs.wustl.edu/~schmidt/ACE-copying.html",
- "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Artistic-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json",
- "referenceNumber": 422,
- "name": "Artistic License 1.0",
- "licenseId": "Artistic-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/Artistic-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/Imlib2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Imlib2.json",
- "referenceNumber": 423,
- "name": "Imlib2 License",
- "licenseId": "Imlib2",
- "seeAlso": [
- "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING",
- "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OGL-UK-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json",
- "referenceNumber": 424,
- "name": "Open Government Licence v2.0",
- "licenseId": "OGL-UK-2.0",
- "seeAlso": [
- "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json",
- "referenceNumber": 425,
- "name": "GNU Free Documentation License v1.3 only - no invariants",
- "licenseId": "GFDL-1.3-no-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json",
- "referenceNumber": 426,
- "name": "PolyForm Small Business License 1.0.0",
- "licenseId": "PolyForm-Small-Business-1.0.0",
- "seeAlso": [
- "https://polyformproject.org/licenses/small-business/1.0.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json",
- "referenceNumber": 427,
- "name": "GNU Free Documentation License v1.3 only - invariants",
- "licenseId": "GFDL-1.3-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json",
- "referenceNumber": 428,
- "name": "Blue Oak Model License 1.0.0",
- "licenseId": "BlueOak-1.0.0",
- "seeAlso": [
- "https://blueoakcouncil.org/license/1.0.0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MIT-advertising.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json",
- "referenceNumber": 429,
- "name": "Enlightenment License (e16)",
- "licenseId": "MIT-advertising",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/YPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json",
- "referenceNumber": 430,
- "name": "Yahoo! Public License v1.0",
- "licenseId": "YPL-1.0",
- "seeAlso": [
- "http://www.zimbra.com/license/yahoo_public_license_1.0.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/IJG-short.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/IJG-short.json",
- "referenceNumber": 431,
- "name": "Independent JPEG Group License - short",
- "licenseId": "IJG-short",
- "seeAlso": [
- "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Adobe-Glyph.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json",
- "referenceNumber": 432,
- "name": "Adobe Glyph List License",
- "licenseId": "Adobe-Glyph",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json",
- "referenceNumber": 433,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
- "licenseId": "CC-BY-NC-ND-1.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Glide.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Glide.json",
- "referenceNumber": 434,
- "name": "3dfx Glide License",
- "licenseId": "Glide",
- "seeAlso": [
- "http://www.users.on.net/~triforce/glidexp/COPYING.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AMDPLPA.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json",
- "referenceNumber": 435,
- "name": "AMD\u0027s plpa_map.c License",
- "licenseId": "AMDPLPA",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json",
- "referenceNumber": 436,
- "name": "LZMA SDK License (versions 9.22 and beyond)",
- "licenseId": "LZMA-SDK-9.22",
- "seeAlso": [
- "https://www.7-zip.org/sdk.html",
- "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CDDL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json",
- "referenceNumber": 437,
- "name": "Common Development and Distribution License 1.0",
- "licenseId": "CDDL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/cddl1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MS-RL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MS-RL.json",
- "referenceNumber": 438,
- "name": "Microsoft Reciprocal License",
- "licenseId": "MS-RL",
- "seeAlso": [
- "http://www.microsoft.com/opensource/licenses.mspx",
- "https://opensource.org/licenses/MS-RL"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/APSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json",
- "referenceNumber": 439,
- "name": "Apple Public Source License 1.0",
- "licenseId": "APSL-1.0",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json",
- "referenceNumber": 440,
- "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
- "licenseId": "CC-BY-NC-SA-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/JSON.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/JSON.json",
- "referenceNumber": 441,
- "name": "JSON License",
- "licenseId": "JSON",
- "seeAlso": [
- "http://www.json.org/license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json",
- "referenceNumber": 442,
- "name": "GNU General Public License v3.0 w/Autoconf exception",
- "licenseId": "GPL-3.0-with-autoconf-exception",
- "seeAlso": [
- "https://www.gnu.org/licenses/autoconf-exception-3.0.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.6.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json",
- "referenceNumber": 443,
- "name": "Open LDAP Public License v2.6",
- "licenseId": "OLDAP-2.6",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json",
- "referenceNumber": 444,
- "name": "GNU Free Documentation License v1.3 or later",
- "licenseId": "GFDL-1.3-or-later",
- "seeAlso": [
- "https://www.gnu.org/licenses/fdl-1.3.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/SGI-B-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json",
- "referenceNumber": 445,
- "name": "SGI Free Software License B v2.0",
- "licenseId": "SGI-B-2.0",
- "seeAlso": [
- "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/mplus.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/mplus.json",
- "referenceNumber": 446,
- "name": "mplus Font License",
- "licenseId": "mplus",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.0+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json",
- "referenceNumber": 447,
- "name": "GNU Library General Public License v2 or later",
- "licenseId": "LGPL-2.0+",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json",
- "referenceNumber": 448,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
- "licenseId": "CC-BY-NC-ND-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/XFree86-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json",
- "referenceNumber": 449,
- "name": "XFree86 License 1.1",
- "licenseId": "XFree86-1.1",
- "seeAlso": [
- "http://www.xfree86.org/current/LICENSE4.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json",
- "referenceNumber": 450,
- "name": "Creative Commons Attribution 2.0 Generic",
- "licenseId": "CC-BY-2.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/2.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/UCL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json",
- "referenceNumber": 451,
- "name": "Upstream Compatibility License v1.0",
- "licenseId": "UCL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/UCL-1.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/wxWindows.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/wxWindows.json",
- "referenceNumber": 452,
- "name": "wxWindows Library License",
- "licenseId": "wxWindows",
- "seeAlso": [
- "https://opensource.org/licenses/WXwindows"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-4-Clause.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json",
- "referenceNumber": 453,
- "name": "BSD 4-Clause \"Original\" or \"Old\" License",
- "licenseId": "BSD-4-Clause",
- "seeAlso": [
- "http://directory.fsf.org/wiki/License:BSD_4Clause"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GD.json",
- "referenceNumber": 454,
- "name": "GD License",
- "licenseId": "GD",
- "seeAlso": [
- "https://libgd.github.io/manuals/2.3.0/files/license-txt.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-3.0+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json",
- "referenceNumber": 455,
- "name": "GNU Lesser General Public License v3.0 or later",
- "licenseId": "LGPL-3.0+",
- "seeAlso": [
- "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
- "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
- "https://opensource.org/licenses/LGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json",
- "referenceNumber": 456,
- "name": "Creative Commons Attribution Non Commercial 2.5 Generic",
- "licenseId": "CC-BY-NC-2.5",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/2.5/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/EPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json",
- "referenceNumber": 457,
- "name": "Eclipse Public License 1.0",
- "licenseId": "EPL-1.0",
- "seeAlso": [
- "http://www.eclipse.org/legal/epl-v10.html",
- "https://opensource.org/licenses/EPL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json",
- "referenceNumber": 458,
- "name": "copyleft-next 0.3.1",
- "licenseId": "copyleft-next-0.3.1",
- "seeAlso": [
- "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json",
- "referenceNumber": 459,
- "name": "CeCILL Free Software License Agreement v1.0",
- "licenseId": "CECILL-1.0",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AML.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AML.json",
- "referenceNumber": 460,
- "name": "Apple MIT License",
- "licenseId": "AML",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-Protection.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json",
- "referenceNumber": 461,
- "name": "BSD Protection License",
- "licenseId": "BSD-Protection",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/RHeCos-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json",
- "referenceNumber": 462,
- "name": "Red Hat eCos Public License v1.1",
- "licenseId": "RHeCos-1.1",
- "seeAlso": [
- "http://ecos.sourceware.org/old-license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/RPSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json",
- "referenceNumber": 463,
- "name": "RealNetworks Public Source License v1.0",
- "licenseId": "RPSL-1.0",
- "seeAlso": [
- "https://helixcommunity.org/content/rpsl",
- "https://opensource.org/licenses/RPSL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MakeIndex.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MakeIndex.json",
- "referenceNumber": 464,
- "name": "MakeIndex License",
- "licenseId": "MakeIndex",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MakeIndex"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json",
- "referenceNumber": 465,
- "name": "GNU Library General Public License v2 only",
- "licenseId": "LGPL-2.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/OSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json",
- "referenceNumber": 466,
- "name": "Open Software License 1.0",
- "licenseId": "OSL-1.0",
- "seeAlso": [
- "https://opensource.org/licenses/OSL-1.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/MIT-enna.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MIT-enna.json",
- "referenceNumber": 467,
- "name": "enna License",
- "licenseId": "MIT-enna",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MIT#enna"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Artistic-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json",
- "referenceNumber": 468,
- "name": "Artistic License 2.0",
- "licenseId": "Artistic-2.0",
- "seeAlso": [
- "http://www.perlfoundation.org/artistic_license_2_0",
- "https://www.perlfoundation.org/artistic-license-20.html",
- "https://opensource.org/licenses/artistic-license-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json",
- "referenceNumber": 469,
- "name": "GNU Free Documentation License v1.2 only - no invariants",
- "licenseId": "GFDL-1.2-no-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Kazlib.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Kazlib.json",
- "referenceNumber": 470,
- "name": "Kazlib License",
- "licenseId": "Kazlib",
- "seeAlso": [
- "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\u003d0062df360c2d17d57f6af19b0e444c51feb99036"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CPOL-1.02.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json",
- "referenceNumber": 471,
- "name": "Code Project Open License 1.02",
- "licenseId": "CPOL-1.02",
- "seeAlso": [
- "http://www.codeproject.com/info/cpol10.aspx"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/NetCDF.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NetCDF.json",
- "referenceNumber": 472,
- "name": "NetCDF license",
- "licenseId": "NetCDF",
- "seeAlso": [
- "http://www.unidata.ucar.edu/software/netcdf/copyright.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Aladdin.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Aladdin.json",
- "referenceNumber": 473,
- "name": "Aladdin Free Public License",
- "licenseId": "Aladdin",
- "seeAlso": [
- "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/OML.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OML.json",
- "referenceNumber": 474,
- "name": "Open Market License",
- "licenseId": "OML",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Open_Market_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/MulanPSL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json",
- "referenceNumber": 475,
- "name": "Mulan Permissive Software License, Version 1",
- "licenseId": "MulanPSL-1.0",
- "seeAlso": [
- "https://license.coscl.org.cn/MulanPSL/",
- "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json",
- "referenceNumber": 476,
- "name": "SIL Open Font License 1.0 with Reserved Font Name",
- "licenseId": "OFL-1.0-RFN",
- "seeAlso": [
- "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json",
- "referenceNumber": 477,
- "name": "BSD 4 Clause Shortened",
- "licenseId": "BSD-4-Clause-Shortened",
- "seeAlso": [
- "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LPPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json",
- "referenceNumber": 478,
- "name": "LaTeX Project Public License v1.0",
- "licenseId": "LPPL-1.0",
- "seeAlso": [
- "http://www.latex-project.org/lppl/lppl-1-0.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-3.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json",
- "referenceNumber": 479,
- "name": "GNU General Public License v3.0 only",
- "licenseId": "GPL-3.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
- "https://opensource.org/licenses/GPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-2.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json",
- "referenceNumber": 480,
- "name": "Open LDAP Public License v2.3",
- "licenseId": "OLDAP-2.3",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/psfrag.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/psfrag.json",
- "referenceNumber": 481,
- "name": "psfrag License",
- "licenseId": "psfrag",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/psfrag"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json",
- "referenceNumber": 482,
- "name": "GNU Free Documentation License v1.1 only - no invariants",
- "licenseId": "GFDL-1.1-no-invariants-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/GPL-1.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json",
- "referenceNumber": 483,
- "name": "GNU General Public License v1.0 only",
- "licenseId": "GPL-1.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json",
- "referenceNumber": 484,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO",
- "licenseId": "CC-BY-NC-ND-3.0-IGO",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/TCL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TCL.json",
- "referenceNumber": 485,
- "name": "TCL/TK License",
- "licenseId": "TCL",
- "seeAlso": [
- "http://www.tcl.tk/software/tcltk/license.html",
- "https://fedoraproject.org/wiki/Licensing/TCL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Rdisc.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Rdisc.json",
- "referenceNumber": 486,
- "name": "Rdisc License",
- "licenseId": "Rdisc",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Rdisc_License"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Python-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Python-2.0.json",
- "referenceNumber": 487,
- "name": "Python License 2.0",
- "licenseId": "Python-2.0",
- "seeAlso": [
- "https://opensource.org/licenses/Python-2.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json",
- "referenceNumber": 488,
- "name": "Creative Commons Attribution 3.0 IGO",
- "licenseId": "CC-BY-3.0-IGO",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/igo/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json",
- "referenceNumber": 489,
- "name": "BSD 2-Clause FreeBSD License",
- "licenseId": "BSD-2-Clause-FreeBSD",
- "seeAlso": [
- "http://www.freebsd.org/copyright/freebsd-license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/TORQUE-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json",
- "referenceNumber": 490,
- "name": "TORQUE v2.5+ Software License v1.1",
- "licenseId": "TORQUE-1.1",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json",
- "referenceNumber": 491,
- "name": "BSD 3-Clause \"New\" or \"Revised\" License",
- "licenseId": "BSD-3-Clause",
- "seeAlso": [
- "https://opensource.org/licenses/BSD-3-Clause",
- "https://www.eclipse.org/org/documents/edl-v10.php"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json",
- "referenceNumber": 492,
- "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales",
- "licenseId": "CC-BY-NC-SA-2.0-UK",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/libtiff.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/libtiff.json",
- "referenceNumber": 493,
- "name": "libtiff License",
- "licenseId": "libtiff",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/libtiff"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/EUPL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json",
- "referenceNumber": 494,
- "name": "European Union Public License 1.0",
- "licenseId": "EUPL-1.0",
- "seeAlso": [
- "http://ec.europa.eu/idabc/en/document/7330.html",
- "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LPPL-1.2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json",
- "referenceNumber": 495,
- "name": "LaTeX Project Public License v1.2",
- "licenseId": "LPPL-1.2",
- "seeAlso": [
- "http://www.latex-project.org/lppl/lppl-1-2.txt"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/AdaCore-doc.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json",
- "referenceNumber": 496,
- "name": "AdaCore Doc License",
- "licenseId": "AdaCore-doc",
- "seeAlso": [
- "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst",
- "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst",
- "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OSL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json",
- "referenceNumber": 497,
- "name": "Open Software License 1.1",
- "licenseId": "OSL-1.1",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/OSL1.1"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Multics.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Multics.json",
- "referenceNumber": 498,
- "name": "Multics License",
- "licenseId": "Multics",
- "seeAlso": [
- "https://opensource.org/licenses/Multics"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/GPL-1.0+.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json",
- "referenceNumber": 499,
- "name": "GNU General Public License v1.0 or later",
- "licenseId": "GPL-1.0+",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/xlock.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/xlock.json",
- "referenceNumber": 500,
- "name": "xlock License",
- "licenseId": "xlock",
- "seeAlso": [
- "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OLDAP-1.3.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json",
- "referenceNumber": 501,
- "name": "Open LDAP Public License v1.3",
- "licenseId": "OLDAP-1.3",
- "seeAlso": [
- "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/HPND.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/HPND.json",
- "referenceNumber": 502,
- "name": "Historical Permission Notice and Disclaimer",
- "licenseId": "HPND",
- "seeAlso": [
- "https://opensource.org/licenses/HPND"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Baekmuk.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Baekmuk.json",
- "referenceNumber": 503,
- "name": "Baekmuk License",
- "licenseId": "Baekmuk",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/AGPL-3.0-only.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json",
- "referenceNumber": 504,
- "name": "GNU Affero General Public License v3.0 only",
- "licenseId": "AGPL-3.0-only",
- "seeAlso": [
- "https://www.gnu.org/licenses/agpl.txt",
- "https://opensource.org/licenses/AGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Nunit.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/Nunit.json",
- "referenceNumber": 505,
- "name": "Nunit License",
- "licenseId": "Nunit",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Nunit"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json",
- "referenceNumber": 506,
- "name": "Community Data License Agreement Sharing 1.0",
- "licenseId": "CDLA-Sharing-1.0",
- "seeAlso": [
- "https://cdla.io/sharing-1-0"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/OGL-UK-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json",
- "referenceNumber": 507,
- "name": "Open Government Licence v3.0",
- "licenseId": "OGL-UK-3.0",
- "seeAlso": [
- "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Noweb.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Noweb.json",
- "referenceNumber": 508,
- "name": "Noweb License",
- "licenseId": "Noweb",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Noweb"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Eurosym.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Eurosym.json",
- "referenceNumber": 509,
- "name": "Eurosym License",
- "licenseId": "Eurosym",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/Eurosym"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json",
- "referenceNumber": 510,
- "name": "Creative Commons Attribution Non Commercial 3.0 Unported",
- "licenseId": "CC-BY-NC-3.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc/3.0/legalcode"
- ],
- "isOsiApproved": false,
- "isFsfLibre": false
- },
- {
- "reference": "https://spdx.org/licenses/CECILL-2.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json",
- "referenceNumber": 511,
- "name": "CeCILL Free Software License Agreement v2.1",
- "licenseId": "CECILL-2.1",
- "seeAlso": [
- "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json",
- "referenceNumber": 512,
- "name": "TAPR Open Hardware License v1.0",
- "licenseId": "TAPR-OHL-1.0",
- "seeAlso": [
- "https://www.tapr.org/OHL"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json",
- "referenceNumber": 513,
- "name": "Creative Commons Attribution Share Alike 3.0 Germany",
- "licenseId": "CC-BY-SA-3.0-DE",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json",
- "referenceNumber": 514,
- "name": "Creative Commons Attribution 3.0 Netherlands",
- "licenseId": "CC-BY-3.0-NL",
- "seeAlso": [
- "https://creativecommons.org/licenses/by/3.0/nl/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/SAX-PD.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SAX-PD.json",
- "referenceNumber": 515,
- "name": "Sax Public Domain Notice",
- "licenseId": "SAX-PD",
- "seeAlso": [
- "http://www.saxproject.org/copying.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/FreeBSD-DOC.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json",
- "referenceNumber": 516,
- "name": "FreeBSD Documentation License",
- "licenseId": "FreeBSD-DOC",
- "seeAlso": [
- "https://www.freebsd.org/copyright/freebsd-doc-license/"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-1-Clause.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json",
- "referenceNumber": 517,
- "name": "BSD 1-Clause License",
- "licenseId": "BSD-1-Clause",
- "seeAlso": [
- "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json",
- "referenceNumber": 518,
- "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
- "licenseId": "CC-BY-NC-ND-4.0",
- "seeAlso": [
- "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LPPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json",
- "referenceNumber": 519,
- "name": "LaTeX Project Public License v1.1",
- "licenseId": "LPPL-1.1",
- "seeAlso": [
- "http://www.latex-project.org/lppl/lppl-1-1.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Interbase-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json",
- "referenceNumber": 520,
- "name": "Interbase Public License v1.0",
- "licenseId": "Interbase-1.0",
- "seeAlso": [
- "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Martin-Birgmeier.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json",
- "referenceNumber": 521,
- "name": "Martin Birgmeier License",
- "licenseId": "Martin-Birgmeier",
- "seeAlso": [
- "https://github.com/Perl/perl5/blob/blead/util.c#L6136"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json",
- "referenceNumber": 522,
- "name": "BSD 3-Clause Clear License",
- "licenseId": "BSD-3-Clause-Clear",
- "seeAlso": [
- "http://labs.metacarta.com/license-explanation.html#license"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/SimPL-2.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json",
- "referenceNumber": 523,
- "name": "Simple Public License 2.0",
- "licenseId": "SimPL-2.0",
- "seeAlso": [
- "https://opensource.org/licenses/SimPL-2.0"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/mpich2.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/mpich2.json",
- "referenceNumber": 524,
- "name": "mpich2 License",
- "licenseId": "mpich2",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing/MIT"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Apache-1.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json",
- "referenceNumber": 525,
- "name": "Apache License 1.0",
- "licenseId": "Apache-1.0",
- "seeAlso": [
- "http://www.apache.org/licenses/LICENSE-1.0"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/EUPL-1.1.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json",
- "referenceNumber": 526,
- "name": "European Union Public License 1.1",
- "licenseId": "EUPL-1.1",
- "seeAlso": [
- "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl",
- "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf",
- "https://opensource.org/licenses/EUPL-1.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json",
- "referenceNumber": 527,
- "name": "BSD 3-Clause Modification",
- "licenseId": "BSD-3-Clause-Modification",
- "seeAlso": [
- "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-3.0.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json",
- "referenceNumber": 528,
- "name": "GNU Lesser General Public License v3.0 only",
- "licenseId": "LGPL-3.0",
- "seeAlso": [
- "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
- "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
- "https://opensource.org/licenses/LGPL-3.0"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/LGPL-2.1.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json",
- "referenceNumber": 529,
- "name": "GNU Lesser General Public License v2.1 only",
- "licenseId": "LGPL-2.1",
- "seeAlso": [
- "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
- "https://opensource.org/licenses/LGPL-2.1"
- ],
- "isOsiApproved": true,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json",
- "referenceNumber": 530,
- "name": "Artistic License 1.0 (Perl)",
- "licenseId": "Artistic-1.0-Perl",
- "seeAlso": [
- "http://dev.perl.org/licenses/artistic.html"
- ],
- "isOsiApproved": true
- },
- {
- "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json",
- "referenceNumber": 531,
- "name": "BSD 2-Clause with views sentence",
- "licenseId": "BSD-2-Clause-Views",
- "seeAlso": [
- "http://www.freebsd.org/copyright/freebsd-license.html",
- "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh",
- "https://github.com/protegeproject/protege/blob/master/license.txt"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/gSOAP-1.3b.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json",
- "referenceNumber": 532,
- "name": "gSOAP Public License v1.3b",
- "licenseId": "gSOAP-1.3b",
- "seeAlso": [
- "http://www.cs.fsu.edu/~engelen/license.html"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/Minpack.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/Minpack.json",
- "referenceNumber": 533,
- "name": "Minpack License",
- "licenseId": "Minpack",
- "seeAlso": [
- "http://www.netlib.org/minpack/disclaimer",
- "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK"
- ],
- "isOsiApproved": false
- },
- {
- "reference": "https://spdx.org/licenses/StandardML-NJ.html",
- "isDeprecatedLicenseId": true,
- "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json",
- "referenceNumber": 534,
- "name": "Standard ML of New Jersey License",
- "licenseId": "StandardML-NJ",
- "seeAlso": [
- "https://www.smlnj.org/license.html"
- ],
- "isOsiApproved": false,
- "isFsfLibre": true
- },
- {
- "reference": "https://spdx.org/licenses/NPOSL-3.0.html",
- "isDeprecatedLicenseId": false,
- "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json",
- "referenceNumber": 535,
- "name": "Non-Profit Open Software License 3.0",
- "licenseId": "NPOSL-3.0",
- "seeAlso": [
- "https://opensource.org/licenses/NOSL3.0"
- ],
- "isOsiApproved": true
- }
- ],
- "releaseDate": "2023-02-17"
-}
\ No newline at end of file
diff --git a/internal/spdxlicense/license_list.go b/internal/spdxlicense/license_list.go
index 18e2a88ca..05a78d95c 100644
--- a/internal/spdxlicense/license_list.go
+++ b/internal/spdxlicense/license_list.go
@@ -1,9 +1,9 @@
// Code generated by go generate; DO NOT EDIT.
-// This file was generated by robots at 2024-05-23 08:47:23.204981 -0400 EDT m=+0.050881068
+// This file was generated by robots at 2024-08-20 11:33:49.349625 -0400 EDT m=+0.383911876
// using data from https://spdx.org/licenses/licenses.json
package spdxlicense
-const Version = "3.24.0"
+const Version = "3.25.0"
var licenseIDs = map[string]string{
"0bsd": "0BSD",
@@ -501,6 +501,8 @@ var licenseIDs = map[string]string{
"dldezero2.0": "DL-DE-ZERO-2.0",
"dldezero2.0.0": "DL-DE-ZERO-2.0",
"doc": "DOC",
+ "docbookschema": "DocBook-Schema",
+ "docbookxml": "DocBook-XML",
"dotseqn": "Dotseqn",
"drl1": "DRL-1.0",
"drl1.0": "DRL-1.0",
@@ -714,6 +716,7 @@ var licenseIDs = map[string]string{
"gutmann": "Gutmann",
"haskellreport": "HaskellReport",
"hdparm": "hdparm",
+ "hidapi": "HIDAPI",
"hippocratic2": "Hippocratic-2.1",
"hippocratic2.1": "Hippocratic-2.1",
"hippocratic2.1.0": "Hippocratic-2.1",
@@ -740,6 +743,7 @@ var licenseIDs = map[string]string{
"hpndmarkuskuhn": "HPND-Markus-Kuhn",
"hpndmerchantabilityvariant": "HPND-merchantability-variant",
"hpndmitdisclaimer": "HPND-MIT-disclaimer",
+ "hpndnetrek": "HPND-Netrek",
"hpndpbmplus": "HPND-Pbmplus",
"hpndsellmitdisclaimerxserver": "HPND-sell-MIT-disclaimer-xserver",
"hpndsellregexpr": "HPND-sell-regexpr",
@@ -1165,6 +1169,7 @@ var licenseIDs = map[string]string{
"rsamd": "RSA-MD",
"rscpl": "RSCPL",
"ruby": "Ruby",
+ "rubypty": "Ruby-pty",
"saxpath": "Saxpath",
"saxpd": "SAX-PD",
"saxpd2": "SAX-PD-2.0",
@@ -1265,6 +1270,9 @@ var licenseIDs = map[string]string{
"tuberlin2": "TU-Berlin-2.0",
"tuberlin2.0": "TU-Berlin-2.0",
"tuberlin2.0.0": "TU-Berlin-2.0",
+ "ubuntufont1": "Ubuntu-font-1.0",
+ "ubuntufont1.0": "Ubuntu-font-1.0",
+ "ubuntufont1.0.0": "Ubuntu-font-1.0",
"ucar": "UCAR",
"ucl1": "UCL-1.0",
"ucl1.0": "UCL-1.0",
@@ -1315,8 +1323,11 @@ var licenseIDs = map[string]string{
"x11.0": "X11",
"x11.0.0": "X11",
"x11.0.0distributemodificationsvariant": "X11-distribute-modifications-variant",
+ "x11.0.0swapped": "X11-swapped",
"x11.0distributemodificationsvariant": "X11-distribute-modifications-variant",
+ "x11.0swapped": "X11-swapped",
"x11distributemodificationsvariant": "X11-distribute-modifications-variant",
+ "x11swapped": "X11-swapped",
"xdebug1": "Xdebug-1.03",
"xdebug1.03": "Xdebug-1.03",
"xdebug1.03.0": "Xdebug-1.03",
diff --git a/internal/spdxlicense/license_list_test.go b/internal/spdxlicense/license_list_test.go
deleted file mode 100644
index a0723cb59..000000000
--- a/internal/spdxlicense/license_list_test.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package spdxlicense
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestLicenceListIDs(t *testing.T) {
- // do a sanity check on the generated data
- assert.Equal(t, "0BSD", licenseIDs["0bsd"])
- assert.Equal(t, "ZPL-2.1", licenseIDs["zpl2.1"])
- assert.Equal(t, "GPL-2.0-only", licenseIDs["gpl2"])
- assert.Equal(t, "GPL-2.0-or-later", licenseIDs["gpl2+"])
- assert.Equal(t, "GFDL-1.2-or-later", licenseIDs["gfdl1.2+"])
- assert.NotEmpty(t, Version)
-}
diff --git a/internal/spdxlicense/license_test.go b/internal/spdxlicense/license_test.go
deleted file mode 100644
index e1444a62c..000000000
--- a/internal/spdxlicense/license_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package spdxlicense
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestSPDXIDRecognition(t *testing.T) {
- var tests = []struct {
- shortName string
- id string
- found bool
- }{
- {
- "GPL-1-only",
- "GPL-1.0-only",
- true,
- },
- {
- "gpl1",
- "GPL-1.0-only",
- true,
- },
- {
- "gpl-1",
- "GPL-1.0-only",
- true,
- },
- {
- "GPL-2",
- "GPL-2.0-only",
- true,
- },
- {
- "GPL-2+",
- "GPL-2.0-or-later",
- true,
- },
- {
- "GPL-3.0.0-or-later",
- "GPL-3.0-or-later",
- true,
- },
- {
- "GPL-3-with-autoconf-exception",
- "GPL-3.0-with-autoconf-exception",
- true,
- },
- {
- "CC-by-nc-3-de",
- "CC-BY-NC-3.0-DE",
- true,
- },
- // the below few cases are NOT expected, however, seem unavoidable given the current approach
- {
- "spencer-86.0.0",
- "Spencer-86",
- true,
- },
- {
- "unicode-dfs-2015.0.0",
- "Unicode-DFS-2015",
- true,
- },
- {
- "Unknown",
- "",
- false,
- },
- {
- " ",
- "",
- false,
- },
- }
-
- for _, test := range tests {
- t.Run(test.shortName, func(t *testing.T) {
- value, exists := ID(test.shortName)
- assert.Equal(t, test.found, exists)
- assert.Equal(t, test.id, value)
- })
- }
-}
diff --git a/internal/string_helpers_test.go b/internal/string_helpers_test.go
deleted file mode 100644
index 401b28dc3..000000000
--- a/internal/string_helpers_test.go
+++ /dev/null
@@ -1,140 +0,0 @@
-package internal
-
-import (
- "strconv"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestHasAnyOfPrefixes(t *testing.T) {
- tests := []struct {
- name string
- input string
- prefixes []string
- expected bool
- }{
- {
- name: "go case",
- input: "this has something",
- prefixes: []string{
- "this has",
- "that does not have",
- },
- expected: true,
- },
- {
- name: "no match",
- input: "this has something",
- prefixes: []string{
- "this DOES NOT has",
- "that does not have",
- },
- expected: false,
- },
- {
- name: "empty",
- input: "this has something",
- prefixes: []string{},
- expected: false,
- },
- {
- name: "positive match last",
- input: "this has something",
- prefixes: []string{
- "that does not have",
- "this has",
- },
- expected: true,
- },
- {
- name: "empty input",
- input: "",
- prefixes: []string{
- "that does not have",
- "this has",
- },
- expected: false,
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- assert.Equal(t, test.expected, HasAnyOfPrefixes(test.input, test.prefixes...))
- })
- }
-}
-
-func TestTruncateMiddleEllipsis(t *testing.T) {
- tests := []struct {
- input string
- len int
- expected string
- }{
- {
- input: "nobody expects the spanish inquisition",
- len: 39,
- expected: "nobody expects the spanish inquisition",
- },
- {
- input: "nobody expects the spanish inquisition",
- len: 30,
- expected: "nobody expects ...ish inquisition",
- },
- {
- input: "nobody expects the spanish inquisition",
- len: 38,
- expected: "nobody expects the spanish inquisition",
- },
- {
- input: "",
- len: 30,
- expected: "",
- },
- {
- input: "",
- len: 0,
- expected: "",
- },
- }
-
- for _, test := range tests {
- t.Run(test.input+":"+strconv.Itoa(test.len), func(t *testing.T) {
- assert.Equal(t, test.expected, TruncateMiddleEllipsis(test.input, test.len))
- })
- }
-}
-
-func TestSplitAny(t *testing.T) {
-
- tests := []struct {
- name string
- input string
- fields string
- want []string
- }{
- {
- name: "simple",
- input: "a,b,c",
- fields: ",",
- want: []string{"a", "b", "c"},
- },
- {
- name: "empty",
- input: "",
- fields: ",",
- want: []string{""},
- },
- {
- name: "multiple separators",
- input: "a,b\nc:d",
- fields: ",:\n",
- want: []string{"a", "b", "c", "d"},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, SplitAny(tt.input, tt.fields))
- })
- }
-}
diff --git a/internal/stringset.go b/internal/stringset.go
deleted file mode 100644
index 1d44652ec..000000000
--- a/internal/stringset.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package internal
-
-import "sort"
-
-// StringSet represents a set of string types.
-type StringSet map[string]struct{}
-
-// NewStringSet creates a new empty StringSet.
-func NewStringSet(start ...string) StringSet {
- ret := make(StringSet)
- for _, s := range start {
- ret.Add(s)
- }
- return ret
-}
-
-// Add a string to the set.
-func (s StringSet) Add(i ...string) {
- for _, str := range i {
- s[str] = struct{}{}
- }
-}
-
-// Remove a string from the set.
-func (s StringSet) Remove(i string) {
- delete(s, i)
-}
-
-// Contains indicates if the given string is contained within the set.
-func (s StringSet) Contains(i string) bool {
- _, ok := s[i]
- return ok
-}
-
-// ToSlice returns a sorted slice of strings that are contained within the set.
-func (s StringSet) ToSlice() []string {
- ret := make([]string, len(s))
- idx := 0
- for v := range s {
- ret[idx] = v
- idx++
- }
- sort.Strings(ret)
- return ret
-}
-
-func (s StringSet) Equals(o StringSet) bool {
- if len(s) != len(o) {
- return false
- }
- for k := range s {
- if !o.Contains(k) {
- return false
- }
- }
- return true
-}
-
-func (s StringSet) Empty() bool {
- return len(s) < 1
-}
diff --git a/internal/task/executor.go b/internal/task/executor.go
index 5ba48b58a..0d8754b9d 100644
--- a/internal/task/executor.go
+++ b/internal/task/executor.go
@@ -5,12 +5,16 @@ import (
"fmt"
"runtime/debug"
"sync"
+ "time"
"github.com/hashicorp/go-multierror"
+ "github.com/anchore/syft/internal/log"
"github.com/anchore/syft/internal/sbomsync"
+ "github.com/anchore/syft/internal/unknown"
"github.com/anchore/syft/syft/event/monitor"
"github.com/anchore/syft/syft/file"
+ "github.com/anchore/syft/syft/sbom"
)
type Executor struct {
@@ -33,6 +37,12 @@ func NewTaskExecutor(tasks []Task, numWorkers int) *Executor {
}
func (p *Executor) Execute(ctx context.Context, resolver file.Resolver, s sbomsync.Builder, prog *monitor.CatalogerTaskProgress) error {
+ var lock sync.Mutex
+ withLock := func(fn func()) {
+ lock.Lock()
+ defer lock.Unlock()
+ fn()
+ }
var errs error
wg := &sync.WaitGroup{}
for i := 0; i < p.numWorkers; i++ {
@@ -46,9 +56,16 @@ func (p *Executor) Execute(ctx context.Context, resolver file.Resolver, s sbomsy
return
}
- if err := runTaskSafely(ctx, tsk, resolver, s); err != nil {
- errs = multierror.Append(errs, fmt.Errorf("failed to run task: %w", err))
- prog.SetError(err)
+ err := runTaskSafely(ctx, tsk, resolver, s)
+ unknowns, err := unknown.ExtractCoordinateErrors(err)
+ if len(unknowns) > 0 {
+ appendUnknowns(s, tsk.Name(), unknowns)
+ }
+ if err != nil {
+ withLock(func() {
+ errs = multierror.Append(errs, fmt.Errorf("failed to run task: %w", err))
+ prog.SetError(err)
+ })
}
prog.Increment()
}
@@ -60,6 +77,19 @@ func (p *Executor) Execute(ctx context.Context, resolver file.Resolver, s sbomsy
return errs
}
+func appendUnknowns(builder sbomsync.Builder, taskName string, unknowns []unknown.CoordinateError) {
+ if accessor, ok := builder.(sbomsync.Accessor); ok {
+ accessor.WriteToSBOM(func(sb *sbom.SBOM) {
+ for _, u := range unknowns {
+ if sb.Artifacts.Unknowns == nil {
+ sb.Artifacts.Unknowns = map[file.Coordinates][]string{}
+ }
+ sb.Artifacts.Unknowns[u.Coordinates] = append(sb.Artifacts.Unknowns[u.Coordinates], formatUnknown(u.Reason.Error(), taskName))
+ }
+ })
+ }
+}
+
func runTaskSafely(ctx context.Context, t Task, resolver file.Resolver, s sbomsync.Builder) (err error) {
// handle individual cataloger panics
defer func() {
@@ -68,5 +98,8 @@ func runTaskSafely(ctx context.Context, t Task, resolver file.Resolver, s sbomsy
}
}()
- return t.Execute(ctx, resolver, s)
+ start := time.Now()
+ res := t.Execute(ctx, resolver, s)
+ log.WithFields("task", t.Name(), "elapsed", time.Since(start)).Info("task completed")
+ return res
}
diff --git a/internal/task/executor_test.go b/internal/task/executor_test.go
deleted file mode 100644
index 5da1a0f40..000000000
--- a/internal/task/executor_test.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package task
-
-import (
- "context"
- "testing"
-
- "github.com/stretchr/testify/require"
- "github.com/wagoodman/go-progress"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/syft/event/monitor"
- "github.com/anchore/syft/syft/file"
-)
-
-func Test_TaskExecutor_PanicHandling(t *testing.T) {
- tsk := NewTask("panicking-cataloger", func(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {
- panic("something bad happened")
- })
- ex := NewTaskExecutor([]Task{tsk}, 1)
-
- err := ex.Execute(context.Background(), nil, nil, &monitor.CatalogerTaskProgress{
- Manual: progress.NewManual(-1),
- })
-
- require.Error(t, err)
- require.Contains(t, err.Error(), "executor_test.go")
-}
diff --git a/internal/task/expression_test.go b/internal/task/expression_test.go
deleted file mode 100644
index e1a97ab22..000000000
--- a/internal/task/expression_test.go
+++ /dev/null
@@ -1,242 +0,0 @@
-package task
-
-import (
- "sort"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
-)
-
-func Test_newExpressionsFromSelectionRequest(t *testing.T) {
- ts := []Task{
- dummyTask("1", "t1"),
- dummyTask("2", "t2"),
- dummyTask("3", "t3"),
- dummyTask("4", "t4"),
- dummyTask("5"),
- dummyTask("6"),
- }
-
- nc := newExpressionContext(ts)
-
- var tests = []struct {
- name string
- basis []string
- expressions []string
- expected Expressions
- expectedErrors []error
- }{
- {
- name: "empty input",
- basis: []string{},
- expressions: []string{},
- expected: nil,
- },
- {
- name: "valid single set operation",
- basis: []string{"1"},
- expressions: []string{},
- expected: []Expression{
- {Operation: SetOperation, Operand: "1"},
- },
- },
- {
- name: "add operation",
- basis: []string{},
- expressions: []string{"+4"},
- expected: []Expression{
- {Operation: AddOperation, Operand: "4"},
- },
- },
- {
- name: "remove operation",
- basis: []string{},
- expressions: []string{"-3"},
- expected: []Expression{
- {Operation: RemoveOperation, Operand: "3"},
- },
- },
- {
- name: "select operation",
- basis: []string{},
- expressions: []string{"t2"},
- expected: []Expression{
- {Operation: SubSelectOperation, Operand: "t2"},
- },
- },
- {
- name: "mixed operations order",
- basis: []string{"1"},
- expressions: []string{"+4", "-3", "t2"},
- expected: []Expression{
- // note they are sorted by operation
- {Operation: SetOperation, Operand: "1"},
- {Operation: SubSelectOperation, Operand: "t2"},
- {Operation: RemoveOperation, Operand: "3"},
- {Operation: AddOperation, Operand: "4"},
- },
- },
- {
- name: "invalid token",
- basis: []string{"!1"},
- expressions: []string{},
- expected: nil,
- expectedErrors: []error{ErrInvalidToken},
- },
- {
- name: "use + operator in basis",
- basis: []string{"+1"},
- expressions: []string{},
- expected: nil,
- expectedErrors: []error{ErrInvalidToken},
- },
- {
- name: "use - operator in basis",
- basis: []string{"-1"},
- expressions: []string{},
- expected: nil,
- expectedErrors: []error{ErrInvalidToken},
- },
- {
- name: "invalid name",
- basis: []string{},
- expressions: []string{"+t1"},
- expected: nil,
- expectedErrors: []error{ErrTagsNotAllowed},
- },
- {
- name: "invalid tag",
- basis: []string{},
- expressions: []string{"1"},
- expected: nil,
- expectedErrors: []error{ErrNamesNotAllowed},
- },
- {
- name: "invalid use of all",
- basis: []string{},
- expressions: []string{"all"},
- expected: nil,
- expectedErrors: []error{ErrAllNotAllowed},
- },
- {
- name: "allow all operand",
- basis: []string{"all"},
- expressions: []string{},
- expected: []Expression{
- // note they are sorted by operation
- {Operation: SetOperation, Operand: "all"},
- },
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
-
- req := pkgcataloging.NewSelectionRequest().WithDefaults(tt.basis...).WithExpression(tt.expressions...)
-
- result := newExpressionsFromSelectionRequest(nc, req)
- if tt.expectedErrors != nil {
- errs := result.Errors()
- require.Len(t, errs, len(tt.expectedErrors))
- for i, err := range tt.expectedErrors {
- var target ErrInvalidExpression
- require.ErrorAs(t, errs[i], &target)
- assert.Equal(t, err, target.Err)
- }
- } else {
- assert.Empty(t, result.Errors())
- assert.Equal(t, tt.expected, result)
- }
- })
- }
-}
-
-func Test_expressionNodes_sort(t *testing.T) {
- tests := []struct {
- name string
- subject Expressions
- want Expressions
- }{
- {
- name: "sort operations but keep token order",
- subject: []Expression{
- {
- Operation: AddOperation,
- Operand: "8",
- },
- {
- Operation: AddOperation,
- Operand: "7",
- },
- {
- Operation: RemoveOperation,
- Operand: "6",
- },
- {
- Operation: RemoveOperation,
- Operand: "5",
- },
- {
- Operation: SetOperation,
- Operand: "2",
- },
- {
- Operation: SetOperation,
- Operand: "1",
- },
- {
- Operation: SubSelectOperation,
- Operand: "4",
- },
- {
- Operation: SubSelectOperation,
- Operand: "3",
- },
- },
- want: []Expression{
- {
- Operation: SetOperation,
- Operand: "2",
- },
- {
- Operation: SetOperation,
- Operand: "1",
- },
- {
- Operation: SubSelectOperation,
- Operand: "4",
- },
- {
- Operation: SubSelectOperation,
- Operand: "3",
- },
- {
- Operation: RemoveOperation,
- Operand: "6",
- },
- {
- Operation: RemoveOperation,
- Operand: "5",
- },
- {
- Operation: AddOperation,
- Operand: "8",
- },
- {
- Operation: AddOperation,
- Operand: "7",
- },
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := tt.subject.Clone()
- sort.Sort(s)
- assert.Equal(t, tt.want, s)
- })
- }
-}
diff --git a/internal/task/file_tasks.go b/internal/task/file_tasks.go
index 857f6e423..5b6f7bbd4 100644
--- a/internal/task/file_tasks.go
+++ b/internal/task/file_tasks.go
@@ -3,7 +3,6 @@ package task
import (
"context"
"crypto"
- "fmt"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/syft/artifact"
@@ -32,15 +31,12 @@ func NewFileDigestCatalogerTask(selection file.Selection, hashers ...crypto.Hash
}
result, err := digestsCataloger.Catalog(ctx, resolver, coordinates...)
- if err != nil {
- return fmt.Errorf("unable to catalog file digests: %w", err)
- }
accessor.WriteToSBOM(func(sbom *sbom.SBOM) {
sbom.Artifacts.FileDigests = result
})
- return nil
+ return err
}
return NewTask("file-digest-cataloger", fn)
@@ -62,15 +58,12 @@ func NewFileMetadataCatalogerTask(selection file.Selection) Task {
}
result, err := metadataCataloger.Catalog(ctx, resolver, coordinates...)
- if err != nil {
- return err
- }
accessor.WriteToSBOM(func(sbom *sbom.SBOM) {
sbom.Artifacts.FileMetadata = result
})
- return nil
+ return err
}
return NewTask("file-metadata-cataloger", fn)
@@ -87,15 +80,12 @@ func NewFileContentCatalogerTask(cfg filecontent.Config) Task {
accessor := builder.(sbomsync.Accessor)
result, err := cat.Catalog(ctx, resolver)
- if err != nil {
- return err
- }
accessor.WriteToSBOM(func(sbom *sbom.SBOM) {
sbom.Artifacts.FileContents = result
})
- return nil
+ return err
}
return NewTask("file-content-cataloger", fn)
@@ -112,15 +102,12 @@ func NewExecutableCatalogerTask(selection file.Selection, cfg executable.Config)
accessor := builder.(sbomsync.Accessor)
result, err := cat.Catalog(resolver)
- if err != nil {
- return err
- }
accessor.WriteToSBOM(func(sbom *sbom.SBOM) {
sbom.Artifacts.Executables = result
})
- return nil
+ return err
}
return NewTask("file-executable-cataloger", fn)
@@ -134,9 +121,10 @@ func coordinatesForSelection(selection file.Selection, accessor sbomsync.Accesso
}
if selection == file.FilesOwnedByPackageSelection {
- var coordinates []file.Coordinates
+ var coordinates file.CoordinateSet
accessor.ReadFromSBOM(func(sbom *sbom.SBOM) {
+ // get any file coordinates that are owned by a package
for _, r := range sbom.Relationships {
if r.Type != artifact.ContainsRelationship {
continue
@@ -145,16 +133,23 @@ func coordinatesForSelection(selection file.Selection, accessor sbomsync.Accesso
continue
}
if c, ok := r.To.(file.Coordinates); ok {
- coordinates = append(coordinates, c)
+ coordinates.Add(c)
}
}
+
+ // get any file coordinates referenced by a package directly
+ for p := range sbom.Artifacts.Packages.Enumerate() {
+ coordinates.Add(p.Locations.CoordinateSet().ToSlice()...)
+ }
})
- if len(coordinates) == 0 {
+ coords := coordinates.ToSlice()
+
+ if len(coords) == 0 {
return nil, false
}
- return coordinates, true
+ return coords, true
}
return nil, false
diff --git a/internal/task/file_tasks_test.go b/internal/task/file_tasks_test.go
deleted file mode 100644
index b24e7e254..000000000
--- a/internal/task/file_tasks_test.go
+++ /dev/null
@@ -1,104 +0,0 @@
-package task
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/sbom"
-)
-
-func Test_coordinatesForSelection(t *testing.T) {
-
- tests := []struct {
- name string
- selection file.Selection
- sbom *sbom.SBOM
- files []file.Coordinates
- ok bool
- }{
- {
- name: "all files",
- selection: file.AllFilesSelection,
- files: nil,
- ok: true,
- },
- {
- name: "no files",
- selection: file.NoFilesSelection,
- files: nil,
- ok: false,
- },
- {
- name: "specific files with hits",
- selection: file.FilesOwnedByPackageSelection,
- sbom: &sbom.SBOM{
- Relationships: []artifact.Relationship{
- {
- From: pkg.Package{},
- To: file.Coordinates{
- RealPath: "path",
- FileSystemID: "fs",
- },
- Type: artifact.ContainsRelationship,
- },
- },
- },
- files: []file.Coordinates{
- {
- RealPath: "path",
- FileSystemID: "fs",
- },
- },
- ok: true,
- },
- {
- name: "specific files no hits (by wrong type)",
- selection: file.FilesOwnedByPackageSelection,
- sbom: &sbom.SBOM{
- Relationships: []artifact.Relationship{
- {
- From: pkg.Package{},
- To: file.Coordinates{
- RealPath: "path",
- FileSystemID: "fs",
- },
- // wrong type
- Type: artifact.DependencyOfRelationship,
- },
- },
- },
- files: nil,
- ok: false,
- },
- {
- name: "specific files no hits (by wrong node types)",
- selection: file.FilesOwnedByPackageSelection,
- sbom: &sbom.SBOM{
- Relationships: []artifact.Relationship{
- {
- From: file.Coordinates{}, // wrong type
- To: file.Coordinates{
- RealPath: "path",
- FileSystemID: "fs",
- },
- Type: artifact.ContainsRelationship,
- },
- },
- },
- files: nil,
- ok: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- files, ok := coordinatesForSelection(tt.selection, sbomsync.NewBuilder(tt.sbom).(sbomsync.Accessor))
- assert.Equal(t, tt.files, files)
- assert.Equal(t, tt.ok, ok)
- })
- }
-}
diff --git a/internal/task/package_task_factory.go b/internal/task/package_task_factory.go
index 0ee59810f..5a65a29f0 100644
--- a/internal/task/package_task_factory.go
+++ b/internal/task/package_task_factory.go
@@ -11,14 +11,16 @@ import (
"github.com/anchore/syft/internal/bus"
"github.com/anchore/syft/internal/log"
+ "github.com/anchore/syft/internal/relationship"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/syft/artifact"
"github.com/anchore/syft/syft/cataloging"
"github.com/anchore/syft/syft/cataloging/pkgcataloging"
+ "github.com/anchore/syft/syft/cpe"
"github.com/anchore/syft/syft/event/monitor"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/pkg/cataloger/common/cpe"
+ cpeutils "github.com/anchore/syft/syft/pkg/cataloger/common/cpe"
)
type packageTaskFactory func(cfg CatalogingFactoryConfig) Task
@@ -26,6 +28,7 @@ type packageTaskFactory func(cfg CatalogingFactoryConfig) Task
type PackageTaskFactories []packageTaskFactory
type CatalogingFactoryConfig struct {
+ ComplianceConfig cataloging.ComplianceConfig
SearchConfig cataloging.SearchConfig
RelationshipsConfig cataloging.RelationshipsConfig
DataGenerationConfig cataloging.DataGenerationConfig
@@ -34,6 +37,7 @@ type CatalogingFactoryConfig struct {
func DefaultCatalogingFactoryConfig() CatalogingFactoryConfig {
return CatalogingFactoryConfig{
+ ComplianceConfig: cataloging.DefaultComplianceConfig(),
SearchConfig: cataloging.DefaultSearchConfig(),
RelationshipsConfig: cataloging.DefaultRelationshipsConfig(),
DataGenerationConfig: cataloging.DefaultDataGenerationConfig(),
@@ -81,8 +85,6 @@ func (f PackageTaskFactories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error)
}
// NewPackageTask creates a Task function for a generic pkg.Cataloger, honoring the common configuration options.
-//
-//nolint:funlen
func NewPackageTask(cfg CatalogingFactoryConfig, c pkg.Cataloger, tags ...string) Task {
fn := func(ctx context.Context, resolver file.Resolver, sbom sbomsync.Builder) error {
catalogerName := c.Name()
@@ -101,59 +103,166 @@ func NewPackageTask(cfg CatalogingFactoryConfig, c pkg.Cataloger, tags ...string
t := bus.StartCatalogerTask(info, -1, "")
pkgs, relationships, err := c.Catalog(ctx, resolver)
- if err != nil {
- return fmt.Errorf("unable to catalog packages with %q: %w", c.Name(), err)
- }
-
- log.WithFields("cataloger", c.Name()).Debugf("discovered %d packages", len(pkgs))
-
- for i, p := range pkgs {
- if cfg.DataGenerationConfig.GenerateCPEs {
- // generate CPEs (note: this is excluded from package ID, so is safe to mutate)
- // we might have binary classified CPE already with the package so we want to append here
- dictionaryCPEs, ok := cpe.DictionaryFind(p)
- if ok {
- log.Tracef("used CPE dictionary to find CPEs for %s package %q: %s", p.Type, p.Name, dictionaryCPEs)
- p.CPEs = append(p.CPEs, dictionaryCPEs...)
- } else {
- p.CPEs = append(p.CPEs, cpe.Generate(p)...)
- }
- }
- // if we were not able to identify the language we have an opportunity
- // to try and get this value from the PURL. Worst case we assert that
- // we could not identify the language at either stage and set UnknownLanguage
- if p.Language == "" {
- p.Language = pkg.LanguageFromPURL(p.PURL)
- }
+ log.WithFields("cataloger", catalogerName).Debugf("discovered %d packages", len(pkgs))
- if cfg.RelationshipsConfig.PackageFileOwnership {
- // create file-to-package relationships for files owned by the package
- owningRelationships, err := packageFileOwnershipRelationships(p, resolver)
- if err != nil {
- log.Warnf("unable to create any package-file relationships for package name=%q type=%q: %w", p.Name, p.Type, err)
- } else {
- relationships = append(relationships, owningRelationships...)
- }
- }
+ pkgs, relationships = finalizePkgCatalogerResults(cfg, resolver, catalogerName, pkgs, relationships)
- pkgs[i] = p
- }
+ pkgs, relationships = applyCompliance(cfg.ComplianceConfig, pkgs, relationships)
sbom.AddPackages(pkgs...)
sbom.AddRelationships(relationships...)
t.Add(int64(len(pkgs)))
t.SetCompleted()
- log.WithFields("name", c.Name()).Trace("package cataloger completed")
+ log.WithFields("name", catalogerName).Trace("package cataloger completed")
- return nil
+ return err
}
tags = append(tags, pkgcataloging.PackageTag)
return NewTask(c.Name(), fn, tags...)
}
+func finalizePkgCatalogerResults(cfg CatalogingFactoryConfig, resolver file.PathResolver, catalogerName string, pkgs []pkg.Package, relationships []artifact.Relationship) ([]pkg.Package, []artifact.Relationship) {
+ for i, p := range pkgs {
+ if p.FoundBy == "" {
+ p.FoundBy = catalogerName
+ }
+
+ if cfg.DataGenerationConfig.GenerateCPEs && !hasAuthoritativeCPE(p.CPEs) {
+ // generate CPEs (note: this is excluded from package ID, so is safe to mutate)
+ // we might have binary classified CPE already with the package so we want to append here
+ dictionaryCPEs, ok := cpeutils.DictionaryFind(p)
+ if ok {
+ log.Tracef("used CPE dictionary to find CPEs for %s package %q: %s", p.Type, p.Name, dictionaryCPEs)
+ p.CPEs = append(p.CPEs, dictionaryCPEs...)
+ } else {
+ p.CPEs = append(p.CPEs, cpeutils.Generate(p)...)
+ }
+ }
+
+ // if we were not able to identify the language we have an opportunity
+ // to try and get this value from the PURL. Worst case we assert that
+ // we could not identify the language at either stage and set UnknownLanguage
+ if p.Language == "" {
+ p.Language = pkg.LanguageFromPURL(p.PURL)
+ }
+
+ if cfg.RelationshipsConfig.PackageFileOwnership {
+ // create file-to-package relationships for files owned by the package
+ owningRelationships, err := packageFileOwnershipRelationships(p, resolver)
+ if err != nil {
+ log.Warnf("unable to create any package-file relationships for package name=%q type=%q: %v", p.Name, p.Type, err)
+ } else {
+ relationships = append(relationships, owningRelationships...)
+ }
+ }
+
+ pkgs[i] = p
+ }
+ return pkgs, relationships
+}
+
+type packageReplacement struct {
+ original artifact.ID
+ pkg pkg.Package
+}
+
+func applyCompliance(cfg cataloging.ComplianceConfig, pkgs []pkg.Package, relationships []artifact.Relationship) ([]pkg.Package, []artifact.Relationship) {
+ remainingPkgs, droppedPkgs, replacements := filterNonCompliantPackages(pkgs, cfg)
+
+ relIdx := relationship.NewIndex(relationships...)
+ for _, p := range droppedPkgs {
+ relIdx.Remove(p.ID())
+ }
+
+ for _, replacement := range replacements {
+ relIdx.Replace(replacement.original, replacement.pkg)
+ }
+
+ return remainingPkgs, relIdx.All()
+}
+
+func filterNonCompliantPackages(pkgs []pkg.Package, cfg cataloging.ComplianceConfig) ([]pkg.Package, []pkg.Package, []packageReplacement) {
+ var remainingPkgs, droppedPkgs []pkg.Package
+ var replacements []packageReplacement
+ for _, p := range pkgs {
+ keep, replacement := applyComplianceRules(&p, cfg)
+ if keep {
+ remainingPkgs = append(remainingPkgs, p)
+ } else {
+ droppedPkgs = append(droppedPkgs, p)
+ }
+ if replacement != nil {
+ replacements = append(replacements, *replacement)
+ }
+ }
+
+ return remainingPkgs, droppedPkgs, replacements
+}
+
+func applyComplianceRules(p *pkg.Package, cfg cataloging.ComplianceConfig) (bool, *packageReplacement) {
+ var drop bool
+ var replacement *packageReplacement
+
+ applyComplianceRule := func(value, fieldName string, action cataloging.ComplianceAction) bool {
+ if strings.TrimSpace(value) != "" {
+ return false
+ }
+
+ loc := "unknown"
+ locs := p.Locations.ToSlice()
+ if len(locs) > 0 {
+ loc = locs[0].Path()
+ }
+ switch action {
+ case cataloging.ComplianceActionDrop:
+ log.WithFields("pkg", p.String(), "location", loc).Debugf("package with missing %s, dropping", fieldName)
+ drop = true
+
+ case cataloging.ComplianceActionStub:
+ log.WithFields("pkg", p.String(), "location", loc).Debugf("package with missing %s, stubbing with default value", fieldName)
+ return true
+
+ case cataloging.ComplianceActionKeep:
+ log.WithFields("pkg", p.String(), "location", loc).Tracef("package with missing %s, taking no action", fieldName)
+ }
+ return false
+ }
+
+ ogID := p.ID()
+
+ if applyComplianceRule(p.Name, "name", cfg.MissingName) {
+ p.Name = cataloging.UnknownStubValue
+ p.SetID()
+ }
+
+ if applyComplianceRule(p.Version, "version", cfg.MissingVersion) {
+ p.Version = cataloging.UnknownStubValue
+ p.SetID()
+ }
+
+ newID := p.ID()
+ if newID != ogID {
+ replacement = &packageReplacement{
+ original: ogID,
+ pkg: *p,
+ }
+ }
+
+ return !drop, replacement
+}
+
+func hasAuthoritativeCPE(cpes []cpe.CPE) bool {
+ for _, c := range cpes {
+ if c.Source != cpe.GeneratedSource {
+ return true
+ }
+ }
+ return false
+}
+
func prettyName(s string) string {
if s == "" {
return ""
diff --git a/internal/task/package_tasks.go b/internal/task/package_tasks.go
index d9eca298f..ff7f622fb 100644
--- a/internal/task/package_tasks.go
+++ b/internal/task/package_tasks.go
@@ -21,6 +21,7 @@ import (
"github.com/anchore/syft/syft/pkg/cataloger/kernel"
"github.com/anchore/syft/syft/pkg/cataloger/lua"
"github.com/anchore/syft/syft/pkg/cataloger/nix"
+ "github.com/anchore/syft/syft/pkg/cataloger/ocaml"
"github.com/anchore/syft/syft/pkg/cataloger/php"
"github.com/anchore/syft/syft/pkg/cataloger/python"
"github.com/anchore/syft/syft/pkg/cataloger/r"
@@ -29,9 +30,25 @@ import (
"github.com/anchore/syft/syft/pkg/cataloger/rust"
sbomCataloger "github.com/anchore/syft/syft/pkg/cataloger/sbom"
"github.com/anchore/syft/syft/pkg/cataloger/swift"
+ "github.com/anchore/syft/syft/pkg/cataloger/swipl"
"github.com/anchore/syft/syft/pkg/cataloger/wordpress"
)
+const (
+ // Java ecosystem labels
+ Java = "java"
+ Maven = "maven"
+
+ // Go ecosystem labels
+ Go = "go"
+ Golang = "golang"
+
+ // JavaScript ecosystem labels
+ JavaScript = "javascript"
+ Node = "node"
+ NPM = "npm"
+)
+
//nolint:funlen
func DefaultPackageTaskFactories() PackageTaskFactories {
return []packageTaskFactory{
@@ -47,7 +64,7 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
// language-specific package installed catalogers ///////////////////////////////////////////////////////////////////////////
newSimplePackageTaskFactory(cpp.NewConanInfoCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "cpp", "conan"),
- newSimplePackageTaskFactory(javascript.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "javascript", "node"),
+ newSimplePackageTaskFactory(javascript.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, JavaScript, Node),
newSimplePackageTaskFactory(php.NewComposerInstalledCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "php", "composer"),
newSimplePackageTaskFactory(r.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "r"),
newSimplePackageTaskFactory(ruby.NewInstalledGemSpecCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "ruby", "gem", "gemspec"),
@@ -65,20 +82,20 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return golang.NewGoModuleFileCataloger(cfg.PackagesConfig.Golang)
},
- pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "go", "golang", "gomod",
+ pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Go, Golang, "gomod",
),
- newSimplePackageTaskFactory(java.NewGradleLockfileCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "java", "gradle"),
+ newSimplePackageTaskFactory(java.NewGradleLockfileCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, "gradle"),
newPackageTaskFactory(
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return java.NewPomCataloger(cfg.PackagesConfig.JavaArchive)
},
- pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "java", "maven",
+ pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, Maven,
),
newPackageTaskFactory(
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return javascript.NewLockCataloger(cfg.PackagesConfig.JavaScript)
},
- pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "javascript", "node", "npm",
+ pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, JavaScript, Node, NPM,
),
newSimplePackageTaskFactory(php.NewComposerLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "php", "composer"),
newSimplePackageTaskFactory(php.NewPeclCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, pkgcataloging.ImageTag, "php", "pecl"),
@@ -93,6 +110,8 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
newSimplePackageTaskFactory(rust.NewCargoLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "rust", "cargo"),
newSimplePackageTaskFactory(swift.NewCocoapodsCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "cocoapods"),
newSimplePackageTaskFactory(swift.NewSwiftPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "spm"),
+ newSimplePackageTaskFactory(swipl.NewSwiplPackCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swipl", "pack"),
+ newSimplePackageTaskFactory(ocaml.NewOpamPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ocaml", "opam"),
// language-specific package for both image and directory scans (but not necessarily declared) ////////////////////////////////////////
newSimplePackageTaskFactory(dotnet.NewDotnetPortableExecutableCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "dotnet", "c#", "binary"),
@@ -101,15 +120,15 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return golang.NewGoModuleBinaryCataloger(cfg.PackagesConfig.Golang)
},
- pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "go", "golang", "gomod", "binary",
+ pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Go, Golang, "gomod", "binary",
),
newPackageTaskFactory(
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return java.NewArchiveCataloger(cfg.PackagesConfig.JavaArchive)
},
- pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "java", "maven",
+ pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java, Maven,
),
- newSimplePackageTaskFactory(java.NewNativeImageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "java"),
+ newSimplePackageTaskFactory(java.NewNativeImageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java),
newSimplePackageTaskFactory(nix.NewStoreCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "nix"),
newSimplePackageTaskFactory(lua.NewPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "lua"),
@@ -123,6 +142,7 @@ func DefaultPackageTaskFactories() PackageTaskFactories {
newSimplePackageTaskFactory(binary.NewELFPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", "elf-package"),
newSimplePackageTaskFactory(githubactions.NewActionUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"),
newSimplePackageTaskFactory(githubactions.NewWorkflowUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"),
+ newSimplePackageTaskFactory(java.NewJvmDistributionCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "java", "jvm", "jdk", "jre"),
newPackageTaskFactory(
func(cfg CatalogingFactoryConfig) pkg.Cataloger {
return kernel.NewLinuxKernelCataloger(cfg.PackagesConfig.LinuxKernel)
diff --git a/internal/task/selection_test.go b/internal/task/selection_test.go
deleted file mode 100644
index d834480df..000000000
--- a/internal/task/selection_test.go
+++ /dev/null
@@ -1,369 +0,0 @@
-package task
-
-import (
- "context"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
- "github.com/anchore/syft/syft/file"
-)
-
-func dummyTask(name string, tags ...string) Task {
- return NewTask(name, func(ctx context.Context, resolver file.Resolver, sbom sbomsync.Builder) error {
- panic("not implemented")
- }, tags...)
-}
-
-// note: this test fixture does not need to be kept up to date here, but makes a great test subject
-func createDummyTasks() tasks {
- return []Task{
- // OS package installed catalogers
- dummyTask("alpm-db-cataloger", "directory", "installed", "image", "os", "alpm", "archlinux"),
- dummyTask("apk-db-cataloger", "directory", "installed", "image", "os", "apk", "alpine"),
- dummyTask("dpkg-db-cataloger", "directory", "installed", "image", "os", "dpkg", "debian"),
- dummyTask("portage-cataloger", "directory", "installed", "image", "os", "portage", "gentoo"),
- dummyTask("rpm-db-cataloger", "directory", "installed", "image", "os", "rpm", "redhat"),
-
- // OS package declared catalogers
- dummyTask("rpm-archive-cataloger", "declared", "directory", "os", "rpm", "redhat"),
-
- // language-specific package installed catalogers
- dummyTask("conan-info-cataloger", "installed", "image", "language", "cpp", "conan"),
- dummyTask("javascript-package-cataloger", "installed", "image", "language", "javascript", "node"),
- dummyTask("php-composer-installed-cataloger", "installed", "image", "language", "php", "composer"),
- dummyTask("ruby-installed-gemspec-cataloger", "installed", "image", "language", "ruby", "gem", "gemspec"),
- dummyTask("rust-cargo-lock-cataloger", "installed", "image", "language", "rust", "binary"),
-
- // language-specific package declared catalogers
- dummyTask("conan-cataloger", "declared", "directory", "language", "cpp", "conan"),
- dummyTask("dart-pubspec-lock-cataloger", "declared", "directory", "language", "dart"),
- dummyTask("dotnet-deps-cataloger", "declared", "directory", "language", "dotnet", "c#"),
- dummyTask("elixir-mix-lock-cataloger", "declared", "directory", "language", "elixir"),
- dummyTask("erlang-rebar-lock-cataloger", "declared", "directory", "language", "erlang"),
- dummyTask("javascript-lock-cataloger", "declared", "directory", "language", "javascript", "node", "npm"),
-
- // language-specific package for both image and directory scans (but not necessarily declared)
- dummyTask("dotnet-portable-executable-cataloger", "directory", "installed", "image", "language", "dotnet", "c#"),
- dummyTask("python-installed-package-cataloger", "directory", "installed", "image", "language", "python"),
- dummyTask("go-module-binary-cataloger", "directory", "installed", "image", "language", "go", "golang", "gomod", "binary"),
- dummyTask("java-archive-cataloger", "directory", "installed", "image", "language", "java", "maven"),
- dummyTask("graalvm-native-image-cataloger", "directory", "installed", "image", "language", "java"),
-
- // other package catalogers
- dummyTask("binary-cataloger", "declared", "directory", "image", "binary"),
- dummyTask("github-actions-usage-cataloger", "declared", "directory", "github", "github-actions"),
- dummyTask("github-action-workflow-usage-cataloger", "declared", "directory", "github", "github-actions"),
- dummyTask("sbom-cataloger", "declared", "directory", "image", "sbom"),
- }
-}
-
-func TestSelect(t *testing.T) {
-
- tests := []struct {
- name string
- allTasks []Task
- basis []string
- expressions []string
- wantNames []string
- wantTokens map[string]TokenSelection
- wantRequest pkgcataloging.SelectionRequest
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "empty input",
- allTasks: []Task{},
- basis: []string{},
- expressions: []string{},
- wantNames: []string{},
- wantTokens: map[string]TokenSelection{},
- wantRequest: pkgcataloging.SelectionRequest{},
- },
- {
- name: "use default tasks",
- allTasks: createDummyTasks(),
- basis: []string{
- "image",
- },
- expressions: []string{},
- wantNames: []string{
- "alpm-db-cataloger",
- "apk-db-cataloger",
- "dpkg-db-cataloger",
- "portage-cataloger",
- "rpm-db-cataloger",
- "conan-info-cataloger",
- "javascript-package-cataloger",
- "php-composer-installed-cataloger",
- "ruby-installed-gemspec-cataloger",
- "rust-cargo-lock-cataloger",
- "dotnet-portable-executable-cataloger",
- "python-installed-package-cataloger",
- "go-module-binary-cataloger",
- "java-archive-cataloger",
- "graalvm-native-image-cataloger",
- "binary-cataloger",
- "sbom-cataloger",
- },
- wantTokens: map[string]TokenSelection{
- "alpm-db-cataloger": newTokenSelection([]string{"image"}, nil),
- "apk-db-cataloger": newTokenSelection([]string{"image"}, nil),
- "dpkg-db-cataloger": newTokenSelection([]string{"image"}, nil),
- "portage-cataloger": newTokenSelection([]string{"image"}, nil),
- "rpm-db-cataloger": newTokenSelection([]string{"image"}, nil),
- "conan-info-cataloger": newTokenSelection([]string{"image"}, nil),
- "javascript-package-cataloger": newTokenSelection([]string{"image"}, nil),
- "php-composer-installed-cataloger": newTokenSelection([]string{"image"}, nil),
- "ruby-installed-gemspec-cataloger": newTokenSelection([]string{"image"}, nil),
- "rust-cargo-lock-cataloger": newTokenSelection([]string{"image"}, nil),
- "dotnet-portable-executable-cataloger": newTokenSelection([]string{"image"}, nil),
- "python-installed-package-cataloger": newTokenSelection([]string{"image"}, nil),
- "go-module-binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "java-archive-cataloger": newTokenSelection([]string{"image"}, nil),
- "graalvm-native-image-cataloger": newTokenSelection([]string{"image"}, nil),
- "binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "sbom-cataloger": newTokenSelection([]string{"image"}, nil),
- },
- wantRequest: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- },
- {
- name: "select, add, and remove tasks",
- allTasks: createDummyTasks(),
- basis: []string{
- "image",
- },
- expressions: []string{
- "+github-actions-usage-cataloger",
- "-dpkg",
- "os",
- },
- wantNames: []string{
- "alpm-db-cataloger",
- "apk-db-cataloger",
- "portage-cataloger",
- "rpm-db-cataloger",
- "github-actions-usage-cataloger",
- },
- wantTokens: map[string]TokenSelection{
- // selected
- "alpm-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "apk-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "dpkg-db-cataloger": newTokenSelection([]string{"image", "os"}, []string{"dpkg"}),
- "portage-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "rpm-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "github-actions-usage-cataloger": newTokenSelection([]string{"github-actions-usage-cataloger"}, nil),
-
- // ultimately not selected
- "rpm-archive-cataloger": newTokenSelection([]string{"os"}, nil),
- "conan-info-cataloger": newTokenSelection([]string{"image"}, nil),
- "javascript-package-cataloger": newTokenSelection([]string{"image"}, nil),
- "php-composer-installed-cataloger": newTokenSelection([]string{"image"}, nil),
- "ruby-installed-gemspec-cataloger": newTokenSelection([]string{"image"}, nil),
- "rust-cargo-lock-cataloger": newTokenSelection([]string{"image"}, nil),
- "dotnet-portable-executable-cataloger": newTokenSelection([]string{"image"}, nil),
- "python-installed-package-cataloger": newTokenSelection([]string{"image"}, nil),
- "go-module-binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "java-archive-cataloger": newTokenSelection([]string{"image"}, nil),
- "graalvm-native-image-cataloger": newTokenSelection([]string{"image"}, nil),
- "binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "sbom-cataloger": newTokenSelection([]string{"image"}, nil),
- },
- wantRequest: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- SubSelectTags: []string{"os"},
- RemoveNamesOrTags: []string{"dpkg"},
- AddNames: []string{"github-actions-usage-cataloger"},
- },
- },
- {
- name: "allow for partial selections",
- allTasks: createDummyTasks(),
- basis: []string{
- "image",
- },
- expressions: []string{
- // valid...
- "+github-actions-usage-cataloger",
- "-dpkg",
- "os",
- // invalid...
- "+python",
- "rust-cargo-lock-cataloger",
- },
- wantNames: []string{
- "alpm-db-cataloger",
- "apk-db-cataloger",
- "portage-cataloger",
- "rpm-db-cataloger",
- "github-actions-usage-cataloger",
- },
- wantTokens: map[string]TokenSelection{
- // selected
- "alpm-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "apk-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "dpkg-db-cataloger": newTokenSelection([]string{"image", "os"}, []string{"dpkg"}),
- "portage-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "rpm-db-cataloger": newTokenSelection([]string{"image", "os"}, nil),
- "github-actions-usage-cataloger": newTokenSelection([]string{"github-actions-usage-cataloger"}, nil),
-
- // ultimately not selected
- "rpm-archive-cataloger": newTokenSelection([]string{"os"}, nil),
- "conan-info-cataloger": newTokenSelection([]string{"image"}, nil),
- "javascript-package-cataloger": newTokenSelection([]string{"image"}, nil),
- "php-composer-installed-cataloger": newTokenSelection([]string{"image"}, nil),
- "ruby-installed-gemspec-cataloger": newTokenSelection([]string{"image"}, nil),
- "rust-cargo-lock-cataloger": newTokenSelection([]string{"image"}, nil),
- "dotnet-portable-executable-cataloger": newTokenSelection([]string{"image"}, nil),
- "python-installed-package-cataloger": newTokenSelection([]string{"image"}, nil), // note: there is no python token used for selection
- "go-module-binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "java-archive-cataloger": newTokenSelection([]string{"image"}, nil),
- "graalvm-native-image-cataloger": newTokenSelection([]string{"image"}, nil),
- "binary-cataloger": newTokenSelection([]string{"image"}, nil),
- "sbom-cataloger": newTokenSelection([]string{"image"}, nil),
- },
- wantRequest: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- SubSelectTags: []string{"os", "rust-cargo-lock-cataloger"},
- RemoveNamesOrTags: []string{"dpkg"},
- AddNames: []string{"github-actions-usage-cataloger", "python"},
- },
- wantErr: assert.Error, // !important!
- },
- {
- name: "select all tasks",
- allTasks: createDummyTasks(),
- basis: []string{
- "all",
- },
- expressions: []string{},
- wantNames: []string{
- "alpm-db-cataloger",
- "apk-db-cataloger",
- "dpkg-db-cataloger",
- "portage-cataloger",
- "rpm-db-cataloger",
- "rpm-archive-cataloger",
- "conan-info-cataloger",
- "javascript-package-cataloger",
- "php-composer-installed-cataloger",
- "ruby-installed-gemspec-cataloger",
- "rust-cargo-lock-cataloger",
- "conan-cataloger",
- "dart-pubspec-lock-cataloger",
- "dotnet-deps-cataloger",
- "elixir-mix-lock-cataloger",
- "erlang-rebar-lock-cataloger",
- "javascript-lock-cataloger",
- "dotnet-portable-executable-cataloger",
- "python-installed-package-cataloger",
- "go-module-binary-cataloger",
- "java-archive-cataloger",
- "graalvm-native-image-cataloger",
- "binary-cataloger",
- "github-actions-usage-cataloger",
- "github-action-workflow-usage-cataloger",
- "sbom-cataloger",
- },
- wantTokens: map[string]TokenSelection{
- "alpm-db-cataloger": newTokenSelection([]string{"all"}, nil),
- "apk-db-cataloger": newTokenSelection([]string{"all"}, nil),
- "dpkg-db-cataloger": newTokenSelection([]string{"all"}, nil),
- "portage-cataloger": newTokenSelection([]string{"all"}, nil),
- "rpm-db-cataloger": newTokenSelection([]string{"all"}, nil),
- "rpm-archive-cataloger": newTokenSelection([]string{"all"}, nil),
- "conan-info-cataloger": newTokenSelection([]string{"all"}, nil),
- "javascript-package-cataloger": newTokenSelection([]string{"all"}, nil),
- "php-composer-installed-cataloger": newTokenSelection([]string{"all"}, nil),
- "ruby-installed-gemspec-cataloger": newTokenSelection([]string{"all"}, nil),
- "rust-cargo-lock-cataloger": newTokenSelection([]string{"all"}, nil),
- "conan-cataloger": newTokenSelection([]string{"all"}, nil),
- "dart-pubspec-lock-cataloger": newTokenSelection([]string{"all"}, nil),
- "dotnet-deps-cataloger": newTokenSelection([]string{"all"}, nil),
- "elixir-mix-lock-cataloger": newTokenSelection([]string{"all"}, nil),
- "erlang-rebar-lock-cataloger": newTokenSelection([]string{"all"}, nil),
- "javascript-lock-cataloger": newTokenSelection([]string{"all"}, nil),
- "dotnet-portable-executable-cataloger": newTokenSelection([]string{"all"}, nil),
- "python-installed-package-cataloger": newTokenSelection([]string{"all"}, nil),
- "go-module-binary-cataloger": newTokenSelection([]string{"all"}, nil),
- "java-archive-cataloger": newTokenSelection([]string{"all"}, nil),
- "graalvm-native-image-cataloger": newTokenSelection([]string{"all"}, nil),
- "binary-cataloger": newTokenSelection([]string{"all"}, nil),
- "github-actions-usage-cataloger": newTokenSelection([]string{"all"}, nil),
- "github-action-workflow-usage-cataloger": newTokenSelection([]string{"all"}, nil),
- "sbom-cataloger": newTokenSelection([]string{"all"}, nil),
- },
- wantRequest: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"all"},
- },
- },
- {
- name: "set default with multiple tags",
- allTasks: createDummyTasks(),
- basis: []string{
- "gemspec",
- "python",
- },
- expressions: []string{},
- wantNames: []string{
- "ruby-installed-gemspec-cataloger",
- "python-installed-package-cataloger",
- },
- wantTokens: map[string]TokenSelection{
- "ruby-installed-gemspec-cataloger": newTokenSelection([]string{"gemspec"}, nil),
- "python-installed-package-cataloger": newTokenSelection([]string{"python"}, nil),
- },
- wantRequest: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"gemspec", "python"},
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
-
- req := pkgcataloging.NewSelectionRequest().WithDefaults(tt.basis...).WithExpression(tt.expressions...)
-
- got, gotEvidence, err := Select(tt.allTasks, req)
- tt.wantErr(t, err)
- if err != nil {
- // dev note: this is useful for debugging when needed...
- //for _, e := range gotEvidence.Request.Expressions {
- // t.Logf("expression (errors %q): %#v", e.Errors, e)
- //}
-
- // note: we DON'T bail early in validations... this is because we should always return the full set of
- // of selected tasks and surrounding evidence.
- }
-
- gotNames := make([]string, 0)
- for _, g := range got {
- gotNames = append(gotNames, g.Name())
- }
-
- assert.Equal(t, tt.wantNames, gotNames)
-
- // names in selection should match all tasks returned
- require.Len(t, tt.wantNames, gotEvidence.Result.Size(), "selected tasks should match all tasks returned (but does not)")
- assert.ElementsMatch(t, tt.wantNames, gotEvidence.Result.List(), "selected tasks should match all tasks returned (but does not)")
-
- setCompare := cmp.Comparer(func(x, y *strset.Set) bool {
- return x.IsEqual(y)
- })
-
- if d := cmp.Diff(tt.wantTokens, gotEvidence.TokensByTask, setCompare); d != "" {
- t.Errorf("unexpected tokens by task (-want +got):\n%s", d)
- }
- assert.Equal(t, tt.wantRequest, gotEvidence.Request)
-
- })
- }
-}
diff --git a/internal/task/set_test.go b/internal/task/set_test.go
deleted file mode 100644
index d5bfea8a1..000000000
--- a/internal/task/set_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-package task
-
-import (
- "context"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anchore/syft/internal/sbomsync"
- "github.com/anchore/syft/syft/file"
-)
-
-var _ Task = (*mockTask)(nil)
-
-type mockTask struct {
- name string
-}
-
-func (m mockTask) Execute(_ context.Context, _ file.Resolver, _ sbomsync.Builder) error {
- panic("implement me")
-}
-
-func (m mockTask) Name() string {
- return m.name
-}
-
-func Test_set_Add(t *testing.T) {
- tests := []struct {
- name string
- initialTasks []Task
- newTasks []Task
- expected []string
- }{
- {
- name: "add unique tasks",
- initialTasks: []Task{mockTask{"task2"}, mockTask{"task1"}},
- newTasks: []Task{mockTask{"task3"}},
- expected: []string{
- "task2", // note order is honored
- "task1",
- "task3",
- },
- },
- {
- name: "add duplicate tasks",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task2"}},
- newTasks: []Task{mockTask{"task1"}},
- expected: []string{
- "task1",
- "task2",
- },
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := newSet(tt.initialTasks...)
- s.Add(tt.newTasks...)
- got := s.Tasks()
- var gotNames []string
- for _, tsk := range got {
- gotNames = append(gotNames, tsk.Name())
- }
- assert.Equal(t, tt.expected, gotNames)
- })
- }
-}
-
-func Test_set_Remove(t *testing.T) {
- tests := []struct {
- name string
- initialTasks []Task
- tasksToRemove []Task
- expectedOrder []string
- }{
- {
- name: "remove existing tasks",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task2"}, mockTask{"task3"}},
- tasksToRemove: []Task{mockTask{"task2"}},
- expectedOrder: []string{"task1", "task3"},
- },
- {
- name: "remove non-existing tasks",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task2"}},
- tasksToRemove: []Task{mockTask{"task3"}},
- expectedOrder: []string{"task1", "task2"},
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := newSet(tt.initialTasks...)
- s.Remove(tt.tasksToRemove...)
- assert.Equal(t, tt.expectedOrder, s.order)
- })
- }
-}
-
-func Test_set_Intersect(t *testing.T) {
- tests := []struct {
- name string
- initialTasks []Task
- intersectTasks []Task
- expectedOrder []string
- }{
- {
- name: "intersect with overlapping tasks",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task2"}},
- intersectTasks: []Task{mockTask{"task2"}, mockTask{"task3"}},
- expectedOrder: []string{"task2"},
- },
- {
- name: "intersect with non-overlapping tasks",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task4"}},
- intersectTasks: []Task{mockTask{"task2"}, mockTask{"task3"}},
- expectedOrder: []string{},
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := newSet(tt.initialTasks...)
- s.Intersect(tt.intersectTasks...)
- assert.Equal(t, tt.expectedOrder, s.order)
- })
- }
-}
-
-func Test_set_Tasks(t *testing.T) {
- tests := []struct {
- name string
- initialTasks []Task
- expectedTasks tasks
- }{
- {
- name: "empty set",
- initialTasks: []Task{},
- expectedTasks: nil,
- },
- {
- name: "get tasks from set",
- initialTasks: []Task{mockTask{"task1"}, mockTask{"task2"}},
- expectedTasks: []Task{mockTask{"task1"}, mockTask{"task2"}},
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := newSet(tt.initialTasks...)
- resultTasks := s.Tasks()
- assert.Equal(t, tt.expectedTasks, resultTasks)
- })
- }
-}
diff --git a/internal/task/unknowns_tasks.go b/internal/task/unknowns_tasks.go
new file mode 100644
index 000000000..243ba9502
--- /dev/null
+++ b/internal/task/unknowns_tasks.go
@@ -0,0 +1,114 @@
+package task
+
+import (
+ "context"
+ "strings"
+
+ "github.com/mholt/archiver/v3"
+
+ "github.com/anchore/syft/internal/log"
+ "github.com/anchore/syft/internal/sbomsync"
+ "github.com/anchore/syft/syft/cataloging"
+ "github.com/anchore/syft/syft/file"
+ "github.com/anchore/syft/syft/pkg"
+ "github.com/anchore/syft/syft/sbom"
+)
+
+const unknownsLabelerTaskName = "unknowns-labeler"
+
+func NewUnknownsLabelerTask(cfg cataloging.UnknownsConfig) Task {
+ return NewTask(unknownsLabelerTaskName, unknownsLabelerTask{cfg}.processUnknowns)
+}
+
+type unknownsLabelerTask struct {
+ cataloging.UnknownsConfig
+}
+
+// processUnknowns removes unknown entries that have valid packages reported for the locations
+func (c unknownsLabelerTask) processUnknowns(_ context.Context, resolver file.Resolver, builder sbomsync.Builder) error {
+ accessor := builder.(sbomsync.Accessor)
+ accessor.WriteToSBOM(func(s *sbom.SBOM) {
+ c.finalize(resolver, s)
+ })
+ return nil
+}
+
+func (c unknownsLabelerTask) finalize(resolver file.Resolver, s *sbom.SBOM) {
+ hasPackageReference := coordinateReferenceLookup(resolver, s)
+
+ if c.RemoveWhenPackagesDefined {
+ for coords := range s.Artifacts.Unknowns {
+ if !hasPackageReference(coords) {
+ continue
+ }
+ delete(s.Artifacts.Unknowns, coords)
+ }
+ }
+
+ if s.Artifacts.Unknowns == nil {
+ s.Artifacts.Unknowns = map[file.Coordinates][]string{}
+ }
+
+ if c.IncludeExecutablesWithoutPackages {
+ for coords := range s.Artifacts.Executables {
+ if !hasPackageReference(coords) {
+ s.Artifacts.Unknowns[coords] = append(s.Artifacts.Unknowns[coords], formatUnknown("no package identified in executable file", unknownsLabelerTaskName))
+ }
+ }
+ }
+
+ if c.IncludeUnexpandedArchives {
+ for coords := range s.Artifacts.FileMetadata {
+ unarchiver, notArchiveErr := archiver.ByExtension(coords.RealPath)
+ if unarchiver != nil && notArchiveErr == nil && !hasPackageReference(coords) {
+ s.Artifacts.Unknowns[coords] = append(s.Artifacts.Unknowns[coords], "archive not cataloged")
+ }
+ }
+ }
+}
+
+func formatUnknown(err string, task ...string) string {
+ return strings.Join(task, "/") + ": " + err
+}
+
+func coordinateReferenceLookup(resolver file.Resolver, s *sbom.SBOM) func(coords file.Coordinates) bool {
+ allPackageCoords := file.NewCoordinateSet()
+
+ // include all directly included locations that result in packages
+ for p := range s.Artifacts.Packages.Enumerate() {
+ allPackageCoords.Add(p.Locations.CoordinateSet().ToSlice()...)
+ }
+
+ // include owned files, for example specified by package managers.
+ // relationships for these owned files may be disabled, but we always want to include them
+ for p := range s.Artifacts.Packages.Enumerate() {
+ if f, ok := p.Metadata.(pkg.FileOwner); ok {
+ for _, ownedFilePath := range f.OwnedFiles() {
+ // resolve these owned files, as they may have symlinks
+ // but coordinates we will test against are always absolute paths
+ locations, err := resolver.FilesByPath(ownedFilePath)
+ if err != nil {
+ log.Debugf("unable to resolve owned file '%s': %v", ownedFilePath, err)
+ }
+ for _, loc := range locations {
+ allPackageCoords.Add(loc.Coordinates)
+ }
+ }
+ }
+ }
+
+ // include relationships
+ for _, r := range s.Relationships {
+ _, fromPkgOk := r.From.(pkg.Package)
+ fromFile, fromFileOk := r.From.(file.Coordinates)
+ _, toPkgOk := r.To.(pkg.Package)
+ toFile, toFileOk := r.To.(file.Coordinates)
+ if fromPkgOk && toFileOk {
+ allPackageCoords.Add(toFile)
+ } else if fromFileOk && toPkgOk {
+ allPackageCoords.Add(fromFile)
+ }
+ }
+
+ return allPackageCoords.Contains
+}
diff --git a/internal/unknown/coordinate_error.go b/internal/unknown/coordinate_error.go
new file mode 100644
index 000000000..46bc53e11
--- /dev/null
+++ b/internal/unknown/coordinate_error.go
@@ -0,0 +1,201 @@
+package unknown
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+
+ "github.com/anchore/syft/internal/log"
+ "github.com/anchore/syft/syft/file"
+)
+
+type hasCoordinates interface {
+ GetCoordinates() file.Coordinates
+}
+
+type CoordinateError struct {
+ Coordinates file.Coordinates
+ Reason error
+}
+
+var _ error = (*CoordinateError)(nil)
+
+func (u *CoordinateError) Error() string {
+ if u.Coordinates.FileSystemID == "" {
+ return fmt.Sprintf("%s: %v", u.Coordinates.RealPath, u.Reason)
+ }
+ return fmt.Sprintf("%s (%s): %v", u.Coordinates.RealPath, u.Coordinates.FileSystemID, u.Reason)
+}
+
+// New returns a new CoordinateError unless the reason is a CoordinateError itself, in which case
+// reason will be returned directly or if reason is nil, nil will be returned
+func New(coords hasCoordinates, reason error) *CoordinateError {
+ if reason == nil {
+ return nil
+ }
+ coordinates := coords.GetCoordinates()
+ reasonCoordinateError := &CoordinateError{}
+ if errors.As(reason, &reasonCoordinateError) {
+ // if the reason is already a coordinate error, it is potentially for a different location,
+ // so we do not want to surface this location having an error
+ return reasonCoordinateError
+ }
+ return &CoordinateError{
+ Coordinates: coordinates,
+ Reason: reason,
+ }
+}
+
+// Newf returns a new CoordinateError with a reason of an error created from given format and args
+func Newf(coords hasCoordinates, format string, args ...any) *CoordinateError {
+ return New(coords, fmt.Errorf(format, args...))
+}
+
+// Append returns an error joined to the first error/set of errors, with a new CoordinateError appended to the end
+func Append(errs error, coords hasCoordinates, reason error) error {
+ return Join(errs, New(coords, reason))
+}
+
+// Appendf returns an error joined to the first error/set of errors, with a new CoordinateError appended to the end,
+// created from the given reason and args
+func Appendf(errs error, coords hasCoordinates, format string, args ...any) error {
+ return Append(errs, coords, fmt.Errorf(format, args...))
+}
+
+// Join joins the provided sets of errors together in a flattened manner, taking into account nested errors created
+// from other sources, including errors.Join, multierror.Append, and unknown.Join
+func Join(errs ...error) error {
+ var out []error
+ for _, err := range errs {
+ // append errors, de-duplicated
+ for _, e := range flatten(err) {
+ if containsErr(out, e) {
+ continue
+ }
+ out = append(out, e)
+ }
+ }
+ if len(out) == 1 {
+ return out[0]
+ }
+ if len(out) == 0 {
+ return nil
+ }
+ return errors.Join(out...)
+}
+
+// Joinf joins the provided sets of errors together in a flattened manner, taking into account nested errors created
+// from other sources, including errors.Join, multierror.Append, and unknown.Join and appending a new error,
+// created from the format and args provided -- the error is NOT a CoordinateError
+func Joinf(errs error, format string, args ...any) error {
+ return Join(errs, fmt.Errorf(format, args...))
+}
+
+// IfEmptyf returns a new Errorf-formatted error, only when the provided slice is empty or nil when
+// the slice has entries
+func IfEmptyf[T any](emptyTest []T, format string, args ...any) error {
+ if len(emptyTest) == 0 {
+ return fmt.Errorf(format, args...)
+ }
+ return nil
+}
+
+// ExtractCoordinateErrors extracts all coordinate errors returned, and any _additional_ errors in the graph
+// are encapsulated in the second, error return parameter
+func ExtractCoordinateErrors(err error) (coordinateErrors []CoordinateError, remainingErrors error) {
+ remainingErrors = visitErrors(err, func(e error) error {
+ if coordinateError, _ := e.(*CoordinateError); coordinateError != nil {
+ coordinateErrors = append(coordinateErrors, *coordinateError)
+ return nil
+ }
+ return e
+ })
+ return coordinateErrors, remainingErrors
+}
+
+func flatten(errs ...error) []error {
+ var out []error
+ for _, err := range errs {
+ if err == nil {
+ continue
+ }
+ // turn all errors nested under a coordinate error to individual coordinate errors
+ if e, ok := err.(*CoordinateError); ok {
+ if e == nil {
+ continue
+ }
+ for _, r := range flatten(e.Reason) {
+ out = append(out, New(e.Coordinates, r))
+ }
+ } else
+ // from multierror.Append
+ if e, ok := err.(interface{ WrappedErrors() []error }); ok {
+ if e == nil {
+ continue
+ }
+ out = append(out, flatten(e.WrappedErrors()...)...)
+ } else
+ // from errors.Join
+ if e, ok := err.(interface{ Unwrap() []error }); ok {
+ if e == nil {
+ continue
+ }
+ out = append(out, flatten(e.Unwrap()...)...)
+ } else {
+ out = append(out, err)
+ }
+ }
+ return out
+}
+
+// containsErr returns true if a duplicate error is found
+func containsErr(out []error, err error) bool {
+ defer func() {
+ if err := recover(); err != nil {
+ log.Tracef("error comparing errors: %v", err)
+ }
+ }()
+ for _, e := range out {
+ if e == err {
+ return true
+ }
+ }
+ return false
+}
+
+// visitErrors visits every wrapped error. the returned error replaces the provided error, null errors are omitted from
+// the object graph
+func visitErrors(err error, fn func(error) error) error {
+ // unwrap errors from errors.Join
+ if errs, ok := err.(interface{ Unwrap() []error }); ok {
+ var out []error
+ for _, e := range errs.Unwrap() {
+ out = append(out, visitErrors(e, fn))
+ }
+ // errors.Join omits nil errors and will return nil if all passed errors are nil
+ return errors.Join(out...)
+ }
+ // unwrap errors from multierror.Append -- these also implement Unwrap() error, so check this first
+ if errs, ok := err.(interface{ WrappedErrors() []error }); ok {
+ var out []error
+ for _, e := range errs.WrappedErrors() {
+ out = append(out, visitErrors(e, fn))
+ }
+ // errors.Join omits nil errors and will return nil if all passed errors are nil
+ return errors.Join(out...)
+ }
+ // unwrap singly wrapped errors
+ if e, ok := err.(interface{ Unwrap() error }); ok {
+ wrapped := e.Unwrap()
+ got := visitErrors(wrapped, fn)
+ if got == nil {
+ return nil
+ }
+ if wrapped.Error() != got.Error() {
+ prefix := strings.TrimSuffix(err.Error(), wrapped.Error())
+ return fmt.Errorf("%s%w", prefix, got)
+ }
+ return err
+ }
+ return fn(err)
+}
diff --git a/schema/cyclonedx/README.md b/schema/cyclonedx/README.md
index 64ae62a52..08f16ad52 100644
--- a/schema/cyclonedx/README.md
+++ b/schema/cyclonedx/README.md
@@ -7,3 +7,12 @@ For this reason we've included a copy of all schemas needed to validate `syft` o
to reference local copies of dependent schemas.
You can get the latest schemas from the [CycloneDX specifications repo](https://github.com/CycloneDX/specification/tree/master/schema).
+
+When the spec version is bumped an approach to determining prior modifications is to compare the
+prior spec version (e.g. if updating to 1.7, compare the files in this directory against the 1.6
+equivalents).
+
+One can also update the schemas and observe the errors in order to make the necessary updates.
+At the time of writing, the cyclonedx.xsd needed modifications to link to the local spdx.xsd,
+and also to changes the minOccurs for a license tag to 0. (The json schema does not require
+modification for the generated file to lint properly, but can simply be copy/pasted).
diff --git a/schema/cyclonedx/cyclonedx.json b/schema/cyclonedx/cyclonedx.json
index 14ba745f0..e49dc52e6 100644
--- a/schema/cyclonedx/cyclonedx.json
+++ b/schema/cyclonedx/cyclonedx.json
@@ -1,8 +1,8 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
- "$id": "http://cyclonedx.org/schema/bom-1.5.schema.json",
+ "$id": "http://cyclonedx.org/schema/bom-1.6.schema.json",
"type": "object",
- "title": "CycloneDX Software Bill of Materials Standard",
+ "title": "CycloneDX Bill of Materials Standard",
"$comment" : "CycloneDX JSON schema is published under the terms of the Apache License 2.0.",
"required": [
"bomFormat",
@@ -11,15 +11,12 @@
"additionalProperties": false,
"properties": {
"$schema": {
- "type": "string",
- "enum": [
- "http://cyclonedx.org/schema/bom-1.5.schema.json"
- ]
+ "type": "string"
},
"bomFormat": {
"type": "string",
"title": "BOM Format",
- "description": "Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention nor does JSON schema support namespaces. This value MUST be \"CycloneDX\".",
+ "description": "Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOMs do not have a filename convention, nor does JSON schema support namespaces. This value MUST be \"CycloneDX\".",
"enum": [
"CycloneDX"
]
@@ -27,13 +24,13 @@
"specVersion": {
"type": "string",
"title": "CycloneDX Specification Version",
- "description": "The version of the CycloneDX specification a BOM conforms to (starting at version 1.2).",
- "examples": ["1.5"]
+ "description": "The version of the CycloneDX specification the BOM conforms to.",
+ "examples": ["1.6"]
},
"serialNumber": {
"type": "string",
"title": "BOM Serial Number",
- "description": "Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers are RECOMMENDED.",
+ "description": "Every BOM generated SHOULD have a unique serial number, even if the contents of the BOM have not changed over time. If specified, the serial number MUST conform to RFC-4122. Use of serial numbers is RECOMMENDED.",
"examples": ["urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79"],
"pattern": "^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
},
@@ -68,14 +65,14 @@
"type": "array",
"items": {"$ref": "#/definitions/externalReference"},
"title": "External References",
- "description": "External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
},
"dependencies": {
"type": "array",
"items": {"$ref": "#/definitions/dependency"},
"uniqueItems": true,
"title": "Dependencies",
- "description": "Provides the ability to document dependency relationships."
+ "description": "Provides the ability to document dependency relationships including provided & implemented components."
},
"compositions": {
"type": "array",
@@ -96,7 +93,7 @@
"items": {"$ref": "#/definitions/annotations"},
"uniqueItems": true,
"title": "Annotations",
- "description": "Comments made by people, organizations, or tools about any object with a bom-ref, such as components, services, vulnerabilities, or the BOM itself. Unlike inventory information, annotations may contain opinion or commentary from various stakeholders. Annotations may be inline (with inventory) or externalized via BOM-Link, and may optionally be signed."
+ "description": "Comments made by people, organizations, or tools about any object with a bom-ref, such as components, services, vulnerabilities, or the BOM itself. Unlike inventory information, annotations may contain opinions or commentary from various stakeholders. Annotations may be inline (with inventory) or externalized via BOM-Link and may optionally be signed."
},
"formulation": {
"type": "array",
@@ -105,6 +102,420 @@
"title": "Formulation",
"description": "Describes how a component or service was manufactured or deployed. This is achieved through the use of formulas, workflows, tasks, and steps, which declare the precise steps to reproduce along with the observed formulas describing the steps which transpired in the manufacturing process."
},
+ "declarations": {
+ "type": "object",
+ "title": "Declarations",
+ "description": "The list of declarations which describe the conformance to standards. Each declaration may include attestations, claims, and evidence.",
+ "additionalProperties": false,
+ "properties": {
+ "assessors": {
+ "type": "array",
+ "title": "Assessors",
+ "description": "The list of assessors evaluating claims and determining conformance to requirements and confidence in that assessment.",
+ "items": {
+ "type": "object",
+ "title": "Assessor",
+ "description": "The assessor who evaluates claims and determines conformance to requirements and confidence in that assessment.",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "thirdParty": {
+ "type": "boolean",
+ "title": "Third Party",
+ "description": "The boolean indicating if the assessor is outside the organization generating claims. A value of false indicates a self assessor."
+ },
+ "organization": {
+ "$ref": "#/definitions/organizationalEntity",
+ "title": "Organization",
+ "description": "The entity issuing the assessment."
+ }
+ }
+ }
+ },
+ "attestations": {
+ "type": "array",
+ "title": "Attestations",
+ "description": "The list of attestations asserted by an assessor that maps requirements to claims.",
+ "items": {
+ "type": "object",
+ "title": "Attestation",
+ "additionalProperties": false,
+ "properties": {
+ "summary": {
+ "type": "string",
+ "title": "Summary",
+ "description": "The short description explaining the main points of the attestation."
+ },
+ "assessor": {
+ "$ref": "#/definitions/refLinkType",
+ "title": "Assessor",
+ "description": "The `bom-ref` to the assessor asserting the attestation."
+ },
+ "map": {
+ "type": "array",
+ "title": "Map",
+ "description": "The grouping of requirements to claims and the attestors declared conformance and confidence thereof.",
+ "items": {
+ "type": "object",
+ "title": "Map",
+ "additionalProperties": false,
+ "properties": {
+ "requirement": {
+ "$ref": "#/definitions/refLinkType",
+ "title": "Requirement",
+ "description": "The `bom-ref` to the requirement being attested to."
+ },
+ "claims": {
+ "type": "array",
+ "title": "Claims",
+ "description": "The list of `bom-ref` to the claims being attested to.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ },
+ "counterClaims": {
+ "type": "array",
+ "title": "Counter Claims",
+ "description": "The list of `bom-ref` to the counter claims being attested to.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ },
+ "conformance": {
+ "type": "object",
+ "title": "Conformance",
+ "description": "The conformance of the claim meeting a requirement.",
+ "additionalProperties": false,
+ "properties": {
+ "score": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1,
+ "title": "Score",
+ "description": "The conformance of the claim between and inclusive of 0 and 1, where 1 is 100% conformance."
+ },
+ "rationale": {
+ "type": "string",
+ "title": "Rationale",
+ "description": "The rationale for the conformance score."
+ },
+ "mitigationStrategies": {
+ "type": "array",
+ "title": "Mitigation Strategies",
+ "description": "The list of `bom-ref` to the evidence provided describing the mitigation strategies.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ }
+ }
+ },
+ "confidence": {
+ "type": "object",
+ "title": "Confidence",
+ "description": "The confidence of the claim meeting the requirement.",
+ "additionalProperties": false,
+ "properties": {
+ "score": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1,
+ "title": "Score",
+ "description": "The confidence of the claim between and inclusive of 0 and 1, where 1 is 100% confidence."
+ },
+ "rationale": {
+ "type": "string",
+ "title": "Rationale",
+ "description": "The rationale for the confidence score."
+ }
+ }
+ }
+ }
+ }
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ }
+ },
+ "claims": {
+ "type": "array",
+ "title": "Claims",
+ "description": "The list of claims.",
+ "items": {
+ "type": "object",
+ "title": "Claim",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "target": {
+ "$ref": "#/definitions/refLinkType",
+ "title": "Target",
+ "description": "The `bom-ref` to a target representing a specific system, application, API, module, team, person, process, business unit, company, etc... that this claim is being applied to."
+ },
+ "predicate": {
+ "type": "string",
+ "title": "Predicate",
+ "description": "The specific statement or assertion about the target."
+ },
+ "mitigationStrategies": {
+ "type": "array",
+ "title": "Mitigation Strategies",
+ "description": "The list of `bom-ref` to the evidence provided describing the mitigation strategies. Each mitigation strategy should include an explanation of how any weaknesses in the evidence will be mitigated.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ },
+ "reasoning": {
+ "type": "string",
+ "title": "Reasoning",
+ "description": "The written explanation of why the evidence provided substantiates the claim."
+ },
+ "evidence": {
+ "type": "array",
+ "title": "Evidence",
+ "description": "The list of `bom-ref` to evidence that supports this claim.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ },
+ "counterEvidence": {
+ "type": "array",
+ "title": "Counter Evidence",
+ "description": "The list of `bom-ref` to counterEvidence that supports this claim.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ },
+ "externalReferences": {
+ "type": "array",
+ "items": {"$ref": "#/definitions/externalReference"},
+ "title": "External References",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ }
+ },
+ "evidence": {
+ "type": "array",
+ "title": "Evidence",
+ "description": "The list of evidence",
+ "items": {
+ "type": "object",
+ "title": "Evidence",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "propertyName": {
+ "type": "string",
+ "title": "Property Name",
+ "description": "The reference to the property name as defined in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy/)."
+ },
+ "description": {
+ "type": "string",
+ "title": "Description",
+ "description": "The written description of what this evidence is and how it was created."
+ },
+ "data": {
+ "type": "array",
+ "title": "Data",
+ "description": "The output or analysis that supports claims.",
+ "items": {
+ "type": "object",
+ "title": "Data",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "title": "Data Name",
+ "description": "The name of the data.",
+ "type": "string"
+ },
+ "contents": {
+ "type": "object",
+ "title": "Data Contents",
+ "description": "The contents or references to the contents of the data being described.",
+ "additionalProperties": false,
+ "properties": {
+ "attachment": {
+ "title": "Data Attachment",
+ "description": "An optional way to include textual or encoded data.",
+ "$ref": "#/definitions/attachment"
+ },
+ "url": {
+ "type": "string",
+ "title": "Data URL",
+ "description": "The URL to where the data can be retrieved.",
+ "format": "iri-reference"
+ }
+ }
+ },
+ "classification": {
+ "$ref": "#/definitions/dataClassification"
+ },
+ "sensitiveData": {
+ "type": "array",
+ "title": "Sensitive Data",
+ "description": "A description of any sensitive data included.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "governance": {
+ "title": "Data Governance",
+ "$ref": "#/definitions/dataGovernance"
+ }
+ }
+ }
+ },
+ "created": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Created",
+ "description": "The date and time (timestamp) when the evidence was created."
+ },
+ "expires": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Expires",
+ "description": "The optional date and time (timestamp) when the evidence is no longer valid."
+ },
+ "author": {
+ "$ref": "#/definitions/organizationalContact",
+ "title": "Author",
+ "description": "The author of the evidence."
+ },
+ "reviewer": {
+ "$ref": "#/definitions/organizationalContact",
+ "title": "Reviewer",
+ "description": "The reviewer of the evidence."
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ }
+ },
+ "targets": {
+ "type": "object",
+ "title": "Targets",
+ "description": "The list of targets which claims are made against.",
+ "additionalProperties": false,
+ "properties": {
+ "organizations": {
+ "type": "array",
+ "title": "Organizations",
+ "description": "The list of organizations which claims are made against.",
+ "items": {"$ref": "#/definitions/organizationalEntity"}
+ },
+ "components": {
+ "type": "array",
+ "title": "Components",
+ "description": "The list of components which claims are made against.",
+ "items": {"$ref": "#/definitions/component"}
+ },
+ "services": {
+ "type": "array",
+ "title": "Services",
+ "description": "The list of services which claims are made against.",
+ "items": {"$ref": "#/definitions/service"}
+ }
+ }
+ },
+ "affirmation": {
+ "type": "object",
+ "title": "Affirmation",
+ "additionalProperties": false,
+ "properties": {
+ "statement": {
+ "type": "string",
+ "title": "Statement",
+ "description": "The brief statement affirmed by an individual regarding all declarations.\n*- Notes This could be an affirmation of acceptance by a third-party auditor or receiving individual of a file.",
+ "examples": [ "I certify, to the best of my knowledge, that all information is correct." ]
+ },
+ "signatories": {
+ "type": "array",
+ "title": "Signatories",
+ "description": "The list of signatories authorized on behalf of an organization to assert validity of this document.",
+ "items": {
+ "type": "object",
+ "title": "Signatory",
+ "additionalProperties": false,
+ "oneOf": [
+ {
+ "required": ["signature"]
+ },
+ {
+ "required": ["externalReference", "organization"]
+ }
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name",
+ "description": "The signatory's name."
+ },
+ "role": {
+ "type": "string",
+ "title": "Role",
+ "description": "The signatory's role within an organization."
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ },
+ "organization": {
+ "$ref": "#/definitions/organizationalEntity",
+ "title": "Organization",
+ "description": "The signatory's organization."
+ },
+ "externalReference": {
+ "$ref": "#/definitions/externalReference",
+ "title": "External Reference",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ }
+ }
+ }
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ },
+ "definitions": {
+ "type": "object",
+ "title": "Definitions",
+ "description": "A collection of reusable objects that are defined and may be used elsewhere in the BOM.",
+ "additionalProperties": false,
+ "properties": {
+ "standards": {
+ "type": "array",
+ "title": "Standards",
+ "description": "The list of standards which may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.",
+ "items": {
+ "$ref": "#/definitions/standard"
+ }
+ }
+ }
+ },
"properties": {
"type": "array",
"title": "Properties",
@@ -121,14 +532,14 @@
},
"definitions": {
"refType": {
- "description": "Identifier for referable and therefore interlink-able elements.",
+ "description": "Identifier for referable and therefore interlinkable elements.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"type": "string",
"minLength": 1,
- "$comment": "value SHOULD not start with the BOM-Link intro 'urn:cdx:'"
+ "$comment": "TODO (breaking change): add a format constraint that prevents the value from staring with 'urn:cdx:'"
},
"refLinkType": {
"description": "Descriptor for an element identified by the attribute 'bom-ref' in the same BOM document.\nIn contrast to `bomLinkElementType`.",
- "allOf": [{"$ref": "#/definitions/refType"}]
+ "$ref": "#/definitions/refType"
},
"bomLinkDocumentType": {
"title": "BOM-Link Document",
@@ -147,6 +558,7 @@
"$comment": "part of the pattern is based on `bom.serialNumber`'s pattern"
},
"bomLink": {
+ "title": "BOM-Link",
"anyOf": [
{
"title": "BOM-Link Document",
@@ -160,7 +572,7 @@
},
"metadata": {
"type": "object",
- "title": "BOM Metadata Object",
+ "title": "BOM Metadata",
"additionalProperties": false,
"properties": {
"timestamp": {
@@ -172,20 +584,21 @@
"lifecycles": {
"type": "array",
"title": "Lifecycles",
- "description": "",
+ "description": "Lifecycles communicate the stage(s) in which data in the BOM was captured. Different types of data may be available at various phases of a lifecycle, such as the Software Development Lifecycle (SDLC), IT Asset Management (ITAM), and Software Asset Management (SAM). Thus, a BOM may include data specific to or only obtainable in a given lifecycle.",
"items": {
"type": "object",
"title": "Lifecycle",
"description": "The product lifecycle(s) that this BOM represents.",
"oneOf": [
{
+ "title": "Pre-Defined Phase",
"required": ["phase"],
"additionalProperties": false,
"properties": {
"phase": {
"type": "string",
"title": "Phase",
- "description": "A pre-defined phase in the product lifecycle.\n\n* __design__ = BOM produced early in the development lifecycle containing inventory of components and services that are proposed or planned to be used. The inventory may need to be procured, retrieved, or resourced prior to use.\n* __pre-build__ = BOM consisting of information obtained prior to a build process and may contain source files and development artifacts and manifests. The inventory may need to be resolved and retrieved prior to use.\n* __build__ = BOM consisting of information obtained during a build process where component inventory is available for use. The precise versions of resolved components are usually available at this time as well as the provenance of where the components were retrieved from.\n* __post-build__ = BOM consisting of information obtained after a build process has completed and the resulting components(s) are available for further analysis. Built components may exist as the result of a CI/CD process, may have been installed or deployed to a system or device, and may need to be retrieved or extracted from the system or device.\n* __operations__ = BOM produced that represents inventory that is running and operational. This may include staging or production environments and will generally encompass multiple SBOMs describing the applications and operating system, along with HBOMs describing the hardware that makes up the system. Operations Bill of Materials (OBOM) can provide full-stack inventory of runtime environments, configurations, and additional dependencies.\n* __discovery__ = BOM consisting of information observed through network discovery providing point-in-time enumeration of embedded, on-premise, and cloud-native services such as server applications, connected devices, microservices, and serverless functions.\n* __decommission__ = BOM containing inventory that will be, or has been retired from operations.",
+ "description": "A pre-defined phase in the product lifecycle.",
"enum": [
"design",
"pre-build",
@@ -194,11 +607,21 @@
"operations",
"discovery",
"decommission"
- ]
+ ],
+ "meta:enum": {
+ "design": "BOM produced early in the development lifecycle containing an inventory of components and services that are proposed or planned to be used. The inventory may need to be procured, retrieved, or resourced prior to use.",
+ "pre-build": "BOM consisting of information obtained prior to a build process and may contain source files and development artifacts and manifests. The inventory may need to be resolved and retrieved prior to use.",
+ "build": "BOM consisting of information obtained during a build process where component inventory is available for use. The precise versions of resolved components are usually available at this time as well as the provenance of where the components were retrieved from.",
+ "post-build": "BOM consisting of information obtained after a build process has completed and the resulting components(s) are available for further analysis. Built components may exist as the result of a CI/CD process, may have been installed or deployed to a system or device, and may need to be retrieved or extracted from the system or device.",
+ "operations": "BOM produced that represents inventory that is running and operational. This may include staging or production environments and will generally encompass multiple SBOMs describing the applications and operating system, along with HBOMs describing the hardware that makes up the system. Operations Bill of Materials (OBOM) can provide full-stack inventory of runtime environments, configurations, and additional dependencies.",
+ "discovery": "BOM consisting of information observed through network discovery providing point-in-time enumeration of embedded, on-premise, and cloud-native services such as server applications, connected devices, microservices, and serverless functions.",
+ "decommission": "BOM containing inventory that will be, or has been retired from operations."
+ }
}
}
},
{
+ "title": "Custom Phase",
"required": ["name"],
"additionalProperties": false,
"properties": {
@@ -216,13 +639,15 @@
}
]
}
- },
+ },
"tools": {
+ "title": "Tools",
+ "description": "The tool(s) used in the creation, enrichment, and validation of the BOM.",
"oneOf": [
{
"type": "object",
- "title": "Creation Tools",
- "description": "The tool(s) used in the creation of the BOM.",
+ "title": "Tools",
+ "description": "The tool(s) used in the creation, enrichment, and validation of the BOM.",
"additionalProperties": false,
"properties": {
"components": {
@@ -230,7 +655,7 @@
"items": {"$ref": "#/definitions/component"},
"uniqueItems": true,
"title": "Components",
- "description": "A list of software and hardware components used as tools"
+ "description": "A list of software and hardware components used as tools."
},
"services": {
"type": "array",
@@ -243,16 +668,21 @@
},
{
"type": "array",
- "title": "Creation Tools (legacy)",
- "description": "[Deprecated] The tool(s) used in the creation of the BOM.",
+ "title": "Tools (legacy)",
+ "description": "[Deprecated] The tool(s) used in the creation, enrichment, and validation of the BOM.",
"items": {"$ref": "#/definitions/tool"}
}
]
},
- "authors" :{
+ "manufacturer": {
+ "title": "BOM Manufacturer",
+ "description": "The organization that created the BOM.\nManufacturer is common in BOMs created through automated processes. BOMs created through manual means may have `@.authors` instead.",
+ "$ref": "#/definitions/organizationalEntity"
+ },
+ "authors": {
"type": "array",
- "title": "Authors",
- "description": "The person(s) who created the BOM. Authors are common in BOMs created through manual processes. BOMs created through automated means may not have authors.",
+ "title": "BOM Authors",
+ "description": "The person(s) who created the BOM.\nAuthors are common in BOMs created through manual processes. BOMs created through automated means may have `@.manufacturer` instead.",
"items": {"$ref": "#/definitions/organizationalContact"}
},
"component": {
@@ -261,8 +691,9 @@
"$ref": "#/definitions/component"
},
"manufacture": {
- "title": "Manufacture",
- "description": "The organization that manufactured the component that the BOM describes.",
+ "deprecated": true,
+ "title": "Component Manufacture (legacy)",
+ "description": "[Deprecated] This will be removed in a future version. Use the `@.component.manufacturer` instead.\nThe organization that manufactured the component that the BOM describes.",
"$ref": "#/definitions/organizationalEntity"
},
"supplier": {
@@ -272,6 +703,7 @@
},
"licenses": {
"title": "BOM License(s)",
+ "description": "The license information for the BOM document.\nThis may be different from the license(s) of the component(s) that the BOM describes.",
"$ref": "#/definitions/licenseChoice"
},
"properties": {
@@ -285,7 +717,7 @@
"tool": {
"type": "object",
"title": "Tool",
- "description": "[Deprecated] - DO NOT USE. This will be removed in a future version. This will be removed in a future version. Use component or service instead. Information about the automated or manual tool used",
+ "description": "[Deprecated] This will be removed in a future version. Use component or service instead. Information about the automated or manual tool used",
"additionalProperties": false,
"properties": {
"vendor": {
@@ -299,7 +731,7 @@
"description": "The name of the tool"
},
"version": {
- "type": "string",
+ "$ref": "#/definitions/version",
"title": "Tool Version",
"description": "The version of the tool"
},
@@ -319,36 +751,41 @@
},
"organizationalEntity": {
"type": "object",
- "title": "Organizational Entity Object",
+ "title": "Organizational Entity",
"description": "",
"additionalProperties": false,
"properties": {
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"name": {
"type": "string",
- "title": "Name",
+ "title": "Organization Name",
"description": "The name of the organization",
"examples": [
"Example Inc."
]
},
+ "address": {
+ "$ref": "#/definitions/postalAddress",
+ "title": "Organization Address",
+ "description": "The physical address (location) of the organization"
+ },
"url": {
"type": "array",
"items": {
"type": "string",
"format": "iri-reference"
},
- "title": "URL",
+ "title": "Organization URL(s)",
"description": "The URL of the organization. Multiple URLs are allowed.",
"examples": ["https://example.com"]
},
"contact": {
"type": "array",
- "title": "Contact",
+ "title": "Organizational Contact",
"description": "A contact at the organization. Multiple contacts are allowed.",
"items": {"$ref": "#/definitions/organizationalContact"}
}
@@ -356,14 +793,14 @@
},
"organizationalContact": {
"type": "object",
- "title": "Organizational Contact Object",
+ "title": "Organizational Contact",
"description": "",
"additionalProperties": false,
"properties": {
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"name": {
"type": "string",
@@ -388,7 +825,7 @@
},
"component": {
"type": "object",
- "title": "Component Object",
+ "title": "Component",
"required": [
"type",
"name"
@@ -409,33 +846,61 @@
"firmware",
"file",
"machine-learning-model",
- "data"
+ "data",
+ "cryptographic-asset"
],
+ "meta:enum": {
+ "application": "A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications.",
+ "framework": "A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries.",
+ "library": "A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing)) for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED.",
+ "container": "A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization).",
+ "platform": "A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms.",
+ "operating-system": "A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system).",
+ "device": "A hardware device such as a processor or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device. See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md).",
+ "device-driver": "A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver).",
+ "firmware": "A special type of software that provides low-level control over a device's hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware).",
+ "file": "A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files.",
+ "machine-learning-model": "A model based on training data that can make predictions or decisions without being explicitly programmed to do so.",
+ "data": "A collection of discrete values that convey information.",
+ "cryptographic-asset": "A cryptographic asset including algorithms, protocols, certificates, keys, tokens, and secrets."
+ },
"title": "Component Type",
- "description": "Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component. Types include:\n\n* __application__ = A software application. Refer to [https://en.wikipedia.org/wiki/Application_software](https://en.wikipedia.org/wiki/Application_software) for information about applications.\n* __framework__ = A software framework. Refer to [https://en.wikipedia.org/wiki/Software_framework](https://en.wikipedia.org/wiki/Software_framework) for information on how frameworks vary slightly from libraries.\n* __library__ = A software library. Refer to [https://en.wikipedia.org/wiki/Library_(computing)](https://en.wikipedia.org/wiki/Library_(computing))\n for information about libraries. All third-party and open source reusable components will likely be a library. If the library also has key features of a framework, then it should be classified as a framework. If not, or is unknown, then specifying library is RECOMMENDED.\n* __container__ = A packaging and/or runtime format, not specific to any particular technology, which isolates software inside the container from software outside of a container through virtualization technology. Refer to [https://en.wikipedia.org/wiki/OS-level_virtualization](https://en.wikipedia.org/wiki/OS-level_virtualization)\n* __platform__ = A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms.\n* __operating-system__ = A software operating system without regard to deployment model (i.e. installed on physical hardware, virtual machine, image, etc) Refer to [https://en.wikipedia.org/wiki/Operating_system](https://en.wikipedia.org/wiki/Operating_system)\n* __device__ = A hardware device such as a processor, or chip-set. A hardware device containing firmware SHOULD include a component for the physical hardware itself, and another component of type 'firmware' or 'operating-system' (whichever is relevant), describing information about the software running on the device.\n See also the list of [known device properties](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/device.md).\n* __device-driver__ = A special type of software that operates or controls a particular type of device. Refer to [https://en.wikipedia.org/wiki/Device_driver](https://en.wikipedia.org/wiki/Device_driver)\n* __firmware__ = A special type of software that provides low-level control over a devices hardware. Refer to [https://en.wikipedia.org/wiki/Firmware](https://en.wikipedia.org/wiki/Firmware)\n* __file__ = A computer file. Refer to [https://en.wikipedia.org/wiki/Computer_file](https://en.wikipedia.org/wiki/Computer_file) for information about files.\n* __machine-learning-model__ = A model based on training data that can make predictions or decisions without being explicitly programmed to do so.\n* __data__ = A collection of discrete values that convey information.",
+ "description": "Specifies the type of component. For software components, classify as application if no more specific appropriate classification is available or cannot be determined for the component.",
"examples": ["library"]
},
"mime-type": {
"type": "string",
"title": "Mime-Type",
- "description": "The optional mime-type of the component. When used on file components, the mime-type can provide additional context about the kind of file being represented such as an image, font, or executable. Some library or framework components may also have an associated mime-type.",
+ "description": "The optional mime-type of the component. When used on file components, the mime-type can provide additional context about the kind of file being represented, such as an image, font, or executable. Some library or framework components may also have an associated mime-type.",
"examples": ["image/jpeg"],
"pattern": "^[-+a-z0-9.]+/[-+a-z0-9.]+$"
},
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the component elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"supplier": {
"title": "Component Supplier",
"description": " The organization that supplied the component. The supplier may often be the manufacturer, but may also be a distributor or repackager.",
"$ref": "#/definitions/organizationalEntity"
},
+ "manufacturer": {
+ "title": "Component Manufacturer",
+ "description": "The organization that created the component.\nManufacturer is common in components created through automated processes. Components created through manual means may have `@.authors` instead.",
+ "$ref": "#/definitions/organizationalEntity"
+ },
+ "authors" :{
+ "type": "array",
+ "title": "Component Authors",
+ "description": "The person(s) who created the component.\nAuthors are common in components created through manual processes. Components created through automated means may have `@.manufacturer` instead.",
+ "items": {"$ref": "#/definitions/organizationalContact"}
+ },
"author": {
+ "deprecated": true,
"type": "string",
- "title": "Component Author",
- "description": "The person(s) or organization(s) that authored the component",
+ "title": "Component Author (legacy)",
+ "description": "[Deprecated] This will be removed in a future version. Use `@.authors` or `@.manufacturer` instead.\nThe person(s) or organization(s) that authored the component",
"examples": ["Acme Inc"]
},
"publisher": {
@@ -457,10 +922,9 @@
"examples": ["tomcat-catalina"]
},
"version": {
- "type": "string",
+ "$ref": "#/definitions/version",
"title": "Component Version",
- "description": "The component version. The version should ideally comply with semantic versioning but is not enforced.",
- "examples": ["9.0.14"]
+ "description": "The component version. The version should ideally comply with semantic versioning but is not enforced."
},
"description": {
"type": "string",
@@ -474,6 +938,11 @@
"optional",
"excluded"
],
+ "meta:enum": {
+ "required": "The component is required for runtime",
+ "optional": "The component is optional at runtime. Optional components are components that are not capable of being called due to them not being installed or otherwise accessible by any means. Components that are installed but due to configuration or other restrictions are prohibited from being called must be scoped as 'required'.",
+ "excluded": "Components that are excluded provide the ability to document component usage for test and other non-runtime purposes. Excluded components are not reachable within a call graph at runtime."
+ },
"title": "Component Scope",
"description": "Specifies the scope of the component. If scope is not specified, 'required' scope SHOULD be assumed by the consumer of the BOM.",
"default": "required"
@@ -481,6 +950,7 @@
"hashes": {
"type": "array",
"title": "Component Hashes",
+ "description": "The hashes of the component.",
"items": {"$ref": "#/definitions/hash"}
},
"licenses": {
@@ -495,25 +965,42 @@
},
"cpe": {
"type": "string",
- "title": "Component Common Platform Enumeration (CPE)",
- "description": "Specifies a well-formed CPE name that conforms to the CPE 2.2 or 2.3 specification. See [https://nvd.nist.gov/products/cpe](https://nvd.nist.gov/products/cpe)",
+ "title": "Common Platform Enumeration (CPE)",
+ "description": "Asserts the identity of the component using CPE. The CPE must conform to the CPE 2.2 or 2.3 specification. See [https://nvd.nist.gov/products/cpe](https://nvd.nist.gov/products/cpe). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.",
"examples": ["cpe:2.3:a:acme:component_framework:-:*:*:*:*:*:*:*"]
},
"purl": {
"type": "string",
- "title": "Component Package URL (purl)",
- "description": "Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec)",
+ "title": "Package URL (purl)",
+ "description": "Asserts the identity of the component using package-url (purl). The purl, if specified, MUST be valid and conform to the specification defined at: [https://github.com/package-url/purl-spec](https://github.com/package-url/purl-spec). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.",
"examples": ["pkg:maven/com.acme/tomcat-catalina@9.0.14?packaging=jar"]
},
+ "omniborId": {
+ "type": "array",
+ "title": "OmniBOR Artifact Identifier (gitoid)",
+ "description": "Asserts the identity of the component using the OmniBOR Artifact ID. The OmniBOR, if specified, MUST be valid and conform to the specification defined at: [https://www.iana.org/assignments/uri-schemes/prov/gitoid](https://www.iana.org/assignments/uri-schemes/prov/gitoid). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.",
+ "items": { "type": "string" },
+ "examples": [
+ "gitoid:blob:sha1:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
+ "gitoid:blob:sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
+ ]
+ },
+ "swhid": {
+ "type": "array",
+ "title": "SoftWare Heritage Identifier",
+ "description": "Asserts the identity of the component using the Software Heritage persistent identifier (SWHID). The SWHID, if specified, MUST be valid and conform to the specification defined at: [https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html](https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity.",
+ "items": { "type": "string" },
+ "examples": ["swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2"]
+ },
"swid": {
"$ref": "#/definitions/swid",
"title": "SWID Tag",
- "description": "Specifies metadata and content for [ISO-IEC 19770-2 Software Identification (SWID) Tags](https://www.iso.org/standard/65666.html)."
+ "description": "Asserts the identity of the component using [ISO-IEC 19770-2 Software Identification (SWID) Tags](https://www.iso.org/standard/65666.html). Refer to `@.evidence.identity` to optionally provide evidence that substantiates the assertion of the component's identity."
},
"modified": {
"type": "boolean",
"title": "Component Modified From Original",
- "description": "[Deprecated] - DO NOT USE. This will be removed in a future version. Use the pedigree element instead to supply information on exactly how the component was modified. A boolean value indicating if the component has been modified from the original. A value of true indicates the component is a derivative of the original. A value of false indicates the component has not been modified from the original."
+ "description": "[Deprecated] This will be removed in a future version. Use the pedigree element instead to supply information on exactly how the component was modified. A boolean value indicating if the component has been modified from the original. A value of true indicates the component is a derivative of the original. A value of false indicates the component has not been modified from the original."
},
"pedigree": {
"type": "object",
@@ -536,7 +1023,7 @@
"variants": {
"type": "array",
"title": "Variants",
- "description": "Variants describe relations where the relationship between the components are not known. For example, if Component A contains nearly identical code to Component B. They are both related, but it is unclear if one is derived from the other, or if they share a common ancestor.",
+ "description": "Variants describe relations where the relationship between the components is not known. For example, if Component A contains nearly identical code to Component B. They are both related, but it is unclear if one is derived from the other, or if they share a common ancestor.",
"items": {"$ref": "#/definitions/component"}
},
"commits": {
@@ -548,7 +1035,7 @@
"patches": {
"type": "array",
"title": "Patches",
- "description": ">A list of zero or more patches describing how the component deviates from an ancestor, descendant, or variant. Patches may be complimentary to commits or may be used in place of commits.",
+ "description": ">A list of zero or more patches describing how the component deviates from an ancestor, descendant, or variant. Patches may be complementary to commits or may be used in place of commits.",
"items": {"$ref": "#/definitions/patch"}
},
"notes": {
@@ -562,7 +1049,7 @@
"type": "array",
"items": {"$ref": "#/definitions/externalReference"},
"title": "External References",
- "description": "External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
},
"components": {
"type": "array",
@@ -581,9 +1068,9 @@
"title": "Release notes",
"description": "Specifies optional release notes."
},
- "modelCard": {
+ "modelCard": {
"$ref": "#/definitions/modelCard",
- "title": "Machine Learning Model Card"
+ "title": "AI/ML Model Card"
},
"data": {
"type": "array",
@@ -591,12 +1078,20 @@
"title": "Data",
"description": "This object SHOULD be specified for any component of type `data` and MUST NOT be specified for other component types."
},
+ "cryptoProperties": {
+ "$ref": "#/definitions/cryptoProperties",
+ "title": "Cryptographic Properties"
+ },
"properties": {
"type": "array",
"title": "Properties",
"description": "Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.",
"items": {"$ref": "#/definitions/property"}
},
+ "tags": {
+ "$ref": "#/definitions/tags",
+ "title": "Tags"
+ },
"signature": {
"$ref": "#/definitions/signature",
"title": "Signature",
@@ -676,7 +1171,10 @@
"description": "Specifies the optional encoding the text is represented in.",
"enum": [
"base64"
- ]
+ ],
+ "meta:enum": {
+ "base64": "Base64 is a binary-to-text encoding scheme that represents binary data in an ASCII string."
+ }
},
"content": {
"type": "string",
@@ -687,7 +1185,7 @@
},
"hash": {
"type": "object",
- "title": "Hash Objects",
+ "title": "Hash",
"required": [
"alg",
"content"
@@ -704,6 +1202,8 @@
},
"hash-alg": {
"type": "string",
+ "title": "Hash Algorithm",
+ "description": "The algorithm that generated the hash value.",
"enum": [
"MD5",
"SHA-1",
@@ -717,18 +1217,18 @@
"BLAKE2b-384",
"BLAKE2b-512",
"BLAKE3"
- ],
- "title": "Hash Algorithm"
+ ]
},
"hash-content": {
"type": "string",
- "title": "Hash Content (value)",
+ "title": "Hash Value",
+ "description": "The value of the hash.",
"examples": ["3942447fac867ae5cdb3229b658f4d48"],
"pattern": "^([a-fA-F0-9]{32}|[a-fA-F0-9]{40}|[a-fA-F0-9]{64}|[a-fA-F0-9]{96}|[a-fA-F0-9]{128})$"
},
"license": {
"type": "object",
- "title": "License Object",
+ "title": "License",
"oneOf": [
{
"required": ["id"]
@@ -742,7 +1242,7 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"id": {
"$ref": "spdx.schema.json",
@@ -756,6 +1256,9 @@
"description": "If SPDX does not define the license used, this field may be used to provide the license name",
"examples": ["Acme Software License"]
},
+ "acknowledgement": {
+ "$ref": "#/definitions/licenseAcknowledgementEnumeration"
+ },
"text": {
"title": "License text",
"description": "An optional way to include the textual content of a license.",
@@ -868,7 +1371,7 @@
"licenseTypes": {
"type": "array",
"title": "License Type",
- "description": "The type of license(s) that was granted to the licensee\n\n* __academic__ = A license that grants use of software solely for the purpose of education or research.\n* __appliance__ = A license covering use of software embedded in a specific piece of hardware.\n* __client-access__ = A Client Access License (CAL) allows client computers to access services provided by server software.\n* __concurrent-user__ = A Concurrent User license (aka floating license) limits the number of licenses for a software application and licenses are shared among a larger number of users.\n* __core-points__ = A license where the core of a computer's processor is assigned a specific number of points.\n* __custom-metric__ = A license for which consumption is measured by non-standard metrics.\n* __device__ = A license that covers a defined number of installations on computers and other types of devices.\n* __evaluation__ = A license that grants permission to install and use software for trial purposes.\n* __named-user__ = A license that grants access to the software to one or more pre-defined users.\n* __node-locked__ = A license that grants access to the software on one or more pre-defined computers or devices.\n* __oem__ = An Original Equipment Manufacturer license that is delivered with hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.\n* __perpetual__ = A license where the software is sold on a one-time basis and the licensee can use a copy of the software indefinitely.\n* __processor-points__ = A license where each installation consumes points per processor.\n* __subscription__ = A license where the licensee pays a fee to use the software or service.\n* __user__ = A license that grants access to the software or service by a specified number of users.\n* __other__ = Another license type.\n",
+ "description": "The type of license(s) that was granted to the licensee.",
"items": {
"type": "string",
"enum": [
@@ -888,7 +1391,25 @@
"subscription",
"user",
"other"
- ]
+ ],
+ "meta:enum": {
+ "academic": "A license that grants use of software solely for the purpose of education or research.",
+ "appliance": "A license covering use of software embedded in a specific piece of hardware.",
+ "client-access": "A Client Access License (CAL) allows client computers to access services provided by server software.",
+ "concurrent-user": "A Concurrent User license (aka floating license) limits the number of licenses for a software application and licenses are shared among a larger number of users.",
+ "core-points": "A license where the core of a computer's processor is assigned a specific number of points.",
+ "custom-metric": "A license for which consumption is measured by non-standard metrics.",
+ "device": "A license that covers a defined number of installations on computers and other types of devices.",
+ "evaluation": "A license that grants permission to install and use software for trial purposes.",
+ "named-user": "A license that grants access to the software to one or more pre-defined users.",
+ "node-locked": "A license that grants access to the software on one or more pre-defined computers or devices.",
+ "oem": "An Original Equipment Manufacturer license that is delivered with hardware, cannot be transferred to other hardware, and is valid for the life of the hardware.",
+ "perpetual": "A license where the software is sold on a one-time basis and the licensee can use a copy of the software indefinitely.",
+ "processor-points": "A license where each installation consumes points per processor.",
+ "subscription": "A license where the licensee pays a fee to use the software or service.",
+ "user": "A license that grants access to the software or service by a specified number of users.",
+ "other": "Another license type."
+ }
}
},
"lastRenewal": {
@@ -913,6 +1434,19 @@
}
}
},
+ "licenseAcknowledgementEnumeration": {
+ "title": "License Acknowledgement",
+ "description": "Declared licenses and concluded licenses represent two different stages in the licensing process within software development. Declared licenses refer to the initial intention of the software authors regarding the licensing terms under which their code is released. On the other hand, concluded licenses are the result of a comprehensive analysis of the project's codebase to identify and confirm the actual licenses of the components used, which may differ from the initially declared licenses. While declared licenses provide an upfront indication of the licensing intentions, concluded licenses offer a more thorough understanding of the actual licensing within a project, facilitating proper compliance and risk management. Observed licenses are defined in `@.evidence.licenses`. Observed licenses form the evidence necessary to substantiate a concluded license.",
+ "type": "string",
+ "enum": [
+ "declared",
+ "concluded"
+ ],
+ "meta:enum": {
+ "declared": "Declared licenses represent the initial intentions of authors regarding the licensing terms of their code.",
+ "concluded": "Concluded licenses are verified and confirmed."
+ }
+ },
"licenseChoice": {
"title": "License Choice",
"description": "EITHER (list of SPDX licenses and/or named licenses) OR (tuple of one SPDX License Expression)",
@@ -924,6 +1458,7 @@
"type": "array",
"items": {
"type": "object",
+ "title": "License",
"required": ["license"],
"additionalProperties": false,
"properties": {
@@ -946,15 +1481,19 @@
"expression": {
"type": "string",
"title": "SPDX License Expression",
+ "description": "A valid SPDX license expression.\nRefer to https://spdx.org/specifications for syntax requirements",
"examples": [
"Apache-2.0 AND (MIT OR GPL-2.0-only)",
"GPL-3.0-only WITH Classpath-exception-2.0"
]
},
+ "acknowledgement": {
+ "$ref": "#/definitions/licenseAcknowledgementEnumeration"
+ },
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the license elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
}
}
}]
@@ -1012,12 +1551,18 @@
"backport",
"cherry-pick"
],
- "title": "Type",
- "description": "Specifies the purpose for the patch including the resolution of defects, security issues, or new behavior or functionality.\n\n* __unofficial__ = A patch which is not developed by the creators or maintainers of the software being patched. Refer to [https://en.wikipedia.org/wiki/Unofficial_patch](https://en.wikipedia.org/wiki/Unofficial_patch)\n* __monkey__ = A patch which dynamically modifies runtime behavior. Refer to [https://en.wikipedia.org/wiki/Monkey_patch](https://en.wikipedia.org/wiki/Monkey_patch)\n* __backport__ = A patch which takes code from a newer version of software and applies it to older versions of the same software. Refer to [https://en.wikipedia.org/wiki/Backporting](https://en.wikipedia.org/wiki/Backporting)\n* __cherry-pick__ = A patch created by selectively applying commits from other versions or branches of the same software."
+ "meta:enum": {
+ "unofficial": "A patch which is not developed by the creators or maintainers of the software being patched. Refer to [https://en.wikipedia.org/wiki/Unofficial_patch](https://en.wikipedia.org/wiki/Unofficial_patch).",
+ "monkey": "A patch which dynamically modifies runtime behavior. Refer to [https://en.wikipedia.org/wiki/Monkey_patch](https://en.wikipedia.org/wiki/Monkey_patch).",
+ "backport": "A patch which takes code from a newer version of the software and applies it to older versions of the same software. Refer to [https://en.wikipedia.org/wiki/Backporting](https://en.wikipedia.org/wiki/Backporting).",
+ "cherry-pick": "A patch created by selectively applying commits from other versions or branches of the same software."
+ },
+ "title": "Patch Type",
+ "description": "Specifies the purpose for the patch including the resolution of defects, security issues, or new behavior or functionality."
},
"diff": {
"title": "Diff",
- "description": "The patch file (or diff) that show changes. Refer to [https://en.wikipedia.org/wiki/Diff](https://en.wikipedia.org/wiki/Diff)",
+ "description": "The patch file (or diff) that shows changes. Refer to [https://en.wikipedia.org/wiki/Diff](https://en.wikipedia.org/wiki/Diff)",
"$ref": "#/definitions/diff"
},
"resolves": {
@@ -1031,7 +1576,7 @@
"diff": {
"type": "object",
"title": "Diff",
- "description": "The patch file (or diff) that show changes. Refer to https://en.wikipedia.org/wiki/Diff",
+ "description": "The patch file (or diff) that shows changes. Refer to https://en.wikipedia.org/wiki/Diff",
"additionalProperties": false,
"properties": {
"text": {
@@ -1049,7 +1594,7 @@
},
"issue": {
"type": "object",
- "title": "Diff",
+ "title": "Issue",
"description": "An individual issue that has been resolved.",
"required": [
"type"
@@ -1063,22 +1608,27 @@
"enhancement",
"security"
],
- "title": "Type",
+ "meta:enum": {
+ "defect": "A fault, flaw, or bug in software.",
+ "enhancement": "A new feature or behavior in software.",
+ "security": "A special type of defect which impacts security."
+ },
+ "title": "Issue Type",
"description": "Specifies the type of issue"
},
"id": {
"type": "string",
- "title": "ID",
+ "title": "Issue ID",
"description": "The identifier of the issue assigned by the source of the issue"
},
"name": {
"type": "string",
- "title": "Name",
+ "title": "Issue Name",
"description": "The name of the issue"
},
"description": {
"type": "string",
- "title": "Description",
+ "title": "Issue Description",
"description": "A description of the issue"
},
"source": {
@@ -1090,7 +1640,12 @@
"name": {
"type": "string",
"title": "Name",
- "description": "The name of the source. For example 'National Vulnerability Database', 'NVD', and 'Apache'"
+ "description": "The name of the source.",
+ "examples": [
+ "National Vulnerability Database",
+ "NVD",
+ "Apache"
+ ]
},
"url": {
"type": "string",
@@ -1140,7 +1695,7 @@
"externalReference": {
"type": "object",
"title": "External Reference",
- "description": "External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.",
"required": [
"url",
"type"
@@ -1170,7 +1725,7 @@
"type": {
"type": "string",
"title": "Type",
- "description": "Specifies the type of external reference.\n\n* __vcs__ = Version Control System\n* __issue-tracker__ = Issue or defect tracking system, or an Application Lifecycle Management (ALM) system\n* __website__ = Website\n* __advisories__ = Security advisories\n* __bom__ = Bill of Materials (SBOM, OBOM, HBOM, SaaSBOM, etc)\n* __mailing-list__ = Mailing list or discussion group\n* __social__ = Social media account\n* __chat__ = Real-time chat platform\n* __documentation__ = Documentation, guides, or how-to instructions\n* __support__ = Community or commercial support\n* __distribution__ = Direct or repository download location\n* __distribution-intake__ = The location where a component was published to. This is often the same as \"distribution\" but may also include specialized publishing processes that act as an intermediary\n* __license__ = The URL to the license file. If a license URL has been defined in the license node, it should also be defined as an external reference for completeness\n* __build-meta__ = Build-system specific meta file (i.e. pom.xml, package.json, .nuspec, etc)\n* __build-system__ = URL to an automated build system\n* __release-notes__ = URL to release notes\n* __security-contact__ = Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies the records containing DNS Security TXT\n* __model-card__ = A model card describes the intended uses of a machine learning model, potential limitations, biases, ethical considerations, training parameters, datasets used to train the model, performance metrics, and other relevant data useful for ML transparency\n* __log__ = A record of events that occurred in a computer system or application, such as problems, errors, or information on current operations\n* __configuration__ = Parameters or settings that may be used by other components or services\n* __evidence__ = Information used to substantiate a claim\n* __formulation__ = Describes how a component or service was manufactured or deployed\n* __attestation__ = Human or machine-readable statements containing facts, evidence, or testimony\n* __threat-model__ = An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format\n* __adversary-model__ = The defined assumptions, goals, and capabilities of an adversary.\n* __risk-assessment__ = Identifies and analyzes the potential of future events that may negatively impact individuals, assets, and/or the environment. Risk assessments may also include judgments on the tolerability of each risk.\n* __vulnerability-assertion__ = A Vulnerability Disclosure Report (VDR) which asserts the known and previously unknown vulnerabilities that affect a component, service, or product including the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on a component, service, or product.\n* __exploitability-statement__ = A Vulnerability Exploitability eXchange (VEX) which asserts the known vulnerabilities that do not affect a product, product family, or organization, and optionally the ones that do. The VEX should include the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on the product, product family, or organization.\n* __pentest-report__ = Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test\n* __static-analysis-report__ = SARIF or proprietary machine or human-readable report for which static analysis has identified code quality, security, and other potential issues with the source code\n* __dynamic-analysis-report__ = Dynamic analysis report that has identified issues such as vulnerabilities and misconfigurations\n* __runtime-analysis-report__ = Report generated by analyzing the call stack of a running application\n* __component-analysis-report__ = Report generated by Software Composition Analysis (SCA), container analysis, or other forms of component analysis\n* __maturity-report__ = Report containing a formal assessment of an organization, business unit, or team against a maturity model\n* __certification-report__ = Industry, regulatory, or other certification from an accredited (if applicable) certification body\n* __quality-metrics__ = Report or system in which quality metrics can be obtained\n* __codified-infrastructure__ = Code or configuration that defines and provisions virtualized infrastructure, commonly referred to as Infrastructure as Code (IaC)\n* __poam__ = Plans of Action and Milestones (POAM) compliment an \"attestation\" external reference. POAM is defined by NIST as a \"document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones\".\n* __other__ = Use this if no other types accurately describe the purpose of the external reference",
+ "description": "Specifies the type of external reference.",
"enum": [
"vcs",
"issue-tracker",
@@ -1182,6 +1737,7 @@
"chat",
"documentation",
"support",
+ "source-distribution",
"distribution",
"distribution-intake",
"license",
@@ -1210,8 +1766,56 @@
"codified-infrastructure",
"quality-metrics",
"poam",
+ "electronic-signature",
+ "digital-signature",
+ "rfc-9116",
"other"
- ]
+ ],
+ "meta:enum": {
+ "vcs": "Version Control System",
+ "issue-tracker": "Issue or defect tracking system, or an Application Lifecycle Management (ALM) system",
+ "website": "Website",
+ "advisories": "Security advisories",
+ "bom": "Bill of Materials (SBOM, OBOM, HBOM, SaaSBOM, etc)",
+ "mailing-list": "Mailing list or discussion group",
+ "social": "Social media account",
+ "chat": "Real-time chat platform",
+ "documentation": "Documentation, guides, or how-to instructions",
+ "support": "Community or commercial support",
+ "source-distribution": "The location where the source code distributable can be obtained. This is often an archive format such as zip or tgz. The source-distribution type complements use of the version control (vcs) type.",
+ "distribution": "Direct or repository download location",
+ "distribution-intake": "The location where a component was published to. This is often the same as \"distribution\" but may also include specialized publishing processes that act as an intermediary.",
+ "license": "The reference to the license file. If a license URL has been defined in the license node, it should also be defined as an external reference for completeness.",
+ "build-meta": "Build-system specific meta file (i.e. pom.xml, package.json, .nuspec, etc)",
+ "build-system": "Reference to an automated build system",
+ "release-notes": "Reference to release notes",
+ "security-contact": "Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies the records containing DNS Security TXT.",
+ "model-card": "A model card describes the intended uses of a machine learning model, potential limitations, biases, ethical considerations, training parameters, datasets used to train the model, performance metrics, and other relevant data useful for ML transparency.",
+ "log": "A record of events that occurred in a computer system or application, such as problems, errors, or information on current operations.",
+ "configuration": "Parameters or settings that may be used by other components or services.",
+ "evidence": "Information used to substantiate a claim.",
+ "formulation": "Describes how a component or service was manufactured or deployed.",
+ "attestation": "Human or machine-readable statements containing facts, evidence, or testimony.",
+ "threat-model": "An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format.",
+ "adversary-model": "The defined assumptions, goals, and capabilities of an adversary.",
+ "risk-assessment": "Identifies and analyzes the potential of future events that may negatively impact individuals, assets, and/or the environment. Risk assessments may also include judgments on the tolerability of each risk.",
+ "vulnerability-assertion": "A Vulnerability Disclosure Report (VDR) which asserts the known and previously unknown vulnerabilities that affect a component, service, or product including the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on a component, service, or product.",
+ "exploitability-statement": "A Vulnerability Exploitability eXchange (VEX) which asserts the known vulnerabilities that do not affect a product, product family, or organization, and optionally the ones that do. The VEX should include the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on the product, product family, or organization.",
+ "pentest-report": "Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test.",
+ "static-analysis-report": "SARIF or proprietary machine or human-readable report for which static analysis has identified code quality, security, and other potential issues with the source code.",
+ "dynamic-analysis-report": "Dynamic analysis report that has identified issues such as vulnerabilities and misconfigurations.",
+ "runtime-analysis-report": "Report generated by analyzing the call stack of a running application.",
+ "component-analysis-report": "Report generated by Software Composition Analysis (SCA), container analysis, or other forms of component analysis.",
+ "maturity-report": "Report containing a formal assessment of an organization, business unit, or team against a maturity model.",
+ "certification-report": "Industry, regulatory, or other certification from an accredited (if applicable) certification body.",
+ "codified-infrastructure": "Code or configuration that defines and provisions virtualized infrastructure, commonly referred to as Infrastructure as Code (IaC).",
+ "quality-metrics": "Report or system in which quality metrics can be obtained.",
+ "poam": "Plans of Action and Milestones (POAM) complement an \"attestation\" external reference. POAM is defined by NIST as a \"document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones\".",
+ "electronic-signature": "An e-signature is commonly a scanned representation of a written signature or a stylized script of the person's name.",
+ "digital-signature": "A signature that leverages cryptography, typically public/private key pairs, which provides strong authenticity verification.",
+ "rfc-9116": "Document that complies with RFC-9116 (A File Format to Aid in Security Vulnerability Disclosure)",
+ "other": "Use this if no other types accurately describe the purpose of the external reference."
+ }
},
"hashes": {
"type": "array",
@@ -1224,7 +1828,7 @@
"dependency": {
"type": "object",
"title": "Dependency",
- "description": "Defines the direct dependencies of a component or service. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of a object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs.",
+ "description": "Defines the direct dependencies of a component, service, or the components provided/implemented by a given component. Components or services that do not have their own dependencies MUST be declared as empty elements within the graph. Components or services that are not represented in the dependency graph MAY have unknown dependencies. It is RECOMMENDED that implementations assume this to be opaque and not an indicator of an object being dependency-free. It is RECOMMENDED to leverage compositions to indicate unknown dependency graphs.",
"required": [
"ref"
],
@@ -1243,12 +1847,21 @@
},
"title": "Depends On",
"description": "The bom-ref identifiers of the components or services that are dependencies of this dependency object."
+ },
+ "provides": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "$ref": "#/definitions/refLinkType"
+ },
+ "title": "Provides",
+ "description": "The bom-ref identifiers of the components or services that define a given specification or standard, which are provided or implemented by this dependency object.\nFor example, a cryptographic library which implements a cryptographic algorithm. A component which implements another component does not imply that the implementation is in use."
}
}
},
"service": {
"type": "object",
- "title": "Service Object",
+ "title": "Service",
"required": [
"name"
],
@@ -1257,7 +1870,7 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the service elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the service elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"provider": {
"title": "Provider",
@@ -1277,10 +1890,9 @@
"examples": ["ticker-service"]
},
"version": {
- "type": "string",
+ "$ref": "#/definitions/version",
"title": "Service Version",
- "description": "The service version.",
- "examples": ["1.0.0"]
+ "description": "The service version."
},
"description": {
"type": "string",
@@ -1326,7 +1938,7 @@
"type": "array",
"items": {"$ref": "#/definitions/externalReference"},
"title": "External References",
- "description": "External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
},
"services": {
"type": "array",
@@ -1346,6 +1958,10 @@
"description": "Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.",
"items": {"$ref": "#/definitions/property"}
},
+ "tags": {
+ "$ref": "#/definitions/tags",
+ "title": "Tags"
+ },
"signature": {
"$ref": "#/definitions/signature",
"title": "Signature",
@@ -1365,7 +1981,7 @@
"flow": {
"$ref": "#/definitions/dataFlowDirection",
"title": "Directional Flow",
- "description": "Specifies the flow direction of the data. Direction is relative to the service. Inbound flow states that data enters the service. Outbound flow states that data leaves the service. Bi-directional states that data flows both ways, and unknown states that the direction is not known."
+ "description": "Specifies the flow direction of the data. Direction is relative to the service. Inbound flow states that data enters the service. Outbound flow states that data leaves the service. Bi-directional states that data flows both ways and unknown states that the direction is not known."
},
"classification": {
"$ref": "#/definitions/dataClassification"
@@ -1387,7 +2003,6 @@
]
},
"governance": {
- "type": "object",
"title": "Data Governance",
"$ref": "#/definitions/dataGovernance"
},
@@ -1437,10 +2052,15 @@
"bi-directional",
"unknown"
],
+ "meta:enum": {
+ "inbound": "Data that enters a service.",
+ "outbound": "Data that exits a service.",
+ "bi-directional": "Data flows in and out of the service.",
+ "unknown": "The directional flow of data is not known."
+ },
"title": "Data flow direction",
- "description": "Specifies the flow direction of the data. Direction is relative to the service. Inbound flow states that data enters the service. Outbound flow states that data leaves the service. Bi-directional states that data flows both ways, and unknown states that the direction is not known."
+ "description": "Specifies the flow direction of the data. Direction is relative to the service."
},
-
"copyright": {
"type": "object",
"title": "Copyright",
@@ -1462,89 +2082,21 @@
"additionalProperties": false,
"properties": {
"identity": {
- "type": "object",
- "description": "Evidence that substantiates the identity of a component.",
- "required": [ "field" ],
- "additionalProperties": false,
- "properties": {
- "field": {
- "type": "string",
- "enum": [
- "group", "name", "version", "purl", "cpe", "swid", "hash"
- ],
- "title": "Field",
- "description": "The identity field of the component which the evidence describes."
- },
- "confidence": {
- "type": "number",
- "minimum": 0,
- "maximum": 1,
- "title": "Confidence",
- "description": "The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence."
- },
- "methods": {
+ "title": "Identity Evidence",
+ "description": "Evidence that substantiates the identity of a component. The identity may be an object or an array of identity objects. Support for specifying identity as a single object was introduced in CycloneDX v1.5. Arrays were introduced in v1.6. It is RECOMMENDED that all implementations use arrays, even if only one identity object is specified.",
+ "oneOf" : [
+ {
"type": "array",
- "title": "Methods",
- "description": "The methods used to extract and/or analyze the evidence.",
- "items": {
- "type": "object",
- "required": [
- "technique" ,
- "confidence"
- ],
- "additionalProperties": false,
- "properties": {
- "technique": {
- "title": "Technique",
- "description": "The technique used in this method of analysis.",
- "type": "string",
- "enum": [
- "source-code-analysis",
- "binary-analysis",
- "manifest-analysis",
- "ast-fingerprint",
- "hash-comparison",
- "instrumentation",
- "dynamic-analysis",
- "filename",
- "attestation",
- "other"
- ]
- },
- "confidence": {
- "type": "number",
- "minimum": 0,
- "maximum": 1,
- "title": "Confidence",
- "description": "The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence."
- },
- "value": {
- "type": "string",
- "title": "Value",
- "description": "The value or contents of the evidence."
- }
- }
- }
+ "title": "Array of Identity Objects",
+ "items": { "$ref": "#/definitions/componentIdentityEvidence" }
},
- "tools": {
- "type": "array",
- "uniqueItems": true,
- "items": {
- "anyOf": [
- {
- "title": "Ref",
- "$ref": "#/definitions/refLinkType"
- },
- {
- "title": "BOM-Link Element",
- "$ref": "#/definitions/bomLinkElementType"
- }
- ]
- },
- "title": "BOM References",
- "description": "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation."
+ {
+ "title": "A Single Identity Object",
+ "description": "[Deprecated]",
+ "$ref": "#/definitions/componentIdentityEvidence",
+ "deprecated": true
}
- }
+ ]
},
"occurrences": {
"type": "array",
@@ -1558,24 +2110,48 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the occurrence elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the occurrence elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"location": {
"type": "string",
"title": "Location",
"description": "The location or path to where the component was found."
+ },
+ "line": {
+ "type": "integer",
+ "minimum": 0,
+ "title": "Line Number",
+ "description": "The line number where the component was found."
+ },
+ "offset": {
+ "type": "integer",
+ "minimum": 0,
+ "title": "Offset",
+ "description": "The offset where the component was found."
+ },
+ "symbol": {
+ "type": "string",
+ "title": "Symbol",
+ "description": "The symbol name that was found associated with the component."
+ },
+ "additionalContext": {
+ "type": "string",
+ "title": "Additional Context",
+ "description": "Any additional context of the detected component (e.g. a code snippet)."
}
}
}
},
"callstack": {
"type": "object",
+ "title": "Call Stack",
"description": "Evidence of the components use through the callstack.",
"additionalProperties": false,
"properties": {
"frames": {
"type": "array",
- "title": "Methods",
+ "title": "Frames",
+ "description": "Within a call stack, a frame is a discrete unit that encapsulates an execution context, including local variables, parameters, and the return address. As function calls are made, frames are pushed onto the stack, forming an array-like structure that orchestrates the flow of program execution and manages the sequence of function invocations.",
"items": {
"type": "object",
"required": [
@@ -1628,12 +2204,13 @@
},
"licenses": {
"$ref": "#/definitions/licenseChoice",
- "title": "Component License(s)"
+ "title": "License Evidence"
},
"copyright": {
"type": "array",
"items": {"$ref": "#/definitions/copyright"},
- "title": "Copyright"
+ "title": "Copyright Evidence",
+ "description": "Copyright evidence captures intellectual property assertions, providing evidence of possible ownership and legal protection."
}
}
},
@@ -1648,12 +2225,12 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the composition elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the composition elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"aggregate": {
"$ref": "#/definitions/aggregateType",
"title": "Aggregate",
- "description": "Specifies an aggregate type that describe how complete a relationship is.\n\n* __complete__ = The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist.\n* __incomplete__ = The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies.\n* __incomplete_first_party_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented.\n* __incomplete_first_party_proprietary_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.\n* __incomplete_first_party_opensource_only__ = The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource.\n* __incomplete_third_party_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented.\n* __incomplete_third_party_proprietary_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.\n* __incomplete_third_party_opensource_only__ = The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.\n* __unknown__ = The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive.\n* __not_specified__ = The relationship completeness is not specified.\n"
+ "description": "Specifies an aggregate type that describe how complete a relationship is."
},
"assemblies": {
"type": "array",
@@ -1712,12 +2289,27 @@
"incomplete_third_party_opensource_only",
"unknown",
"not_specified"
- ]
+ ],
+ "meta:enum": {
+ "complete": "The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist.",
+ "incomplete": "The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies.",
+ "incomplete_first_party_only": "The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented.",
+ "incomplete_first_party_proprietary_only": "The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.",
+ "incomplete_first_party_opensource_only": "The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource.",
+ "incomplete_third_party_only": "The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented.",
+ "incomplete_third_party_proprietary_only": "The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.",
+ "incomplete_third_party_opensource_only": "The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.",
+ "unknown": "The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive.",
+ "not_specified": "The relationship completeness is not specified."
+ }
},
"property": {
"type": "object",
"title": "Lightweight name-value pair",
"description": "Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.",
+ "required": [
+ "name"
+ ],
"properties": {
"name": {
"type": "string",
@@ -1729,7 +2321,8 @@
"title": "Value",
"description": "The value of the property."
}
- }
+ },
+ "additionalProperties": false
},
"localeType": {
"type": "string",
@@ -1819,12 +2412,8 @@
"description": "One or more alternate names the release may be referred to. This may include unofficial terms used by development and marketing teams (e.g. code names)."
},
"tags": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "title": "Tags",
- "description": "One or more tags that may aid in search or retrieval of the release note."
+ "$ref": "#/definitions/tags",
+ "title": "Tags"
},
"resolves": {
"type": "array",
@@ -1884,12 +2473,21 @@
"info",
"none",
"unknown"
- ]
+ ],
+ "meta:enum": {
+ "critical": "Critical severity",
+ "high": "High severity",
+ "medium": "Medium severity",
+ "low": "Low severity",
+ "info": "Informational warning.",
+ "none": "None",
+ "unknown": "The severity is not known"
+ }
},
"scoreMethod": {
"type": "string",
"title": "Method",
- "description": "Specifies the severity or risk scoring methodology or standard used.\n\n* CVSSv2 - [Common Vulnerability Scoring System v2](https://www.first.org/cvss/v2/)\n* CVSSv3 - [Common Vulnerability Scoring System v3](https://www.first.org/cvss/v3-0/)\n* CVSSv31 - [Common Vulnerability Scoring System v3.1](https://www.first.org/cvss/v3-1/)\n* CVSSv4 - [Common Vulnerability Scoring System v4](https://www.first.org/cvss/v4-0/)\n* OWASP - [OWASP Risk Rating Methodology](https://owasp.org/www-community/OWASP_Risk_Rating_Methodology)\n* SSVC - [Stakeholder Specific Vulnerability Categorization](https://github.com/CERTCC/SSVC) (all versions)",
+ "description": "Specifies the severity or risk scoring methodology or standard used.",
"enum": [
"CVSSv2",
"CVSSv3",
@@ -1898,12 +2496,21 @@
"OWASP",
"SSVC",
"other"
- ]
+ ],
+ "meta:enum": {
+ "CVSSv2": "Common Vulnerability Scoring System v2.0",
+ "CVSSv3": "Common Vulnerability Scoring System v3.0",
+ "CVSSv31": "Common Vulnerability Scoring System v3.1",
+ "CVSSv4": "Common Vulnerability Scoring System v4.0",
+ "OWASP": "OWASP Risk Rating Methodology",
+ "SSVC": "Stakeholder Specific Vulnerability Categorization",
+ "other": "Another severity or risk scoring methodology"
+ }
},
"impactAnalysisState": {
"type": "string",
"title": "Impact Analysis State",
- "description": "Declares the current state of an occurrence of a vulnerability, after automated or manual analysis. \n\n* __resolved__ = the vulnerability has been remediated. \n* __resolved\\_with\\_pedigree__ = the vulnerability has been remediated and evidence of the changes are provided in the affected components pedigree containing verifiable commit history and/or diff(s). \n* __exploitable__ = the vulnerability may be directly or indirectly exploitable. \n* __in\\_triage__ = the vulnerability is being investigated. \n* __false\\_positive__ = the vulnerability is not specific to the component or service and was falsely identified or associated. \n* __not\\_affected__ = the component or service is not affected by the vulnerability. Justification should be specified for all not_affected cases.",
+ "description": "Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.",
"enum": [
"resolved",
"resolved_with_pedigree",
@@ -1911,12 +2518,20 @@
"in_triage",
"false_positive",
"not_affected"
- ]
+ ],
+ "meta:enum": {
+ "resolved": "The vulnerability has been remediated.",
+ "resolved_with_pedigree": "The vulnerability has been remediated and evidence of the changes are provided in the affected components pedigree containing verifiable commit history and/or diff(s).",
+ "exploitable": "The vulnerability may be directly or indirectly exploitable.",
+ "in_triage": "The vulnerability is being investigated.",
+ "false_positive": "The vulnerability is not specific to the component or service and was falsely identified or associated.",
+ "not_affected": "The component or service is not affected by the vulnerability. Justification should be specified for all not_affected cases."
+ }
},
"impactAnalysisJustification": {
"type": "string",
"title": "Impact Analysis Justification",
- "description": "The rationale of why the impact analysis state was asserted. \n\n* __code\\_not\\_present__ = the code has been removed or tree-shaked. \n* __code\\_not\\_reachable__ = the vulnerable code is not invoked at runtime. \n* __requires\\_configuration__ = exploitability requires a configurable option to be set/unset. \n* __requires\\_dependency__ = exploitability requires a dependency that is not present. \n* __requires\\_environment__ = exploitability requires a certain environment which is not present. \n* __protected\\_by\\_compiler__ = exploitability requires a compiler flag to be set/unset. \n* __protected\\_at\\_runtime__ = exploits are prevented at runtime. \n* __protected\\_at\\_perimeter__ = attacks are blocked at physical, logical, or network perimeter. \n* __protected\\_by\\_mitigating\\_control__ = preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability.",
+ "description": "The rationale of why the impact analysis state was asserted.",
"enum": [
"code_not_present",
"code_not_reachable",
@@ -1927,7 +2542,18 @@
"protected_at_runtime",
"protected_at_perimeter",
"protected_by_mitigating_control"
- ]
+ ],
+ "meta:enum": {
+ "code_not_present": "The code has been removed or tree-shaked.",
+ "code_not_reachable": "The vulnerable code is not invoked at runtime.",
+ "requires_configuration": "Exploitability requires a configurable option to be set/unset.",
+ "requires_dependency": "Exploitability requires a dependency that is not present.",
+ "requires_environment": "Exploitability requires a certain environment which is not present.",
+ "protected_by_compiler": "Exploitability requires a compiler flag to be set/unset.",
+ "protected_at_runtime": "Exploits are prevented at runtime.",
+ "protected_at_perimeter": "Attacks are blocked at physical, logical, or network perimeter.",
+ "protected_by_mitigating_control": "Preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability."
+ }
},
"rating": {
"type": "object",
@@ -2000,7 +2626,7 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the vulnerability elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the vulnerability elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"id": {
"type": "string",
@@ -2056,7 +2682,7 @@
"cwes": {
"type": "array",
"title": "CWEs",
- "description": "List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability. For example 399 (of https://cwe.mitre.org/data/definitions/399.html)",
+ "description": "List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability.",
"examples": [399],
"items": {
"$ref": "#/definitions/cwe"
@@ -2162,6 +2788,8 @@
}
},
"tools": {
+ "title": "Tools",
+ "description": "The tool(s) used to identify, confirm, or score the vulnerability.",
"oneOf": [
{
"type": "object",
@@ -2174,7 +2802,7 @@
"items": {"$ref": "#/definitions/component"},
"uniqueItems": true,
"title": "Components",
- "description": "A list of software and hardware components used as tools"
+ "description": "A list of software and hardware components used as tools."
},
"services": {
"type": "array",
@@ -2217,7 +2845,14 @@
"update",
"rollback",
"workaround_available"
- ]
+ ],
+ "meta:enum": {
+ "can_not_fix": "Can not fix",
+ "will_not_fix": "Will not fix",
+ "update": "Update to a different revision or release",
+ "rollback": "Revert to a previous revision or release",
+ "workaround_available": "There is a workaround available"
+ }
}
},
"detail": {
@@ -2280,14 +2915,17 @@
"additionalProperties": false,
"properties": {
"version": {
+ "title": "Version",
"description": "A single version of a component or service.",
"$ref": "#/definitions/version"
},
"range": {
+ "title": "Version Range",
"description": "A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst",
- "$ref": "#/definitions/range"
+ "$ref": "#/definitions/versionRange"
},
"status": {
+ "title": "Status",
"description": "The vulnerability status for the version or range of versions.",
"$ref": "#/definitions/affectedStatus",
"default": "affected"
@@ -2317,19 +2955,43 @@
"affected",
"unaffected",
"unknown"
- ]
+ ],
+ "meta:enum": {
+ "affected": "The version is affected by the vulnerability.",
+ "unaffected": "The version is not affected by the vulnerability.",
+ "unknown": "It is unknown (or unspecified) whether the given version is affected."
+ }
},
"version": {
- "description": "A single version of a component or service.",
+ "description": "A single disjunctive version identifier, for a component or service.",
"type": "string",
- "minLength": 1,
- "maxLength": 1024
+ "maxLength": 1024,
+ "examples": [
+ "9.0.14",
+ "v1.33.7",
+ "7.0.0-M1",
+ "2.0pre1",
+ "1.0.0-beta1",
+ "0.8.15"
+ ]
},
- "range": {
+ "versionRange": {
"description": "A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst",
"type": "string",
"minLength": 1,
- "maxLength": 1024
+ "maxLength": 4096,
+ "examples": [
+ "vers:cargo/9.0.14",
+ "vers:npm/1.2.3|>=2.0.0|<5.0.0",
+ "vers:pypi/0.0.0|0.0.1|0.0.2|0.0.3|1.0|2.0pre1",
+ "vers:tomee/>=1.0.0-beta1|<=1.7.5|>=7.0.0-M1|<=7.0.7|>=7.1.0|<=7.1.2|>=8.0.0-M1|<=8.0.1",
+ "vers:gem/>=2.2.0|!= 2.2.1|<2.3.0"
+ ]
+ },
+ "range": {
+ "deprecated": true,
+ "description": "Deprecated definition. use definition `versionRange` instead.",
+ "$ref": "#/definitions/versionRange"
},
"annotations": {
"type": "object",
@@ -2346,7 +3008,7 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the annotation elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the annotation elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"subjects": {
"type": "array",
@@ -2363,7 +3025,7 @@
}
]
},
- "title": "BOM References",
+ "title": "Subjects",
"description": "The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs."
},
"annotator": {
@@ -2440,7 +3102,7 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the model card elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the model card elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"modelParameters": {
"type": "object",
@@ -2464,7 +3126,14 @@
"reinforcement-learning",
"semi-supervised",
"self-supervised"
- ]
+ ],
+ "meta:enum": {
+ "supervised": "Supervised machine learning involves training an algorithm on labeled data to predict or classify new data based on the patterns learned from the labeled examples.",
+ "unsupervised": "Unsupervised machine learning involves training algorithms on unlabeled data to discover patterns, structures, or relationships without explicit guidance, allowing the model to identify inherent structures or clusters within the data.",
+ "reinforcement-learning": "Reinforcement learning is a type of machine learning where an agent learns to make decisions by interacting with an environment to maximize cumulative rewards, through trial and error.",
+ "semi-supervised": "Semi-supervised machine learning utilizes a combination of labeled and unlabeled data during training to improve model performance, leveraging the benefits of both supervised and unsupervised learning techniques.",
+ "self-supervised": "Self-supervised machine learning involves training models to predict parts of the input data from other parts of the same data, without requiring external labels, enabling learning from large amounts of unlabeled data."
+ }
}
}
},
@@ -2490,12 +3159,12 @@
"items" : {
"oneOf" : [
{
- "title": "Inline Component Data",
+ "title": "Inline Data Information",
"$ref": "#/definitions/componentData"
},
{
"type": "object",
- "title": "Data Component Reference",
+ "title": "Data Reference",
"additionalProperties": false,
"properties": {
"ref": {
@@ -2587,9 +3256,14 @@
"ethicalConsiderations": {
"type": "array",
"title": "Ethical Considerations",
- "description": "What are the ethical (or environmental) risks involved in the application of this model?",
+ "description": "What are the ethical risks involved in the application of this model?",
"items": { "$ref": "#/definitions/risk" }
},
+ "environmentalConsiderations":{
+ "$ref": "#/definitions/environmentalConsiderations",
+ "title": "Environmental Considerations",
+ "description": "What are the various environmental impacts the corresponding machine learning model has exhibited across its lifecycle?"
+ },
"fairnessAssessments": {
"type": "array",
"title": "Fairness Assessments",
@@ -2614,8 +3288,10 @@
"additionalProperties": false,
"properties": {
"format": {
- "description": "The data format for input/output to the model. Example formats include string, image, time-series",
- "type": "string"
+ "title": "Input/Output Format",
+ "description": "The data format for input/output to the model.",
+ "type": "string",
+ "examples": [ "string", "image", "time-series"]
}
}
},
@@ -2629,21 +3305,29 @@
"bom-ref": {
"$ref": "#/definitions/refType",
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the dataset elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ "description": "An optional identifier which can be used to reference the dataset elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links."
},
"type": {
"type": "string",
"title": "Type of Data",
- "description": "The general theme or subject matter of the data being specified.\n\n* __source-code__ = Any type of code, code snippet, or data-as-code.\n* __configuration__ = Parameters or settings that may be used by other components.\n* __dataset__ = A collection of data.\n* __definition__ = Data that can be used to create new instances of what the definition defines.\n* __other__ = Any other type of data that does not fit into existing definitions.",
+ "description": "The general theme or subject matter of the data being specified.",
"enum": [
"source-code",
"configuration",
"dataset",
"definition",
"other"
- ]
+ ],
+ "meta:enum": {
+ "source-code": "Any type of code, code snippet, or data-as-code.",
+ "configuration": "Parameters or settings that may be used by other components.",
+ "dataset": "A collection of data.",
+ "definition": "Data that can be used to create new instances of what the definition defines.",
+ "other": "Any other type of data that does not fit into existing definitions."
+ }
},
"name": {
+ "title": "Dataset Name",
"description": "The name of the dataset.",
"type": "string"
},
@@ -2679,6 +3363,7 @@
},
"sensitiveData": {
"type": "array",
+ "title": "Sensitive Data",
"description": "A description of any sensitive data in a dataset.",
"items": {
"type": "string"
@@ -2686,11 +3371,11 @@
},
"graphics": { "$ref": "#/definitions/graphicsCollection" },
"description": {
+ "title": "Dataset Description",
"description": "A description of the dataset. Can describe size of dataset, whether it's used for source code, training, testing, or validation, etc.",
"type": "string"
},
"governance": {
- "type": "object",
"title": "Data Governance",
"$ref": "#/definitions/dataGovernance"
}
@@ -2699,6 +3384,7 @@
"dataGovernance": {
"type": "object",
"title": "Data Governance",
+ "description": "Data governance captures information regarding data ownership, stewardship, and custodianship, providing insights into the individuals or entities responsible for managing, overseeing, and safeguarding the data throughout its lifecycle.",
"additionalProperties": false,
"properties": {
"custodians": {
@@ -2750,10 +3436,12 @@
"additionalProperties": false,
"properties": {
"description": {
+ "title": "Description",
"description": "A description of this collection of graphics.",
"type": "string"
},
"collection": {
+ "title": "Collection",
"description": "A collection of graphics.",
"type": "array",
"items": { "$ref": "#/definitions/graphic" }
@@ -2762,9 +3450,11 @@
},
"graphic": {
"type": "object",
+ "title": "Graphic",
"additionalProperties": false,
"properties": {
"name": {
+ "title": "Name",
"description": "The name of the graphic.",
"type": "string"
},
@@ -2777,30 +3467,37 @@
},
"performanceMetric": {
"type": "object",
+ "title": "Performance Metric",
"additionalProperties": false,
"properties": {
"type": {
+ "title": "Type",
"description": "The type of performance metric.",
"type": "string"
},
"value": {
+ "title": "Value",
"description": "The value of the performance metric.",
"type": "string"
},
"slice": {
+ "title": "Slice",
"description": "The name of the slice this metric was computed on. By default, assume this metric is not sliced.",
"type": "string"
},
"confidenceInterval": {
+ "title": "Confidence Interval",
"description": "The confidence interval of the metric.",
"type": "object",
"additionalProperties": false,
"properties": {
"lowerBound": {
+ "title": "Lower Bound",
"description": "The lower bound of the confidence interval.",
"type": "string"
},
"upperBound": {
+ "title": "Upper Bound",
"description": "The upper bound of the confidence interval.",
"type": "string"
}
@@ -2810,13 +3507,16 @@
},
"risk": {
"type": "object",
+ "title": "Risk",
"additionalProperties": false,
"properties": {
"name": {
+ "title": "Name",
"description": "The name of the risk.",
"type": "string"
},
"mitigationStrategy": {
+ "title": "Mitigation Strategy",
"description": "Strategy used to address this risk.",
"type": "string"
}
@@ -2830,18 +3530,22 @@
"properties": {
"groupAtRisk": {
"type": "string",
+ "title": "Group at Risk",
"description": "The groups or individuals at risk of being systematically disadvantaged by the model."
},
"benefits": {
"type": "string",
+ "title": "Benefits",
"description": "Expected benefits to the identified groups."
},
"harms": {
"type": "string",
+ "title": "Harms",
"description": "Expected harms to the identified groups."
},
"mitigationStrategy": {
"type": "string",
+ "title": "Mitigation Strategy",
"description": "With respect to the benefits and harms outlined, please describe any mitigation strategy implemented."
}
}
@@ -2851,6 +3555,267 @@
"title": "Data Classification",
"description": "Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed."
},
+ "environmentalConsiderations": {
+ "type": "object",
+ "title": "Environmental Considerations",
+ "description": "Describes various environmental impact metrics.",
+ "additionalProperties": false,
+ "properties": {
+ "energyConsumptions": {
+ "title": "Energy Consumptions",
+ "description": "Describes energy consumption information incurred for one or more component lifecycle activities.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/energyConsumption"
+ }
+ },
+ "properties": {
+ "type": "array",
+ "title": "Properties",
+ "items": {
+ "$ref": "#/definitions/property"
+ }
+ }
+ }
+ },
+ "energyConsumption": {
+ "title": "Energy consumption",
+ "description": "Describes energy consumption information incurred for the specified lifecycle activity.",
+ "type": "object",
+ "required": [
+ "activity",
+ "energyProviders",
+ "activityEnergyCost"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "activity": {
+ "type": "string",
+ "title": "Activity",
+ "description": "The type of activity that is part of a machine learning model development or operational lifecycle.",
+ "enum": [
+ "design",
+ "data-collection",
+ "data-preparation",
+ "training",
+ "fine-tuning",
+ "validation",
+ "deployment",
+ "inference",
+ "other"
+ ],
+ "meta:enum": {
+ "design": "A model design including problem framing, goal definition and algorithm selection.",
+ "data-collection": "Model data acquisition including search, selection and transfer.",
+ "data-preparation": "Model data preparation including data cleaning, labeling and conversion.",
+ "training": "Model building, training and generalized tuning.",
+ "fine-tuning": "Refining a trained model to produce desired outputs for a given problem space.",
+ "validation": "Model validation including model output evaluation and testing.",
+ "deployment": "Explicit model deployment to a target hosting infrastructure.",
+ "inference": "Generating an output response from a hosted model from a set of inputs.",
+ "other": "A lifecycle activity type whose description does not match currently defined values."
+ }
+ },
+ "energyProviders": {
+ "title": "Energy Providers",
+ "description": "The provider(s) of the energy consumed by the associated model development lifecycle activity.",
+ "type": "array",
+ "items": { "$ref": "#/definitions/energyProvider" }
+ },
+ "activityEnergyCost": {
+ "title": "Activity Energy Cost",
+ "description": "The total energy cost associated with the model lifecycle activity.",
+ "$ref": "#/definitions/energyMeasure"
+ },
+ "co2CostEquivalent": {
+ "title": "CO2 Equivalent Cost",
+ "description": "The CO2 cost (debit) equivalent to the total energy cost.",
+ "$ref": "#/definitions/co2Measure"
+ },
+ "co2CostOffset": {
+ "title": "CO2 Cost Offset",
+ "description": "The CO2 offset (credit) for the CO2 equivalent cost.",
+ "$ref": "#/definitions/co2Measure"
+ },
+ "properties": {
+ "type": "array",
+ "title": "Properties",
+ "items": {
+ "$ref": "#/definitions/property"
+ }
+ }
+ }
+ },
+ "energyMeasure": {
+ "type": "object",
+ "title": "Energy Measure",
+ "description": "A measure of energy.",
+ "required": [
+ "value",
+ "unit"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "number",
+ "title": "Value",
+ "description": "Quantity of energy."
+ },
+ "unit": {
+ "type": "string",
+ "enum": [ "kWh" ],
+ "title": "Unit",
+ "description": "Unit of energy.",
+ "meta:enum": {
+ "kWh": "Kilowatt-hour (kWh) is the energy delivered by one kilowatt (kW) of power for one hour (h)."
+ }
+ }
+ }
+ },
+ "co2Measure": {
+ "type": "object",
+ "title": "CO2 Measure",
+ "description": "A measure of carbon dioxide (CO2).",
+ "required": [
+ "value",
+ "unit"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "type": "number",
+ "title": "Value",
+ "description": "Quantity of carbon dioxide (CO2)."
+ },
+ "unit": {
+ "type": "string",
+ "enum": [ "tCO2eq" ],
+ "title": "Unit",
+ "description": "Unit of carbon dioxide (CO2).",
+ "meta:enum": {
+ "tCO2eq": "Tonnes (t) of carbon dioxide (CO2) equivalent (eq)."
+ }
+ }
+ }
+ },
+ "energyProvider": {
+ "type": "object",
+ "title": "Energy Provider",
+ "description": "Describes the physical provider of energy used for model development or operations.",
+ "required": [
+ "organization",
+ "energySource",
+ "energyProvided"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the energy provider elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
+ "$ref": "#/definitions/refType"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description",
+ "description": "A description of the energy provider."
+ },
+ "organization": {
+ "type": "object",
+ "title": "Organization",
+ "$ref": "#/definitions/organizationalEntity"
+ },
+ "energySource": {
+ "type": "string",
+ "enum": [
+ "coal",
+ "oil",
+ "natural-gas",
+ "nuclear",
+ "wind",
+ "solar",
+ "geothermal",
+ "hydropower",
+ "biofuel",
+ "unknown",
+ "other"
+ ],
+ "meta:enum": {
+ "coal": "Energy produced by types of coal.",
+ "oil": "Petroleum products (primarily crude oil and its derivative fuel oils).",
+ "natural-gas": "Hydrocarbon gas liquids (HGL) that occur as gases at atmospheric pressure and as liquids under higher pressures including Natural gas (C5H12 and heavier), Ethane (C2H6), Propane (C3H8), etc.",
+ "nuclear": "Energy produced from the cores of atoms (i.e., through nuclear fission or fusion).",
+ "wind": "Energy produced from moving air.",
+ "solar": "Energy produced from the sun (i.e., solar radiation).",
+ "geothermal": "Energy produced from heat within the earth.",
+ "hydropower": "Energy produced from flowing water.",
+ "biofuel": "Liquid fuels produced from biomass feedstocks (i.e., organic materials such as plants or animals).",
+ "unknown": "The energy source is unknown.",
+ "other": "An energy source that is not listed."
+ },
+ "title": "Energy Source",
+ "description": "The energy source for the energy provider."
+ },
+ "energyProvided": {
+ "$ref": "#/definitions/energyMeasure",
+ "title": "Energy Provided",
+ "description": "The energy provided by the energy source for an associated activity."
+ },
+ "externalReferences": {
+ "type": "array",
+ "items": {"$ref": "#/definitions/externalReference"},
+ "title": "External References",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ }
+ }
+ },
+ "postalAddress": {
+ "type": "object",
+ "title": "Postal address",
+ "description": "An address used to identify a contactable location.",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the address elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
+ "$ref": "#/definitions/refType"
+ },
+ "country": {
+ "type": "string",
+ "title": "Country",
+ "description": "The country name or the two-letter ISO 3166-1 country code."
+ },
+ "region": {
+ "type": "string",
+ "title": "Region",
+ "description": "The region or state in the country.",
+ "examples": [ "Texas" ]
+ },
+ "locality": {
+ "type": "string",
+ "title": "Locality",
+ "description": "The locality or city within the country.",
+ "examples": [ "Austin" ]
+ },
+ "postOfficeBoxNumber": {
+ "type": "string",
+ "title": "Post Office Box Number",
+ "description": "The post office box number.",
+ "examples": [ "901" ]
+ },
+ "postalCode": {
+ "type": "string",
+ "title": "Postal Code",
+ "description": "The postal code.",
+ "examples": [ "78758" ]
+ },
+ "streetAddress": {
+ "type": "string",
+ "title": "Street Address",
+ "description": "The street address.",
+ "examples": [ "100 Main Street" ]
+ }
+ }
+ },
"formula": {
"title": "Formula",
"description": "Describes workflows and resources that captures rules and other aspects of how the associated BOM component or service was formed.",
@@ -2859,7 +3824,7 @@
"properties": {
"bom-ref": {
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the formula elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.",
+ "description": "An optional identifier which can be used to reference the formula elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"$ref": "#/definitions/refType"
},
"components": {
@@ -2913,7 +3878,7 @@
"properties": {
"bom-ref": {
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the workflow elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.",
+ "description": "An optional identifier which can be used to reference the workflow elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"$ref": "#/definitions/refType"
},
"uid": {
@@ -3056,7 +4021,7 @@
"properties": {
"bom-ref": {
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the task elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.",
+ "description": "An optional identifier which can be used to reference the task elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"$ref": "#/definitions/refType"
},
"uid": {
@@ -3228,7 +4193,7 @@
"properties": {
"bom-ref": {
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the workspace elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.",
+ "description": "An optional identifier which can be used to reference the workspace elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"$ref": "#/definitions/refType"
},
"uid": {
@@ -3375,7 +4340,7 @@
"properties": {
"bom-ref": {
"title": "BOM Reference",
- "description": "An optional identifier which can be used to reference the trigger elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.",
+ "description": "An optional identifier which can be used to reference the trigger elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.\nValue SHOULD not start with the BOM-Link intro 'urn:cdx:' to avoid conflicts with BOM-Links.",
"$ref": "#/definitions/refType"
},
"uid": {
@@ -3420,6 +4385,7 @@
},
"conditions": {
"type": "array",
+ "title": "Conditions",
"uniqueItems": true,
"items": {
"$ref": "#/definitions/condition"
@@ -3536,7 +4502,7 @@
"properties": {
"source": {
"title": "Source",
- "description": "A references to the component or service that provided the input to the task (e.g., reference to a service with data flow value of `inbound`)",
+ "description": "A reference to the component or service that provided the input to the task (e.g., reference to a service with data flow value of `inbound`)",
"examples": [
"source code repository",
"database"
@@ -3556,8 +4522,8 @@
"title": "Resource",
"description": "A reference to an independent resource provided as an input to a task by the workflow runtime.",
"examples": [
- "reference to a configuration file in a repository (i.e., a bom-ref)",
- "reference to a scanning service used in a task (i.e., a bom-ref)"
+ "a reference to a configuration file in a repository (i.e., a bom-ref)",
+ "a reference to a scanning service used in a task (i.e., a bom-ref)"
],
"$ref": "#/definitions/resourceReferenceChoice"
},
@@ -3765,7 +4731,21 @@
"release",
"clean",
"other"
- ]
+ ],
+ "meta:enum": {
+ "copy": "A task that copies software or data used to accomplish other tasks in the workflow.",
+ "clone": "A task that clones a software repository into the workflow in order to retrieve its source code or data for use in a build step.",
+ "lint": "A task that checks source code for programmatic and stylistic errors.",
+ "scan": "A task that performs a scan against source code, or built or deployed components and services. Scans are typically run to gather or test for security vulnerabilities or policy compliance.",
+ "merge": "A task that merges changes or fixes into source code prior to a build step in the workflow.",
+ "build": "A task that builds the source code, dependencies and/or data into an artifact that can be deployed to and executed on target systems.",
+ "test": "A task that verifies the functionality of a component or service.",
+ "deliver": "A task that delivers a built artifact to one or more target repositories or storage systems.",
+ "deploy": "A task that deploys a built artifact for execution on one or more target systems.",
+ "release": "A task that releases a built, versioned artifact to a target repository or distribution system.",
+ "clean": "A task that cleans unnecessary tools, build artifacts and/or data from workflow storage.",
+ "other": "A workflow task that does not match current task type definitions."
+ }
},
"parameter": {
"title": "Parameter",
@@ -3790,10 +4770,904 @@
}
}
},
- "signature": {
- "$ref": "jsf-0.82.schema.json#/definitions/signature",
- "title": "Signature",
- "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ "componentIdentityEvidence": {
+ "type": "object",
+ "title": "Identity Evidence",
+ "description": "Evidence that substantiates the identity of a component.",
+ "required": [ "field" ],
+ "additionalProperties": false,
+ "properties": {
+ "field": {
+ "type": "string",
+ "enum": [
+ "group", "name", "version", "purl", "cpe", "omniborId", "swhid", "swid", "hash"
+ ],
+ "title": "Field",
+ "description": "The identity field of the component which the evidence describes."
+ },
+ "confidence": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1,
+ "title": "Confidence",
+ "description": "The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence."
+ },
+ "concludedValue": {
+ "type": "string",
+ "title": "Concluded Value",
+ "description": "The value of the field (cpe, purl, etc) that has been concluded based on the aggregate of all methods (if available)."
+ },
+ "methods": {
+ "type": "array",
+ "title": "Methods",
+ "description": "The methods used to extract and/or analyze the evidence.",
+ "items": {
+ "type": "object",
+ "required": [
+ "technique" ,
+ "confidence"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "technique": {
+ "title": "Technique",
+ "description": "The technique used in this method of analysis.",
+ "type": "string",
+ "enum": [
+ "source-code-analysis",
+ "binary-analysis",
+ "manifest-analysis",
+ "ast-fingerprint",
+ "hash-comparison",
+ "instrumentation",
+ "dynamic-analysis",
+ "filename",
+ "attestation",
+ "other"
+ ]
+ },
+ "confidence": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1,
+ "title": "Confidence",
+ "description": "The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence."
+ },
+ "value": {
+ "type": "string",
+ "title": "Value",
+ "description": "The value or contents of the evidence."
+ }
+ }
+ }
+ },
+ "tools": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "anyOf": [
+ {
+ "title": "Ref",
+ "$ref": "#/definitions/refLinkType"
+ },
+ {
+ "title": "BOM-Link Element",
+ "$ref": "#/definitions/bomLinkElementType"
+ }
+ ]
+ },
+ "title": "BOM References",
+ "description": "The object in the BOM identified by its bom-ref. This is often a component or service but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation."
+ }
+ }
+ },
+ "standard": {
+ "type": "object",
+ "title": "Standard",
+ "description": "A standard may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "name": {
+ "type": "string",
+ "title": "Name",
+ "description": "The name of the standard. This will often be a shortened, single name of the standard."
+ },
+ "version": {
+ "type": "string",
+ "title": "Version",
+ "description": "The version of the standard."
+ },
+ "description": {
+ "type": "string",
+ "title": "Description",
+ "description": "The description of the standard."
+ },
+ "owner": {
+ "type": "string",
+ "title": "Owner",
+ "description": "The owner of the standard, often the entity responsible for its release."
+ },
+ "requirements": {
+ "type": "array",
+ "title": "Requirements",
+ "description": "The list of requirements comprising the standard.",
+ "items": {
+ "type": "object",
+ "title": "Requirement",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "identifier": {
+ "type": "string",
+ "title": "Identifier",
+ "description": "The unique identifier used in the standard to identify a specific requirement. This should match what is in the standard and should not be the requirements bom-ref."
+ },
+ "title": {
+ "type": "string",
+ "title": "Title",
+ "description": "The title of the requirement."
+ },
+ "text": {
+ "type": "string",
+ "title": "Text",
+ "description": "The textual content of the requirement."
+ },
+ "descriptions": {
+ "type": "array",
+ "title": "Descriptions",
+ "description": "The supplemental text that provides additional guidance or context to the requirement, but is not directly part of the requirement.",
+ "items": { "type": "string" }
+ },
+ "openCre": {
+ "type": "array",
+ "title": "OWASP OpenCRE Identifier(s)",
+ "description": "The Common Requirements Enumeration (CRE) identifier(s). CRE is a structured and standardized framework for uniting security standards and guidelines. CRE links each section of a resource to a shared topic identifier (a Common Requirement). Through this shared topic link, all resources map to each other. Use of CRE promotes clear and unambiguous communication among stakeholders.",
+ "items": {
+ "type": "string",
+ "pattern": "^CRE:[0-9]+-[0-9]+$",
+ "examples": [ "CRE:764-507" ]
+ }
+ },
+ "parent": {
+ "$ref": "#/definitions/refLinkType",
+ "title": "Parent BOM Reference",
+ "description": "The optional `bom-ref` to a parent requirement. This establishes a hierarchy of requirements. Top-level requirements must not define a parent. Only child requirements should define parents."
+ },
+ "properties": {
+ "type": "array",
+ "title": "Properties",
+ "description": "Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard without having to use additional namespaces or create extensions. Unlike key-value stores, properties support duplicate names, each potentially having different values. Property names of interest to the general public are encouraged to be registered in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy). Formal registration is OPTIONAL.",
+ "items": {
+ "$ref": "#/definitions/property"
+ }
+ },
+ "externalReferences": {
+ "type": "array",
+ "items": {"$ref": "#/definitions/externalReference"},
+ "title": "External References",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ }
+ }
+ }
+ },
+ "levels": {
+ "type": "array",
+ "title": "Levels",
+ "description": "The list of levels associated with the standard. Some standards have different levels of compliance.",
+ "items": {
+ "type": "object",
+ "title": "Level",
+ "additionalProperties": false,
+ "properties": {
+ "bom-ref": {
+ "$ref": "#/definitions/refType",
+ "title": "BOM Reference",
+ "description": "An optional identifier which can be used to reference the object elsewhere in the BOM. Every bom-ref MUST be unique within the BOM."
+ },
+ "identifier": {
+ "type": "string",
+ "title": "Identifier",
+ "description": "The identifier used in the standard to identify a specific level."
+ },
+ "title": {
+ "type": "string",
+ "title": "Title",
+ "description": "The title of the level."
+ },
+ "description": {
+ "type": "string",
+ "title": "Description",
+ "description": "The description of the level."
+ },
+ "requirements": {
+ "type": "array",
+ "title": "Requirements",
+ "description": "The list of requirement `bom-ref`s that comprise the level.",
+ "items": { "$ref": "#/definitions/refLinkType" }
+ }
+ }
+ }
+ },
+ "externalReferences": {
+ "type": "array",
+ "items": {"$ref": "#/definitions/externalReference"},
+ "title": "External References",
+ "description": "External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM."
+ },
+ "signature": {
+ "$ref": "#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ }
+ }
+ },
+ "signature": {
+ "$ref": "jsf-0.82.schema.json#/definitions/signature",
+ "title": "Signature",
+ "description": "Enveloped signature in [JSON Signature Format (JSF)](https://cyberphone.github.io/doc/security/jsf.html)."
+ },
+ "cryptoProperties": {
+ "type": "object",
+ "title": "Cryptographic Properties",
+ "description": "Cryptographic assets have properties that uniquely define them and that make them actionable for further reasoning. As an example, it makes a difference if one knows the algorithm family (e.g. AES) or the specific variant or instantiation (e.g. AES-128-GCM). This is because the security level and the algorithm primitive (authenticated encryption) are only defined by the definition of the algorithm variant. The presence of a weak cryptographic algorithm like SHA1 vs. HMAC-SHA1 also makes a difference.",
+ "additionalProperties": false,
+ "required": [
+ "assetType"
+ ],
+ "properties": {
+ "assetType": {
+ "type": "string",
+ "title": "Asset Type",
+ "description": "Cryptographic assets occur in several forms. Algorithms and protocols are most commonly implemented in specialized cryptographic libraries. They may, however, also be 'hardcoded' in software components. Certificates and related cryptographic material like keys, tokens, secrets or passwords are other cryptographic assets to be modelled.",
+ "enum": [
+ "algorithm",
+ "certificate",
+ "protocol",
+ "related-crypto-material"
+ ],
+ "meta:enum": {
+ "algorithm": "Mathematical function commonly used for data encryption, authentication, and digital signatures.",
+ "certificate": "An electronic document that is used to provide the identity or validate a public key.",
+ "protocol": "A set of rules and guidelines that govern the behavior and communication with each other.",
+ "related-crypto-material": "Other cryptographic assets related to algorithms, certificates, and protocols such as keys and tokens."
+ }
+ },
+ "algorithmProperties": {
+ "type": "object",
+ "title": "Algorithm Properties",
+ "description": "Additional properties specific to a cryptographic algorithm.",
+ "additionalProperties": false,
+ "properties": {
+ "primitive": {
+ "type": "string",
+ "title": "primitive",
+ "description": "Cryptographic building blocks used in higher-level cryptographic systems and protocols. Primitives represent different cryptographic routines: deterministic random bit generators (drbg, e.g. CTR_DRBG from NIST SP800-90A-r1), message authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES), streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256), public-key encryption schemes (pke, e.g. RSA), extended output functions (xof, e.g. SHAKE256), key derivation functions (e.g. pbkdf2), key agreement algorithms (e.g. ECDH), key encapsulation mechanisms (e.g. ML-KEM), authenticated encryption (ae, e.g. AES-GCM) and the combination of multiple algorithms (combiner, e.g. SP800-56Cr2).",
+ "enum": [
+ "drbg",
+ "mac",
+ "block-cipher",
+ "stream-cipher",
+ "signature",
+ "hash",
+ "pke",
+ "xof",
+ "kdf",
+ "key-agree",
+ "kem",
+ "ae",
+ "combiner",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "drbg": "Deterministic Random Bit Generator (DRBG) is a type of pseudorandom number generator designed to produce a sequence of bits from an initial seed value. DRBGs are commonly used in cryptographic applications where reproducibility of random values is important.",
+ "mac": "In cryptography, a Message Authentication Code (MAC) is information used for authenticating and integrity-checking a message.",
+ "block-cipher": "A block cipher is a symmetric key algorithm that operates on fixed-size blocks of data. It encrypts or decrypts the data in block units, providing confidentiality. Block ciphers are widely used in various cryptographic modes and protocols for secure data transmission.",
+ "stream-cipher": "A stream cipher is a symmetric key cipher where plaintext digits are combined with a pseudorandom cipher digit stream (keystream).",
+ "signature": "In cryptography, a signature is a digital representation of a message or data that proves its origin, identity, and integrity. Digital signatures are generated using cryptographic algorithms and are widely used for authentication and verification in secure communication.",
+ "hash": "A hash function is a mathematical algorithm that takes an input (or 'message') and produces a fixed-size string of characters, which is typically a hash value. Hash functions are commonly used in various cryptographic applications, including data integrity verification and password hashing.",
+ "pke": "Public Key Encryption (PKE) is a type of encryption that uses a pair of public and private keys for secure communication. The public key is used for encryption, while the private key is used for decryption. PKE is a fundamental component of public-key cryptography.",
+ "xof": "An XOF is an extendable output function that can take arbitrary input and creates a stream of output, up to a limit determined by the size of the internal state of the hash function that underlies the XOF.",
+ "kdf": "A Key Derivation Function (KDF) derives key material from another source of entropy while preserving the entropy of the input.",
+ "key-agree": "In cryptography, a key-agreement is a protocol whereby two or more parties agree on a cryptographic key in such a way that both influence the outcome.",
+ "kem": "A Key Encapsulation Mechanism (KEM) algorithm is a mechanism for transporting random keying material to a recipient using the recipient's public key.",
+ "ae": "Authenticated Encryption (AE) is a cryptographic process that provides both confidentiality and data integrity. It ensures that the encrypted data has not been tampered with and comes from a legitimate source. AE is commonly used in secure communication protocols.",
+ "combiner": "A combiner aggregates many candidates for a cryptographic primitive and generates a new candidate for the same primitive.",
+ "other": "Another primitive type.",
+ "unknown": "The primitive is not known."
+ }
+ },
+ "parameterSetIdentifier": {
+ "type": "string",
+ "title": "Parameter Set Identifier",
+ "description": "An identifier for the parameter set of the cryptographic algorithm. Examples: in AES128, '128' identifies the key length in bits, in SHA256, '256' identifies the digest length, '128' in SHAKE128 identifies its maximum security level in bits, and 'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205)."
+ },
+ "curve": {
+ "type": "string",
+ "title": "Elliptic Curve",
+ "description": "The specific underlying Elliptic Curve (EC) definition employed which is an indicator of the level of security strength, performance and complexity. Absent an authoritative source of curve names, CycloneDX recommends using curve names as defined at [https://neuromancer.sk/std/](https://neuromancer.sk/std/), the source of which can be found at [https://github.com/J08nY/std-curves](https://github.com/J08nY/std-curves)."
+ },
+ "executionEnvironment": {
+ "type": "string",
+ "title": "Execution Environment",
+ "description": "The target and execution environment in which the algorithm is implemented in.",
+ "enum": [
+ "software-plain-ram",
+ "software-encrypted-ram",
+ "software-tee",
+ "hardware",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "software-plain-ram": "A software implementation running in plain unencrypted RAM.",
+ "software-encrypted-ram": "A software implementation running in encrypted RAM.",
+ "software-tee": "A software implementation running in a trusted execution environment.",
+ "hardware": "A hardware implementation.",
+ "other": "Another implementation environment.",
+ "unknown": "The execution environment is not known."
+ }
+ },
+ "implementationPlatform": {
+ "type": "string",
+ "title": "implementation platform",
+ "description": "The target platform for which the algorithm is implemented. The implementation can be 'generic', running on any platform or for a specific platform.",
+ "enum": [
+ "generic",
+ "x86_32",
+ "x86_64",
+ "armv7-a",
+ "armv7-m",
+ "armv8-a",
+ "armv8-m",
+ "armv9-a",
+ "armv9-m",
+ "s390x",
+ "ppc64",
+ "ppc64le",
+ "other",
+ "unknown"
+ ]
+ },
+ "certificationLevel": {
+ "type": "array",
+ "title": "Certification Level",
+ "description": "The certification that the implementation of the cryptographic algorithm has received, if any. Certifications include revisions and levels of FIPS 140 or Common Criteria of different Extended Assurance Levels (CC-EAL).",
+ "items": {
+ "type": "string",
+ "enum": [
+ "none",
+ "fips140-1-l1",
+ "fips140-1-l2",
+ "fips140-1-l3",
+ "fips140-1-l4",
+ "fips140-2-l1",
+ "fips140-2-l2",
+ "fips140-2-l3",
+ "fips140-2-l4",
+ "fips140-3-l1",
+ "fips140-3-l2",
+ "fips140-3-l3",
+ "fips140-3-l4",
+ "cc-eal1",
+ "cc-eal1+",
+ "cc-eal2",
+ "cc-eal2+",
+ "cc-eal3",
+ "cc-eal3+",
+ "cc-eal4",
+ "cc-eal4+",
+ "cc-eal5",
+ "cc-eal5+",
+ "cc-eal6",
+ "cc-eal6+",
+ "cc-eal7",
+ "cc-eal7+",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "none": "No certification obtained",
+ "fips140-1-l1": "FIPS 140-1 Level 1",
+ "fips140-1-l2": "FIPS 140-1 Level 2",
+ "fips140-1-l3": "FIPS 140-1 Level 3",
+ "fips140-1-l4": "FIPS 140-1 Level 4",
+ "fips140-2-l1": "FIPS 140-2 Level 1",
+ "fips140-2-l2": "FIPS 140-2 Level 2",
+ "fips140-2-l3": "FIPS 140-2 Level 3",
+ "fips140-2-l4": "FIPS 140-2 Level 4",
+ "fips140-3-l1": "FIPS 140-3 Level 1",
+ "fips140-3-l2": "FIPS 140-3 Level 2",
+ "fips140-3-l3": "FIPS 140-3 Level 3",
+ "fips140-3-l4": "FIPS 140-3 Level 4",
+ "cc-eal1": "Common Criteria - Evaluation Assurance Level 1",
+ "cc-eal1+": "Common Criteria - Evaluation Assurance Level 1 (Augmented)",
+ "cc-eal2": "Common Criteria - Evaluation Assurance Level 2",
+ "cc-eal2+": "Common Criteria - Evaluation Assurance Level 2 (Augmented)",
+ "cc-eal3": "Common Criteria - Evaluation Assurance Level 3",
+ "cc-eal3+": "Common Criteria - Evaluation Assurance Level 3 (Augmented)",
+ "cc-eal4": "Common Criteria - Evaluation Assurance Level 4",
+ "cc-eal4+": "Common Criteria - Evaluation Assurance Level 4 (Augmented)",
+ "cc-eal5": "Common Criteria - Evaluation Assurance Level 5",
+ "cc-eal5+": "Common Criteria - Evaluation Assurance Level 5 (Augmented)",
+ "cc-eal6": "Common Criteria - Evaluation Assurance Level 6",
+ "cc-eal6+": "Common Criteria - Evaluation Assurance Level 6 (Augmented)",
+ "cc-eal7": "Common Criteria - Evaluation Assurance Level 7",
+ "cc-eal7+": "Common Criteria - Evaluation Assurance Level 7 (Augmented)",
+ "other": "Another certification",
+ "unknown": "The certification level is not known"
+ }
+ }
+ },
+ "mode": {
+ "type": "string",
+ "title": "Mode",
+ "description": "The mode of operation in which the cryptographic algorithm (block cipher) is used.",
+ "enum": [
+ "cbc",
+ "ecb",
+ "ccm",
+ "gcm",
+ "cfb",
+ "ofb",
+ "ctr",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "cbc": "Cipher block chaining",
+ "ecb": "Electronic codebook",
+ "ccm": "Counter with cipher block chaining message authentication code",
+ "gcm": "Galois/counter",
+ "cfb": "Cipher feedback",
+ "ofb": "Output feedback",
+ "ctr": "Counter",
+ "other": "Another mode of operation",
+ "unknown": "The mode of operation is not known"
+ }
+ },
+ "padding": {
+ "type": "string",
+ "title": "Padding",
+ "description": "The padding scheme that is used for the cryptographic algorithm.",
+ "enum": [
+ "pkcs5",
+ "pkcs7",
+ "pkcs1v15",
+ "oaep",
+ "raw",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "pkcs5": "Public Key Cryptography Standard: Password-Based Cryptography",
+ "pkcs7": "Public Key Cryptography Standard: Cryptographic Message Syntax",
+ "pkcs1v15": "Public Key Cryptography Standard: RSA Cryptography v1.5",
+ "oaep": "Optimal asymmetric encryption padding",
+ "raw": "Raw",
+ "other": "Another padding scheme",
+ "unknown": "The padding scheme is not known"
+ }
+ },
+ "cryptoFunctions": {
+ "type": "array",
+ "title": "Cryptographic functions",
+ "description": "The cryptographic functions implemented by the cryptographic algorithm.",
+ "items": {
+ "type": "string",
+ "enum": [
+ "generate",
+ "keygen",
+ "encrypt",
+ "decrypt",
+ "digest",
+ "tag",
+ "keyderive",
+ "sign",
+ "verify",
+ "encapsulate",
+ "decapsulate",
+ "other",
+ "unknown"
+ ]
+ }
+ },
+ "classicalSecurityLevel": {
+ "type": "integer",
+ "title": "classical security level",
+ "description": "The classical security level that a cryptographic algorithm provides (in bits).",
+ "minimum": 0
+ },
+ "nistQuantumSecurityLevel": {
+ "type": "integer",
+ "title": "NIST security strength category",
+ "description": "The NIST security strength category as defined in https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria). A value of 0 indicates that none of the categories are met.",
+ "minimum": 0,
+ "maximum": 6
+ }
+ }
+ },
+ "certificateProperties": {
+ "type": "object",
+ "title": "Certificate Properties",
+ "description": "Properties for cryptographic assets of asset type 'certificate'",
+ "additionalProperties": false,
+ "properties": {
+ "subjectName": {
+ "type": "string",
+ "title": "Subject Name",
+ "description": "The subject name for the certificate"
+ },
+ "issuerName": {
+ "type": "string",
+ "title": "Issuer Name",
+ "description": "The issuer name for the certificate"
+ },
+ "notValidBefore": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Not Valid Before",
+ "description": "The date and time according to ISO-8601 standard from which the certificate is valid"
+ },
+ "notValidAfter": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Not Valid After",
+ "description": "The date and time according to ISO-8601 standard from which the certificate is not valid anymore"
+ },
+ "signatureAlgorithmRef": {
+ "$ref": "#/definitions/refType",
+ "title": "Algorithm Reference",
+ "description": "The bom-ref to signature algorithm used by the certificate"
+ },
+ "subjectPublicKeyRef": {
+ "$ref": "#/definitions/refType",
+ "title": "Key reference",
+ "description": "The bom-ref to the public key of the subject"
+ },
+ "certificateFormat": {
+ "type": "string",
+ "title": "Certificate Format",
+ "description": "The format of the certificate",
+ "examples": [
+ "X.509",
+ "PEM",
+ "DER",
+ "CVC"
+ ]
+ },
+ "certificateExtension": {
+ "type": "string",
+ "title": "Certificate File Extension",
+ "description": "The file extension of the certificate",
+ "examples": [
+ "crt",
+ "pem",
+ "cer",
+ "der",
+ "p12"
+ ]
+ }
+ }
+ },
+ "relatedCryptoMaterialProperties": {
+ "type": "object",
+ "title": "Related Cryptographic Material Properties",
+ "description": "Properties for cryptographic assets of asset type: `related-crypto-material`",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string",
+ "title": "relatedCryptoMaterialType",
+ "description": "The type for the related cryptographic material",
+ "enum": [
+ "private-key",
+ "public-key",
+ "secret-key",
+ "key",
+ "ciphertext",
+ "signature",
+ "digest",
+ "initialization-vector",
+ "nonce",
+ "seed",
+ "salt",
+ "shared-secret",
+ "tag",
+ "additional-data",
+ "password",
+ "credential",
+ "token",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "private-key": "The confidential key of a key pair used in asymmetric cryptography.",
+ "public-key": "The non-confidential key of a key pair used in asymmetric cryptography.",
+ "secret-key": "A key used to encrypt and decrypt messages in symmetric cryptography.",
+ "key": "A piece of information, usually an octet string, which, when processed through a cryptographic algorithm, processes cryptographic data.",
+ "ciphertext": "The result of encryption performed on plaintext using an algorithm (or cipher).",
+ "signature": "A cryptographic value that is calculated from the data and a key known only by the signer.",
+ "digest": "The output of the hash function.",
+ "initialization-vector": "A fixed-size random or pseudo-random value used as an input parameter for cryptographic algorithms.",
+ "nonce": "A random or pseudo-random number that can only be used once in a cryptographic communication.",
+ "seed": "The input to a pseudo-random number generator. Different seeds generate different pseudo-random sequences.",
+ "salt": "A value used in a cryptographic process, usually to ensure that the results of computations for one instance cannot be reused by an attacker.",
+ "shared-secret": "A piece of data known only to the parties involved, in a secure communication.",
+ "tag": "A message authentication code (MAC), sometimes known as an authentication tag, is a short piece of information used for authenticating and integrity-checking a message.",
+ "additional-data": "An unspecified collection of data with relevance to cryptographic activity.",
+ "password": "A secret word, phrase, or sequence of characters used during authentication or authorization.",
+ "credential": "Establishes the identity of a party to communication, usually in the form of cryptographic keys or passwords.",
+ "token": "An object encapsulating a security identity.",
+ "other": "Another type of cryptographic asset.",
+ "unknown": "The type of cryptographic asset is not known."
+ }
+ },
+ "id": {
+ "type": "string",
+ "title": "ID",
+ "description": "The optional unique identifier for the related cryptographic material."
+ },
+ "state": {
+ "type": "string",
+ "title": "State",
+ "description": "The key state as defined by NIST SP 800-57.",
+ "enum": [
+ "pre-activation",
+ "active",
+ "suspended",
+ "deactivated",
+ "compromised",
+ "destroyed"
+ ]
+ },
+ "algorithmRef": {
+ "$ref": "#/definitions/refType",
+ "title": "Algorithm Reference",
+ "description": "The bom-ref to the algorithm used to generate the related cryptographic material."
+ },
+ "creationDate": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Creation Date",
+ "description": "The date and time (timestamp) when the related cryptographic material was created."
+ },
+ "activationDate": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Activation Date",
+ "description": "The date and time (timestamp) when the related cryptographic material was activated."
+ },
+ "updateDate": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Update Date",
+ "description": "The date and time (timestamp) when the related cryptographic material was updated."
+ },
+ "expirationDate": {
+ "type": "string",
+ "format": "date-time",
+ "title": "Expiration Date",
+ "description": "The date and time (timestamp) when the related cryptographic material expires."
+ },
+ "value": {
+ "type": "string",
+ "title": "Value",
+ "description": "The associated value of the cryptographic material."
+ },
+ "size": {
+ "type": "integer",
+ "title":"Size",
+ "description": "The size of the cryptographic asset (in bits)."
+ },
+ "format": {
+ "type": "string",
+ "title": "Format",
+ "description": "The format of the related cryptographic material (e.g. P8, PEM, DER)."
+ },
+ "securedBy": {
+ "$ref": "#/definitions/securedBy",
+ "title": "Secured By",
+ "description": "The mechanism by which the cryptographic asset is secured by."
+ }
+ }
+ },
+ "protocolProperties": {
+ "type": "object",
+ "title": "Protocol Properties",
+ "description": "Properties specific to cryptographic assets of type: `protocol`.",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string",
+ "title": "Type",
+ "description": "The concrete protocol type.",
+ "enum": [
+ "tls",
+ "ssh",
+ "ipsec",
+ "ike",
+ "sstp",
+ "wpa",
+ "other",
+ "unknown"
+ ],
+ "meta:enum": {
+ "tls": "Transport Layer Security",
+ "ssh": "Secure Shell",
+ "ipsec": "Internet Protocol Security",
+ "ike": "Internet Key Exchange",
+ "sstp": "Secure Socket Tunneling Protocol",
+ "wpa": "Wi-Fi Protected Access",
+ "other": "Another protocol type",
+ "unknown": "The protocol type is not known"
+ }
+ },
+ "version": {
+ "type": "string",
+ "title": "Protocol Version",
+ "description": "The version of the protocol.",
+ "examples": [
+ "1.0",
+ "1.2",
+ "1.99"
+ ]
+ },
+ "cipherSuites": {
+ "type": "array",
+ "title": "Cipher Suites",
+ "description": "A list of cipher suites related to the protocol.",
+ "items": {
+ "$ref": "#/definitions/cipherSuite",
+ "title": "Cipher Suite"
+ }
+ },
+ "ikev2TransformTypes": {
+ "type": "object",
+ "title": "IKEv2 Transform Types",
+ "description": "The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.",
+ "additionalProperties": false,
+ "properties": {
+ "encr": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "Encryption Algorithm (ENCR)",
+ "description": "Transform Type 1: encryption algorithms"
+ },
+ "prf": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "Pseudorandom Function (PRF)",
+ "description": "Transform Type 2: pseudorandom functions"
+ },
+ "integ": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "Integrity Algorithm (INTEG)",
+ "description": "Transform Type 3: integrity algorithms"
+ },
+ "ke": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "Key Exchange Method (KE)",
+ "description": "Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)"
+ },
+ "esn": {
+ "type": "boolean",
+ "title": "Extended Sequence Numbers (ESN)",
+ "description": "Specifies if an Extended Sequence Number (ESN) is used."
+ },
+ "auth": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "IKEv2 Authentication method",
+ "description": "IKEv2 Authentication method"
+ }
+ }
+ },
+ "cryptoRefArray": {
+ "$ref": "#/definitions/cryptoRefArray",
+ "title": "Cryptographic References",
+ "description": "A list of protocol-related cryptographic assets"
+ }
+ }
+ },
+ "oid": {
+ "type": "string",
+ "title": "OID",
+ "description": "The object identifier (OID) of the cryptographic asset."
+ }
+ }
+ },
+ "cipherSuite": {
+ "type": "object",
+ "title": "Cipher Suite",
+ "description": "Object representing a cipher suite",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Common Name",
+ "description": "A common name for the cipher suite.",
+ "examples": [
+ "TLS_DHE_RSA_WITH_AES_128_CCM"
+ ]
+ },
+ "algorithms": {
+ "type": "array",
+ "title": "Related Algorithms",
+ "description": "A list of algorithms related to the cipher suite.",
+ "items": {
+ "$ref": "#/definitions/refType",
+ "title": "Algorithm reference",
+ "description": "The bom-ref to algorithm cryptographic asset."
+ }
+ },
+ "identifiers": {
+ "type": "array",
+ "title": "Cipher Suite Identifiers",
+ "description": "A list of common identifiers for the cipher suite.",
+ "items": {
+ "type": "string",
+ "title": "identifier",
+ "description": "Cipher suite identifier",
+ "examples": [
+ "0xC0",
+ "0x9E"
+ ]
+ }
+ }
+ }
+ },
+ "cryptoRefArray" : {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/refType"
+ }
+ },
+ "securedBy": {
+ "type": "object",
+ "title": "Secured By",
+ "description": "Specifies the mechanism by which the cryptographic asset is secured by",
+ "additionalProperties": false,
+ "properties": {
+ "mechanism": {
+ "type": "string",
+ "title": "Mechanism",
+ "description": "Specifies the mechanism by which the cryptographic asset is secured by.",
+ "examples": [
+ "HSM",
+ "TPM",
+ "SGX",
+ "Software",
+ "None"
+ ]
+ },
+ "algorithmRef": {
+ "$ref": "#/definitions/refType",
+ "title": "Algorithm Reference",
+ "description": "The bom-ref to the algorithm."
+ }
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Tags",
+ "description": "Textual strings that aid in discovery, search, and retrieval of the associated object. Tags often serve as a way to group or categorize similar or related objects by various attributes.",
+ "examples": [
+ "json-parser",
+ "object-persistence",
+ "text-to-image",
+ "translation",
+ "object-detection"
+ ]
}
}
-}
+}
\ No newline at end of file
diff --git a/schema/cyclonedx/cyclonedx.xsd b/schema/cyclonedx/cyclonedx.xsd
index eeb64a6ac..f90bb8e43 100644
--- a/schema/cyclonedx/cyclonedx.xsd
+++ b/schema/cyclonedx/cyclonedx.xsd
@@ -1,6 +1,6 @@
+ version="1.6.0">
-
+
- CycloneDX Software Bill of Materials Standard
+ CycloneDX Bill of Materials Standard
https://cyclonedx.org/
Apache License, Version 2.0
@@ -54,6 +54,45 @@ limitations under the License.
+
+
+
+
+
+
+
+
+
+
+
+ =2.0.0|<5.0.0"
+ - "vers:pypi/0.0.0|0.0.1|0.0.2|0.0.3|1.0|2.0pre1"
+ - "vers:tomee/>=1.0.0-beta1|<=1.7.5|>=7.0.0-M1|<=7.0.7|>=7.1.0|<=7.1.2|>=8.0.0-M1|<=8.0.1"
+ - "vers:gem/>=2.2.0|!= 2.2.1|<2.3.0"
+ ]]>
+
+
+
+
+
+
+
+
@@ -92,7 +131,7 @@ limitations under the License.
- The product lifecycle(s) that this BOM represents.
+ Lifecycles communicate the stage(s) in which data in the BOM was captured. Different types of data may be available at various phases of a lifecycle, such as the Software Development Lifecycle (SDLC), IT Asset Management (ITAM), and Software Asset Management (SAM). Thus, a BOM may include data specific to or only obtainable in a given lifecycle.
@@ -161,8 +200,10 @@ limitations under the License.
- The person(s) who created the BOM. Authors are common in BOMs created through
- manual processes. BOMs created through automated means may not have authors.
+
+ The person(s) who created the BOM.
+ Authors are common in BOMs created through manual processes. BOMs created through automated means may have './manufacturer' instead.
+
@@ -175,9 +216,20 @@ limitations under the License.
The component that the BOM describes.
+
+
+
+ The organization that created the BOM.
+ Manufacturer is common in BOMs created through automated processes. BOMs created through manual means may have './authors' instead.
+
+
+
- The organization that manufactured the component that the BOM describes.
+
+ DEPRECATED - DO NOT USE. This will be removed in a future version. Use the `./component/manufacturer` instead.
+ The organization that manufactured the component that the BOM describes.
+
@@ -186,7 +238,14 @@ limitations under the License.
supplier may often be the manufacturer, but may also be a distributor or repackager.
-
+
+
+
+ The license information for the BOM document.
+ This may be different from the license(s) of the component(s) that the BOM describes.
+
+
+
Provides the ability to document properties in a name/value store.
@@ -289,6 +348,11 @@ limitations under the License.
The name of the organization
+
+
+ The physical address (location) of the organization.
+
+
The URL of the organization. Multiple URLs are allowed.
@@ -338,7 +402,7 @@ limitations under the License.
The name of the tool
-
+
The version of the tool
@@ -439,9 +503,33 @@ limitations under the License.
be the manufacturer, but may also be a distributor or repackager.
+
+
+
+ The organization that created the component.
+ Manufacturer is common in components created through automated processes. Components created through manual means may have './authors' instead.
+
+
+
+
+
+
+ The person(s) who created the component.
+ Authors are common in components created through manual processes. Components created through automated means may have `./manufacturer` instead.
+
+
+
+
+
+
+
+
- The person(s) or organization(s) that authored the component
+
+ DEPRECATED - DO NOT USE. This will be removed in a future version. Use `./authors` or `./manufacturer` instead.
+ The person(s) or organization(s) that authored the component.
+
@@ -463,7 +551,7 @@ limitations under the License.
of the component. Examples: commons-lang3 and jquery
-
+
The component version. The version should ideally comply with semantic versioning
but is not enforced.
@@ -509,6 +597,23 @@ limitations under the License.
+
+
+
+ Specifies the OmniBOR Artifact ID. The OmniBOR, if specified, MUST be valid and conform
+ to the specification defined at: https://www.iana.org/assignments/uri-schemes/prov/gitoid
+
+
+
+
+
+
+ Specifies the Software Heritage persistent identifier (SWHID). The SWHID, if specified, MUST
+ be valid and conform to the specification defined at:
+ https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html
+
+
+
@@ -597,6 +702,19 @@ limitations under the License.
specified for other component types.
+
+
+
+ Cryptographic assets have properties that uniquely define them and that make them actionable
+ for further reasoning. As an example, it makes a difference if one knows the algorithm family
+ (e.g. AES) or the specific variant or instantiation (e.g. AES-128-GCM). This is because the
+ security level and the algorithm primitive (authenticated encryption) is only defined by the
+ definition of the algorithm variant. The presence of a weak cryptographic algorithm like SHA1
+ vs. HMAC-SHA1 also makes a difference.
+
+
+
+
@@ -646,7 +764,7 @@ limitations under the License.
A valid SPDX license ID
-
+
If SPDX does not define the license used, this field may be used to provide the license name
@@ -814,6 +932,23 @@ limitations under the License.
+
+
+
+ Declared licenses and concluded licenses represent two different stages in the
+ licensing process within software development. Declared licenses refer to the
+ initial intention of the software authors regarding the licensing terms under
+ which their code is released. On the other hand, concluded licenses are the
+ result of a comprehensive analysis of the project's codebase to identify and
+ confirm the actual licenses of the components used, which may differ from the
+ initially declared licenses. While declared licenses provide an upfront indication
+ of the licensing intentions, concluded licenses offer a more thorough understanding
+ of the actual licensing within a project, facilitating proper compliance and risk
+ management. Observed licenses are defined in `evidence.licenses`. Observed licenses
+ form the evidence necessary to substantiate a concluded license.
+
+
+
@@ -960,6 +1095,11 @@ limitations under the License.
A collection of discrete values that convey information.
+
+
+ A cryptographic asset including algorithms, protocols, certificates, keys, tokens, and secrets.
+
+
@@ -1222,6 +1362,11 @@ limitations under the License.
Community or commercial support
+
+
+ The location where the source code distributable can be obtained. This is often an archive format such as zip or tgz. The source-distribution type complements use of the version control (vcs) type.
+
+
Direct or repository download location
@@ -1255,7 +1400,7 @@ limitations under the License.
- Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501]) that specifies the records containing DNS Security TXT.
+ Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies the records containing DNS Security TXT.
@@ -1362,7 +1507,22 @@ limitations under the License.
- Plans of Action and Milestones (POAM) compliment an "attestation" external reference. POAM is defined by NIST as a "document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones".
+ Plans of Action and Milestones (POAM) complement an "attestation" external reference. POAM is defined by NIST as a "document that identifies tasks needing to be accomplished. It details resources required to accomplish the elements of the plan, any milestones in meeting the tasks and scheduled completion dates for the milestones".
+
+
+
+
+ An e-signature is commonly a scanned representation of a written signature or a stylized script of the persons name.
+
+
+
+
+ A signature that leverages cryptography, typically public/private key pairs, which provides strong authenticity verification.
+
+
+
+
+ Document that complies with RFC-9116 (A File Format to Aid in Security Vulnerability Disclosure)
@@ -1759,7 +1919,7 @@ limitations under the License.
A list of zero or more patches describing how the component
- deviates from an ancestor, descendant, or variant. Patches may be complimentary to commits
+ deviates from an ancestor, descendant, or variant. Patches may be complementary to commits
or may be used in place of commits.
@@ -1782,7 +1942,26 @@ limitations under the License.
-
+
+
+ The component or service that is a dependency of this dependency object.
+
+
+
+
+
+ The component or service that define a given specification or standard, which is provided or implemented by this dependency object.
+ For example, a cryptographic library which implements a cryptographic algorithm. A component which implements another component does not imply that the implementation is in use.
+
+
+
+
+
+ References a component or service by its bom-ref attribute
+
+
+
+
@@ -1851,7 +2030,7 @@ limitations under the License.
of the service.
-
+
The service version.
@@ -2008,6 +2187,7 @@ limitations under the License.
Specifies optional release notes.
+
@@ -2069,7 +2249,12 @@ limitations under the License.
A valid SPDX license expression.
- Refer to https://spdx.org/specifications for syntax requirements
+ Refer to https://spdx.org/specifications for syntax requirements
+
+ Example values:
+ - Apache-2.0 AND (MIT OR GPL-2.0-only)
+ - GPL-3.0-only WITH Classpath-exception-2.0
+
@@ -2082,6 +2267,23 @@ limitations under the License.
+
+
+
+ Declared licenses and concluded licenses represent two different stages in the
+ licensing process within software development. Declared licenses refer to the
+ initial intention of the software authors regarding the licensing terms under
+ which their code is released. On the other hand, concluded licenses are the
+ result of a comprehensive analysis of the project's codebase to identify and
+ confirm the actual licenses of the components used, which may differ from the
+ initially declared licenses. While declared licenses provide an upfront indication
+ of the licensing intentions, concluded licenses offer a more thorough understanding
+ of the actual licensing within a project, facilitating proper compliance and risk
+ management. Observed licenses are defined in `evidence.licenses`. Observed licenses
+ form the evidence necessary to substantiate a concluded license.
+
+
+
@@ -2089,6 +2291,26 @@ limitations under the License.
+
+
+
+
+
+ Declared licenses represent the initial intentions of authors regarding
+ the licensing terms of their code.
+
+
+
+
+
+
+ Concluded licenses are verified and confirmed.
+
+
+
+
+
+
@@ -2102,6 +2324,8 @@ limitations under the License.
+
+
@@ -2116,24 +2340,87 @@ limitations under the License.
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Examines the source code without executing it.
+
+
+
+
+
+
+ Examines a compiled binary through reverse engineering, typically via disassembly or bytecode reversal.
+
+
+
+
+
+
+ Examines a package management system such as those used for building software or installing software.
+
+
+
+
+
+
+ Examines the Abstract Syntax Tree (AST) of source code or a compiled binary.
+
+
+
+
+
+
+ Evaluates the cryptographic hash of a component against a set of pre-computed hashes of identified software.
+
+
+
+
+
+
+ Examines the call stack of running applications by intercepting and monitoring application logic without the need to modify the application.
+
+
+
+
+
+
+ Evaluates a running application.
+
+
+
+
+
+
+ Evaluates file name of a component against a set of known file names of identified software.
+
+
+
+
+
+
+ A testimony to the accuracy of the identify of a component made by an individual or entity.
+
+
+
+
+
+
+ Any other technique.
+
+
+
-
+
- Evidence that substantiates the identity of a component.
+ Evidence that substantiates the identity of a component. The identify may be an
+ object or an array of identity objects. Support for specifying identity as a single object was
+ introduced in CycloneDX v1.5. "unbounded" was introduced in v1.6. It is RECOMMENDED that all
+ implementations are aware of "unbounded".
@@ -2147,6 +2434,11 @@ limitations under the License.
The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence.
+
+
+ The value of the field (cpe, purl, etc) that has been concluded based on the aggregate of all methods (if available).
+
+
The methods used to extract and/or analyze the evidence.
@@ -2203,11 +2495,32 @@ limitations under the License.
-
+
The location or path to where the component was found.
+
+
+ The line number where the component was found.
+
+
+
+
+ The offset where the component was found.
+
+
+
+
+ The symbol name that was found associated with the component.
+
+
+
+
+ Any additional context of the detected component (e.g. a code snippet).
+
+
+
@@ -2495,9 +2808,9 @@ limitations under the License.
* minor = A minor release, also known as an update, may contain a smaller number of changes than major releases.
* patch = Patch releases are typically unplanned and may resolve defects or important security issues.
* pre-release = A pre-release may include alpha, beta, or release candidates and typically have
- limited support. They provide the ability to preview a release prior to its general availability.
+ limited support. They provide the ability to preview a release prior to its general availability.
* internal = Internal releases are not for public consumption and are intended to be used exclusively
- by the project or manufacturer that produced it.
+ by the project or manufacturer that produced it.
@@ -2532,23 +2845,13 @@ limitations under the License.
One or more alternate names the release may be referred to. This may
- include unofficial terms used by development and marketing teams (e.g. code names).
-
-
-
-
-
-
-
-
-
-
- One or more tags that may aid in search or retrieval of the release note.
+ include unofficial terms used by development and marketing teams (e.g. code names).
+
A collection of issues that have been resolved.
@@ -2565,7 +2868,7 @@ limitations under the License.
Zero or more release notes containing the locale and content. Multiple
- note elements may be specified to support release notes in a wide variety of languages.
+ note elements may be specified to support release notes in a wide variety of languages.
@@ -2612,12 +2915,12 @@ limitations under the License.
-
+
@@ -2930,7 +3233,7 @@ limitations under the License.
- What are the ethical (or environmental) risks involved in the application of this model?
+ What are the ethical risks involved in the application of this model?
@@ -2958,6 +3261,13 @@ limitations under the License.
+
+
+
+ What are the various environmental impacts the corresponding machine learning model has exhibited across its lifecycle?
+
+
+
@@ -3019,647 +3329,658 @@ limitations under the License.
-
-
-
-
- TODO
-
-
-
-
- TODO
-
-
-
-
- TODO
-
-
-
-
- TODO
-
-
-
-
- TODO
-
-
-
-
-
-
+
+
+
+ Describes various environmental impact metrics.
+
+
-
+
- The general theme or subject matter of the data being specified.
+ Describes energy consumption information incurred for one or more component lifecycle activities.
-
+
-
- The name of the dataset.
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
-
+
+
+
+
+
+
+
- The contents or references to the contents of the data being described.
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
- An optional way to include textual or encoded data.
-
-
-
-
- The URL to where the data can be retrieved.
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ Describes energy consumption information incurred for the specified lifecycle activity.
+
+
+
+
+
+
+ The type of activity that is part of a machine learning model development or operational lifecycle.
+
+
+
+
+
+
+
+ model design including problem framing, goal definition and algorithm selection.
+
-
-
+
+
- Provides the ability to document name-value parameters used for configuration.
+
+ model data acquisition including search, selection and transfer.
+
-
-
-
+
+
+
+
+ model data preparation including data cleaning, labeling and conversion.
+
+
+
+
+
+
+ model building, training and generalized tuning.
+
+
+
+
+
+
+ refining a trained model to produce desired outputs for a given problem space.
+
+
+
+
+
+
+ model validation including model output evaluation and testing.
+
+
+
+
+
+
+ explicit model deployment to a target hosting infrastructure.
+
+
+
+
+
+
+ generating an output response from a hosted model from a set of inputs.
+
+
+
+
+
+
+ a lifecycle activity type whose description does not match currently defined values.
+
+
+
+
+
-
+
- Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.
+ The provider(s) of the energy consumed by the associated model development lifecycle activity.
-
+
- A description of any sensitive data in a dataset.
+ The total energy cost associated with the model lifecycle activity.
-
+
- A collection of graphics that represent various measurements.
+ The CO2 cost (debit) equivalent to the total energy cost.
-
+
- A description of the dataset. Can describe size of dataset, whether it's used for source code,
- training, testing, or validation, etc.
+ The CO2 offset (credit) for the CO2 equivalent cost.
-
-
-
-
-
- An optional identifier which can be used to reference the dataset elsewhere in the BOM.
- Every bom-ref MUST be unique within the BOM.
-
-
-
-
-
-
-
-
+
-
- Data custodians are responsible for the safe custody, transport, and storage of data.
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
-
-
-
-
-
-
+
+
+
+
+
+
+ A measure of energy.
+
+
+
+
- Data stewards are responsible for data content, context, and associated business rules.
+ Quantity of energy.
-
-
-
-
-
-
+
- Data owners are concerned with risk and appropriate access to data.
+ Unit of energy.
-
-
-
-
-
+
+
+
+
+
+ kilowatt-hour (kWh) is the energy delivered by one kilowatt (kW) of power for one hour (h).
+
+
+
+
+
-
-
-
-
-
-
-
-
+
- A collection of graphics that represent various measurements.
+ A measure of carbon dioxide (CO2).
-
+
- A description of this collection of graphics.
+ Quantity of carbon dioxide (CO2).
-
+
- A collection of graphics.
+ Unit of carbon dioxide (CO2).
-
-
-
-
-
-
-
-
- The name of the graphic.
-
-
-
-
-
-
- The graphic (vector or raster). Base64 encoding MUST be specified for binary images.
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Tonnes (t) of carbon dioxide (CO2) equivalent (eq).
+
+
+
+
+
-
-
-
+
+
+
+ Describes the physical provider of energy used for model development or operations.
+
+
+
+
- Any type of code, code snippet, or data-as-code.
+
+ A description of the energy provider.
+
-
-
+
+
- Parameters or settings that may be used by other components.
+
+ The organization of the energy provider.
+
-
-
+
+
- A collection of data.
+
+ The energy source for the energy provider.
+
-
-
+
+
+
+
+
+ Energy produced by types of coal.
+
+
+
+
+
+
+ Petroleum products (primarily crude oil and its derivative fuel oils).
+
+
+
+
+
+
+ Hydrocarbon gas liquids (HGL) that occur as gases at atmospheric pressure and as liquids under higher pressures including Natural gas (C5H12 and heavier), Ethane (C2H6), Propane (C3H8), etc.
+
+
+
+
+
+
+ Energy produced from the cores of atoms (i.e., through nuclear fission or fusion).
+
+
+
+
+
+
+ Energy produced from moving air.
+
+
+
+
+
+
+ Energy produced from the sun (i.e., solar radiation).
+
+
+
+
+
+
+ Energy produced from heat within the earth.
+
+
+
+
+
+
+ Energy produced from flowing water.
+
+
+
+
+
+
+ Liquid fuels produced from biomass feedstocks (i.e., organic materials such as plants or animals).
+
+
+
+
+
+
+ The energy source is unknown.
+
+
+
+
+
+
+ An energy source that is not listed.
+
+
+
+
+
+
+
- Data that can be used to create new instances of what the definition defines.
+
+ The energy provided by the energy source for an associated activity.
+
-
-
+
+
- Any other type of data that does not fit into existing definitions.
+ External references provide a way to document systems, sites, and information that may be relevant but are not included with the BOM. They may also establish specific relationships within or external to the BOM.
-
-
-
-
-
-
-
- References a component or service by its bom-ref attribute
-
-
-
-
-
-
+
+
+
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
+
+ An optional identifier which can be used to reference the energy provider elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
-
+
-
-
-
-
+
+
+
+ An address used to identify a contactable location.
+
+
+
+
- Allows any undeclared elements as long as the elements are placed in a different namespace.
+ The country name or the two-letter ISO 3166-1 country code.
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
- Specifies an individual property with a name and value.
-
-
-
-
-
- The name of the property. Duplicate names are allowed, each potentially having a different value.
-
-
-
-
-
-
-
-
-
+
+
- Defines a weakness in a component or service that could be exploited or triggered by a threat source.
+
+ The region or state in the country. For example, Texas.
+
-
+
- Allows any undeclared elements as long as the elements are placed in a different namespace.
+ The locality or city within the country. For example, Austin.
-
+
+
+
+
+ The post office box number. For example, 901.
+
+
+
+
+
+
+ The postal code. For example, 78758.
+
+
+
+
+
+
+ The street address. For example, 100 Main Street.
+
+
+
-
+
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
+
+ An optional identifier which can be used to reference the address elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
-
+
-
-
-
+
+
+
- The identifier that uniquely identifies the vulnerability. For example:
- CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.
+
+ Supervised machine learning involves training an algorithm on labeled
+ data to predict or classify new data based on the patterns learned from
+ the labeled examples.
+
-
-
+
+
- The source that published the vulnerability.
+
+ Unsupervised machine learning involves training algorithms on unlabeled
+ data to discover patterns, structures, or relationships without explicit
+ guidance, allowing the model to identify inherent structures or clusters
+ within the data.
+
-
-
+
+
- Zero or more pointers to vulnerabilities that are the equivalent of the
- vulnerability specified. Often times, the same vulnerability may exist in multiple sources of
- vulnerability intelligence, but have different identifiers. References provide a way to
- correlate vulnerabilities across multiple sources of vulnerability intelligence.
+
+ Reinforcement learning is a type of machine learning where an agent learns
+ to make decisions by interacting with an environment to maximize cumulative
+ rewards, through trial and error.
+
-
-
-
-
- A pointer to a vulnerability that is the equivalent of the
- vulnerability specified.
-
-
-
-
-
- The identifier that uniquely identifies the vulnerability. For example:
- CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.
-
-
-
-
- The source that published the vulnerability.
-
-
-
-
-
-
-
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
-
-
-
+
+
- List of vulnerability ratings.
+
+ Semi-supervised machine learning utilizes a combination of labeled and
+ unlabeled data during training to improve model performance, leveraging
+ the benefits of both supervised and unsupervised learning techniques.
+
-
-
-
-
-
-
-
-
-
-
- List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability.
- For example 399 (of https://cwe.mitre.org/data/definitions/399.html)
-
-
-
-
-
-
-
-
+
+
- A description of the vulnerability as provided by the source.
+
+ Self-supervised machine learning involves training models to predict parts
+ of the input data from other parts of the same data, without requiring
+ external labels, enabling learning from large amounts of unlabeled data.
+
-
-
+
+
+
+
+
+
+
- If available, an in-depth description of the vulnerability as provided by the
- source organization. Details often include information useful in understanding root cause.
+
+ The general theme or subject matter of the data being specified.
+
-
+
- Recommendations of how the vulnerability can be remediated or mitigated.
+
+ The name of the dataset.
+
-
+
- A bypass, usually temporary, of the vulnerability that reduces its likelihood and/or impact. Workarounds often involve changes to configuration or deployments.
+
+ The contents or references to the contents of the data being described.
+
-
-
-
-
- Evidence used to reproduce the vulnerability.
-
-
-
+
- Precise steps to reproduce the vulnerability.
+ An optional way to include textual or encoded data.
-
+
- A description of the environment in which reproduction was possible.
+ The URL to where the data can be retrieved.
-
+
- Supporting material that helps in reproducing or understanding how reproduction is possible. This may include screenshots, payloads, and PoC exploit code.
+ Provides the ability to document name-value parameters used for configuration.
-
-
-
-
-
-
-
-
-
- Published advisories of the vulnerability if provided.
-
-
-
-
-
-
-
-
+
- The date and time (timestamp) when the vulnerability record was created in the vulnerability database.
+
+ Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.
+
-
+
- The date and time (timestamp) when the vulnerability record was first published.
+
+ A description of any sensitive data in a dataset.
+
-
+
- The date and time (timestamp) when the vulnerability record was last updated.
-
-
-
+
+ A collection of graphics that represent various measurements.
+
+
+
+
- The date and time (timestamp) when the vulnerability record was rejected (if applicable).
+
+ A description of the dataset. Can describe size of dataset, whether it's used for source code,
+ training, testing, or validation, etc.
+
-
+
+
+
+
+
+ An optional identifier which can be used to reference the dataset elsewhere in the BOM.
+ Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+
+
+
- Individuals or organizations credited with the discovery of the vulnerability.
+
+ Data custodians are responsible for the safe custody, transport, and storage of data.
+
-
-
- The organizations credited with vulnerability discovery.
-
-
-
-
-
-
-
-
-
- The individuals, not associated with organizations, that are credited with vulnerability discovery.
-
-
-
-
-
-
-
+
-
+
- The tool(s) used to identify, confirm, or score the vulnerability.
+
+ Data stewards are responsible for data content, context, and associated business rules.
+
-
-
-
-
- DEPRECATED. Use tools\components or tools\services instead.
-
-
-
-
-
-
- A list of software and hardware components used as tools.
-
-
-
-
- A list of services used as tools.
-
-
-
-
+
+
+
-
+
+
+
+ Data owners are concerned with risk and appropriate access to data.
+
+
-
-
- An assessment of the impact and exploitability of the vulnerability.
-
-
-
-
-
-
- Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.
-
-
-
-
-
-
- The rationale of why the impact analysis state was asserted.
-
-
-
-
-
- A response to the vulnerability by the manufacturer, supplier, or
- project responsible for the affected component or service. More than one response
- is allowed. Responses are strongly encouraged for vulnerabilities where the analysis
- state is exploitable.
-
-
-
-
-
-
-
-
-
-
- Detailed description of the impact including methods used during assessment.
- If a vulnerability is not exploitable, this field should include specific details
- on why the component or service is not impacted by this vulnerability.
-
-
-
-
-
-
- The date and time (timestamp) when the analysis was first issued.
-
-
-
-
-
-
- The date and time (timestamp) when the analysis was last updated.
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A collection of graphics that represent various measurements.
+
+
+
+
- The components or services that are affected by the vulnerability.
+
+ A description of this collection of graphics.
+
+
+
+
+
+
+ A collection of graphics.
+
-
-
+
+
-
-
+
+
- References a component or service by the objects bom-ref.
+
+ The name of the graphic.
+
-
-
-
-
+
- Zero or more individual versions or range of versions.
+
+ The graphic (vector or raster). Base64 encoding MUST be specified for binary images.
+
-
-
-
-
-
-
-
-
- A single version of a component or service.
-
-
-
-
- A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst
-
-
-
-
-
-
- The vulnerability status for the version or range of versions.
-
-
-
-
-
-
-
-
@@ -3667,98 +3988,59 @@ limitations under the License.
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
-
-
-
- An optional identifier which can be used to reference the vulnerability elsewhere in the BOM.
- Uniqueness is enforced within all elements and children of the root-level bom element.
-
-
-
-
-
-
+
+
+
- The name of the source.
- For example: NVD, National Vulnerability Database, OSS Index, VulnDB, and GitHub Advisories
-
+ Any type of code, code snippet, or data-as-code.
-
-
-
- The url of the vulnerability documentation as provided by the source.
- For example: https://nvd.nist.gov/vuln/detail/CVE-2021-39182
-
-
-
-
-
-
-
-
-
- The source that calculated the severity or risk rating of the vulnerability.
-
-
-
-
- The numerical score of the rating.
-
-
-
+
+
- Textual representation of the severity that corresponds to the numerical score of the rating.
+ Parameters or settings that may be used by other components.
-
-
+
+
- The risk scoring methodology/standard used.
+ A collection of data.
-
-
+
+
- Textual representation of the metric values used to score the vulnerability.
+ Data that can be used to create new instances of what the definition defines.
-
-
+
+
- An optional reason for rating the vulnerability as it was.
+ Any other type of data that does not fit into existing definitions.
-
-
-
+
+
+
-
-
-
-
- An optional name of the advisory.
-
-
-
-
- Location where the advisory can be obtained.
-
-
-
+
+
+
+ References a component or service by its bom-ref attribute
+
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
-
+
-
+
@@ -3775,42 +4057,87 @@ limitations under the License.
-
-
-
+
+
+ Specifies an individual property with a name and value.
+
+
+
+
+
+ The name of the property. Duplicate names are allowed, each potentially having a different value.
+
+
+
+
+
+
+
+
+
- The organization that created the annotation
+ Defines a weakness in a component or service that could be exploited or triggered by a threat source.
-
+
- The person that created the annotation
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
-
-
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
- The tool or component that created the annotation
+ The identifier that uniquely identifies the vulnerability. For example:
+ CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.
-
+
- The service that created the annotation
+ The source that published the vulnerability.
-
-
-
-
-
-
+
-
- The objects in the BOM identified by their bom-ref's. This is often components or services, but may be any object type supporting bom-refs.
-
+ Zero or more pointers to vulnerabilities that are the equivalent of the
+ vulnerability specified. Often times, the same vulnerability may exist in multiple sources of
+ vulnerability intelligence, but have different identifiers. References provide a way to
+ correlate vulnerabilities across multiple sources of vulnerability intelligence.
-
+
+
+ A pointer to a vulnerability that is the equivalent of the
+ vulnerability specified.
+
+
+
+
+
+ The identifier that uniquely identifies the vulnerability. For example:
+ CVE-2021-39182, GHSA-35m5-8cvj-8783, and SNYK-PYTHON-ENROCRYPT-1912876.
+
+
+
+
+ The source that published the vulnerability.
+
+
+
+
+
@@ -3821,370 +4148,380 @@ limitations under the License.
-
+
- The organization, individual, component, or service which created the textual content
- of the annotation.
+ List of vulnerability ratings.
+
+
+
+
+
-
+
+
+
+
+ List of Common Weaknesses Enumerations (CWEs) codes that describes this vulnerability.
+ For example 399 (of https://cwe.mitre.org/data/definitions/399.html)
+
+
+
+
+
+
+
+
- The date and time (timestamp) when the annotation was created.
+ A description of the vulnerability as provided by the source.
-
+
- The textual content of the annotation.
+ If available, an in-depth description of the vulnerability as provided by the
+ source organization. Details often include information useful in understanding root cause.
-
+
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
+ Recommendations of how the vulnerability can be remediated or mitigated.
-
-
-
-
-
- An optional identifier which can be used to reference the annotation elsewhere in the BOM.
- Uniqueness is enforced within all elements and children of the root-level bom element.
-
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
- Textual representation of the severity of the vulnerability adopted by the analysis method. If the
- analysis method uses values other than what is provided, the user is expected to translate appropriately.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.
-
-
-
-
+
+
-
- The vulnerability has been remediated.
-
+ A bypass, usually temporary, of the vulnerability that reduces its likelihood and/or impact. Workarounds often involve changes to configuration or deployments.
-
-
-
-
- The vulnerability has been remediated and evidence of the changes are provided in the affected
- components pedigree containing verifiable commit history and/or diff(s).
-
-
-
-
-
-
- The vulnerability may be directly or indirectly exploitable.
-
-
-
-
-
-
- The vulnerability is being investigated.
-
-
-
-
-
-
- The vulnerability is not specific to the component or service and was falsely identified or associated.
-
-
-
-
-
-
- The component or service is not affected by the vulnerability. Justification should be specified
- for all not_affected cases.
-
-
-
-
-
-
-
-
-
- The rationale of why the impact analysis state was asserted.
-
-
-
-
+
+
+
+
+
+ Evidence used to reproduce the vulnerability.
+
+
+
+
+
+ Precise steps to reproduce the vulnerability.
+
+
+
+
+ A description of the environment in which reproduction was possible.
+
+
+
+
+ Supporting material that helps in reproducing or understanding how reproduction is possible. This may include screenshots, payloads, and PoC exploit code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published advisories of the vulnerability if provided.
+
+
+
+
+
+
+
+
-
- The code has been removed or tree-shaked.
-
+ The date and time (timestamp) when the vulnerability record was created in the vulnerability database.
-
-
+
+
-
- The vulnerable code is not invoked at runtime.
-
+ The date and time (timestamp) when the vulnerability record was first published.
-
-
+
+
-
- Exploitability requires a configurable option to be set/unset.
-
+ The date and time (timestamp) when the vulnerability record was last updated.
-
-
+
+
-
- Exploitability requires a dependency that is not present.
-
+ The date and time (timestamp) when the vulnerability record was rejected (if applicable).
-
-
+
+
-
- Exploitability requires a certain environment which is not present.
-
+ Individuals or organizations credited with the discovery of the vulnerability.
-
-
+
+
+
+
+ The organizations credited with vulnerability discovery.
+
+
+
+
+
+
+
+
+
+ The individuals, not associated with organizations, that are credited with vulnerability discovery.
+
+
+
+
+
+
+
+
+
+
+
-
- Exploitability requires a compiler flag to be set/unset.
-
+ The tool(s) used to identify, confirm, or score the vulnerability.
-
-
+
+
+
+
+
+ DEPRECATED. Use tools\components or tools\services instead.
+
+
+
+
+
+
+ A list of software and hardware components used as tools.
+
+
+
+
+ A list of services used as tools.
+
+
+
+
+
+
+
+
+
+
+ An assessment of the impact and exploitability of the vulnerability.
+
+
+
+
+
+
+ Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.
+
+
+
+
+
+
+ The rationale of why the impact analysis state was asserted.
+
+
+
+
+
+ A response to the vulnerability by the manufacturer, supplier, or
+ project responsible for the affected component or service. More than one response
+ is allowed. Responses are strongly encouraged for vulnerabilities where the analysis
+ state is exploitable.
+
+
+
+
+
+
+
+
+
+
+ Detailed description of the impact including methods used during assessment.
+ If a vulnerability is not exploitable, this field should include specific details
+ on why the component or service is not impacted by this vulnerability.
+
+
+
+
+
+
+ The date and time (timestamp) when the analysis was first issued.
+
+
+
+
+
+
+ The date and time (timestamp) when the analysis was last updated.
+
+
+
+
+
+
+
-
- Exploits are prevented at runtime.
-
+ The components or services that are affected by the vulnerability.
-
-
-
-
- Attacks are blocked at physical, logical, or network perimeter.
-
-
-
-
+
+
+
+
+
+
+
+ References a component or service by the objects bom-ref.
+
+
+
+
+
+
+
+ Zero or more individual versions or range of versions.
+
+
+
+
+
+
+
+
+
+ A single version of a component or service.
+
+
+
+
+ A version range specified in Package URL Version Range syntax (vers) which is defined at https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst
+
+
+
+
+
+
+ The vulnerability status for the version or range of versions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability.
-
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
-
-
-
+
+
+
+
+
+ An optional identifier which can be used to reference the vulnerability elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
+
+
+
-
-
-
- Specifies the severity or risk scoring methodology or standard used.
-
-
-
-
+
+
+
-
- The rating is based on CVSS v2 standard
- https://www.first.org/cvss/v2/
+ The name of the source.
+ For example: NVD, National Vulnerability Database, OSS Index, VulnDB, and GitHub Advisories
-
-
+
+
-
- The rating is based on CVSS v3.0 standard
- https://www.first.org/cvss/v3-0/
-
+ The url of the vulnerability documentation as provided by the source.
+ For example: https://nvd.nist.gov/vuln/detail/CVE-2021-39182
-
-
+
+
+
+
+
+
+
-
- The rating is based on CVSS v3.1 standard
- https://www.first.org/cvss/v3-1/
-
+ The source that calculated the severity or risk rating of the vulnerability.
-
-
+
+
-
- The rating is based on CVSS v4.0 standard
- https://www.first.org/cvss/v4-0/
-
+ The numerical score of the rating.
-
-
+
+
-
- The rating is based on OWASP Risk Rating
- https://owasp.org/www-community/OWASP_Risk_Rating_Methodology
-
+ Textual representation of the severity that corresponds to the numerical score of the rating.
-
-
+
+
-
- The rating is based on Stakeholder Specific Vulnerability Categorization (all versions)
- https://github.com/CERTCC/SSVC
-
+ The risk scoring methodology/standard used.
-
-
+
+
-
- Use this if the risk scoring methodology is not based on any of the options above
-
+ Textual representation of the metric values used to score the vulnerability.
-
-
-
-
-
-
-
- The rationale of why the impact analysis state was asserted.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The vulnerability status of a given version or range of versions of a product. The statuses
- 'affected' and 'unaffected' indicate that the version is affected or unaffected by the vulnerability.
- The status 'unknown' indicates that it is unknown or unspecified whether the given version is affected.
- There can be many reasons for an 'unknown' status, including that an investigation has not been
- undertaken or that a vendor has not disclosed the status.
-
-
-
-
-
-
-
-
-
-
-
-
- Describes how a component or service was manufactured or deployed. This is achieved through the use
- of formulas, workflows, tasks, and steps, which declare the precise steps to reproduce along with the
- observed formulas describing the steps which transpired in the manufacturing process.
-
-
-
-
-
+
+
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
+ An optional reason for rating the vulnerability as it was.
-
+
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
- Describes workflows and resources that captures rules and other aspects of how the associated
- BOM component or service was formed.
-
-
+
-
-
- Transient components that are used in tasks that constitute one or more of
- this formula's workflows
-
-
-
-
- Transient services that are used in tasks that constitute one or more of
- this formula's workflows
-
-
-
+
- List of workflows that can be declared to accomplish specific orchestrated goals
- and independently triggered.
+ An optional name of the advisory.
-
+
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
+ Location where the advisory can be obtained.
-
-
-
- An optional identifier which can be used to reference the formula elsewhere in the BOM.
- Uniqueness is enforced within all elements and children of the root-level bom element.
-
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
+
+
+
@@ -4201,129 +4538,66 @@ limitations under the License.
-
-
-
-
-
- The unique identifier for the resource instance within its deployment context.
-
-
-
-
-
-
- The name of the resource instance.
-
-
-
-
-
-
- The description of the resource instance.
-
-
-
-
-
- References to component or service resources that are used to realize
- the resource instance.
-
-
-
+
+
+
- The tasks that comprise the workflow.
+ The organization that created the annotation
-
+
- The graph of dependencies between tasks within the workflow.
+ The person that created the annotation
-
+
- Indicates the types of activities performed by the set of workflow tasks.
+ The tool or component that created the annotation
-
-
-
-
-
-
+
- The trigger that initiated the task.
+ The service that created the annotation
-
+
+
+
+
+
+
- The sequence of steps for the task.
+ The objects in the BOM identified by their bom-ref's. This is often components or services, but may be any object type supporting bom-refs.
-
-
-
-
-
-
-
- Represents resources and data brought into a task at runtime by executor
- or task commands
-
-
-
-
-
-
-
-
-
- Represents resources and data output from a task at runtime by executor
- or task commands
-
-
-
-
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
-
-
-
- The date and time (timestamp) when the task started.
-
-
-
-
-
-
- The date and time (timestamp) when the task ended.
-
-
-
-
+
- A set of named filesystem or data resource shareable by workflow tasks.
+ The organization, individual, component, or service which created the textual content
+ of the annotation.
-
+
- A graph of the component runtime topology for workflow's instance.
- A description of the runtime component and service topology. This can describe a partial or
- complete topology used to host and execute the task (e.g., hardware, operating systems,
- configurations, etc.)
+ The date and time (timestamp) when the annotation was created.
-
+
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
+ The textual content of the annotation.
@@ -4334,10 +4608,10 @@ limitations under the License.
-
+
- An optional identifier which can be used to reference the workflow elsewhere in the BOM.
+ An optional identifier which can be used to reference the annotation elsewhere in the BOM.
Uniqueness is enforced within all elements and children of the root-level bom element.
@@ -4350,193 +4624,293 @@ limitations under the License.
-
-
-
-
-
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
+
+
+
+ Textual representation of the severity of the vulnerability adopted by the analysis method. If the
+ analysis method uses values other than what is provided, the user is expected to translate appropriately.
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
- References an object by its bom-ref attribute
-
-
-
-
-
-
-
-
-
- Reference to an externally accessible resource.
-
-
-
-
-
+
+
+
+ Declares the current state of an occurrence of a vulnerability, after automated or manual analysis.
+
+
+
+
- Allows any undeclared elements as long as the elements are placed in a different namespace.
+ The vulnerability has been remediated.
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
-
+
+
- Allows any undeclared elements as long as the elements are placed in a different namespace.
+ The vulnerability has been remediated and evidence of the changes are provided in the affected
+ components pedigree containing verifiable commit history and/or diff(s).
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
+
+
- The unique identifier for the resource instance within its deployment context.
+ The vulnerability may be directly or indirectly exploitable.
-
-
+
+
- The name of the resource instance.
+ The vulnerability is being investigated.
-
-
+
+
- The description of the resource instance.
+ The vulnerability is not specific to the component or service and was falsely identified or associated.
-
-
+
+
- References to component or service resources that are used to realize the resource instance.
+ The component or service is not affected by the vulnerability. Justification should be specified
+ for all not_affected cases.
-
-
+
+
+
+
+
+
+
+ The rationale of why the impact analysis state was asserted.
+
+
+
+
- Indicates the types of activities performed by the set of workflow tasks.
+ The code has been removed or tree-shaked.
-
-
-
-
-
-
-
+
+
- The trigger that initiated the task.
+ The vulnerable code is not invoked at runtime.
-
-
+
+
- The sequence of steps for the task.
+ Exploitability requires a configurable option to be set/unset.
-
-
-
-
-
-
-
+
+
- Represents resources and data brought into a task at runtime by executor or task commands.
+ Exploitability requires a dependency that is not present.
-
-
-
-
-
-
-
+
+
- Represents resources and data output from a task at runtime by executor or task commands
+ Exploitability requires a certain environment which is not present.
-
-
-
-
-
-
-
+
+
- The date and time (timestamp) when the task started.
+ Exploitability requires a compiler flag to be set/unset.
-
-
+
+
- The date and time (timestamp) when the task ended.
+ Exploits are prevented at runtime.
-
-
+
+
- A set of named filesystem or data resource shareable by workflow tasks.
+ Attacks are blocked at physical, logical, or network perimeter.
-
-
+
+
- A graph of the component runtime topology for task's instance.
+ Preventative measures have been implemented that reduce the likelihood and/or impact of the vulnerability.
+
+
+
+
+
+
+
+
+
+ Specifies the severity or risk scoring methodology or standard used.
+
+
+
+
+
+
+ Common Vulnerability Scoring System v2.0 standard as defined at https://www.first.org/cvss/v2/
+
+
+
+
+
+
+ Common Vulnerability Scoring System v3.0 standard as defined at https://www.first.org/cvss/v3-0/
+
+
+
+
+
+
+ Common Vulnerability Scoring System v3.1 standard as defined at https://www.first.org/cvss/v3-1/
+
+
+
+
+
+
+ Common Vulnerability Scoring System v4.0 standard as defined at https://www.first.org/cvss/v4-0/
+
+
+
+
+
+
+ OWASP Risk Rating as defined at https://owasp.org/www-community/OWASP_Risk_Rating_Methodology
+
+
+
+
+
+
+ Stakeholder Specific Vulnerability Categorization as defined at https://github.com/CERTCC/SSVC
+
+
+
+
+
+
+ Another severity or risk scoring methodology
+
+
+
+
+
+
+
+
+
+ The rationale of why the impact analysis state was asserted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The vulnerability status of a given version or range of versions of a product. The statuses
+ 'affected' and 'unaffected' indicate that the version is affected or unaffected by the vulnerability.
+ The status 'unknown' indicates that it is unknown or unspecified whether the given version is affected.
+ There can be many reasons for an 'unknown' status, including that an investigation has not been
+ undertaken or that a vendor has not disclosed the status.
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes how a component or service was manufactured or deployed. This is achieved through the use
+ of formulas, workflows, tasks, and steps, which declare the precise steps to reproduce along with the
+ observed formulas describing the steps which transpired in the manufacturing process.
+
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ Describes workflows and resources that captures rules and other aspects of how the associated
+ BOM component or service was formed.
+
+
+
+
+
+ Transient components that are used in tasks that constitute one or more of
+ this formula's workflows
+
+
+
+
+ Transient services that are used in tasks that constitute one or more of
+ this formula's workflows
+
+
+
+
+ List of workflows that can be declared to accomplish specific orchestrated goals
+ and independently triggered.
+
@@ -4548,18 +4922,11 @@ limitations under the License.
Formal registration is OPTIONAL.
-
-
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
+
- An optional identifier which can be used to reference the task elsewhere in the BOM.
+ An optional identifier which can be used to reference the formula elsewhere in the BOM.
Uniqueness is enforced within all elements and children of the root-level bom element.
@@ -4572,26 +4939,9 @@ limitations under the License.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -4608,13 +4958,8 @@ limitations under the License.
-
-
-
- A named filesystem or data resource shareable by workflow tasks.
-
-
-
+
+
@@ -4629,68 +4974,103 @@ limitations under the License.
-
+
- The names for the workspace as referenced by other workflow tasks. Effectively, a name mapping
- so other tasks can use their own local name in their steps.
+ The description of the resource instance.
+
+
+
+ References to component or service resources that are used to realize
+ the resource instance.
+
+
+
+
+ The tasks that comprise the workflow.
+
+
+
+
+ The graph of dependencies between tasks within the workflow.
+
+
+
+
+ Indicates the types of activities performed by the set of workflow tasks.
+
-
+
-
+
-
- The description of the resource instance.
-
+ The trigger that initiated the task.
-
+
- References to component or service resources that are used to realize the resource instance.
+ The sequence of steps for the task.
+
+
+
+
+
-
+
-
- Describes the read-write access control for the workspace relative to the owning resource instance.
-
+ Represents resources and data brought into a task at runtime by executor
+ or task commands
+
+
+
+
+
-
+
-
- A path to a location on disk where the workspace will be available to the associated task's steps.
-
+ Represents resources and data output from a task at runtime by executor
+ or task commands
+
+
+
+
+
-
+
- The name of a domain-specific data type the workspace represents. This property is for CI/CD
- frameworks that are able to provide access to structured, managed data at a more granular level
- than a filesystem.
+ The date and time (timestamp) when the task started.
-
+
- Identifies the reference to the request for a specific volume type and parameters.
+ The date and time (timestamp) when the task ended.
-
+
-
- Information about the actual volume instance allocated to the workspace.
-
+ A set of named filesystem or data resource shareable by workflow tasks.
+
+
+
+
+ A graph of the component runtime topology for workflow's instance.
+ A description of the runtime component and service topology. This can describe a partial or
+ complete topology used to host and execute the task (e.g., hardware, operating systems,
+ configurations, etc.)
@@ -4727,387 +5107,2781 @@ limitations under the License.
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
-
-
-
- An identifiable, logical unit of data storage tied to a physical device.
-
-
+
-
+
+
+
+
+ References an object by its bom-ref attribute
+
+
+
+
+
+
+
+
+
+ Reference to an externally accessible resource.
+
+
+
+
+
- The unique identifier for the volume instance within its deployment context.
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+ The unique identifier for the resource instance within its deployment context.
- The name of the volume instance
+ The name of the resource instance.
-
+
- The mode for the volume instance.
+ The description of the resource instance.
+
+
+
+
+
+
+ References to component or service resources that are used to realize the resource instance.
+
+
+
+
+
+
+ Indicates the types of activities performed by the set of workflow tasks.
+
+
+
+
+
+
+
+
+
+
+
+ The trigger that initiated the task.
+
+
+
+
+
+
+ The sequence of steps for the task.
+
+
+
+
+
+
+
+
+
+
+
+ Represents resources and data brought into a task at runtime by executor or task commands.
+
+
+
+
+
+
+
+
+
+
+
+ Represents resources and data output from a task at runtime by executor or task commands
+
+
+
+
+
+
+
+
+
+
+
+ The date and time (timestamp) when the task started.
-
+
+
+
+ The date and time (timestamp) when the task ended.
+
+
+
+
+
+
+ A set of named filesystem or data resource shareable by workflow tasks.
+
+
+
+
+
+
+ A graph of the component runtime topology for task's instance.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the task elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+ A task that copies software or data used to accomplish other tasks in the workflow.
+
+
+
+
+ A task that clones a software repository into the workflow in order to retrieve its source code or data for use in a build step.
+
+
+
+
+ A task that checks source code for programmatic and stylistic errors.
+
+
+
+
+ A task that performs a scan against source code, or built or deployed components and services. Scans are typically run to gather or test for security vulnerabilities or policy compliance.
+
+
+
+
+ A task that merges changes or fixes into source code prior to a build step in the workflow.
+
+
+
+
+ A task that builds the source code, dependencies and/or data into an artifact that can be deployed to and executed on target systems.
+
+
+
+
+ A task that verifies the functionality of a component or service.
+
+
+
+
+ A task that delivers a built artifact to one or more target repositories or storage systems.
+
+
+
+
+ A task that deploys a built artifact for execution on one or more target systems.
+
+
+
+
+ A task that releases a built, versioned artifact to a target repository or distribution system.
+
+
+
+
+ A task that cleans unnecessary tools, build artifacts and/or data from workflow storage.
+
+
+
+
+ A workflow task that does not match current task type definitions.
+
+
+
+
+
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ A named filesystem or data resource shareable by workflow tasks.
+
+
+
+
+
+
+ The unique identifier for the resource instance within its deployment context.
+
+
+
+
+
+
+ The name of the resource instance.
+
+
+
+
+
+
+ The names for the workspace as referenced by other workflow tasks. Effectively, a name mapping
+ so other tasks can use their own local name in their steps.
+
+
+
+
+
+
+
+
+
+
+
+ The description of the resource instance.
+
+
+
+
+
+
+ References to component or service resources that are used to realize the resource instance.
+
+
+
+
+
+
+ Describes the read-write access control for the workspace relative to the owning resource instance.
+
+
+
+
+
+
+ A path to a location on disk where the workspace will be available to the associated task's steps.
+
+
+
+
+
+
+ The name of a domain-specific data type the workspace represents. This property is for CI/CD
+ frameworks that are able to provide access to structured, managed data at a more granular level
+ than a filesystem.
+
+
+
+
+
+
+ Identifies the reference to the request for a specific volume type and parameters.
+
+
+
+
+
+
+ Information about the actual volume instance allocated to the workspace.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the workflow elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An identifiable, logical unit of data storage tied to a physical device.
+
+
+
+
+
+
+ The unique identifier for the volume instance within its deployment context.
+
+
+
+
+
+
+ The name of the volume instance
+
+
+
+
+
+
+ The mode for the volume instance.
+
+
+
+
+
+
+ The underlying path created from the actual volume.
+
+
+
+
+
+
+ The allocated size of the volume accessible to the associated workspace. This should include
+ the scalar size as well as IEC standard unit in either decimal or binary form.
+
+
+
+
+
+
+ Indicates if the volume persists beyond the life of the resource it is associated with.
+
+
+
+
+
+
+ Indicates if the volume is remotely (i.e., network) attached.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Executes specific commands or tools in order to accomplish its owning task as part of a sequence.
+
+
+
+
+
+
+ A name for the step.
+
+
+
+
+
+
+ A description of the step.
+
+
+
+
+
+
+ Ordered list of commands or directives for the step
+
+
+
+
+
+
+
+
+
+
+ A text representation of the executed command.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+ The unique identifier for the resource instance within its deployment context.
+
+
+
+
+
+
+ The name of the resource instance.
+
+
+
+
+
+
+ The description of the resource instance.
+
+
+
+
+
+
+ References to component or service resources that are used to realize the resource instance.
+
+
+
+
+
+
+ The source type of event which caused the trigger to fire.
+
+
+
+
+
+
+ The event data that caused the associated trigger to activate.
+
+
+
+
+
+
+
+
+
+ A condition that was used to determine a trigger should be activated.
+
+
+
+
+
+
+
+ Describes the set of conditions which cause the trigger to activate.
+
+
+
+
+
+
+ The logical expression that was evaluated that determined the trigger should be fired.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+
+
+
+
+
+
+ The date and time (timestamp) when the trigger was activated.
+
+
+
+
+
+
+ Represents resources and data brought into a task at runtime by executor or task commands
+
+
+
+
+
+
+
+
+
+
+
+ Represents resources and data output from a task at runtime by executor or task commands
+
+
+
+
+
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the trigger elsewhere in the BOM.
+ Uniqueness is enforced within all elements and children of the root-level bom element.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The unique identifier of the event.
+
+
+
+
+
+
+ A description of the event.
+
+
+
+
+
+
+ The date and time (timestamp) when the event was received.
+
+
+
+
+
+
+ Encoding of the raw event data.
+
+
+
+
+
+
+ References the component or service that was the source of the event
+
+
+
+
+
+
+ References the component or service that was the target of the event
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ Type that represents various input data types and formats.
+
+
+
+
+
+
+
+ A reference to an independent resource provided as an input to a task by the workflow runtime.
+
+
+
+
+
+
+ Inputs that have the form of parameters with names and values.
+
+
+
+
+
+
+ Inputs that have the form of parameters with names and values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Inputs that have the form of data.
+
+
+
+
+
+
+
+ A references to the component or service that provided the input to the task
+ (e.g., reference to a service with data flow value of inbound)
+
+
+
+
+
+
+ A reference to the component or service that received or stored the input if not the task
+ itself (e.g., a local, named storage workspace)
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ Represents resources and data output from a task at runtime by executor or task commands
+
+
+
+
+
+
+
+ A reference to an independent resource generated as output by the task.
+
+
+
+
+
+
+ Outputs that have the form of environment variables.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs that have the form of data.
+
+
+
+
+
+
+
+ Describes the type of data output.
+
+
+
+
+
+
+ Component or service that generated or provided the output from the task (e.g., a build tool)
+
+
+
+
+
+
+ Component or service that received the output from the task
+ (e.g., reference to an artifactory service with data flow value of outbound)
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A representation of a functional parameter.
+
+
+
+
+
+
+ The name of the parameter.
+
+
+
+
+
+
+ The value of the parameter.
+
+
+
+
+
+
+ The data type of the parameter.
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+ Cryptographic assets have properties that uniquely define them and that make them actionable for
+ further reasoning. As an example, it makes a difference if one knows the algorithm family (e.g. AES)
+ or the specific variant or instantiation (e.g. AES-128-GCM). This is because the security level and the
+ algorithm primitive (authenticated encryption) is only defined by the definition of the algorithm variant.
+ The presence of a weak cryptographic algorithm like SHA1 vs. HMAC-SHA1 also makes a difference.
+
+
+
+
+
+
+ Cryptographic assets occur in several forms. Algorithms and protocols are most commonly
+ implemented in specialized cryptographic libraries. They may however also be 'hardcoded'
+ in software components. Certificates and related cryptographic material like keys, tokens,
+ secrets or passwords are other cryptographic assets to be modelled.
+
+
+
+
+
+
+
+ Mathematical function commonly used for data encryption, authentication, and
+ digital signatures.
+
+
+
+
+
+
+ An electronic document that is used to provide the identity or validate a public key.
+
+
+
+
+
+
+ A set of rules and guidelines that govern the behavior and communication with each other.
+
+
+
+
+
+
+ Other cryptographic assets that are related to algorithms, certificate, and protocols
+ such as keys and tokens.
+
+
+
+
+
+
+
+
+
+ Additional properties specific to a cryptographic algorithm.
+
+
+
+
+
+
+
+ Cryptographic building blocks used in higher-level cryptographic systems and
+ protocols. Primitives represent different cryptographic routines: deterministic
+ random bit generators (drbg, e.g. CTR_DRBG from NIST SP800-90A-r1), message
+ authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES),
+ streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256),
+ public-key encryption schemes (pke, e.g. RSA), extended output functions
+ (xof, e.g. SHAKE256), key derivation functions (e.g. pbkdf2), key agreement
+ algorithms (e.g. ECDH), key encapsulation mechanisms (e.g. ML-KEM), authenticated
+ encryption (ae, e.g. AES-GCM) and the combination of multiple algorithms
+ (combiner, e.g. SP800-56Cr2).
+
+
+
+
+
+
+
+ Deterministic Random Bit Generator (DRBG) is a type of pseudorandom
+ number generator designed to produce a sequence of bits from an initial
+ seed value. DRBGs are commonly used in cryptographic applications where
+ reproducibility of random values is important.
+
+
+
+
+
+
+ In cryptography, a Message Authentication Code (MAC) is information
+ used for authenticating and integrity-checking a message.
+
+
+
+
+
+
+ A block cipher is a symmetric key algorithm that operates on fixed-size
+ blocks of data. It encrypts or decrypts the data in block units,
+ providing confidentiality. Block ciphers are widely used in various
+ cryptographic modes and protocols for secure data transmission.
+
+
+
+
+
+
+ A stream cipher is a symmetric key cipher where plaintext digits are
+ combined with a pseudorandom cipher digit stream (keystream).
+
+
+
+
+
+
+ In cryptography, a signature is a digital representation of a message
+ or data that proves its origin, identity, and integrity. Digital
+ signatures are generated using cryptographic algorithms and are widely
+ used for authentication and verification in secure communication.
+
+
+
+
+
+
+ A hash function is a mathematical algorithm that takes an input
+ (or 'message') and produces a fixed-size string of characters, which is
+ typically a hash value. Hash functions are commonly used in various
+ cryptographic applications, including data integrity verification and
+ password hashing.
+
+
+
+
+
+
+ Public Key Encryption (PKE) is a type of encryption that uses a pair of
+ public and private keys for secure communication. The public key is used
+ for encryption, while the private key is used for decryption. PKE is a
+ fundamental component of public-key cryptography.
+
+
+
+
+
+
+ An XOF is an extendable output function that can take arbitrary input
+ and creates a stream of output, up to a limit determined by the size of
+ the internal state of the hash function that underlies the XOF.
+
+
+
+
+
+
+ A Key Derivation Function (KDF) derives key material from another source
+ of entropy while preserving the entropy of the input.
+
+
+
+
+
+
+ In cryptography, a key-agreement is a protocol whereby two or more
+ parties agree on a cryptographic key in such a way that both influence
+ the outcome.
+
+
+
+
+
+
+ A Key Encapsulation Mechanism (KEM) algorithm is a mechanism for
+ transporting random keying material to a recipient using the recipient's
+ public key.
+
+
+
+
+
+
+ Authenticated Encryption (AE) is a cryptographic process that provides
+ both confidentiality and data integrity. It ensures that the encrypted
+ data has not been tampered with and comes from a legitimate source.
+ AE is commonly used in secure communication protocols.
+
+
+
+
+
+
+ A combiner aggregates many candidates for a cryptographic primitive and
+ generates a new candidate for the same primitive.
+
+
+
+
+
+
+ Another primitive type.
+
+
+
+
+
+
+ The primitive is not known.
+
+
+
+
+
+
+
+
+
+ An identifier for the parameter set of the cryptographic algorithm. Examples: in
+ AES128, '128' identifies the key length in bits, in SHA256, '256' identifies the
+ digest length, '128' in SHAKE128 identifies its maximum security level in bits, and
+ 'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205).
+
+
+
+
+
+
+ The specific underlying Elliptic Curve (EC) definition employed which is an indicator
+ of the level of security strength, performance and complexity. Absent an
+ authoritative source of curve names, CycloneDX recommends use of curve names as
+ defined at https://neuromancer.sk/std/, the source from which can be found at
+ https://github.com/J08nY/std-curves.
+
+
+
+
+
+
+ The target and execution environment in which the algorithm is implemented in.
+
+
+
+
+
+
+
+ A software implementation running in plain unencrypted RAM.
+
+
+
+
+
+
+ A software implementation running in encrypted RAM.
+
+
+
+
+
+ A software implementation running in a trusted execution environment.
+
+
+
+
+
+ A hardware implementation.
+
+
+
+
+
+ Another implementation environment.
+
+
+
+
+
+ The execution environment is not known.
+
+
+
+
+
+
+
+
+
+ The target platform for which the algorithm is implemented. The implementation can
+ be 'generic', running on any platform or for a specific platform.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The certification that the implementation of the cryptographic algorithm has
+ received, if any. Certifications include revisions and levels of FIPS 140 or
+ Common Criteria of different Extended Assurance Levels (CC-EAL).
+
+
+
+
+
+
+
+ No certification obtained
+
+
+
+
+
+
+ FIPS 140-1 Level 1
+
+
+
+
+
+
+ FIPS 140-1 Level 2
+
+
+
+
+
+
+ FIPS 140-1 Level 3
+
+
+
+
+
+
+ FIPS 140-1 Level 4
+
+
+
+
+
+
+ FIPS 140-2 Level 1
+
+
+
+
+
+
+ FIPS 140-2 Level 2
+
+
+
+
+
+
+ FIPS 140-2 Level 3
+
+
+
+
+
+
+ FIPS 140-2 Level 4
+
+
+
+
+
+
+ FIPS 140-3 Level 1
+
+
+
+
+
+
+ FIPS 140-3 Level 2
+
+
+
+
+
+
+ FIPS 140-3 Level 3
+
+
+
+
+
+
+ FIPS 140-3 Level 4
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 1
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 1 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 2
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 2 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 3
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 3 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 4
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 4 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 5
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 5 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 6
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 6 (Augmented)
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 7
+
+
+
+
+
+
+ Common Criteria - Evaluation Assurance Level 7 (Augmented)
+
+
+
+
+
+
+ Another certification
+
+
+
+
+
+
+ The certification level is not known
+
+
+
+
+
+
+
+
+
+ The mode of operation in which the cryptographic algorithm (block cipher) is used.
+
+
+
+
+
+
+
+ Cipher block chaining
+
+
+
+
+
+
+ Electronic codebook
+
+
+
+
+
+
+ Counter with cipher block chaining message authentication code
+
+
+
+
+
+
+ Galois/counter
+
+
+
+
+
+
+ Cipher feedback
+
+
+
+
+
+
+ Output feedback
+
+
+
+
+
+
+ Counter
+
+
+
+
+
+
+ Another mode of operation
+
+
+
+
+
+
+ The mode of operation is not known
+
+
+
+
+
+
+
+
+
+ The padding scheme that is used for the cryptographic algorithm.
+
+
+
+
+
+
+
+ Password-Based Cryptography Specification #5
+
+
+
+
+
+
+ Public Key Cryptography Standard: Cryptographic Message Syntax
+
+
+
+
+
+
+ Public Key Cryptography Standard: RSA Cryptography v1.5
+
+
+
+
+
+
+ Optimal asymmetric encryption padding
+
+
+
+
+
+
+ Raw
+
+
+
+
+
+
+ Another padding scheme
+
+
+
+
+
+
+ The padding scheme is not known
+
+
+
+
+
+
+
+
+
+ The cryptographic functions implemented by the cryptographic algorithm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The classical security level that a cryptographic algorithm provides (in bits).
+
+
+
+
+
+
+
+
+
+
+
+ The NIST security strength category as defined in
+ https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria).
+ A value of 0 indicates that none of the categories are met.
+
+
+
+
+
+
+
+
+
+
+
+
+
- The underlying path created from the actual volume.
+ Properties for cryptographic assets of asset type 'certificate'
+
+
+
+
+
+ The subject name for the certificate
+
+
+
+
+
+
+ The issuer name for the certificate
+
+
+
+
+
+
+ The date and time according to ISO-8601 standard from which the certificate is valid
+
+
+
+
+
+
+ The date and time according to ISO-8601 standard from which the certificate is not valid anymore
+
+
+
+
+
+
+ The bom-ref to signature algorithm used by the certificate
+
+
+
+
+
+
+ The bom-ref to the public key of the subject
+
+
+
+
+
+
+ The format of the certificate. Examples include X.509, PEM, DER, and CVC
+
+
+
+
+
+
+ The file extension of the certificate. Examples include crt, pem, cer, der, and p12.
+
+
+
+
+
-
+
- The allocated size of the volume accessible to the associated workspace. This should include
- the scalar size as well as IEC standard unit in either decimal or binary form.
+ Properties for cryptographic assets of asset type 'relatedCryptoMaterial'
+
+
+
+
+
+ The type for the related cryptographic material
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The optional unique identifier for the related cryptographic material.
+
+
+
+
+
+
+ The key state as defined by NIST SP 800-57.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The bom-ref to the algorithm used to generate the related cryptographic material.
+
+
+
+
+
+
+ The date and time (timestamp) when the related cryptographic material was created.
+
+
+
+
+
+
+ The date and time (timestamp) when the related cryptographic material was activated.
+
+
+
+
+
+
+ The date and time (timestamp) when the related cryptographic material was updated.
+
+
+
+
+
+
+ The date and time (timestamp) when the related cryptographic material expires.
+
+
+
+
+
+
+ The associated value of the cryptographic material.
+
+
+
+
+
+
+ The size of the cryptographic asset (in bits).
+
+
+
+
+
+
+ The format of the related cryptographic material (e.g. P8, PEM, DER).
+
+
+
+
+
+
+ The mechanism by which the cryptographic asset is secured by.
+
+
+
+
+
+
+
+ Specifies the mechanism by which the cryptographic asset is secured by.
+ Examples include HSM, TPM, XGX, Software, and None.
+
+
+
+
+
+
+ The bom-ref to the algorithm.
+
+
+
+
+
+
+
+
-
+
- Indicates if the volume persists beyond the life of the resource it is associated with.
+ Properties specific to cryptographic assets of type: 'protocol'.
+
+
+
+
+
+ The concrete protocol type.
+
+
+
+
+
+
+
+ Transport Layer Security
+
+
+
+
+
+
+ Secure Shell
+
+
+
+
+
+
+ Internet Protocol Security
+
+
+
+
+
+
+ Internet Key Exchange
+
+
+
+
+
+
+ Secure Socket Tunneling Protocol
+
+
+
+
+
+
+ Wi-Fi Protected Access
+
+
+
+
+
+
+ Another protocol type
+
+
+
+
+
+
+ The protocol type is not known
+
+
+
+
+
+
+
+
+
+ The version of the protocol. Examples include 1.0, 1.2, and 1.99.
+
+
+
+
+
+
+ A list of cipher suites related to the protocol.
+
+
+
+
+
+
+
+
+
+
+ A common name for the cipher suite. For example: TLS_DHE_RSA_WITH_AES_128_CCM
+
+
+
+
+
+
+ A list of algorithms related to the cipher suite.
+
+
+
+
+
+
+
+ The bom-ref to algorithm cryptographic asset.
+
+
+
+
+
+
+
+
+
+ A list of common identifiers for the cipher suite.
+
+
+
+
+
+
+
+ Cipher suite identifier. Examples include 0xC0 and 0x9E.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2,
+ and additional properties.
+
+
+
+
+
+
+
+ Transform Type 1: encryption algorithms
+
+
+
+
+
+
+ Transform Type 2: pseudorandom functions
+
+
+
+
+
+
+ Transform Type 3: integrity algorithms
+
+
+
+
+
+
+ Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)
+
+
+
+
+
+
+ Specifies if an Extended Sequence Number (ESN) is used.
+
+
+
+
+
+
+ IKEv2 Authentication method
+
+
+
+
+
+
+
+
-
+
- Indicates if the volume is remotely (i.e., network) attached.
+ The object identifier (OID) of the cryptographic asset.
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
-
-
-
-
-
-
-
-
-
-
- Executes specific commands or tools in order to accomplish its owning task as part of a sequence.
-
-
+
-
+
- A name for the step.
+ The list of assessors evaluating claims and determining conformance to requirements and confidence in that assessment.
+
+
+
+
+
+ The assessor who evaluates claims and determines conformance to requirements and confidence in that assessment.
+
+
+
+
+
+
+
+ The boolean indicating if the assessor is outside the organization generating claims. A value of false indicates a self assessor.
+
+
+
+
+
+
+ The entity issuing the assessment.
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the object elsewhere in the BOM.
+ Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
-
+
- A description of the step.
+ The list of attestations asserted by an assessor that maps requirements to claims.
+
+
+
+
+
+ An attestation asserted by an assessor that maps requirements to claims.
+
+
+
+
+
+
+
+ The short description explaining the main points of the attestation.
+
+
+
+
+
+
+ The `bom-ref` to the assessor asserting the attestation.
+
+
+
+
+
+
+ The grouping of requirements to claims and the attestors declared conformance and confidence thereof.
+
+
+
+
+
+
+
+ The `bom-ref` to the requirement being attested to.
+
+
+
+
+
+
+ The list of `bom-ref` to the claims being attested to.
+
+
+
+
+
+
+
+ The `bom-ref` to the claim being attested to.
+
+
+
+
+
+
+
+
+
+ The list of `bom-ref` to the counter claims being attested to.
+
+
+
+
+
+
+
+ The `bom-ref` to the counter claim being attested to.
+
+
+
+
+
+
+
+
+
+ The conformance of the claim meeting a requirement.
+
+
+
+
+
+
+
+ The conformance of the claim between and inclusive of 0 and 1, where 1 is 100% conformance.
+
+
+
+
+
+
+
+
+
+
+
+
+ The rationale for the score of conformance.
+
+
+
+
+
+
+ The list of `bom-ref` to the evidence provided describing the
+ mitigation strategies. Each mitigation strategy should include an
+ explanation of how any weaknesses in the evidence will be mitigated.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The confidence of the claim meeting the requirement.
+
+
+
+
+
+
+
+ The confidence of the claim between and inclusive of 0 and 1, where 1 is 100% confidence.
+
+
+
+
+
+
+
+
+
+
+
+
+ The rationale for the confidence score.
+
+
+
+
+
+
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+
-
+
- Ordered list of commands or directives for the step
+ The list of claims.
-
+
-
+
- A text representation of the executed command.
+ The `bom-ref` to a target representing a specific system, application,
+ API, module, team, person, process, business unit, company, etc...
+ that this claim is being applied to.
-
+
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
+
+ The specific statement or assertion about the target.
+
+
+
+
+
+
+ The list of `bom-ref` to the evidence provided describing the
+ mitigation strategies. Each mitigation strategy should include an
+ explanation of how any weaknesses in the evidence will be mitigated.
+
+
+
+
+
+
+
+
+
+
+
+ The written explanation of why the evidence provided substantiates the claim.
+
+
+
+
+
+
+ The list of `bom-ref` to evidence that supports this claim.
+
+
+
+
+
+
+ The list of `bom-ref` to counterEvidence that supports this claim.
+
+
+
+
+
+ Provides the ability to document external references related to the claim the BOM describes.
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+ An optional identifier which can be used to reference the object elsewhere
+ in the BOM. Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
-
-
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
-
-
- The unique identifier for the resource instance within its deployment context.
-
-
-
-
-
-
- The name of the resource instance.
-
-
-
-
-
-
- The description of the resource instance.
-
-
-
-
-
-
- References to component or service resources that are used to realize the resource instance.
-
-
-
-
-
-
- The source type of event which caused the trigger to fire.
-
-
-
-
+
- The event data that caused the associated trigger to activate.
+ The list of evidence
-
-
-
+
- A condition that was used to determine a trigger should be activated.
+ The list of evidence
+
+
+
+ The reference to the property name as defined in the [CycloneDX Property Taxonomy](https://github.com/CycloneDX/cyclonedx-property-taxonomy/).
+
+
+
- Describes the set of conditions which cause the trigger to activate.
+ The written description of what this evidence is and how it was created.
-
+
- The logical expression that was evaluated that determined the trigger should be fired.
+ The output or analysis that supports claims.
+
+
+
+
+
+ The name of the data.
+
+
+
+
+
+
+ The contents or references to the contents of the data being described.
+
+
+
+
+
+
+ An optional way to include textual or encoded data.
+
+
+
+
+ The URL to where the data can be retrieved.
+
+
+
+
+
+
+
+
+ Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.
+
+
+
+
+
+
+ A description of any sensitive data.
+
+
+
+
+
+
-
+
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
+ The date and time (timestamp) when the evidence was created.
+
+
+
+
+ The optional date and time (timestamp) when the evidence is no longer valid.
+
+
+
+
+ The author of the evidence.
+
+
+
+
+ The reviewer of the evidence.
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the object elsewhere
+ in the BOM. Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
+
+
+
+
+ The list of targets which claims are made against.
+
+
+
+
+
+
+
+ The list of organizations which claims are made against.
+
+
+
+
+
+
+
+
+
+
+
+ The list of components which claims are made against.
+
+
+
+
+
+
+
+
+
+
+
+ The list of services which claims are made against.
+
+
+
+
+
-
-
-
- The date and time (timestamp) when the trigger was activated.
-
-
-
-
-
-
- Represents resources and data brought into a task at runtime by executor or task commands
-
-
-
-
-
-
-
-
-
-
-
- Represents resources and data output from a task at runtime by executor or task commands
-
-
+
-
+
+
+
+ The brief statement affirmed by an individual regarding all declarations.
+ This could be an affirmation of acceptance by a third-party auditor or receiving
+ individual of a file. For example: "I certify, to the best of my knowledge, that all information is correct."
+
+
+
+
+
+
+ The list of signatories authorized on behalf of an organization to assert validity of this document.
+
+
+
+
+
+
+
+
+
+
+ The signatory's name.
+
+
+
+
+
+
+ The signatory's role within an organization.
+
+
+
+
+
+
+ The signatory's organization.
+
+
+
+
+
+
+ An External reference provide a way to document systems, sites, and information that may be relevant, but are not included with the BOM. They may also establish specific relationships within or external to the BOM.
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
+
+
+
+
+
+
+
+
+
+ Allows any undeclared elements as long as the elements are placed in a different namespace.
+
+
+
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
-
-
-
- Allows any undeclared elements as long as the elements are placed in a different namespace.
-
-
-
-
-
-
-
- An optional identifier which can be used to reference the trigger elsewhere in the BOM.
- Uniqueness is enforced within all elements and children of the root-level bom element.
-
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The unique identifier of the event.
-
-
-
-
-
-
- A description of the event.
-
-
-
-
-
-
- The date and time (timestamp) when the event was received.
-
-
-
-
-
-
- Encoding of the raw event data.
-
-
-
-
-
-
- References the component or service that was the source of the event
-
-
-
-
-
-
- References the component or service that was the target of the event
-
-
-
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
@@ -5115,87 +7889,28 @@ limitations under the License.
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
- Type that represents various input data types and formats.
-
-
-
-
-
-
-
- A reference to an independent resource provided as an input to a task by the workflow runtime.
-
-
-
-
-
-
- Inputs that have the form of parameters with names and values.
-
-
-
-
-
-
- Inputs that have the form of parameters with names and values.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inputs that have the form of data.
-
-
-
-
-
-
-
- A references to the component or service that provided the input to the task
- (e.g., reference to a service with data flow value of inbound)
-
-
-
-
-
-
- A reference to the component or service that received or stored the input if not the task
- itself (e.g., a local, named storage workspace)
-
-
-
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
+
+
+
+
+
+
+ A collection of reusable objects that are defined and may be used elsewhere in the BOM.
+
+
+
+
+
+
+
+
+
+
+ The list of standards which may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.
+
+
+
+
@@ -5212,136 +7927,208 @@ limitations under the License.
-
+
- Represents resources and data output from a task at runtime by executor or task commands
+ A standard may consist of regulations, industry or organizational-specific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to.
-
-
-
-
- A reference to an independent resource generated as output by the task.
-
-
-
-
-
-
- Outputs that have the form of environment variables.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Outputs that have the form of data.
-
-
-
-
-
+
- Describes the type of data output.
+ The name of the standard. This will often be a shortened, single name of the standard.
-
+
- Component or service that generated or provided the output from the task (e.g., a build tool)
+ The version of the standard.
-
+
- Component or service that received the output from the task
- (e.g., reference to an artifactory service with data flow value of outbound)
+ The description of the standard.
-
-
- Provides the ability to document properties in a name/value store.
- This provides flexibility to include data not officially supported in the standard
- without having to use additional namespaces or create extensions. Property names
- of interest to the general public are encouraged to be registered in the
- CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
- Formal registration is OPTIONAL.
-
-
-
+
- Allows any undeclared elements as long as the elements are placed in a different namespace.
+ The owner of the standard, often the entity responsible for its release.
-
-
-
-
- User-defined attributes may be used on this element as long as they
- do not have the same name as an existing attribute used by the schema.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A representation of a functional parameter.
-
-
-
-
+
+
- The name of the parameter.
+ The list of requirements comprising the standard.
+
+
+
+
+
+
+
+
+ The unique identifier used in the standard to identify a specific requirement. This should match what is in the standard and should not be the requirements bom-ref.
+
+
+
+
+
+
+ The title of the requirement.
+
+
+
+
+
+
+ The textual content of the requirement.
+
+
+
+
+
+
+ The supplemental text that provides additional guidance or context to the requirement, but is not directly part of the requirement.
+
+
+
+
+
+
+
+
+
+
+
+ The Common Requirements Enumeration (CRE) identifier(s). CRE is a structured and standardized framework for uniting security standards and guidelines. CRE links each section of a resource to a shared topic identifier (a Common Requirement). Through this shared topic link, all resources map to each other. Use of CRE promotes clear and unambiguous communication among stakeholders.
+
+
+
+
+
+
+
+
+
+
+
+ The optional `bom-ref` to a parent requirement. This establishes a hierarchy of requirements. Top-level requirements must not define a parent. Only child requirements should define parents.
+
+
+
+
+
+ Provides the ability to document properties in a name/value store.
+ This provides flexibility to include data not officially supported in the standard
+ without having to use additional namespaces or create extensions. Property names
+ of interest to the general public are encouraged to be registered in the
+ CycloneDX Property Taxonomy - https://github.com/CycloneDX/cyclonedx-property-taxonomy.
+ Formal registration is OPTIONAL.
+
+
+
+
+ Provides the ability to document external references related to the BOM or
+ to the project the BOM describes.
+
+
+
+
+
+
+ An optional identifier which can be used to reference the object elsewhere
+ in the BOM. Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
-
+
- The value of the parameter.
+ The list of levels associated with the standard. Some standards have different levels of compliance.
+
+
+
+
+
+
+
+
+ The identifier used in the standard to identify a specific level.
+
+
+
+
+
+
+ The title of the level.
+
+
+
+
+
+
+ The description of the level.
+
+
+
+
+
+
+ The list of requirement `bom-ref`s that comprise the level.
+
+
+
+
+
+
+
+
+
+
+
+
+ An optional identifier which can be used to reference the object elsewhere
+ in the BOM. Every bom-ref MUST be unique within the BOM.
+
+
+
+
+
+ User-defined attributes may be used on this element as long as they
+ do not have the same name as an existing attribute used by the schema.
+
+
+
+
+
+
-
+
-
- The data type of the parameter.
-
+ Provides the ability to document external references related to the BOM or
+ to the project the BOM describes.
@@ -5352,7 +8139,15 @@ limitations under the License.
-
+
+
+
+ An optional identifier which can be used to reference the object elsewhere
+ in the BOM. Every bom-ref MUST be unique within the BOM.
+
+
+
+
User-defined attributes may be used on this element as long as they
do not have the same name as an existing attribute used by the schema.
@@ -5360,6 +8155,22 @@ limitations under the License.
+
+
+
+
+ Textual strings that aid in discovery, search, and retrieval of the associated
+ object. Tags often serve as a way to group or categorize similar or related objects by various
+ attributes.
+
+ Examples include:
+ "json-parser", "object-persistence", "text-to-image", "translation", and "object-detection"
+
+
+
+
+
+
@@ -5426,6 +8237,21 @@ limitations under the License.
in the manufacturing process.
+
+
+
+ The list of declarations which describe the conformance to standards. Each declaration may
+ include attestations, claims, and evidence.
+
+
+
+
+
+
+ A collection of reusable objects that are defined and may be used elsewhere in the BOM.
+
+
+
diff --git a/schema/cyclonedx/spdx.xsd b/schema/cyclonedx/spdx.xsd
index 1365ed71f..a339a0857 100644
--- a/schema/cyclonedx/spdx.xsd
+++ b/schema/cyclonedx/spdx.xsd
@@ -2,7 +2,7 @@
+ version="1.0-3.24.0">
@@ -12,6 +12,11 @@
BSD Zero Clause License
+
+
+ 3D Slicer License v1.0
+
+
Attribution Assurance License
@@ -117,6 +122,11 @@
Aladdin Free Public License
+
+
+ AMD newlib License
+
+
AMD's plpa_map.c License
@@ -147,6 +157,11 @@
ANTLR Software Rights Notice with license fallback
+
+
+ Any OSI License
+
+
Apache License 1.0
@@ -322,6 +337,11 @@
BSD 2-Clause - Ian Darwin variant
+
+
+ BSD 2-Clause - first lines requirement
+
+
BSD 2-Clause FreeBSD License
@@ -522,6 +542,11 @@
Caldera License (without preamble)
+
+
+ Catharon License
+
+
Computer Associates Trusted Open Source License 1.1
@@ -1002,6 +1027,11 @@
curl License
+
+
+ Common Vulnerability Enumeration ToU License
+
+
Deutsche Freie Software Lizenz
@@ -1482,6 +1512,11 @@
gtkbook License
+
+
+ Gutmann License
+
+
Haskell Language Report License
@@ -1532,11 +1567,21 @@
HPND with US Government export control warning
+
+
+ HPND with US Government export control warning and acknowledgment
+
+
HPND with US Government export control warning and modification rqmt
+
+
+ HPND with US Government export control and 2 disclaimers
+
+
Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant
@@ -1547,6 +1592,11 @@
Historical Permission Notice and Disclaimer - INRIA-IMAG variant
+
+
+ Historical Permission Notice and Disclaimer - Intel variant
+
+
Historical Permission Notice and Disclaimer - Kevlin Henney variant
@@ -1557,6 +1607,11 @@
Historical Permission Notice and Disclaimer - Markus Kuhn variant
+
+
+ Historical Permission Notice and Disclaimer - merchantability variant
+
+
Historical Permission Notice and Disclaimer with MIT disclaimer
@@ -1587,11 +1642,21 @@
HPND sell variant with MIT disclaimer
+
+
+ HPND sell variant with MIT disclaimer - reverse
+
+
Historical Permission Notice and Disclaimer - University of California variant
+
+
+ Historical Permission Notice and Disclaimer - University of California, US export warning
+
+
HTML Tidy License
@@ -2027,6 +2092,11 @@
MIT Festival Variant
+
+
+ MIT Khronos - old variant
+
+
MIT License Modern Variant
@@ -2162,11 +2232,21 @@
Net Boolean Public License v1
+
+
+ NCBI Public Domain Notice
+
+
Non-Commercial Government Licence
+
+
+ NCL Source Code License
+
+
University of Illinois/NCSA Open Source License
@@ -2282,6 +2362,11 @@
Open Use of Data Agreement v1.0
+
+
+ OAR License
+
+
Open CASCADE Technology Public License
@@ -2562,6 +2647,11 @@
Pixar License
+
+
+ pkgconf License
+
+
Plexus Classworlds License
@@ -2587,6 +2677,11 @@
PostgreSQL License
+
+
+ Peer Production License
+
+
Python Software Foundation License 2.0
@@ -2862,6 +2957,11 @@
Sun PPP License
+
+
+ Sun PPP License (2000)
+
+
SunPro License
@@ -2907,6 +3007,11 @@
Transitive Grace Period Public Licence 1.0
+
+
+ threeparttable License
+
+
TMate Open Source License
@@ -3132,6 +3237,11 @@
XSkat License
+
+
+ xzoom License
+
+
Yahoo! Public License v1.0
@@ -3203,6 +3313,11 @@
Asterisk exception
+
+
+ Asterisk linking protocols exception
+
+
Autoconf exception 2.0
@@ -3438,6 +3553,11 @@
OpenVPN OpenSSL Exception
+
+
+ PCRE2 exception
+
+
PS/PDF font exception (2017-08-17)
@@ -3463,6 +3583,11 @@
Qwt exception 1.0
+
+
+ RRDtool FLOSS exception 2.0
+
+
SANE Exception
diff --git a/schema/json/schema-16.0.13.json b/schema/json/schema-16.0.13.json
new file mode 100644
index 000000000..fc873ed1d
--- /dev/null
+++ b/schema/json/schema-16.0.13.json
@@ -0,0 +1,2525 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.13/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-16.0.14.json b/schema/json/schema-16.0.14.json
new file mode 100644
index 000000000..028f3004b
--- /dev/null
+++ b/schema/json/schema-16.0.14.json
@@ -0,0 +1,2537 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.14/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-16.0.15.json b/schema/json/schema-16.0.15.json
new file mode 100644
index 000000000..1bab78aa6
--- /dev/null
+++ b/schema/json/schema-16.0.15.json
@@ -0,0 +1,2582 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.15/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiplpackPackage"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "SwiplpackPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "packagerEmail": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "packager",
+ "packagerEmail",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-16.0.16.json b/schema/json/schema-16.0.16.json
new file mode 100644
index 000000000..a88197859
--- /dev/null
+++ b/schema/json/schema-16.0.16.json
@@ -0,0 +1,2629 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.16/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "OpamPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "licenses": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "url": {
+ "type": "string"
+ },
+ "checksum": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "licenses",
+ "url",
+ "checksum",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/OpamPackage"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiplpackPackage"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "SwiplpackPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "packagerEmail": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "packager",
+ "packagerEmail",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-16.0.17.json b/schema/json/schema-16.0.17.json
new file mode 100644
index 000000000..015c9003b
--- /dev/null
+++ b/schema/json/schema-16.0.17.json
@@ -0,0 +1,2721 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.17/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaJvmInstallation": {
+ "properties": {
+ "release": {
+ "$ref": "#/$defs/JavaVMRelease"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "release",
+ "files"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaVMRelease": {
+ "properties": {
+ "implementor": {
+ "type": "string"
+ },
+ "implementorVersion": {
+ "type": "string"
+ },
+ "javaRuntimeVersion": {
+ "type": "string"
+ },
+ "javaVersion": {
+ "type": "string"
+ },
+ "javaVersionDate": {
+ "type": "string"
+ },
+ "libc": {
+ "type": "string"
+ },
+ "modules": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "osArch": {
+ "type": "string"
+ },
+ "osName": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "buildSource": {
+ "type": "string"
+ },
+ "buildSourceRepo": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "fullVersion": {
+ "type": "string"
+ },
+ "semanticVersion": {
+ "type": "string"
+ },
+ "buildInfo": {
+ "type": "string"
+ },
+ "jvmVariant": {
+ "type": "string"
+ },
+ "jvmVersion": {
+ "type": "string"
+ },
+ "imageType": {
+ "type": "string"
+ },
+ "buildType": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "OpamPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "licenses": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "url": {
+ "type": "string"
+ },
+ "checksum": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "licenses",
+ "url",
+ "checksum",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavaJvmInstallation"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/OpamPackage"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiplpackPackage"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "SwiplpackPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "packagerEmail": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "packager",
+ "packagerEmail",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-16.0.18.json b/schema/json/schema-16.0.18.json
new file mode 100644
index 000000000..936582e2d
--- /dev/null
+++ b/schema/json/schema-16.0.18.json
@@ -0,0 +1,2727 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "anchore.io/schema/syft/json/16.0.18/document",
+ "$ref": "#/$defs/Document",
+ "$defs": {
+ "AlpmDbEntry": {
+ "properties": {
+ "basepackage": {
+ "type": "string"
+ },
+ "package": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "validation": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "backup": {
+ "items": {
+ "$ref": "#/$defs/AlpmFileRecord"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "basepackage",
+ "package",
+ "version",
+ "description",
+ "architecture",
+ "size",
+ "packager",
+ "url",
+ "validation",
+ "reason",
+ "files",
+ "backup"
+ ]
+ },
+ "AlpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "uid": {
+ "type": "string"
+ },
+ "gid": {
+ "type": "string"
+ },
+ "time": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "size": {
+ "type": "string"
+ },
+ "link": {
+ "type": "string"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ApkDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "originPackage": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "pullDependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pullChecksum": {
+ "type": "string"
+ },
+ "gitCommitOfApkPort": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/ApkFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "originPackage",
+ "maintainer",
+ "version",
+ "architecture",
+ "url",
+ "description",
+ "size",
+ "installedSize",
+ "pullDependencies",
+ "provides",
+ "pullChecksum",
+ "gitCommitOfApkPort",
+ "files"
+ ]
+ },
+ "ApkFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "ownerUid": {
+ "type": "string"
+ },
+ "ownerGid": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "BinarySignature": {
+ "properties": {
+ "matches": {
+ "items": {
+ "$ref": "#/$defs/ClassifierMatch"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "matches"
+ ]
+ },
+ "CConanFileEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanInfoEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockEntry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "package_id": {
+ "type": "string"
+ },
+ "prev": {
+ "type": "string"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "build_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "py_requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "options": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "path": {
+ "type": "string"
+ },
+ "context": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CConanLockV2Entry": {
+ "properties": {
+ "ref": {
+ "type": "string"
+ },
+ "packageID": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ },
+ "channel": {
+ "type": "string"
+ },
+ "recipeRevision": {
+ "type": "string"
+ },
+ "packageRevision": {
+ "type": "string"
+ },
+ "timestamp": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ref"
+ ]
+ },
+ "CPE": {
+ "properties": {
+ "cpe": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpe"
+ ]
+ },
+ "ClassifierMatch": {
+ "properties": {
+ "classifier": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Location"
+ }
+ },
+ "type": "object",
+ "required": [
+ "classifier",
+ "location"
+ ]
+ },
+ "CocoaPodfileLockEntry": {
+ "properties": {
+ "checksum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "checksum"
+ ]
+ },
+ "Coordinates": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "DartPubspecLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "hosted_url": {
+ "type": "string"
+ },
+ "vcs_url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Descriptor": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "configuration": true
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "Digest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "Document": {
+ "properties": {
+ "artifacts": {
+ "items": {
+ "$ref": "#/$defs/Package"
+ },
+ "type": "array"
+ },
+ "artifactRelationships": {
+ "items": {
+ "$ref": "#/$defs/Relationship"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/File"
+ },
+ "type": "array"
+ },
+ "source": {
+ "$ref": "#/$defs/Source"
+ },
+ "distro": {
+ "$ref": "#/$defs/LinuxRelease"
+ },
+ "descriptor": {
+ "$ref": "#/$defs/Descriptor"
+ },
+ "schema": {
+ "$ref": "#/$defs/Schema"
+ }
+ },
+ "type": "object",
+ "required": [
+ "artifacts",
+ "artifactRelationships",
+ "source",
+ "distro",
+ "descriptor",
+ "schema"
+ ]
+ },
+ "DotnetDepsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "sha512": {
+ "type": "string"
+ },
+ "hashPath": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "path",
+ "sha512",
+ "hashPath"
+ ]
+ },
+ "DotnetPortableExecutableEntry": {
+ "properties": {
+ "assemblyVersion": {
+ "type": "string"
+ },
+ "legalCopyright": {
+ "type": "string"
+ },
+ "comments": {
+ "type": "string"
+ },
+ "internalName": {
+ "type": "string"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "productName": {
+ "type": "string"
+ },
+ "productVersion": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "assemblyVersion",
+ "legalCopyright",
+ "companyName",
+ "productName",
+ "productVersion"
+ ]
+ },
+ "DpkgDbEntry": {
+ "properties": {
+ "package": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "installedSize": {
+ "type": "integer"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preDepends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/DpkgFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "package",
+ "source",
+ "version",
+ "sourceVersion",
+ "architecture",
+ "maintainer",
+ "installedSize",
+ "files"
+ ]
+ },
+ "DpkgFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "isConfigFile": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "isConfigFile"
+ ]
+ },
+ "ELFSecurityFeatures": {
+ "properties": {
+ "symbolTableStripped": {
+ "type": "boolean"
+ },
+ "stackCanary": {
+ "type": "boolean"
+ },
+ "nx": {
+ "type": "boolean"
+ },
+ "relRO": {
+ "type": "string"
+ },
+ "pie": {
+ "type": "boolean"
+ },
+ "dso": {
+ "type": "boolean"
+ },
+ "safeStack": {
+ "type": "boolean"
+ },
+ "cfi": {
+ "type": "boolean"
+ },
+ "fortify": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "symbolTableStripped",
+ "nx",
+ "relRO",
+ "pie",
+ "dso"
+ ]
+ },
+ "ElfBinaryPackageNoteJsonPayload": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "system": {
+ "type": "string"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "commit": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ElixirMixLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "ErlangRebarLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "pkgHash": {
+ "type": "string"
+ },
+ "pkgHashExt": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "pkgHash",
+ "pkgHashExt"
+ ]
+ },
+ "Executable": {
+ "properties": {
+ "format": {
+ "type": "string"
+ },
+ "hasExports": {
+ "type": "boolean"
+ },
+ "hasEntrypoint": {
+ "type": "boolean"
+ },
+ "importedLibraries": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "elfSecurityFeatures": {
+ "$ref": "#/$defs/ELFSecurityFeatures"
+ }
+ },
+ "type": "object",
+ "required": [
+ "format",
+ "hasExports",
+ "hasEntrypoint",
+ "importedLibraries"
+ ]
+ },
+ "File": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "location": {
+ "$ref": "#/$defs/Coordinates"
+ },
+ "metadata": {
+ "$ref": "#/$defs/FileMetadataEntry"
+ },
+ "contents": {
+ "type": "string"
+ },
+ "digests": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/FileLicense"
+ },
+ "type": "array"
+ },
+ "executable": {
+ "$ref": "#/$defs/Executable"
+ },
+ "unknowns": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "location"
+ ]
+ },
+ "FileLicense": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "evidence": {
+ "$ref": "#/$defs/FileLicenseEvidence"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type"
+ ]
+ },
+ "FileLicenseEvidence": {
+ "properties": {
+ "confidence": {
+ "type": "integer"
+ },
+ "offset": {
+ "type": "integer"
+ },
+ "extent": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "confidence",
+ "offset",
+ "extent"
+ ]
+ },
+ "FileMetadataEntry": {
+ "properties": {
+ "mode": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ },
+ "linkDestination": {
+ "type": "string"
+ },
+ "userID": {
+ "type": "integer"
+ },
+ "groupID": {
+ "type": "integer"
+ },
+ "mimeType": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode",
+ "type",
+ "userID",
+ "groupID",
+ "mimeType",
+ "size"
+ ]
+ },
+ "GoModuleBuildinfoEntry": {
+ "properties": {
+ "goBuildSettings": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "goCompiledVersion": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "h1Digest": {
+ "type": "string"
+ },
+ "mainModule": {
+ "type": "string"
+ },
+ "goCryptoSettings": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "goExperiments": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "goCompiledVersion",
+ "architecture"
+ ]
+ },
+ "GoModuleEntry": {
+ "properties": {
+ "h1Digest": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HaskellHackageStackLockEntry": {
+ "properties": {
+ "pkgHash": {
+ "type": "string"
+ },
+ "snapshotURL": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "IDLikes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "JavaArchive": {
+ "properties": {
+ "virtualPath": {
+ "type": "string"
+ },
+ "manifest": {
+ "$ref": "#/$defs/JavaManifest"
+ },
+ "pomProperties": {
+ "$ref": "#/$defs/JavaPomProperties"
+ },
+ "pomProject": {
+ "$ref": "#/$defs/JavaPomProject"
+ },
+ "digest": {
+ "items": {
+ "$ref": "#/$defs/Digest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "virtualPath"
+ ]
+ },
+ "JavaJvmInstallation": {
+ "properties": {
+ "release": {
+ "$ref": "#/$defs/JavaVMRelease"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "release",
+ "files"
+ ]
+ },
+ "JavaManifest": {
+ "properties": {
+ "main": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/$defs/KeyValues"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "JavaPomParent": {
+ "properties": {
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaPomProject": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "parent": {
+ "$ref": "#/$defs/JavaPomParent"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "groupId",
+ "artifactId",
+ "version",
+ "name"
+ ]
+ },
+ "JavaPomProperties": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "groupId": {
+ "type": "string"
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "scope": {
+ "type": "string"
+ },
+ "extraFields": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "name",
+ "groupId",
+ "artifactId",
+ "version"
+ ]
+ },
+ "JavaVMRelease": {
+ "properties": {
+ "implementor": {
+ "type": "string"
+ },
+ "implementorVersion": {
+ "type": "string"
+ },
+ "javaRuntimeVersion": {
+ "type": "string"
+ },
+ "javaVersion": {
+ "type": "string"
+ },
+ "javaVersionDate": {
+ "type": "string"
+ },
+ "libc": {
+ "type": "string"
+ },
+ "modules": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "osArch": {
+ "type": "string"
+ },
+ "osName": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "buildSource": {
+ "type": "string"
+ },
+ "buildSourceRepo": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "fullVersion": {
+ "type": "string"
+ },
+ "semanticVersion": {
+ "type": "string"
+ },
+ "buildInfo": {
+ "type": "string"
+ },
+ "jvmVariant": {
+ "type": "string"
+ },
+ "jvmVersion": {
+ "type": "string"
+ },
+ "imageType": {
+ "type": "string"
+ },
+ "buildType": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "JavascriptNpmPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "private": {
+ "type": "boolean"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "homepage",
+ "description",
+ "url",
+ "private"
+ ]
+ },
+ "JavascriptNpmPackageLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "JavascriptYarnLockEntry": {
+ "properties": {
+ "resolved": {
+ "type": "string"
+ },
+ "integrity": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "resolved",
+ "integrity"
+ ]
+ },
+ "KeyValue": {
+ "properties": {
+ "key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "KeyValues": {
+ "items": {
+ "$ref": "#/$defs/KeyValue"
+ },
+ "type": "array"
+ },
+ "License": {
+ "properties": {
+ "value": {
+ "type": "string"
+ },
+ "spdxExpression": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "urls": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "value",
+ "spdxExpression",
+ "type",
+ "urls",
+ "locations"
+ ]
+ },
+ "LinuxKernelArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "extendedVersion": {
+ "type": "string"
+ },
+ "buildTime": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "format": {
+ "type": "string"
+ },
+ "rwRootFS": {
+ "type": "boolean"
+ },
+ "swapDevice": {
+ "type": "integer"
+ },
+ "rootDevice": {
+ "type": "integer"
+ },
+ "videoMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "architecture",
+ "version"
+ ]
+ },
+ "LinuxKernelModule": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "sourceVersion": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "kernelVersion": {
+ "type": "string"
+ },
+ "versionMagic": {
+ "type": "string"
+ },
+ "parameters": {
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/$defs/LinuxKernelModuleParameter"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxKernelModuleParameter": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LinuxRelease": {
+ "properties": {
+ "prettyName": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "idLike": {
+ "$ref": "#/$defs/IDLikes"
+ },
+ "version": {
+ "type": "string"
+ },
+ "versionID": {
+ "type": "string"
+ },
+ "versionCodename": {
+ "type": "string"
+ },
+ "buildID": {
+ "type": "string"
+ },
+ "imageID": {
+ "type": "string"
+ },
+ "imageVersion": {
+ "type": "string"
+ },
+ "variant": {
+ "type": "string"
+ },
+ "variantID": {
+ "type": "string"
+ },
+ "homeURL": {
+ "type": "string"
+ },
+ "supportURL": {
+ "type": "string"
+ },
+ "bugReportURL": {
+ "type": "string"
+ },
+ "privacyPolicyURL": {
+ "type": "string"
+ },
+ "cpeName": {
+ "type": "string"
+ },
+ "supportEnd": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Location": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "layerID": {
+ "type": "string"
+ },
+ "accessPath": {
+ "type": "string"
+ },
+ "annotations": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "accessPath"
+ ]
+ },
+ "LuarocksPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "dependencies": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "license",
+ "homepage",
+ "description",
+ "url",
+ "dependencies"
+ ]
+ },
+ "MicrosoftKbPatch": {
+ "properties": {
+ "product_id": {
+ "type": "string"
+ },
+ "kb": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "product_id",
+ "kb"
+ ]
+ },
+ "NixStoreEntry": {
+ "properties": {
+ "outputHash": {
+ "type": "string"
+ },
+ "output": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "outputHash",
+ "files"
+ ]
+ },
+ "OpamPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "licenses": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "url": {
+ "type": "string"
+ },
+ "checksum": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "licenses",
+ "url",
+ "checksum",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "Package": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "foundBy": {
+ "type": "string"
+ },
+ "locations": {
+ "items": {
+ "$ref": "#/$defs/Location"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "$ref": "#/$defs/licenses"
+ },
+ "language": {
+ "type": "string"
+ },
+ "cpes": {
+ "$ref": "#/$defs/cpes"
+ },
+ "purl": {
+ "type": "string"
+ },
+ "metadataType": {
+ "type": "string"
+ },
+ "metadata": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/$defs/AlpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ApkDbEntry"
+ },
+ {
+ "$ref": "#/$defs/BinarySignature"
+ },
+ {
+ "$ref": "#/$defs/CConanFileEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanInfoEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockEntry"
+ },
+ {
+ "$ref": "#/$defs/CConanLockV2Entry"
+ },
+ {
+ "$ref": "#/$defs/CocoaPodfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DartPubspecLockEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetDepsEntry"
+ },
+ {
+ "$ref": "#/$defs/DotnetPortableExecutableEntry"
+ },
+ {
+ "$ref": "#/$defs/DpkgDbEntry"
+ },
+ {
+ "$ref": "#/$defs/ElfBinaryPackageNoteJsonPayload"
+ },
+ {
+ "$ref": "#/$defs/ElixirMixLockEntry"
+ },
+ {
+ "$ref": "#/$defs/ErlangRebarLockEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleBuildinfoEntry"
+ },
+ {
+ "$ref": "#/$defs/GoModuleEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackEntry"
+ },
+ {
+ "$ref": "#/$defs/HaskellHackageStackLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavaArchive"
+ },
+ {
+ "$ref": "#/$defs/JavaJvmInstallation"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackage"
+ },
+ {
+ "$ref": "#/$defs/JavascriptNpmPackageLockEntry"
+ },
+ {
+ "$ref": "#/$defs/JavascriptYarnLockEntry"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelArchive"
+ },
+ {
+ "$ref": "#/$defs/LinuxKernelModule"
+ },
+ {
+ "$ref": "#/$defs/LuarocksPackage"
+ },
+ {
+ "$ref": "#/$defs/MicrosoftKbPatch"
+ },
+ {
+ "$ref": "#/$defs/NixStoreEntry"
+ },
+ {
+ "$ref": "#/$defs/OpamPackage"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerInstalledEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpComposerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PhpPeclEntry"
+ },
+ {
+ "$ref": "#/$defs/PortageDbEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPackage"
+ },
+ {
+ "$ref": "#/$defs/PythonPipRequirementsEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPipfileLockEntry"
+ },
+ {
+ "$ref": "#/$defs/PythonPoetryLockEntry"
+ },
+ {
+ "$ref": "#/$defs/RDescription"
+ },
+ {
+ "$ref": "#/$defs/RpmArchive"
+ },
+ {
+ "$ref": "#/$defs/RpmDbEntry"
+ },
+ {
+ "$ref": "#/$defs/RubyGemspec"
+ },
+ {
+ "$ref": "#/$defs/RustCargoAuditEntry"
+ },
+ {
+ "$ref": "#/$defs/RustCargoLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiftPackageManagerLockEntry"
+ },
+ {
+ "$ref": "#/$defs/SwiplpackPackage"
+ },
+ {
+ "$ref": "#/$defs/WordpressPluginEntry"
+ }
+ ]
+ }
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "foundBy",
+ "locations",
+ "licenses",
+ "language",
+ "cpes",
+ "purl"
+ ]
+ },
+ "PhpComposerAuthors": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "PhpComposerExternalReference": {
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "reference": {
+ "type": "string"
+ },
+ "shasum": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "url",
+ "reference"
+ ]
+ },
+ "PhpComposerInstalledEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpComposerLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "dist": {
+ "$ref": "#/$defs/PhpComposerExternalReference"
+ },
+ "require": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "provide": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "require-dev": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "suggest": {
+ "patternProperties": {
+ ".*": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "type": "string"
+ },
+ "notification-url": {
+ "type": "string"
+ },
+ "bin": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "$ref": "#/$defs/PhpComposerAuthors"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "time": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "dist"
+ ]
+ },
+ "PhpPeclEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "license": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "PortageDbEntry": {
+ "properties": {
+ "installedSize": {
+ "type": "integer"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PortageFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installedSize",
+ "files"
+ ]
+ },
+ "PortageFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonDirectURLOriginInfo": {
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "commitId": {
+ "type": "string"
+ },
+ "vcs": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "url"
+ ]
+ },
+ "PythonFileDigest": {
+ "properties": {
+ "algorithm": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "algorithm",
+ "value"
+ ]
+ },
+ "PythonFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "digest": {
+ "$ref": "#/$defs/PythonFileDigest"
+ },
+ "size": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path"
+ ]
+ },
+ "PythonPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/PythonFileRecord"
+ },
+ "type": "array"
+ },
+ "sitePackagesRootPath": {
+ "type": "string"
+ },
+ "topLevelPackages": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "directUrlOrigin": {
+ "$ref": "#/$defs/PythonDirectURLOriginInfo"
+ },
+ "requiresPython": {
+ "type": "string"
+ },
+ "requiresDist": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "providesExtra": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "platform",
+ "sitePackagesRootPath"
+ ]
+ },
+ "PythonPipRequirementsEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionConstraint": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "markers": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "versionConstraint"
+ ]
+ },
+ "PythonPipfileLockEntry": {
+ "properties": {
+ "hashes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "index": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hashes",
+ "index"
+ ]
+ },
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
+ "PythonPoetryLockEntry": {
+ "properties": {
+ "index": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
+ ]
+ },
+ "RDescription": {
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "maintainer": {
+ "type": "string"
+ },
+ "url": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "repository": {
+ "type": "string"
+ },
+ "built": {
+ "type": "string"
+ },
+ "needsCompilation": {
+ "type": "boolean"
+ },
+ "imports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "depends": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "suggests": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Relationship": {
+ "properties": {
+ "parent": {
+ "type": "string"
+ },
+ "child": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "parent",
+ "child",
+ "type"
+ ]
+ },
+ "RpmArchive": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmDbEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "epoch": {
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "architecture": {
+ "type": "string"
+ },
+ "release": {
+ "type": "string"
+ },
+ "sourceRpm": {
+ "type": "string"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "vendor": {
+ "type": "string"
+ },
+ "modularityLabel": {
+ "type": "string"
+ },
+ "provides": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "requires": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "files": {
+ "items": {
+ "$ref": "#/$defs/RpmFileRecord"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "epoch",
+ "architecture",
+ "release",
+ "sourceRpm",
+ "size",
+ "vendor",
+ "files"
+ ]
+ },
+ "RpmFileRecord": {
+ "properties": {
+ "path": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "integer"
+ },
+ "size": {
+ "type": "integer"
+ },
+ "digest": {
+ "$ref": "#/$defs/Digest"
+ },
+ "userName": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "flags": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "path",
+ "mode",
+ "size",
+ "digest",
+ "userName",
+ "groupName",
+ "flags"
+ ]
+ },
+ "RubyGemspec": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ]
+ },
+ "RustCargoAuditEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source"
+ ]
+ },
+ "RustCargoLockEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "checksum": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "source",
+ "checksum",
+ "dependencies"
+ ]
+ },
+ "Schema": {
+ "properties": {
+ "version": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "version",
+ "url"
+ ]
+ },
+ "Source": {
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ },
+ "metadata": true
+ },
+ "type": "object",
+ "required": [
+ "id",
+ "name",
+ "version",
+ "type",
+ "metadata"
+ ]
+ },
+ "SwiftPackageManagerLockEntry": {
+ "properties": {
+ "revision": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "revision"
+ ]
+ },
+ "SwiplpackPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "packagerEmail": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "packager",
+ "packagerEmail",
+ "homepage",
+ "dependencies"
+ ]
+ },
+ "WordpressPluginEntry": {
+ "properties": {
+ "pluginInstallDirectory": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorUri": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "pluginInstallDirectory"
+ ]
+ },
+ "cpes": {
+ "items": {
+ "$ref": "#/$defs/CPE"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "items": {
+ "$ref": "#/$defs/License"
+ },
+ "type": "array"
+ }
+ }
+}
diff --git a/schema/json/schema-latest.json b/schema/json/schema-latest.json
index 724e0bab8..936582e2d 100644
--- a/schema/json/schema-latest.json
+++ b/schema/json/schema-latest.json
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
- "$id": "anchore.io/schema/syft/json/16.0.12/document",
+ "$id": "anchore.io/schema/syft/json/16.0.18/document",
"$ref": "#/$defs/Document",
"$defs": {
"AlpmDbEntry": {
@@ -647,12 +647,24 @@
"type": {
"type": "string"
},
- "vendor": {
+ "architecture": {
+ "type": "string"
+ },
+ "osCPE": {
+ "type": "string"
+ },
+ "os": {
+ "type": "string"
+ },
+ "osVersion": {
"type": "string"
},
"system": {
"type": "string"
},
+ "vendor": {
+ "type": "string"
+ },
"sourceRepo": {
"type": "string"
},
@@ -765,6 +777,12 @@
},
"executable": {
"$ref": "#/$defs/Executable"
+ },
+ "unknowns": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
}
},
"type": "object",
@@ -943,6 +961,24 @@
"virtualPath"
]
},
+ "JavaJvmInstallation": {
+ "properties": {
+ "release": {
+ "$ref": "#/$defs/JavaVMRelease"
+ },
+ "files": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "release",
+ "files"
+ ]
+ },
"JavaManifest": {
"properties": {
"main": {
@@ -1050,6 +1086,77 @@
"version"
]
},
+ "JavaVMRelease": {
+ "properties": {
+ "implementor": {
+ "type": "string"
+ },
+ "implementorVersion": {
+ "type": "string"
+ },
+ "javaRuntimeVersion": {
+ "type": "string"
+ },
+ "javaVersion": {
+ "type": "string"
+ },
+ "javaVersionDate": {
+ "type": "string"
+ },
+ "libc": {
+ "type": "string"
+ },
+ "modules": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "osArch": {
+ "type": "string"
+ },
+ "osName": {
+ "type": "string"
+ },
+ "osVersion": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "buildSource": {
+ "type": "string"
+ },
+ "buildSourceRepo": {
+ "type": "string"
+ },
+ "sourceRepo": {
+ "type": "string"
+ },
+ "fullVersion": {
+ "type": "string"
+ },
+ "semanticVersion": {
+ "type": "string"
+ },
+ "buildInfo": {
+ "type": "string"
+ },
+ "jvmVariant": {
+ "type": "string"
+ },
+ "jvmVersion": {
+ "type": "string"
+ },
+ "imageType": {
+ "type": "string"
+ },
+ "buildType": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"JavascriptNpmPackage": {
"properties": {
"name": {
@@ -1424,6 +1531,50 @@
"files"
]
},
+ "OpamPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "licenses": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "url": {
+ "type": "string"
+ },
+ "checksum": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "licenses",
+ "url",
+ "checksum",
+ "homepage",
+ "dependencies"
+ ]
+ },
"Package": {
"properties": {
"id": {
@@ -1527,6 +1678,9 @@
{
"$ref": "#/$defs/JavaArchive"
},
+ {
+ "$ref": "#/$defs/JavaJvmInstallation"
+ },
{
"$ref": "#/$defs/JavascriptNpmPackage"
},
@@ -1551,6 +1705,9 @@
{
"$ref": "#/$defs/NixStoreEntry"
},
+ {
+ "$ref": "#/$defs/OpamPackage"
+ },
{
"$ref": "#/$defs/PhpComposerInstalledEntry"
},
@@ -1596,6 +1753,9 @@
{
"$ref": "#/$defs/SwiftPackageManagerLockEntry"
},
+ {
+ "$ref": "#/$defs/SwiplpackPackage"
+ },
{
"$ref": "#/$defs/WordpressPluginEntry"
}
@@ -2051,15 +2211,74 @@
"index"
]
},
+ "PythonPoetryLockDependencyEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "optional": {
+ "type": "boolean"
+ },
+ "markers": {
+ "type": "string"
+ },
+ "extras": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "optional"
+ ]
+ },
"PythonPoetryLockEntry": {
"properties": {
"index": {
"type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockDependencyEntry"
+ },
+ "type": "array"
+ },
+ "extras": {
+ "items": {
+ "$ref": "#/$defs/PythonPoetryLockExtraEntry"
+ },
+ "type": "array"
}
},
"type": "object",
"required": [
- "index"
+ "index",
+ "dependencies"
+ ]
+ },
+ "PythonPoetryLockExtraEntry": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "dependencies"
]
},
"RDescription": {
@@ -2433,6 +2652,48 @@
"revision"
]
},
+ "SwiplpackPackage": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "author": {
+ "type": "string"
+ },
+ "authorEmail": {
+ "type": "string"
+ },
+ "packager": {
+ "type": "string"
+ },
+ "packagerEmail": {
+ "type": "string"
+ },
+ "homepage": {
+ "type": "string"
+ },
+ "dependencies": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version",
+ "author",
+ "authorEmail",
+ "packager",
+ "packagerEmail",
+ "homepage",
+ "dependencies"
+ ]
+ },
"WordpressPluginEntry": {
"properties": {
"pluginInstallDirectory": {
diff --git a/syft/cataloging/compliance.go b/syft/cataloging/compliance.go
new file mode 100644
index 000000000..180c49d15
--- /dev/null
+++ b/syft/cataloging/compliance.go
@@ -0,0 +1,47 @@
+package cataloging
+
+import (
+ "strings"
+)
+
+const (
+ ComplianceActionKeep ComplianceAction = "keep"
+ ComplianceActionDrop ComplianceAction = "drop"
+ ComplianceActionStub ComplianceAction = "stub"
+)
+
+const UnknownStubValue = "UNKNOWN"
+
+type ComplianceAction string
+
+type ComplianceConfig struct {
+ MissingName ComplianceAction `yaml:"missing-name" json:"missing-name" mapstructure:"missing-name"`
+ MissingVersion ComplianceAction `yaml:"missing-version" json:"missing-version" mapstructure:"missing-version"`
+}
+
+func DefaultComplianceConfig() ComplianceConfig {
+ // Note: name and version are required minimum SBOM elements by NTIA, thus should be the API default
+ return ComplianceConfig{
+ MissingName: ComplianceActionDrop,
+ MissingVersion: ComplianceActionStub,
+ }
+}
+
+func (c ComplianceConfig) Parse() ComplianceConfig {
+ return ComplianceConfig{
+ MissingName: c.MissingName.Parse(),
+ MissingVersion: c.MissingVersion.Parse(),
+ }
+}
+
+func (c ComplianceAction) Parse() ComplianceAction {
+ switch strings.ToLower(string(c)) {
+ case string(ComplianceActionKeep), "include":
+ return ComplianceActionKeep
+ case string(ComplianceActionDrop), "exclude":
+ return ComplianceActionDrop
+ case string(ComplianceActionStub), "replace":
+ return ComplianceActionStub
+ }
+ return ComplianceActionKeep
+}
diff --git a/syft/cataloging/filecataloging/config_test.go b/syft/cataloging/filecataloging/config_test.go
deleted file mode 100644
index ca62dccb1..000000000
--- a/syft/cataloging/filecataloging/config_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package filecataloging
-
-import (
- "crypto"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/file"
-)
-
-func TestConfig_MarshalJSON(t *testing.T) {
- tests := []struct {
- name string
- cfg Config
- want []byte
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "converts hashers to strings",
- cfg: Config{
- Selection: file.FilesOwnedByPackageSelection,
- Hashers: []crypto.Hash{crypto.SHA256},
- },
- want: []byte(`{"selection":"owned-by-package","hashers":["sha-256"],"content":{"globs":null,"skip-files-above-size":0}}`),
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
- got, err := tt.cfg.MarshalJSON()
- tt.wantErr(t, err)
- if err != nil {
- return
- }
- if d := cmp.Diff(got, tt.want); d != "" {
- t.Errorf("MarshalJSON() mismatch (-want +got):\n%s", d)
- }
- })
- }
-}
-
-func TestConfig_UnmarshalJSON(t *testing.T) {
-
- tests := []struct {
- name string
- data []byte
- want Config
- wantErr bool
- }{
- {
- name: "converts strings to hashers",
- data: []byte(`{"selection":"owned-by-package","hashers":["sha-256"]}`),
- want: Config{
- Selection: file.FilesOwnedByPackageSelection,
- Hashers: []crypto.Hash{crypto.SHA256},
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- cfg := Config{}
- if err := cfg.UnmarshalJSON(tt.data); (err != nil) != tt.wantErr {
- t.Errorf("UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
- }
-
- assert.Equal(t, tt.want, cfg)
- })
- }
-}
diff --git a/syft/cataloging/unknowns.go b/syft/cataloging/unknowns.go
new file mode 100644
index 000000000..ad3f55fea
--- /dev/null
+++ b/syft/cataloging/unknowns.go
@@ -0,0 +1,15 @@
+package cataloging
+
+type UnknownsConfig struct {
+ RemoveWhenPackagesDefined bool
+ IncludeExecutablesWithoutPackages bool
+ IncludeUnexpandedArchives bool
+}
+
+func DefaultUnknownsConfig() UnknownsConfig {
+ return UnknownsConfig{
+ RemoveWhenPackagesDefined: true,
+ IncludeExecutablesWithoutPackages: true,
+ IncludeUnexpandedArchives: true,
+ }
+}
diff --git a/syft/configuration_audit_trail_test.go b/syft/configuration_audit_trail_test.go
deleted file mode 100644
index 56e9a20d7..000000000
--- a/syft/configuration_audit_trail_test.go
+++ /dev/null
@@ -1,346 +0,0 @@
-package syft
-
-import (
- "bytes"
- "crypto"
- "encoding/json"
- "fmt"
- "io"
- "reflect"
- "sort"
- "testing"
-
- "github.com/hashicorp/go-multierror"
- "github.com/iancoleman/strcase"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/cataloging/filecataloging"
- "github.com/anchore/syft/syft/file"
-)
-
-func Test_configurationAuditTrail_StructTags(t *testing.T) {
- // we need to ensure that the output for any configuration is well-formed and follows conventions.
- // We ensure that:
- // 1. all fields have a JSON tag
- // 2. the tag value follows lowercase kebab-case style
-
- jsonTags := getJSONTags(t, configurationAuditTrail{})
-
- for _, tag := range jsonTags {
- assertLowercaseKebab(t, tag)
- }
-
-}
-
-func getJSONTags(t *testing.T, v interface{}) []string {
- var tags []string
- err := collectJSONTags(t, reflect.ValueOf(v), &tags, "", "")
- require.NoError(t, err)
- return tags
-}
-
-func collectJSONTags(t *testing.T, v reflect.Value, tags *[]string, parentTag string, path string) error {
- var errs error
-
- if v.Kind() == reflect.Ptr {
- v = v.Elem()
- }
-
- if v.Kind() != reflect.Struct {
- return errs
- }
-
- tType := v.Type()
- for i := 0; i < v.NumField(); i++ {
- field := v.Field(i)
- fieldType := tType.Field(i)
-
- curPath := path + "." + fieldType.Name
-
- // account for embeddings
- if fieldType.Anonymous {
- embeddedField := field
-
- if embeddedField.Kind() == reflect.Ptr {
- // this can be enhanced in the future if the need arises...
- errs = multierror.Append(errs, fmt.Errorf("field '%s' is a pointer to an embedded struct, this is not supported in the test helper", curPath))
- }
-
- if embeddedField.Kind() == reflect.Struct {
- err := collectJSONTags(t, field, tags, parentTag, curPath)
- if err != nil {
- errs = multierror.Append(errs, err)
- }
- }
-
- continue
- }
-
- var tag string
- var ok bool
- if fieldType.PkgPath == "" {
- tag, ok = fieldType.Tag.Lookup("json")
- if !ok || (tag == "" && parentTag == "") {
- errs = multierror.Append(errs, fmt.Errorf("field '%s' does not have a json tag", curPath))
- return errs
- }
- if tag != "" && tag != "-" {
- *tags = append(*tags, tag)
- }
- }
-
- if field.Kind() == reflect.Struct || (field.Kind() == reflect.Ptr && field.Elem().Kind() == reflect.Struct) {
- err := collectJSONTags(t, field, tags, tag, curPath)
- if err != nil {
- errs = multierror.Append(errs, err)
- }
- }
- }
- return errs
-}
-
-func assertLowercaseKebab(t *testing.T, tag string) {
- t.Helper()
- require.NotEmpty(t, tag)
- assert.Equal(t, strcase.ToKebab(tag), tag)
-}
-
-func Test_collectJSONTags(t *testing.T) {
- // though this is not used in production, this is a sensitive and complex enough of a check to warrant testing the test helper.
- type good struct {
- A string `json:"a"`
- }
-
- type missing struct {
- A string `json:"a"`
- B string
- }
-
- type exclude struct {
- A string `json:"a"`
- B string `json:"-"`
- }
-
- type goodEmbedded struct {
- good `json:""`
- }
-
- type badEmbedded struct {
- missing `json:""`
- }
-
- // simply not covered and require further development to support
- type goodPtrEmbedded struct {
- *good `json:""`
- }
-
- // simply not covered and require further development to support
- type badPtrEmbedded struct {
- *missing `json:""`
- }
-
- tests := []struct {
- name string
- v interface{}
- want []string
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "good",
- v: good{},
- want: []string{
- "a",
- },
- },
- {
- name: "missing",
- v: missing{},
- wantErr: require.Error,
- },
- {
- name: "exclude",
- v: exclude{},
- want: []string{
- "a",
- },
- },
- {
- name: "bad embedded",
- v: badEmbedded{},
- wantErr: require.Error,
- },
- {
- name: "good embedded",
- v: goodEmbedded{},
- want: []string{
- "a",
- },
- },
- // these cases are simply not covered and require further development to support
- {
- name: "bad ptr embedded",
- v: badPtrEmbedded{},
- wantErr: require.Error,
- },
- {
- name: "good ptr embedded",
- v: goodPtrEmbedded{},
- want: []string{
- "a",
- },
- wantErr: require.Error,
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- var tags []string
-
- err := collectJSONTags(t, reflect.ValueOf(tt.v), &tags, "", "")
-
- tt.wantErr(t, err)
- if err != nil {
- return
- }
-
- assert.Equal(t, tt.want, tags)
- })
- }
-
-}
-
-func Test_configurationAuditTrail_MarshalJSON(t *testing.T) {
-
- tests := []struct {
- name string
- cfg configurationAuditTrail
- assert func(t *testing.T, got []byte)
- }{
- {
- name: "ensure other marshallers are called",
- cfg: configurationAuditTrail{
-
- Files: filecataloging.Config{
- Selection: file.FilesOwnedByPackageSelection,
- Hashers: []crypto.Hash{
- crypto.SHA256,
- },
- },
- },
- // the custom file marshaller swaps ints for strings for hashers
- assert: func(t *testing.T, got []byte) {
- assert.Contains(t, string(got), `"hashers":["sha-256"]`)
- },
- },
- {
- name: "ensure maps are sorted",
- cfg: configurationAuditTrail{},
- assert: func(t *testing.T, got []byte) {
- assert.NoError(t, assertJSONKeysSorted(got))
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
-
- got, err := tt.cfg.MarshalJSON()
- require.NoError(t, err)
- if tt.assert == nil {
- t.Fatal("assert function must be provided")
- }
- tt.assert(t, got)
-
- })
- }
-}
-
-// assertJSONKeysSorted asserts that all keys in JSON maps are sorted.
-func assertJSONKeysSorted(jsonBytes []byte) error {
- var errs error
- decoder := json.NewDecoder(bytes.NewReader(jsonBytes))
- var keys []string
- var inObject bool
-
- for {
- token, err := decoder.Token()
- if err != nil {
- if err == io.EOF {
- break
- }
- errs = multierror.Append(errs, fmt.Errorf("error decoding JSON: %w", err))
- }
-
- switch v := token.(type) {
- case json.Delim:
- switch v {
- case '{':
- inObject = true
- keys = nil // Reset keys for a new object
- case '}':
- inObject = false
- if !sort.StringsAreSorted(keys) {
- errs = multierror.Append(errs, fmt.Errorf("Keys are not sorted: %v", keys))
- }
- }
- case string:
- if inObject && v != "" {
- keys = append(keys, v)
- }
- }
- }
- return errs
-}
-
-func Test_assertJSONKeysSorted(t *testing.T) {
- // this test function is sufficiently complicated enough to warrant its own test...
-
- sorted := []byte(`{"a":1,"b":2}`)
- unsorted := []byte(`{"b":2,"a":1}`)
-
- nestedSorted := []byte(`{"a":1,"b":{"a":1,"b":2}}`)
- nestedUnsorted := []byte(`{"a":1,"b":{"b":2,"a":1}}`)
-
- tests := []struct {
- name string
- json []byte
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "sorted",
- json: sorted,
- wantErr: require.NoError,
- },
- {
- name: "unsorted",
- json: unsorted,
- wantErr: require.Error,
- },
- {
- name: "nested sorted",
- json: nestedSorted,
- wantErr: require.NoError,
- },
- {
- name: "nested unsorted",
- json: nestedUnsorted,
- wantErr: require.Error,
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- err := assertJSONKeysSorted(tt.json)
- tt.wantErr(t, err)
- })
-
- }
-}
diff --git a/syft/cpe/by_source_then_specificity_test.go b/syft/cpe/by_source_then_specificity_test.go
deleted file mode 100644
index 9687447f9..000000000
--- a/syft/cpe/by_source_then_specificity_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package cpe
-
-import (
- "sort"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestBySourceThenSpecificity(t *testing.T) {
- tests := []struct {
- name string
- input []CPE
- want []CPE
- }{
- {
- name: "empty case",
- },
- {
- name: "nvd before generated",
- input: []CPE{
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", GeneratedSource),
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- },
- want: []CPE{
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", GeneratedSource),
- },
- },
- {
- name: "declared before generated",
- input: []CPE{
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", GeneratedSource),
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", DeclaredSource),
- },
- want: []CPE{
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", DeclaredSource),
- Must("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*", GeneratedSource),
- },
- },
- {
- name: "most specific attributes of equal sources",
- input: []CPE{
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*", NVDDictionaryLookupSource),
- },
- want: []CPE{
- Must("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- },
- },
- {
- name: "most specific attributes of unknown sources",
- input: []CPE{
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", ""),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*", "some-other-unknown-source"),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", "some-unknown-source"),
- },
- want: []CPE{
- Must("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*", "some-other-unknown-source"),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", ""),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", "some-unknown-source"),
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- sort.Sort(BySourceThenSpecificity(tt.input))
- assert.Equal(t, tt.want, tt.input)
- })
- }
-}
diff --git a/syft/cpe/by_specificity_test.go b/syft/cpe/by_specificity_test.go
deleted file mode 100644
index 24df8db71..000000000
--- a/syft/cpe/by_specificity_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package cpe
-
-import (
- "sort"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func Test_BySpecificity(t *testing.T) {
- tests := []struct {
- name string
- input []Attributes
- expected []Attributes
- }{
- {
- name: "sort strictly by wfn *",
- input: []Attributes{
- MustAttributes("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:*:package:1:*:*:*:*:some:*:*"),
- MustAttributes("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*"),
- MustAttributes("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*"),
- },
- expected: []Attributes{
- MustAttributes("cpe:2.3:a:some:package:1:*:*:*:*:some:*:*"),
- MustAttributes("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:*:package:1:*:*:*:*:some:*:*"),
- MustAttributes("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*"),
- },
- },
- {
- name: "sort strictly by field length",
- input: []Attributes{
- MustAttributes("cpe:2.3:a:1:22:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:333:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:666666:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:4444:*:*"),
- },
- expected: []Attributes{
- MustAttributes("cpe:2.3:a:1:666666:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:4444:*:*"),
- MustAttributes("cpe:2.3:a:1:1:333:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:22:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:1:*:*"),
- },
- },
- {
- name: "sort by mix of field length and specificity",
- input: []Attributes{
- MustAttributes("cpe:2.3:a:1:666666:*:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:*:1:1:*:*:*:*:4444:*:*"),
- MustAttributes("cpe:2.3:a:1:*:333:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:22:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*"),
- },
- expected: []Attributes{
- MustAttributes("cpe:2.3:a:55555:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:22:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:1:1:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:1:666666:*:*:*:*:*:1:*:*"),
- MustAttributes("cpe:2.3:a:*:1:1:*:*:*:*:4444:*:*"),
- MustAttributes("cpe:2.3:a:1:*:333:*:*:*:*:*:*:*"),
- },
- },
- {
- name: "sort by mix of field length, specificity, dash",
- input: []Attributes{
- MustAttributes("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine_keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine-keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine-keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine_keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- },
- expected: []Attributes{
- MustAttributes("cpe:2.3:a:alpine-keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine-keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine_keys:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine_keys:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine:alpine-keys:2.3-r1:*:*:*:*:*:*:*"),
- MustAttributes("cpe:2.3:a:alpine:alpine_keys:2.3-r1:*:*:*:*:*:*:*"),
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- sort.Sort(BySpecificity(test.input))
- assert.Equal(t, test.expected, test.input)
- })
- }
-}
diff --git a/syft/cpe/cpe.go b/syft/cpe/cpe.go
index fe678977d..c996d4ad9 100644
--- a/syft/cpe/cpe.go
+++ b/syft/cpe/cpe.go
@@ -95,7 +95,7 @@ func NewAttributes(cpeStr string) (Attributes, error) {
}
// ensure that this Attributes can be validated after being fully sanitized
- if ValidateString(c.String()) != nil {
+ if err = ValidateString(c.String()); err != nil {
return Attributes{}, err
}
diff --git a/syft/cpe/cpe_test.go b/syft/cpe/cpe_test.go
deleted file mode 100644
index 4b3f60ae0..000000000
--- a/syft/cpe/cpe_test.go
+++ /dev/null
@@ -1,228 +0,0 @@
-package cpe
-
-import (
- "encoding/json"
- "fmt"
- "os"
- "strings"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-)
-
-func Test_NewAttributes(t *testing.T) {
- tests := []struct {
- name string
- input string
- expected Attributes
- }{
- {
- name: "gocase",
- input: `cpe:/a:10web:form_maker:1.0.0::~~~wordpress~~`,
- expected: MustAttributes(`cpe:2.3:a:10web:form_maker:1.0.0:*:*:*:*:wordpress:*:*`),
- },
- {
- name: "dashes",
- input: `cpe:/a:7-zip:7-zip:4.56:beta:~~~windows~~`,
- expected: MustAttributes(`cpe:2.3:a:7-zip:7-zip:4.56:beta:*:*:*:windows:*:*`),
- },
- {
- name: "URL escape characters",
- input: `cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::~~~android~~`,
- expected: MustAttributes(`cpe:2.3:a:\$0.99_kindle_books_project:\$0.99_kindle_books:6:*:*:*:*:android:*:*`),
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- actual, err := NewAttributes(test.input)
- if err != nil {
- t.Fatalf("got an error while creating Attributes: %+v", err)
- }
-
- if d := cmp.Diff(actual, test.expected); d != "" {
- t.Errorf("Attributes mismatch (-want +got):\n%s", d)
- }
-
- })
- }
-}
-
-func Test_normalizeCpeField(t *testing.T) {
-
- tests := []struct {
- field string
- expected string
- }{
- {
- field: "something",
- expected: "something",
- },
- {
- field: "some\\thing",
- expected: `some\thing`,
- },
- {
- field: "*",
- expected: "",
- },
- {
- field: "",
- expected: "",
- },
- }
- for _, test := range tests {
- t.Run(test.field, func(t *testing.T) {
- assert.Equal(t, test.expected, normalizeField(test.field))
- })
- }
-}
-
-func Test_CPEParser(t *testing.T) {
- var testCases []struct {
- CPEString string `json:"cpe-string"`
- CPEUrl string `json:"cpe-url"`
- WFN Attributes `json:"wfn"`
- }
- out, err := os.ReadFile("test-fixtures/cpe-data.json")
- require.NoError(t, err)
- require.NoError(t, json.Unmarshal(out, &testCases))
-
- for _, test := range testCases {
- t.Run(test.CPEString, func(t *testing.T) {
- c1, err := NewAttributes(test.CPEString)
- assert.NoError(t, err)
- c2, err := NewAttributes(test.CPEUrl)
- assert.NoError(t, err)
- assert.Equal(t, c1, c2)
- assert.Equal(t, c1, test.WFN)
- assert.Equal(t, c2, test.WFN)
- assert.Equal(t, test.WFN.String(), test.CPEString)
- })
- }
-}
-
-func Test_InvalidCPE(t *testing.T) {
- type testcase struct {
- name string
- in string
- expected string
- expectedErr bool
- }
-
- tests := []testcase{
- {
- // 5.3.2: The underscore (x5f) MAY be used, and it SHOULD be used in place of whitespace characters (which SHALL NOT be used)
- name: "translates spaces",
- in: "cpe:2.3:a:some-vendor:name:1 2:*:*:*:*:*:*:*",
- expected: "cpe:2.3:a:some-vendor:name:1_2:*:*:*:*:*:*:*",
- },
- {
- // it isn't easily possible in the string formatted string to detect improper escaping of : (it will fail parsing)
- name: "unescaped ':' cannot be helped -- too many fields",
- in: "cpe:2.3:a:some-vendor:name:::*:*:*:*:*:*:*",
- expectedErr: true,
- },
- {
- name: "too few fields",
- in: "cpe:2.3:a:some-vendor:name:*:*:*:*:*:*:*",
- expected: "cpe:2.3:a:some-vendor:name:*:*:*:*:*:*:*:*",
- },
- // Note: though the CPE spec does not allow for ? and * as escaped character input, these seem to be allowed in
- // the NVD CPE validator for this reason these edge cases were removed
- }
-
- // the wfn library does not account for escapes of . and -
- exceptions := ".-"
- // it isn't easily possible in the string formatted string to detect improper escaping of : (it will fail parsing)
- skip := ":"
-
- // make escape exceptions for section 5.3.2 of the CPE spec (2.3)
- for _, char := range allowedCPEPunctuation {
- if strings.Contains(skip, string(char)) {
- continue
- }
-
- in := fmt.Sprintf("cpe:2.3:a:some-vendor:name:*:%s:*:*:*:*:*:*", string(char))
- exp := fmt.Sprintf(`cpe:2.3:a:some-vendor:name:*:\%s:*:*:*:*:*:*`, string(char))
- if strings.Contains(exceptions, string(char)) {
- exp = in
- }
-
- tests = append(tests, testcase{
- name: fmt.Sprintf("allowes future escape of character (%s)", string(char)),
- in: in,
- expected: exp,
- expectedErr: false,
- })
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- c, err := NewAttributes(test.in)
- if test.expectedErr {
- assert.Error(t, err)
- if t.Failed() {
- t.Logf("got Attributes: %q details: %+v", c, c)
- }
- return
- }
- require.NoError(t, err)
- assert.Equal(t, test.expected, c.String())
- })
- }
-}
-
-func Test_RoundTrip(t *testing.T) {
- tests := []struct {
- name string
- cpe string
- parsedCPE Attributes
- }{
- {
- name: "normal",
- cpe: "cpe:2.3:a:some-vendor:name:3.2:*:*:*:*:*:*:*",
- parsedCPE: Attributes{
- Part: "a",
- Vendor: "some-vendor",
- Product: "name",
- Version: "3.2",
- },
- },
- {
- name: "escaped colon",
- cpe: "cpe:2.3:a:some-vendor:name:1\\:3.2:*:*:*:*:*:*:*",
- parsedCPE: Attributes{
- Part: "a",
- Vendor: "some-vendor",
- Product: "name",
- Version: "1:3.2",
- },
- },
- {
- name: "escaped forward slash",
- cpe: "cpe:2.3:a:test\\/some-vendor:name:3.2:*:*:*:*:*:*:*",
- parsedCPE: Attributes{
- Part: "a",
- Vendor: "test/some-vendor",
- Product: "name",
- Version: "3.2",
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- // Attributes string must be preserved through a round trip
- assert.Equal(t, test.cpe, MustAttributes(test.cpe).String())
- // The parsed Attributes must be the same after a round trip
- assert.Equal(t, MustAttributes(test.cpe), MustAttributes(MustAttributes(test.cpe).String()))
- // The test case parsed Attributes must be the same after parsing the input string
- assert.Equal(t, test.parsedCPE, MustAttributes(test.cpe))
- // The test case parsed Attributes must produce the same string as the input cpe
- assert.Equal(t, test.parsedCPE.String(), test.cpe)
- })
- }
-}
diff --git a/syft/cpe/merge_cpes_test.go b/syft/cpe/merge_cpes_test.go
deleted file mode 100644
index 747affcf4..000000000
--- a/syft/cpe/merge_cpes_test.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package cpe
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func Test_Merge(t *testing.T) {
- tests := []struct {
- name string
- input [][]CPE
- expected []CPE
- }{
- {
- name: "merge, removing duplicates and ordered",
- input: [][]CPE{
- {
- Must("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*", DeclaredSource),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", GeneratedSource),
- },
- {
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", DeclaredSource),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", GeneratedSource),
- },
- },
- expected: []CPE{
- Must("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*", NVDDictionaryLookupSource),
- Must("cpe:2.3:a:some:package:1:*:*:*:*:*:*:*", DeclaredSource),
- Must("cpe:2.3:a:*:package:1:*:*:*:*:*:*:*", DeclaredSource),
- Must("cpe:2.3:a:some:package:*:*:*:*:*:*:*:*", GeneratedSource),
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- out := Merge(test.input[0], test.input[1])
- assert.Equal(t, test.expected, out)
- })
- }
-}
diff --git a/syft/cpe/test-fixtures/cpe-data.json b/syft/cpe/test-fixtures/cpe-data.json
deleted file mode 100644
index a1ce42588..000000000
--- a/syft/cpe/test-fixtures/cpe-data.json
+++ /dev/null
@@ -1,16934 +0,0 @@
-[
- {
- "cpe-string": "cpe:2.3:h:supermicro:x9drff-7\\/i\\(t\\)g\\+:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:supermicro:x9drff-7%2fi%28t%29g%2b:-",
- "wfn": {
- "Part": "h",
- "Vendor": "supermicro",
- "Product": "x9drff-7/i(t)g+",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:thimpress:learnpress:3.0.0:closebeta.2:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:thimpress:learnpress:3.0.0:closebeta.2:~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "thimpress",
- "Product": "learnpress",
- "Version": "3.0.0",
- "Update": "closebeta.2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fortinet:fortisiem:3.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fortinet:fortisiem:3.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "fortinet",
- "Product": "fortisiem",
- "Version": "3.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:uglifyjs_project:uglifyjs:2.8.12:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:uglifyjs_project:uglifyjs:2.8.12::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "uglifyjs_project",
- "Product": "uglifyjs",
- "Version": "2.8.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:drogon:drogon:1.0.0:beta10:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:drogon:drogon:1.0.0:beta10",
- "wfn": {
- "Part": "a",
- "Vendor": "drogon",
- "Product": "drogon",
- "Version": "1.0.0",
- "Update": "beta10",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gtranslate:gtranslate:1.0.4:*:*:*:enterprise:wordpress:*:*",
- "cpe-url": "cpe:/a:gtranslate:gtranslate:1.0.4::~~enterprise~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gtranslate",
- "Product": "gtranslate",
- "Version": "1.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:abb:800xa_system:5.1:feature_pack_4_revision_d:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:abb:800xa_system:5.1:feature_pack_4_revision_d",
- "wfn": {
- "Part": "a",
- "Vendor": "abb",
- "Product": "800xa_system",
- "Version": "5.1",
- "Update": "feature_pack_4_revision_d",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:totvs:fluig_mobile:1.17.13:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:totvs:fluig_mobile:1.17.13::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "totvs",
- "Product": "fluig_mobile",
- "Version": "1.17.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:diesel:diesel:1.4.2:*:*:*:*:rust:*:*",
- "cpe-url": "cpe:/a:diesel:diesel:1.4.2::~~~rust~~",
- "wfn": {
- "Part": "a",
- "Vendor": "diesel",
- "Product": "diesel",
- "Version": "1.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "rust",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:mitsubishielectric:r16mtcpu_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:mitsubishielectric:r16mtcpu_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "mitsubishielectric",
- "Product": "r16mtcpu_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:communigate:communigate_pro:5.4.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:communigate:communigate_pro:5.4.8",
- "wfn": {
- "Part": "a",
- "Vendor": "communigate",
- "Product": "communigate_pro",
- "Version": "5.4.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:smartertools:smartermail:7.0.3845:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:smartertools:smartermail:7.0.3845",
- "wfn": {
- "Part": "a",
- "Vendor": "smartertools",
- "Product": "smartermail",
- "Version": "7.0.3845",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bluetrace:opentrace:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bluetrace:opentrace:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "bluetrace",
- "Product": "opentrace",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:crocoblock:jetwidgets_for_elementor:1.0.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:crocoblock:jetwidgets_for_elementor:1.0.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "crocoblock",
- "Product": "jetwidgets_for_elementor",
- "Version": "1.0.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:on_demand_services_sdk:0.14.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:on_demand_services_sdk:0.14.1",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "on_demand_services_sdk",
- "Version": "0.14.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:horde:wicked:2.0.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:horde:wicked:2.0.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "horde",
- "Product": "wicked",
- "Version": "2.0.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kopano:groupware_core:8.7.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kopano:groupware_core:8.7.9",
- "wfn": {
- "Part": "a",
- "Vendor": "kopano",
- "Product": "groupware_core",
- "Version": "8.7.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nasm:netwide_assembler:2.14.0:rc14:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nasm:netwide_assembler:2.14.0:rc14",
- "wfn": {
- "Part": "a",
- "Vendor": "nasm",
- "Product": "netwide_assembler",
- "Version": "2.14.0",
- "Update": "rc14",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:components_for_wp_bakery_page_builder_project:components_for_wp_bakery_page_builder:4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:components_for_wp_bakery_page_builder_project:components_for_wp_bakery_page_builder:4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "components_for_wp_bakery_page_builder_project",
- "Product": "components_for_wp_bakery_page_builder",
- "Version": "4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dollar_bank:dollar_bank_mobile:2.4.2:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:dollar_bank:dollar_bank_mobile:2.4.2::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "dollar_bank",
- "Product": "dollar_bank_mobile",
- "Version": "2.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adm-zip_project:adm-zip:0.1.4:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:adm-zip_project:adm-zip:0.1.4::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "adm-zip_project",
- "Product": "adm-zip",
- "Version": "0.1.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vega_project:vega:5.0.0:rc3:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:vega_project:vega:5.0.0:rc3:~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "vega_project",
- "Product": "vega",
- "Version": "5.0.0",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:citrix:gateway:12.1-62.25:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:citrix:gateway:12.1-62.25",
- "wfn": {
- "Part": "a",
- "Vendor": "citrix",
- "Product": "gateway",
- "Version": "12.1-62.25",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nystudio107:seomatic:3.1.38:*:*:*:*:craft_cms:*:*",
- "cpe-url": "cpe:/a:nystudio107:seomatic:3.1.38::~~~craft_cms~~",
- "wfn": {
- "Part": "a",
- "Vendor": "nystudio107",
- "Product": "seomatic",
- "Version": "3.1.38",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "craft_cms",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:lucene:2.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:lucene:2.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "lucene",
- "Version": "2.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spinnaker:orca:1.307.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:spinnaker:orca:1.307.0",
- "wfn": {
- "Part": "a",
- "Vendor": "spinnaker",
- "Product": "orca",
- "Version": "1.307.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:apple:iphone:1.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:apple:iphone:1.0.1",
- "wfn": {
- "Part": "h",
- "Vendor": "apple",
- "Product": "iphone",
- "Version": "1.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:scapy:scapy:0.9.17.33:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:scapy:scapy:0.9.17.33",
- "wfn": {
- "Part": "a",
- "Vendor": "scapy",
- "Product": "scapy",
- "Version": "0.9.17.33",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:metabox:meta_box:3.1.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:metabox:meta_box:3.1.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "metabox",
- "Product": "meta_box",
- "Version": "3.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:segue_project:segue:2.2.8.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:segue_project:segue:2.2.8.1",
- "wfn": {
- "Part": "a",
- "Vendor": "segue_project",
- "Product": "segue",
- "Version": "2.2.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:idreamsoft:icms:7.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:idreamsoft:icms:7.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "idreamsoft",
- "Product": "icms",
- "Version": "7.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spreecommerce:spree:0.30.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:spreecommerce:spree:0.30.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "spreecommerce",
- "Product": "spree",
- "Version": "0.30.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ruby-lang:ruby:1.8.7:p357:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ruby-lang:ruby:1.8.7:p357",
- "wfn": {
- "Part": "a",
- "Vendor": "ruby-lang",
- "Product": "ruby",
- "Version": "1.8.7",
- "Update": "p357",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:lucene:3.6.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:lucene:3.6.2",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "lucene",
- "Version": "3.6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:socket.io-file_project:socket.io-file:1.0.41:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:socket.io-file_project:socket.io-file:1.0.41::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "socket.io-file_project",
- "Product": "socket.io-file",
- "Version": "1.0.41",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mintty_project:mintty:2.2.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mintty_project:mintty:2.2.4",
- "wfn": {
- "Part": "a",
- "Vendor": "mintty_project",
- "Product": "mintty",
- "Version": "2.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:netgear:gs110tp:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:netgear:gs110tp:-",
- "wfn": {
- "Part": "h",
- "Vendor": "netgear",
- "Product": "gs110tp",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rsvpmaker_project:rsvpmaker:4.5.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:rsvpmaker_project:rsvpmaker:4.5.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "rsvpmaker_project",
- "Product": "rsvpmaker",
- "Version": "4.5.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:security_qradar_analyst_workflow:1.18.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:security_qradar_analyst_workflow:1.18.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "security_qradar_analyst_workflow",
- "Version": "1.18.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:docker:docker:2.1.0.2:*:*:*:community:*:*:*",
- "cpe-url": "cpe:/a:docker:docker:2.1.0.2::~~community~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "docker",
- "Product": "docker",
- "Version": "2.1.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "community",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudfoundry:cf-deployment:4.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudfoundry:cf-deployment:4.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudfoundry",
- "Product": "cf-deployment",
- "Version": "4.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:procurve_switch:jg247a:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:procurve_switch:jg247a",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "procurve_switch",
- "Version": "jg247a",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:microsoft:ms-dos:4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:microsoft:ms-dos:4.0",
- "wfn": {
- "Part": "o",
- "Vendor": "microsoft",
- "Product": "ms-dos",
- "Version": "4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:horde:horde_translation:1.0.0:alpha1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:horde:horde_translation:1.0.0:alpha1",
- "wfn": {
- "Part": "a",
- "Vendor": "horde",
- "Product": "horde_translation",
- "Version": "1.0.0",
- "Update": "alpha1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:saltos:saltos:3.7:8870:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:saltos:saltos:3.7:8870",
- "wfn": {
- "Part": "a",
- "Vendor": "saltos",
- "Product": "saltos",
- "Version": "3.7",
- "Update": "8870",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:mikrotik:routeros:6.43.7:*:*:*:-:*:*:*",
- "cpe-url": "cpe:/o:mikrotik:routeros:6.43.7::~~-~~~",
- "wfn": {
- "Part": "o",
- "Vendor": "mikrotik",
- "Product": "routeros",
- "Version": "6.43.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.3.364:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.3.364",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.3.364",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:telegram:telegram_desktop:0.8.46:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:telegram:telegram_desktop:0.8.46",
- "wfn": {
- "Part": "a",
- "Vendor": "telegram",
- "Product": "telegram_desktop",
- "Version": "0.8.46",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hiawatha-webserver:hiawatha:5.8.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hiawatha-webserver:hiawatha:5.8.0",
- "wfn": {
- "Part": "a",
- "Vendor": "hiawatha-webserver",
- "Product": "hiawatha",
- "Version": "5.8.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cpe17:autorun_killer:1.8.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cpe17:autorun_killer:1.8.6",
- "wfn": {
- "Part": "a",
- "Vendor": "cpe17",
- "Product": "autorun_killer",
- "Version": "1.8.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:tri-band_wireless-ac_17265:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:tri-band_wireless-ac_17265:-",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "tri-band_wireless-ac_17265",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:goodiware:goodreader:2.5:-:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:goodiware:goodreader:2.5:-:~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "goodiware",
- "Product": "goodreader",
- "Version": "2.5",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:brainstormforce:astra:1.7.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:brainstormforce:astra:1.7.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "brainstormforce",
- "Product": "astra",
- "Version": "1.7.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pyrocms:pyrocms:3.4.14:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pyrocms:pyrocms:3.4.14",
- "wfn": {
- "Part": "a",
- "Vendor": "pyrocms",
- "Product": "pyrocms",
- "Version": "3.4.14",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:iij:seil_b1_firmware:4.61:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:iij:seil_b1_firmware:4.61",
- "wfn": {
- "Part": "o",
- "Vendor": "iij",
- "Product": "seil_b1_firmware",
- "Version": "4.61",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:imagemagick:imagemagick:6.7.3-5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:imagemagick:imagemagick:6.7.3-5",
- "wfn": {
- "Part": "a",
- "Vendor": "imagemagick",
- "Product": "imagemagick",
- "Version": "6.7.3-5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:doctrine-project:object_relational_mapper:2.5.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:doctrine-project:object_relational_mapper:2.5.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "doctrine-project",
- "Product": "object_relational_mapper",
- "Version": "2.5.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:typo3:typo3:6.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:typo3:typo3:6.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "typo3",
- "Product": "typo3",
- "Version": "6.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:libgee:0.8.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:libgee:0.8.1",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "libgee",
- "Version": "0.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:horde:internet_mail_program:6.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:horde:internet_mail_program:6.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "horde",
- "Product": "internet_mail_program",
- "Version": "6.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:arubanetworks:aruba_instant:6.4.4.8-4.2.4.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:arubanetworks:aruba_instant:6.4.4.8-4.2.4.6",
- "wfn": {
- "Part": "a",
- "Vendor": "arubanetworks",
- "Product": "aruba_instant",
- "Version": "6.4.4.8-4.2.4.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:racket-lang:racket:6.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:racket-lang:racket:6.2",
- "wfn": {
- "Part": "a",
- "Vendor": "racket-lang",
- "Product": "racket",
- "Version": "6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nlnetlabs:name_server_daemon:4.1.16:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nlnetlabs:name_server_daemon:4.1.16:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "nlnetlabs",
- "Product": "name_server_daemon",
- "Version": "4.1.16",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:scilab:scilab:5.1.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:scilab:scilab:5.1.1",
- "wfn": {
- "Part": "a",
- "Vendor": "scilab",
- "Product": "scilab",
- "Version": "5.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:ibm:mcs-7815i-2.0:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:ibm:mcs-7815i-2.0:-",
- "wfn": {
- "Part": "h",
- "Vendor": "ibm",
- "Product": "mcs-7815i-2.0",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:plainware:locatoraid:3.2.4:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:plainware:locatoraid:3.2.4::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "plainware",
- "Product": "locatoraid",
- "Version": "3.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:httplib2_project:httplib2:0.10.1:*:*:*:*:python:*:*",
- "cpe-url": "cpe:/a:httplib2_project:httplib2:0.10.1::~~~python~~",
- "wfn": {
- "Part": "a",
- "Vendor": "httplib2_project",
- "Product": "httplib2",
- "Version": "0.10.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "python",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:virtuemart:virtuemart:3.0.0:*:*:*:*:joomla\\!:*:*",
- "cpe-url": "cpe:/a:virtuemart:virtuemart:3.0.0::~~~joomla%21~~",
- "wfn": {
- "Part": "a",
- "Vendor": "virtuemart",
- "Product": "virtuemart",
- "Version": "3.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "joomla!",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:microsoft:.net_core:5.0:preview2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:microsoft:.net_core:5.0:preview2",
- "wfn": {
- "Part": "a",
- "Vendor": "microsoft",
- "Product": ".net_core",
- "Version": "5.0",
- "Update": "preview2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:jira:6.0.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlassian:jira:6.0.5",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "jira",
- "Version": "6.0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxcontainers:lxc:1.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxcontainers:lxc:1.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxcontainers",
- "Product": "lxc",
- "Version": "1.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pear:html_ajax:0.3.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pear:html_ajax:0.3.4",
- "wfn": {
- "Part": "a",
- "Vendor": "pear",
- "Product": "html_ajax",
- "Version": "0.3.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:evo:evolution_cms:1.4.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:evo:evolution_cms:1.4.11",
- "wfn": {
- "Part": "a",
- "Vendor": "evo",
- "Product": "evolution_cms",
- "Version": "1.4.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:abb:cp676-web_firmware:1.76:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:abb:cp676-web_firmware:1.76",
- "wfn": {
- "Part": "o",
- "Vendor": "abb",
- "Product": "cp676-web_firmware",
- "Version": "1.76",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:fortinet:fortios:4.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:fortinet:fortios:4.0.4",
- "wfn": {
- "Part": "o",
- "Vendor": "fortinet",
- "Product": "fortios",
- "Version": "4.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openwhyd:openwhyd:1.26.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openwhyd:openwhyd:1.26.0",
- "wfn": {
- "Part": "a",
- "Vendor": "openwhyd",
- "Product": "openwhyd",
- "Version": "1.26.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:axis:mpeg-2_video_server:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:axis:mpeg-2_video_server:-",
- "wfn": {
- "Part": "h",
- "Vendor": "axis",
- "Product": "mpeg-2_video_server",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:d845bg_motherboard:p02-0015:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:d845bg_motherboard:p02-0015",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "d845bg_motherboard",
- "Version": "p02-0015",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redis:redis:2.8.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redis:redis:2.8.10",
- "wfn": {
- "Part": "a",
- "Vendor": "redis",
- "Product": "redis",
- "Version": "2.8.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:db2:9.7.0.3:*:*:*:express:*:*:*",
- "cpe-url": "cpe:/a:ibm:db2:9.7.0.3::~~express~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "db2",
- "Version": "9.7.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "express",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ninjaforms:ninja_forms:3.0.21:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ninjaforms:ninja_forms:3.0.21::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ninjaforms",
- "Product": "ninja_forms",
- "Version": "3.0.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim_project:vim:0.15.4:*:*:*:*:visual_studio_code:*:*",
- "cpe-url": "cpe:/a:vim_project:vim:0.15.4::~~~visual_studio_code~~",
- "wfn": {
- "Part": "a",
- "Vendor": "vim_project",
- "Product": "vim",
- "Version": "0.15.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "visual_studio_code",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jekyllrb:jekyll:1.4.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jekyllrb:jekyll:1.4.3",
- "wfn": {
- "Part": "a",
- "Vendor": "jekyllrb",
- "Product": "jekyll",
- "Version": "1.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:eclipse:keti:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:eclipse:keti:-",
- "wfn": {
- "Part": "a",
- "Vendor": "eclipse",
- "Product": "keti",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:softvelum:nimble_streamer:3.4.0-4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:softvelum:nimble_streamer:3.4.0-4",
- "wfn": {
- "Part": "a",
- "Vendor": "softvelum",
- "Product": "nimble_streamer",
- "Version": "3.4.0-4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:netgear:r7850:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:netgear:r7850:-",
- "wfn": {
- "Part": "h",
- "Vendor": "netgear",
- "Product": "r7850",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:proftpd:proftpd:1.2.2:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:proftpd:proftpd:1.2.2:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "proftpd",
- "Product": "proftpd",
- "Version": "1.2.2",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rocomotion:pplog:2.32:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rocomotion:pplog:2.32",
- "wfn": {
- "Part": "a",
- "Vendor": "rocomotion",
- "Product": "pplog",
- "Version": "2.32",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sysstat_project:sysstat:9.1.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sysstat_project:sysstat:9.1.5",
- "wfn": {
- "Part": "a",
- "Vendor": "sysstat_project",
- "Product": "sysstat",
- "Version": "9.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:beaker:0.8.0-11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:beaker:0.8.0-11",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "beaker",
- "Version": "0.8.0-11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:percona:percona_server:5.6.44-85.0-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:percona:percona_server:5.6.44-85.0-1",
- "wfn": {
- "Part": "a",
- "Vendor": "percona",
- "Product": "percona_server",
- "Version": "5.6.44-85.0-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:omniauth:omniauth:1.1.3:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:omniauth:omniauth:1.1.3::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "omniauth",
- "Product": "omniauth",
- "Version": "1.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:videojs:video.js:6.1.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:videojs:video.js:6.1.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "videojs",
- "Product": "video.js",
- "Version": "6.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:httpie:httpie:0.1.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:httpie:httpie:0.1.5",
- "wfn": {
- "Part": "a",
- "Vendor": "httpie",
- "Product": "httpie",
- "Version": "0.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fortinet:fortimanager:5.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fortinet:fortimanager:5.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "fortinet",
- "Product": "fortimanager",
- "Version": "5.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:check_mk_project:check_mk:1.4.0:p25:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:check_mk_project:check_mk:1.4.0:p25",
- "wfn": {
- "Part": "a",
- "Vendor": "check_mk_project",
- "Product": "check_mk",
- "Version": "1.4.0",
- "Update": "p25",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wp-livechat:live_chat_support:2.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wp-livechat:live_chat_support:2.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wp-livechat",
- "Product": "live_chat_support",
- "Version": "2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:signal:signal:2.25.0.10:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:signal:signal:2.25.0.10::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "signal",
- "Product": "signal",
- "Version": "2.25.0.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:telerik:ui_for_asp.net_core:2018.2.620:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:telerik:ui_for_asp.net_core:2018.2.620",
- "wfn": {
- "Part": "a",
- "Vendor": "telerik",
- "Product": "ui_for_asp.net_core",
- "Version": "2018.2.620",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kde:paste_applet:4.6.90:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kde:paste_applet:4.6.90",
- "wfn": {
- "Part": "a",
- "Vendor": "kde",
- "Product": "paste_applet",
- "Version": "4.6.90",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:5.0.382.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:5.0.382.3",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "5.0.382.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:fronius:primo_5.0-1_firmware:3.14.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:fronius:primo_5.0-1_firmware:3.14.1",
- "wfn": {
- "Part": "o",
- "Vendor": "fronius",
- "Product": "primo_5.0-1_firmware",
- "Version": "3.14.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:videolan:vlc_media_player:2.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:videolan:vlc_media_player:2.0.0",
- "wfn": {
- "Part": "a",
- "Vendor": "videolan",
- "Product": "vlc_media_player",
- "Version": "2.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:woocommerce:woocommerce:3.5.7:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:woocommerce:woocommerce:3.5.7::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "woocommerce",
- "Product": "woocommerce",
- "Version": "3.5.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:yajl-ruby_project:yajl-ruby:1.2.3:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:yajl-ruby_project:yajl-ruby:1.2.3::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "yajl-ruby_project",
- "Product": "yajl-ruby",
- "Version": "1.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gitlab:gitlab:8.2.4:*:*:*:community:*:*:*",
- "cpe-url": "cpe:/a:gitlab:gitlab:8.2.4::~~community~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gitlab",
- "Product": "gitlab",
- "Version": "8.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "community",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:b3log:symphony:3.4.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:b3log:symphony:3.4.7",
- "wfn": {
- "Part": "a",
- "Vendor": "b3log",
- "Product": "symphony",
- "Version": "3.4.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gajim:gajim:1.3.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gajim:gajim:1.3.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "gajim",
- "Product": "gajim",
- "Version": "1.3.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rope_project:rope:0.15.0:*:*:*:*:python:*:*",
- "cpe-url": "cpe:/a:rope_project:rope:0.15.0::~~~python~~",
- "wfn": {
- "Part": "a",
- "Vendor": "rope_project",
- "Product": "rope",
- "Version": "0.15.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "python",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:microsoft:sql_srv:7.0:sp3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:microsoft:sql_srv:7.0:sp3",
- "wfn": {
- "Part": "a",
- "Vendor": "microsoft",
- "Product": "sql_srv",
- "Version": "7.0",
- "Update": "sp3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openconext:openconext_engineblock:1.17.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openconext:openconext_engineblock:1.17.0",
- "wfn": {
- "Part": "a",
- "Vendor": "openconext",
- "Product": "openconext_engineblock",
- "Version": "1.17.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nmap:nmap:7.30:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nmap:nmap:7.30",
- "wfn": {
- "Part": "a",
- "Vendor": "nmap",
- "Product": "nmap",
- "Version": "7.30",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:openmeetings:3.3.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:openmeetings:3.3.1",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "openmeetings",
- "Version": "3.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:owasp_dependency-track:3.1.0:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:owasp_dependency-track:3.1.0::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "owasp_dependency-track",
- "Version": "3.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpsymposiumpro:wp_symposium:13.08.01:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpsymposiumpro:wp_symposium:13.08.01::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpsymposiumpro",
- "Product": "wp_symposium",
- "Version": "13.08.01",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:4.0.249.51:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:4.0.249.51",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "4.0.249.51",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:feehi:feehi_cms:2.1.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:feehi:feehi_cms:2.1.1",
- "wfn": {
- "Part": "a",
- "Vendor": "feehi",
- "Product": "feehi_cms",
- "Version": "2.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:altiris:network_discovery_language_pack:6.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:altiris:network_discovery_language_pack:6.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "altiris",
- "Product": "network_discovery_language_pack",
- "Version": "6.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:python:3.9.0:alpha6:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:python:3.9.0:alpha6",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "python",
- "Version": "3.9.0",
- "Update": "alpha6",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:app_engine_python_sdk:1.9.71:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:app_engine_python_sdk:1.9.71",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "app_engine_python_sdk",
- "Version": "1.9.71",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:web_security_appliance:7.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:web_security_appliance:7.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "web_security_appliance",
- "Version": "7.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:html-pdf_project:html-pdf:-:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:html-pdf_project:html-pdf:-::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "html-pdf_project",
- "Product": "html-pdf",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:htmlsanitizer_project:htmlsanitizer:3.3.125:beta:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:htmlsanitizer_project:htmlsanitizer:3.3.125:beta",
- "wfn": {
- "Part": "a",
- "Vendor": "htmlsanitizer_project",
- "Product": "htmlsanitizer",
- "Version": "3.3.125",
- "Update": "beta",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:neliosoftware:nelio_ab_testing:4.4.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:neliosoftware:nelio_ab_testing:4.4.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "neliosoftware",
- "Product": "nelio_ab_testing",
- "Version": "4.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:jbpm:7.12.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:jbpm:7.12.0",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "jbpm",
- "Version": "7.12.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:businessobjects_business_intelligence:4.1:support_package1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:businessobjects_business_intelligence:4.1:support_package1",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "businessobjects_business_intelligence",
- "Version": "4.1",
- "Update": "support_package1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:cordova:5.2.2:*:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:apache:cordova:5.2.2::~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "cordova",
- "Version": "5.2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:nx-os:12.0\\(1q\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:nx-os:12.0%281q%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "nx-os",
- "Version": "12.0(1q)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:solarwinds:serv-u:15.2.2:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:solarwinds:serv-u:15.2.2:-",
- "wfn": {
- "Part": "a",
- "Vendor": "solarwinds",
- "Product": "serv-u",
- "Version": "15.2.2",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpdeveloper:essential_addons_for_elementor:2.8.7:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpdeveloper:essential_addons_for_elementor:2.8.7::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpdeveloper",
- "Product": "essential_addons_for_elementor",
- "Version": "2.8.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:sourcetree:1.0.7:*:*:*:*:macos:*:*",
- "cpe-url": "cpe:/a:atlassian:sourcetree:1.0.7::~~~macos~~",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "sourcetree",
- "Version": "1.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "macos",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:infinispan:infinispan-server-runtime:11.0.0:alpha1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:infinispan:infinispan-server-runtime:11.0.0:alpha1",
- "wfn": {
- "Part": "a",
- "Vendor": "infinispan",
- "Product": "infinispan-server-runtime",
- "Version": "11.0.0",
- "Update": "alpha1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.3.485:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.3.485",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.3.485",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bytecodealliance:cranelift-codegen:0.17.0:alpha:*:*:*:rust:*:*",
- "cpe-url": "cpe:/a:bytecodealliance:cranelift-codegen:0.17.0:alpha:~~~rust~~",
- "wfn": {
- "Part": "a",
- "Vendor": "bytecodealliance",
- "Product": "cranelift-codegen",
- "Version": "0.17.0",
- "Update": "alpha",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "rust",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zeit:next.js:9.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zeit:next.js:9.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "zeit",
- "Product": "next.js",
- "Version": "9.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ansible-vault_project:ansible-vault:1.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ansible-vault_project:ansible-vault:1.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ansible-vault_project",
- "Product": "ansible-vault",
- "Version": "1.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:sg300-28p_firmware:1.4.8.06:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:sg300-28p_firmware:1.4.8.06",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "sg300-28p_firmware",
- "Version": "1.4.8.06",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:digium:asterisk:1.4.40:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:digium:asterisk:1.4.40:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "digium",
- "Product": "asterisk",
- "Version": "1.4.40",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:idrive:remotepc:7.6.26:*:*:*:*:macos:*:*",
- "cpe-url": "cpe:/a:idrive:remotepc:7.6.26::~~~macos~~",
- "wfn": {
- "Part": "a",
- "Vendor": "idrive",
- "Product": "remotepc",
- "Version": "7.6.26",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "macos",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oracle:ireceivables:12.2.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oracle:ireceivables:12.2.3",
- "wfn": {
- "Part": "a",
- "Vendor": "oracle",
- "Product": "ireceivables",
- "Version": "12.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloud_foundry:bits_service:2.25.0:dev7:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloud_foundry:bits_service:2.25.0:dev7",
- "wfn": {
- "Part": "a",
- "Vendor": "cloud_foundry",
- "Product": "bits_service",
- "Version": "2.25.0",
- "Update": "dev7",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zeromq:zeromq:0.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zeromq:zeromq:0.5",
- "wfn": {
- "Part": "a",
- "Vendor": "zeromq",
- "Product": "zeromq",
- "Version": "0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mobyproject:moby:0.1.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mobyproject:moby:0.1.6",
- "wfn": {
- "Part": "a",
- "Vendor": "mobyproject",
- "Product": "moby",
- "Version": "0.1.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:jira:3.7:*:enterprise:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlassian:jira:3.7::enterprise",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "jira",
- "Version": "3.7",
- "Update": "",
- "Edition": "enterprise",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:ac_9462_firmware:22.40:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:ac_9462_firmware:22.40",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "ac_9462_firmware",
- "Version": "22.40",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:lenovo:thinkpad_usb_3.0_ethernet_adapter:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:lenovo:thinkpad_usb_3.0_ethernet_adapter:-",
- "wfn": {
- "Part": "h",
- "Vendor": "lenovo",
- "Product": "thinkpad_usb_3.0_ethernet_adapter",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:ui:unifi_dream_machine_pro_firmware:1.8.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:ui:unifi_dream_machine_pro_firmware:1.8.4",
- "wfn": {
- "Part": "o",
- "Vendor": "ui",
- "Product": "unifi_dream_machine_pro_firmware",
- "Version": "1.8.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:php:php:3.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:php:php:3.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "php",
- "Product": "php",
- "Version": "3.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:handsontable:handsontable:0.32.0:beta2:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:handsontable:handsontable:0.32.0:beta2:~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "handsontable",
- "Product": "handsontable",
- "Version": "0.32.0",
- "Update": "beta2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:charlesproxy:charles:3.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:charlesproxy:charles:3.8",
- "wfn": {
- "Part": "a",
- "Vendor": "charlesproxy",
- "Product": "charles",
- "Version": "3.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:f5:big-ip_analytics:13.1.1.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:f5:big-ip_analytics:13.1.1.3",
- "wfn": {
- "Part": "a",
- "Vendor": "f5",
- "Product": "big-ip_analytics",
- "Version": "13.1.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:jenkins:1.437:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jenkins:jenkins:1.437",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "jenkins",
- "Version": "1.437",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:shout_project:shout:0.32.5:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:shout_project:shout:0.32.5::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "shout_project",
- "Product": "shout",
- "Version": "0.32.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openenergymonitor:emoncms:10.1.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openenergymonitor:emoncms:10.1.5",
- "wfn": {
- "Part": "a",
- "Vendor": "openenergymonitor",
- "Product": "emoncms",
- "Version": "10.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:advancedcustomfields:advanced_custom_fields:5.5.7:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:advancedcustomfields:advanced_custom_fields:5.5.7::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "advancedcustomfields",
- "Product": "advanced_custom_fields",
- "Version": "5.5.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cpanel:cpanel:11.38.0.19:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cpanel:cpanel:11.38.0.19",
- "wfn": {
- "Part": "a",
- "Vendor": "cpanel",
- "Product": "cpanel",
- "Version": "11.38.0.19",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ovirt:ovirt:4.2.4.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ovirt:ovirt:4.2.4.5",
- "wfn": {
- "Part": "a",
- "Vendor": "ovirt",
- "Product": "ovirt",
- "Version": "4.2.4.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ruamel.yaml_project:ruamel.yaml:0.15.13:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ruamel.yaml_project:ruamel.yaml:0.15.13",
- "wfn": {
- "Part": "a",
- "Vendor": "ruamel.yaml_project",
- "Product": "ruamel.yaml",
- "Version": "0.15.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:cisco:firepower_1020:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:cisco:firepower_1020:-",
- "wfn": {
- "Part": "h",
- "Vendor": "cisco",
- "Product": "firepower_1020",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:libsoup:2.34.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:libsoup:2.34.0",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "libsoup",
- "Version": "2.34.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:setuptools:36.2.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:setuptools:36.2.4",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "setuptools",
- "Version": "36.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sonarsource:sonarqube_docker_image:6.7.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sonarsource:sonarqube_docker_image:6.7.3",
- "wfn": {
- "Part": "a",
- "Vendor": "sonarsource",
- "Product": "sonarqube_docker_image",
- "Version": "6.7.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gatsbyjs:gatsby-source-wordpress:3.1.70:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:gatsbyjs:gatsby-source-wordpress:3.1.70::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gatsbyjs",
- "Product": "gatsby-source-wordpress",
- "Version": "3.1.70",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:jboss-ejb-client:4.0.0:cr6:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:jboss-ejb-client:4.0.0:cr6",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "jboss-ejb-client",
- "Version": "4.0.0",
- "Update": "cr6",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:octopus:tentacle:6.1.1016:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:octopus:tentacle:6.1.1016",
- "wfn": {
- "Part": "a",
- "Vendor": "octopus",
- "Product": "tentacle",
- "Version": "6.1.1016",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dpl:product_feed_on_woocommerce_for_google\\,_awin\\,_shareasale\\,_bing\\,_and_more:3.0.0.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:dpl:product_feed_on_woocommerce_for_google%2c_awin%2c_shareasale%2c_bing%2c_and_more:3.0.0.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "dpl",
- "Product": "product_feed_on_woocommerce_for_google,_awin,_shareasale,_bing,_and_more",
- "Version": "3.0.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:xeon_e5-1428l_v3_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:xeon_e5-1428l_v3_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "xeon_e5-1428l_v3_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:netgear:r7000p_firmware:v1.0.11.100_10.2.100:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:netgear:r7000p_firmware:v1.0.11.100_10.2.100",
- "wfn": {
- "Part": "o",
- "Vendor": "netgear",
- "Product": "r7000p_firmware",
- "Version": "v1.0.11.100_10.2.100",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:lynxtechnology:twonky_server:7.3.1-3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:lynxtechnology:twonky_server:7.3.1-3",
- "wfn": {
- "Part": "a",
- "Vendor": "lynxtechnology",
- "Product": "twonky_server",
- "Version": "7.3.1-3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:shareaholic:shareaholic:7.0.4.7:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:shareaholic:shareaholic:7.0.4.7::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "shareaholic",
- "Product": "shareaholic",
- "Version": "7.0.4.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:12.2\\(31\\)sga9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:12.2%2831%29sga9",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "12.2(31)sga9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:veronalabs:wp_statistics:8.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:veronalabs:wp_statistics:8.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "veronalabs",
- "Product": "wp_statistics",
- "Version": "8.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zom:zom:1.0.17:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:zom:zom:1.0.17::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "zom",
- "Product": "zom",
- "Version": "1.0.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:codepeople:appointment_booking_calendar:1.2.44:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:codepeople:appointment_booking_calendar:1.2.44::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "codepeople",
- "Product": "appointment_booking_calendar",
- "Version": "1.2.44",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxcontainers:lxd:2.0.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxcontainers:lxd:2.0.10",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxcontainers",
- "Product": "lxd",
- "Version": "2.0.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bochs_project:bochs:2.0:pre1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bochs_project:bochs:2.0:pre1",
- "wfn": {
- "Part": "a",
- "Vendor": "bochs_project",
- "Product": "bochs",
- "Version": "2.0",
- "Update": "pre1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:qualcomm:smb1394_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:qualcomm:smb1394_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "qualcomm",
- "Product": "smb1394_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.4a.015:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.4a.015",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.4a.015",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:superantispyware:superantispyware:4.26.1002:*:*:*:professional:*:*:*",
- "cpe-url": "cpe:/a:superantispyware:superantispyware:4.26.1002::~~professional~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "superantispyware",
- "Product": "superantispyware",
- "Version": "4.26.1002",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "professional",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:silverstripe:silverstripe:2.4.4:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:silverstripe:silverstripe:2.4.4:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "silverstripe",
- "Product": "silverstripe",
- "Version": "2.4.4",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:advantech:webaccess:7.0-2010.05.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:advantech:webaccess:7.0-2010.05.10",
- "wfn": {
- "Part": "a",
- "Vendor": "advantech",
- "Product": "webaccess",
- "Version": "7.0-2010.05.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tinyxml2_project:tinyxml2:5.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tinyxml2_project:tinyxml2:5.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "tinyxml2_project",
- "Product": "tinyxml2",
- "Version": "5.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:eclipse:jetty:4.2.23:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:eclipse:jetty:4.2.23:-",
- "wfn": {
- "Part": "a",
- "Vendor": "eclipse",
- "Product": "jetty",
- "Version": "4.2.23",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:property-expr_project:property-expr:1.0.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:property-expr_project:property-expr:1.0.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "property-expr_project",
- "Product": "property-expr",
- "Version": "1.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:netgear:srs60_firmware:2.5.2.104:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:netgear:srs60_firmware:2.5.2.104",
- "wfn": {
- "Part": "o",
- "Vendor": "netgear",
- "Product": "srs60_firmware",
- "Version": "2.5.2.104",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spinnaker:orca:6.77.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:spinnaker:orca:6.77.5",
- "wfn": {
- "Part": "a",
- "Vendor": "spinnaker",
- "Product": "orca",
- "Version": "6.77.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:protobufjs_project:protobufjs:1.0.0:beta5:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:protobufjs_project:protobufjs:1.0.0:beta5:~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "protobufjs_project",
- "Product": "protobufjs",
- "Version": "1.0.0",
- "Update": "beta5",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:imagemagick:imagemagick:6.4.5-9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:imagemagick:imagemagick:6.4.5-9",
- "wfn": {
- "Part": "a",
- "Vendor": "imagemagick",
- "Product": "imagemagick",
- "Version": "6.4.5-9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:evolution-ews:3.8.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:evolution-ews:3.8.1",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "evolution-ews",
- "Version": "3.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openstack:horizon:18.3.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openstack:horizon:18.3.3",
- "wfn": {
- "Part": "a",
- "Vendor": "openstack",
- "Product": "horizon",
- "Version": "18.3.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:advanced_access_manager_project:advanced_access_manager:6.3.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:advanced_access_manager_project:advanced_access_manager:6.3.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "advanced_access_manager_project",
- "Product": "advanced_access_manager",
- "Version": "6.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rails_admin_project:rails_admin:0.6.8:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:rails_admin_project:rails_admin:0.6.8::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "rails_admin_project",
- "Product": "rails_admin",
- "Version": "0.6.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:moxa:nport_ia5150a_firmware:1.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:moxa:nport_ia5150a_firmware:1.4",
- "wfn": {
- "Part": "o",
- "Vendor": "moxa",
- "Product": "nport_ia5150a_firmware",
- "Version": "1.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jkeenan:file-path_module:2.09:*:*:*:*:perl:*:*",
- "cpe-url": "cpe:/a:jkeenan:file-path_module:2.09::~~~perl~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jkeenan",
- "Product": "file-path_module",
- "Version": "2.09",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "perl",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:corusent:global_tv:4.3.1:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:corusent:global_tv:4.3.1::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "corusent",
- "Product": "global_tv",
- "Version": "4.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ldapauth_project:ldapauth:2.3.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:ldapauth_project:ldapauth:2.3.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ldapauth_project",
- "Product": "ldapauth",
- "Version": "2.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openvswitch:openvswitch:2.9.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openvswitch:openvswitch:2.9.9",
- "wfn": {
- "Part": "a",
- "Vendor": "openvswitch",
- "Product": "openvswitch",
- "Version": "2.9.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:packagekit_project:packagekit:0.8.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:packagekit_project:packagekit:0.8.4",
- "wfn": {
- "Part": "a",
- "Vendor": "packagekit_project",
- "Product": "packagekit",
- "Version": "0.8.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:piwik:piwik:1.11.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:piwik:piwik:1.11.1",
- "wfn": {
- "Part": "a",
- "Vendor": "piwik",
- "Product": "piwik",
- "Version": "1.11.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.1609:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.1609",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.1609",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:npmjs:npm:1.2.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:npmjs:npm:1.2.11",
- "wfn": {
- "Part": "a",
- "Vendor": "npmjs",
- "Product": "npm",
- "Version": "1.2.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:maximo_for_aviation:7.6.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:maximo_for_aviation:7.6.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "maximo_for_aviation",
- "Version": "7.6.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:infinispan:infinispan:12.0.0:dev07:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:infinispan:infinispan:12.0.0:dev07",
- "wfn": {
- "Part": "a",
- "Vendor": "infinispan",
- "Product": "infinispan",
- "Version": "12.0.0",
- "Update": "dev07",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:exponentcms:exponent_cms:2.3.5:patch2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:exponentcms:exponent_cms:2.3.5:patch2",
- "wfn": {
- "Part": "a",
- "Vendor": "exponentcms",
- "Product": "exponent_cms",
- "Version": "2.3.5",
- "Update": "patch2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:puppet:facter:3.1.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:puppet:facter:3.1.7",
- "wfn": {
- "Part": "a",
- "Vendor": "puppet",
- "Product": "facter",
- "Version": "3.1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:boot2docker:boot2docker:17.11.0:rc2:*:*:community:*:*:*",
- "cpe-url": "cpe:/o:boot2docker:boot2docker:17.11.0:rc2:~~community~~~",
- "wfn": {
- "Part": "o",
- "Vendor": "boot2docker",
- "Product": "boot2docker",
- "Version": "17.11.0",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "community",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:flask-appbuilder_project:flask-appbuilder:1.9.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:flask-appbuilder_project:flask-appbuilder:1.9.4",
- "wfn": {
- "Part": "a",
- "Vendor": "flask-appbuilder_project",
- "Product": "flask-appbuilder",
- "Version": "1.9.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:samsung:tizenrt:3.0:gbb:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:samsung:tizenrt:3.0:gbb",
- "wfn": {
- "Part": "o",
- "Vendor": "samsung",
- "Product": "tizenrt",
- "Version": "3.0",
- "Update": "gbb",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bit_project:bit:0.6.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bit_project:bit:0.6.2",
- "wfn": {
- "Part": "a",
- "Vendor": "bit_project",
- "Product": "bit",
- "Version": "0.6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.3.300:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.3.300",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.3.300",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:isc:dhcp:4.1-esv:r8_rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:isc:dhcp:4.1-esv:r8_rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "isc",
- "Product": "dhcp",
- "Version": "4.1-esv",
- "Update": "r8_rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:bosh_cli:0.0.95:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:bosh_cli:0.0.95",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "bosh_cli",
- "Version": "0.0.95",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fortinet:fortimail:5.1.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fortinet:fortimail:5.1.1",
- "wfn": {
- "Part": "a",
- "Vendor": "fortinet",
- "Product": "fortimail",
- "Version": "5.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:bitbucket:4.14.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlassian:bitbucket:4.14.9",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "bitbucket",
- "Version": "4.14.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libnl_project:libnl:3.2.21:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libnl_project:libnl:3.2.21",
- "wfn": {
- "Part": "a",
- "Vendor": "libnl_project",
- "Product": "libnl",
- "Version": "3.2.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:livezilla:livezilla:7.0.2.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:livezilla:livezilla:7.0.2.9",
- "wfn": {
- "Part": "a",
- "Vendor": "livezilla",
- "Product": "livezilla",
- "Version": "7.0.2.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gwolle_guestbook_project:gwolle_guestbook:2.5.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:gwolle_guestbook_project:gwolle_guestbook:2.5.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gwolle_guestbook_project",
- "Product": "gwolle_guestbook",
- "Version": "2.5.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:microsoft:visual_studio_2019:8.1:*:*:*:*:macos:*:*",
- "cpe-url": "cpe:/a:microsoft:visual_studio_2019:8.1::~~~macos~~",
- "wfn": {
- "Part": "a",
- "Vendor": "microsoft",
- "Product": "visual_studio_2019",
- "Version": "8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "macos",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:linux:acrn:2018w30.2-140000p:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:linux:acrn:2018w30.2-140000p",
- "wfn": {
- "Part": "o",
- "Vendor": "linux",
- "Product": "acrn",
- "Version": "2018w30.2-140000p",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:herry:sfpagent:0.4.9:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:herry:sfpagent:0.4.9::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "herry",
- "Product": "sfpagent",
- "Version": "0.4.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wedevs:happy_addons_for_elementor:2.21.0:*:*:*:-:wordpress:*:*",
- "cpe-url": "cpe:/a:wedevs:happy_addons_for_elementor:2.21.0::~~-~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wedevs",
- "Product": "happy_addons_for_elementor",
- "Version": "2.21.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:iij:seil_b1_firmware:3.26:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:iij:seil_b1_firmware:3.26",
- "wfn": {
- "Part": "o",
- "Vendor": "iij",
- "Product": "seil_b1_firmware",
- "Version": "3.26",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mechanize_project:mechanize:0.8.3:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:mechanize_project:mechanize:0.8.3::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "mechanize_project",
- "Product": "mechanize",
- "Version": "0.8.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:digium:certified_asterisk:1.2.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:digium:certified_asterisk:1.2.7",
- "wfn": {
- "Part": "a",
- "Vendor": "digium",
- "Product": "certified_asterisk",
- "Version": "1.2.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:dell:vostro_5401:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:dell:vostro_5401:-",
- "wfn": {
- "Part": "h",
- "Vendor": "dell",
- "Product": "vostro_5401",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:canonical:microk8s:1.15.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:canonical:microk8s:1.15.3",
- "wfn": {
- "Part": "a",
- "Vendor": "canonical",
- "Product": "microk8s",
- "Version": "1.15.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:w3m_project:w3m:0.5.3-34.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:w3m_project:w3m:0.5.3-34.1",
- "wfn": {
- "Part": "a",
- "Vendor": "w3m_project",
- "Product": "w3m",
- "Version": "0.5.3-34.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wekan_project:wekan:2.59:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wekan_project:wekan:2.59",
- "wfn": {
- "Part": "a",
- "Vendor": "wekan_project",
- "Product": "wekan",
- "Version": "2.59",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pippinsplugins:featured_comments:1.2.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:pippinsplugins:featured_comments:1.2.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "pippinsplugins",
- "Product": "featured_comments",
- "Version": "1.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:signal:messenger:3.7.0:*:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:signal:messenger:3.7.0::~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "signal",
- "Product": "messenger",
- "Version": "3.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:youtube_embed_project:youtube_embed:5.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:youtube_embed_project:youtube_embed:5.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "youtube_embed_project",
- "Product": "youtube_embed",
- "Version": "5.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:camunda:modeler:4.6.0:rc0:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:camunda:modeler:4.6.0:rc0",
- "wfn": {
- "Part": "a",
- "Vendor": "camunda",
- "Product": "modeler",
- "Version": "4.6.0",
- "Update": "rc0",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:beanshell:beanshell:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:beanshell:beanshell:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "beanshell",
- "Product": "beanshell",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:infolific:ultimate_category_excluder:0.2:beta:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:infolific:ultimate_category_excluder:0.2:beta:~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "infolific",
- "Product": "ultimate_category_excluder",
- "Version": "0.2",
- "Update": "beta",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:isc:bind:9.7.1:rc1:*:*:-:*:*:*",
- "cpe-url": "cpe:/a:isc:bind:9.7.1:rc1:~~-~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "isc",
- "Product": "bind",
- "Version": "9.7.1",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:shapeshift:keepkey_firmware:5.2.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:shapeshift:keepkey_firmware:5.2.2",
- "wfn": {
- "Part": "o",
- "Vendor": "shapeshift",
- "Product": "keepkey_firmware",
- "Version": "5.2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:puppet:puppet:3.7.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:puppet:puppet:3.7.2",
- "wfn": {
- "Part": "a",
- "Vendor": "puppet",
- "Product": "puppet",
- "Version": "3.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sangoma:freepbx:13.0.119.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sangoma:freepbx:13.0.119.2",
- "wfn": {
- "Part": "a",
- "Vendor": "sangoma",
- "Product": "freepbx",
- "Version": "13.0.119.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phpunit_project:phpunit:3.2.20:*:*:*:*:-:*:*",
- "cpe-url": "cpe:/a:phpunit_project:phpunit:3.2.20::~~~-~~",
- "wfn": {
- "Part": "a",
- "Vendor": "phpunit_project",
- "Product": "phpunit",
- "Version": "3.2.20",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "-",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:http.rb_project:http.rb:0.8.9:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:http.rb_project:http.rb:0.8.9::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "http.rb_project",
- "Product": "http.rb",
- "Version": "0.8.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:verbb:image_resizer:0.0.2:*:*:*:*:craft_cms:*:*",
- "cpe-url": "cpe:/a:verbb:image_resizer:0.0.2::~~~craft_cms~~",
- "wfn": {
- "Part": "a",
- "Vendor": "verbb",
- "Product": "image_resizer",
- "Version": "0.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "craft_cms",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:minecraft:minecraft:1.17:*:*:*:java:*:*:*",
- "cpe-url": "cpe:/a:minecraft:minecraft:1.17::~~java~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "minecraft",
- "Product": "minecraft",
- "Version": "1.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "java",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ip_conference_phone_7832_firmware:12.5\\(1\\)sr2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ip_conference_phone_7832_firmware:12.5%281%29sr2",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ip_conference_phone_7832_firmware",
- "Version": "12.5(1)sr2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpmobilepack:wordpress_mobile_pack:2.1.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpmobilepack:wordpress_mobile_pack:2.1.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpmobilepack",
- "Product": "wordpress_mobile_pack",
- "Version": "2.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:abus:secvest_wireless_remote_control_fube50015_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:abus:secvest_wireless_remote_control_fube50015_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "abus",
- "Product": "secvest_wireless_remote_control_fube50015_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnu:mailman:2.1.14-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnu:mailman:2.1.14-1",
- "wfn": {
- "Part": "a",
- "Vendor": "gnu",
- "Product": "mailman",
- "Version": "2.1.14-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inedo:otter:1.5.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:inedo:otter:1.5.1",
- "wfn": {
- "Part": "a",
- "Vendor": "inedo",
- "Product": "otter",
- "Version": "1.5.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:10web:photo_gallery:1.2.82:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:10web:photo_gallery:1.2.82::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "10web",
- "Product": "photo_gallery",
- "Version": "1.2.82",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nodejs:node.js:9.5.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nodejs:node.js:9.5.0",
- "wfn": {
- "Part": "a",
- "Vendor": "nodejs",
- "Product": "node.js",
- "Version": "9.5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:the-guild:graphql-tools:0.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:the-guild:graphql-tools:0.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "the-guild",
- "Product": "graphql-tools",
- "Version": "0.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jetbrains:kotlin:1.4.0:dev250:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jetbrains:kotlin:1.4.0:dev250",
- "wfn": {
- "Part": "a",
- "Vendor": "jetbrains",
- "Product": "kotlin",
- "Version": "1.4.0",
- "Update": "dev250",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:restafary_project:restafary:1.6.4:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:restafary_project:restafary:1.6.4::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "restafary_project",
- "Product": "restafary",
- "Version": "1.6.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpshopstyling:wp-ecommerce-shop-styling:1.4:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpshopstyling:wp-ecommerce-shop-styling:1.4::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpshopstyling",
- "Product": "wp-ecommerce-shop-styling",
- "Version": "1.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:buttle_project:buttle:0.0.4:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:buttle_project:buttle:0.0.4::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "buttle_project",
- "Product": "buttle",
- "Version": "0.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ueberhamm-design:youtube_video_inserter:1.2.0.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ueberhamm-design:youtube_video_inserter:1.2.0.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ueberhamm-design",
- "Product": "youtube_video_inserter",
- "Version": "1.2.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:asr_5000_software:18.1_base:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:asr_5000_software:18.1_base",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "asr_5000_software",
- "Version": "18.1_base",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:quagga:quagga:0.99.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:quagga:quagga:0.99.1",
- "wfn": {
- "Part": "a",
- "Vendor": "quagga",
- "Product": "quagga",
- "Version": "0.99.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cognitoys:stemosaur_firmware:0.0.794:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cognitoys:stemosaur_firmware:0.0.794",
- "wfn": {
- "Part": "o",
- "Vendor": "cognitoys",
- "Product": "stemosaur_firmware",
- "Version": "0.0.794",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pagerduty:rundeck:3.4.3:rc2:*:*:community:*:*:*",
- "cpe-url": "cpe:/a:pagerduty:rundeck:3.4.3:rc2:~~community~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "pagerduty",
- "Product": "rundeck",
- "Version": "3.4.3",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "community",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudfoundry:cf-deployment:7.10.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudfoundry:cf-deployment:7.10.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudfoundry",
- "Product": "cf-deployment",
- "Version": "7.10.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:litespeedtech:litespeed_cache:2.9.7.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:litespeedtech:litespeed_cache:2.9.7.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "litespeedtech",
- "Product": "litespeed_cache",
- "Version": "2.9.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netflix:priam:3.11.33:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netflix:priam:3.11.33",
- "wfn": {
- "Part": "a",
- "Vendor": "netflix",
- "Product": "priam",
- "Version": "3.11.33",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.0086:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.0086",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.0086",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bolt:bolt_cms:3.3.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bolt:bolt_cms:3.3.4",
- "wfn": {
- "Part": "a",
- "Vendor": "bolt",
- "Product": "bolt_cms",
- "Version": "3.3.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:synacor:zimbra_collaboration_suite:8.8.8:patch10:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:synacor:zimbra_collaboration_suite:8.8.8:patch10",
- "wfn": {
- "Part": "a",
- "Vendor": "synacor",
- "Product": "zimbra_collaboration_suite",
- "Version": "8.8.8",
- "Update": "patch10",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:credhub-release:2.5.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:credhub-release:2.5.2",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "credhub-release",
- "Version": "2.5.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gluster:glusterfs:3.5.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gluster:glusterfs:3.5.6",
- "wfn": {
- "Part": "a",
- "Vendor": "gluster",
- "Product": "glusterfs",
- "Version": "3.5.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:glib:2.27.92:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:glib:2.27.92",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "glib",
- "Version": "2.27.92",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rom_walton:boinc:7.0.67:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rom_walton:boinc:7.0.67",
- "wfn": {
- "Part": "a",
- "Vendor": "rom_walton",
- "Product": "boinc",
- "Version": "7.0.67",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:geode:1.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:geode:1.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "geode",
- "Version": "1.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:online_bus_booking_system_project:online_bus_booking_system:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:online_bus_booking_system_project:online_bus_booking_system:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "online_bus_booking_system_project",
- "Product": "online_bus_booking_system",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:jspwiki:2.9.0:incubating_rc4:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:jspwiki:2.9.0:incubating_rc4",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "jspwiki",
- "Version": "2.9.0",
- "Update": "incubating_rc4",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:z.cash:zcash:1.0.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:z.cash:zcash:1.0.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "z.cash",
- "Product": "zcash",
- "Version": "1.0.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:cloud_foundry:221:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:cloud_foundry:221",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "cloud_foundry",
- "Version": "221",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ays-pro:quiz_maker:6.2.1.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ays-pro:quiz_maker:6.2.1.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ays-pro",
- "Product": "quiz_maker",
- "Version": "6.2.1.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:torproject:tor_browser:7.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:torproject:tor_browser:7.5",
- "wfn": {
- "Part": "a",
- "Vendor": "torproject",
- "Product": "tor_browser",
- "Version": "7.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:revive-adserver:revive_adserver:3.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:revive-adserver:revive_adserver:3.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "revive-adserver",
- "Product": "revive_adserver",
- "Version": "3.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:opennms:meridian:2019.1.14-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:opennms:meridian:2019.1.14-1",
- "wfn": {
- "Part": "a",
- "Vendor": "opennms",
- "Product": "meridian",
- "Version": "2019.1.14-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bitcoincore:bitcoin_core:0.7.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bitcoincore:bitcoin_core:0.7.2",
- "wfn": {
- "Part": "a",
- "Vendor": "bitcoincore",
- "Product": "bitcoin_core",
- "Version": "0.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:aws_elastic_beanstalk_publisher:1.4.1:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:aws_elastic_beanstalk_publisher:1.4.1::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "aws_elastic_beanstalk_publisher",
- "Version": "1.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpml:wpml:2.6.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpml:wpml:2.6.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpml",
- "Product": "wpml",
- "Version": "2.6.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:saasproject:booking_package:1.2.72:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:saasproject:booking_package:1.2.72::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "saasproject",
- "Product": "booking_package",
- "Version": "1.2.72",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rsvpmaker_project:rsvpmaker:0.7.4:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:rsvpmaker_project:rsvpmaker:0.7.4::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "rsvpmaker_project",
- "Product": "rsvpmaker",
- "Version": "0.7.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudfoundry:credhub:1.3.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudfoundry:credhub:1.3.7",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudfoundry",
- "Product": "credhub",
- "Version": "1.3.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:horde:horde_prefs:2.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:horde:horde_prefs:2.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "horde",
- "Product": "horde_prefs",
- "Version": "2.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:linux:linux_kernel:2.6.5:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:linux:linux_kernel:2.6.5:rc3",
- "wfn": {
- "Part": "o",
- "Vendor": "linux",
- "Product": "linux_kernel",
- "Version": "2.6.5",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:restsharp:restsharp:106.6.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:restsharp:restsharp:106.6.5",
- "wfn": {
- "Part": "a",
- "Vendor": "restsharp",
- "Product": "restsharp",
- "Version": "106.6.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:lenovo:thinkagile_7y12:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:lenovo:thinkagile_7y12:-",
- "wfn": {
- "Part": "h",
- "Vendor": "lenovo",
- "Product": "thinkagile_7y12",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hashicorp:vault:0.8.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hashicorp:vault:0.8.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "hashicorp",
- "Product": "vault",
- "Version": "0.8.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wppopupmaker:popup_maker:1.5.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wppopupmaker:popup_maker:1.5.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wppopupmaker",
- "Product": "popup_maker",
- "Version": "1.5.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:netgear:r6020_firmware:1.0.0.48:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:netgear:r6020_firmware:1.0.0.48",
- "wfn": {
- "Part": "o",
- "Vendor": "netgear",
- "Product": "r6020_firmware",
- "Version": "1.0.0.48",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:verdaccio:verdaccio:0.1.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:verdaccio:verdaccio:0.1.1",
- "wfn": {
- "Part": "a",
- "Vendor": "verdaccio",
- "Product": "verdaccio",
- "Version": "0.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:nvidia:quadro_m3000m:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:nvidia:quadro_m3000m:-",
- "wfn": {
- "Part": "h",
- "Vendor": "nvidia",
- "Product": "quadro_m3000m",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:s2600cwt_firmware:01.01.0029:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:s2600cwt_firmware:01.01.0029",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "s2600cwt_firmware",
- "Version": "01.01.0029",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxfoundation:jaeger:1.7.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxfoundation:jaeger:1.7.0",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxfoundation",
- "Product": "jaeger",
- "Version": "1.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:brainstormforce:starter_templates:1.2.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:brainstormforce:starter_templates:1.2.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "brainstormforce",
- "Product": "starter_templates",
- "Version": "1.2.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oisf:suricata:2.0.1:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oisf:suricata:2.0.1:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "oisf",
- "Product": "suricata",
- "Version": "2.0.1",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inedo:buildmaster:5.0.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:inedo:buildmaster:5.0.10",
- "wfn": {
- "Part": "a",
- "Vendor": "inedo",
- "Product": "buildmaster",
- "Version": "5.0.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:typelevel:http4s:0.16.0:milestone2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:typelevel:http4s:0.16.0:milestone2",
- "wfn": {
- "Part": "a",
- "Vendor": "typelevel",
- "Product": "http4s",
- "Version": "0.16.0",
- "Update": "milestone2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vovsoft:vov_sticky_notes:6.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vovsoft:vov_sticky_notes:6.1",
- "wfn": {
- "Part": "a",
- "Vendor": "vovsoft",
- "Product": "vov_sticky_notes",
- "Version": "6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bitnami:containers:7.6.0-debian-10-r38:*:*:*:*:laravel:*:*",
- "cpe-url": "cpe:/a:bitnami:containers:7.6.0-debian-10-r38::~~~laravel~~",
- "wfn": {
- "Part": "a",
- "Vendor": "bitnami",
- "Product": "containers",
- "Version": "7.6.0-debian-10-r38",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "laravel",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:glib:2.6.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:glib:2.6.4",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "glib",
- "Version": "2.6.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:schedmd:slurm:18.08.0.0:pre1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:schedmd:slurm:18.08.0.0:pre1",
- "wfn": {
- "Part": "a",
- "Vendor": "schedmd",
- "Product": "slurm",
- "Version": "18.08.0.0",
- "Update": "pre1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:29.0.1547.31:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:29.0.1547.31",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "29.0.1547.31",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.1502:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.1502",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.1502",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:weekly_schedule_project:weekly_schedule:2.2.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:weekly_schedule_project:weekly_schedule:2.2.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "weekly_schedule_project",
- "Product": "weekly_schedule",
- "Version": "2.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:websphere_commerce:8.0.4.10:*:*:*:professional:*:*:*",
- "cpe-url": "cpe:/a:ibm:websphere_commerce:8.0.4.10::~~professional~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "websphere_commerce",
- "Version": "8.0.4.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "professional",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:chef:chef:15.4.61:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:chef:chef:15.4.61",
- "wfn": {
- "Part": "a",
- "Vendor": "chef",
- "Product": "chef",
- "Version": "15.4.61",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:bodhi:2.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:bodhi:2.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "bodhi",
- "Version": "2.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cartpauj:mingle-forum:1.0.18:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cartpauj:mingle-forum:1.0.18",
- "wfn": {
- "Part": "a",
- "Vendor": "cartpauj",
- "Product": "mingle-forum",
- "Version": "1.0.18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wclovers:frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible:2.0.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wclovers:frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible:2.0.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wclovers",
- "Product": "frontend_manager_for_woocommerce_along_with_bookings_subscription_listings_compatible",
- "Version": "2.0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tryton:trytond:3.6.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tryton:trytond:3.6.11",
- "wfn": {
- "Part": "a",
- "Vendor": "tryton",
- "Product": "trytond",
- "Version": "3.6.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cmsmadesimple:form_builder:0.6b1:*:*:*:*:cms_made_simple:*:*",
- "cpe-url": "cpe:/a:cmsmadesimple:form_builder:0.6b1::~~~cms_made_simple~~",
- "wfn": {
- "Part": "a",
- "Vendor": "cmsmadesimple",
- "Product": "form_builder",
- "Version": "0.6b1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "cms_made_simple",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:15.2\\(4\\)jb6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:15.2%284%29jb6",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "15.2(4)jb6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ldap_\\/_sso_authentication_project:ldap_\\/_sso_authentication:3.2.1:*:*:*:*:typo3:*:*",
- "cpe-url": "cpe:/a:ldap_%2f_sso_authentication_project:ldap_%2f_sso_authentication:3.2.1::~~~typo3~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ldap_/_sso_authentication_project",
- "Product": "ldap_/_sso_authentication",
- "Version": "3.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "typo3",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adaltas:printf:0.2.3:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:adaltas:printf:0.2.3::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "adaltas",
- "Product": "printf",
- "Version": "0.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:raitan:commandcenter_secure_gateway:5.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:raitan:commandcenter_secure_gateway:5.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "raitan",
- "Product": "commandcenter_secure_gateway",
- "Version": "5.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adobe:acrobat:9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:adobe:acrobat:9",
- "wfn": {
- "Part": "a",
- "Vendor": "adobe",
- "Product": "acrobat",
- "Version": "9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:klibc_project:klibc:0.172:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:klibc_project:klibc:0.172",
- "wfn": {
- "Part": "a",
- "Vendor": "klibc_project",
- "Product": "klibc",
- "Version": "0.172",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:luke_herrington:stickynote:7.x-1.x:dev:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:luke_herrington:stickynote:7.x-1.x:dev",
- "wfn": {
- "Part": "a",
- "Vendor": "luke_herrington",
- "Product": "stickynote",
- "Version": "7.x-1.x",
- "Update": "dev",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oppia:oppia:2.6.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oppia:oppia:2.6.7",
- "wfn": {
- "Part": "a",
- "Vendor": "oppia",
- "Product": "oppia",
- "Version": "2.6.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:abb:800xa_system:6.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:abb:800xa_system:6.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "abb",
- "Product": "800xa_system",
- "Version": "6.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:12.2\\(2\\)xb9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:12.2%282%29xb9",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "12.2(2)xb9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:perl:dbi:0.92:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:perl:dbi:0.92",
- "wfn": {
- "Part": "a",
- "Vendor": "perl",
- "Product": "dbi",
- "Version": "0.92",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:cordova:1.0.0:rc1:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:apache:cordova:1.0.0:rc1:~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "cordova",
- "Version": "1.0.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:contiki-os:contiki:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:contiki-os:contiki:-",
- "wfn": {
- "Part": "o",
- "Vendor": "contiki-os",
- "Product": "contiki",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:owncloud:owncloud_desktop_client:2.2.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:owncloud:owncloud_desktop_client:2.2.4",
- "wfn": {
- "Part": "a",
- "Vendor": "owncloud",
- "Product": "owncloud_desktop_client",
- "Version": "2.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:microsoft:windows_2000:-:sp2:*:*:server:*:*:*",
- "cpe-url": "cpe:/o:microsoft:windows_2000:-:sp2:~~server~~~",
- "wfn": {
- "Part": "o",
- "Vendor": "microsoft",
- "Product": "windows_2000",
- "Version": "-",
- "Update": "sp2",
- "Edition": "",
- "Language": "",
- "SwEdition": "server",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:simple-membership-plugin:simple_membership:1.8.4:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:simple-membership-plugin:simple_membership:1.8.4::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "simple-membership-plugin",
- "Product": "simple_membership",
- "Version": "1.8.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:f8b04a:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:f8b04a:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "f8b04a",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netsweeper:netsweeper:4.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netsweeper:netsweeper:4.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "netsweeper",
- "Product": "netsweeper",
- "Version": "4.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.3.529:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.3.529",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.3.529",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sqlalchemy:sqlalchemy:0.9.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sqlalchemy:sqlalchemy:0.9.10",
- "wfn": {
- "Part": "a",
- "Vendor": "sqlalchemy",
- "Product": "sqlalchemy",
- "Version": "0.9.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ctfd:ctfd:2.2.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ctfd:ctfd:2.2.2",
- "wfn": {
- "Part": "a",
- "Vendor": "ctfd",
- "Product": "ctfd",
- "Version": "2.2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.4.447:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.4.447",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.4.447",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:iodata:hdl2-a_firmware:1.07:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:iodata:hdl2-a_firmware:1.07",
- "wfn": {
- "Part": "o",
- "Vendor": "iodata",
- "Product": "hdl2-a_firmware",
- "Version": "1.07",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:xeon_e5-1630_v3:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:xeon_e5-1630_v3:-",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "xeon_e5-1630_v3",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:cloud_foundry_uaa_bosh:24.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:cloud_foundry_uaa_bosh:24.10",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "cloud_foundry_uaa_bosh",
- "Version": "24.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netflix:hollow:2.4.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netflix:hollow:2.4.2",
- "wfn": {
- "Part": "a",
- "Vendor": "netflix",
- "Product": "hollow",
- "Version": "2.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:webmin:usermin:1.770:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:webmin:usermin:1.770",
- "wfn": {
- "Part": "a",
- "Vendor": "webmin",
- "Product": "usermin",
- "Version": "1.770",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:recon-ng_project:recon-ng:3.4.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:recon-ng_project:recon-ng:3.4.1",
- "wfn": {
- "Part": "a",
- "Vendor": "recon-ng_project",
- "Product": "recon-ng",
- "Version": "3.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spinnaker:orca:0.439:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:spinnaker:orca:0.439",
- "wfn": {
- "Part": "a",
- "Vendor": "spinnaker",
- "Product": "orca",
- "Version": "0.439",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:r-consortium:rmysql:0.10.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:r-consortium:rmysql:0.10.9",
- "wfn": {
- "Part": "a",
- "Vendor": "r-consortium",
- "Product": "rmysql",
- "Version": "0.10.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wekan_project:wekan:4.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wekan_project:wekan:4.12",
- "wfn": {
- "Part": "a",
- "Vendor": "wekan_project",
- "Product": "wekan",
- "Version": "4.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phpmyadmin:phpmyadmin:1.2.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:phpmyadmin:phpmyadmin:1.2.4",
- "wfn": {
- "Part": "a",
- "Vendor": "phpmyadmin",
- "Product": "phpmyadmin",
- "Version": "1.2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zmanda:amanda:2.5.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zmanda:amanda:2.5.1",
- "wfn": {
- "Part": "a",
- "Vendor": "zmanda",
- "Product": "amanda",
- "Version": "2.5.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:ips_sensor_software:5.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:ips_sensor_software:5.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "ips_sensor_software",
- "Version": "5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:koha:koha:16.05.00:beta:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:koha:koha:16.05.00:beta",
- "wfn": {
- "Part": "a",
- "Vendor": "koha",
- "Product": "koha",
- "Version": "16.05.00",
- "Update": "beta",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pizzashack:rssh:2.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pizzashack:rssh:2.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "pizzashack",
- "Product": "rssh",
- "Version": "2.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:elastic:kibana_x-pack:5.4.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:elastic:kibana_x-pack:5.4.3",
- "wfn": {
- "Part": "a",
- "Vendor": "elastic",
- "Product": "kibana_x-pack",
- "Version": "5.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dropbox:dropbox:72.2:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:dropbox:dropbox:72.2::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "dropbox",
- "Product": "dropbox",
- "Version": "72.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hygeia_project:hygeia:1.0.2:beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hygeia_project:hygeia:1.0.2:beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "hygeia_project",
- "Product": "hygeia",
- "Version": "1.0.2",
- "Update": "beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:12.3\\(8\\)jea:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:12.3%288%29jea",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "12.3(8)jea",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:quizandsurveymaster:quiz_and_survey_master:4.4.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:quizandsurveymaster:quiz_and_survey_master:4.4.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "quizandsurveymaster",
- "Product": "quiz_and_survey_master",
- "Version": "4.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:denx:u-boot:1.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:denx:u-boot:1.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "denx",
- "Product": "u-boot",
- "Version": "1.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.1.2374:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.1.2374",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.1.2374",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:avaya:aura_communication_manager:7.1.3.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:avaya:aura_communication_manager:7.1.3.5",
- "wfn": {
- "Part": "a",
- "Vendor": "avaya",
- "Product": "aura_communication_manager",
- "Version": "7.1.3.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:huawei:secospace_usg6600_firmware:v500r001c00spc050:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:huawei:secospace_usg6600_firmware:v500r001c00spc050",
- "wfn": {
- "Part": "o",
- "Vendor": "huawei",
- "Product": "secospace_usg6600_firmware",
- "Version": "v500r001c00spc050",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kiboit:phastpress:1.49:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:kiboit:phastpress:1.49::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "kiboit",
- "Product": "phastpress",
- "Version": "1.49",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vercel:next.js:1.0.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:vercel:next.js:1.0.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "vercel",
- "Product": "next.js",
- "Version": "1.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:scala-lang:scala:2.13.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:scala-lang:scala:2.13.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "scala-lang",
- "Product": "scala",
- "Version": "2.13.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:agilebits:knox:2.1.9:-:*:*:*:mac_os_x:*:*",
- "cpe-url": "cpe:/a:agilebits:knox:2.1.9:-:~~~mac_os_x~~",
- "wfn": {
- "Part": "a",
- "Vendor": "agilebits",
- "Product": "knox",
- "Version": "2.1.9",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "mac_os_x",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sqreen:php_microagent:1.9.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sqreen:php_microagent:1.9.2",
- "wfn": {
- "Part": "a",
- "Vendor": "sqreen",
- "Product": "php_microagent",
- "Version": "1.9.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:h5ai_project:h5ai:0.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:h5ai_project:h5ai:0.12",
- "wfn": {
- "Part": "a",
- "Vendor": "h5ai_project",
- "Product": "h5ai",
- "Version": "0.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:weechat:weechat:3.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:weechat:weechat:3.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "weechat",
- "Product": "weechat",
- "Version": "3.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:rabbitmq:1.9.8:*:*:*:*:pivotal_cloud_foundry:*:*",
- "cpe-url": "cpe:/a:pivotal_software:rabbitmq:1.9.8::~~~pivotal_cloud_foundry~~",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "rabbitmq",
- "Version": "1.9.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "pivotal_cloud_foundry",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:12.1eu:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:12.1eu",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "12.1eu",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ntp:ntp:4.2.7:p349:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ntp:ntp:4.2.7:p349",
- "wfn": {
- "Part": "a",
- "Vendor": "ntp",
- "Product": "ntp",
- "Version": "4.2.7",
- "Update": "p349",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mariadb:mariadb:10.2.26:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mariadb:mariadb:10.2.26",
- "wfn": {
- "Part": "a",
- "Vendor": "mariadb",
- "Product": "mariadb",
- "Version": "10.2.26",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudbees:jenkins:1.424.1:-:lts:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudbees:jenkins:1.424.1:-:lts",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudbees",
- "Product": "jenkins",
- "Version": "1.424.1",
- "Update": "-",
- "Edition": "lts",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:colossusxt:colossuscoinxt:0.3.23:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:colossusxt:colossuscoinxt:0.3.23:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "colossusxt",
- "Product": "colossuscoinxt",
- "Version": "0.3.23",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fortinet:fortianalyzer:6.4.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fortinet:fortianalyzer:6.4.1",
- "wfn": {
- "Part": "a",
- "Vendor": "fortinet",
- "Product": "fortianalyzer",
- "Version": "6.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gaku:tablacus_explorer:17.6.15:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gaku:tablacus_explorer:17.6.15",
- "wfn": {
- "Part": "a",
- "Vendor": "gaku",
- "Product": "tablacus_explorer",
- "Version": "17.6.15",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netsweeper:netsweeper:6.3.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netsweeper:netsweeper:6.3.5",
- "wfn": {
- "Part": "a",
- "Vendor": "netsweeper",
- "Product": "netsweeper",
- "Version": "6.3.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:18.0.1006.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:18.0.1006.0",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "18.0.1006.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxfoundation:containerd:1.0.1:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxfoundation:containerd:1.0.1:-",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxfoundation",
- "Product": "containerd",
- "Version": "1.0.1",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:convert\\:\\:asn1_project:convert\\:\\:asn1:0.27:*:*:*:*:perl:*:*",
- "cpe-url": "cpe:/a:convert%3a%3aasn1_project:convert%3a%3aasn1:0.27::~~~perl~~",
- "wfn": {
- "Part": "a",
- "Vendor": "convert::asn1_project",
- "Product": "convert::asn1",
- "Version": "0.27",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "perl",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sandhillsdev:easy_digital_downloads:2.1.9:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:sandhillsdev:easy_digital_downloads:2.1.9::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "sandhillsdev",
- "Product": "easy_digital_downloads",
- "Version": "2.1.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ffmpeg:ffmpeg:2.8.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ffmpeg:ffmpeg:2.8.2",
- "wfn": {
- "Part": "a",
- "Vendor": "ffmpeg",
- "Product": "ffmpeg",
- "Version": "2.8.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:txjia:imcat:3.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:txjia:imcat:3.8",
- "wfn": {
- "Part": "a",
- "Vendor": "txjia",
- "Product": "imcat",
- "Version": "3.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spiffyplugins:spiffy_calendar:3.4.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:spiffyplugins:spiffy_calendar:3.4.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "spiffyplugins",
- "Product": "spiffy_calendar",
- "Version": "3.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tryton:trytond:1.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tryton:trytond:1.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "tryton",
- "Product": "trytond",
- "Version": "1.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:openpyxl:2.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:openpyxl:2.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "openpyxl",
- "Version": "2.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:keybase:keybase:1.0.29:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:keybase:keybase:1.0.29",
- "wfn": {
- "Part": "a",
- "Vendor": "keybase",
- "Product": "keybase",
- "Version": "1.0.29",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mozilla:nss:3.60:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mozilla:nss:3.60",
- "wfn": {
- "Part": "a",
- "Vendor": "mozilla",
- "Product": "nss",
- "Version": "3.60",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:designmodo:wp_maintenance_mode:1.8.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:designmodo:wp_maintenance_mode:1.8.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "designmodo",
- "Product": "wp_maintenance_mode",
- "Version": "1.8.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:brave:brave:0.15.314:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:brave:brave:0.15.314",
- "wfn": {
- "Part": "a",
- "Vendor": "brave",
- "Product": "brave",
- "Version": "0.15.314",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:iij:seil_b1_firmware:3.48:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:iij:seil_b1_firmware:3.48",
- "wfn": {
- "Part": "o",
- "Vendor": "iij",
- "Product": "seil_b1_firmware",
- "Version": "3.48",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:core_i7:4790s:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:core_i7:4790s",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "core_i7",
- "Version": "4790s",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sophos:unified_threat_management_up2date:9.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sophos:unified_threat_management_up2date:9.1",
- "wfn": {
- "Part": "a",
- "Vendor": "sophos",
- "Product": "unified_threat_management_up2date",
- "Version": "9.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:plainware:hitappoint:6.4.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:plainware:hitappoint:6.4.2",
- "wfn": {
- "Part": "a",
- "Vendor": "plainware",
- "Product": "hitappoint",
- "Version": "6.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zabbix:zabbix:1.8.4:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zabbix:zabbix:1.8.4:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "zabbix",
- "Product": "zabbix",
- "Version": "1.8.4",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:espressif:esp32_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:espressif:esp32_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "espressif",
- "Product": "esp32_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:signal:messenger:1.8.2:*:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:signal:messenger:1.8.2::~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "signal",
- "Product": "messenger",
- "Version": "1.8.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tendermint:tendermint:0.26.0:rc0:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tendermint:tendermint:0.26.0:rc0",
- "wfn": {
- "Part": "a",
- "Vendor": "tendermint",
- "Product": "tendermint",
- "Version": "0.26.0",
- "Update": "rc0",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:brave:brave:1.27.107:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:brave:brave:1.27.107",
- "wfn": {
- "Part": "a",
- "Vendor": "brave",
- "Product": "brave",
- "Version": "1.27.107",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sumatrapdfreader:sumatrapdf:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sumatrapdfreader:sumatrapdf:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "sumatrapdfreader",
- "Product": "sumatrapdf",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:siemens:simatic_ipc647c:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:siemens:simatic_ipc647c:-",
- "wfn": {
- "Part": "h",
- "Vendor": "siemens",
- "Product": "simatic_ipc647c",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:codiad:codiad:2.2.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:codiad:codiad:2.2.9",
- "wfn": {
- "Part": "a",
- "Vendor": "codiad",
- "Product": "codiad",
- "Version": "2.2.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:confluence_data_center:3.5.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlassian:confluence_data_center:3.5.11",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "confluence_data_center",
- "Version": "3.5.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:iptanus:wordpress_file_upload:4.6.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:iptanus:wordpress_file_upload:4.6.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "iptanus",
- "Product": "wordpress_file_upload",
- "Version": "4.6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hp:nonstop_netbatch:j06.14.03:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hp:nonstop_netbatch:j06.14.03",
- "wfn": {
- "Part": "a",
- "Vendor": "hp",
- "Product": "nonstop_netbatch",
- "Version": "j06.14.03",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.0412:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.0412",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.0412",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:emby:emby.releases:3.4.1.20:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:emby:emby.releases:3.4.1.20",
- "wfn": {
- "Part": "a",
- "Vendor": "emby",
- "Product": "emby.releases",
- "Version": "3.4.1.20",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:brave:brave:1.8.50:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:brave:brave:1.8.50",
- "wfn": {
- "Part": "a",
- "Vendor": "brave",
- "Product": "brave",
- "Version": "1.8.50",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apollosapp:data-connector-rock:2.3.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:apollosapp:data-connector-rock:2.3.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "apollosapp",
- "Product": "data-connector-rock",
- "Version": "2.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:keyring:2.0.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:keyring:2.0.3",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "keyring",
- "Version": "2.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sleuthkit:the_sleuth_kit:4.6.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sleuthkit:the_sleuth_kit:4.6.6",
- "wfn": {
- "Part": "a",
- "Vendor": "sleuthkit",
- "Product": "the_sleuth_kit",
- "Version": "4.6.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adjam:rekonq:0.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:adjam:rekonq:0.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "adjam",
- "Product": "rekonq",
- "Version": "0.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:unified_intelligence_center:11.6\\(1\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:unified_intelligence_center:11.6%281%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "unified_intelligence_center",
- "Version": "11.6(1)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:5.0.332.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:5.0.332.0",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "5.0.332.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:pipeline_github_notify_step:1.0.5:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:pipeline_github_notify_step:1.0.5::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "pipeline_github_notify_step",
- "Version": "1.0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netflix:hollow:4.8.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netflix:hollow:4.8.1",
- "wfn": {
- "Part": "a",
- "Vendor": "netflix",
- "Product": "hollow",
- "Version": "4.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:impress:wp_rollback:1.2.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:impress:wp_rollback:1.2.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "impress",
- "Product": "wp_rollback",
- "Version": "1.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:concourse:0.6.0:rc21:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:concourse:0.6.0:rc21",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "concourse",
- "Version": "0.6.0",
- "Update": "rc21",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:nx-os:5.2\\(1\\)sm1\\(5.1\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:nx-os:5.2%281%29sm1%285.1%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "nx-os",
- "Version": "5.2(1)sm1(5.1)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fortinet:fortiportal:4.2.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fortinet:fortiportal:4.2.2",
- "wfn": {
- "Part": "a",
- "Vendor": "fortinet",
- "Product": "fortiportal",
- "Version": "4.2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:orbital:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:orbital:-",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "orbital",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:symantec:veritas_storage_foundation_for_windows:5.10.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:symantec:veritas_storage_foundation_for_windows:5.10.0",
- "wfn": {
- "Part": "a",
- "Vendor": "symantec",
- "Product": "veritas_storage_foundation_for_windows",
- "Version": "5.10.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jupyter:notebook:5.1.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jupyter:notebook:5.1.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "jupyter",
- "Product": "notebook",
- "Version": "5.1.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:unity:web_player:4.5.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:unity:web_player:4.5.4",
- "wfn": {
- "Part": "a",
- "Vendor": "unity",
- "Product": "web_player",
- "Version": "4.5.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:m0p39a:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:m0p39a:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "m0p39a",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:knexjs:knex:0.7.5:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:knexjs:knex:0.7.5::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "knexjs",
- "Product": "knex",
- "Version": "0.7.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mailenable:mailenable:1.18:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:mailenable:mailenable:1.18::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "mailenable",
- "Product": "mailenable",
- "Version": "1.18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:btcpayserver:btcpay_server:1.0.2.114:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:btcpayserver:btcpay_server:1.0.2.114",
- "wfn": {
- "Part": "a",
- "Vendor": "btcpayserver",
- "Product": "btcpay_server",
- "Version": "1.0.2.114",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:incubator_superset:0.34.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:incubator_superset:0.34.0",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "incubator_superset",
- "Version": "0.34.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:asset_pipeline_project:asset-pipeline:2.13.0:*:*:*:*:grails:*:*",
- "cpe-url": "cpe:/a:asset_pipeline_project:asset-pipeline:2.13.0::~~~grails~~",
- "wfn": {
- "Part": "a",
- "Vendor": "asset_pipeline_project",
- "Product": "asset-pipeline",
- "Version": "2.13.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "grails",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:flashbackrecorder:flashback:5.23.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:flashbackrecorder:flashback:5.23.0",
- "wfn": {
- "Part": "a",
- "Vendor": "flashbackrecorder",
- "Product": "flashback",
- "Version": "5.23.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:n9k-c9396tx_firmware:13.2\\(3n\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:n9k-c9396tx_firmware:13.2%283n%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "n9k-c9396tx_firmware",
- "Version": "13.2(3n)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:flexense:diskboss:6.5:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:flexense:diskboss:6.5::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "flexense",
- "Product": "diskboss",
- "Version": "6.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dart:dart_software_development_kit:0.6.21.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:dart:dart_software_development_kit:0.6.21.1",
- "wfn": {
- "Part": "a",
- "Vendor": "dart",
- "Product": "dart_software_development_kit",
- "Version": "0.6.21.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:activestate:activeperl:5.8.819:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:activestate:activeperl:5.8.819",
- "wfn": {
- "Part": "a",
- "Vendor": "activestate",
- "Product": "activeperl",
- "Version": "5.8.819",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:aedes_project:aedes:0.13.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:aedes_project:aedes:0.13.1",
- "wfn": {
- "Part": "a",
- "Vendor": "aedes_project",
- "Product": "aedes",
- "Version": "0.13.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:swoole:swoole_php_framework:1.13.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:swoole:swoole_php_framework:1.13.6",
- "wfn": {
- "Part": "a",
- "Vendor": "swoole",
- "Product": "swoole_php_framework",
- "Version": "1.13.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:credova:financial:1.4.9:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:credova:financial:1.4.9::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "credova",
- "Product": "financial",
- "Version": "1.4.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vmware:spring_integration_zip:1.0.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vmware:spring_integration_zip:1.0.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "vmware",
- "Product": "spring_integration_zip",
- "Version": "1.0.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nokogiri:nokogiri:1.6.2:beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nokogiri:nokogiri:1.6.2:beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "nokogiri",
- "Product": "nokogiri",
- "Version": "1.6.2",
- "Update": "beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:multicorewareinc:x265:1.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:multicorewareinc:x265:1.4",
- "wfn": {
- "Part": "a",
- "Vendor": "multicorewareinc",
- "Product": "x265",
- "Version": "1.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:wago:750-8202:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:wago:750-8202:-",
- "wfn": {
- "Part": "h",
- "Vendor": "wago",
- "Product": "750-8202",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:octobercms:october_cms:1.0.228:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:octobercms:october_cms:1.0.228",
- "wfn": {
- "Part": "a",
- "Vendor": "octobercms",
- "Product": "october_cms",
- "Version": "1.0.228",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:centreon:widget-host-monitoring:19.04.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:centreon:widget-host-monitoring:19.04.5",
- "wfn": {
- "Part": "a",
- "Vendor": "centreon",
- "Product": "widget-host-monitoring",
- "Version": "19.04.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sonatype:nexus_repository_manager:2.14.15:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sonatype:nexus_repository_manager:2.14.15",
- "wfn": {
- "Part": "a",
- "Vendor": "sonatype",
- "Product": "nexus_repository_manager",
- "Version": "2.14.15",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:12.2\\\\\\(25\\\\\\)seg2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:12.2%5c%2825%5c%29seg2",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "12.2\\\\(25\\\\)seg2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:eq-3:ccu2_firmware:2.5.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:eq-3:ccu2_firmware:2.5.4",
- "wfn": {
- "Part": "o",
- "Vendor": "eq-3",
- "Product": "ccu2_firmware",
- "Version": "2.5.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nextcloud:end-to-end_encryption:1.7.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nextcloud:end-to-end_encryption:1.7.0",
- "wfn": {
- "Part": "a",
- "Vendor": "nextcloud",
- "Product": "end-to-end_encryption",
- "Version": "1.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxfoundation:containerd:0.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxfoundation:containerd:0.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxfoundation",
- "Product": "containerd",
- "Version": "0.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wtfutil:wtf:0.0.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wtfutil:wtf:0.0.11",
- "wfn": {
- "Part": "a",
- "Vendor": "wtfutil",
- "Product": "wtf",
- "Version": "0.0.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:maxthon:maxthon_browser:5.2.3.4000:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:maxthon:maxthon_browser:5.2.3.4000",
- "wfn": {
- "Part": "a",
- "Vendor": "maxthon",
- "Product": "maxthon_browser",
- "Version": "5.2.3.4000",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fasterxml:jackson-dataformats-binary:2.9.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fasterxml:jackson-dataformats-binary:2.9.5",
- "wfn": {
- "Part": "a",
- "Vendor": "fasterxml",
- "Product": "jackson-dataformats-binary",
- "Version": "2.9.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:attachmate:reflection_for_secure_it_client:7.2.1163:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:attachmate:reflection_for_secure_it_client:7.2.1163",
- "wfn": {
- "Part": "a",
- "Vendor": "attachmate",
- "Product": "reflection_for_secure_it_client",
- "Version": "7.2.1163",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ea:origin_client:10.5.86:*:*:*:*:mac_os:*:*",
- "cpe-url": "cpe:/a:ea:origin_client:10.5.86::~~~mac_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ea",
- "Product": "origin_client",
- "Version": "10.5.86",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "mac_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:paloaltonetworks:expedition:1.1.83:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:paloaltonetworks:expedition:1.1.83",
- "wfn": {
- "Part": "a",
- "Vendor": "paloaltonetworks",
- "Product": "expedition",
- "Version": "1.1.83",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:hp:hp-ux:8.04:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:hp:hp-ux:8.04",
- "wfn": {
- "Part": "o",
- "Vendor": "hp",
- "Product": "hp-ux",
- "Version": "8.04",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:exposure_notification_verification_server:0.23.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:exposure_notification_verification_server:0.23.0",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "exposure_notification_verification_server",
- "Version": "0.23.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:drweb:web_security_space:6.0.0.03100:-:professional:*:*:*:*:*",
- "cpe-url": "cpe:/a:drweb:web_security_space:6.0.0.03100:-:professional",
- "wfn": {
- "Part": "a",
- "Vendor": "drweb",
- "Product": "web_security_space",
- "Version": "6.0.0.03100",
- "Update": "-",
- "Edition": "professional",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:fortinet:fortiswitch:3.6.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:fortinet:fortiswitch:3.6.6",
- "wfn": {
- "Part": "o",
- "Vendor": "fortinet",
- "Product": "fortiswitch",
- "Version": "3.6.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kaseya:vsa:9.5.0.20:*:*:*:rmm:*:*:*",
- "cpe-url": "cpe:/a:kaseya:vsa:9.5.0.20::~~rmm~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "kaseya",
- "Product": "vsa",
- "Version": "9.5.0.20",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "rmm",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nghttp2:nghttp2:1.29.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nghttp2:nghttp2:1.29.0",
- "wfn": {
- "Part": "a",
- "Vendor": "nghttp2",
- "Product": "nghttp2",
- "Version": "1.29.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tcoffee:t-coffee:11.00.8cbe486-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tcoffee:t-coffee:11.00.8cbe486-1",
- "wfn": {
- "Part": "a",
- "Vendor": "tcoffee",
- "Product": "t-coffee",
- "Version": "11.00.8cbe486-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:hns2600bpq24r_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:hns2600bpq24r_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "hns2600bpq24r_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:belden:hirschmann_rsb20-0900mmm2taabe:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:belden:hirschmann_rsb20-0900mmm2taabe:-",
- "wfn": {
- "Part": "h",
- "Vendor": "belden",
- "Product": "hirschmann_rsb20-0900mmm2taabe",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:npmjs:tar:4.4.3:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:npmjs:tar:4.4.3::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "npmjs",
- "Product": "tar",
- "Version": "4.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:microchip:atsama5d27c-cnrvao:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:microchip:atsama5d27c-cnrvao:-",
- "wfn": {
- "Part": "h",
- "Vendor": "microchip",
- "Product": "atsama5d27c-cnrvao",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tryton:tryton:3.6.13:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tryton:tryton:3.6.13",
- "wfn": {
- "Part": "a",
- "Vendor": "tryton",
- "Product": "tryton",
- "Version": "3.6.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ays-pro:quiz_maker:3.0.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ays-pro:quiz_maker:3.0.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ays-pro",
- "Product": "quiz_maker",
- "Version": "3.0.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:codeaurora:android-msm:3.12.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:codeaurora:android-msm:3.12.11",
- "wfn": {
- "Part": "o",
- "Vendor": "codeaurora",
- "Product": "android-msm",
- "Version": "3.12.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tiny.cloud:tinymce:3.4.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tiny.cloud:tinymce:3.4.8",
- "wfn": {
- "Part": "a",
- "Vendor": "tiny.cloud",
- "Product": "tinymce",
- "Version": "3.4.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bracketspace:notification:2.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:bracketspace:notification:2.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "bracketspace",
- "Product": "notification",
- "Version": "2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:lenovo:thinkpad_e565_bios:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:lenovo:thinkpad_e565_bios:-",
- "wfn": {
- "Part": "o",
- "Vendor": "lenovo",
- "Product": "thinkpad_e565_bios",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:spi-inc:ganeti:2.1.0:beta0:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:spi-inc:ganeti:2.1.0:beta0",
- "wfn": {
- "Part": "a",
- "Vendor": "spi-inc",
- "Product": "ganeti",
- "Version": "2.1.0",
- "Update": "beta0",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:telegram:telegram_desktop:0.7.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:telegram:telegram_desktop:0.7.12",
- "wfn": {
- "Part": "a",
- "Vendor": "telegram",
- "Product": "telegram_desktop",
- "Version": "0.7.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:encode:uvicorn:0.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:encode:uvicorn:0.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "encode",
- "Product": "uvicorn",
- "Version": "0.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:linux:tizen:4.0:m3:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:linux:tizen:4.0:m3",
- "wfn": {
- "Part": "o",
- "Vendor": "linux",
- "Product": "tizen",
- "Version": "4.0",
- "Update": "m3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rancher:rancher:2.5.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rancher:rancher:2.5.6",
- "wfn": {
- "Part": "a",
- "Vendor": "rancher",
- "Product": "rancher",
- "Version": "2.5.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:imagemagick:imagemagick:6.9.9-18:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:imagemagick:imagemagick:6.9.9-18",
- "wfn": {
- "Part": "a",
- "Vendor": "imagemagick",
- "Product": "imagemagick",
- "Version": "6.9.9-18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hp:system_management_homepage:2.1.3.132:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hp:system_management_homepage:2.1.3.132",
- "wfn": {
- "Part": "a",
- "Vendor": "hp",
- "Product": "system_management_homepage",
- "Version": "2.1.3.132",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:http_server:2.2.33:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:http_server:2.2.33",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "http_server",
- "Version": "2.2.33",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:unity3d:unity_editor:5.5.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:unity3d:unity_editor:5.5.0",
- "wfn": {
- "Part": "a",
- "Vendor": "unity3d",
- "Product": "unity_editor",
- "Version": "5.5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:xen-orchestra:xen_orchestra_server:4.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:xen-orchestra:xen_orchestra_server:4.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "xen-orchestra",
- "Product": "xen_orchestra_server",
- "Version": "4.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zuuse:beims_contractorweb_.net:5.18.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zuuse:beims_contractorweb_.net:5.18.0.0",
- "wfn": {
- "Part": "a",
- "Vendor": "zuuse",
- "Product": "beims_contractorweb_.net",
- "Version": "5.18.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mailcow:mailcow\\:_dockerized:0.3.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mailcow:mailcow%3a_dockerized:0.3.2",
- "wfn": {
- "Part": "a",
- "Vendor": "mailcow",
- "Product": "mailcow:_dockerized",
- "Version": "0.3.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:3cx:live_chat:8.0.32:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:3cx:live_chat:8.0.32::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "3cx",
- "Product": "live_chat",
- "Version": "8.0.32",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:unified_contact_center_enterprise:11.0\\(1\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:unified_contact_center_enterprise:11.0%281%29",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "unified_contact_center_enterprise",
- "Version": "11.0(1)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:weseek:growi:3.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:weseek:growi:3.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "weseek",
- "Product": "growi",
- "Version": "3.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:enalean:tuleap:10.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:enalean:tuleap:10.6",
- "wfn": {
- "Part": "a",
- "Vendor": "enalean",
- "Product": "tuleap",
- "Version": "10.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:jf812a:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:jf812a:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "jf812a",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:webyog:sqlyog:3.52:-:enterprise:*:*:*:*:*",
- "cpe-url": "cpe:/a:webyog:sqlyog:3.52:-:enterprise",
- "wfn": {
- "Part": "a",
- "Vendor": "webyog",
- "Product": "sqlyog",
- "Version": "3.52",
- "Update": "-",
- "Edition": "enterprise",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pidgin:pidgin:2.10.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pidgin:pidgin:2.10.8",
- "wfn": {
- "Part": "a",
- "Vendor": "pidgin",
- "Product": "pidgin",
- "Version": "2.10.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libguestfs:libguestfs:1.33.17:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libguestfs:libguestfs:1.33.17",
- "wfn": {
- "Part": "a",
- "Vendor": "libguestfs",
- "Product": "libguestfs",
- "Version": "1.33.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:urllib3:1.18:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:urllib3:1.18",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "urllib3",
- "Version": "1.18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:jclouds:1.6.1:incubating-rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:jclouds:1.6.1:incubating-rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "jclouds",
- "Version": "1.6.1",
- "Update": "incubating-rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:appleple:a-blog_cms:2.7.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:appleple:a-blog_cms:2.7.12",
- "wfn": {
- "Part": "a",
- "Vendor": "appleple",
- "Product": "a-blog_cms",
- "Version": "2.7.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnu:libredwg:0.10.1.2670:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnu:libredwg:0.10.1.2670",
- "wfn": {
- "Part": "a",
- "Vendor": "gnu",
- "Product": "libredwg",
- "Version": "0.10.1.2670",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:postgresql:postgresql:8.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:postgresql:postgresql:8.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "postgresql",
- "Product": "postgresql",
- "Version": "8.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:open_stf:1.0.2:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:open_stf:1.0.2::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "open_stf",
- "Version": "1.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:winwar:wp_ebay_product_feeds:0.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:winwar:wp_ebay_product_feeds:0.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "winwar",
- "Product": "wp_ebay_product_feeds",
- "Version": "0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:web-mv:resads:1.0.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:web-mv:resads:1.0.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "web-mv",
- "Product": "resads",
- "Version": "1.0.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:uglifyjs_project:uglifyjs:3.0.16:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:uglifyjs_project:uglifyjs:3.0.16::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "uglifyjs_project",
- "Product": "uglifyjs",
- "Version": "3.0.16",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:frontaccounting:frontaccounting:2.3.22:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:frontaccounting:frontaccounting:2.3.22",
- "wfn": {
- "Part": "a",
- "Vendor": "frontaccounting",
- "Product": "frontaccounting",
- "Version": "2.3.22",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apple:itunes:7.4.2:-:mac:*:*:*:*:*",
- "cpe-url": "cpe:/a:apple:itunes:7.4.2:-:mac",
- "wfn": {
- "Part": "a",
- "Vendor": "apple",
- "Product": "itunes",
- "Version": "7.4.2",
- "Update": "-",
- "Edition": "mac",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fluentd:fluentd:1.12.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:fluentd:fluentd:1.12.1",
- "wfn": {
- "Part": "a",
- "Vendor": "fluentd",
- "Product": "fluentd",
- "Version": "1.12.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sun:java_dynamic_management_kit:5.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sun:java_dynamic_management_kit:5.1",
- "wfn": {
- "Part": "a",
- "Vendor": "sun",
- "Product": "java_dynamic_management_kit",
- "Version": "5.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:contao:contao:4.5.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:contao:contao:4.5.7",
- "wfn": {
- "Part": "a",
- "Vendor": "contao",
- "Product": "contao",
- "Version": "4.5.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gvectors:wpdiscuz:5.1.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:gvectors:wpdiscuz:5.1.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gvectors",
- "Product": "wpdiscuz",
- "Version": "5.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jupyterhub:kubespawner:0.8.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jupyterhub:kubespawner:0.8.1",
- "wfn": {
- "Part": "a",
- "Vendor": "jupyterhub",
- "Product": "kubespawner",
- "Version": "0.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tracker-software:pdf-xchange_lite_printer:4.0.154:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tracker-software:pdf-xchange_lite_printer:4.0.154",
- "wfn": {
- "Part": "a",
- "Vendor": "tracker-software",
- "Product": "pdf-xchange_lite_printer",
- "Version": "4.0.154",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:node-opencv_project:node-opencv:0.0.9:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:node-opencv_project:node-opencv:0.0.9::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "node-opencv_project",
- "Product": "node-opencv",
- "Version": "0.0.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:flarum:flarum:0.1.0:beta6:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:flarum:flarum:0.1.0:beta6",
- "wfn": {
- "Part": "a",
- "Vendor": "flarum",
- "Product": "flarum",
- "Version": "0.1.0",
- "Update": "beta6",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:php:pear:1.4.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:php:pear:1.4.4",
- "wfn": {
- "Part": "a",
- "Vendor": "php",
- "Product": "pear",
- "Version": "1.4.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:belwith-keeler:hickory_smart:01.01.05:*:*:*:*:iphone_os:*:*",
- "cpe-url": "cpe:/a:belwith-keeler:hickory_smart:01.01.05::~~~iphone_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "belwith-keeler",
- "Product": "hickory_smart",
- "Version": "01.01.05",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "iphone_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:huawei:secospace_usg6600_firmware:v100r001c30spc500:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:huawei:secospace_usg6600_firmware:v100r001c30spc500",
- "wfn": {
- "Part": "o",
- "Vendor": "huawei",
- "Product": "secospace_usg6600_firmware",
- "Version": "v100r001c30spc500",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:trousers_project:trousers:0.3.13:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:trousers_project:trousers:0.3.13",
- "wfn": {
- "Part": "a",
- "Vendor": "trousers_project",
- "Product": "trousers",
- "Version": "0.3.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pterodactyl:panel:1.0.0:beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pterodactyl:panel:1.0.0:beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "pterodactyl",
- "Product": "panel",
- "Version": "1.0.0",
- "Update": "beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:laserjet_managed_flow_mfp_e67550_l3u70a:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:laserjet_managed_flow_mfp_e67550_l3u70a:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "laserjet_managed_flow_mfp_e67550_l3u70a",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:freedownloadmanager:freedownloadmanager:2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:freedownloadmanager:freedownloadmanager:2",
- "wfn": {
- "Part": "a",
- "Vendor": "freedownloadmanager",
- "Product": "freedownloadmanager",
- "Version": "2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:db2:10.1.0.3:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:ibm:db2:10.1.0.3::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "db2",
- "Version": "10.1.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openstack:oslo.middleware:3.30.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openstack:oslo.middleware:3.30.1",
- "wfn": {
- "Part": "a",
- "Vendor": "openstack",
- "Product": "oslo.middleware",
- "Version": "3.30.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:simplenews_scheduler_project:simplenews_scheduler:6.x-2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:simplenews_scheduler_project:simplenews_scheduler:6.x-2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "simplenews_scheduler_project",
- "Product": "simplenews_scheduler",
- "Version": "6.x-2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpexpertdeveloper:wp_private_content_plus:1.7:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpexpertdeveloper:wp_private_content_plus:1.7::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpexpertdeveloper",
- "Product": "wp_private_content_plus",
- "Version": "1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:catchplugins:generate_child_theme:-:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:catchplugins:generate_child_theme:-::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "catchplugins",
- "Product": "generate_child_theme",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:spa_502g_firmware:7.6.2:sr1:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:spa_502g_firmware:7.6.2:sr1",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "spa_502g_firmware",
- "Version": "7.6.2",
- "Update": "sr1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cleverplugins:seo_booster:3.6.14:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:cleverplugins:seo_booster:3.6.14::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "cleverplugins",
- "Product": "seo_booster",
- "Version": "3.6.14",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:go-jose_project:go-jose:2.1.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:go-jose_project:go-jose:2.1.8",
- "wfn": {
- "Part": "a",
- "Vendor": "go-jose_project",
- "Product": "go-jose",
- "Version": "2.1.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pdfinfo_project:pdfinfo:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pdfinfo_project:pdfinfo:-",
- "wfn": {
- "Part": "a",
- "Vendor": "pdfinfo_project",
- "Product": "pdfinfo",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pervasive:data_integrator_engine:9.0.3.30:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pervasive:data_integrator_engine:9.0.3.30",
- "wfn": {
- "Part": "a",
- "Vendor": "pervasive",
- "Product": "data_integrator_engine",
- "Version": "9.0.3.30",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inmedias:questionaire:3.0.45:beta:*:*:*:typo3:*:*",
- "cpe-url": "cpe:/a:inmedias:questionaire:3.0.45:beta:~~~typo3~~",
- "wfn": {
- "Part": "a",
- "Vendor": "inmedias",
- "Product": "questionaire",
- "Version": "3.0.45",
- "Update": "beta",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "typo3",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:webyog:sqlyog:8.15:-:community:*:*:*:*:*",
- "cpe-url": "cpe:/a:webyog:sqlyog:8.15:-:community",
- "wfn": {
- "Part": "a",
- "Vendor": "webyog",
- "Product": "sqlyog",
- "Version": "8.15",
- "Update": "-",
- "Edition": "community",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:wildfly_core:3.0.0:beta3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:wildfly_core:3.0.0:beta3",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "wildfly_core",
- "Version": "3.0.0",
- "Update": "beta3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pressified:sendpress:0.9.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:pressified:sendpress:0.9.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "pressified",
- "Product": "sendpress",
- "Version": "0.9.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cakephp:cakephp:3.4.0:beta2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cakephp:cakephp:3.4.0:beta2",
- "wfn": {
- "Part": "a",
- "Vendor": "cakephp",
- "Product": "cakephp",
- "Version": "3.4.0",
- "Update": "beta2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mobyproject:moby:1.12.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mobyproject:moby:1.12.5",
- "wfn": {
- "Part": "a",
- "Vendor": "mobyproject",
- "Product": "moby",
- "Version": "1.12.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redmine:redmine:2.6.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redmine:redmine:2.6.7",
- "wfn": {
- "Part": "a",
- "Vendor": "redmine",
- "Product": "redmine",
- "Version": "2.6.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:openui5:1.44.18:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:openui5:1.44.18",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "openui5",
- "Version": "1.44.18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ikiwiki:ikiwiki:2.55:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ikiwiki:ikiwiki:2.55",
- "wfn": {
- "Part": "a",
- "Vendor": "ikiwiki",
- "Product": "ikiwiki",
- "Version": "2.55",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:percona:xtrabackup:2.1.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:percona:xtrabackup:2.1.6",
- "wfn": {
- "Part": "a",
- "Vendor": "percona",
- "Product": "xtrabackup",
- "Version": "2.1.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libpng:libpng:1.7.0:beta01:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libpng:libpng:1.7.0:beta01",
- "wfn": {
- "Part": "a",
- "Vendor": "libpng",
- "Product": "libpng",
- "Version": "1.7.0",
- "Update": "beta01",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kentico:kentico_cms:12.0.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kentico:kentico_cms:12.0.12",
- "wfn": {
- "Part": "a",
- "Vendor": "kentico",
- "Product": "kentico_cms",
- "Version": "12.0.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:aufs_project:aufs2:2.6.36:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:aufs_project:aufs2:2.6.36:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "aufs_project",
- "Product": "aufs2",
- "Version": "2.6.36",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnu:libredwg:0.8.1898:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnu:libredwg:0.8.1898",
- "wfn": {
- "Part": "a",
- "Vendor": "gnu",
- "Product": "libredwg",
- "Version": "0.8.1898",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:prost_project:prost:0.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:prost_project:prost:0.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "prost_project",
- "Product": "prost",
- "Version": "0.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mjml:mjml:3.3.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mjml:mjml:3.3.4",
- "wfn": {
- "Part": "a",
- "Vendor": "mjml",
- "Product": "mjml",
- "Version": "3.3.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dotnetblogengine:blogengine.net:2.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:dotnetblogengine:blogengine.net:2.5",
- "wfn": {
- "Part": "a",
- "Vendor": "dotnetblogengine",
- "Product": "blogengine.net",
- "Version": "2.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:iij:seil_b1_firmware:3.05:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:iij:seil_b1_firmware:3.05",
- "wfn": {
- "Part": "o",
- "Vendor": "iij",
- "Product": "seil_b1_firmware",
- "Version": "3.05",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.2.3210:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.2.3210",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.2.3210",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vfbpro:visual_form_builder:3.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:vfbpro:visual_form_builder:3.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "vfbpro",
- "Product": "visual_form_builder",
- "Version": "3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gleamtech:fileultimate:6.5.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gleamtech:fileultimate:6.5.2",
- "wfn": {
- "Part": "a",
- "Vendor": "gleamtech",
- "Product": "fileultimate",
- "Version": "6.5.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.0132:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.0132",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.0132",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:xeon_e3-1220:6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:xeon_e3-1220:6",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "xeon_e3-1220",
- "Version": "6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:senecajs:seneca:2.0.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:senecajs:seneca:2.0.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "senecajs",
- "Product": "seneca",
- "Version": "2.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloud_foundry:bosh:263.9.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloud_foundry:bosh:263.9.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cloud_foundry",
- "Product": "bosh",
- "Version": "263.9.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:harpjs:harp:0.11.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:harpjs:harp:0.11.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "harpjs",
- "Product": "harp",
- "Version": "0.11.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:totvs:fluig:1.7.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:totvs:fluig:1.7.0",
- "wfn": {
- "Part": "a",
- "Vendor": "totvs",
- "Product": "fluig",
- "Version": "1.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kramdown_project:kramdown:0.14.1:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:kramdown_project:kramdown:0.14.1::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "kramdown_project",
- "Product": "kramdown",
- "Version": "0.14.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nullsoft:winamp:5.21:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nullsoft:winamp:5.21",
- "wfn": {
- "Part": "a",
- "Vendor": "nullsoft",
- "Product": "winamp",
- "Version": "5.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hibara:attachecase:3.2.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hibara:attachecase:3.2.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "hibara",
- "Product": "attachecase",
- "Version": "3.2.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sumatrapdfreader:sumatrapdf:2.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sumatrapdfreader:sumatrapdf:2.5",
- "wfn": {
- "Part": "a",
- "Vendor": "sumatrapdfreader",
- "Product": "sumatrapdf",
- "Version": "2.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:owncloud:owncloud:1.1.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:owncloud:owncloud:1.1.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "owncloud",
- "Product": "owncloud",
- "Version": "1.1.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bundler:bundler:1.14.0:pre2:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:bundler:bundler:1.14.0:pre2:~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "bundler",
- "Product": "bundler",
- "Version": "1.14.0",
- "Update": "pre2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cyrus:imap:2.5.15:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cyrus:imap:2.5.15",
- "wfn": {
- "Part": "a",
- "Vendor": "cyrus",
- "Product": "imap",
- "Version": "2.5.15",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vaadin:vaadin-menu-bar:2.0.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vaadin:vaadin-menu-bar:2.0.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "vaadin",
- "Product": "vaadin-menu-bar",
- "Version": "2.0.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:github:github:2.9.9:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:github:github:2.9.9::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "github",
- "Product": "github",
- "Version": "2.9.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:tomcat:10.0.0:milestone1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:tomcat:10.0.0:milestone1",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "tomcat",
- "Version": "10.0.0",
- "Update": "milestone1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:dashboard_view:2.12:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:dashboard_view:2.12::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "dashboard_view",
- "Version": "2.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:triple-game:triplea:2.0.17114:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:triple-game:triplea:2.0.17114",
- "wfn": {
- "Part": "a",
- "Vendor": "triple-game",
- "Product": "triplea",
- "Version": "2.0.17114",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:commons_compress:1.13:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:commons_compress:1.13",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "commons_compress",
- "Version": "1.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cern:root:5-18-00:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cern:root:5-18-00",
- "wfn": {
- "Part": "a",
- "Vendor": "cern",
- "Product": "root",
- "Version": "5-18-00",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:evolution-ews:3.24.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:evolution-ews:3.24.4",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "evolution-ews",
- "Version": "3.24.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gradle:maven:1.2.3:*:*:*:*:gradle:*:*",
- "cpe-url": "cpe:/a:gradle:maven:1.2.3::~~~gradle~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gradle",
- "Product": "maven",
- "Version": "1.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "gradle",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:contest_gallery:contest_gallery:9.3.8:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:contest_gallery:contest_gallery:9.3.8::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "contest_gallery",
- "Product": "contest_gallery",
- "Version": "9.3.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:interactivebrokers:ibapi:0.1.9:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:interactivebrokers:ibapi:0.1.9::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "interactivebrokers",
- "Product": "ibapi",
- "Version": "0.1.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tinyproxy_project:tinyproxy:1.6.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tinyproxy_project:tinyproxy:1.6.1",
- "wfn": {
- "Part": "a",
- "Vendor": "tinyproxy_project",
- "Product": "tinyproxy",
- "Version": "1.6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tiki:tikiwiki_cms\\/groupware:15.4:*:*:*:lts:*:*:*",
- "cpe-url": "cpe:/a:tiki:tikiwiki_cms%2fgroupware:15.4::~~lts~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "tiki",
- "Product": "tikiwiki_cms/groupware",
- "Version": "15.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "lts",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sensu:sensu_core:5.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sensu:sensu_core:5.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "sensu",
- "Product": "sensu_core",
- "Version": "5.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:advancestack_10base-t_switching_hub_j3210a:a.03.07:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:advancestack_10base-t_switching_hub_j3210a:a.03.07",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "advancestack_10base-t_switching_hub_j3210a",
- "Version": "a.03.07",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:9.0.597.27:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:9.0.597.27",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "9.0.597.27",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:pivotal_cloud_cache:1.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:pivotal_cloud_cache:1.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "pivotal_cloud_cache",
- "Version": "1.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:accurev:0.4:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:accurev:0.4::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "accurev",
- "Version": "0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:maven:3.5.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:maven:3.5.4",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "maven",
- "Version": "3.5.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:jabber_\\(xmpp\\)_notifier_and_control:1.9:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:jabber_%28xmpp%29_notifier_and_control:1.9::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "jabber_(xmpp)_notifier_and_control",
- "Version": "1.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adaptivecomputing:torque_resource_manager:2.3.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:adaptivecomputing:torque_resource_manager:2.3.7",
- "wfn": {
- "Part": "a",
- "Vendor": "adaptivecomputing",
- "Product": "torque_resource_manager",
- "Version": "2.3.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:26.0.1410.29:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:26.0.1410.29",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "26.0.1410.29",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:samba:samba:4.1.21:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:samba:samba:4.1.21",
- "wfn": {
- "Part": "a",
- "Vendor": "samba",
- "Product": "samba",
- "Version": "4.1.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kubernetes:kubernetes:1.16.0:alpha0:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kubernetes:kubernetes:1.16.0:alpha0",
- "wfn": {
- "Part": "a",
- "Vendor": "kubernetes",
- "Product": "kubernetes",
- "Version": "1.16.0",
- "Update": "alpha0",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:python:setuptools:41.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:python:setuptools:41.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "python",
- "Product": "setuptools",
- "Version": "41.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gitlab:gitlab:12.1.5:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:gitlab:gitlab:12.1.5::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gitlab",
- "Product": "gitlab",
- "Version": "12.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:apple:mac_os_x:11.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:apple:mac_os_x:11.0.1",
- "wfn": {
- "Part": "o",
- "Vendor": "apple",
- "Product": "mac_os_x",
- "Version": "11.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:osgeo:mapserver:4.2.0:beta2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:osgeo:mapserver:4.2.0:beta2",
- "wfn": {
- "Part": "a",
- "Vendor": "osgeo",
- "Product": "mapserver",
- "Version": "4.2.0",
- "Update": "beta2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bitpay:copay_bitcoin_wallet:4.3.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bitpay:copay_bitcoin_wallet:4.3.2",
- "wfn": {
- "Part": "a",
- "Vendor": "bitpay",
- "Product": "copay_bitcoin_wallet",
- "Version": "4.3.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bayashi:dopvstar\\*:0084:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bayashi:dopvstar%2a:0084",
- "wfn": {
- "Part": "a",
- "Vendor": "bayashi",
- "Product": "dopvstar\\*",
- "Version": "0084",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:xyzscripts:newsletter_manager:1.1:-:-:*:-:wordpress:*:*",
- "cpe-url": "cpe:/a:xyzscripts:newsletter_manager:1.1:-:~-~-~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "xyzscripts",
- "Product": "newsletter_manager",
- "Version": "1.1",
- "Update": "-",
- "Edition": "-",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gitlab:runner:9.0.0:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gitlab:runner:9.0.0:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "gitlab",
- "Product": "runner",
- "Version": "9.0.0",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hygeia_project:hygeia:1.22.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hygeia_project:hygeia:1.22.7",
- "wfn": {
- "Part": "a",
- "Vendor": "hygeia_project",
- "Product": "hygeia",
- "Version": "1.22.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bit_project:bit:0.5.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bit_project:bit:0.5.6",
- "wfn": {
- "Part": "a",
- "Vendor": "bit_project",
- "Product": "bit",
- "Version": "0.5.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:freebsd:freebsd:10.2:p2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:freebsd:freebsd:10.2:p2",
- "wfn": {
- "Part": "a",
- "Vendor": "freebsd",
- "Product": "freebsd",
- "Version": "10.2",
- "Update": "p2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:grafana:agent:0.20.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:grafana:agent:0.20.0",
- "wfn": {
- "Part": "a",
- "Vendor": "grafana",
- "Product": "agent",
- "Version": "0.20.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ubports:unity8:7.84\\+14.04.20140314-0ubuntu1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ubports:unity8:7.84%2b14.04.20140314-0ubuntu1",
- "wfn": {
- "Part": "a",
- "Vendor": "ubports",
- "Product": "unity8",
- "Version": "7.84+14.04.20140314-0ubuntu1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mozilla:thunderbird:31.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mozilla:thunderbird:31.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "mozilla",
- "Product": "thunderbird",
- "Version": "31.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gonitro:nitro_pro:10.5.9.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gonitro:nitro_pro:10.5.9.9",
- "wfn": {
- "Part": "a",
- "Vendor": "gonitro",
- "Product": "nitro_pro",
- "Version": "10.5.9.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ntp:ntp:4.2.7:p216:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ntp:ntp:4.2.7:p216",
- "wfn": {
- "Part": "a",
- "Vendor": "ntp",
- "Product": "ntp",
- "Version": "4.2.7",
- "Update": "p216",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:xeon_w-2133:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:xeon_w-2133:-",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "xeon_w-2133",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxfoundation:fabric:1.4.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxfoundation:fabric:1.4.8",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxfoundation",
- "Product": "fabric",
- "Version": "1.4.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pixar:openusd:18.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pixar:openusd:18.11",
- "wfn": {
- "Part": "a",
- "Vendor": "pixar",
- "Product": "openusd",
- "Version": "18.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ays-pro:quiz_maker:5.4.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ays-pro:quiz_maker:5.4.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ays-pro",
- "Product": "quiz_maker",
- "Version": "5.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpfastestcache:wp_fastest_cache:0.7.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpfastestcache:wp_fastest_cache:0.7.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpfastestcache",
- "Product": "wp_fastest_cache",
- "Version": "0.7.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:unified_computing_system_central_software:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:unified_computing_system_central_software:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "unified_computing_system_central_software",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nttdocomo:spmode_mail_android:5000:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nttdocomo:spmode_mail_android:5000",
- "wfn": {
- "Part": "a",
- "Vendor": "nttdocomo",
- "Product": "spmode_mail_android",
- "Version": "5000",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:swi-prolog:swi-prolog:7.1.32:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:swi-prolog:swi-prolog:7.1.32",
- "wfn": {
- "Part": "a",
- "Vendor": "swi-prolog",
- "Product": "swi-prolog",
- "Version": "7.1.32",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:facebook:react:16.7.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:facebook:react:16.7.0",
- "wfn": {
- "Part": "a",
- "Vendor": "facebook",
- "Product": "react",
- "Version": "16.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:intel:xeon_e3:x3480:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:intel:xeon_e3:x3480",
- "wfn": {
- "Part": "h",
- "Vendor": "intel",
- "Product": "xeon_e3",
- "Version": "x3480",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vips:vips:7.11.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vips:vips:7.11.2",
- "wfn": {
- "Part": "a",
- "Vendor": "vips",
- "Product": "vips",
- "Version": "7.11.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libpng:libpng:1.6.17:beta01:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libpng:libpng:1.6.17:beta01",
- "wfn": {
- "Part": "a",
- "Vendor": "libpng",
- "Product": "libpng",
- "Version": "1.6.17",
- "Update": "beta01",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:smartbear:swagger-ui:3.6.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:smartbear:swagger-ui:3.6.1",
- "wfn": {
- "Part": "a",
- "Vendor": "smartbear",
- "Product": "swagger-ui",
- "Version": "3.6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:1up:oneupuploaderbundle:0.9.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:1up:oneupuploaderbundle:0.9.9",
- "wfn": {
- "Part": "a",
- "Vendor": "1up",
- "Product": "oneupuploaderbundle",
- "Version": "0.9.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:lenovo:v310-15isk:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:lenovo:v310-15isk:-",
- "wfn": {
- "Part": "h",
- "Vendor": "lenovo",
- "Product": "v310-15isk",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mozilla:thunderbird:3.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mozilla:thunderbird:3.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "mozilla",
- "Product": "thunderbird",
- "Version": "3.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wp-dbmanager_project:wp-dbmanager:2.79:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wp-dbmanager_project:wp-dbmanager:2.79::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wp-dbmanager_project",
- "Product": "wp-dbmanager",
- "Version": "2.79",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apereo:opencast:1.4.2:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apereo:opencast:1.4.2:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "apereo",
- "Product": "opencast",
- "Version": "1.4.2",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nette:latte:2.6.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nette:latte:2.6.3",
- "wfn": {
- "Part": "a",
- "Vendor": "nette",
- "Product": "latte",
- "Version": "2.6.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:docker:engine:17.03.2:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:docker:engine:17.03.2:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "docker",
- "Product": "engine",
- "Version": "17.03.2",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudflare:octopki:1.1.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudflare:octopki:1.1.3",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudflare",
- "Product": "octopki",
- "Version": "1.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bestit:amazon_pay:7.0.1:*:*:*:*:shopware:*:*",
- "cpe-url": "cpe:/a:bestit:amazon_pay:7.0.1::~~~shopware~~",
- "wfn": {
- "Part": "a",
- "Vendor": "bestit",
- "Product": "amazon_pay",
- "Version": "7.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "shopware",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:otrs:otrs:3.0.0:beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:otrs:otrs:3.0.0:beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "otrs",
- "Product": "otrs",
- "Version": "3.0.0",
- "Update": "beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libaacplus_project:libaacplus:1.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libaacplus_project:libaacplus:1.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "libaacplus_project",
- "Product": "libaacplus",
- "Version": "1.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ammonia_project:ammonia:2.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ammonia_project:ammonia:2.0.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ammonia_project",
- "Product": "ammonia",
- "Version": "2.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:transloadit:uppy:0.28.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:transloadit:uppy:0.28.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "transloadit",
- "Product": "uppy",
- "Version": "0.28.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mit:kerberos:5-1.14:alpha1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mit:kerberos:5-1.14:alpha1",
- "wfn": {
- "Part": "a",
- "Vendor": "mit",
- "Product": "kerberos",
- "Version": "5-1.14",
- "Update": "alpha1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:libvirt:0.4.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:libvirt:0.4.0",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "libvirt",
- "Version": "0.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:itextpdf:itext:1.3.5:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:itextpdf:itext:1.3.5",
- "wfn": {
- "Part": "a",
- "Vendor": "itextpdf",
- "Product": "itext",
- "Version": "1.3.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:strapi:strapi:3.0.0:beta15:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:strapi:strapi:3.0.0:beta15",
- "wfn": {
- "Part": "a",
- "Vendor": "strapi",
- "Product": "strapi",
- "Version": "3.0.0",
- "Update": "beta15",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:microsoft:windows_server_2008:-:sp2:hpc:*:*:*:*:*",
- "cpe-url": "cpe:/o:microsoft:windows_server_2008:-:sp2:hpc",
- "wfn": {
- "Part": "o",
- "Vendor": "microsoft",
- "Product": "windows_server_2008",
- "Version": "-",
- "Update": "sp2",
- "Edition": "hpc",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:slf4j:slf4j-api:1.7.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:slf4j:slf4j-api:1.7.4",
- "wfn": {
- "Part": "a",
- "Vendor": "slf4j",
- "Product": "slf4j-api",
- "Version": "1.7.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oracle:e-business_suite_technology_stack:12.1.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oracle:e-business_suite_technology_stack:12.1.3",
- "wfn": {
- "Part": "a",
- "Vendor": "oracle",
- "Product": "e-business_suite_technology_stack",
- "Version": "12.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:webfactoryltd:wp_reset_pro:5.81:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:webfactoryltd:wp_reset_pro:5.81::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "webfactoryltd",
- "Product": "wp_reset_pro",
- "Version": "5.81",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:docsifyjs:docsify:1.7.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:docsifyjs:docsify:1.7.2",
- "wfn": {
- "Part": "a",
- "Vendor": "docsifyjs",
- "Product": "docsify",
- "Version": "1.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:hp:envy_photo_7800_k7s00a_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:hp:envy_photo_7800_k7s00a_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "hp",
- "Product": "envy_photo_7800_k7s00a_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zoom:zoom:4.4.55387.0716:*:*:*:*:mac_os:*:*",
- "cpe-url": "cpe:/a:zoom:zoom:4.4.55387.0716::~~~mac_os~~",
- "wfn": {
- "Part": "a",
- "Vendor": "zoom",
- "Product": "zoom",
- "Version": "4.4.55387.0716",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "mac_os",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wesnoth:the_battle_for_wesnoth:0.8.5:rc5:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wesnoth:the_battle_for_wesnoth:0.8.5:rc5",
- "wfn": {
- "Part": "a",
- "Vendor": "wesnoth",
- "Product": "the_battle_for_wesnoth",
- "Version": "0.8.5",
- "Update": "rc5",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:fortinet:fortios:6.0.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:fortinet:fortios:6.0.3",
- "wfn": {
- "Part": "o",
- "Vendor": "fortinet",
- "Product": "fortios",
- "Version": "6.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:processing:processing:2.0:beta4:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:processing:processing:2.0:beta4",
- "wfn": {
- "Part": "a",
- "Vendor": "processing",
- "Product": "processing",
- "Version": "2.0",
- "Update": "beta4",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:epson:px-m7050fp_firmware:2017-10-13:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:epson:px-m7050fp_firmware:2017-10-13",
- "wfn": {
- "Part": "o",
- "Vendor": "epson",
- "Product": "px-m7050fp_firmware",
- "Version": "2017-10-13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ntp:ntp:4.2.8:p1_beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ntp:ntp:4.2.8:p1_beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "ntp",
- "Product": "ntp",
- "Version": "4.2.8",
- "Update": "p1_beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:easycorp:zentao:13.0:beta4:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:easycorp:zentao:13.0:beta4",
- "wfn": {
- "Part": "a",
- "Vendor": "easycorp",
- "Product": "zentao",
- "Version": "13.0",
- "Update": "beta4",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:git-annex_project:git-annex:6.20160229:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:git-annex_project:git-annex:6.20160229",
- "wfn": {
- "Part": "a",
- "Vendor": "git-annex_project",
- "Product": "git-annex",
- "Version": "6.20160229",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:delivery_pipeline:0.7.5:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:delivery_pipeline:0.7.5::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "delivery_pipeline",
- "Version": "0.7.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hp:c4100_help:70.0.231.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hp:c4100_help:70.0.231.0",
- "wfn": {
- "Part": "a",
- "Vendor": "hp",
- "Product": "c4100_help",
- "Version": "70.0.231.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apple:cups:1.5.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apple:cups:1.5.4",
- "wfn": {
- "Part": "a",
- "Vendor": "apple",
- "Product": "cups",
- "Version": "1.5.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:google_compute_engine:1.0.7:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:google_compute_engine:1.0.7::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "google_compute_engine",
- "Version": "1.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:support-project:knowledge:1.6.0:pre4:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:support-project:knowledge:1.6.0:pre4",
- "wfn": {
- "Part": "a",
- "Vendor": "support-project",
- "Product": "knowledge",
- "Version": "1.6.0",
- "Update": "pre4",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gitlab:gitlab:13.6.1:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:gitlab:gitlab:13.6.1::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gitlab",
- "Product": "gitlab",
- "Version": "13.6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openmage:magento:1.9.1.1:*:*:*:lts:*:*:*",
- "cpe-url": "cpe:/a:openmage:magento:1.9.1.1::~~lts~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "openmage",
- "Product": "magento",
- "Version": "1.9.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "lts",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:socket:engine.io-client:1.8.2:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:socket:engine.io-client:1.8.2::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "socket",
- "Product": "engine.io-client",
- "Version": "1.8.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:b2evolution:b2evolution_cms:6.5.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:b2evolution:b2evolution_cms:6.5.0",
- "wfn": {
- "Part": "a",
- "Vendor": "b2evolution",
- "Product": "b2evolution_cms",
- "Version": "6.5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:linuxfoundation:harbor:2.1.0:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:linuxfoundation:harbor:2.1.0:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "linuxfoundation",
- "Product": "harbor",
- "Version": "2.1.0",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wekan_project:wekan:3.76:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wekan_project:wekan:3.76",
- "wfn": {
- "Part": "a",
- "Vendor": "wekan_project",
- "Product": "wekan",
- "Version": "3.76",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:novell:edirectory:8.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:novell:edirectory:8.0",
- "wfn": {
- "Part": "a",
- "Vendor": "novell",
- "Product": "edirectory",
- "Version": "8.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnu:emacs:19.31:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnu:emacs:19.31",
- "wfn": {
- "Part": "a",
- "Vendor": "gnu",
- "Product": "emacs",
- "Version": "19.31",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vips:vips:7.7.14:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vips:vips:7.7.14",
- "wfn": {
- "Part": "a",
- "Vendor": "vips",
- "Product": "vips",
- "Version": "7.7.14",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:hp:cq183a_firmware:1828b:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:hp:cq183a_firmware:1828b",
- "wfn": {
- "Part": "o",
- "Vendor": "hp",
- "Product": "cq183a_firmware",
- "Version": "1828b",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:editor-core:118.0.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:atlassian:editor-core:118.0.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "editor-core",
- "Version": "118.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:lilypond:lilypond:2.19.44:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:lilypond:lilypond:2.19.44",
- "wfn": {
- "Part": "a",
- "Vendor": "lilypond",
- "Product": "lilypond",
- "Version": "2.19.44",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openstack:tripleo_heat_templates:6.2.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openstack:tripleo_heat_templates:6.2.9",
- "wfn": {
- "Part": "a",
- "Vendor": "openstack",
- "Product": "tripleo_heat_templates",
- "Version": "6.2.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oracle:fusion_middleware:11.1.1.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oracle:fusion_middleware:11.1.1.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "oracle",
- "Product": "fusion_middleware",
- "Version": "11.1.1.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tripleplay:onelan_cms:2.0.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tripleplay:onelan_cms:2.0.3",
- "wfn": {
- "Part": "a",
- "Vendor": "tripleplay",
- "Product": "onelan_cms",
- "Version": "2.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:portainer:portainer:1.15.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:portainer:portainer:1.15.0",
- "wfn": {
- "Part": "a",
- "Vendor": "portainer",
- "Product": "portainer",
- "Version": "1.15.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:firefly-iii:firefly_iii:5.2.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:firefly-iii:firefly_iii:5.2.3",
- "wfn": {
- "Part": "a",
- "Vendor": "firefly-iii",
- "Product": "firefly_iii",
- "Version": "5.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:getkirby:kirby:2.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:getkirby:kirby:2.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "getkirby",
- "Product": "kirby",
- "Version": "2.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:auth0:auth0.js:9.3.2:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:auth0:auth0.js:9.3.2::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "auth0",
- "Product": "auth0.js",
- "Version": "9.3.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:spring_integration:4.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:spring_integration:4.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "spring_integration",
- "Version": "4.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:btcpayserver:btcpayserver:1.0.1.38:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:btcpayserver:btcpayserver:1.0.1.38",
- "wfn": {
- "Part": "a",
- "Vendor": "btcpayserver",
- "Product": "btcpayserver",
- "Version": "1.0.1.38",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:octobercms:october:1.0.73:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:octobercms:october:1.0.73",
- "wfn": {
- "Part": "a",
- "Vendor": "octobercms",
- "Product": "october",
- "Version": "1.0.73",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ceph:ceph-ansible:4.0.34.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ceph:ceph-ansible:4.0.34.2",
- "wfn": {
- "Part": "a",
- "Vendor": "ceph",
- "Product": "ceph-ansible",
- "Version": "4.0.34.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:cisco:asr_920-12sz-im_r:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:cisco:asr_920-12sz-im_r:-",
- "wfn": {
- "Part": "h",
- "Vendor": "cisco",
- "Product": "asr_920-12sz-im_r",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apple:quicktime:7.3.0:-:mac:*:*:*:*:*",
- "cpe-url": "cpe:/a:apple:quicktime:7.3.0:-:mac",
- "wfn": {
- "Part": "a",
- "Vendor": "apple",
- "Product": "quicktime",
- "Version": "7.3.0",
- "Update": "-",
- "Edition": "mac",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openpgpjs:openpgpjs:3.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openpgpjs:openpgpjs:3.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "openpgpjs",
- "Product": "openpgpjs",
- "Version": "3.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:electronjs:electron:11.0.0:beta15:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:electronjs:electron:11.0.0:beta15",
- "wfn": {
- "Part": "a",
- "Vendor": "electronjs",
- "Product": "electron",
- "Version": "11.0.0",
- "Update": "beta15",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:invensys:wonderware_application_server:2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:invensys:wonderware_application_server:2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "invensys",
- "Product": "wonderware_application_server",
- "Version": "2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:contest_gallery:contest_gallery:1.18:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:contest_gallery:contest_gallery:1.18::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "contest_gallery",
- "Product": "contest_gallery",
- "Version": "1.18",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pajbot_project:pajbot:1.49:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pajbot_project:pajbot:1.49",
- "wfn": {
- "Part": "a",
- "Vendor": "pajbot_project",
- "Product": "pajbot",
- "Version": "1.49",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:iobroker:iobroker.admin:3.5.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:iobroker:iobroker.admin:3.5.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "iobroker",
- "Product": "iobroker.admin",
- "Version": "3.5.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:maximo_for_oil_and_gas:7.5.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:maximo_for_oil_and_gas:7.5.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "maximo_for_oil_and_gas",
- "Version": "7.5.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:firepower_management_center_firmware:6.0.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:firepower_management_center_firmware:6.0.0.0",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "firepower_management_center_firmware",
- "Version": "6.0.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adobe:acrobat_reader_dc:15.000.0000:*:*:*:classic:*:*:*",
- "cpe-url": "cpe:/a:adobe:acrobat_reader_dc:15.000.0000::~~classic~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "adobe",
- "Product": "acrobat_reader_dc",
- "Version": "15.000.0000",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "classic",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:node-postgres:pg:0.10.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:node-postgres:pg:0.10.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "node-postgres",
- "Product": "pg",
- "Version": "0.10.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:infolific:real-time_find_and_replace:4.0.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:infolific:real-time_find_and_replace:4.0.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "infolific",
- "Product": "real-time_find_and_replace",
- "Version": "4.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:asyncos:11.1:hot_patch2:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:asyncos:11.1:hot_patch2",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "asyncos",
- "Version": "11.1",
- "Update": "hot_patch2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:nx-os:7.0\\(3\\)i3\\(0.170\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:nx-os:7.0%283%29i3%280.170%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "nx-os",
- "Version": "7.0(3)i3(0.170)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:skype:skype:3.0.0.198:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:skype:skype:3.0.0.198",
- "wfn": {
- "Part": "a",
- "Vendor": "skype",
- "Product": "skype",
- "Version": "3.0.0.198",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:gui:7.70:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:gui:7.70:-",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "gui",
- "Version": "7.70",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:0231a65t:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:0231a65t:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "0231a65t",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:progress:mixlib-archive:1.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:progress:mixlib-archive:1.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "progress",
- "Product": "mixlib-archive",
- "Version": "1.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tuxfamily:chrony:1.28:pre1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tuxfamily:chrony:1.28:pre1",
- "wfn": {
- "Part": "a",
- "Vendor": "tuxfamily",
- "Product": "chrony",
- "Version": "1.28",
- "Update": "pre1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:custom_search_project:custom_search:6.x-1.10:*:*:*:*:drupal:*:*",
- "cpe-url": "cpe:/a:custom_search_project:custom_search:6.x-1.10::~~~drupal~~",
- "wfn": {
- "Part": "a",
- "Vendor": "custom_search_project",
- "Product": "custom_search",
- "Version": "6.x-1.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "drupal",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dpl:product_feed_on_woocommerce_for_google\\,_awin\\,_shareasale\\,_bing\\,_and_more:3.5.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:dpl:product_feed_on_woocommerce_for_google%2c_awin%2c_shareasale%2c_bing%2c_and_more:3.5.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "dpl",
- "Product": "product_feed_on_woocommerce_for_google,_awin,_shareasale,_bing,_and_more",
- "Version": "3.5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:pureapplication_system:2.1.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:pureapplication_system:2.1.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "pureapplication_system",
- "Version": "2.1.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:traefik:traefik:2.3.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:traefik:traefik:2.3.4",
- "wfn": {
- "Part": "a",
- "Vendor": "traefik",
- "Product": "traefik",
- "Version": "2.3.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.3.662:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.3.662",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.3.662",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:i-doit:i-doit:1.10.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:i-doit:i-doit:1.10.2",
- "wfn": {
- "Part": "a",
- "Vendor": "i-doit",
- "Product": "i-doit",
- "Version": "1.10.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:supsystic:photo_gallery:1.2.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:supsystic:photo_gallery:1.2.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "supsystic",
- "Product": "photo_gallery",
- "Version": "1.2.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:elastic:kibana:1.0.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:elastic:kibana:1.0.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "elastic",
- "Product": "kibana",
- "Version": "1.0.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tgstation13:tgstation-server:4.0.1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tgstation13:tgstation-server:4.0.1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "tgstation13",
- "Product": "tgstation-server",
- "Version": "4.0.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:2checkout:ithemes_2checkout:-:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:2checkout:ithemes_2checkout:-::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "2checkout",
- "Product": "ithemes_2checkout",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dbd-mysql_project:dbd-mysql:4.022:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:dbd-mysql_project:dbd-mysql:4.022",
- "wfn": {
- "Part": "a",
- "Vendor": "dbd-mysql_project",
- "Product": "dbd-mysql",
- "Version": "4.022",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jruby:jruby:1.5.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jruby:jruby:1.5.6",
- "wfn": {
- "Part": "a",
- "Vendor": "jruby",
- "Product": "jruby",
- "Version": "1.5.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:alchemy-cms:alchemy_cms:3.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:alchemy-cms:alchemy_cms:3.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "alchemy-cms",
- "Product": "alchemy_cms",
- "Version": "3.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rankmath:seo:1.0.9:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:rankmath:seo:1.0.9::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "rankmath",
- "Product": "seo",
- "Version": "1.0.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:media_library_assistant_project:media_library_assistant:2.54:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:media_library_assistant_project:media_library_assistant:2.54::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "media_library_assistant_project",
- "Product": "media_library_assistant",
- "Version": "2.54",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:theforeman:katello:0.1.209-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:theforeman:katello:0.1.209-1",
- "wfn": {
- "Part": "a",
- "Vendor": "theforeman",
- "Product": "katello",
- "Version": "0.1.209-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fancybox_project:fancybox:3.0.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:fancybox_project:fancybox:3.0.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "fancybox_project",
- "Product": "fancybox",
- "Version": "3.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wp_domain_redirect_project:wp_domain_redirect:1.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wp_domain_redirect_project:wp_domain_redirect:1.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wp_domain_redirect_project",
- "Product": "wp_domain_redirect",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:xen-orchestra:xen_orchestra_server:5.10.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:xen-orchestra:xen_orchestra_server:5.10.2",
- "wfn": {
- "Part": "a",
- "Vendor": "xen-orchestra",
- "Product": "xen_orchestra_server",
- "Version": "5.10.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:databaseschemaviewer_project:dbschemareader:2.7.4.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:databaseschemaviewer_project:dbschemareader:2.7.4.3",
- "wfn": {
- "Part": "a",
- "Vendor": "databaseschemaviewer_project",
- "Product": "dbschemareader",
- "Version": "2.7.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:intel:converged_security_and_manageability_engine:11.22.86:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:intel:converged_security_and_manageability_engine:11.22.86",
- "wfn": {
- "Part": "a",
- "Vendor": "intel",
- "Product": "converged_security_and_manageability_engine",
- "Version": "11.22.86",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fujitsu:interstage_application_server:9.1.0:*:*:*:enterprise:*:*:*",
- "cpe-url": "cpe:/a:fujitsu:interstage_application_server:9.1.0::~~enterprise~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "fujitsu",
- "Product": "interstage_application_server",
- "Version": "9.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "enterprise",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libinfinity_project:libinfinity:0.5.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libinfinity_project:libinfinity:0.5.2",
- "wfn": {
- "Part": "a",
- "Vendor": "libinfinity_project",
- "Product": "libinfinity",
- "Version": "0.5.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:macpaw:cleanmymac_x:3.8.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:macpaw:cleanmymac_x:3.8.3",
- "wfn": {
- "Part": "a",
- "Vendor": "macpaw",
- "Product": "cleanmymac_x",
- "Version": "3.8.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pacman_project:pacman:3.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pacman_project:pacman:3.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "pacman_project",
- "Product": "pacman",
- "Version": "3.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:tensorflow:2.1.0:-:*:*:lite:*:*:*",
- "cpe-url": "cpe:/a:google:tensorflow:2.1.0:-:~~lite~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "tensorflow",
- "Version": "2.1.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "lite",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apple:apple_application_support:1.4.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apple:apple_application_support:1.4.1",
- "wfn": {
- "Part": "a",
- "Vendor": "apple",
- "Product": "apple_application_support",
- "Version": "1.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:schneider-electric:bmep582040s_firmware:2.90:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:schneider-electric:bmep582040s_firmware:2.90",
- "wfn": {
- "Part": "o",
- "Vendor": "schneider-electric",
- "Product": "bmep582040s_firmware",
- "Version": "2.90",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:morequick:greenbrowser:6.1.0117:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:morequick:greenbrowser:6.1.0117",
- "wfn": {
- "Part": "a",
- "Vendor": "morequick",
- "Product": "greenbrowser",
- "Version": "6.1.0117",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:freebsd:freebsd:9.3:p43:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:freebsd:freebsd:9.3:p43",
- "wfn": {
- "Part": "a",
- "Vendor": "freebsd",
- "Product": "freebsd",
- "Version": "9.3",
- "Update": "p43",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:yamaha:rtv700:8.00.81:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:yamaha:rtv700:8.00.81",
- "wfn": {
- "Part": "o",
- "Vendor": "yamaha",
- "Product": "rtv700",
- "Version": "8.00.81",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:trihedral:vtscada:11.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:trihedral:vtscada:11.2",
- "wfn": {
- "Part": "a",
- "Vendor": "trihedral",
- "Product": "vtscada",
- "Version": "11.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnome:gtk:0.99.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnome:gtk:0.99.3",
- "wfn": {
- "Part": "a",
- "Vendor": "gnome",
- "Product": "gtk",
- "Version": "0.99.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:qpdf_project:qpdf:2.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:qpdf_project:qpdf:2.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "qpdf_project",
- "Product": "qpdf",
- "Version": "2.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:klibc_project:klibc:0.121:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:klibc_project:klibc:0.121",
- "wfn": {
- "Part": "a",
- "Vendor": "klibc_project",
- "Product": "klibc",
- "Version": "0.121",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kunena:kunena:4.0.4:*:*:*:*:joomla\\!:*:*",
- "cpe-url": "cpe:/a:kunena:kunena:4.0.4::~~~joomla%21~~",
- "wfn": {
- "Part": "a",
- "Vendor": "kunena",
- "Product": "kunena",
- "Version": "4.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "joomla!",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:tp-link:tl-wr840n_firmware:3.13.27:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:tp-link:tl-wr840n_firmware:3.13.27",
- "wfn": {
- "Part": "o",
- "Vendor": "tp-link",
- "Product": "tl-wr840n_firmware",
- "Version": "3.13.27",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:slf4j:slf4j-jdk14:1.6.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:slf4j:slf4j-jdk14:1.6.2",
- "wfn": {
- "Part": "a",
- "Vendor": "slf4j",
- "Product": "slf4j-jdk14",
- "Version": "1.6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nextscripts:social_networks_auto_poster:4.2.0:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:nextscripts:social_networks_auto_poster:4.2.0::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "nextscripts",
- "Product": "social_networks_auto_poster",
- "Version": "4.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:koha:koha:16.05.03:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:koha:koha:16.05.03",
- "wfn": {
- "Part": "a",
- "Vendor": "koha",
- "Product": "koha",
- "Version": "16.05.03",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:opennms:opennms:25.2.1-1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:opennms:opennms:25.2.1-1",
- "wfn": {
- "Part": "a",
- "Vendor": "opennms",
- "Product": "opennms",
- "Version": "25.2.1-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:formidableforms:formidable:3.03.01:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:formidableforms:formidable:3.03.01::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "formidableforms",
- "Product": "formidable",
- "Version": "3.03.01",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:lftp_project:lftp:2.4.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:lftp_project:lftp:2.4.2",
- "wfn": {
- "Part": "a",
- "Vendor": "lftp_project",
- "Product": "lftp",
- "Version": "2.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:bitcoin:bitcoin:0.13.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:bitcoin:bitcoin:0.13.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "bitcoin",
- "Product": "bitcoin",
- "Version": "0.13.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:groovy:3.0.0:alpha1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:groovy:3.0.0:alpha1",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "groovy",
- "Version": "3.0.0",
- "Update": "alpha1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phoenix_media_rename_project:phoenix_media_rename:2.0.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:phoenix_media_rename_project:phoenix_media_rename:2.0.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "phoenix_media_rename_project",
- "Product": "phoenix_media_rename",
- "Version": "2.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pivotal_software:operations_manager:1.12.20:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pivotal_software:operations_manager:1.12.20",
- "wfn": {
- "Part": "a",
- "Vendor": "pivotal_software",
- "Product": "operations_manager",
- "Version": "1.12.20",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phpcheckz:phpcheckz:0.4.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:phpcheckz:phpcheckz:0.4.2",
- "wfn": {
- "Part": "a",
- "Vendor": "phpcheckz",
- "Product": "phpcheckz",
- "Version": "0.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudfoundry:credhub:1.9.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudfoundry:credhub:1.9.10",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudfoundry",
- "Product": "credhub",
- "Version": "1.9.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gleamtech:filevista:5.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gleamtech:filevista:5.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "gleamtech",
- "Product": "filevista",
- "Version": "5.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openvcloud_project:openvcloud:2.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openvcloud_project:openvcloud:2.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "openvcloud_project",
- "Product": "openvcloud",
- "Version": "2.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpseeds:wp_database_backup:5.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpseeds:wp_database_backup:5.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpseeds",
- "Product": "wp_database_backup",
- "Version": "5.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:owasp:owasp_modsecurity_core_rule_set:3.0.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:owasp:owasp_modsecurity_core_rule_set:3.0.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "owasp",
- "Product": "owasp_modsecurity_core_rule_set",
- "Version": "3.0.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:four_kitchens:block_class:7.x-2.x:dev:*:*:*:drupal:*:*",
- "cpe-url": "cpe:/a:four_kitchens:block_class:7.x-2.x:dev:~~~drupal~~",
- "wfn": {
- "Part": "a",
- "Vendor": "four_kitchens",
- "Product": "block_class",
- "Version": "7.x-2.x",
- "Update": "dev",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "drupal",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mediacoderhq:mediacoder:0.8.5800:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mediacoderhq:mediacoder:0.8.5800",
- "wfn": {
- "Part": "a",
- "Vendor": "mediacoderhq",
- "Product": "mediacoder",
- "Version": "0.8.5800",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:minimagick_project:minimagick:4.7.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:minimagick_project:minimagick:4.7.0",
- "wfn": {
- "Part": "a",
- "Vendor": "minimagick_project",
- "Product": "minimagick",
- "Version": "4.7.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phpmyadmin:phpmyadmin:4.1.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:phpmyadmin:phpmyadmin:4.1.7",
- "wfn": {
- "Part": "a",
- "Vendor": "phpmyadmin",
- "Product": "phpmyadmin",
- "Version": "4.1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:logitech:harmony_hub:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:logitech:harmony_hub:-",
- "wfn": {
- "Part": "h",
- "Vendor": "logitech",
- "Product": "harmony_hub",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:ecessa:shieldlink_sl175ehq_firmware:8.0.19:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:ecessa:shieldlink_sl175ehq_firmware:8.0.19",
- "wfn": {
- "Part": "o",
- "Vendor": "ecessa",
- "Product": "shieldlink_sl175ehq_firmware",
- "Version": "8.0.19",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:octopus:octopus_deploy:2018.12.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:octopus:octopus_deploy:2018.12.1",
- "wfn": {
- "Part": "a",
- "Vendor": "octopus",
- "Product": "octopus_deploy",
- "Version": "2018.12.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:alpinelinux:abuild:2.27.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:alpinelinux:abuild:2.27.0",
- "wfn": {
- "Part": "a",
- "Vendor": "alpinelinux",
- "Product": "abuild",
- "Version": "2.27.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:amazon:freertos:1.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:amazon:freertos:1.2.0",
- "wfn": {
- "Part": "o",
- "Vendor": "amazon",
- "Product": "freertos",
- "Version": "1.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:microsoft:systems_management_server:1.2:sp3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:microsoft:systems_management_server:1.2:sp3",
- "wfn": {
- "Part": "a",
- "Vendor": "microsoft",
- "Product": "systems_management_server",
- "Version": "1.2",
- "Update": "sp3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netty:netty:4.1.15:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netty:netty:4.1.15",
- "wfn": {
- "Part": "a",
- "Vendor": "netty",
- "Product": "netty",
- "Version": "4.1.15",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ntp:ntp:4.0.97:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ntp:ntp:4.0.97",
- "wfn": {
- "Part": "a",
- "Vendor": "ntp",
- "Product": "ntp",
- "Version": "4.0.97",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:spss_statistics:24.0.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:spss_statistics:24.0.0.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "spss_statistics",
- "Version": "24.0.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fenrir-inc:sleipnir_mobile:2.1.0:*:*:*:-:android:*:*",
- "cpe-url": "cpe:/a:fenrir-inc:sleipnir_mobile:2.1.0::~~-~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "fenrir-inc",
- "Product": "sleipnir_mobile",
- "Version": "2.1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:phoenixcontact:fl_switch_4008t-2gt-3fx_sm_firmware:1.21:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:phoenixcontact:fl_switch_4008t-2gt-3fx_sm_firmware:1.21",
- "wfn": {
- "Part": "o",
- "Vendor": "phoenixcontact",
- "Product": "fl_switch_4008t-2gt-3fx_sm_firmware",
- "Version": "1.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wp_svg_icons_project:wp_svg_icons:3.1.8.4:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wp_svg_icons_project:wp_svg_icons:3.1.8.4::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wp_svg_icons_project",
- "Product": "wp_svg_icons",
- "Version": "3.1.8.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:facebook:hiphop_virtual_machine:3.13.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:facebook:hiphop_virtual_machine:3.13.0",
- "wfn": {
- "Part": "a",
- "Vendor": "facebook",
- "Product": "hiphop_virtual_machine",
- "Version": "3.13.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jetbrains:kotlin:1.4.0:dev458:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:jetbrains:kotlin:1.4.0:dev458",
- "wfn": {
- "Part": "a",
- "Vendor": "jetbrains",
- "Product": "kotlin",
- "Version": "1.4.0",
- "Update": "dev458",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:linux:linux_kernel:2.6.13.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:linux:linux_kernel:2.6.13.2",
- "wfn": {
- "Part": "o",
- "Vendor": "linux",
- "Product": "linux_kernel",
- "Version": "2.6.13.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:chef:chef:14.0.217:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:chef:chef:14.0.217",
- "wfn": {
- "Part": "a",
- "Vendor": "chef",
- "Product": "chef",
- "Version": "14.0.217",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:get-simple:getsimple_cms:3.3.14:b1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:get-simple:getsimple_cms:3.3.14:b1",
- "wfn": {
- "Part": "a",
- "Vendor": "get-simple",
- "Product": "getsimple_cms",
- "Version": "3.3.14",
- "Update": "b1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tcl:tcl:8.4.16:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tcl:tcl:8.4.16",
- "wfn": {
- "Part": "a",
- "Vendor": "tcl",
- "Product": "tcl",
- "Version": "8.4.16",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gogs:gogs:0.6.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gogs:gogs:0.6.9",
- "wfn": {
- "Part": "a",
- "Vendor": "gogs",
- "Product": "gogs",
- "Version": "0.6.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:postsrsd_prject:postsrsd:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:postsrsd_prject:postsrsd:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "postsrsd_prject",
- "Product": "postsrsd",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:axis:c8033_firmware:1.81.040.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:axis:c8033_firmware:1.81.040.1",
- "wfn": {
- "Part": "o",
- "Vendor": "axis",
- "Product": "c8033_firmware",
- "Version": "1.81.040.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:huawei:mate_10_pro_firmware:bla-l29_8.0.0.148\\(c432\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:huawei:mate_10_pro_firmware:bla-l29_8.0.0.148%28c432%29",
- "wfn": {
- "Part": "o",
- "Vendor": "huawei",
- "Product": "mate_10_pro_firmware",
- "Version": "bla-l29_8.0.0.148(c432)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:netsarang:xshell:7:build_0065:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:netsarang:xshell:7:build_0065",
- "wfn": {
- "Part": "a",
- "Vendor": "netsarang",
- "Product": "xshell",
- "Version": "7",
- "Update": "build_0065",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpdatatables:wpdatatables:2.0.16:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpdatatables:wpdatatables:2.0.16::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpdatatables",
- "Product": "wpdatatables",
- "Version": "2.0.16",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:clusterlabs:pacemaker:2.0.2:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:clusterlabs:pacemaker:2.0.2:-",
- "wfn": {
- "Part": "a",
- "Vendor": "clusterlabs",
- "Product": "pacemaker",
- "Version": "2.0.2",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:swi-prolog:swi-prolog:5.4.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:swi-prolog:swi-prolog:5.4.2",
- "wfn": {
- "Part": "a",
- "Vendor": "swi-prolog",
- "Product": "swi-prolog",
- "Version": "5.4.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wftpserver:wing_ftp_server:3.9.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wftpserver:wing_ftp_server:3.9.0",
- "wfn": {
- "Part": "a",
- "Vendor": "wftpserver",
- "Product": "wing_ftp_server",
- "Version": "3.9.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpplugin:accept_donations_with_paypal:1.2.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpplugin:accept_donations_with_paypal:1.2.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpplugin",
- "Product": "accept_donations_with_paypal",
- "Version": "1.2.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:abcm2ps_project:abcm2ps:8.14.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:abcm2ps_project:abcm2ps:8.14.3",
- "wfn": {
- "Part": "a",
- "Vendor": "abcm2ps_project",
- "Product": "abcm2ps",
- "Version": "8.14.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:episerver:ektron_cms:8.00:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:episerver:ektron_cms:8.00:-",
- "wfn": {
- "Part": "a",
- "Vendor": "episerver",
- "Product": "ektron_cms",
- "Version": "8.00",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:laserjet_managed_e85055_t3u51a:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:laserjet_managed_e85055_t3u51a:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "laserjet_managed_e85055_t3u51a",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wallabag:wallabag:2.0.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wallabag:wallabag:2.0.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "wallabag",
- "Product": "wallabag",
- "Version": "2.0.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:google:chrome:13.0.752.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:google:chrome:13.0.752.0",
- "wfn": {
- "Part": "a",
- "Vendor": "google",
- "Product": "chrome",
- "Version": "13.0.752.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:xeon_e5-2430_v2_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:xeon_e5-2430_v2_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "xeon_e5-2430_v2_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:url-parse_project:url-parse:1.4.3:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:url-parse_project:url-parse:1.4.3::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "url-parse_project",
- "Product": "url-parse",
- "Version": "1.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:crear.ne.jp:al-mail32:1.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:crear.ne.jp:al-mail32:1.11",
- "wfn": {
- "Part": "a",
- "Vendor": "crear.ne.jp",
- "Product": "al-mail32",
- "Version": "1.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:triplea-game:triplea:1.9.0.0.12537:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:triplea-game:triplea:1.9.0.0.12537",
- "wfn": {
- "Part": "a",
- "Vendor": "triplea-game",
- "Product": "triplea",
- "Version": "1.9.0.0.12537",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:yithemes:yith_woocommerce_request_a_quote:1.6.2:*:*:*:premium:wordpress:*:*",
- "cpe-url": "cpe:/a:yithemes:yith_woocommerce_request_a_quote:1.6.2::~~premium~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "yithemes",
- "Product": "yith_woocommerce_request_a_quote",
- "Version": "1.6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "premium",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:eucalyptus:eucalyptus:3.0.0:beta2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:eucalyptus:eucalyptus:3.0.0:beta2",
- "wfn": {
- "Part": "a",
- "Vendor": "eucalyptus",
- "Product": "eucalyptus",
- "Version": "3.0.0",
- "Update": "beta2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:strategy11:formidable_form_builder:4.0.03:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:strategy11:formidable_form_builder:4.0.03::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "strategy11",
- "Product": "formidable_form_builder",
- "Version": "4.0.03",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:dhcpcd_project:dhcpcd:6.9.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:dhcpcd_project:dhcpcd:6.9.1",
- "wfn": {
- "Part": "a",
- "Vendor": "dhcpcd_project",
- "Product": "dhcpcd",
- "Version": "6.9.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rocket.chat:rocket.chat:3.4.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rocket.chat:rocket.chat:3.4.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "rocket.chat",
- "Product": "rocket.chat",
- "Version": "3.4.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:fujitsu:m12-2_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:fujitsu:m12-2_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "fujitsu",
- "Product": "m12-2_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:hp:proliant_bl460c_firmware:2.20:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:hp:proliant_bl460c_firmware:2.20",
- "wfn": {
- "Part": "o",
- "Vendor": "hp",
- "Product": "proliant_bl460c_firmware",
- "Version": "2.20",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openjsf:express:4.11.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:openjsf:express:4.11.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "openjsf",
- "Product": "express",
- "Version": "4.11.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:huawei:usg2220bsr_firmware:v300r001c00:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:huawei:usg2220bsr_firmware:v300r001c00",
- "wfn": {
- "Part": "o",
- "Vendor": "huawei",
- "Product": "usg2220bsr_firmware",
- "Version": "v300r001c00",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:10web:photo_gallery:1.3.67:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:10web:photo_gallery:1.3.67::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "10web",
- "Product": "photo_gallery",
- "Version": "1.3.67",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:express-gateway:express-gateway_docker_image:1.16.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:express-gateway:express-gateway_docker_image:1.16.3",
- "wfn": {
- "Part": "a",
- "Vendor": "express-gateway",
- "Product": "express-gateway_docker_image",
- "Version": "1.16.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:zyxel:gs1900-24ep:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:zyxel:gs1900-24ep:-",
- "wfn": {
- "Part": "h",
- "Vendor": "zyxel",
- "Product": "gs1900-24ep",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:llvm:compiler:2.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:llvm:compiler:2.2",
- "wfn": {
- "Part": "a",
- "Vendor": "llvm",
- "Product": "compiler",
- "Version": "2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:qos:logback:0.9.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:qos:logback:0.9.2",
- "wfn": {
- "Part": "a",
- "Vendor": "qos",
- "Product": "logback",
- "Version": "0.9.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:openui5:1.63.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:openui5:1.63.0",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "openui5",
- "Version": "1.63.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sugarcrm:sugarcrm:6.5.8:*:*:*:community:*:*:*",
- "cpe-url": "cpe:/a:sugarcrm:sugarcrm:6.5.8::~~community~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "sugarcrm",
- "Product": "sugarcrm",
- "Version": "6.5.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "community",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wordpress:wordpress:4.1:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wordpress:wordpress:4.1:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "wordpress",
- "Product": "wordpress",
- "Version": "4.1",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:psutil_project:psutil:5.4.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:psutil_project:psutil:5.4.4",
- "wfn": {
- "Part": "a",
- "Vendor": "psutil_project",
- "Product": "psutil",
- "Version": "5.4.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adobe:flash_player:11.2.202.291:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:adobe:flash_player:11.2.202.291",
- "wfn": {
- "Part": "a",
- "Vendor": "adobe",
- "Product": "flash_player",
- "Version": "11.2.202.291",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:horde:kronolith:3.0.15:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:horde:kronolith:3.0.15",
- "wfn": {
- "Part": "a",
- "Vendor": "horde",
- "Product": "kronolith",
- "Version": "3.0.15",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gitlab:gitlab:9.4.0:*:*:*:-:*:*:*",
- "cpe-url": "cpe:/a:gitlab:gitlab:9.4.0::~~-~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "gitlab",
- "Product": "gitlab",
- "Version": "9.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:microsoft:windows_8:-:-:x86:*:*:*:*:*",
- "cpe-url": "cpe:/o:microsoft:windows_8:-:-:x86",
- "wfn": {
- "Part": "o",
- "Vendor": "microsoft",
- "Product": "windows_8",
- "Version": "-",
- "Update": "-",
- "Edition": "x86",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:emberjs:ember.js:3.11.0:beta1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:emberjs:ember.js:3.11.0:beta1",
- "wfn": {
- "Part": "a",
- "Vendor": "emberjs",
- "Product": "ember.js",
- "Version": "3.11.0",
- "Update": "beta1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.1587:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.1587",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.1587",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cloudera:cloudera_manager:5.13.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cloudera:cloudera_manager:5.13.4",
- "wfn": {
- "Part": "a",
- "Vendor": "cloudera",
- "Product": "cloudera_manager",
- "Version": "5.13.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:git-scm:git:1.5.5:rc3:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:git-scm:git:1.5.5:rc3",
- "wfn": {
- "Part": "a",
- "Vendor": "git-scm",
- "Product": "git",
- "Version": "1.5.5",
- "Update": "rc3",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:coder:code-server:3.9.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:coder:code-server:3.9.1",
- "wfn": {
- "Part": "a",
- "Vendor": "coder",
- "Product": "code-server",
- "Version": "3.9.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:piwik:piwik:0.2.19:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:piwik:piwik:0.2.19",
- "wfn": {
- "Part": "a",
- "Vendor": "piwik",
- "Product": "piwik",
- "Version": "0.2.19",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openconext:openconext_engineblock:3.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:openconext:openconext_engineblock:3.0.0",
- "wfn": {
- "Part": "a",
- "Vendor": "openconext",
- "Product": "openconext_engineblock",
- "Version": "3.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:isc:bind:9.8.0:p1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:isc:bind:9.8.0:p1",
- "wfn": {
- "Part": "a",
- "Vendor": "isc",
- "Product": "bind",
- "Version": "9.8.0",
- "Update": "p1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wordfence:wordfence_security:5.0.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wordfence:wordfence_security:5.0.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wordfence",
- "Product": "wordfence_security",
- "Version": "5.0.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:canon:eos_m5_firmware:1.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:canon:eos_m5_firmware:1.0.1",
- "wfn": {
- "Part": "o",
- "Vendor": "canon",
- "Product": "eos_m5_firmware",
- "Version": "1.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:dell:poweredge_r940xa_firmware:2.11.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:dell:poweredge_r940xa_firmware:2.11.2",
- "wfn": {
- "Part": "o",
- "Vendor": "dell",
- "Product": "poweredge_r940xa_firmware",
- "Version": "2.11.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:litespeedtech:litespeed_cache:1.0.9:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:litespeedtech:litespeed_cache:1.0.9::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "litespeedtech",
- "Product": "litespeed_cache",
- "Version": "1.0.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:koha:koha:3.20.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:koha:koha:3.20.11",
- "wfn": {
- "Part": "a",
- "Vendor": "koha",
- "Product": "koha",
- "Version": "3.20.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:elasticsearch:kibana:5.2.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:elasticsearch:kibana:5.2.2",
- "wfn": {
- "Part": "a",
- "Vendor": "elasticsearch",
- "Product": "kibana",
- "Version": "5.2.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:sony:nw-a47:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:sony:nw-a47:-",
- "wfn": {
- "Part": "h",
- "Vendor": "sony",
- "Product": "nw-a47",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:puma:puma:4.3.4:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:puma:puma:4.3.4::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "puma",
- "Product": "puma",
- "Version": "4.3.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:modx:revolution:2.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:modx:revolution:2.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "modx",
- "Product": "revolution",
- "Version": "2.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:denx:u-boot:2017.05:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:denx:u-boot:2017.05:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "denx",
- "Product": "u-boot",
- "Version": "2017.05",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:blubrry:powerpress:1.0.10:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:blubrry:powerpress:1.0.10::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "blubrry",
- "Product": "powerpress",
- "Version": "1.0.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:editor-core:72.1.13:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:atlassian:editor-core:72.1.13::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "editor-core",
- "Version": "72.1.13",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:silanis:approveit_desktop:7.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:silanis:approveit_desktop:7.3",
- "wfn": {
- "Part": "a",
- "Vendor": "silanis",
- "Product": "approveit_desktop",
- "Version": "7.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:telerik:ui_for_asp.net_core:2014.2.903:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:telerik:ui_for_asp.net_core:2014.2.903",
- "wfn": {
- "Part": "a",
- "Vendor": "telerik",
- "Product": "ui_for_asp.net_core",
- "Version": "2014.2.903",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:serve-here.js_project:serve-here.js:1.1.3:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:serve-here.js_project:serve-here.js:1.1.3::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "serve-here.js_project",
- "Product": "serve-here.js",
- "Version": "1.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ios:11.1\\(24c\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ios:11.1%2824c%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ios",
- "Version": "11.1(24c)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:netgear:jgs524pe:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:netgear:jgs524pe:-",
- "wfn": {
- "Part": "h",
- "Vendor": "netgear",
- "Product": "jgs524pe",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:facebook:nuclide:0.182.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:facebook:nuclide:0.182.0",
- "wfn": {
- "Part": "a",
- "Vendor": "facebook",
- "Product": "nuclide",
- "Version": "0.182.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:unified_customer_voice_portal:9.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:unified_customer_voice_portal:9.0",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "unified_customer_voice_portal",
- "Version": "9.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:ui5:1.52.28:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:ui5:1.52.28",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "ui5",
- "Version": "1.52.28",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:encs_5400_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:encs_5400_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "encs_5400_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:alpinelinux:aports:3.0.5:*:*:*:*:alpine:*:*",
- "cpe-url": "cpe:/a:alpinelinux:aports:3.0.5::~~~alpine~~",
- "wfn": {
- "Part": "a",
- "Vendor": "alpinelinux",
- "Product": "aports",
- "Version": "3.0.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "alpine",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:soliddb:6.3.53:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:soliddb:6.3.53",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "soliddb",
- "Version": "6.3.53",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:lenovo:yoga_530-14ikb_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:lenovo:yoga_530-14ikb_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "lenovo",
- "Product": "yoga_530-14ikb_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:red-gate:smartassembly:6.6.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:red-gate:smartassembly:6.6.3",
- "wfn": {
- "Part": "a",
- "Vendor": "red-gate",
- "Product": "smartassembly",
- "Version": "6.6.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:underscorejs:underscore:1.3.2:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:underscorejs:underscore:1.3.2::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "underscorejs",
- "Product": "underscore",
- "Version": "1.3.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wp-property-hive:propertyhive:1.4.10:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wp-property-hive:propertyhive:1.4.10::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wp-property-hive",
- "Product": "propertyhive",
- "Version": "1.4.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:socusoft:flash_slideshow_maker:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:socusoft:flash_slideshow_maker:-",
- "wfn": {
- "Part": "a",
- "Vendor": "socusoft",
- "Product": "flash_slideshow_maker",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rimarts:becky\\!_internet_mail:2.20.01:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rimarts:becky%21_internet_mail:2.20.01",
- "wfn": {
- "Part": "a",
- "Vendor": "rimarts",
- "Product": "becky!_internet_mail",
- "Version": "2.20.01",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:invoiceninja:invoice_ninja:2.3.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:invoiceninja:invoice_ninja:2.3.1",
- "wfn": {
- "Part": "a",
- "Vendor": "invoiceninja",
- "Product": "invoice_ninja",
- "Version": "2.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:cisco:telepresence_system_500-37:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:cisco:telepresence_system_500-37:-",
- "wfn": {
- "Part": "h",
- "Vendor": "cisco",
- "Product": "telepresence_system_500-37",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:autohotkey:autohotkey:1.1.30.00:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:autohotkey:autohotkey:1.1.30.00",
- "wfn": {
- "Part": "a",
- "Vendor": "autohotkey",
- "Product": "autohotkey",
- "Version": "1.1.30.00",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nih:ncbi_toolbox:2.2.26:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nih:ncbi_toolbox:2.2.26",
- "wfn": {
- "Part": "a",
- "Vendor": "nih",
- "Product": "ncbi_toolbox",
- "Version": "2.2.26",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:xnview:xnview:1.99:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:xnview:xnview:1.99",
- "wfn": {
- "Part": "a",
- "Vendor": "xnview",
- "Product": "xnview",
- "Version": "1.99",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kernel:util-linux:2.25:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kernel:util-linux:2.25",
- "wfn": {
- "Part": "a",
- "Vendor": "kernel",
- "Product": "util-linux",
- "Version": "2.25",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:hp:0231a65t:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:hp:0231a65t:-",
- "wfn": {
- "Part": "h",
- "Vendor": "hp",
- "Product": "0231a65t",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pgp:e-business_server:7.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pgp:e-business_server:7.1",
- "wfn": {
- "Part": "a",
- "Vendor": "pgp",
- "Product": "e-business_server",
- "Version": "7.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:electronjs:electron:10.0.0:beta9:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:electronjs:electron:10.0.0:beta9",
- "wfn": {
- "Part": "a",
- "Vendor": "electronjs",
- "Product": "electron",
- "Version": "10.0.0",
- "Update": "beta9",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:libpng:libpng:1.6.23:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:libpng:libpng:1.6.23",
- "wfn": {
- "Part": "a",
- "Vendor": "libpng",
- "Product": "libpng",
- "Version": "1.6.23",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:smackcoders:ultimate_csv_importer:3.2.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:smackcoders:ultimate_csv_importer:3.2.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "smackcoders",
- "Product": "ultimate_csv_importer",
- "Version": "3.2.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:cordova:1.8.1:*:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:apache:cordova:1.8.1::~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "cordova",
- "Version": "1.8.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:ansible:2.8.0:-:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:ansible:2.8.0:-",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "ansible",
- "Version": "2.8.0",
- "Update": "-",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:intel:xeon_e7-8860_v4:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:intel:xeon_e7-8860_v4:-",
- "wfn": {
- "Part": "a",
- "Vendor": "intel",
- "Product": "xeon_e7-8860_v4",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:misskey:misskey:10.82.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:misskey:misskey:10.82.3",
- "wfn": {
- "Part": "a",
- "Vendor": "misskey",
- "Product": "misskey",
- "Version": "10.82.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sprockets_project:sprockets:2.0.0:beta11:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sprockets_project:sprockets:2.0.0:beta11",
- "wfn": {
- "Part": "a",
- "Vendor": "sprockets_project",
- "Product": "sprockets",
- "Version": "2.0.0",
- "Update": "beta11",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ip_phone_7800_firmware:10.2\\(2\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ip_phone_7800_firmware:10.2%282%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ip_phone_7800_firmware",
- "Version": "10.2(2)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wire:wire-webapp:2020-02-24:staging0:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wire:wire-webapp:2020-02-24:staging0",
- "wfn": {
- "Part": "a",
- "Vendor": "wire",
- "Product": "wire-webapp",
- "Version": "2020-02-24",
- "Update": "staging0",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:abap_platform:7.31:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:abap_platform:7.31",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "abap_platform",
- "Version": "7.31",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:xen-orchestra:xen_orchestra_web:5.7.8:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:xen-orchestra:xen_orchestra_web:5.7.8",
- "wfn": {
- "Part": "a",
- "Vendor": "xen-orchestra",
- "Product": "xen_orchestra_web",
- "Version": "5.7.8",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:socket:engine.io:1.0.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:socket:engine.io:1.0.2",
- "wfn": {
- "Part": "a",
- "Vendor": "socket",
- "Product": "engine.io",
- "Version": "1.0.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:rspamd_project:rspamd:0.6.10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:rspamd_project:rspamd:0.6.10",
- "wfn": {
- "Part": "a",
- "Vendor": "rspamd_project",
- "Product": "rspamd",
- "Version": "0.6.10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlantiswordprocessor:atlantis_word_processor:2.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlantiswordprocessor:atlantis_word_processor:2.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "atlantiswordprocessor",
- "Product": "atlantis_word_processor",
- "Version": "2.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:openlayers:closure-util:1.14.0:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:openlayers:closure-util:1.14.0::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "openlayers",
- "Product": "closure-util",
- "Version": "1.14.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:novell:nsure_audit:1.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:novell:nsure_audit:1.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "novell",
- "Product": "nsure_audit",
- "Version": "1.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:iceni:infix:6.1.9:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:iceni:infix:6.1.9",
- "wfn": {
- "Part": "a",
- "Vendor": "iceni",
- "Product": "infix",
- "Version": "6.1.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.0.009:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.0.009",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.0.009",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:tomcat:8.0.34:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:tomcat:8.0.34",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "tomcat",
- "Version": "8.0.34",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:emqx:emq_x_broker:0.8.1:alpha:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:emqx:emq_x_broker:0.8.1:alpha",
- "wfn": {
- "Part": "a",
- "Vendor": "emqx",
- "Product": "emq_x_broker",
- "Version": "0.8.1",
- "Update": "alpha",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:eclipse:business_intelligence_and_reporting_tools:4.3.1:rc2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:eclipse:business_intelligence_and_reporting_tools:4.3.1:rc2",
- "wfn": {
- "Part": "a",
- "Vendor": "eclipse",
- "Product": "business_intelligence_and_reporting_tools",
- "Version": "4.3.1",
- "Update": "rc2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phoenixcontact:pc_worx:1.50:hotfix1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:phoenixcontact:pc_worx:1.50:hotfix1",
- "wfn": {
- "Part": "a",
- "Vendor": "phoenixcontact",
- "Product": "pc_worx",
- "Version": "1.50",
- "Update": "hotfix1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:lexmark:cx860_firmware:cxtpp.052.204:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:lexmark:cx860_firmware:cxtpp.052.204",
- "wfn": {
- "Part": "o",
- "Vendor": "lexmark",
- "Product": "cx860_firmware",
- "Version": "cxtpp.052.204",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:network_admission_control_manager_and_server_system_software:4.0.0.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:network_admission_control_manager_and_server_system_software:4.0.0.1",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "network_admission_control_manager_and_server_system_software",
- "Version": "4.0.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:tivoli_directory_server:6.1.0.33:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:tivoli_directory_server:6.1.0.33",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "tivoli_directory_server",
- "Version": "6.1.0.33",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zettlr:zettlr:1.7.0:beta12:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zettlr:zettlr:1.7.0:beta12",
- "wfn": {
- "Part": "a",
- "Vendor": "zettlr",
- "Product": "zettlr",
- "Version": "1.7.0",
- "Update": "beta12",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ruby-lang:ruby:1.8.6.304:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ruby-lang:ruby:1.8.6.304",
- "wfn": {
- "Part": "a",
- "Vendor": "ruby-lang",
- "Product": "ruby",
- "Version": "1.8.6.304",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:fusioncharts:apexcharts:3.17.1:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:fusioncharts:apexcharts:3.17.1::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "fusioncharts",
- "Product": "apexcharts",
- "Version": "3.17.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vercel:next.js:10.0.2:canary5:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:vercel:next.js:10.0.2:canary5:~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "vercel",
- "Product": "next.js",
- "Version": "10.0.2",
- "Update": "canary5",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:apple:iphone_os:14.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:apple:iphone_os:14.4",
- "wfn": {
- "Part": "o",
- "Vendor": "apple",
- "Product": "iphone_os",
- "Version": "14.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ruby-lang:ruby:1.8.5.31:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ruby-lang:ruby:1.8.5.31",
- "wfn": {
- "Part": "a",
- "Vendor": "ruby-lang",
- "Product": "ruby",
- "Version": "1.8.5.31",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:avaya:ip_soft_phone:6.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:avaya:ip_soft_phone:6.0",
- "wfn": {
- "Part": "a",
- "Vendor": "avaya",
- "Product": "ip_soft_phone",
- "Version": "6.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:frostwire:frostwire:1.9.1:build353:*:*:*:android:*:*",
- "cpe-url": "cpe:/a:frostwire:frostwire:1.9.1:build353:~~~android~~",
- "wfn": {
- "Part": "a",
- "Vendor": "frostwire",
- "Product": "frostwire",
- "Version": "1.9.1",
- "Update": "build353",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "android",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:d-link:dir-885l:a1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:d-link:dir-885l:a1",
- "wfn": {
- "Part": "h",
- "Vendor": "d-link",
- "Product": "dir-885l",
- "Version": "a1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:search_meter_project:search_meter:2.13.1:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:search_meter_project:search_meter:2.13.1::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "search_meter_project",
- "Product": "search_meter",
- "Version": "2.13.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:s9y:serendipity_event_freetag:3.74:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:s9y:serendipity_event_freetag:3.74",
- "wfn": {
- "Part": "a",
- "Vendor": "s9y",
- "Product": "serendipity_event_freetag",
- "Version": "3.74",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sensiolabs:symfony:5.2.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sensiolabs:symfony:5.2.6",
- "wfn": {
- "Part": "a",
- "Vendor": "sensiolabs",
- "Product": "symfony",
- "Version": "5.2.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:x:libxrandr:1.2.99.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:x:libxrandr:1.2.99.2",
- "wfn": {
- "Part": "a",
- "Vendor": "x",
- "Product": "libxrandr",
- "Version": "1.2.99.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inpsyde:backwpup:3.3.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:inpsyde:backwpup:3.3.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "inpsyde",
- "Product": "backwpup",
- "Version": "3.3.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:websphere_application_server:20.0.0.7:*:*:*:liberty:*:*:*",
- "cpe-url": "cpe:/a:ibm:websphere_application_server:20.0.0.7::~~liberty~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "websphere_application_server",
- "Version": "20.0.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "liberty",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:microsoft:azure-iot-sdk-c:2017-09-08:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:microsoft:azure-iot-sdk-c:2017-09-08",
- "wfn": {
- "Part": "a",
- "Vendor": "microsoft",
- "Product": "azure-iot-sdk-c",
- "Version": "2017-09-08",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:pdqinc:laserwash_autoxpress_plus:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:pdqinc:laserwash_autoxpress_plus:-",
- "wfn": {
- "Part": "h",
- "Vendor": "pdqinc",
- "Product": "laserwash_autoxpress_plus",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:deskpro:deskpro:2021.1.7:*:*:*:cloud:*:*:*",
- "cpe-url": "cpe:/a:deskpro:deskpro:2021.1.7::~~cloud~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "deskpro",
- "Product": "deskpro",
- "Version": "2021.1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "cloud",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:nuuo:nvrsolo:1.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:nuuo:nvrsolo:1.3.0",
- "wfn": {
- "Part": "o",
- "Vendor": "nuuo",
- "Product": "nvrsolo",
- "Version": "1.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:httpclient:4.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:httpclient:4.3",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "httpclient",
- "Version": "4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:qnap:photo_station:5.7.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:qnap:photo_station:5.7.12",
- "wfn": {
- "Part": "a",
- "Vendor": "qnap",
- "Product": "photo_station",
- "Version": "5.7.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ithemes:ithemes_security:7.3.2:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:ithemes:ithemes_security:7.3.2::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "ithemes",
- "Product": "ithemes_security",
- "Version": "7.3.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpcharitable:charitable:1.6.17:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpcharitable:charitable:1.6.17::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpcharitable",
- "Product": "charitable",
- "Version": "1.6.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:pepperl-fuchs:pgv100-f200-b17-v1d-7477_firmware:2.0.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:pepperl-fuchs:pgv100-f200-b17-v1d-7477_firmware:2.0.0",
- "wfn": {
- "Part": "o",
- "Vendor": "pepperl-fuchs",
- "Product": "pgv100-f200-b17-v1d-7477_firmware",
- "Version": "2.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:arista:mos:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:arista:mos:-",
- "wfn": {
- "Part": "o",
- "Vendor": "arista",
- "Product": "mos",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:blackberry:enterprise_service:12.2.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:blackberry:enterprise_service:12.2.1",
- "wfn": {
- "Part": "a",
- "Vendor": "blackberry",
- "Product": "enterprise_service",
- "Version": "12.2.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:triplea-game:triplea:1.9.0.0.11975:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:triplea-game:triplea:1.9.0.0.11975",
- "wfn": {
- "Part": "a",
- "Vendor": "triplea-game",
- "Product": "triplea",
- "Version": "1.9.0.0.11975",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:ip_phone_8861_firmware:10.3\\(1\\)sr4b:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:ip_phone_8861_firmware:10.3%281%29sr4b",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "ip_phone_8861_firmware",
- "Version": "10.3(1)sr4b",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:symantec:security_information_manager:4.7.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:symantec:security_information_manager:4.7.4",
- "wfn": {
- "Part": "a",
- "Vendor": "symantec",
- "Product": "security_information_manager",
- "Version": "4.7.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vmware:vrealize_operations_for_published_applications:6.5.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vmware:vrealize_operations_for_published_applications:6.5.0",
- "wfn": {
- "Part": "a",
- "Vendor": "vmware",
- "Product": "vrealize_operations_for_published_applications",
- "Version": "6.5.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:apple:watchos:3.1.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:apple:watchos:3.1.3",
- "wfn": {
- "Part": "o",
- "Vendor": "apple",
- "Product": "watchos",
- "Version": "3.1.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:etherpad:etherpad:1.6.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:etherpad:etherpad:1.6.1",
- "wfn": {
- "Part": "a",
- "Vendor": "etherpad",
- "Product": "etherpad",
- "Version": "1.6.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:apache:http_server:2.2.16:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:apache:http_server:2.2.16",
- "wfn": {
- "Part": "a",
- "Vendor": "apache",
- "Product": "http_server",
- "Version": "2.2.16",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:hikvision:ds-2cd2086g2-iu\\/sl_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:hikvision:ds-2cd2086g2-iu%2fsl_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "hikvision",
- "Product": "ds-2cd2086g2-iu/sl_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:dell:latitude_5300_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:dell:latitude_5300_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "dell",
- "Product": "latitude_5300_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:adobe:robohelp:2020.0.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:adobe:robohelp:2020.0.4",
- "wfn": {
- "Part": "a",
- "Vendor": "adobe",
- "Product": "robohelp",
- "Version": "2020.0.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sendio:sendio:7.1.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sendio:sendio:7.1.2",
- "wfn": {
- "Part": "a",
- "Vendor": "sendio",
- "Product": "sendio",
- "Version": "7.1.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tendermint:tendermint:0.19.6:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tendermint:tendermint:0.19.6:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "tendermint",
- "Product": "tendermint",
- "Version": "0.19.6",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kakaocorp:kakaotalk:2.7.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kakaocorp:kakaotalk:2.7.6",
- "wfn": {
- "Part": "a",
- "Vendor": "kakaocorp",
- "Product": "kakaotalk",
- "Version": "2.7.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:betcash_project:betcash:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:betcash_project:betcash:-",
- "wfn": {
- "Part": "a",
- "Vendor": "betcash_project",
- "Product": "betcash",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:jenkins:checkstyle:1.7:*:*:*:*:jenkins:*:*",
- "cpe-url": "cpe:/a:jenkins:checkstyle:1.7::~~~jenkins~~",
- "wfn": {
- "Part": "a",
- "Vendor": "jenkins",
- "Product": "checkstyle",
- "Version": "1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "jenkins",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:yithemes:yith_woocommerce_pdf_invoice_and_shipping_list:1.4.17:*:*:*:premium:wordpress:*:*",
- "cpe-url": "cpe:/a:yithemes:yith_woocommerce_pdf_invoice_and_shipping_list:1.4.17::~~premium~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "yithemes",
- "Product": "yith_woocommerce_pdf_invoice_and_shipping_list",
- "Version": "1.4.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "premium",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sass-lang:libsass:3.5.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sass-lang:libsass:3.5.3",
- "wfn": {
- "Part": "a",
- "Vendor": "sass-lang",
- "Product": "libsass",
- "Version": "3.5.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:buffalo:wzr-hp-ag300h:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:buffalo:wzr-hp-ag300h:-",
- "wfn": {
- "Part": "h",
- "Vendor": "buffalo",
- "Product": "wzr-hp-ag300h",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mailstore:mailstore_server:12.0.6:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mailstore:mailstore_server:12.0.6",
- "wfn": {
- "Part": "a",
- "Vendor": "mailstore",
- "Product": "mailstore_server",
- "Version": "12.0.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:darwin:factor:3.0.17:*:*:*:*:node.js:*:*",
- "cpe-url": "cpe:/a:darwin:factor:3.0.17::~~~node.js~~",
- "wfn": {
- "Part": "a",
- "Vendor": "darwin",
- "Product": "factor",
- "Version": "3.0.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "node.js",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inspireui:mstore_api:2.9.9:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:inspireui:mstore_api:2.9.9::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "inspireui",
- "Product": "mstore_api",
- "Version": "2.9.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:edac-utils_project:edac-utils:0.12:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:edac-utils_project:edac-utils:0.12",
- "wfn": {
- "Part": "a",
- "Vendor": "edac-utils_project",
- "Product": "edac-utils",
- "Version": "0.12",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:huawei:jennifer-an00c:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:huawei:jennifer-an00c:-",
- "wfn": {
- "Part": "h",
- "Vendor": "huawei",
- "Product": "jennifer-an00c",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:backup-guard:backup_guard:1.1.79:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:backup-guard:backup_guard:1.1.79::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "backup-guard",
- "Product": "backup_guard",
- "Version": "1.1.79",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:phpbb:phpbb:3.2.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:phpbb:phpbb:3.2.7",
- "wfn": {
- "Part": "a",
- "Vendor": "phpbb",
- "Product": "phpbb",
- "Version": "3.2.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nodejs:node.js:0.10.21:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nodejs:node.js:0.10.21",
- "wfn": {
- "Part": "a",
- "Vendor": "nodejs",
- "Product": "node.js",
- "Version": "0.10.21",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:citrix:sd-wan:10.2.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:citrix:sd-wan:10.2.0",
- "wfn": {
- "Part": "a",
- "Vendor": "citrix",
- "Product": "sd-wan",
- "Version": "10.2.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cpanel:cpanel:58.0.25:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cpanel:cpanel:58.0.25",
- "wfn": {
- "Part": "a",
- "Vendor": "cpanel",
- "Product": "cpanel",
- "Version": "58.0.25",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:codesys:control_for_plcnext:3.5.15.30:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:codesys:control_for_plcnext:3.5.15.30",
- "wfn": {
- "Part": "a",
- "Vendor": "codesys",
- "Product": "control_for_plcnext",
- "Version": "3.5.15.30",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:change_and_configuration_management_database:7.1.1.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:change_and_configuration_management_database:7.1.1.7",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "change_and_configuration_management_database",
- "Version": "7.1.1.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:7.4.1529:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:7.4.1529",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "7.4.1529",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:alpinelinux:aports:3.13.0:rc5:*:*:*:alpine:*:*",
- "cpe-url": "cpe:/a:alpinelinux:aports:3.13.0:rc5:~~~alpine~~",
- "wfn": {
- "Part": "a",
- "Vendor": "alpinelinux",
- "Product": "aports",
- "Version": "3.13.0",
- "Update": "rc5",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "alpine",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tadtools_project:tadtools:3.04:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tadtools_project:tadtools:3.04",
- "wfn": {
- "Part": "a",
- "Vendor": "tadtools_project",
- "Product": "tadtools",
- "Version": "3.04",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:katello_project:katello:3.3.0.1:*:*:*:*:foreman:*:*",
- "cpe-url": "cpe:/a:katello_project:katello:3.3.0.1::~~~foreman~~",
- "wfn": {
- "Part": "a",
- "Vendor": "katello_project",
- "Product": "katello",
- "Version": "3.3.0.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "foreman",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:extremenetworks:extremewireless_wing:5.7.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:extremenetworks:extremewireless_wing:5.7.2",
- "wfn": {
- "Part": "o",
- "Vendor": "extremenetworks",
- "Product": "extremewireless_wing",
- "Version": "5.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cisco:nx-os:6.2\\(24\\):*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cisco:nx-os:6.2%2824%29",
- "wfn": {
- "Part": "o",
- "Vendor": "cisco",
- "Product": "nx-os",
- "Version": "6.2(24)",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vmware:spring_security:5.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vmware:spring_security:5.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "vmware",
- "Product": "spring_security",
- "Version": "5.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:panasonic:eluga_ray_530_firmware:2020-04-10:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:panasonic:eluga_ray_530_firmware:2020-04-10",
- "wfn": {
- "Part": "o",
- "Vendor": "panasonic",
- "Product": "eluga_ray_530_firmware",
- "Version": "2020-04-10",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:inedo:proget:4.8.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:inedo:proget:4.8.4",
- "wfn": {
- "Part": "a",
- "Vendor": "inedo",
- "Product": "proget",
- "Version": "4.8.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:redhat:ovirt-engine:4.3.0:alpha2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:redhat:ovirt-engine:4.3.0:alpha2",
- "wfn": {
- "Part": "a",
- "Vendor": "redhat",
- "Product": "ovirt-engine",
- "Version": "4.3.0",
- "Update": "alpha2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kde:paste_applet:4.1.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kde:paste_applet:4.1.4",
- "wfn": {
- "Part": "a",
- "Vendor": "kde",
- "Product": "paste_applet",
- "Version": "4.1.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wpdownloadmanager:wordpress_download_manager:2.4.3:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:wpdownloadmanager:wordpress_download_manager:2.4.3::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "wpdownloadmanager",
- "Product": "wordpress_download_manager",
- "Version": "2.4.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zohocorp:manageengine_remote_access_plus:10.0.256:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:zohocorp:manageengine_remote_access_plus:10.0.256",
- "wfn": {
- "Part": "a",
- "Vendor": "zohocorp",
- "Product": "manageengine_remote_access_plus",
- "Version": "10.0.256",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:x2engine:x2crm:5.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:x2engine:x2crm:5.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "x2engine",
- "Product": "x2crm",
- "Version": "5.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:kubernetes:kubernetes:1.6.0:alpha1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:kubernetes:kubernetes:1.6.0:alpha1",
- "wfn": {
- "Part": "a",
- "Vendor": "kubernetes",
- "Product": "kubernetes",
- "Version": "1.6.0",
- "Update": "alpha1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:prestosql:presto:327:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:prestosql:presto:327",
- "wfn": {
- "Part": "a",
- "Vendor": "prestosql",
- "Product": "presto",
- "Version": "327",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:saltos:saltos:3.7:9160:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:saltos:saltos:3.7:9160",
- "wfn": {
- "Part": "a",
- "Vendor": "saltos",
- "Product": "saltos",
- "Version": "3.7",
- "Update": "9160",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:hp:sgi_tempo:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:hp:sgi_tempo:-",
- "wfn": {
- "Part": "a",
- "Vendor": "hp",
- "Product": "sgi_tempo",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mongodb:mongodb:3.6.17:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mongodb:mongodb:3.6.17",
- "wfn": {
- "Part": "a",
- "Vendor": "mongodb",
- "Product": "mongodb",
- "Version": "3.6.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:wftpserver:wing_ftp_server:2.4:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:wftpserver:wing_ftp_server:2.4",
- "wfn": {
- "Part": "a",
- "Vendor": "wftpserver",
- "Product": "wing_ftp_server",
- "Version": "2.4",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:webkitgtk:webkitgtk:2.7.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:webkitgtk:webkitgtk:2.7.2",
- "wfn": {
- "Part": "a",
- "Vendor": "webkitgtk",
- "Product": "webkitgtk",
- "Version": "2.7.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ucweb:ucmobile_blovestorm:1.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ucweb:ucmobile_blovestorm:1.0",
- "wfn": {
- "Part": "a",
- "Vendor": "ucweb",
- "Product": "ucmobile_blovestorm",
- "Version": "1.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cisco:finesse:9.1\\(1\\)_su1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cisco:finesse:9.1%281%29_su1",
- "wfn": {
- "Part": "a",
- "Vendor": "cisco",
- "Product": "finesse",
- "Version": "9.1(1)_su1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:oracle:collaboration_suite:10.1.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:oracle:collaboration_suite:10.1.1",
- "wfn": {
- "Part": "a",
- "Vendor": "oracle",
- "Product": "collaboration_suite",
- "Version": "10.1.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:huawei:s9300:v100r003:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:huawei:s9300:v100r003",
- "wfn": {
- "Part": "h",
- "Vendor": "huawei",
- "Product": "s9300",
- "Version": "v100r003",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sanitize_project:sanitize:4.4.0:*:*:*:*:ruby:*:*",
- "cpe-url": "cpe:/a:sanitize_project:sanitize:4.4.0::~~~ruby~~",
- "wfn": {
- "Part": "a",
- "Vendor": "sanitize_project",
- "Product": "sanitize",
- "Version": "4.4.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "ruby",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:vim:vim:8.0.0087:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:vim:vim:8.0.0087",
- "wfn": {
- "Part": "a",
- "Vendor": "vim",
- "Product": "vim",
- "Version": "8.0.0087",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:triplea-game:triplea:1.9.0.0.13066:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:triplea-game:triplea:1.9.0.0.13066",
- "wfn": {
- "Part": "a",
- "Vendor": "triplea-game",
- "Product": "triplea",
- "Version": "1.9.0.0.13066",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:telestar:imperial_i200:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:telestar:imperial_i200:-",
- "wfn": {
- "Part": "h",
- "Vendor": "telestar",
- "Product": "imperial_i200",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:sap:openui5:1.56.17:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:sap:openui5:1.56.17",
- "wfn": {
- "Part": "a",
- "Vendor": "sap",
- "Product": "openui5",
- "Version": "1.56.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:tekmonks:monkshu:2.01:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:tekmonks:monkshu:2.01",
- "wfn": {
- "Part": "a",
- "Vendor": "tekmonks",
- "Product": "monkshu",
- "Version": "2.01",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:magentocommerce:magento:1.6.1.0:rc1:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:magentocommerce:magento:1.6.1.0:rc1",
- "wfn": {
- "Part": "a",
- "Vendor": "magentocommerce",
- "Product": "magento",
- "Version": "1.6.1.0",
- "Update": "rc1",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cantemo:portal:3.4.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:cantemo:portal:3.4.1",
- "wfn": {
- "Part": "a",
- "Vendor": "cantemo",
- "Product": "portal",
- "Version": "3.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:torproject:tor:0.1.0.17:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:torproject:tor:0.1.0.17",
- "wfn": {
- "Part": "a",
- "Vendor": "torproject",
- "Product": "tor",
- "Version": "0.1.0.17",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:codeasily:grand_flagallery:5.1.5:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:codeasily:grand_flagallery:5.1.5::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "codeasily",
- "Product": "grand_flagallery",
- "Version": "5.1.5",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:cdatatec:fd1104b_firmware:2.4.04_001:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:cdatatec:fd1104b_firmware:2.4.04_001",
- "wfn": {
- "Part": "o",
- "Vendor": "cdatatec",
- "Product": "fd1104b_firmware",
- "Version": "2.4.04_001",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:simon_brown:pebble:2.0.0:m2:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:simon_brown:pebble:2.0.0:m2",
- "wfn": {
- "Part": "a",
- "Vendor": "simon_brown",
- "Product": "pebble",
- "Version": "2.0.0",
- "Update": "m2",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:npmjs:npm:1.0.0:rc8:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:npmjs:npm:1.0.0:rc8",
- "wfn": {
- "Part": "a",
- "Vendor": "npmjs",
- "Product": "npm",
- "Version": "1.0.0",
- "Update": "rc8",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:opmantek:open-audit:1.12.2-1:*:*:*:-:*:*:*",
- "cpe-url": "cpe:/a:opmantek:open-audit:1.12.2-1::~~-~~~",
- "wfn": {
- "Part": "a",
- "Vendor": "opmantek",
- "Product": "open-audit",
- "Version": "1.12.2-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "-",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:intel:xeon_processor_d-1577_firmware:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:intel:xeon_processor_d-1577_firmware:-",
- "wfn": {
- "Part": "o",
- "Vendor": "intel",
- "Product": "xeon_processor_d-1577_firmware",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:atlassian:fisheye:3.5.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:atlassian:fisheye:3.5.1",
- "wfn": {
- "Part": "a",
- "Vendor": "atlassian",
- "Product": "fisheye",
- "Version": "3.5.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:yithemes:yith_woocommerce_request_a_quote:3.0.0:*:*:*:premium:wordpress:*:*",
- "cpe-url": "cpe:/a:yithemes:yith_woocommerce_request_a_quote:3.0.0::~~premium~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "yithemes",
- "Product": "yith_woocommerce_request_a_quote",
- "Version": "3.0.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "premium",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:h:cisco:ncs_5502:-:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/h:cisco:ncs_5502:-",
- "wfn": {
- "Part": "h",
- "Vendor": "cisco",
- "Product": "ncs_5502",
- "Version": "-",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:mediacoderhq:mediacoder:0.8.5802:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:mediacoderhq:mediacoder:0.8.5802",
- "wfn": {
- "Part": "a",
- "Vendor": "mediacoderhq",
- "Product": "mediacoder",
- "Version": "0.8.5802",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:contao:contao:2.3.0:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:contao:contao:2.3.0",
- "wfn": {
- "Part": "a",
- "Vendor": "contao",
- "Product": "contao",
- "Version": "2.3.0",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:zoom:zoom:4.5.9:*:*:*:*:macos:*:*",
- "cpe-url": "cpe:/a:zoom:zoom:4.5.9::~~~macos~~",
- "wfn": {
- "Part": "a",
- "Vendor": "zoom",
- "Product": "zoom",
- "Version": "4.5.9",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "macos",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:elastic:x-pack:5.6.2:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:elastic:x-pack:5.6.2",
- "wfn": {
- "Part": "a",
- "Vendor": "elastic",
- "Product": "x-pack",
- "Version": "5.6.2",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:debian:apt:0.8.15.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:debian:apt:0.8.15.1",
- "wfn": {
- "Part": "a",
- "Vendor": "debian",
- "Product": "apt",
- "Version": "0.8.15.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:plainware:shiftcontroller:2.0.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:plainware:shiftcontroller:2.0.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "plainware",
- "Product": "shiftcontroller",
- "Version": "2.0.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:o:sgi:irix:6.5.9m:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/o:sgi:irix:6.5.9m",
- "wfn": {
- "Part": "o",
- "Vendor": "sgi",
- "Product": "irix",
- "Version": "6.5.9m",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:nikola_posa:webfoliocms:1.0.7:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:nikola_posa:webfoliocms:1.0.7",
- "wfn": {
- "Part": "a",
- "Vendor": "nikola_posa",
- "Product": "webfoliocms",
- "Version": "1.0.7",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:katello_project:katello:0.2.55-1:*:*:*:*:foreman:*:*",
- "cpe-url": "cpe:/a:katello_project:katello:0.2.55-1::~~~foreman~~",
- "wfn": {
- "Part": "a",
- "Vendor": "katello_project",
- "Product": "katello",
- "Version": "0.2.55-1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "foreman",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:chocolate-doom:crispy_doom:5.6.3:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:chocolate-doom:crispy_doom:5.6.3",
- "wfn": {
- "Part": "a",
- "Vendor": "chocolate-doom",
- "Product": "crispy_doom",
- "Version": "5.6.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:cmsmadesimple:bable\\:multilingual_site:0.3.3:*:*:*:*:cms_made_simple:*:*",
- "cpe-url": "cpe:/a:cmsmadesimple:bable%3amultilingual_site:0.3.3::~~~cms_made_simple~~",
- "wfn": {
- "Part": "a",
- "Vendor": "cmsmadesimple",
- "Product": "bable:multilingual_site",
- "Version": "0.3.3",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "cms_made_simple",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pressified:sendpress:0.9.9.9.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:pressified:sendpress:0.9.9.9.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "pressified",
- "Product": "sendpress",
- "Version": "0.9.9.9.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:ibm:tivoli_storage_manager_for_virtual_environments:6.4.3.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:ibm:tivoli_storage_manager_for_virtual_environments:6.4.3.1",
- "wfn": {
- "Part": "a",
- "Vendor": "ibm",
- "Product": "tivoli_storage_manager_for_virtual_environments",
- "Version": "6.4.3.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:debian:advanced_package_tool:0.7.11:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:debian:advanced_package_tool:0.7.11",
- "wfn": {
- "Part": "a",
- "Vendor": "debian",
- "Product": "advanced_package_tool",
- "Version": "0.7.11",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:triplea-game:triplea:1.10.13997:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:triplea-game:triplea:1.10.13997",
- "wfn": {
- "Part": "a",
- "Vendor": "triplea-game",
- "Product": "triplea",
- "Version": "1.10.13997",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:facebook:thrift:2018.02.05.00:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:facebook:thrift:2018.02.05.00",
- "wfn": {
- "Part": "a",
- "Vendor": "facebook",
- "Product": "thrift",
- "Version": "2018.02.05.00",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:qantumthemes:onair2:3.1.6:*:*:*:*:wordpress:*:*",
- "cpe-url": "cpe:/a:qantumthemes:onair2:3.1.6::~~~wordpress~~",
- "wfn": {
- "Part": "a",
- "Vendor": "qantumthemes",
- "Product": "onair2",
- "Version": "3.1.6",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "wordpress",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:pimcore:pimcore:4.4.1:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:pimcore:pimcore:4.4.1",
- "wfn": {
- "Part": "a",
- "Vendor": "pimcore",
- "Product": "pimcore",
- "Version": "4.4.1",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- },
- {
- "cpe-string": "cpe:2.3:a:gnu:libredwg:0.8.1853:*:*:*:*:*:*:*",
- "cpe-url": "cpe:/a:gnu:libredwg:0.8.1853",
- "wfn": {
- "Part": "a",
- "Vendor": "gnu",
- "Product": "libredwg",
- "Version": "0.8.1853",
- "Update": "",
- "Edition": "",
- "Language": "",
- "SwEdition": "",
- "TargetSw": "",
- "TargetHw": "",
- "Other": ""
- }
- }
-]
\ No newline at end of file
diff --git a/syft/create_sbom.go b/syft/create_sbom.go
index 3e4010eea..1e526fd90 100644
--- a/syft/create_sbom.go
+++ b/syft/create_sbom.go
@@ -9,6 +9,7 @@ import (
"github.com/scylladb/go-set/strset"
"github.com/anchore/syft/internal/bus"
+ "github.com/anchore/syft/internal/licenses"
"github.com/anchore/syft/internal/sbomsync"
"github.com/anchore/syft/internal/task"
"github.com/anchore/syft/syft/artifact"
@@ -60,6 +61,9 @@ func CreateSBOM(ctx context.Context, src source.Source, cfg *CreateSBOMConfig) (
},
}
+ // inject a single license scanner for all package cataloging tasks into context
+ ctx = licenses.SetContextLicenseScanner(ctx, licenses.NewDefaultScanner())
+
catalogingProgress := monitorCatalogingTask(src.ID(), taskGroups)
packageCatalogingProgress := monitorPackageCatalogingTask()
diff --git a/syft/create_sbom_config.go b/syft/create_sbom_config.go
index 1f7deb18d..8e9e76b5c 100644
--- a/syft/create_sbom_config.go
+++ b/syft/create_sbom_config.go
@@ -19,8 +19,10 @@ import (
// CreateSBOMConfig specifies all parameters needed for creating an SBOM.
type CreateSBOMConfig struct {
// required configuration input to specify how cataloging should be performed
+ Compliance cataloging.ComplianceConfig
Search cataloging.SearchConfig
Relationships cataloging.RelationshipsConfig
+ Unknowns cataloging.UnknownsConfig
DataGeneration cataloging.DataGenerationConfig
Packages pkgcataloging.Config
Files filecataloging.Config
@@ -38,6 +40,7 @@ type CreateSBOMConfig struct {
func DefaultCreateSBOMConfig() *CreateSBOMConfig {
return &CreateSBOMConfig{
+ Compliance: cataloging.DefaultComplianceConfig(),
Search: cataloging.DefaultSearchConfig(),
Relationships: cataloging.DefaultRelationshipsConfig(),
DataGeneration: cataloging.DefaultDataGenerationConfig(),
@@ -93,6 +96,12 @@ func (c *CreateSBOMConfig) WithParallelism(p int) *CreateSBOMConfig {
return c
}
+// WithComplianceConfig allows for setting the specific compliance configuration for cataloging.
+func (c *CreateSBOMConfig) WithComplianceConfig(cfg cataloging.ComplianceConfig) *CreateSBOMConfig {
+ c.Compliance = cfg
+ return c
+}
+
// WithSearchConfig allows for setting the specific search configuration for cataloging.
func (c *CreateSBOMConfig) WithSearchConfig(cfg cataloging.SearchConfig) *CreateSBOMConfig {
c.Search = cfg
@@ -105,6 +114,12 @@ func (c *CreateSBOMConfig) WithRelationshipsConfig(cfg cataloging.RelationshipsC
return c
}
+// WithUnknownsConfig allows for defining the specific behavior dealing with unknowns
+func (c *CreateSBOMConfig) WithUnknownsConfig(cfg cataloging.UnknownsConfig) *CreateSBOMConfig {
+ c.Unknowns = cfg
+ return c
+}
+
// WithDataGenerationConfig allows for defining what data elements that cannot be discovered from the underlying
// target being scanned that should be generated after package creation.
func (c *CreateSBOMConfig) WithDataGenerationConfig(cfg cataloging.DataGenerationConfig) *CreateSBOMConfig {
@@ -165,6 +180,7 @@ func (c *CreateSBOMConfig) makeTaskGroups(src source.Description) ([][]task.Task
// generate package and file tasks based on the configuration
environmentTasks := c.environmentTasks()
relationshipsTasks := c.relationshipTasks(src)
+ unknownTasks := c.unknownsTasks()
fileTasks := c.fileTasks()
pkgTasks, selectionEvidence, err := c.packageTasks(src)
if err != nil {
@@ -184,6 +200,11 @@ func (c *CreateSBOMConfig) makeTaskGroups(src source.Description) ([][]task.Task
taskGroups = append(taskGroups, relationshipsTasks)
}
+ // all unknowns tasks should happen after all scanning is complete
+ if len(unknownTasks) > 0 {
+ taskGroups = append(taskGroups, unknownTasks)
+ }
+
// identifying the environment (i.e. the linux release) must be done first as this is required for package cataloging
taskGroups = append(
[][]task.Task{
@@ -225,6 +246,7 @@ func (c *CreateSBOMConfig) packageTasks(src source.Description) ([]task.Task, *t
RelationshipsConfig: c.Relationships,
DataGenerationConfig: c.DataGeneration,
PackagesConfig: c.Packages,
+ ComplianceConfig: c.Compliance,
}
persistentTasks, selectableTasks, err := c.allPackageTasks(cfg)
@@ -329,6 +351,18 @@ func (c *CreateSBOMConfig) environmentTasks() []task.Task {
return tsks
}
+// unknownsTasks returns a set of tasks that perform any necessary post-processing
+// to identify SBOM elements as unknowns
+func (c *CreateSBOMConfig) unknownsTasks() []task.Task {
+ var tasks []task.Task
+
+ if t := task.NewUnknownsLabelerTask(c.Unknowns); t != nil {
+ tasks = append(tasks, t)
+ }
+
+ return tasks
+}
+
func (c *CreateSBOMConfig) validate() error {
if c.Relationships.ExcludeBinaryPackagesWithFileOwnershipOverlap {
if !c.Relationships.PackageFileOwnershipOverlap {
diff --git a/syft/create_sbom_config_test.go b/syft/create_sbom_config_test.go
deleted file mode 100644
index 8c74b57cd..000000000
--- a/syft/create_sbom_config_test.go
+++ /dev/null
@@ -1,506 +0,0 @@
-package syft
-
-import (
- "context"
- "sort"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/google/go-cmp/cmp/cmpopts"
- "github.com/scylladb/go-set/strset"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/internal/task"
- "github.com/anchore/syft/syft/artifact"
- "github.com/anchore/syft/syft/cataloging"
- "github.com/anchore/syft/syft/cataloging/filecataloging"
- "github.com/anchore/syft/syft/cataloging/pkgcataloging"
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/pkg"
- "github.com/anchore/syft/syft/source"
-)
-
-var _ pkg.Cataloger = (*dummyCataloger)(nil)
-
-type dummyCataloger struct {
- name string
-}
-
-func newDummyCataloger(name string) pkg.Cataloger {
- return dummyCataloger{name: name}
-}
-
-func (d dummyCataloger) Name() string {
- return d.name
-}
-
-func (d dummyCataloger) Catalog(_ context.Context, _ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) {
- return nil, nil, nil
-}
-
-func TestCreateSBOMConfig_makeTaskGroups(t *testing.T) {
- pkgIntersect := func(intersect ...string) []string {
- var sets []*strset.Set
- for _, s := range intersect {
- sets = append(sets, strset.New(pkgCatalogerNamesWithTagOrName(t, s)...))
- }
-
- intersectSet := strset.Intersection(sets...)
-
- slice := intersectSet.List()
-
- sort.Strings(slice)
-
- return slice
- }
-
- addTo := func(slice []string, add ...string) []string {
- slice = append(slice, add...)
- sort.Strings(slice)
- return slice
- }
-
- imgSrc := source.Description{
- Metadata: source.ImageMetadata{},
- }
-
- dirSrc := source.Description{
- Metadata: source.DirectoryMetadata{},
- }
-
- fileSrc := source.Description{
- Metadata: source.FileMetadata{},
- }
-
- tests := []struct {
- name string
- src source.Description
- cfg *CreateSBOMConfig
- wantTaskNames [][]string
- wantManifest *catalogerManifest
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "default catalogers for image source",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig(),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "image"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "image"),
- },
- wantErr: require.NoError,
- },
- {
- name: "default catalogers for directory source",
- src: dirSrc,
- cfg: DefaultCreateSBOMConfig(),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "directory"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"directory"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "directory"),
- },
- wantErr: require.NoError,
- },
- {
- // note, the file source acts like a directory scan
- name: "default catalogers for file source",
- src: fileSrc,
- cfg: DefaultCreateSBOMConfig(),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "directory"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"directory"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "directory"),
- },
- wantErr: require.NoError,
- },
- {
- name: "no file digest cataloger",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithFilesConfig(filecataloging.DefaultConfig().WithHashers()),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "image"),
- fileCatalogerNames(false, true, true), // note: the digest cataloger is not included
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "image"),
- },
- wantErr: require.NoError,
- },
- {
- name: "select no file catalogers",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithFilesConfig(filecataloging.DefaultConfig().WithSelection(file.NoFilesSelection)),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "image"),
- // note: there are no file catalogers in their own group
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "image"),
- },
- wantErr: require.NoError,
- },
- {
- name: "select all file catalogers",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithFilesConfig(filecataloging.DefaultConfig().WithSelection(file.AllFilesSelection)),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- // note: there is a single group of catalogers for pkgs and files
- append(
- pkgCatalogerNamesWithTagOrName(t, "image"),
- fileCatalogerNames(true, true, true)...,
- ),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "image"),
- },
- wantErr: require.NoError,
- },
- {
- name: "user-provided persistent cataloger is always run (image)",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithCatalogers(
- pkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger("persistent")),
- ),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- addTo(pkgCatalogerNamesWithTagOrName(t, "image"), "persistent"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: addTo(pkgCatalogerNamesWithTagOrName(t, "image"), "persistent"),
- },
- wantErr: require.NoError,
- },
- {
- name: "user-provided persistent cataloger is always run (directory)",
- src: dirSrc,
- cfg: DefaultCreateSBOMConfig().WithCatalogers(
- pkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger("persistent")),
- ),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- addTo(pkgCatalogerNamesWithTagOrName(t, "directory"), "persistent"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"directory"},
- },
- Used: addTo(pkgCatalogerNamesWithTagOrName(t, "directory"), "persistent"),
- },
- wantErr: require.NoError,
- },
- {
- name: "user-provided persistent cataloger is always run (user selection does not affect this)",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithCatalogers(
- pkgcataloging.NewAlwaysEnabledCatalogerReference(newDummyCataloger("persistent")),
- ).WithCatalogerSelection(pkgcataloging.NewSelectionRequest().WithSubSelections("javascript")),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- addTo(pkgIntersect("image", "javascript"), "persistent"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- SubSelectTags: []string{"javascript"},
- },
- Used: addTo(pkgIntersect("image", "javascript"), "persistent"),
- },
- wantErr: require.NoError,
- },
- {
- name: "user-provided cataloger runs when selected",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithCatalogers(
- pkgcataloging.NewCatalogerReference(newDummyCataloger("user-provided"), []string{"image"}),
- ),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- addTo(pkgCatalogerNamesWithTagOrName(t, "image"), "user-provided"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: addTo(pkgCatalogerNamesWithTagOrName(t, "image"), "user-provided"),
- },
- wantErr: require.NoError,
- },
- {
- name: "user-provided cataloger NOT run when NOT selected",
- src: imgSrc,
- cfg: DefaultCreateSBOMConfig().WithCatalogers(
- pkgcataloging.NewCatalogerReference(newDummyCataloger("user-provided"), []string{"bogus-selector-will-never-be-used"}),
- ),
- wantTaskNames: [][]string{
- environmentCatalogerNames(),
- pkgCatalogerNamesWithTagOrName(t, "image"),
- fileCatalogerNames(true, true, true),
- relationshipCatalogerNames(),
- },
- wantManifest: &catalogerManifest{
- Requested: pkgcataloging.SelectionRequest{
- DefaultNamesOrTags: []string{"image"},
- },
- Used: pkgCatalogerNamesWithTagOrName(t, "image"),
- },
- wantErr: require.NoError,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
-
- // sanity check
- require.NotEmpty(t, tt.wantTaskNames)
- for _, group := range tt.wantTaskNames {
- require.NotEmpty(t, group)
- }
-
- // test the subject
- gotTasks, gotManifest, err := tt.cfg.makeTaskGroups(tt.src)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
-
- gotNames := taskGroupNames(gotTasks)
-
- if d := cmp.Diff(
- tt.wantTaskNames,
- gotNames,
- // order within a group does not matter
- cmpopts.SortSlices(func(a, b string) bool {
- return a < b
- }),
- ); d != "" {
- t.Errorf("mismatched task group names (-want +got):\n%s", d)
- }
-
- if d := cmp.Diff(tt.wantManifest, gotManifest); d != "" {
- t.Errorf("mismatched cataloger manifest (-want +got):\n%s", d)
- }
- })
- }
-}
-
-func pkgCatalogerNamesWithTagOrName(t *testing.T, token string) []string {
- var names []string
- cfg := task.DefaultCatalogingFactoryConfig()
- for _, factory := range task.DefaultPackageTaskFactories() {
- cat := factory(cfg)
-
- name := cat.Name()
-
- if selector, ok := cat.(task.Selector); ok {
- if selector.HasAllSelectors(token) {
- names = append(names, name)
- continue
- }
- }
- if name == token {
- names = append(names, name)
- }
- }
-
- // these thresholds are arbitrary but should be large enough to catch any major changes
- switch token {
- case "image":
- require.Greater(t, len(names), 18, "minimum cataloger sanity check failed token")
- case "directory":
- require.Greater(t, len(names), 25, "minimum cataloger sanity check failed token")
- default:
- require.Greater(t, len(names), 0, "minimum cataloger sanity check failed token")
- }
-
- sort.Strings(names)
- return names
-}
-
-func fileCatalogerNames(digest, metadata, executable bool) []string {
- var names []string
- if digest {
- names = append(names, "file-digest-cataloger")
- }
- if executable {
- names = append(names, "file-executable-cataloger")
- }
- if metadata {
- names = append(names, "file-metadata-cataloger")
- }
- return names
-}
-
-func relationshipCatalogerNames() []string {
- return []string{"relationships-cataloger"}
-}
-
-func environmentCatalogerNames() []string {
- return []string{"environment-cataloger"}
-}
-
-func taskGroupNames(groups [][]task.Task) [][]string {
- var names [][]string
- for _, group := range groups {
- var groupNames []string
- for _, tsk := range group {
- groupNames = append(groupNames, tsk.Name())
- }
- names = append(names, groupNames)
- }
- return names
-}
-
-func Test_replaceDefaultTagReferences(t *testing.T) {
-
- tests := []struct {
- name string
- lst []string
- want []string
- }{
- {
- name: "no default tag",
- lst: []string{"foo", "bar"},
- want: []string{"foo", "bar"},
- },
- {
- name: "replace default tag",
- lst: []string{"foo", "default", "bar"},
- want: []string{"foo", "replacement", "bar"},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equal(t, tt.want, replaceDefaultTagReferences("replacement", tt.lst))
- })
- }
-}
-
-func Test_findDefaultTag(t *testing.T) {
-
- tests := []struct {
- name string
- src source.Description
- want string
- wantErr require.ErrorAssertionFunc
- }{
- {
- name: "image",
- src: source.Description{
- Metadata: source.ImageMetadata{},
- },
- want: pkgcataloging.ImageTag,
- },
- {
- name: "directory",
- src: source.Description{
- Metadata: source.DirectoryMetadata{},
- },
- want: pkgcataloging.DirectoryTag,
- },
- {
- name: "file",
- src: source.Description{
- Metadata: source.FileMetadata{},
- },
- want: pkgcataloging.DirectoryTag, // not a mistake...
- },
- {
- name: "unknown",
- src: source.Description{
- Metadata: struct{}{},
- },
- wantErr: require.Error,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = require.NoError
- }
- got, err := findDefaultTag(tt.src)
- tt.wantErr(t, err)
- if err != nil {
- return
- }
- assert.Equal(t, tt.want, got)
- })
- }
-}
-
-func TestCreateSBOMConfig_validate(t *testing.T) {
- tests := []struct {
- name string
- cfg *CreateSBOMConfig
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "incompatible ExcludeBinaryPackagesWithFileOwnershipOverlap selection",
- cfg: DefaultCreateSBOMConfig().
- WithRelationshipsConfig(
- cataloging.DefaultRelationshipsConfig().
- WithExcludeBinaryPackagesWithFileOwnershipOverlap(true).
- WithPackageFileOwnershipOverlap(false),
- ),
- wantErr: assert.Error,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if tt.wantErr == nil {
- tt.wantErr = assert.NoError
- }
- tt.wantErr(t, tt.cfg.validate())
- })
- }
-}
diff --git a/syft/file/cataloger/executable/cataloger.go b/syft/file/cataloger/executable/cataloger.go
index b0f10e15d..7de2b33b0 100644
--- a/syft/file/cataloger/executable/cataloger.go
+++ b/syft/file/cataloger/executable/cataloger.go
@@ -15,6 +15,7 @@ import (
"github.com/anchore/syft/internal/bus"
"github.com/anchore/syft/internal/log"
"github.com/anchore/syft/internal/mimetype"
+ "github.com/anchore/syft/internal/unknown"
"github.com/anchore/syft/syft/event/monitor"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/internal/unionreader"
@@ -45,6 +46,8 @@ func NewCataloger(cfg Config) *Cataloger {
}
func (i *Cataloger) Catalog(resolver file.Resolver) (map[file.Coordinates]file.Executable, error) {
+ var errs error
+
locs, err := resolver.FilesByMIMEType(i.config.MIMETypes...)
if err != nil {
return nil, fmt.Errorf("unable to get file locations for binaries: %w", err)
@@ -61,7 +64,10 @@ func (i *Cataloger) Catalog(resolver file.Resolver) (map[file.Coordinates]file.E
for _, loc := range locs {
prog.AtomicStage.Set(loc.Path())
- exec := processExecutableLocation(loc, resolver)
+ exec, err := processExecutableLocation(loc, resolver)
+ if err != nil {
+ errs = unknown.Append(errs, loc, err)
+ }
if exec != nil {
prog.Increment()
@@ -74,30 +80,24 @@ func (i *Cataloger) Catalog(resolver file.Resolver) (map[file.Coordinates]file.E
prog.AtomicStage.Set(fmt.Sprintf("%s executables", humanize.Comma(prog.Current())))
prog.SetCompleted()
- return results, nil
+ return results, errs
}
-func processExecutableLocation(loc file.Location, resolver file.Resolver) *file.Executable {
+func processExecutableLocation(loc file.Location, resolver file.Resolver) (*file.Executable, error) {
reader, err := resolver.FileContentsByLocation(loc)
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Warnf("unable to get file contents for %q", loc.RealPath)
- return nil
+ return nil, fmt.Errorf("unable to get file contents: %w", err)
}
defer internal.CloseAndLogError(reader, loc.RealPath)
uReader, err := unionreader.GetUnionReader(reader)
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Warnf("unable to get union reader for %q", loc.RealPath)
- return nil
+ return nil, fmt.Errorf("unable to get union reader: %w", err)
}
- exec, err := processExecutable(loc, uReader)
- if err != nil {
- log.WithFields("error", err).Warnf("unable to process executable %q", loc.RealPath)
- }
- return exec
+ return processExecutable(loc, uReader)
}
func catalogingProgress(locations int64) *monitor.CatalogerTaskProgress {
@@ -153,10 +153,12 @@ func processExecutable(loc file.Location, reader unionreader.UnionReader) (*file
format, err := findExecutableFormat(reader)
if err != nil {
+ log.Debugf("unable to determine executable kind for %v: %v", loc.RealPath, err)
return nil, fmt.Errorf("unable to determine executable kind: %w", err)
}
if format == "" {
+ // this is not an "unknown", so just log -- this binary does not have parseable data in it
log.Debugf("unable to determine executable format for %q", loc.RealPath)
return nil, nil
}
@@ -165,16 +167,19 @@ func processExecutable(loc file.Location, reader unionreader.UnionReader) (*file
switch format {
case file.ELF:
- if err := findELFFeatures(&data, reader); err != nil {
+ if err = findELFFeatures(&data, reader); err != nil {
log.WithFields("error", err).Tracef("unable to determine ELF features for %q", loc.RealPath)
+ err = fmt.Errorf("unable to determine ELF features: %w", err)
}
case file.PE:
- if err := findPEFeatures(&data, reader); err != nil {
+ if err = findPEFeatures(&data, reader); err != nil {
log.WithFields("error", err).Tracef("unable to determine PE features for %q", loc.RealPath)
+ err = fmt.Errorf("unable to determine PE features: %w", err)
}
case file.MachO:
- if err := findMachoFeatures(&data, reader); err != nil {
+ if err = findMachoFeatures(&data, reader); err != nil {
log.WithFields("error", err).Tracef("unable to determine Macho features for %q", loc.RealPath)
+ err = fmt.Errorf("unable to determine Macho features: %w", err)
}
}
@@ -183,7 +188,7 @@ func processExecutable(loc file.Location, reader unionreader.UnionReader) (*file
data.ImportedLibraries = []string{}
}
- return &data, nil
+ return &data, err
}
func findExecutableFormat(reader unionreader.UnionReader) (file.ExecutableFormat, error) {
diff --git a/syft/file/cataloger/executable/elf.go b/syft/file/cataloger/executable/elf.go
index dec6abd34..b9d2205cf 100644
--- a/syft/file/cataloger/executable/elf.go
+++ b/syft/file/cataloger/executable/elf.go
@@ -8,6 +8,7 @@ import (
"github.com/scylladb/go-set/strset"
"github.com/anchore/syft/internal/log"
+ "github.com/anchore/syft/internal/unknown"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/internal/unionreader"
)
@@ -20,8 +21,8 @@ func findELFFeatures(data *file.Executable, reader unionreader.UnionReader) erro
libs, err := f.ImportedLibraries()
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read imported libraries from elf file")
+ err = unknown.Joinf(err, "unable to read imported libraries from elf file: %w", err)
libs = nil
}
@@ -34,7 +35,7 @@ func findELFFeatures(data *file.Executable, reader unionreader.UnionReader) erro
data.HasEntrypoint = elfHasEntrypoint(f)
data.HasExports = elfHasExports(f)
- return nil
+ return err
}
func findELFSecurityFeatures(f *elf.File) *file.ELFSecurityFeatures {
@@ -62,7 +63,6 @@ func checkElfStackCanary(file *elf.File) *bool {
func hasAnyDynamicSymbols(file *elf.File, symbolNames ...string) *bool {
dynSyms, err := file.DynamicSymbols()
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read dynamic symbols from elf file")
return nil
}
@@ -129,7 +129,6 @@ func hasBindNowDynTagOrFlag(f *elf.File) bool {
func hasElfDynFlag(f *elf.File, flag elf.DynFlag) bool {
vals, err := f.DynValue(elf.DT_FLAGS)
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read DT_FLAGS from elf file")
return false
}
@@ -144,7 +143,6 @@ func hasElfDynFlag(f *elf.File, flag elf.DynFlag) bool {
func hasElfDynFlag1(f *elf.File, flag elf.DynFlag1) bool {
vals, err := f.DynValue(elf.DT_FLAGS_1)
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read DT_FLAGS_1 from elf file")
return false
}
@@ -203,7 +201,6 @@ func checkLLVMControlFlowIntegrity(file *elf.File) *bool {
// look for any symbols that are functions and end with ".cfi"
dynSyms, err := file.Symbols()
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read symbols from elf file")
return nil
}
@@ -225,7 +222,6 @@ var fortifyPattern = regexp.MustCompile(`__\w+_chk@.+`)
func checkClangFortifySource(file *elf.File) *bool {
dynSyms, err := file.Symbols()
if err != nil {
- // TODO: known-unknowns
log.WithFields("error", err).Trace("unable to read symbols from elf file")
return nil
}
@@ -254,7 +250,7 @@ func elfHasExports(f *elf.File) bool {
// really anything that is not marked with 'U' (undefined) is considered an export.
symbols, err := f.DynamicSymbols()
if err != nil {
- // TODO: known-unknowns?
+ log.WithFields("error", err).Trace("unable to get ELF dynamic symbols")
return false
}
diff --git a/syft/file/cataloger/executable/elf_test.go b/syft/file/cataloger/executable/elf_test.go
deleted file mode 100644
index 454775891..000000000
--- a/syft/file/cataloger/executable/elf_test.go
+++ /dev/null
@@ -1,226 +0,0 @@
-package executable
-
-import (
- "debug/elf"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/file"
- "github.com/anchore/syft/syft/internal/unionreader"
-)
-
-func Test_findELFSecurityFeatures(t *testing.T) {
-
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/elf", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want *file.ELFSecurityFeatures
- wantStripped bool
- }{
- {
- name: "detect canary",
- fixture: "bin/with_canary",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(true), // ! important !
- RelocationReadOnly: file.RelocationReadOnlyNone,
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect nx",
- fixture: "bin/with_nx",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(false),
- NoExecutable: true, // ! important !
- RelocationReadOnly: file.RelocationReadOnlyNone,
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect relro",
- fixture: "bin/with_relro",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyFull, // ! important !
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect partial relro",
- fixture: "bin/with_partial_relro",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyPartial, // ! important !
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect pie",
- fixture: "bin/with_pie",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyNone,
- PositionIndependentExecutable: true, // ! important !
- DynamicSharedObject: true, // ! important !
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect dso",
- fixture: "bin/pie_false_positive.so",
- want: &file.ELFSecurityFeatures{
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyPartial,
- NoExecutable: true,
- PositionIndependentExecutable: false, // ! important !
- DynamicSharedObject: true, // ! important !
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect safestack",
- fixture: "bin/with_safestack",
- want: &file.ELFSecurityFeatures{
- NoExecutable: true,
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyPartial,
- PositionIndependentExecutable: false,
- DynamicSharedObject: false,
- LlvmSafeStack: boolRef(true), // ! important !
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect cfi",
- fixture: "bin/with_cfi",
- want: &file.ELFSecurityFeatures{
- NoExecutable: true,
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyPartial,
- PositionIndependentExecutable: false,
- DynamicSharedObject: false,
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(true), // ! important !
- ClangFortifySource: boolRef(false),
- },
- },
- {
- name: "detect fortify",
- fixture: "bin/with_fortify",
- want: &file.ELFSecurityFeatures{
- NoExecutable: true,
- StackCanary: boolRef(false),
- RelocationReadOnly: file.RelocationReadOnlyPartial,
- PositionIndependentExecutable: false,
- DynamicSharedObject: false,
- LlvmSafeStack: boolRef(false),
- LlvmControlFlowIntegrity: boolRef(false),
- ClangFortifySource: boolRef(true), // ! important !
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := elf.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
-
- got := findELFSecurityFeatures(f)
-
- if d := cmp.Diff(tt.want, got); d != "" {
- t.Errorf("findELFSecurityFeatures() mismatch (-want +got):\n%s", d)
- }
- })
- }
-}
-
-func Test_elfHasEntrypoint(t *testing.T) {
-
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/libhello.so",
- want: false,
- },
- {
- name: "application",
- fixture: "bin/hello_linux",
- want: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := elf.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, elfHasEntrypoint(f))
- })
- }
-}
-
-func Test_elfHasExports(t *testing.T) {
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/libhello.so",
- want: true,
- },
- {
- name: "application",
- fixture: "bin/hello_linux",
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := elf.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, elfHasExports(f))
- })
- }
-}
diff --git a/syft/file/cataloger/executable/macho_test.go b/syft/file/cataloger/executable/macho_test.go
deleted file mode 100644
index 1d4e7ab7a..000000000
--- a/syft/file/cataloger/executable/macho_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package executable
-
-import (
- "debug/macho"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/internal/unionreader"
-)
-
-func Test_machoHasEntrypoint(t *testing.T) {
-
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/libhello.dylib",
- want: false,
- },
- {
- name: "application",
- fixture: "bin/hello_mac",
- want: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := macho.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, machoHasEntrypoint(f))
- })
- }
-}
-
-func Test_machoHasExports(t *testing.T) {
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/libhello.dylib",
- want: true,
- },
- {
- name: "application",
- fixture: "bin/hello_mac",
- want: false,
- },
- {
- name: "gcc-amd64-darwin-exec-debug",
- fixture: "bin/gcc-amd64-darwin-exec-debug",
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := macho.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, machoHasExports(f))
- })
- }
-}
diff --git a/syft/file/cataloger/executable/pe_test.go b/syft/file/cataloger/executable/pe_test.go
deleted file mode 100644
index 59ea5bc47..000000000
--- a/syft/file/cataloger/executable/pe_test.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package executable
-
-import (
- "debug/pe"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- "github.com/anchore/syft/syft/internal/unionreader"
-)
-
-func Test_peHasEntrypoint(t *testing.T) {
-
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/hello.dll", // though this is a shared lib, it has an entrypoint (DLLMain)
- want: false,
- },
- {
- name: "application",
- fixture: "bin/hello.exe",
- want: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := pe.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, peHasEntrypoint(f))
- })
- }
-}
-
-func Test_peHasExports(t *testing.T) {
- readerForFixture := func(t *testing.T, fixture string) unionreader.UnionReader {
- t.Helper()
- f, err := os.Open(filepath.Join("test-fixtures/shared-info", fixture))
- require.NoError(t, err)
- return f
- }
-
- tests := []struct {
- name string
- fixture string
- want bool
- }{
- {
- name: "shared lib",
- fixture: "bin/hello.dll",
- want: true,
- },
- {
- name: "application",
- fixture: "bin/hello.exe",
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- f, err := pe.NewFile(readerForFixture(t, tt.fixture))
- require.NoError(t, err)
- assert.Equal(t, tt.want, peHasExports(f))
- })
- }
-}
diff --git a/syft/file/cataloger/executable/test-fixtures/.gitignore b/syft/file/cataloger/executable/test-fixtures/.gitignore
deleted file mode 100644
index 89845afaa..000000000
--- a/syft/file/cataloger/executable/test-fixtures/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-actual_verify
-Dockerfile.sha256
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/.gitignore b/syft/file/cataloger/executable/test-fixtures/elf/.gitignore
deleted file mode 100644
index 87697d292..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-../bin
-actual_verify
-Dockerfile.sha256
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/Dockerfile b/syft/file/cataloger/executable/test-fixtures/elf/Dockerfile
deleted file mode 100644
index 46425e08f..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM gcc:9.5.0
-
-RUN apt update -y && apt install -y clang cmake git make m4 pkg-config zlib1g-dev
-
-## from https://github.com/runsafesecurity/selfrando/blob/tb-v0.4.2/docs/linux-build-instructions.md
-#RUN git clone https://github.com/runsafesecurity/selfrando.git && \
-# export SR_ARCH=`uname -m | sed s/i686/x86/` && \
-# cd selfrando && \
-# cmake . -DSR_DEBUG_LEVEL=env -DCMAKE_BUILD_TYPE=Release -DSR_BUILD_LIBELF=1 \
-# -DSR_ARCH=$SR_ARCH -DSR_LOG=console \
-# -DSR_FORCE_INPLACE=1 -G "Unix Makefiles" \
-# -DCMAKE_INSTALL_PREFIX:PATH=$PWD/out/$SR_ARCH
-#RUN cd selfrando && make -j`nprocs --all`
-#RUN cd selfrando && make install
-
-RUN curl -o /bin/checksec https://raw.githubusercontent.com/slimm609/checksec.sh/2.6.0/checksec && chmod +x /bin/checksec
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/Makefile b/syft/file/cataloger/executable/test-fixtures/elf/Makefile
deleted file mode 100644
index 1cff6183e..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-BIN=./bin
-TOOL_IMAGE=localhost/syft-bin-build-tools:latest
-VERIFY_FILE=actual_verify
-
-all: build verify
-
-tools-check:
- @sha256sum -c Dockerfile.sha256 || (echo "Tools Dockerfile has changed" && exit 1)
-
-# for selfrando...
-# docker buildx build --platform linux/amd64 -t $(TOOL_IMAGE) .
-
-tools:
- @(docker inspect $(TOOL_IMAGE) > /dev/null && make tools-check) || (docker build -t $(TOOL_IMAGE) . && sha256sum Dockerfile > Dockerfile.sha256)
-
-build: tools
- mkdir -p $(BIN)
- docker run -i -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) make
-
-verify: tools
- @rm -f $(VERIFY_FILE)
- docker run -i -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) make verify > $(VERIFY_FILE)
- @python ./differ expected_verify $(VERIFY_FILE)
-
-debug:
- docker run -i --rm -v $(shell pwd):/mount -w /mount/project $(TOOL_IMAGE) bash
-
-cache.fingerprint:
- @find project Dockerfile Makefile -type f -exec md5sum {} + | awk '{print $1}' | sort | tee cache.fingerprint
-
-clean:
- rm -f $(BIN)/*
-
-.PHONY: build verify debug build-image build-bins clean dockerfile-check cache.fingerprint
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/differ/__main__.py b/syft/file/cataloger/executable/test-fixtures/elf/differ/__main__.py
deleted file mode 100644
index 83f7347f8..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/differ/__main__.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import json
-import sys
-
-
-def load_json(file_path):
- with open(file_path, 'r') as file:
- return json.load(file)
-
-
-def diff_json(json1, json2):
- differences_found = False
-
- for key in json1:
- if key not in json2:
- print(f'missing key "{key}"')
- continue
-
- differences = []
- for subkey in json1[key]:
- if subkey not in json2[key]:
- differences.append(f' - "{subkey}": expected "{json1[key][subkey]}" but was MISSING')
- continue
-
- if subkey in json2[key] and json1[key][subkey] != json2[key][subkey]:
- differences.append(f' - "{subkey}": expected "{json1[key][subkey]}" got "{json2[key][subkey]}"')
-
- if differences:
- differences_found = True
- print(f'{key}')
- for diff in differences:
- print(diff)
- print()
-
- return differences_found
-
-
-def main():
- if len(sys.argv) != 3:
- print("Usage: python ./differ file1.json file2.json")
- sys.exit(1)
-
- json1 = load_json(sys.argv[1])
- json2 = load_json(sys.argv[2])
-
- if diff_json(json1, json2):
- print("FAIL: unexpected security feature differences")
- sys.exit(1)
- else:
- print("PASS: all security features accounted for")
- sys.exit(0)
-
-
-main()
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/expected_verify b/syft/file/cataloger/executable/test-fixtures/elf/expected_verify
deleted file mode 100644
index 8f7562c1c..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/expected_verify
+++ /dev/null
@@ -1 +0,0 @@
-{ "dir": { "name":"../bin" }, "../bin/no_protection": { "relro":"no","canary":"no","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"yes","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/no_protection"}, "../bin/with_nx": { "relro":"no","canary":"no","nx":"yes","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_nx"}, "../bin/with_rpath": { "relro":"no","canary":"no","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"yes","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_rpath"}, "../bin/with_canary": { "relro":"no","canary":"yes","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_canary"}, "../bin/with_relro": { "relro":"full","canary":"no","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_relro"}, "../bin/with_pie": { "relro":"no","canary":"no","nx":"no","pie":"yes","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_pie"}, "../bin/with_runpath": { "relro":"no","canary":"no","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"yes","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_runpath"}, "../bin/with_safestack": { "relro":"partial","canary":"no","nx":"yes","pie":"no","clangcfi":"no","safestack":"yes","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"3", "filename":"../bin/with_safestack"}, "../bin/pie_false_positive.so": { "relro":"partial","canary":"no","nx":"yes","pie":"dso","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"0", "filename":"../bin/pie_false_positive.so"}, "../bin/with_cfi": { "relro":"partial","canary":"no","nx":"yes","pie":"no","clangcfi":"yes","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_cfi"}, "../bin/with_partial_relro": { "relro":"partial","canary":"no","nx":"no","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/with_partial_relro"}, "../bin/protected": { "relro":"full","canary":"yes","nx":"yes","pie":"yes","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"no","fortified":"0","fortify-able":"2", "filename":"../bin/protected"}, "../bin/with_fortify": { "relro":"partial","canary":"no","nx":"yes","pie":"no","clangcfi":"no","safestack":"no","rpath":"no","runpath":"no","symbols":"yes","fortify_source":"yes","fortified":"1","fortify-able":"2", "filename":"../bin/with_fortify"}}
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/project/Makefile b/syft/file/cataloger/executable/test-fixtures/elf/project/Makefile
deleted file mode 100644
index 17edd3f81..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/project/Makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-### GCC Options ############################################
-CANARY := -fstack-protector
-NO_CANARY := -fno-stack-protector
-
-SHARED_OBJ := -shared
-
-RELRO := -z relro -z now
-PARTIAL_RELRO := -z relro
-NO_RELRO := -z norelro
-
-NX := -z noexecstack
-NO_NX := -z execstack
-
-PIE := -fpic -pie
-NO_PIE := -no-pie
-
-# deprecated
-RPATH := -Wl,--disable-new-dtags,-rpath,./libs
-
-# replaces RPATH (thus us mutually exclusive with it)
-RUNPATH := -Wl,-rpath,./libs
-
-GCCFLAGS := -g
-
-### Clang Options ############################################
-
-SAFE_STACK := -fsanitize=safe-stack
-
-CFI := -flto -fvisibility=hidden -fsanitize=cfi
-
-FORTIFY := -O2 -D_FORTIFY_SOURCE=2
-
-### Common Options ############################################
-
-SRC := main.c
-LIB_SRC := lib.c
-BIN := ../bin
-
-BINS := $(BIN)/no_protection $(BIN)/with_nx $(BIN)/pie_false_positive.so $(BIN)/with_pie $(BIN)/with_canary $(BIN)/with_relro $(BIN)/with_partial_relro $(BIN)/with_rpath $(BIN)/with_runpath $(BIN)/with_safestack $(BIN)/with_cfi $(BIN)/with_fortify $(BIN)/protected
-#.PHONY: verify $(BIN)/no_protection $(BIN)/with_nx $(BIN)/pie_false_positive.so $(BIN)/with_pie $(BIN)/with_canary $(BIN)/with_relro $(BIN)/with_partial_relro $(BIN)/with_rpath $(BIN)/with_runpath $(BIN)/with_safestack $(BIN)/with_cfi $(BIN)/with_fortify $(BIN)/protected
-.PHONY: verify clean all
-
-all: $(BINS)
-
-
-$(BIN)/no_protection : $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RUNPATH)
-
-$(BIN)/with_nx : $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NX) $(NO_RELRO) $(NO_PIE)
-
-$(BIN)/pie_false_positive.so: $(LIB_SRC)
- gcc $< -c -Wall -Werror -fpic $(LIB_SRC)
- gcc -shared -o $@ lib.o ; rm lib.o
-
-$(BIN)/with_pie: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(PIE)
-
-$(BIN)/with_canary: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE)
-
-$(BIN)/with_relro: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(RELRO) $(NO_PIE)
-
-$(BIN)/with_partial_relro: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(PARTIAL_RELRO) $(NO_PIE)
-
-$(BIN)/with_rpath: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RPATH)
-
-$(BIN)/with_runpath: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE) $(RUNPATH)
-
-$(BIN)/with_safestack: $(SRC)
- clang $< -o $@ $(SAFE_STACK)
-
-$(BIN)/with_cfi: $(SRC)
- clang $< -o $@ $(CFI)
-
-$(BIN)/with_fortify: $(SRC)
- clang $< -o $@ $(FORTIFY)
-
-#$(BIN)/with_selfrando: $(SRC)
-# srenv gcc $< -o $@ $(GCCFLAGS) $(NO_CANARY) $(NO_NX) $(NO_RELRO) $(NO_PIE)
-
-$(BIN)/protected: $(SRC)
- gcc $< -o $@ $(GCCFLAGS) $(CANARY) $(NX) $(RELRO) $(PIE)
-
-verify:
- @/bin/checksec --dir=$(BIN) --extended --output=json
-
-clean:
- rm -rf $(BINS)
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/project/lib.c b/syft/file/cataloger/executable/test-fixtures/elf/project/lib.c
deleted file mode 100644
index f665b71dc..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/project/lib.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include
-
-void foo(void)
-{
- puts("Share me!");
-}
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/project/lib.h b/syft/file/cataloger/executable/test-fixtures/elf/project/lib.h
deleted file mode 100644
index 15f9be76b..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/project/lib.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef foo_h__
-#define foo_h__
-
-extern void foo(void);
-
-#endif // foo_h__
\ No newline at end of file
diff --git a/syft/file/cataloger/executable/test-fixtures/elf/project/main.c b/syft/file/cataloger/executable/test-fixtures/elf/project/main.c
deleted file mode 100644
index 6bb5257ac..000000000
--- a/syft/file/cataloger/executable/test-fixtures/elf/project/main.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include
-#include
-#include
-
-// source: https://github.com/trailofbits/clang-cfi-showcase/blob/master/cfi_icall.c
-
-typedef int (*int_arg_fn)(int);
-typedef int (*float_arg_fn)(float);
-
-static int int_arg(int arg) {
- printf("In %s: (%d)\n", __FUNCTION__, arg);
- return 0;
-}
-
-static int float_arg(float arg) {
- printf("CFI should protect transfer to here\n");
- printf("In %s: (%f)\n", __FUNCTION__, (double)arg);
- return 0;
-}
-
-static int bad_int_arg(int arg) {
- printf("CFI will not protect transfer to here\n");
- printf("In %s: (%d)\n", __FUNCTION__, arg);
- return 0;
-}
-
-static int not_entry_point(int arg) {
- // nop sled for x86 / x86-64
- // these instructions act as a buffer
- // for an indirect control flow transfer to skip
- // a valid function entry point, but continue
- // to execute normal code
- __asm__ volatile (
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n" "nop\n"
- );
- printf("CFI ensures control flow only transfers to potentially valid destinations\n");
- printf("In %s: (%d)\n", __FUNCTION__, arg);
- // need to exit or the program will segfault anyway,
- // since the indirect call skipped the function preamble
- exit(arg);
-}
-
-struct foo {
- int_arg_fn int_funcs[1];
- int_arg_fn bad_int_funcs[1];
- float_arg_fn float_funcs[1];
- int_arg_fn not_entries[1];
-};
-
-// the struct aligns the function pointer arrays
-// so indexing past the end will reliably
-// call working function pointers
-static struct foo f = {
- .int_funcs = {int_arg},
- .bad_int_funcs = {bad_int_arg},
- .float_funcs = {float_arg},
- .not_entries = {(int_arg_fn)((uintptr_t)(not_entry_point)+0x20)}
-};
-
-void simple1() {
- char buf[16];
- fgets(buf, sizeof(buf), stdin);
- printf(buf);
-}
-
-void simple2() {
- char buf[16];
- scanf("%s", buf);
-}
-
-
-int main(int argc, char **argv) {
- if(argc != 2) {
- printf("Usage: %s