aws-cdk 2.1020.2 → 2.1022.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +100 -55
  2. package/THIRD_PARTY_LICENSES +65 -65
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/refactor.d.ts +1 -0
  6. package/lib/api/refactor.js +8 -0
  7. package/lib/cli/cdk-toolkit.d.ts +19 -21
  8. package/lib/cli/cdk-toolkit.js +145 -141
  9. package/lib/cli/cli-config.js +19 -13
  10. package/lib/cli/cli-type-registry.json +29 -12
  11. package/lib/cli/cli.js +76 -22
  12. package/lib/cli/convert-to-user-input.js +16 -6
  13. package/lib/cli/display-version.d.ts +11 -0
  14. package/lib/cli/display-version.js +101 -0
  15. package/lib/cli/io-host/cli-io-host.d.ts +11 -11
  16. package/lib/cli/io-host/cli-io-host.js +68 -24
  17. package/lib/cli/parse-command-line-arguments.js +29 -11
  18. package/lib/cli/platform-warnings.d.ts +2 -1
  19. package/lib/cli/platform-warnings.js +3 -4
  20. package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
  21. package/lib/cli/telemetry/collect-telemetry.js +15 -0
  22. package/lib/cli/telemetry/endpoint-sink.d.ts +1 -2
  23. package/lib/cli/telemetry/endpoint-sink.js +4 -3
  24. package/lib/cli/telemetry/error.d.ts +2 -0
  25. package/lib/cli/telemetry/error.js +16 -0
  26. package/lib/cli/telemetry/feature-flags.d.ts +96 -0
  27. package/lib/cli/telemetry/feature-flags.js +103 -0
  28. package/lib/cli/telemetry/file-sink.js +8 -12
  29. package/lib/cli/telemetry/installation-id.d.ts +5 -0
  30. package/lib/cli/telemetry/installation-id.js +47 -0
  31. package/lib/cli/telemetry/library-version.d.ts +2 -0
  32. package/lib/cli/telemetry/library-version.js +30 -0
  33. package/lib/cli/telemetry/messages.d.ts +40 -0
  34. package/lib/cli/telemetry/messages.js +65 -0
  35. package/lib/cli/telemetry/sanitation.d.ts +100 -0
  36. package/lib/cli/telemetry/sanitation.js +79 -0
  37. package/lib/cli/telemetry/schema.d.ts +47 -19
  38. package/lib/cli/telemetry/schema.js +10 -1
  39. package/lib/cli/telemetry/session.d.ts +33 -0
  40. package/lib/cli/telemetry/session.js +130 -0
  41. package/lib/cli/user-configuration.d.ts +14 -4
  42. package/lib/cli/user-configuration.js +42 -30
  43. package/lib/cli/user-input.d.ts +31 -13
  44. package/lib/cli/user-input.js +1 -1
  45. package/lib/cli/util/ci.d.ts +5 -0
  46. package/lib/cli/util/ci.js +11 -0
  47. package/lib/cli/util/yargs-helpers.d.ts +1 -1
  48. package/lib/cli/util/yargs-helpers.js +7 -7
  49. package/lib/cli/version.d.ts +2 -12
  50. package/lib/cli/version.js +5 -103
  51. package/lib/commands/context.d.ts +10 -5
  52. package/lib/commands/context.js +35 -35
  53. package/lib/commands/docs.d.ts +6 -1
  54. package/lib/commands/docs.js +20 -19
  55. package/lib/commands/doctor.d.ts +4 -1
  56. package/lib/commands/doctor.js +17 -17
  57. package/lib/commands/flags.d.ts +3 -0
  58. package/lib/commands/flags.js +43 -0
  59. package/lib/commands/init/init-hooks.d.ts +2 -1
  60. package/lib/commands/init/init-hooks.js +6 -6
  61. package/lib/commands/init/init.d.ts +4 -2
  62. package/lib/commands/init/init.js +56 -54
  63. package/lib/commands/init/os.d.ts +2 -1
  64. package/lib/commands/init/os.js +3 -4
  65. package/lib/commands/list-stacks.js +8 -2
  66. package/lib/commands/migrate.d.ts +6 -17
  67. package/lib/commands/migrate.js +28 -29
  68. package/lib/cxapp/cloud-assembly.js +1 -1
  69. package/lib/cxapp/cloud-executable.js +41 -26
  70. package/lib/index.d.ts +1 -1
  71. package/lib/index.js +46764 -31086
  72. package/lib/index_bg.wasm +0 -0
  73. package/lib/init-templates/.init-version.json +1 -1
  74. package/lib/init-templates/.recommended-feature-flags.json +1 -0
  75. package/lib/{legacy-aws-auth.d.ts → legacy/aws-auth.d.ts} +1 -1
  76. package/lib/legacy/aws-auth.js +47 -0
  77. package/lib/legacy/configuration.d.ts +82 -0
  78. package/lib/legacy/configuration.js +321 -0
  79. package/lib/legacy/index.d.ts +19 -0
  80. package/lib/{legacy-exports-source.js → legacy/index.js} +23 -23
  81. package/lib/{legacy-logging-source.d.ts → legacy/logging.d.ts} +50 -0
  82. package/lib/legacy/logging.js +154 -0
  83. package/lib/legacy/types.js +3 -0
  84. package/lib/legacy-exports.d.ts +4 -3
  85. package/lib/legacy-exports.js +4 -1
  86. package/package.json +15 -15
  87. package/lib/legacy-aws-auth.js +0 -47
  88. package/lib/legacy-exports-source.d.ts +0 -18
  89. package/lib/legacy-logging-source.js +0 -107
  90. package/lib/legacy-types.js +0 -3
  91. package/lib/logging.d.ts +0 -99
  92. package/lib/logging.js +0 -146
  93. /package/lib/{legacy-types.d.ts → legacy/types.d.ts} +0 -0
@@ -0,0 +1,100 @@
1
+ import type { Context } from '../../api/context';
2
+ /**
3
+ * argv is the output of yargs
4
+ */
5
+ export declare function sanitizeCommandLineArguments(argv: any): {
6
+ path: string[];
7
+ parameters: {
8
+ [key: string]: string;
9
+ };
10
+ };
11
+ export declare function sanitizeContext(context: Context): {
12
+ "@aws-cdk/core:newStyleStackSynthesis": boolean;
13
+ "@aws-cdk/core:stackRelativeExports": boolean;
14
+ "@aws-cdk/aws-rds:lowercaseDbIdentifier": boolean;
15
+ "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": boolean;
16
+ "@aws-cdk/aws-lambda:recognizeVersionProps": boolean;
17
+ "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": boolean;
18
+ "@aws-cdk/core:target-partitions": boolean;
19
+ "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": boolean;
20
+ "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": boolean;
21
+ "@aws-cdk/aws-iam:minimizePolicies": boolean;
22
+ "@aws-cdk/core:checkSecretUsage": boolean;
23
+ "@aws-cdk/aws-lambda:recognizeLayerVersion": boolean;
24
+ "@aws-cdk/core:validateSnapshotRemovalPolicy": boolean;
25
+ "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": boolean;
26
+ "@aws-cdk/aws-s3:createDefaultLoggingPolicy": boolean;
27
+ "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": boolean;
28
+ "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": boolean;
29
+ "@aws-cdk/aws-apigateway:disableCloudWatchRole": boolean;
30
+ "@aws-cdk/core:enablePartitionLiterals": boolean;
31
+ "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": boolean;
32
+ "@aws-cdk/aws-events:eventsTargetQueueSameAccount": boolean;
33
+ "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": boolean;
34
+ "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": boolean;
35
+ "@aws-cdk/customresources:installLatestAwsSdkDefault": boolean;
36
+ "@aws-cdk/aws-route53-patterns:useCertificate": boolean;
37
+ "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": boolean;
38
+ "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": boolean;
39
+ "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": boolean;
40
+ "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": boolean;
41
+ "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": boolean;
42
+ "@aws-cdk/aws-redshift:columnId": boolean;
43
+ "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": boolean;
44
+ "@aws-cdk/aws-apigateway:requestValidatorUniqueId": boolean;
45
+ "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": boolean;
46
+ "@aws-cdk/aws-kms:aliasNameRef": boolean;
47
+ "@aws-cdk/core:includePrefixInUniqueNameGeneration": boolean;
48
+ "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": boolean;
49
+ "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": boolean;
50
+ "@aws-cdk/aws-efs:denyAnonymousAccess": boolean;
51
+ "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": boolean;
52
+ "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": boolean;
53
+ "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": boolean;
54
+ "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": boolean;
55
+ "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": boolean;
56
+ "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": boolean;
57
+ "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": boolean;
58
+ "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": boolean;
59
+ "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": boolean;
60
+ "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": boolean;
61
+ "@aws-cdk/aws-eks:nodegroupNameAttribute": boolean;
62
+ "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": boolean;
63
+ "@aws-cdk/pipelines:reduceAssetRoleTrustScope": boolean;
64
+ "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": boolean;
65
+ "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": boolean;
66
+ "@aws-cdk/aws-s3:keepNotificationInImportedBucket": boolean;
67
+ "@aws-cdk/aws-stepfunctions-tasks:useNewS3UriParametersForBedrockInvokeModelTask": boolean;
68
+ "@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions": boolean;
69
+ "@aws-cdk/aws-ec2:ec2SumTimeoutEnabled": boolean;
70
+ "@aws-cdk/aws-appsync:appSyncGraphQLAPIScopeLambdaPermission": boolean;
71
+ "@aws-cdk/aws-lambda-nodejs:sdkV3ExcludeSmithyPackages": boolean;
72
+ "@aws-cdk/aws-rds:setCorrectValueForDatabaseInstanceReadReplicaInstanceResourceId": boolean;
73
+ "@aws-cdk/core:cfnIncludeRejectComplexResourceUpdateCreatePolicyIntrinsics": boolean;
74
+ "@aws-cdk/aws-stepfunctions-tasks:fixRunEcsTaskPolicy": boolean;
75
+ "@aws-cdk/aws-dynamodb:resourcePolicyPerReplica": boolean;
76
+ "@aws-cdk/aws-ec2:bastionHostUseAmazonLinux2023ByDefault": boolean;
77
+ "@aws-cdk/core:aspectStabilization": boolean;
78
+ "@aws-cdk/aws-route53-targets:userPoolDomainNameMethodWithoutCustomResource": boolean;
79
+ "@aws-cdk/aws-ecs:disableEcsImdsBlocking": boolean;
80
+ "@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature": boolean;
81
+ "@aws-cdk/aws-elasticloadbalancingV2:albDualstackWithoutPublicIpv4SecurityGroupRulesDefault": boolean;
82
+ "@aws-cdk/aws-iam:oidcRejectUnauthorizedConnections": boolean;
83
+ "@aws-cdk/core:enableAdditionalMetadataCollection": boolean;
84
+ "@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy": boolean;
85
+ "@aws-cdk/aws-s3:setUniqueReplicationRoleName": boolean;
86
+ "@aws-cdk/pipelines:reduceStageRoleTrustScope": boolean;
87
+ "@aws-cdk/aws-events:requireEventBusPolicySid": boolean;
88
+ "@aws-cdk/aws-dynamodb:retainTableReplica": boolean;
89
+ "@aws-cdk/cognito:logUserPoolClientSecretValue": boolean;
90
+ "@aws-cdk/aws-stepfunctions:useDistributedMapResultWriterV2": boolean;
91
+ "@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope": boolean;
92
+ "@aws-cdk/core:aspectPrioritiesMutating": boolean;
93
+ "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": boolean;
94
+ "@aws-cdk/aws-ec2-alpha:useResourceIdForVpcV2Migration": boolean;
95
+ "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": boolean;
96
+ "@aws-cdk/aws-s3:publicAccessBlockedByDefault": boolean;
97
+ "@aws-cdk/aws-lambda:useCdkManagedLogGroup": boolean;
98
+ "@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": boolean;
99
+ "@aws-cdk/core:explicitStackTags": boolean;
100
+ };
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeCommandLineArguments = sanitizeCommandLineArguments;
4
+ exports.sanitizeContext = sanitizeContext;
5
+ const feature_flags_1 = require("./feature-flags");
6
+ /**
7
+ * argv is the output of yargs
8
+ */
9
+ function sanitizeCommandLineArguments(argv) {
10
+ // Get the configuration of the arguments
11
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
12
+ const config = require('../cli-type-registry.json');
13
+ const command = argv._[0];
14
+ const path = [command];
15
+ const parameters = {};
16
+ const globalOptions = Object.keys(config.globalOptions);
17
+ const commandOptions = Object.keys(config.commands[command]?.options ?? {});
18
+ const commandArg = config.commands[command]?.arg;
19
+ for (const argName of Object.keys(argv)) {
20
+ if (argName === commandArg?.name) {
21
+ if (commandArg.variadic) {
22
+ for (let i = 0; i < argv[argName].length; i++) {
23
+ path.push(`$${argName}_${i + 1}`);
24
+ }
25
+ }
26
+ else {
27
+ path.push(`$${argName}`);
28
+ }
29
+ }
30
+ // Continue if the arg name is not a global option or command option
31
+ // arg name comes from yargs and could be an alias; we trust that the "normal"
32
+ // name has the same information and that is what we want to record
33
+ if (argv[argName] === undefined || (!globalOptions.includes(argName) && !commandOptions.includes(argName))) {
34
+ continue;
35
+ }
36
+ if (isNumberOrBoolean(argv[argName]) || isKnownEnumValue(argName, argv[argName], command, config)) {
37
+ parameters[argName] = argv[argName];
38
+ }
39
+ else {
40
+ parameters[argName] = '<redacted>';
41
+ }
42
+ }
43
+ return {
44
+ path,
45
+ parameters,
46
+ };
47
+ }
48
+ function sanitizeContext(context) {
49
+ const sanitizedContext = {};
50
+ for (const [flag, value] of Object.entries(context.all)) {
51
+ // Skip if flag is not in the FeatureFlags enum
52
+ if (!isFeatureFlag(flag)) {
53
+ continue;
54
+ }
55
+ // Falsy options include boolean false, string 'false'
56
+ // All other inputs evaluate to true
57
+ const sanitizedValue = isBoolean(value) ? value : (value !== 'false');
58
+ sanitizedContext[flag] = sanitizedValue;
59
+ }
60
+ return sanitizedContext;
61
+ }
62
+ function isBoolean(value) {
63
+ return typeof value === 'boolean';
64
+ }
65
+ function isNumberOrBoolean(value) {
66
+ return typeof value === 'number' || isBoolean(value);
67
+ }
68
+ function isKnownEnumValue(name, value, command, config) {
69
+ const propertyDefiniton = config.globalOptions[name] ?? config.commands[command]?.options[name];
70
+ if (propertyDefiniton.type === 'string') {
71
+ // Even if the property has choices, only record if the value is a valid choice
72
+ return propertyDefiniton.choices?.includes(value);
73
+ }
74
+ return false;
75
+ }
76
+ function isFeatureFlag(flag) {
77
+ return Object.values(feature_flags_1.FeatureFlag).includes(flag);
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhbml0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxvRUF5Q0M7QUFFRCwwQ0FjQztBQS9ERCxtREFBOEM7QUFHOUM7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxJQUFTO0lBQ3BELHlDQUF5QztJQUV6QyxpRUFBaUU7SUFDakUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sVUFBVSxHQUE4QixFQUFFLENBQUM7SUFFakQsTUFBTSxhQUFhLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsTUFBTSxjQUFjLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixNQUFNLFVBQVUsR0FBbUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUM7SUFFakcsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUks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bmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJy4uLy4uL2FwaS9jb250ZXh0JztcblxuLyoqXG4gKiBhcmd2IGlzIHRoZSBvdXRwdXQgb2YgeWFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHMoYXJndjogYW55KTogeyBwYXRoOiBzdHJpbmdbXTsgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9IHtcbiAgLy8gR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBhcmd1bWVudHNcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBjb25maWcgPSByZXF1aXJlKCcuLi9jbGktdHlwZS1yZWdpc3RyeS5qc29uJyk7XG4gIGNvbnN0IGNvbW1hbmQgPSBhcmd2Ll9bMF07XG4gIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gW2NvbW1hbmRdO1xuICBjb25zdCBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgY29uc3QgZ2xvYmFsT3B0aW9uczogYW55W10gPSBPYmplY3Qua2V5cyhjb25maWcuZ2xvYmFsT3B0aW9ucyk7XG4gIGNvbnN0IGNvbW1hbmRPcHRpb25zOiBhbnlbXSA9IE9iamVjdC5rZXlzKGNvbmZpZy5jb21tYW5kc1tjb21tYW5kXT8ub3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IGNvbW1hbmRBcmc6IHsgbmFtZTogc3RyaW5nOyB2YXJpYWRpYzogc3RyaW5nIH0gfCB1bmRlZmluZWQgPSBjb25maWcuY29tbWFuZHNbY29tbWFuZF0/LmFyZztcblxuICBmb3IgKGNvbnN0IGFyZ05hbWUgb2YgT2JqZWN0LmtleXMoYXJndikpIHtcbiAgICBpZiAoYXJnTmFtZSA9PT0gY29tbWFuZEFyZz8ubmFtZSkge1xuICAgICAgaWYgKGNvbW1hbmRBcmcudmFyaWFkaWMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd2W2FyZ05hbWVdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfV8ke2krMX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbnRpbnVlIGlmIHRoZSBhcmcgbmFtZSBpcyBub3QgYSBnbG9iYWwgb3B0aW9uIG9yIGNvbW1hbmQgb3B0aW9uXG4gICAgLy8gYXJnIG5hbWUgY29tZXMgZnJvbSB5YXJncyBhbmQgY291bGQgYmUgYW4gYWxpYXM7IHdlIHRydXN0IHRoYXQgdGhlIFwibm9ybWFsXCJcbiAgICAvLyBuYW1lIGhhcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhbmQgdGhhdCBpcyB3aGF0IHdlIHdhbnQgdG8gcmVjb3JkXG4gICAgaWYgKGFyZ3ZbYXJnTmFtZV0gPT09IHVuZGVmaW5lZCB8fCAoIWdsb2JhbE9wdGlvbnMuaW5jbHVkZXMoYXJnTmFtZSkgJiYgIWNvbW1hbmRPcHRpb25zLmluY2x1ZGVzKGFyZ05hbWUpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc051bWJlck9yQm9vbGVhbihhcmd2W2FyZ05hbWVdKSB8fCBpc0tub3duRW51bVZhbHVlKGFyZ05hbWUsIGFyZ3ZbYXJnTmFtZV0sIGNvbW1hbmQsIGNvbmZpZykpIHtcbiAgICAgIHBhcmFtZXRlcnNbYXJnTmFtZV0gPSBhcmd2W2FyZ05hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbWV0ZXJzW2FyZ05hbWVdID0gJzxyZWRhY3RlZD4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVDb250ZXh0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc3Qgc2FuaXRpemVkQ29udGV4dDogeyBbSyBpbiBGZWF0dXJlRmxhZ106IGJvb2xlYW4gfSA9IHt9IGFzIHsgW0sgaW4gRmVhdHVyZUZsYWddOiBib29sZWFuIH07XG4gIGZvciAoY29uc3QgW2ZsYWcsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0LmFsbCkpIHtcbiAgICAvLyBTa2lwIGlmIGZsYWcgaXMgbm90IGluIHRoZSBGZWF0dXJlRmxhZ3MgZW51bVxuICAgIGlmICghaXNGZWF0dXJlRmxhZyhmbGFnKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gRmFsc3kgb3B0aW9ucyBpbmNsdWRlIGJvb2xlYW4gZmFsc2UsIHN0cmluZyAnZmFsc2UnXG4gICAgLy8gQWxsIG90aGVyIGlucHV0cyBldmFsdWF0ZSB0byB0cnVlXG4gICAgY29uc3Qgc2FuaXRpemVkVmFsdWU6IGJvb2xlYW4gPSBpc0Jvb2xlYW4odmFsdWUpID8gdmFsdWUgOiAodmFsdWUgIT09ICdmYWxzZScpO1xuICAgIHNhbml0aXplZENvbnRleHRbZmxhZ10gPSBzYW5pdGl6ZWRWYWx1ZTtcbiAgfVxuICByZXR1cm4gc2FuaXRpemVkQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlck9yQm9vbGVhbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IGlzQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzS25vd25FbnVtVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBjb21tYW5kOiBzdHJpbmcsIGNvbmZpZzogYW55KTogYm9vbGVhbiB7XG4gIGNvbnN0IHByb3BlcnR5RGVmaW5pdG9uID0gY29uZmlnLmdsb2JhbE9wdGlvbnNbbmFtZV0gPz8gY29uZmlnLmNvbW1hbmRzW2NvbW1hbmRdPy5vcHRpb25zW25hbWVdO1xuICBpZiAocHJvcGVydHlEZWZpbml0b24udHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBFdmVuIGlmIHRoZSBwcm9wZXJ0eSBoYXMgY2hvaWNlcywgb25seSByZWNvcmQgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgY2hvaWNlXG4gICAgcmV0dXJuIHByb3BlcnR5RGVmaW5pdG9uLmNob2ljZXM/LmluY2x1ZGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZUZsYWcoZmxhZzogc3RyaW5nKTogZmxhZyBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKEZlYXR1cmVGbGFnKS5pbmNsdWRlcyhmbGFnIGFzIEZlYXR1cmVGbGFnKTtcbn1cbiJdfQ==
@@ -1,26 +1,37 @@
1
- interface Identifiers {
1
+ interface SessionIdentifiers {
2
2
  readonly cdkCliVersion: string;
3
3
  readonly cdkLibraryVersion?: string;
4
4
  readonly telemetryVersion: string;
5
5
  readonly sessionId: string;
6
- readonly eventId: string;
7
6
  readonly installationId: string;
8
- readonly timestamp: string;
9
- readonly accountId?: string;
10
7
  readonly region?: string;
11
8
  }
12
- interface Event {
13
- readonly state: 'ABORTED' | 'FAILED' | 'SUCCEEDED';
14
- readonly eventType: string;
15
- readonly command: {
16
- readonly path: string[];
17
- readonly parameters: string[];
18
- readonly config: {
19
- [key: string]: any;
20
- };
9
+ export interface Identifiers extends SessionIdentifiers {
10
+ readonly eventId: string;
11
+ readonly timestamp: string;
12
+ }
13
+ type ConfigEntry = {
14
+ [key: string]: boolean;
15
+ };
16
+ export interface Command {
17
+ readonly path: string[];
18
+ readonly parameters: {
19
+ [key: string]: string;
20
+ };
21
+ readonly config: {
22
+ [key: string]: ConfigEntry;
21
23
  };
22
24
  }
23
- interface Environment {
25
+ interface SessionEvent {
26
+ readonly command: Command;
27
+ }
28
+ export type EventType = 'SYNTH' | 'INVOKE' | 'DEPLOY';
29
+ export type State = 'ABORTED' | 'FAILED' | 'SUCCEEDED';
30
+ interface Event extends SessionEvent {
31
+ readonly state: State;
32
+ readonly eventType: EventType;
33
+ }
34
+ export interface SessionEnvironment {
24
35
  readonly os: {
25
36
  readonly platform: string;
26
37
  readonly release: string;
@@ -28,6 +39,8 @@ interface Environment {
28
39
  readonly ci: boolean;
29
40
  readonly nodeVersion: string;
30
41
  }
42
+ interface Environment extends SessionEnvironment {
43
+ }
31
44
  interface Duration {
32
45
  readonly total: number;
33
46
  readonly components?: {
@@ -37,19 +50,28 @@ interface Duration {
37
50
  type Counters = {
38
51
  [key: string]: number;
39
52
  };
40
- interface Error {
41
- readonly name: string;
53
+ export declare enum ErrorName {
54
+ TOOLKIT_ERROR = "ToolkitError",
55
+ AUTHENTICATION_ERROR = "AuthenticationError",
56
+ ASSEMBLY_ERROR = "AssemblyError",
57
+ CONTEXT_PROVIDER_ERROR = "ContextProviderError",
58
+ UNKNOWN_ERROR = "UnknownError"
59
+ }
60
+ export interface ErrorDetails {
61
+ readonly name: ErrorName;
42
62
  readonly message?: string;
43
- readonly trace?: string;
63
+ readonly stackTrace?: string;
44
64
  readonly logs?: string;
45
65
  }
46
66
  interface Dependency {
47
67
  readonly name: string;
48
68
  readonly version: string;
49
69
  }
50
- interface Project {
70
+ interface SessionProject {
51
71
  readonly dependencies?: Dependency[];
52
72
  }
73
+ interface Project extends SessionProject {
74
+ }
53
75
  export interface TelemetrySchema {
54
76
  readonly identifiers: Identifiers;
55
77
  readonly event: Event;
@@ -57,6 +79,12 @@ export interface TelemetrySchema {
57
79
  readonly project: Project;
58
80
  readonly duration: Duration;
59
81
  readonly counters?: Counters;
60
- readonly error?: Error;
82
+ readonly error?: ErrorDetails;
83
+ }
84
+ export interface SessionSchema {
85
+ identifiers: SessionIdentifiers;
86
+ event: SessionEvent;
87
+ environment: SessionEnvironment;
88
+ project: SessionProject;
61
89
  }
62
90
  export {};
@@ -1,3 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgSWRlbnRpZmllcnMge1xuICByZWFkb25seSBjZGtDbGlWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka0xpYnJhcnlWZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSB0ZWxlbWV0cnlWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlc3Npb25JZDogc3RyaW5nO1xuICByZWFkb25seSBldmVudElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbGxhdGlvbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpbWVzdGFtcDogc3RyaW5nO1xuICByZWFkb25seSBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEV2ZW50IHtcbiAgcmVhZG9ubHkgc3RhdGU6ICdBQk9SVEVEJyB8ICdGQUlMRUQnIHwgJ1NVQ0NFRURFRCc7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogc3RyaW5nO1xuICByZWFkb25seSBjb21tYW5kOiB7XG4gICAgcmVhZG9ubHkgcGF0aDogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgcGFyYW1ldGVyczogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICB9O1xufVxuXG5pbnRlcmZhY2UgRW52aXJvbm1lbnQge1xuICByZWFkb25seSBvczoge1xuICAgIHJlYWRvbmx5IHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcmVsZWFzZTogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBjaTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm9kZVZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER1cmF0aW9uIHtcbiAgcmVhZG9ubHkgdG90YWw6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XG59XG5cbnR5cGUgQ291bnRlcnMgPSB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuXG5pbnRlcmZhY2UgRXJyb3Ige1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7IC8vIGFub255bWl6ZWQgc3RhY2sgbWVzc2FnZVxuICByZWFkb25seSB0cmFjZT86IHN0cmluZzsgLy8gYW5vbnltaXplZCBzdGFjayB0cmFjZVxuICByZWFkb25seSBsb2dzPzogc3RyaW5nOyAvLyBhbm9ueW1pemVkIHN0YWNrIGxvZ3Ncbn1cblxuaW50ZXJmYWNlIERlcGVuZGVuY3kge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFByb2plY3Qge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBEZXBlbmRlbmN5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVsZW1ldHJ5U2NoZW1hIHtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcnM6IElkZW50aWZpZXJzO1xuICByZWFkb25seSBldmVudDogRXZlbnQ7XG4gIHJlYWRvbmx5IGVudmlyb25tZW50OiBFbnZpcm9ubWVudDtcbiAgcmVhZG9ubHkgcHJvamVjdDogUHJvamVjdDtcbiAgcmVhZG9ubHkgZHVyYXRpb246IER1cmF0aW9uO1xuICByZWFkb25seSBjb3VudGVycz86IENvdW50ZXJzO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yO1xufVxuIl19
3
+ exports.ErrorName = void 0;
4
+ var ErrorName;
5
+ (function (ErrorName) {
6
+ ErrorName["TOOLKIT_ERROR"] = "ToolkitError";
7
+ ErrorName["AUTHENTICATION_ERROR"] = "AuthenticationError";
8
+ ErrorName["ASSEMBLY_ERROR"] = "AssemblyError";
9
+ ErrorName["CONTEXT_PROVIDER_ERROR"] = "ContextProviderError";
10
+ ErrorName["UNKNOWN_ERROR"] = "UnknownError";
11
+ })(ErrorName || (exports.ErrorName = ErrorName = {}));
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9EQSxJQUFZLFNBTVg7QUFORCxXQUFZLFNBQVM7SUFDbkIsMkNBQThCLENBQUE7SUFDOUIseURBQTRDLENBQUE7SUFDNUMsNkNBQWdDLENBQUE7SUFDaEMsNERBQStDLENBQUE7SUFDL0MsMkNBQThCLENBQUE7QUFDaEMsQ0FBQyxFQU5XLFNBQVMseUJBQVQsU0FBUyxRQU1wQiIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBTZXNzaW9uSWRlbnRpZmllcnMge1xuICByZWFkb25seSBjZGtDbGlWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNka0xpYnJhcnlWZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSB0ZWxlbWV0cnlWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlc3Npb25JZDogc3RyaW5nO1xuICByZWFkb25seSBpbnN0YWxsYXRpb25JZDogc3RyaW5nO1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpZmllcnMgZXh0ZW5kcyBTZXNzaW9uSWRlbnRpZmllcnMge1xuICByZWFkb25seSBldmVudElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpbWVzdGFtcDogc3RyaW5nO1xufVxuXG50eXBlIENvbmZpZ0VudHJ5ID0geyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZCB7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZ1tdO1xuICByZWFkb25seSBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBjb25maWc6IHsgW2tleTogc3RyaW5nXTogQ29uZmlnRW50cnkgfTtcbn1cblxuaW50ZXJmYWNlIFNlc3Npb25FdmVudCB7XG4gIHJlYWRvbmx5IGNvbW1hbmQ6IENvbW1hbmQ7XG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50VHlwZSA9ICdTWU5USCcgfCAnSU5WT0tFJyB8ICdERVBMT1knO1xuZXhwb3J0IHR5cGUgU3RhdGUgPSAnQUJPUlRFRCcgfCAnRkFJTEVEJyB8ICdTVUNDRUVERUQnO1xuaW50ZXJmYWNlIEV2ZW50IGV4dGVuZHMgU2Vzc2lvbkV2ZW50IHtcbiAgcmVhZG9ubHkgc3RhdGU6IFN0YXRlO1xuICByZWFkb25seSBldmVudFR5cGU6IEV2ZW50VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uRW52aXJvbm1lbnQge1xuICByZWFkb25seSBvczoge1xuICAgIHJlYWRvbmx5IHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcmVsZWFzZTogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBjaTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm9kZVZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEVudmlyb25tZW50IGV4dGVuZHMgU2Vzc2lvbkVudmlyb25tZW50IHtcbn1cblxuaW50ZXJmYWNlIER1cmF0aW9uIHtcbiAgcmVhZG9ubHkgdG90YWw6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XG59XG5cbnR5cGUgQ291bnRlcnMgPSB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuXG5leHBvcnQgZW51bSBFcnJvck5hbWUge1xuICBUT09MS0lUX0VSUk9SID0gJ1Rvb2xraXRFcnJvcicsXG4gIEFVVEhFTlRJQ0FUSU9OX0VSUk9SID0gJ0F1dGhlbnRpY2F0aW9uRXJyb3InLFxuICBBU1NFTUJMWV9FUlJPUiA9ICdBc3NlbWJseUVycm9yJyxcbiAgQ09OVEVYVF9QUk9WSURFUl9FUlJPUiA9ICdDb250ZXh0UHJvdmlkZXJFcnJvcicsXG4gIFVOS05PV05fRVJST1IgPSAnVW5rbm93bkVycm9yJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckRldGFpbHMge1xuICByZWFkb25seSBuYW1lOiBFcnJvck5hbWU7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayBtZXNzYWdlXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayB0cmFjZVxuICByZWFkb25seSBsb2dzPzogc3RyaW5nOyAvLyBzYW5pdGl6ZWQgc3RhY2sgbG9nc1xufVxuXG5pbnRlcmZhY2UgRGVwZW5kZW5jeSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2Vzc2lvblByb2plY3Qge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBEZXBlbmRlbmN5W107XG59XG5cbmludGVyZmFjZSBQcm9qZWN0IGV4dGVuZHMgU2Vzc2lvblByb2plY3Qge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNjaGVtYSB7XG4gIHJlYWRvbmx5IGlkZW50aWZpZXJzOiBJZGVudGlmaWVycztcbiAgcmVhZG9ubHkgZXZlbnQ6IEV2ZW50O1xuICByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3Q7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBEdXJhdGlvbjtcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBDb3VudGVycztcbiAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvckRldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblNjaGVtYSB7XG4gIGlkZW50aWZpZXJzOiBTZXNzaW9uSWRlbnRpZmllcnM7XG4gIGV2ZW50OiBTZXNzaW9uRXZlbnQ7XG4gIGVudmlyb25tZW50OiBTZXNzaW9uRW52aXJvbm1lbnQ7XG4gIHByb2plY3Q6IFNlc3Npb25Qcm9qZWN0O1xufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { type EventType, type ErrorDetails } from './schema';
2
+ import type { ITelemetrySink } from './sink-interface';
3
+ import type { Context } from '../../api/context';
4
+ import type { CliIoHost } from '../io-host/cli-io-host';
5
+ export interface TelemetrySessionProps {
6
+ readonly ioHost: CliIoHost;
7
+ readonly client: ITelemetrySink;
8
+ readonly arguments: any;
9
+ readonly context: Context;
10
+ }
11
+ export interface TelemetryEvent {
12
+ readonly eventType: EventType;
13
+ readonly duration: number;
14
+ readonly error?: ErrorDetails;
15
+ }
16
+ export declare class TelemetrySession {
17
+ private readonly props;
18
+ private ioHost;
19
+ private client;
20
+ private _sessionInfo?;
21
+ private span?;
22
+ private count;
23
+ constructor(props: TelemetrySessionProps);
24
+ begin(): Promise<void>;
25
+ attachRegion(region: string): Promise<void>;
26
+ /**
27
+ * When the command is complete, so is the CliIoHost. Ends the span of the entire CliIoHost
28
+ * and notifies with an optional error message in the data.
29
+ */
30
+ end(error?: ErrorDetails): Promise<void>;
31
+ emit(event: TelemetryEvent): Promise<void>;
32
+ private get sessionInfo();
33
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetrySession = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
6
+ const installation_id_1 = require("./installation-id");
7
+ const library_version_1 = require("./library-version");
8
+ const sanitation_1 = require("./sanitation");
9
+ const schema_1 = require("./schema");
10
+ const ci_systems_1 = require("../ci-systems");
11
+ const messages_1 = require("../telemetry/messages");
12
+ const ci_1 = require("../util/ci");
13
+ const version_1 = require("../version");
14
+ const ABORTED_ERROR_MESSAGE = '__CDK-Toolkit__Aborted';
15
+ class TelemetrySession {
16
+ constructor(props) {
17
+ this.props = props;
18
+ this.count = 0;
19
+ this.ioHost = props.ioHost;
20
+ this.client = props.client;
21
+ }
22
+ async begin() {
23
+ // sanitize the raw cli input
24
+ const { path, parameters } = (0, sanitation_1.sanitizeCommandLineArguments)(this.props.arguments);
25
+ this._sessionInfo = {
26
+ identifiers: {
27
+ installationId: await (0, installation_id_1.getOrCreateInstallationId)(this.ioHost.asIoHelper()),
28
+ sessionId: (0, crypto_1.randomUUID)(),
29
+ telemetryVersion: '1.0',
30
+ cdkCliVersion: (0, version_1.versionNumber)(),
31
+ cdkLibraryVersion: await (0, library_version_1.getLibraryVersion)(this.ioHost.asIoHelper()),
32
+ },
33
+ event: {
34
+ command: {
35
+ path,
36
+ parameters,
37
+ config: {
38
+ context: (0, sanitation_1.sanitizeContext)(this.props.context),
39
+ },
40
+ },
41
+ },
42
+ environment: {
43
+ ci: (0, ci_1.isCI)() || Boolean((0, ci_systems_1.detectCiSystem)()),
44
+ os: {
45
+ platform: process.platform,
46
+ release: process.release.name,
47
+ },
48
+ nodeVersion: process.version,
49
+ },
50
+ project: {},
51
+ };
52
+ // If SIGINT has a listener installed, its default behavior will be removed (Node.js will no longer exit).
53
+ // This ensures that on SIGINT we process safely close the telemetry session before exiting.
54
+ process.on('SIGINT', async () => {
55
+ try {
56
+ await this.end({
57
+ name: schema_1.ErrorName.TOOLKIT_ERROR,
58
+ message: ABORTED_ERROR_MESSAGE,
59
+ });
60
+ }
61
+ catch (e) {
62
+ await this.ioHost.defaults.trace(`Ending Telemetry failed: ${e.message}`);
63
+ }
64
+ process.exit(1);
65
+ });
66
+ // Begin the session span
67
+ this.span = await this.ioHost.asIoHelper().span(messages_1.CLI_PRIVATE_SPAN.COMMAND).begin({});
68
+ }
69
+ async attachRegion(region) {
70
+ this.sessionInfo.identifiers = {
71
+ ...this.sessionInfo.identifiers,
72
+ region,
73
+ };
74
+ }
75
+ /**
76
+ * When the command is complete, so is the CliIoHost. Ends the span of the entire CliIoHost
77
+ * and notifies with an optional error message in the data.
78
+ */
79
+ async end(error) {
80
+ await this.span?.end({ error });
81
+ // Ideally span.end() should no-op if called twice, but that is not the case right now
82
+ this.span = undefined;
83
+ await this.client.flush();
84
+ }
85
+ async emit(event) {
86
+ this.count += 1;
87
+ return this.client.emit({
88
+ event: {
89
+ command: this.sessionInfo.event.command,
90
+ state: getState(event.error),
91
+ eventType: event.eventType,
92
+ },
93
+ identifiers: {
94
+ ...this.sessionInfo.identifiers,
95
+ eventId: `${this.sessionInfo.identifiers.sessionId}:${this.count}`,
96
+ timestamp: new Date().toISOString(),
97
+ },
98
+ environment: this.sessionInfo.environment,
99
+ project: this.sessionInfo.project,
100
+ duration: {
101
+ total: event.duration,
102
+ },
103
+ ...(event.error ? {
104
+ error: {
105
+ name: event.error.name,
106
+ },
107
+ } : {}),
108
+ });
109
+ }
110
+ get sessionInfo() {
111
+ if (!this._sessionInfo) {
112
+ throw new toolkit_lib_1.ToolkitError('Session Info not initialized. Call begin() first.');
113
+ }
114
+ return this._sessionInfo;
115
+ }
116
+ }
117
+ exports.TelemetrySession = TelemetrySession;
118
+ function getState(error) {
119
+ if (error) {
120
+ return isAbortedError(error) ? 'ABORTED' : 'FAILED';
121
+ }
122
+ return 'SUCCEEDED';
123
+ }
124
+ function isAbortedError(error) {
125
+ if (error?.name === 'ToolkitError' && error?.message?.includes(ABORTED_ERROR_MESSAGE)) {
126
+ return true;
127
+ }
128
+ return false;
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLHNEQUFvRDtBQUNwRCx1REFBOEQ7QUFDOUQsdURBQXNEO0FBQ3RELDZDQUE2RTtBQUM3RSxxQ0FBd0c7QUFJeEcsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBRTNDLE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUM7QUFldkQsTUFBYSxnQkFBZ0I7SUFPM0IsWUFBNkIsS0FBNEI7UUFBNUIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFGakQsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQiw2QkFBNkI7UUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFBLHlDQUE0QixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFFLE1BQU0sSUFBQSwyQ0FBeUIsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN6RSxTQUFTLEVBQUUsSUFBQSxtQkFBVSxHQUFFO2dCQUN2QixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixhQUFhLEVBQUUsSUFBQSx1QkFBYSxHQUFFO2dCQUM5QixpQkFBaUIsRUFBRSxNQUFNLElBQUEsbUNBQWlCLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyRTtZQUNELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUU7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QUNSLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUTthQUN0QjtZQUNELEdBQUcsQ0FBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDakIsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVksV0FBVztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSwwQkFBWSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUEvR0QsNENBK0dDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBb0I7SUFDcEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQW9CO0lBQzFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzLCBFcnJvck5hbWUgfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IElUZWxlbWV0cnlTaW5rIH0gZnJvbSAnLi9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcblxuY29uc3QgQUJPUlRFRF9FUlJPUl9NRVNTQUdFID0gJ19fQ0RLLVRvb2xraXRfX0Fib3J0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNlc3Npb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGlvSG9zdDogQ2xpSW9Ib3N0O1xuICByZWFkb25seSBjbGllbnQ6IElUZWxlbWV0cnlTaW5rO1xuICByZWFkb25seSBhcmd1bWVudHM6IGFueTtcbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlFdmVudCB7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yRGV0YWlscztcbn1cblxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlc3Npb24ge1xuICBwcml2YXRlIGlvSG9zdDogQ2xpSW9Ib3N0O1xuICBwcml2YXRlIGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvPzogU2Vzc2lvblNjaGVtYTtcbiAgcHJpdmF0ZSBzcGFuPzogSU1lc3NhZ2VTcGFuPEV2ZW50UmVzdWx0PjtcbiAgcHJpdmF0ZSBjb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogVGVsZW1ldHJ5U2Vzc2lvblByb3BzKSB7XG4gICAgdGhpcy5pb0hvc3QgPSBwcm9wcy5pb0hvc3Q7XG4gICAgdGhpcy5jbGllbnQgPSBwcm9wcy5jbGllbnQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYmVnaW4oKSB7XG4gICAgLy8gc2FuaXRpemUgdGhlIHJhdyBjbGkgaW5wdXRcbiAgICBjb25zdCB7IHBhdGgsIHBhcmFtZXRlcnMgfSA9IHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHModGhpcy5wcm9wcy5hcmd1bWVudHMpO1xuICAgIHRoaXMuX3Nlc3Npb25JbmZvID0ge1xuICAgICAgaWRlbnRpZmllcnM6IHtcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGF3YWl0IGdldE9yQ3JlYXRlSW5zdGFsbGF0aW9uSWQodGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgICAgc2Vzc2lvbklkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHRlbGVtZXRyeVZlcnNpb246ICcxLjAnLFxuICAgICAgICBjZGtDbGlWZXJzaW9uOiB2ZXJzaW9uTnVtYmVyKCksXG4gICAgICAgIGNka0xpYnJhcnlWZXJzaW9uOiBhd2FpdCBnZXRMaWJyYXJ5VmVyc2lvbih0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkpLFxuICAgICAgfSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBjb250ZXh0OiBzYW5pdGl6ZUNvbnRleHQodGhpcy5wcm9wcy5jb250ZXh0KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGNpOiBpc0NJKCkgfHwgQm9vbGVhbihkZXRlY3RDaVN5c3RlbSgpKSxcbiAgICAgICAgb3M6IHtcbiAgICAgICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgICAgICByZWxlYXNlOiBwcm9jZXNzLnJlbGVhc2UubmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZVZlcnNpb246IHByb2Nlc3MudmVyc2lvbixcbiAgICAgIH0sXG4gICAgICBwcm9qZWN0OiB7fSxcbiAgICB9O1xuXG4gICAgLy8gSWYgU0lHSU5UIGhhcyBhIGxpc3RlbmVyIGluc3RhbGxlZCwgaXRzIGRlZmF1bHQgYmVoYXZpb3Igd2lsbCBiZSByZW1vdmVkIChOb2RlLmpzIHdpbGwgbm8gbG9uZ2VyIGV4aXQpLlxuICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IG9uIFNJR0lOVCB3ZSBwcm9jZXNzIHNhZmVseSBjbG9zZSB0aGUgdGVsZW1ldHJ5IHNlc3Npb24gYmVmb3JlIGV4aXRpbmcuXG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbmQoe1xuICAgICAgICAgIG5hbWU6IEVycm9yTmFtZS5UT09MS0lUX0VSUk9SLFxuICAgICAgICAgIG1lc3NhZ2U6IEFCT1JURURfRVJST1JfTUVTU0FHRSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pb0hvc3QuZGVmYXVsdHMudHJhY2UoYEVuZGluZyBUZWxlbWV0cnkgZmFpbGVkOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9KTtcblxuICAgIC8vIEJlZ2luIHRoZSBzZXNzaW9uIHNwYW5cbiAgICB0aGlzLnNwYW4gPSBhd2FpdCB0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkuc3BhbihDTElfUFJJVkFURV9TUEFOLkNPTU1BTkQpLmJlZ2luKHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhdHRhY2hSZWdpb24ocmVnaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzID0ge1xuICAgICAgLi4udGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyxcbiAgICAgIHJlZ2lvbixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGNvbW1hbmQgaXMgY29tcGxldGUsIHNvIGlzIHRoZSBDbGlJb0hvc3QuIEVuZHMgdGhlIHNwYW4gb2YgdGhlIGVudGlyZSBDbGlJb0hvc3RcbiAgICogYW5kIG5vdGlmaWVzIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZSBpbiB0aGUgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbmQoZXJyb3I/OiBFcnJvckRldGFpbHMpIHtcbiAgICBhd2FpdCB0aGlzLnNwYW4/LmVuZCh7IGVycm9yIH0pO1xuICAgIC8vIElkZWFsbHkgc3Bhbi5lbmQoKSBzaG91bGQgbm8tb3AgaWYgY2FsbGVkIHR3aWNlLCBidXQgdGhhdCBpcyBub3QgdGhlIGNhc2UgcmlnaHQgbm93XG4gICAgdGhpcy5zcGFuID0gdW5kZWZpbmVkO1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZsdXNoKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1pdChldmVudDogVGVsZW1ldHJ5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvdW50ICs9IDE7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmVtaXQoe1xuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDogdGhpcy5zZXNzaW9uSW5mby5ldmVudC5jb21tYW5kLFxuICAgICAgICBzdGF0ZTogZ2V0U3RhdGUoZXZlbnQuZXJyb3IpLFxuICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIH0sXG4gICAgICBpZGVudGlmaWVyczoge1xuICAgICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgICBldmVudElkOiBgJHt0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLnNlc3Npb25JZH06JHt0aGlzLmNvdW50fWAsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50LFxuICAgICAgcHJvamVjdDogdGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0LFxuICAgICAgZHVyYXRpb246IHtcbiAgICAgICAgdG90YWw6IGV2ZW50LmR1cmF0aW9uLFxuICAgICAgfSxcbiAgICAgIC4uLiggZXZlbnQuZXJyb3IgPyB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbmFtZTogZXZlbnQuZXJyb3IubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXNzaW9uSW5mbygpOiBTZXNzaW9uU2NoZW1hIHtcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXNzaW9uIEluZm8gbm90IGluaXRpYWxpemVkLiBDYWxsIGJlZ2luKCkgZmlyc3QuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSW5mbztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTdGF0ZShlcnJvcj86IEVycm9yRGV0YWlscyk6IFN0YXRlIHtcbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIGlzQWJvcnRlZEVycm9yKGVycm9yKSA/ICdBQk9SVEVEJyA6ICdGQUlMRUQnO1xuICB9XG4gIHJldHVybiAnU1VDQ0VFREVEJztcbn1cblxuZnVuY3Rpb24gaXNBYm9ydGVkRXJyb3IoZXJyb3I/OiBFcnJvckRldGFpbHMpIHtcbiAgaWYgKGVycm9yPy5uYW1lID09PSAnVG9vbGtpdEVycm9yJyAmJiBlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoQUJPUlRFRF9FUlJPUl9NRVNTQUdFKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { Context } from '../api/context';
2
2
  import { Settings } from '../api/settings';
3
+ import type { IoHelper } from '../api-private';
3
4
  export declare const PROJECT_CONFIG = "cdk.json";
4
5
  export { PROJECT_CONTEXT } from '../api/context';
5
6
  export declare const USER_DEFAULTS = "~/.cdk.json";
@@ -17,6 +18,7 @@ export declare enum Command {
17
18
  VERSION = "version",
18
19
  WATCH = "watch",
19
20
  GC = "gc",
21
+ FLAGS = "flags",
20
22
  ROLLBACK = "rollback",
21
23
  IMPORT = "import",
22
24
  ACKNOWLEDGE = "acknowledge",
@@ -56,7 +58,14 @@ export interface ConfigurationProps {
56
58
  * All sources of settings combined
57
59
  */
58
60
  export declare class Configuration {
59
- private readonly props;
61
+ /**
62
+ * Creates user configuration from commandLineArguments
63
+ */
64
+ static fromArgs(ioHelper: IoHelper, args?: Arguments): Promise<Configuration>;
65
+ /**
66
+ * Creates user configuration from commandLineArguments and loads
67
+ */
68
+ static fromArgsAndFiles(ioHelper: IoHelper, props?: ConfigurationProps): Promise<Configuration>;
60
69
  settings: Settings;
61
70
  context: Context;
62
71
  readonly defaultConfig: Settings;
@@ -65,13 +74,14 @@ export declare class Configuration {
65
74
  private _projectConfig?;
66
75
  private _projectContext?;
67
76
  private loaded;
68
- constructor(props?: ConfigurationProps);
77
+ private ioHelper;
78
+ private constructor();
69
79
  private get projectConfig();
70
80
  get projectContext(): Settings;
71
81
  /**
72
82
  * Load all config
73
83
  */
74
- load(): Promise<this>;
84
+ private loadConfigFiles;
75
85
  /**
76
86
  * Save the project context
77
87
  */
@@ -90,4 +100,4 @@ export declare class Configuration {
90
100
  * @param argv - the received CLI arguments.
91
101
  * @returns a new Settings object.
92
102
  */
93
- export declare function commandLineArgumentsToSettings(argv: Arguments): Settings;
103
+ export declare function commandLineArgumentsToSettings(ioHelper: IoHelper, argv: Arguments): Promise<Settings>;