diff --git a/src/packagedcode/npm.py b/src/packagedcode/npm.py index 6081f489d1..779ff28166 100644 --- a/src/packagedcode/npm.py +++ b/src/packagedcode/npm.py @@ -444,7 +444,8 @@ def get_workspace_members(cls, workspaces, codebase, workspace_root_path): # Case 3: This is a complex glob pattern, we are doing a full codebase walk # and glob matching each resource else: - for resource in workspace_root_path: + workspace_root = codebase.get_resource(path=workspace_root_path) + for resource in workspace_root.walk(codebase): if NpmPackageJsonHandler.is_datafile(resource.location) and fnmatch.fnmatch( name=resource.location, pat=workspace_path, ): @@ -1155,6 +1156,10 @@ def parse(cls, location, package_only=False): yield models.PackageData.from_data(package_data, package_only) +class UnknownPnpmLockFormat(Exception): + pass + + class BasePnpmLockHandler(BaseNpmHandler): @classmethod @@ -1181,7 +1186,28 @@ def parse(cls, location, package_only=False): } major_v, minor_v = lockfile_version.split(".") - resolved_packages = lock_data.get("packages", []) + resolved_packages = lock_data.get("packages", {}) + dependency_relations = lock_data.get("snapshots", {}) + dependency_relations_by_purl = {} + if dependency_relations: + for purl_fields, relations in dependency_relations.items(): + clean_purl_fields = purl_fields.split("(")[0] + sections = clean_purl_fields.split("/") + namespace = None + if len(sections) == 2: + namespace, name_version = sections + elif len(sections) == 1: + name_version, = sections + name, version = name_version.split("@") + + purl = PackageURL( + type=cls.default_package_type, + name=name, + namespace=namespace, + version=version, + ).to_string() + dependency_relations_by_purl[purl] = relations + dependencies_by_purl = {} for purl_fields, data in resolved_packages.items(): @@ -1189,23 +1215,33 @@ def parse(cls, location, package_only=False): clean_purl_fields = purl_fields.split("(")[0] elif major_v == "5" or is_shrinkwrap: clean_purl_fields = purl_fields.split("_")[0] - else: + elif major_v == "9": clean_purl_fields = purl_fields - raise Exception(lockfile_version, purl_fields) + else: + message = f"Unknown pnpm lockfile format: {lockfile_version}" + raise UnknownPnpmLockFormat(message, purl_fields) sections = clean_purl_fields.split("/") - name_version= None + name_version = None + namespace = None if major_v == "6": if len(sections) == 2: - namespace = None _, name_version = sections elif len(sections) == 3: _, namespace, name_version = sections + elif len(sections) == 1: + name_version, = sections + + name, version = name_version.split("@") + elif major_v == "9": + if len(sections) == 2: + namespace, name_version = sections + elif len(sections) == 1: + name_version, = sections name, version = name_version.split("@") elif major_v == "5" or is_shrinkwrap: if len(sections) == 3: - namespace = None _, name, version = sections elif len(sections) == 4: _, namespace, name, version = sections @@ -1223,7 +1259,21 @@ def parse(cls, location, package_only=False): dependencies = data.get('dependencies') or {} optional_dependencies = data.get('optionalDependencies') or {} - transitive_peer_dependencies = data.get('transitivePeerDependencies') or {} + transitive_peer_dependencies = data.get('transitivePeerDependencies') or [] + + if purl in dependency_relations_by_purl: + dependency_relations = dependency_relations_by_purl.get(purl) + if dependency_relations: + deps = dependency_relations.get('dependencies') + if deps: + dependencies.update(deps) + optional_deps = dependency_relations.get('optionalDependencies') + if optional_deps: + optional_dependencies.update(optional_deps) + transitive_peer_deps = dependency_relations.get('transitivePeerDependencies') + if transitive_peer_deps: + transitive_peer_dependencies.extend(transitive_peer_deps) + peer_dependencies = data.get('peerDependencies') or {} peer_dependencies_meta = data.get('peerDependenciesMeta') or {} diff --git a/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView-pnpm-lock.yaml-expected b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView-pnpm-lock.yaml-expected new file mode 100644 index 0000000000..92f17e1447 --- /dev/null +++ b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView-pnpm-lock.yaml-expected @@ -0,0 +1,2732 @@ +[ + { + "type": "npm", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "lockfileVersion": "9.0" + }, + "dependencies": [ + { + "purl": "pkg:npm/%40babel/helper-string-parser@7.24.8", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": "@babel", + "name": "helper-string-parser", + "version": "7.24.8", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "a4ef4a86145cb94c869c95b0c848274494d22191e24febcc0f490f783faca3497b9b190c4f5f60de98d8f464e71f249c93f843ceaf9db56ff85609cc922a69b1", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/%40babel/helper-string-parser@7.24.8" + }, + "extra_data": { + "engines": { + "node": ">=6.9.0" + } + } + }, + { + "purl": "pkg:npm/%40babel/helper-validator-identifier@7.24.7", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": "@babel", + "name": "helper-validator-identifier", + "version": "7.24.7", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "ad1f8f05c43548c4030f217a5f4c31b46f10c8b0a0501d1e4401a0baa44b7e4080f3b97bc803fb7a1abc48d8fde8e3864cef0e055ef42a1b8561c2241d73a0d3", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/%40babel/helper-validator-identifier@7.24.7" + }, + "extra_data": { + "engines": { + "node": ">=6.9.0" + } + } + }, + { + "purl": "pkg:npm/%40babel/parser@7.25.6", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": "@babel", + "name": "parser", + "version": "7.25.6", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "b6b19d7c175b0f497564f99c27cdde37107dadb11ac7800b15317b7cddfce933186de0906f299ee5c3845d085b19729e6f019a07f279db0d66ae494c71b832e9", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/%40babel/types", + "extracted_requirement": "7.25.6", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/%40babel/parser@7.25.6" + }, + "extra_data": { + "engines": { + "node": ">=6.0.0" + }, + "hasBin": true + } + }, + { + "purl": "pkg:npm/%40babel/types@7.25.6", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": "@babel", + "name": "types", + "version": "7.25.6", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "fe5e36075ab1a46e9175f61fdf8dd4c35be60e378d8677945edce1a2313ba4381fa44ca9991848ea3d64af5ed7095bf80a097d1dd022418db1d06c0a9bbad60b", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/%40babel/helper-string-parser", + "extracted_requirement": "7.24.8", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/%40babel/helper-validator-identifier", + "extracted_requirement": "7.24.7", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/to-fast-properties", + "extracted_requirement": "2.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/%40babel/types@7.25.6" + }, + "extra_data": { + "engines": { + "node": ">=6.9.0" + } + } + }, + { + "purl": "pkg:npm/%40vue/compiler-sfc@2.7.16", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": "@vue", + "name": "compiler-sfc", + "version": "2.7.16", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "296849f64e675ee36dca03d4efeb75ad7e9b6997aa3982c47e8ad43e380d0c19cb89c7c70a88b8f07f3b43c5f22d93ab34db2686ec0aaada434168c415ee8492", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/%40babel/parser", + "extracted_requirement": "7.25.6", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/postcss", + "extracted_requirement": "8.4.47", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/source-map", + "extracted_requirement": "0.6.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/prettier", + "extracted_requirement": "2.8.8", + "scope": "optionalDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/%40vue/compiler-sfc@2.7.16" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/ansi-regex@2.1.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "ansi-regex", + "version": "2.1.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "4c81a74e9768f84dfea42c8096e66fb440f9a79c02a8b75ecc2ca13d9cca3dcc6f169944b788be5bb38e3422a0799153dfecb935965f38e4bf05d71a9e6d4c60", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/ansi-regex@2.1.1" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/anve-upload-upyun@1.0.8", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "anve-upload-upyun", + "version": "1.0.8", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "f7fdd37ce64ebd21bdd96588bf1232fa4ce30ff2b4eee3adb0c6e03c41f864cabdf23fd16aba0a452e3cc8299fa242dc9d92cbccd9f29583cf71177a8683746f", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/single-line-log", + "extracted_requirement": "1.1.2", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/upyun", + "extracted_requirement": "3.4.6", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/debug", + "extracted_requirement": null, + "scope": "transitivePeerDependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/anve-upload-upyun@1.0.8" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/asynckit@0.4.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "asynckit", + "version": "0.4.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "39e8bd387e2d461d18a94dc6c615fbf5d33f9b0560bdb64969235a464f9bb21923d12e5c7c772061a92b7818eb1f06ad5ca6f3f88a087582f1aca8a6d8c8d6d1", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/asynckit@0.4.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/axios@0.26.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "axios", + "version": "0.26.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "7cfc1c5f812f9d21ee22708c22d1210069da4845d1063b7387d7ceb6c13a1351baa7bbe5ede7447997b5d501dfd7cfbafbd811e4f6ca57fb0628d683f1868c78", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/follow-redirects", + "extracted_requirement": "1.15.9", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/debug", + "extracted_requirement": null, + "scope": "transitivePeerDependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/axios@0.26.1" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/base-64@1.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "base-64", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "9300cf205086c743591e8837e9d8feb478b03f840ccec67702031589404a234f95e67e14d2e7d30943219d0d3876269123c117fd070f7ea97bce5859ee3e3382", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/base-64@1.0.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/charenc@0.0.2", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "charenc", + "version": "0.0.2", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "cab2d0ff255415793383b10342c3e2784ff9dfed1195a593b3ec01aef5b7e9cca2949d9268359f978623eccb4b4d795e57db8429e7db00650fbf6fe2592a2844", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/charenc@0.0.2" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/code-point-at@1.1.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "code-point-at", + "version": "1.1.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "4690152900394fadf1123ebf82221b504b59c09e1414873766dbc4922694111ca5a9ef316f922fa9c80ebab64b6a1bfddc22ca7f1730e5823e0d9714051c8b5c", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/code-point-at@1.1.0" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/combined-stream@1.0.8", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "combined-stream", + "version": "1.0.8", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "1503783117ee25e1dfedc05b04c2455e12920eafb690002b06599106f72f144e410751d9297b5214048385d973f73398c3187c943767be630e7bffb971da0476", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/delayed-stream", + "extracted_requirement": "1.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/combined-stream@1.0.8" + }, + "extra_data": { + "engines": { + "node": ">= 0.8" + } + } + }, + { + "purl": "pkg:npm/crypt@0.0.2", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "crypt", + "version": "0.0.2", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "982c4196c1c5621f42f8756988469c7a6f051019cc5e053d832e3398d0be497019341ff589d829fdaba5149e058028bb18f1156dfca7834f761aa2f6936ae6a3", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/crypt@0.0.2" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/csstype@3.1.3", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "csstype", + "version": "3.1.3", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "335b9090c97cad02bfb330f42cd86dab120f2e98a61a6f2c381c14ee52e70a949b4f2637c9e53555cee5e0a4f9cd3e2cff23b11c7e4eeed22eb8b3829cb00347", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/csstype@3.1.3" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/delayed-stream@1.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "delayed-stream", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "672483ecd7fdd5a2c1d11c4be0a1ab28705797b11db350c098475ca156b05e72c3ed20e1a4d82db88236680920edaed04b8d63c4f499d7ba7855d1a730793731", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/delayed-stream@1.0.0" + }, + "extra_data": { + "engines": { + "node": ">=0.4.0" + } + } + }, + { + "purl": "pkg:npm/follow-redirects@1.15.9", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "follow-redirects", + "version": "1.15.9", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "81ec381ac5e2ccd81da11caa9b27cc1f20265ec64393a987912c59142cd6f60c256ed396e38083b586af33ecbeef6a83fd5ab6979e7490c179d834fc7ce2c9a9", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/debug", + "extracted_requirement": "*", + "scope": "peerDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/follow-redirects@1.15.9" + }, + "extra_data": { + "engines": { + "node": ">=4.0" + } + } + }, + { + "purl": "pkg:npm/form-data@4.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "form-data", + "version": "4.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "1131249521a2e6dd10319ba25e803f43abdc9f170b40fe6f76e812a6e0328ba4951a2d9c94f3e9fb180486e31a1c2fb31a09f7d4a776df95b7e5fec7ca491ac3", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/asynckit", + "extracted_requirement": "0.4.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/combined-stream", + "extracted_requirement": "1.0.8", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/mime-types", + "extracted_requirement": "2.1.35", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/form-data@4.0.0" + }, + "extra_data": { + "engines": { + "node": ">= 6" + } + } + }, + { + "purl": "pkg:npm/hmacsha1@1.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "hmacsha1", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "e053fa274a08f23a9bea02cb97db52c15768b1627f00a48627e1f061fe88c5ee0c51c124b2de2e5b3a5542b34e0a29f47f34d141b5d5f1e3e1794f168a20d807", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/hmacsha1@1.0.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/is-buffer@1.1.6", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "is-buffer", + "version": "1.1.6", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "35c7402f0a579139b966fbdb93ba303944af56f04a0e028fe7f7b07d71339e64057ece194666a739e2814e34558e46b7405a0de9727ef45dd44aa7c7a93694e7", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/is-buffer@1.1.6" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/is-fullwidth-code-point@1.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "is-fullwidth-code-point", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "d69a94a918e484f27d9a236af52c0c7ddbe2ea504971de9e171bdf6a2bd085a1f74a08ac7e2bae76f167b5d28e9b1b9e7bfefb97e14f8caad08d6be63e35ab47", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/number-is-nan", + "extracted_requirement": "1.0.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/is-fullwidth-code-point@1.0.0" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/is-promise@4.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "is-promise", + "version": "4.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "86fa6823a928ae124c9de8f6f3975283a9eed7e7babb1b3bcc6dc16009b96f2a83b2024d5b0c7333acfa8998808104784c9df42660533b0a99530dd69721f701", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/is-promise@4.0.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/md5@2.3.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "md5", + "version": "2.3.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "4f51884d898568ab8ef75bf1ca840c1444ecb7e3bbd5550f114df37b918dcc39b439674ff2fd7389368010f52bff790bb18dd27ed833db8d80d527ad4220cbee", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/charenc", + "extracted_requirement": "0.0.2", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/crypt", + "extracted_requirement": "0.0.2", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/is-buffer", + "extracted_requirement": "1.1.6", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/md5@2.3.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/mime-db@1.52.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "mime-db", + "version": "1.52.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "b0f538b95edd625bed589c70c311c3d0fba285536213b4f201b439496c43081f66518bce82ba103b061040e28f27c0886c4fb51135653a82b5502da7537818be", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/mime-db@1.52.0" + }, + "extra_data": { + "engines": { + "node": ">= 0.6" + } + } + }, + { + "purl": "pkg:npm/mime-types@2.1.35", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "mime-types", + "version": "2.1.35", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "64363e6cf9b9cd34c5f98a42ac053d9cad148080983d3d10b53d4d65616fe2cfbe4cd91c815693d20ebee11dae238323423cf2b07075cf1b962f9d21cda7978b", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/mime-db", + "extracted_requirement": "1.52.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/mime-types@2.1.35" + }, + "extra_data": { + "engines": { + "node": ">= 0.6" + } + } + }, + { + "purl": "pkg:npm/nanoid@3.3.7", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "nanoid", + "version": "3.3.7", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "792469a6370f21ab5120c0b553a52780ff1715ccfc31058641db75313050ecd6809af5c37ef3716ef595df1db2e8274451c8824ac0c70d065b858681f10128da", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/nanoid@3.3.7" + }, + "extra_data": { + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + }, + "hasBin": true + } + }, + { + "purl": "pkg:npm/number-is-nan@1.0.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "number-is-nan", + "version": "1.0.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "e236ed657340b1f65b0078a2aa32cf0620a5d7a7444b5cc8e07a73cf1c3ad5393e96817eb010c12b1d4808a28ac08a90eccd26167d539a437b7ae4a771680789", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/number-is-nan@1.0.1" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/picocolors@1.1.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "picocolors", + "version": "1.1.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "4d0f76981396d25dcb78c7b22d5ea6cf2fe45abf2591dfe1a7799383bc182bbcc986e052b6618c046d0175e0d94bf759c7522e91a5fa064d75cdc967db9a3503", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/picocolors@1.1.0" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/postcss@8.4.47", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "postcss", + "version": "8.4.47", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "e7aaf10aaec6fd77c1e04917abd1209f9182aae816bc316369f0ce4e121d301b08d798aa3ea479af5e537d2af560f61e108d7d61e6973026d8eaef3c63be862d", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/nanoid", + "extracted_requirement": "3.3.7", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/picocolors", + "extracted_requirement": "1.1.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/source-map-js", + "extracted_requirement": "1.2.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/postcss@8.4.47" + }, + "extra_data": { + "engines": { + "node": "^10 || ^12 || >=14" + } + } + }, + { + "purl": "pkg:npm/prettier@2.8.8", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "prettier", + "version": "2.8.8", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "b5d37ca901af363c380876d8f975e4d098025e7f50885db56b9e6b05ee4b24053e903c82e16427e3e6b09b65df936950324e5f2aea7d5e0cd366d1a48c174ff5", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/prettier@2.8.8" + }, + "extra_data": { + "engines": { + "node": ">=10.13.0" + }, + "hasBin": true + } + }, + { + "purl": "pkg:npm/single-line-log@1.1.2", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "single-line-log", + "version": "1.1.2", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "6b0cda6883ed60575ec4bafa4c1a5c65218f07a0f54489cd3bfa8d7ad81a265a0f0c5fc3d06915b4bbc6129f089df98b57b0b22f24397c844ffad54dfc999640", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/string-width", + "extracted_requirement": "1.0.2", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/single-line-log@1.1.2" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/source-map-js@1.2.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "source-map-js", + "version": "1.2.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "51758c2a12cec1529bef6f0852d40f5f17d853ebac7726ed52b2bff2e184f0240cbeb84ea70bf30c1c23d108522fb31073bbc8b084811bc550f3e203431a5f40", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/source-map-js@1.2.1" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/source-map@0.6.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "source-map", + "version": "0.6.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "52381aa6e99695b3219018334fb624739617513e3a17488abbc4865ead1b7303f9773fe1d0f963e9e9c9aa3cf565bab697959aa989eb55bc16396332177178ee", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/source-map@0.6.1" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/string-width@1.0.2", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "string-width", + "version": "1.0.2", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "d17b15a502e75425c725fc84b3cb42d33a53548af93ca2ac42d913dbd230ba99cf4e3b4f990df14ffe32091105f6162457fdccde4cdc513480653e9aea1f35b7", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/code-point-at", + "extracted_requirement": "1.1.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/is-fullwidth-code-point", + "extracted_requirement": "1.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/strip-ansi", + "extracted_requirement": "3.0.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/string-width@1.0.2" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/strip-ansi@3.0.1", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "strip-ansi", + "version": "3.0.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "561ba64926c1a834cff29d992ca8f8d148c1095e3ebfc6d4484a546f82a34605a4f696ea185e111058fa2846a089d6f67ff33a0330b41261720cd19ac3d382ce", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/ansi-regex", + "extracted_requirement": "2.1.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/strip-ansi@3.0.1" + }, + "extra_data": { + "engines": { + "node": ">=0.10.0" + } + } + }, + { + "purl": "pkg:npm/to-fast-properties@2.0.0", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "to-fast-properties", + "version": "2.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "fce68a2b4c58aecdc39b1458a8bff20dcf85c455156210e55cc8519afdf3f75e70d87175b67375a26077e788fc55418efe16d1cf20fa637b00eefec64bf71ea2", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/to-fast-properties@2.0.0" + }, + "extra_data": { + "engines": { + "node": ">=4" + } + } + }, + { + "purl": "pkg:npm/upyun@3.4.6", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "upyun", + "version": "3.4.6", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "4e1008ef0a0691513696c3aaf0c1586f439e83c6af39041b6375e65e66aad5a6558f372095c32e23f448981aeaf8a270ee75f7f6234a089298b3ae71880179dd", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/axios", + "extracted_requirement": "0.26.1", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/base-64", + "extracted_requirement": "1.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/form-data", + "extracted_requirement": "4.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/hmacsha1", + "extracted_requirement": "1.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/is-promise", + "extracted_requirement": "4.0.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/md5", + "extracted_requirement": "2.3.0", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/mime-types", + "extracted_requirement": "2.1.35", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/debug", + "extracted_requirement": null, + "scope": "transitivePeerDependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/upyun@3.4.6" + }, + "extra_data": { + "engines": { + "node": ">=8.0.0" + } + } + }, + { + "purl": "pkg:npm/vue-i18n@8.28.2", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "vue-i18n", + "version": "8.28.2", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "0b91998ecd6d62502a8f0ca669a08f0e30b21a8d746a3529862c00f76da32adf67eca3e9a91ee83353c2c18ce107f13bfa74f7c1f746de846b7b9ada213d6b28", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/vue", + "extracted_requirement": "^2", + "scope": "peerDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/vue-i18n@8.28.2" + }, + "extra_data": {} + }, + { + "purl": "pkg:npm/vue@2.7.16", + "extracted_requirement": null, + "scope": null, + "is_runtime": true, + "is_optional": false, + "is_pinned": true, + "is_direct": true, + "resolved_package": { + "type": "npm", + "namespace": null, + "name": "vue", + "version": "2.7.16", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": "e200ad157680037cd865d4e9e6ce07976b28ceec92b20cf88f2d449e904735fa4c6bd74ad59086eef8aa04f0b05ed9a073c9c7a94b00bb71b882d9979246374b", + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": true, + "extra_data": {}, + "dependencies": [ + { + "purl": "pkg:npm/%40vue/compiler-sfc", + "extracted_requirement": "2.7.16", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/csstype", + "extracted_requirement": "3.1.3", + "scope": "dependencies", + "is_runtime": false, + "is_optional": false, + "is_pinned": true, + "is_direct": false, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": "pkg:npm/vue@2.7.16" + }, + "extra_data": { + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details." + } + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_lock_yaml", + "purl": null + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/package.json b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/package.json new file mode 100644 index 0000000000..f083400f2b --- /dev/null +++ b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/package.json @@ -0,0 +1,21 @@ +{ + "name": "uview1.0", + "version": "1.0.0", + "main": "main.js", + "repository": { + "type": "git", + "url": "git+https://github.com/YanxinNet/uView.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/YanxinNet/uView/issues" + }, + "homepage": "https://github.com/YanxinNet/uView#readme", + "dependencies": { + "vue-i18n": "^8.20.0", + "anve-upload-upyun": "^1.0.8" + } + } + \ No newline at end of file diff --git a/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/pnpm-lock.yaml b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/pnpm-lock.yaml new file mode 100644 index 0000000000..01fcbbffed --- /dev/null +++ b/tests/packagedcode/data/npm/pnpm/pnpm-lock/v9/uView/pnpm-lock.yaml @@ -0,0 +1,312 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + anve-upload-upyun: + specifier: ^1.0.8 + version: 1.0.8 + vue-i18n: + specifier: ^8.20.0 + version: 8.28.2(vue@2.7.16) + +packages: + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@vue/compiler-sfc@2.7.16': + resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + anve-upload-upyun@1.0.8: + resolution: {integrity: sha512-9/3TfOZOvSG92WWIvxIy+kzjD/K07uOtsMbgPEH4ZMq98j/RaroKRS48yCmfokLcnZLLzNnylYPPcRd6hoN0bw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + hmacsha1@1.0.0: + resolution: {integrity: sha512-4FP6J0oI8jqb6gLLl9tSwVdosWJ/AKSGJ+HwYf6Ixe4MUcEkst4uWzpVQrNOCin0fzTRQbXV8ePheU8WiiDYBw==} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + single-line-log@1.1.2: + resolution: {integrity: sha512-awzaaIPtYFdexLr6TBpcZSGPB6D1RInNO/qNetgaJloPDF/D0GkVtLvGEp8InfmLV7CyLyQ5fIRP+tVN/JmWQA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + upyun@3.4.6: + resolution: {integrity: sha512-ThAI7woGkVE2lsOq8MFYb0Oeg8avOQQbY3XmXmaq1aZVjzcglcMuI/RImBrq+KJw7nX39iNKCJKYs65xiAF53Q==} + engines: {node: '>=8.0.0'} + + vue-i18n@8.28.2: + resolution: {integrity: sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==} + peerDependencies: + vue: ^2 + + vue@2.7.16: + resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==} + deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + +snapshots: + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@vue/compiler-sfc@2.7.16': + dependencies: + '@babel/parser': 7.25.6 + postcss: 8.4.47 + source-map: 0.6.1 + optionalDependencies: + prettier: 2.8.8 + + ansi-regex@2.1.1: {} + + anve-upload-upyun@1.0.8: + dependencies: + single-line-log: 1.1.2 + upyun: 3.4.6 + transitivePeerDependencies: + - debug + + asynckit@0.4.0: {} + + axios@0.26.1: + dependencies: + follow-redirects: 1.15.9 + transitivePeerDependencies: + - debug + + base-64@1.0.0: {} + + charenc@0.0.2: {} + + code-point-at@1.1.0: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + crypt@0.0.2: {} + + csstype@3.1.3: {} + + delayed-stream@1.0.0: {} + + follow-redirects@1.15.9: {} + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + hmacsha1@1.0.0: {} + + is-buffer@1.1.6: {} + + is-fullwidth-code-point@1.0.0: + dependencies: + number-is-nan: 1.0.1 + + is-promise@4.0.0: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + nanoid@3.3.7: {} + + number-is-nan@1.0.1: {} + + picocolors@1.1.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + prettier@2.8.8: + optional: true + + single-line-log@1.1.2: + dependencies: + string-width: 1.0.2 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + string-width@1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + to-fast-properties@2.0.0: {} + + upyun@3.4.6: + dependencies: + axios: 0.26.1 + base-64: 1.0.0 + form-data: 4.0.0 + hmacsha1: 1.0.0 + is-promise: 4.0.0 + md5: 2.3.0 + mime-types: 2.1.35 + transitivePeerDependencies: + - debug + + vue-i18n@8.28.2(vue@2.7.16): + dependencies: + vue: 2.7.16 + + vue@2.7.16: + dependencies: + '@vue/compiler-sfc': 2.7.16 + csstype: 3.1.3 diff --git a/tests/packagedcode/data/npm/workspace/teleport/check-redirects-expected.json b/tests/packagedcode/data/npm/workspace/teleport/check-redirects-expected.json new file mode 100644 index 0000000000..aeffce08c4 --- /dev/null +++ b/tests/packagedcode/data/npm/workspace/teleport/check-redirects-expected.json @@ -0,0 +1,364 @@ +{ + "packages": [ + { + "type": "npm", + "namespace": null, + "name": "check-redirects", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "packageManager": "pnpm@9.8.0" + }, + "repository_homepage_url": "https://www.npmjs.com/package/check-redirects", + "repository_download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "api_data_url": "https://registry.npmjs.org/check-redirects/1.0.0", + "package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "check-redirects/package.json" + ], + "datasource_ids": [ + "npm_package_json" + ], + "purl": "pkg:npm/check-redirects@1.0.0" + }, + { + "type": "npm", + "namespace": null, + "name": "check-redirects", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "packageManager": "pnpm@9.8.0" + }, + "repository_homepage_url": "https://www.npmjs.com/package/check-redirects", + "repository_download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "api_data_url": "https://registry.npmjs.org/check-redirects/1.0.0", + "package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "check-redirects/package.json" + ], + "datasource_ids": [ + "npm_package_json" + ], + "purl": "pkg:npm/check-redirects@1.0.0" + } + ], + "dependencies": [ + { + "purl": "pkg:npm/yargs", + "extracted_requirement": "^17.7.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/yargs?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + }, + { + "purl": "pkg:npm/jest", + "extracted_requirement": "^29.7.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/jest?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + }, + { + "purl": "pkg:npm/memfs", + "extracted_requirement": "^4.11.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/memfs?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + }, + { + "purl": "pkg:npm/yargs", + "extracted_requirement": "^17.7.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/yargs?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + }, + { + "purl": "pkg:npm/jest", + "extracted_requirement": "^29.7.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/jest?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + }, + { + "purl": "pkg:npm/memfs", + "extracted_requirement": "^4.11.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:npm/memfs?uuid=fixed-uid-done-for-testing-5642512d1758", + "for_package_uid": "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_path": "check-redirects/package.json", + "datasource_id": "npm_package_json" + } + ], + "files": [ + { + "path": "check-redirects", + "type": "directory", + "package_data": [], + "for_packages": [ + "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "check-redirects/check-redirects.js", + "type": "file", + "package_data": [], + "for_packages": [ + "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "check-redirects/package.json", + "type": "file", + "package_data": [ + { + "type": "npm", + "namespace": null, + "name": "check-redirects", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "packageManager": "pnpm@9.8.0" + }, + "dependencies": [ + { + "purl": "pkg:npm/yargs", + "extracted_requirement": "^17.7.2", + "scope": "dependencies", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/jest", + "extracted_requirement": "^29.7.0", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + }, + { + "purl": "pkg:npm/memfs", + "extracted_requirement": "^4.11.1", + "scope": "devDependencies", + "is_runtime": false, + "is_optional": true, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": "https://www.npmjs.com/package/check-redirects", + "repository_download_url": "https://registry.npmjs.org/check-redirects/-/check-redirects-1.0.0.tgz", + "api_data_url": "https://registry.npmjs.org/check-redirects/1.0.0", + "datasource_id": "npm_package_json", + "purl": "pkg:npm/check-redirects@1.0.0" + } + ], + "for_packages": [ + "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "check-redirects/pnpm-workspace.yaml", + "type": "file", + "package_data": [ + { + "type": "npm", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "JavaScript", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "workspaces": [ + "**" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pnpm_workspace_yaml", + "purl": null + } + ], + "for_packages": [ + "pkg:npm/check-redirects@1.0.0?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/npm/workspace/teleport/check-redirects/check-redirects.js b/tests/packagedcode/data/npm/workspace/teleport/check-redirects/check-redirects.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/packagedcode/data/npm/workspace/teleport/check-redirects/package.json b/tests/packagedcode/data/npm/workspace/teleport/check-redirects/package.json new file mode 100644 index 0000000000..5b2ded3cd2 --- /dev/null +++ b/tests/packagedcode/data/npm/workspace/teleport/check-redirects/package.json @@ -0,0 +1,18 @@ +{ + "name": "check-redirects", + "version": "1.0.0", + "type": "module", + "scripts": { + "check-redirects": "node index.js", + "test": "NODE_OPTIONS=--experimental-vm-modules jest" + }, + "dependencies": { + "yargs": "^17.7.2" + }, + "devDependencies": { + "jest": "^29.7.0", + "memfs": "^4.11.1" + }, + "packageManager": "pnpm@9.8.0" + } + \ No newline at end of file diff --git a/tests/packagedcode/data/npm/workspace/teleport/check-redirects/pnpm-workspace.yaml b/tests/packagedcode/data/npm/workspace/teleport/check-redirects/pnpm-workspace.yaml new file mode 100644 index 0000000000..5ff223a40e --- /dev/null +++ b/tests/packagedcode/data/npm/workspace/teleport/check-redirects/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +# https://github.com/pnpm/pnpm/issues/2412 +packages: + - "**" diff --git a/tests/packagedcode/test_npm.py b/tests/packagedcode/test_npm.py index 2e5d5e4f33..ea4b78ed41 100644 --- a/tests/packagedcode/test_npm.py +++ b/tests/packagedcode/test_npm.py @@ -394,6 +394,12 @@ def test_parse_pnpm_lock_yaml_v6(self): packages = npm.PnpmLockYamlHandler.parse(test_file) self.check_packages_data(packages, expected_loc, regen=REGEN_TEST_FIXTURES) + def test_parse_pnpm_lock_yaml_v9(self): + test_file = self.get_test_loc('npm/pnpm/pnpm-lock/v9/uView/pnpm-lock.yaml') + expected_loc = self.get_test_loc('npm/pnpm/pnpm-lock/v9/uView-pnpm-lock.yaml-expected') + packages = npm.PnpmLockYamlHandler.parse(test_file) + self.check_packages_data(packages, expected_loc, regen=REGEN_TEST_FIXTURES) + def test_parse_pnpm_shrinkwrap_yaml(self): test_file = self.get_test_loc('npm/pnpm/shrinkwrap/v3/vuepack/shrinkwrap.yaml') expected_loc = self.get_test_loc('npm/pnpm/shrinkwrap/v3/vuepack-shrinkwrap.yaml-expected') @@ -415,6 +421,15 @@ def test_pnpm_scan_with_workspace_package_json(self): expected_file, result_file, remove_uuid=True, regen=REGEN_TEST_FIXTURES ) + def test_pnpm_scan_with_patterns_in_workspace(self): + test_folder = self.get_test_loc('npm/workspace/teleport/check-redirects/') + expected_file = self.get_test_loc('npm/workspace/teleport/check-redirects-expected.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_folder, '--json', result_file]) + check_json_scan( + expected_file, result_file, remove_uuid=True, regen=REGEN_TEST_FIXTURES + ) + def test_pnpm_scan_with_simple_package_json(self): test_folder = self.get_test_loc('npm/pnpm/pnpm-lock/v6/tabler/') expected_file = self.get_test_loc('npm/pnpm/pnpm-lock/v6/tabler-scan.expected.json')