diff --git a/.gitignore b/.gitignore index 591acdd4..914271f9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ __pycache__/ *.pyc npm-debug.log +.idea # tox testing /.tox/ @@ -22,4 +23,4 @@ reports/ venv/ # Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json \ No newline at end of file +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/lib/dependencies/build-dep-graph.ts b/lib/dependencies/build-dep-graph.ts new file mode 100644 index 00000000..802d852a --- /dev/null +++ b/lib/dependencies/build-dep-graph.ts @@ -0,0 +1,50 @@ +import { DepGraph } from '@snyk/dep-graph'; +import { depTreeToGraph, DepTree } from '@snyk/dep-graph/dist/legacy'; + +type PackageName = string; + +// This is a partially dep tree: every package exists once, all additional reference will have "true" as the value +export interface PartialDepTree { + name?: string; + version?: string; + dependencies?: Dependencies; + labels?: { + [key: string]: string; + }; +} + +type Dependencies = { + [depName: string]: PartialDepTree | 'true'; +}; + +export function buildDepGraph( + partialDepTree: PartialDepTree +): Promise { + const packageToDepTreeMap = new Map(); + + const queue: Dependencies[] = [partialDepTree.dependencies]; + const referencesToUpdate: { key: string; dependencies: Dependencies }[] = []; + while (queue.length > 0) { + const dependencies = queue.pop(); + if (!dependencies) continue; + + for (const [key, dependencyDepTree] of Object.entries(dependencies)) { + if (dependencyDepTree === 'true') { + referencesToUpdate.push({ key, dependencies }); + } else { + packageToDepTreeMap.set(key, dependencyDepTree); + queue.push(dependencyDepTree.dependencies); + } + } + } + + referencesToUpdate.forEach(({ key, dependencies }) => { + if (!packageToDepTreeMap.get(key)) { + // this should never happen + throw new Error(`key ${key} not found in packageToDepTreeMap`); + } + dependencies[key] = packageToDepTreeMap.get(key); + }); + + return depTreeToGraph(partialDepTree as DepTree, 'pip'); +} diff --git a/lib/dependencies/index.ts b/lib/dependencies/index.ts index 5de14f25..38afaca7 100644 --- a/lib/dependencies/index.ts +++ b/lib/dependencies/index.ts @@ -45,7 +45,7 @@ export async function getDependencies( baseargs = ['run', 'python']; } - const [plugin, pkg] = await Promise.all([ + const [plugin, dependencyGraph] = await Promise.all([ getMetaData(command, baseargs, root, targetFile), inspectInstalledDeps( command, @@ -57,5 +57,5 @@ export async function getDependencies( options.args ), ]); - return { plugin, package: pkg }; + return { plugin, dependencyGraph }; } diff --git a/lib/dependencies/inspect-implementation.ts b/lib/dependencies/inspect-implementation.ts index af77a3a1..77baac8f 100644 --- a/lib/dependencies/inspect-implementation.ts +++ b/lib/dependencies/inspect-implementation.ts @@ -3,7 +3,8 @@ import * as path from 'path'; import * as tmp from 'tmp'; import * as subProcess from './sub-process'; -import { legacyCommon } from '@snyk/cli-interface'; +import { DepGraph } from '@snyk/dep-graph'; +import { buildDepGraph, PartialDepTree } from './build-dep-graph'; import { FILENAMES } from '../types'; import { EmptyManifestError, RequiredPackagesMissingError } from '../errors'; @@ -118,7 +119,7 @@ export async function inspectInstalledDeps( allowMissing: boolean, includeDevDeps: boolean, args?: string[] -): Promise { +): Promise { const tempDirObj = tmp.dirSync({ unsafeCleanup: true, }); @@ -145,7 +146,8 @@ export async function inspectInstalledDeps( } ); - return JSON.parse(output) as legacyCommon.DepTree; + const result = JSON.parse(output) as PartialDepTree; + return buildDepGraph(result); } catch (error) { if (typeof error === 'string') { const emptyManifestMsg = 'No dependencies detected in manifest.'; diff --git a/package.json b/package.json index c463751f..1abea85e 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,15 @@ "author": "snyk.io", "license": "Apache-2.0", "dependencies": { - "@snyk/cli-interface": "^2.0.3", + "@snyk/cli-interface": "^2.11.2", + "@snyk/dep-graph": "^1.28.1", "snyk-poetry-lockfile-parser": "^1.1.7", "tmp": "0.2.1" }, "devDependencies": { "@snyk/types-tap": "^1.1.0", "@types/jest": "^24.9.0", - "@types/node": "8.10.60", + "@types/node": "^14.14.31", "@types/tmp": "^0.1.0", "@typescript-eslint/eslint-plugin": "^3.8.0", "@typescript-eslint/parser": "^3.8.0", diff --git a/pysrc/pip_resolve.py b/pysrc/pip_resolve.py index 1f67f8d0..9a5393d9 100644 --- a/pysrc/pip_resolve.py +++ b/pysrc/pip_resolve.py @@ -63,7 +63,7 @@ def create_tree_of_packages_dependencies( p.key.lower() in lowercase_pkgs_names or (p.project_name and p.project_name.lower()) in lowercase_pkgs_names] - def create_children_recursive(root_package, key_tree, ancestors): + def create_children_recursive(root_package, key_tree, ancestors, all_packages_map): root_name = root_package[NAME].lower() if root_name not in key_tree: msg = 'Required packages missing: ' + root_name @@ -80,15 +80,21 @@ def create_children_recursive(root_package, key_tree, ancestors): if child_dist.project_name.lower() in ancestors: continue + if DEPENDENCIES not in root_package: + root_package[DEPENDENCIES] = {} + + if child_dist.project_name.lower() in all_packages_map: + root_package[DEPENDENCIES][child_dist.project_name] = 'true' + continue + child_package = { NAME: child_dist.project_name.lower(), VERSION: child_dist.installed_version, } - create_children_recursive(child_package, key_tree, ancestors) - if DEPENDENCIES not in root_package: - root_package[DEPENDENCIES] = {} + create_children_recursive(child_package, key_tree, ancestors, all_packages_map) root_package[DEPENDENCIES][child_dist.project_name] = child_package + all_packages_map[child_dist.project_name.lower()] = 'true' return root_package def create_dir_as_root(): @@ -113,13 +119,14 @@ def create_package_as_root(package, dir_as_root): } return package_as_root dir_as_root = create_dir_as_root() + all_packages_map = {} for package in packages_as_dist_obj: package_as_root = create_package_as_root(package, dir_as_root) if only_provenance: package_as_root[LABELS] = {PROVENANCE: format_provenance_label(tlr_by_key[package_as_root[NAME]].provenance)} dir_as_root[DEPENDENCIES][package_as_root[NAME]] = package_as_root else: - package_tree = create_children_recursive(package_as_root, key_tree, set([])) + package_tree = create_children_recursive(package_as_root, key_tree, set([]), all_packages_map) dir_as_root[DEPENDENCIES][package_as_root[NAME]] = package_tree return dir_as_root @@ -278,7 +285,7 @@ def create_dependencies_tree_by_req_file_path(requirements_file_path, # build a tree of dependencies package_tree = create_tree_of_packages_dependencies( - dist_tree, top_level_requirements, requirements_file_path, allow_missing, only_provenance) + dist_tree, top_level_requirements, requirements_file_path, allow_missing, only_provenance) print(json.dumps(package_tree)) diff --git a/test/fixtures/dence-dep-graph/expected.json b/test/fixtures/dence-dep-graph/expected.json new file mode 100644 index 00000000..1f3f5837 --- /dev/null +++ b/test/fixtures/dence-dep-graph/expected.json @@ -0,0 +1,2374 @@ +{ + "schemaVersion": "1.2.0", + "pkgManager": { + "name": "pip" + }, + "pkgs": [ + { + "id": "pip--62-01iNczXpgA9L@0.0.0", + "info": { + "name": "pip--62-01iNczXpgA9L", + "version": "0.0.0" + } + }, + { + "id": "attrs@20.2.0", + "info": { + "name": "attrs", + "version": "20.2.0" + } + }, + { + "id": "cattrs@1.0.0", + "info": { + "name": "cattrs", + "version": "1.0.0" + } + }, + { + "id": "six@1.15.0", + "info": { + "name": "six", + "version": "1.15.0" + } + }, + { + "id": "python-dateutil@2.8.1", + "info": { + "name": "python-dateutil", + "version": "2.8.1" + } + }, + { + "id": "typing-extensions@3.7.4.3", + "info": { + "name": "typing-extensions", + "version": "3.7.4.3" + } + }, + { + "id": "jsii@1.12.0", + "info": { + "name": "jsii", + "version": "1.12.0" + } + }, + { + "id": "publication@0.0.3", + "info": { + "name": "publication", + "version": "0.0.3" + } + }, + { + "id": "aws-cdk.cloud-assembly-schema@1.63.0", + "info": { + "name": "aws-cdk.cloud-assembly-schema", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.cx-api@1.63.0", + "info": { + "name": "aws-cdk.cx-api", + "version": "1.63.0" + } + }, + { + "id": "constructs@3.0.4", + "info": { + "name": "constructs", + "version": "3.0.4" + } + }, + { + "id": "aws-cdk.core@1.63.0", + "info": { + "name": "aws-cdk.core", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.assets@1.63.0", + "info": { + "name": "aws-cdk.assets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.region-info@1.63.0", + "info": { + "name": "aws-cdk.region-info", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-iam@1.63.0", + "info": { + "name": "aws-cdk.aws-iam", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-autoscaling-common@1.63.0", + "info": { + "name": "aws-cdk.aws-autoscaling-common", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-cloudwatch@1.63.0", + "info": { + "name": "aws-cdk.aws-cloudwatch", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-applicationautoscaling@1.63.0", + "info": { + "name": "aws-cdk.aws-applicationautoscaling", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codeguruprofiler@1.63.0", + "info": { + "name": "aws-cdk.aws-codeguruprofiler", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-kms@1.63.0", + "info": { + "name": "aws-cdk.aws-kms", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-events@1.63.0", + "info": { + "name": "aws-cdk.aws-events", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-s3@1.63.0", + "info": { + "name": "aws-cdk.aws-s3", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-s3-assets@1.63.0", + "info": { + "name": "aws-cdk.aws-s3-assets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-logs@1.63.0", + "info": { + "name": "aws-cdk.aws-logs", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-ssm@1.63.0", + "info": { + "name": "aws-cdk.aws-ssm", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-ec2@1.63.0", + "info": { + "name": "aws-cdk.aws-ec2", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-efs@1.63.0", + "info": { + "name": "aws-cdk.aws-efs", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-sqs@1.63.0", + "info": { + "name": "aws-cdk.aws-sqs", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-lambda@1.63.0", + "info": { + "name": "aws-cdk.aws-lambda", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-route53@1.63.0", + "info": { + "name": "aws-cdk.aws-route53", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-certificatemanager@1.63.0", + "info": { + "name": "aws-cdk.aws-certificatemanager", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-elasticloadbalancingv2@1.63.0", + "info": { + "name": "aws-cdk.aws-elasticloadbalancingv2", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-apigateway@1.63.0", + "info": { + "name": "aws-cdk.aws-apigateway", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-elasticloadbalancing@1.63.0", + "info": { + "name": "aws-cdk.aws-elasticloadbalancing", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-sns@1.63.0", + "info": { + "name": "aws-cdk.aws-sns", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-autoscaling@1.63.0", + "info": { + "name": "aws-cdk.aws-autoscaling", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-sns-subscriptions@1.63.0", + "info": { + "name": "aws-cdk.aws-sns-subscriptions", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-autoscaling-hooktargets@1.63.0", + "info": { + "name": "aws-cdk.aws-autoscaling-hooktargets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-cloudformation@1.63.0", + "info": { + "name": "aws-cdk.aws-cloudformation", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.custom-resources@1.63.0", + "info": { + "name": "aws-cdk.custom-resources", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-ecr@1.63.0", + "info": { + "name": "aws-cdk.aws-ecr", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-ecr-assets@1.63.0", + "info": { + "name": "aws-cdk.aws-ecr-assets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-cloudfront@1.63.0", + "info": { + "name": "aws-cdk.aws-cloudfront", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-cognito@1.63.0", + "info": { + "name": "aws-cdk.aws-cognito", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-route53-targets@1.63.0", + "info": { + "name": "aws-cdk.aws-route53-targets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-sam@1.63.0", + "info": { + "name": "aws-cdk.aws-sam", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-secretsmanager@1.63.0", + "info": { + "name": "aws-cdk.aws-secretsmanager", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-servicediscovery@1.63.0", + "info": { + "name": "aws-cdk.aws-servicediscovery", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-ecs@1.63.0", + "info": { + "name": "aws-cdk.aws-ecs", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-batch@1.63.0", + "info": { + "name": "aws-cdk.aws-batch", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codecommit@1.63.0", + "info": { + "name": "aws-cdk.aws-codecommit", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codebuild@1.63.0", + "info": { + "name": "aws-cdk.aws-codebuild", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codedeploy@1.63.0", + "info": { + "name": "aws-cdk.aws-codedeploy", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codepipeline@1.63.0", + "info": { + "name": "aws-cdk.aws-codepipeline", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-kinesis@1.63.0", + "info": { + "name": "aws-cdk.aws-kinesis", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-stepfunctions@1.63.0", + "info": { + "name": "aws-cdk.aws-stepfunctions", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-events-targets@1.63.0", + "info": { + "name": "aws-cdk.aws-events-targets", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-servicecatalog@1.63.0", + "info": { + "name": "aws-cdk.aws-servicecatalog", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-codepipeline-actions@1.63.0", + "info": { + "name": "aws-cdk.aws-codepipeline-actions", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.aws-dynamodb@1.63.0", + "info": { + "name": "aws-cdk.aws-dynamodb", + "version": "1.63.0" + } + }, + { + "id": "aws-cdk.pipelines@1.63.0", + "info": { + "name": "aws-cdk.pipelines", + "version": "1.63.0" + } + } + ], + "graph": { + "rootNodeId": "root-node", + "nodes": [ + { + "nodeId": "root-node", + "pkgId": "pip--62-01iNczXpgA9L@0.0.0", + "deps": [ + { + "nodeId": "attrs@20.2.0" + }, + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-apigateway@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-applicationautoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-autoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-autoscaling-common@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-autoscaling-hooktargets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-batch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudformation@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudfront@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codebuild@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codecommit@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codedeploy@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codeguruprofiler@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline-actions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cognito@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-dynamodb@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-efs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events-targets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kinesis@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53-targets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-secretsmanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-servicecatalog@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-servicediscovery@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns-subscriptions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ssm@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-stepfunctions@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.custom-resources@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "aws-cdk.pipelines@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "cattrs@1.0.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + }, + { + "nodeId": "python-dateutil@2.8.1" + }, + { + "nodeId": "six@1.15.0" + }, + { + "nodeId": "typing-extensions@3.7.4.3" + } + ] + }, + { + "nodeId": "attrs@20.2.0", + "pkgId": "attrs@20.2.0", + "deps": [] + }, + { + "nodeId": "cattrs@1.0.0", + "pkgId": "cattrs@1.0.0", + "deps": [ + { + "nodeId": "attrs@20.2.0" + } + ] + }, + { + "nodeId": "six@1.15.0", + "pkgId": "six@1.15.0", + "deps": [] + }, + { + "nodeId": "python-dateutil@2.8.1", + "pkgId": "python-dateutil@2.8.1", + "deps": [ + { + "nodeId": "six@1.15.0" + } + ] + }, + { + "nodeId": "typing-extensions@3.7.4.3", + "pkgId": "typing-extensions@3.7.4.3", + "deps": [] + }, + { + "nodeId": "jsii@1.12.0", + "pkgId": "jsii@1.12.0", + "deps": [ + { + "nodeId": "attrs@20.2.0" + }, + { + "nodeId": "cattrs@1.0.0" + }, + { + "nodeId": "python-dateutil@2.8.1" + }, + { + "nodeId": "typing-extensions@3.7.4.3" + } + ] + }, + { + "nodeId": "publication@0.0.3", + "pkgId": "publication@0.0.3", + "deps": [] + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0", + "pkgId": "aws-cdk.cloud-assembly-schema@1.63.0", + "deps": [ + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0", + "pkgId": "aws-cdk.cx-api@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "constructs@3.0.4", + "pkgId": "constructs@3.0.4", + "deps": [ + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.core@1.63.0", + "pkgId": "aws-cdk.core@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.assets@1.63.0", + "pkgId": "aws-cdk.assets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.region-info@1.63.0", + "pkgId": "aws-cdk.region-info@1.63.0", + "deps": [ + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0", + "pkgId": "aws-cdk.aws-iam@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-autoscaling-common@1.63.0", + "pkgId": "aws-cdk.aws-autoscaling-common@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0", + "pkgId": "aws-cdk.aws-cloudwatch@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-applicationautoscaling@1.63.0", + "pkgId": "aws-cdk.aws-applicationautoscaling@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-autoscaling-common@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codeguruprofiler@1.63.0", + "pkgId": "aws-cdk.aws-codeguruprofiler@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0", + "pkgId": "aws-cdk.aws-kms@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0", + "pkgId": "aws-cdk.aws-events@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0", + "pkgId": "aws-cdk.aws-s3@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0", + "pkgId": "aws-cdk.aws-s3-assets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0", + "pkgId": "aws-cdk.aws-logs@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-ssm@1.63.0", + "pkgId": "aws-cdk.aws-ssm@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0", + "pkgId": "aws-cdk.aws-ec2@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ssm@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-efs@1.63.0", + "pkgId": "aws-cdk.aws-efs@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0", + "pkgId": "aws-cdk.aws-sqs@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0", + "pkgId": "aws-cdk.aws-lambda@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-applicationautoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codeguruprofiler@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-efs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0", + "pkgId": "aws-cdk.aws-route53@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0", + "pkgId": "aws-cdk.aws-certificatemanager@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0", + "pkgId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-apigateway@1.63.0", + "pkgId": "aws-cdk.aws-apigateway@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0", + "pkgId": "aws-cdk.aws-elasticloadbalancing@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0", + "pkgId": "aws-cdk.aws-sns@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-autoscaling@1.63.0", + "pkgId": "aws-cdk.aws-autoscaling@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-autoscaling-common@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-sns-subscriptions@1.63.0", + "pkgId": "aws-cdk.aws-sns-subscriptions@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-autoscaling-hooktargets@1.63.0", + "pkgId": "aws-cdk.aws-autoscaling-hooktargets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-autoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns-subscriptions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-cloudformation@1.63.0", + "pkgId": "aws-cdk.aws-cloudformation@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.custom-resources@1.63.0", + "pkgId": "aws-cdk.custom-resources@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudformation@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0", + "pkgId": "aws-cdk.aws-ecr@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.custom-resources@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-ecr-assets@1.63.0", + "pkgId": "aws-cdk.aws-ecr-assets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-cloudfront@1.63.0", + "pkgId": "aws-cdk.aws-cloudfront@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-cognito@1.63.0", + "pkgId": "aws-cdk.aws-cognito@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.custom-resources@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-route53-targets@1.63.0", + "pkgId": "aws-cdk.aws-route53-targets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-apigateway@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudfront@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cognito@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-sam@1.63.0", + "pkgId": "aws-cdk.aws-sam@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-secretsmanager@1.63.0", + "pkgId": "aws-cdk.aws-secretsmanager@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-servicediscovery@1.63.0", + "pkgId": "aws-cdk.aws-servicediscovery@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-ecs@1.63.0", + "pkgId": "aws-cdk.aws-ecs@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-applicationautoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-autoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-autoscaling-hooktargets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-certificatemanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-route53-targets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-secretsmanager@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-servicediscovery@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ssm@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-batch@1.63.0", + "pkgId": "aws-cdk.aws-batch@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codecommit@1.63.0", + "pkgId": "aws-cdk.aws-codecommit@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codebuild@1.63.0", + "pkgId": "aws-cdk.aws-codebuild@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codecommit@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-secretsmanager@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.region-info@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codedeploy@1.63.0", + "pkgId": "aws-cdk.aws-codedeploy@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-autoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancing@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-elasticloadbalancingv2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codepipeline@1.63.0", + "pkgId": "aws-cdk.aws-codepipeline@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-kinesis@1.63.0", + "pkgId": "aws-cdk.aws-kinesis@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-stepfunctions@1.63.0", + "pkgId": "aws-cdk.aws-stepfunctions@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-logs@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-events-targets@1.63.0", + "pkgId": "aws-cdk.aws-events-targets@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-batch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codebuild@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kinesis@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns-subscriptions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sqs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-stepfunctions@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-servicecatalog@1.63.0", + "pkgId": "aws-cdk.aws-servicecatalog@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-codepipeline-actions@1.63.0", + "pkgId": "aws-cdk.aws-codepipeline-actions@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudformation@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codebuild@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codecommit@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codedeploy@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ec2@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecr@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-ecs@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events-targets@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-servicecatalog@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-sns-subscriptions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-stepfunctions@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.aws-dynamodb@1.63.0", + "pkgId": "aws-cdk.aws-dynamodb@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-applicationautoscaling@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-cloudwatch@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-kms@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-lambda@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.custom-resources@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + }, + { + "nodeId": "aws-cdk.pipelines@1.63.0", + "pkgId": "aws-cdk.pipelines@1.63.0", + "deps": [ + { + "nodeId": "aws-cdk.aws-cloudformation@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codebuild@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-codepipeline-actions@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-events@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-iam@1.63.0" + }, + { + "nodeId": "aws-cdk.aws-s3-assets@1.63.0" + }, + { + "nodeId": "aws-cdk.cloud-assembly-schema@1.63.0" + }, + { + "nodeId": "aws-cdk.core@1.63.0" + }, + { + "nodeId": "aws-cdk.cx-api@1.63.0" + }, + { + "nodeId": "constructs@3.0.4" + }, + { + "nodeId": "jsii@1.12.0" + }, + { + "nodeId": "publication@0.0.3" + } + ] + } + ] + } +} diff --git a/test/fixtures/dence-dep-graph/pip_resolve_output.json b/test/fixtures/dence-dep-graph/pip_resolve_output.json new file mode 100644 index 00000000..236693cb --- /dev/null +++ b/test/fixtures/dence-dep-graph/pip_resolve_output.json @@ -0,0 +1,1546 @@ +{ + "name": "pip--62-01iNczXpgA9L", + "version": "0.0.0", + "dependencies": { + "attrs": { + "name": "attrs", + "version": "20.2.0" + }, + "aws-cdk.assets": { + "name": "aws-cdk.assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": { + "name": "aws-cdk.core", + "version": "1.63.0", + "dependencies": { + "aws-cdk.cloud-assembly-schema": { + "name": "aws-cdk.cloud-assembly-schema", + "version": "1.63.0", + "dependencies": { + "jsii": { + "name": "jsii", + "version": "1.12.0", + "dependencies": { + "attrs": { + "name": "attrs", + "version": "20.2.0" + }, + "cattrs": { + "name": "cattrs", + "version": "1.0.0", + "dependencies": { + "attrs": "true" + } + }, + "python-dateutil": { + "name": "python-dateutil", + "version": "2.8.1", + "dependencies": { + "six": { + "name": "six", + "version": "1.15.0" + } + } + }, + "typing-extensions": { + "name": "typing-extensions", + "version": "3.7.4.3" + } + } + }, + "publication": { + "name": "publication", + "version": "0.0.3" + } + } + }, + "aws-cdk.cx-api": { + "name": "aws-cdk.cx-api", + "version": "1.63.0", + "dependencies": { + "aws-cdk.cloud-assembly-schema": "true", + "jsii": "true", + "publication": "true" + } + }, + "constructs": { + "name": "constructs", + "version": "3.0.4", + "dependencies": { + "jsii": "true", + "publication": "true" + } + }, + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-apigateway": { + "name": "aws-cdk.aws-apigateway", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": { + "name": "aws-cdk.assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-certificatemanager": { + "name": "aws-cdk.aws-certificatemanager", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": { + "name": "aws-cdk.aws-iam", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "aws-cdk.region-info": { + "name": "aws-cdk.region-info", + "version": "1.63.0", + "dependencies": { + "jsii": "true", + "publication": "true" + } + }, + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-lambda": { + "name": "aws-cdk.aws-lambda", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-applicationautoscaling": { + "name": "aws-cdk.aws-applicationautoscaling", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling-common": { + "name": "aws-cdk.aws-autoscaling-common", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudwatch": { + "name": "aws-cdk.aws-cloudwatch", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-codeguruprofiler": { + "name": "aws-cdk.aws-codeguruprofiler", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": { + "name": "aws-cdk.aws-ec2", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": { + "name": "aws-cdk.aws-kms", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-logs": { + "name": "aws-cdk.aws-logs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-s3-assets": { + "name": "aws-cdk.aws-s3-assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": { + "name": "aws-cdk.aws-s3", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": { + "name": "aws-cdk.aws-events", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-ssm": { + "name": "aws-cdk.aws-ssm", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-efs": { + "name": "aws-cdk.aws-efs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-sqs": { + "name": "aws-cdk.aws-sqs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-route53": { + "name": "aws-cdk.aws-route53", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancingv2": { + "name": "aws-cdk.aws-elasticloadbalancingv2", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-applicationautoscaling": { + "name": "aws-cdk.aws-applicationautoscaling", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling-common": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-autoscaling": { + "name": "aws-cdk.aws-autoscaling", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling-common": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": { + "name": "aws-cdk.aws-elasticloadbalancing", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-sns": { + "name": "aws-cdk.aws-sns", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-autoscaling-common": { + "name": "aws-cdk.aws-autoscaling-common", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-autoscaling-hooktargets": { + "name": "aws-cdk.aws-autoscaling-hooktargets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling": { + "name": "aws-cdk.aws-autoscaling", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling-common": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": { + "name": "aws-cdk.aws-sns-subscriptions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-batch": { + "name": "aws-cdk.aws-batch", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": { + "name": "aws-cdk.aws-ecr", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "aws-cdk.custom-resources": { + "name": "aws-cdk.custom-resources", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudformation": { + "name": "aws-cdk.aws-cloudformation", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ecs": { + "name": "aws-cdk.aws-ecs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-applicationautoscaling": "true", + "aws-cdk.aws-autoscaling": "true", + "aws-cdk.aws-autoscaling-hooktargets": { + "name": "aws-cdk.aws-autoscaling-hooktargets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecr-assets": { + "name": "aws-cdk.aws-ecr-assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.aws-route53-targets": { + "name": "aws-cdk.aws-route53-targets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-apigateway": { + "name": "aws-cdk.aws-apigateway", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudfront": { + "name": "aws-cdk.aws-cloudfront", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cognito": { + "name": "aws-cdk.aws-cognito", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.core": "true", + "aws-cdk.custom-resources": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-secretsmanager": { + "name": "aws-cdk.aws-secretsmanager", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sam": { + "name": "aws-cdk.aws-sam", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-servicediscovery": { + "name": "aws-cdk.aws-servicediscovery", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.aws-ssm": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-certificatemanager": { + "name": "aws-cdk.aws-certificatemanager", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudformation": { + "name": "aws-cdk.aws-cloudformation", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudfront": { + "name": "aws-cdk.aws-cloudfront", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cloudwatch": { + "name": "aws-cdk.aws-cloudwatch", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codebuild": { + "name": "aws-cdk.aws-codebuild", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-codecommit": { + "name": "aws-cdk.aws-codecommit", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecr-assets": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-secretsmanager": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codecommit": { + "name": "aws-cdk.aws-codecommit", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codedeploy": { + "name": "aws-cdk.aws-codedeploy", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codeguruprofiler": { + "name": "aws-cdk.aws-codeguruprofiler", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codepipeline": { + "name": "aws-cdk.aws-codepipeline", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codepipeline-actions": { + "name": "aws-cdk.aws-codepipeline-actions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudformation": "true", + "aws-cdk.aws-codebuild": { + "name": "aws-cdk.aws-codebuild", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-codecommit": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecr-assets": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-secretsmanager": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codecommit": "true", + "aws-cdk.aws-codedeploy": { + "name": "aws-cdk.aws-codedeploy", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-autoscaling": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codepipeline": { + "name": "aws-cdk.aws-codepipeline", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecs": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-events-targets": { + "name": "aws-cdk.aws-events-targets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-batch": { + "name": "aws-cdk.aws-batch", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecs": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-codebuild": "true", + "aws-cdk.aws-codepipeline": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecs": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kinesis": { + "name": "aws-cdk.aws-kinesis", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.aws-stepfunctions": { + "name": "aws-cdk.aws-stepfunctions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-servicecatalog": { + "name": "aws-cdk.aws-servicecatalog", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": "true", + "aws-cdk.aws-stepfunctions": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-cognito": { + "name": "aws-cdk.aws-cognito", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.core": "true", + "aws-cdk.custom-resources": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-dynamodb": { + "name": "aws-cdk.aws-dynamodb", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-applicationautoscaling": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.core": "true", + "aws-cdk.custom-resources": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ec2": { + "name": "aws-cdk.aws-ec2", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-ssm": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ecr": { + "name": "aws-cdk.aws-ecr", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "aws-cdk.custom-resources": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ecr-assets": { + "name": "aws-cdk.aws-ecr-assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ecs": { + "name": "aws-cdk.aws-ecs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-applicationautoscaling": "true", + "aws-cdk.aws-autoscaling": "true", + "aws-cdk.aws-autoscaling-hooktargets": "true", + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecr-assets": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.aws-route53-targets": "true", + "aws-cdk.aws-secretsmanager": "true", + "aws-cdk.aws-servicediscovery": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.aws-ssm": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-efs": { + "name": "aws-cdk.aws-efs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-elasticloadbalancing": { + "name": "aws-cdk.aws-elasticloadbalancing", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-elasticloadbalancingv2": { + "name": "aws-cdk.aws-elasticloadbalancingv2", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-certificatemanager": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-events": { + "name": "aws-cdk.aws-events", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-events-targets": { + "name": "aws-cdk.aws-events-targets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-batch": "true", + "aws-cdk.aws-codebuild": "true", + "aws-cdk.aws-codepipeline": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecs": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kinesis": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.aws-stepfunctions": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-iam": { + "name": "aws-cdk.aws-iam", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-kinesis": { + "name": "aws-cdk.aws-kinesis", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-kms": { + "name": "aws-cdk.aws-kms", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-lambda": { + "name": "aws-cdk.aws-lambda", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-applicationautoscaling": "true", + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-codeguruprofiler": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-efs": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-logs": { + "name": "aws-cdk.aws-logs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-route53": { + "name": "aws-cdk.aws-route53", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-route53-targets": { + "name": "aws-cdk.aws-route53-targets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-apigateway": "true", + "aws-cdk.aws-cloudfront": "true", + "aws-cdk.aws-cognito": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancing": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.region-info": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-s3": { + "name": "aws-cdk.aws-s3", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-s3-assets": { + "name": "aws-cdk.aws-s3-assets", + "version": "1.63.0", + "dependencies": { + "aws-cdk.assets": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sam": { + "name": "aws-cdk.aws-sam", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-secretsmanager": { + "name": "aws-cdk.aws-secretsmanager", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sam": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-servicecatalog": { + "name": "aws-cdk.aws-servicecatalog", + "version": "1.63.0", + "dependencies": { + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-servicediscovery": { + "name": "aws-cdk.aws-servicediscovery", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-elasticloadbalancingv2": "true", + "aws-cdk.aws-route53": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sns": { + "name": "aws-cdk.aws-sns", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sns-subscriptions": { + "name": "aws-cdk.aws-sns-subscriptions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sqs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-sqs": { + "name": "aws-cdk.aws-sqs", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-ssm": { + "name": "aws-cdk.aws-ssm", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-kms": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-stepfunctions": { + "name": "aws-cdk.aws-stepfunctions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudwatch": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.cloud-assembly-schema": { + "name": "aws-cdk.cloud-assembly-schema", + "version": "1.63.0", + "dependencies": { + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.core": { + "name": "aws-cdk.core", + "version": "1.63.0", + "dependencies": { + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.custom-resources": { + "name": "aws-cdk.custom-resources", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudformation": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-logs": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.cx-api": { + "name": "aws-cdk.cx-api", + "version": "1.63.0", + "dependencies": { + "aws-cdk.cloud-assembly-schema": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.pipelines": { + "name": "aws-cdk.pipelines", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudformation": "true", + "aws-cdk.aws-codebuild": "true", + "aws-cdk.aws-codepipeline": "true", + "aws-cdk.aws-codepipeline-actions": { + "name": "aws-cdk.aws-codepipeline-actions", + "version": "1.63.0", + "dependencies": { + "aws-cdk.aws-cloudformation": "true", + "aws-cdk.aws-codebuild": "true", + "aws-cdk.aws-codecommit": "true", + "aws-cdk.aws-codedeploy": "true", + "aws-cdk.aws-codepipeline": "true", + "aws-cdk.aws-ec2": "true", + "aws-cdk.aws-ecr": "true", + "aws-cdk.aws-ecs": "true", + "aws-cdk.aws-events": "true", + "aws-cdk.aws-events-targets": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-lambda": "true", + "aws-cdk.aws-s3": "true", + "aws-cdk.aws-servicecatalog": "true", + "aws-cdk.aws-sns": "true", + "aws-cdk.aws-sns-subscriptions": "true", + "aws-cdk.aws-stepfunctions": "true", + "aws-cdk.core": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.aws-events": "true", + "aws-cdk.aws-iam": "true", + "aws-cdk.aws-s3-assets": "true", + "aws-cdk.cloud-assembly-schema": "true", + "aws-cdk.core": "true", + "aws-cdk.cx-api": "true", + "constructs": "true", + "jsii": "true", + "publication": "true" + } + }, + "aws-cdk.region-info": { + "name": "aws-cdk.region-info", + "version": "1.63.0", + "dependencies": { + "jsii": "true", + "publication": "true" + } + }, + "cattrs": { + "name": "cattrs", + "version": "1.0.0", + "dependencies": { + "attrs": "true" + } + }, + "constructs": { + "name": "constructs", + "version": "3.0.4", + "dependencies": { + "jsii": "true", + "publication": "true" + } + }, + "jsii": { + "name": "jsii", + "version": "1.12.0", + "dependencies": { + "attrs": "true", + "cattrs": "true", + "python-dateutil": "true", + "typing-extensions": "true" + } + }, + "publication": { + "name": "publication", + "version": "0.0.3" + }, + "python-dateutil": { + "name": "python-dateutil", + "version": "2.8.1", + "dependencies": { + "six": "true" + } + }, + "six": { + "name": "six", + "version": "1.15.0" + }, + "typing-extensions": { + "name": "typing-extensions", + "version": "3.7.4.3" + } + }, + "packageFormatVersion": "pip:0.0.1" +} diff --git a/test/system/inspect-provenance.test.ts b/test/system/inspect-provenance.test.ts index c9d5674a..127f9479 100644 --- a/test/system/inspect-provenance.test.ts +++ b/test/system/inspect-provenance.test.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { test } from 'tap'; import { chdirWorkspaces, activateVirtualenv } from '../test-utils'; +import * as depGraphLib from '@snyk/dep-graph'; import pluginImpl = require('../../lib'); @@ -62,7 +63,8 @@ test('inspect --only-provenance', async (t) => { args: ['--only-provenance'], }); const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree(dependencyGraph, 'pip'); t.test('plugin', async (t) => { t.ok(plugin, 'plugin'); @@ -130,7 +132,8 @@ test('inspect --only-provenance for Pipfile', async (t) => { args: ['--only-provenance'], }); const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree(dependencyGraph, 'pip'); t.test('plugin', async (t) => { t.ok(plugin, 'plugin'); @@ -218,7 +221,8 @@ test('inspect setup.py', async (t) => { args: ['--only-provenance'], }); const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree(dependencyGraph, 'pip'); t.test('plugin', async (t) => { t.ok(plugin, 'plugin'); diff --git a/test/system/inspect.spec.ts b/test/system/inspect.spec.ts index ef8c703e..f4b9cd3a 100644 --- a/test/system/inspect.spec.ts +++ b/test/system/inspect.spec.ts @@ -9,6 +9,8 @@ import { DepGraphBuilder } from '@snyk/dep-graph'; import { FILENAMES } from '../../lib/types'; import * as subProcess from '../../lib/dependencies/sub-process'; import { SpawnSyncReturns } from 'child_process'; +import * as depGraphLib from '@snyk/dep-graph'; +import * as fs from 'fs'; // TODO: jestify tap tests in ./inspect.test.js here describe('inspect', () => { @@ -106,6 +108,36 @@ describe('inspect', () => { }); }); + describe('dep-graph', () => { + const mockedExecuteSync = jest.spyOn(subProcess, 'executeSync'); + const mockedExecute = jest.spyOn(subProcess, 'execute'); + + afterEach(() => { + mockedExecuteSync.mockClear(); + mockedExecute.mockClear(); + }); + it('should return dep graph for very dence input', async () => { + mockedExecuteSync.mockReturnValueOnce({ status: 0 } as SpawnSyncReturns< + Buffer + >); + mockedExecute.mockResolvedValueOnce('Python 3.9.5'); + mockedExecute.mockResolvedValueOnce( + fs.readFileSync( + 'test/fixtures/dence-dep-graph/pip_resolve_output.json', + 'utf8' + ) + ); + const dirname = 'test/fixtures/pipenv-project'; + const manifestFilePath = `${dirname}/Pipfile`; + const result = await inspect('.', manifestFilePath); + + const expectedDepGraphData = require('../fixtures/dence-dep-graph/expected.json'); + const expectedDepGraph = depGraphLib.createFromJSON(expectedDepGraphData); + + expect(result.dependencyGraph).toEqualDepGraph(expectedDepGraph); + }); + }); + describe('error scenarios', () => { const mockedExecuteSync = jest.spyOn(subProcess, 'executeSync'); const mockedExecute = jest.spyOn(subProcess, 'execute'); diff --git a/test/system/inspect.test.js b/test/system/inspect.test.js index f7ef69db..671c4052 100644 --- a/test/system/inspect.test.js +++ b/test/system/inspect.test.js @@ -1,3 +1,5 @@ +import * as depGraphLib from '@snyk/dep-graph'; + const test = require('tap').test; const fs = require('fs'); const sinon = require('sinon'); @@ -286,9 +288,13 @@ test('inspect', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt'); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('plugin', (t) => { t.ok(plugin, 'plugin'); @@ -330,9 +336,13 @@ test('inspect setup.py', (t) => { .then(() => { return plugin.inspect('.', 'setup.py'); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('plugin', (t) => { t.ok(plugin, 'plugin'); @@ -424,9 +434,13 @@ test('transitive dep not installed, but with allowMissing option', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt', { allowMissing: true }); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('plugin', (t) => { t.ok(plugin, 'plugin'); @@ -533,9 +547,13 @@ test('deps not installed, but with allowMissing option', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt', { allowMissing: true }); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('plugin', (t) => { t.ok(plugin, 'plugin'); @@ -592,8 +610,12 @@ test('package name differs from requirement (- vs _)', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt', { allowMissing: true }); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.same( pkg.dependencies['dj-database-url'], { @@ -636,8 +658,12 @@ test('package installed conditionally based on python version', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt'); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.notOk(pkg.dependencies.enum34, 'enum34 dep ignored'); t.ok(pkg.dependencies.click, 'click dep is present'); t.end(); @@ -676,8 +702,12 @@ test('package depends on platform', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt', { allowMissing: true }); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); if (os.platform() !== 'win32') { t.notOk(pkg.dependencies.pypiwin32, 'win32 dep ignored'); t.same( @@ -709,8 +739,12 @@ test('editables ignored', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt', { allowMissing: true }); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.notOk(pkg.dependencies['simple'], 'editable dep ignored'); t.notOk(pkg.dependencies['sample'], 'editable subdir dep ignored'); if (os.platform() !== 'win32') { @@ -740,9 +774,13 @@ test('deps with options', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt'); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('plugin', (t) => { t.ok(plugin, 'plugin'); @@ -796,8 +834,13 @@ test('trusted host ignored', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt'); }) - .then((result) => { - t.ok(result.package.dependencies, 'does not error'); + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); + t.ok(pkg.dependencies, 'does not error'); t.end(); }); }); @@ -811,9 +854,13 @@ test('inspect Pipfile', (t) => { .then(() => { return plugin.inspect('.', 'Pipfile'); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.equal(plugin.targetFile, 'Pipfile', 'Pipfile targetfile'); @@ -867,8 +914,12 @@ test('inspect Pipfile with pinned versions', (t) => { .then(() => { return plugin.inspect('.', 'Pipfile'); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('package dependencies', (t) => { Object.keys(pipfilePinnedExpectedDependencies).forEach((depName) => { @@ -918,9 +969,13 @@ test('inspect Pipfile in nested directory', (t) => { .then(() => { return plugin.inspect('.', 'nested/directory/Pipfile'); }) - .then((result) => { + .then(async (result) => { const plugin = result.plugin; - const pkg = result.package; + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.equal( plugin.targetFile, @@ -983,8 +1038,12 @@ test('inspect pipenv app with user-created virtualenv', (t) => { .then(() => { return plugin.inspect('.', 'Pipfile'); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('package dependencies', (t) => { Object.keys(pipenvAppExpectedDependencies).forEach((depName) => { @@ -1039,8 +1098,12 @@ test('inspect pipenv app with auto-created virtualenv', (t) => { .then(() => { return plugin.inspect('.', 'Pipfile'); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('package dependencies', (t) => { Object.keys(pipenvAppExpectedDependencies).forEach((depName) => { @@ -1074,8 +1137,12 @@ test('inspect pipenv app dev dependencies', (t) => { dev: true, }); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.test('package dependencies', (t) => { Object.keys(pipenvAppExpectedDependencies).forEach((depName) => { @@ -1108,8 +1175,12 @@ test('package names with urls are skipped', (t) => { .then(() => { return plugin.inspect('.', 'requirements.txt'); }) - .then((result) => { - const pkg = result.package; + .then(async (result) => { + const dependencyGraph = result.dependencyGraph; + const pkg = await depGraphLib.legacy.graphToDepTree( + dependencyGraph, + 'pip' + ); t.equal( Object.keys(pkg.dependencies).length, 1,