@aws-cdk/toolkit-lib 0.3.1 → 0.3.3
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.
- package/README.md +1 -1
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/bootstrap/index.d.ts +1 -1
- package/lib/actions/bootstrap/index.js +5 -5
- package/lib/actions/deploy/index.d.ts +1 -1
- package/lib/actions/deploy/index.js +1 -1
- package/lib/actions/deploy/private/deploy-options.d.ts +1 -1
- package/lib/actions/deploy/private/deploy-options.js +1 -1
- package/lib/actions/deploy/private/helpers.d.ts +3 -2
- package/lib/actions/deploy/private/helpers.js +3 -3
- package/lib/actions/diff/private/helpers.d.ts +5 -9
- package/lib/actions/diff/private/helpers.js +6 -23
- package/lib/api/aws-auth/account-cache.d.ts +41 -0
- package/lib/api/aws-auth/account-cache.js +108 -0
- package/lib/api/aws-auth/awscli-compatible.d.ts +70 -0
- package/lib/api/aws-auth/awscli-compatible.js +250 -0
- package/lib/api/aws-auth/cached.d.ts +11 -0
- package/lib/api/aws-auth/cached.js +26 -0
- package/lib/api/aws-auth/credential-plugins.d.ts +38 -0
- package/lib/api/aws-auth/credential-plugins.js +154 -0
- package/lib/api/aws-auth/private/index.d.ts +11 -0
- package/lib/api/aws-auth/private/index.js +37 -0
- package/lib/api/aws-auth/provider-caching.d.ts +13 -0
- package/lib/api/aws-auth/provider-caching.js +24 -0
- package/lib/api/aws-auth/proxy-agent.d.ts +13 -0
- package/lib/api/aws-auth/proxy-agent.js +54 -0
- package/lib/api/aws-auth/sdk-logger.d.ts +69 -0
- package/lib/api/aws-auth/sdk-logger.js +128 -0
- package/lib/api/aws-auth/sdk-provider.d.ts +195 -0
- package/lib/api/aws-auth/sdk-provider.js +373 -0
- package/lib/api/aws-auth/sdk.d.ts +235 -0
- package/lib/api/aws-auth/sdk.js +391 -0
- package/lib/api/aws-auth/tracing.d.ts +11 -0
- package/lib/api/aws-auth/tracing.js +60 -0
- package/lib/api/aws-auth/types.d.ts +79 -1
- package/lib/api/aws-auth/types.js +74 -1
- package/lib/api/aws-auth/user-agent.d.ts +7 -0
- package/lib/api/aws-auth/user-agent.js +20 -0
- package/lib/api/aws-auth/util.d.ts +6 -0
- package/lib/api/aws-auth/util.js +21 -0
- package/lib/api/bootstrap/bootstrap-environment.d.ts +35 -0
- package/lib/api/bootstrap/bootstrap-environment.js +323 -0
- package/lib/api/bootstrap/bootstrap-props.d.ts +130 -0
- package/lib/api/bootstrap/bootstrap-props.js +14 -0
- package/lib/api/bootstrap/deploy-bootstrap.d.ts +39 -0
- package/lib/api/bootstrap/deploy-bootstrap.js +147 -0
- package/lib/api/bootstrap/index.d.ts +3 -0
- package/lib/api/bootstrap/index.js +23 -0
- package/lib/api/bootstrap/legacy-template.d.ts +2 -0
- package/lib/api/bootstrap/legacy-template.js +82 -0
- package/lib/api/cloud-assembly/environment.d.ts +43 -0
- package/lib/api/cloud-assembly/environment.js +127 -0
- package/lib/api/cloud-assembly/index.d.ts +1 -1
- package/lib/api/cloud-assembly/index.js +3 -3
- package/lib/api/cloud-assembly/private/context-aware-source.d.ts +1 -1
- package/lib/api/cloud-assembly/private/context-aware-source.js +5 -5
- package/lib/api/cloud-assembly/private/prepare-source.d.ts +2 -1
- package/lib/api/cloud-assembly/private/prepare-source.js +14 -12
- package/lib/api/cloud-assembly/private/readable-assembly.d.ts +1 -1
- package/lib/api/cloud-assembly/private/readable-assembly.js +1 -1
- package/lib/api/cloud-assembly/private/source-builder.js +10 -8
- package/lib/api/cloud-assembly/private/stack-assembly.d.ts +2 -1
- package/lib/api/cloud-assembly/private/stack-assembly.js +10 -9
- package/lib/api/cloud-assembly/stack-assembly.d.ts +55 -0
- package/lib/api/cloud-assembly/stack-assembly.js +139 -0
- package/lib/api/cloud-assembly/stack-collection.d.ts +27 -0
- package/lib/api/cloud-assembly/stack-collection.js +112 -0
- package/lib/api/cloud-assembly/stack-selector.d.ts +81 -2
- package/lib/api/cloud-assembly/stack-selector.js +62 -5
- package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +85 -0
- package/lib/api/cloudformation/evaluate-cloudformation-template.js +456 -0
- package/lib/api/cloudformation/index.d.ts +4 -0
- package/lib/api/cloudformation/index.js +21 -0
- package/lib/api/cloudformation/nested-stack-helpers.d.ts +25 -0
- package/lib/api/cloudformation/nested-stack-helpers.js +86 -0
- package/lib/api/cloudformation/stack-helpers.d.ts +96 -0
- package/lib/api/cloudformation/stack-helpers.js +163 -0
- package/lib/api/cloudformation/template-body-parameter.d.ts +22 -0
- package/lib/api/cloudformation/template-body-parameter.js +104 -0
- package/lib/api/context.d.ts +40 -0
- package/lib/api/context.js +84 -0
- package/lib/api/deployments/asset-manifest-builder.d.ts +8 -0
- package/lib/api/deployments/asset-manifest-builder.js +33 -0
- package/lib/api/deployments/asset-publishing.d.ts +60 -0
- package/lib/api/deployments/asset-publishing.js +144 -0
- package/lib/api/deployments/assets.d.ts +11 -0
- package/lib/api/deployments/assets.js +109 -0
- package/lib/api/deployments/cfn-api.d.ts +145 -0
- package/lib/api/deployments/cfn-api.js +444 -0
- package/lib/api/deployments/checks.d.ts +9 -0
- package/lib/api/deployments/checks.js +72 -0
- package/lib/api/deployments/deploy-stack.d.ts +164 -0
- package/lib/api/deployments/deploy-stack.js +490 -0
- package/lib/api/deployments/deployment-method.d.ts +24 -0
- package/lib/api/deployments/deployment-method.js +3 -0
- package/lib/api/deployments/deployment-result.d.ts +21 -0
- package/lib/api/deployments/deployment-result.js +10 -0
- package/lib/api/deployments/deployments.d.ts +289 -0
- package/lib/api/deployments/deployments.js +355 -0
- package/lib/api/deployments/index.d.ts +6 -0
- package/lib/api/deployments/index.js +27 -0
- package/lib/api/diff/diff-formatter.d.ts +147 -0
- package/lib/api/diff/diff-formatter.js +225 -0
- package/lib/api/diff/index.d.ts +1 -0
- package/lib/api/diff/index.js +18 -0
- package/lib/api/environment/environment-access.d.ts +139 -0
- package/lib/api/environment/environment-access.js +205 -0
- package/lib/api/environment/environment-resources.d.ts +75 -0
- package/lib/api/environment/environment-resources.js +213 -0
- package/lib/api/environment/index.d.ts +3 -0
- package/lib/api/environment/index.js +20 -0
- package/lib/api/environment/placeholders.d.ts +10 -0
- package/lib/api/environment/placeholders.js +23 -0
- package/lib/api/garbage-collection/garbage-collector.d.ts +158 -0
- package/lib/api/garbage-collection/garbage-collector.js +614 -0
- package/lib/api/garbage-collection/index.d.ts +3 -0
- package/lib/api/garbage-collection/index.js +21 -0
- package/lib/api/garbage-collection/progress-printer.d.ts +23 -0
- package/lib/api/garbage-collection/progress-printer.js +80 -0
- package/lib/api/garbage-collection/stack-refresh.d.ts +49 -0
- package/lib/api/garbage-collection/stack-refresh.js +152 -0
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +4 -0
- package/lib/api/hotswap/appsync-mapping-templates.js +162 -0
- package/lib/api/hotswap/code-build-projects.d.ts +4 -0
- package/lib/api/hotswap/code-build-projects.js +62 -0
- package/lib/api/hotswap/common.d.ts +89 -0
- package/lib/api/hotswap/common.js +137 -0
- package/lib/api/hotswap/ecs-services.d.ts +4 -0
- package/lib/api/hotswap/ecs-services.js +159 -0
- package/lib/api/hotswap/hotswap-deployments.d.ts +17 -0
- package/lib/api/hotswap/hotswap-deployments.js +441 -0
- package/lib/api/hotswap/index.d.ts +2 -0
- package/lib/api/hotswap/index.js +19 -0
- package/lib/api/hotswap/lambda-functions.d.ts +4 -0
- package/lib/api/hotswap/lambda-functions.js +297 -0
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +5 -0
- package/lib/api/hotswap/s3-bucket-deployments.js +117 -0
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +4 -0
- package/lib/api/hotswap/stepfunctions-state-machines.js +48 -0
- package/lib/api/index.d.ts +25 -0
- package/lib/api/index.js +42 -0
- package/lib/api/io/index.d.ts +3 -1
- package/lib/api/io/index.js +18 -1
- package/lib/api/io/io-host.d.ts +15 -0
- package/lib/api/io/io-host.js +3 -0
- package/lib/api/io/io-message.d.ts +76 -0
- package/lib/api/io/io-message.js +3 -0
- package/lib/api/io/private/index.d.ts +7 -1
- package/lib/api/io/private/index.js +8 -5
- package/lib/api/io/private/io-default-messages.d.ts +21 -0
- package/lib/api/io/private/io-default-messages.js +59 -0
- package/lib/api/io/private/io-helper.d.ts +32 -0
- package/lib/api/io/private/io-helper.js +51 -0
- package/lib/api/io/private/level-priority.d.ts +11 -0
- package/lib/api/io/private/level-priority.js +33 -0
- package/lib/api/io/private/message-maker.d.ts +89 -0
- package/lib/api/io/private/message-maker.js +60 -0
- package/lib/api/io/private/messages.d.ts +178 -0
- package/lib/api/io/private/messages.js +534 -0
- package/lib/api/io/private/span.d.ts +93 -0
- package/lib/api/io/private/span.js +87 -0
- package/lib/api/io/private/testing/fake-io-host.d.ts +28 -0
- package/lib/api/io/private/testing/fake-io-host.js +41 -0
- package/lib/api/io/private/testing/index.d.ts +2 -0
- package/lib/api/io/private/testing/index.js +19 -0
- package/lib/api/io/private/testing/test-io-host.d.ts +27 -0
- package/lib/api/io/private/testing/test-io-host.js +61 -0
- package/lib/api/io/private/types.d.ts +4 -0
- package/lib/api/io/private/types.js +3 -0
- package/lib/api/io/toolkit-action.d.ts +4 -0
- package/lib/api/io/toolkit-action.js +3 -0
- package/lib/api/logs-monitor/find-cloudwatch-logs.d.ts +25 -0
- package/lib/api/logs-monitor/find-cloudwatch-logs.js +95 -0
- package/lib/api/logs-monitor/index.d.ts +2 -0
- package/lib/api/logs-monitor/index.js +19 -0
- package/lib/api/logs-monitor/logs-monitor.d.ts +76 -0
- package/lib/api/logs-monitor/logs-monitor.js +194 -0
- package/lib/api/notices.d.ts +210 -0
- package/lib/api/notices.js +430 -0
- package/lib/api/plugin/context-provider-plugin.d.ts +6 -0
- package/lib/api/plugin/context-provider-plugin.js +7 -0
- package/lib/api/plugin/index.d.ts +3 -0
- package/lib/api/plugin/index.js +20 -0
- package/lib/api/plugin/mode.d.ts +4 -0
- package/lib/api/plugin/mode.js +9 -0
- package/lib/api/plugin/plugin.d.ts +72 -0
- package/lib/api/plugin/plugin.js +132 -0
- package/lib/api/private.d.ts +1 -0
- package/lib/api/private.js +18 -0
- package/lib/api/refactoring/cloudformation.d.ts +15 -0
- package/lib/api/refactoring/cloudformation.js +3 -0
- package/lib/api/refactoring/digest.d.ts +26 -0
- package/lib/api/refactoring/digest.js +175 -0
- package/lib/api/refactoring/index.d.ts +51 -0
- package/lib/api/refactoring/index.js +223 -0
- package/lib/api/require-approval.d.ts +17 -0
- package/lib/api/require-approval.js +22 -0
- package/lib/api/resource-import/importer.d.ts +216 -0
- package/lib/api/resource-import/importer.js +331 -0
- package/lib/api/resource-import/index.d.ts +2 -0
- package/lib/api/resource-import/index.js +19 -0
- package/lib/api/resource-import/migrator.d.ts +26 -0
- package/lib/api/resource-import/migrator.js +73 -0
- package/lib/api/resource-metadata/index.d.ts +1 -0
- package/lib/api/resource-metadata/index.js +18 -0
- package/lib/api/resource-metadata/resource-metadata.d.ts +24 -0
- package/lib/api/resource-metadata/resource-metadata.js +42 -0
- package/lib/api/rwlock.d.ts +60 -0
- package/lib/api/rwlock.js +204 -0
- package/lib/api/settings.d.ts +26 -0
- package/lib/api/settings.js +107 -0
- package/lib/api/shared-private.d.ts +8 -5
- package/lib/api/shared-private.js +2921 -9246
- package/lib/api/shared-private.js.map +4 -4
- package/lib/api/shared-public.d.ts +179 -37
- package/lib/api/shared-public.js +3106 -16
- package/lib/api/shared-public.js.map +4 -4
- package/lib/api/stack-events/index.d.ts +4 -0
- package/lib/api/stack-events/index.js +23 -0
- package/lib/api/stack-events/stack-activity-monitor.d.ts +100 -0
- package/lib/api/stack-events/stack-activity-monitor.js +164 -0
- package/lib/api/stack-events/stack-event-poller.d.ts +69 -0
- package/lib/api/stack-events/stack-event-poller.js +130 -0
- package/lib/api/stack-events/stack-progress-monitor.d.ts +48 -0
- package/lib/api/stack-events/stack-progress-monitor.js +98 -0
- package/lib/api/stack-events/stack-status.d.ts +42 -0
- package/lib/api/stack-events/stack-status.js +90 -0
- package/lib/api/streams.d.ts +7 -0
- package/lib/api/streams.js +24 -0
- package/lib/api/tags.d.ts +9 -0
- package/lib/api/tags.js +10 -0
- package/lib/api/toolkit-error.d.ts +86 -0
- package/lib/api/toolkit-error.js +132 -0
- package/lib/api/toolkit-info.d.ts +52 -0
- package/lib/api/toolkit-info.js +157 -0
- package/lib/api/tree.d.ts +31 -0
- package/lib/api/tree.js +37 -0
- package/lib/api/work-graph/index.d.ts +3 -0
- package/lib/api/work-graph/index.js +20 -0
- package/lib/api/work-graph/work-graph-builder.d.ts +34 -0
- package/lib/api/work-graph/work-graph-builder.js +172 -0
- package/lib/api/work-graph/work-graph-types.d.ts +50 -0
- package/lib/api/work-graph/work-graph-types.js +13 -0
- package/lib/api/work-graph/work-graph.d.ts +72 -0
- package/lib/api/work-graph/work-graph.js +349 -0
- package/lib/context-providers/ami.d.ts +13 -0
- package/lib/context-providers/ami.js +52 -0
- package/lib/context-providers/availability-zones.d.ts +13 -0
- package/lib/context-providers/availability-zones.js +29 -0
- package/lib/context-providers/cc-api-provider.d.ts +30 -0
- package/lib/context-providers/cc-api-provider.js +145 -0
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +13 -0
- package/lib/context-providers/endpoint-service-availability-zones.js +35 -0
- package/lib/context-providers/hosted-zones.d.ts +12 -0
- package/lib/context-providers/hosted-zones.js +69 -0
- package/lib/context-providers/index.d.ts +44 -0
- package/lib/context-providers/index.js +128 -0
- package/lib/context-providers/keys.d.ts +13 -0
- package/lib/context-providers/keys.js +54 -0
- package/lib/context-providers/load-balancers.d.ts +20 -0
- package/lib/context-providers/load-balancers.js +161 -0
- package/lib/context-providers/security-groups.d.ts +9 -0
- package/lib/context-providers/security-groups.js +69 -0
- package/lib/context-providers/ssm-parameters.d.ts +25 -0
- package/lib/context-providers/ssm-parameters.js +61 -0
- package/lib/context-providers/vpcs.d.ts +13 -0
- package/lib/context-providers/vpcs.js +291 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/bootstrap-environment-progress.d.ts +17 -0
- package/lib/payloads/bootstrap-environment-progress.js +3 -0
- package/lib/payloads/context.d.ts +9 -0
- package/lib/payloads/context.js +3 -0
- package/lib/payloads/deploy.d.ts +43 -0
- package/lib/payloads/deploy.js +3 -0
- package/lib/payloads/destroy.d.ts +23 -0
- package/lib/payloads/destroy.js +3 -0
- package/lib/payloads/diff.d.ts +31 -0
- package/lib/payloads/diff.js +22 -0
- package/lib/payloads/hotswap.d.ts +211 -0
- package/lib/payloads/hotswap.js +43 -0
- package/lib/payloads/index.d.ts +17 -0
- package/lib/payloads/index.js +34 -0
- package/lib/payloads/list.d.ts +4 -0
- package/lib/payloads/list.js +3 -0
- package/lib/payloads/logs-monitor.d.ts +33 -0
- package/lib/payloads/logs-monitor.js +3 -0
- package/lib/payloads/progress.d.ts +14 -0
- package/lib/payloads/progress.js +3 -0
- package/lib/payloads/refactor.d.ts +14 -0
- package/lib/payloads/refactor.js +3 -0
- package/lib/payloads/rollback.d.ts +17 -0
- package/lib/payloads/rollback.js +3 -0
- package/lib/payloads/sdk-trace.d.ts +20 -0
- package/lib/payloads/sdk-trace.js +3 -0
- package/lib/payloads/stack-activity.d.ts +53 -0
- package/lib/payloads/stack-activity.js +3 -0
- package/lib/payloads/stack-details.d.ts +17 -0
- package/lib/payloads/stack-details.js +3 -0
- package/lib/payloads/synth.d.ts +7 -0
- package/lib/payloads/synth.js +3 -0
- package/lib/payloads/types.d.ts +95 -0
- package/lib/payloads/types.js +3 -0
- package/lib/payloads/watch.d.ts +27 -0
- package/lib/payloads/watch.js +3 -0
- package/lib/private/activity-printer/base.d.ts +50 -0
- package/lib/private/activity-printer/base.js +120 -0
- package/lib/private/activity-printer/current.d.ts +26 -0
- package/lib/private/activity-printer/current.js +122 -0
- package/lib/private/activity-printer/display.d.ts +13 -0
- package/lib/private/activity-printer/display.js +81 -0
- package/lib/private/activity-printer/history.d.ts +32 -0
- package/lib/private/activity-printer/history.js +109 -0
- package/lib/private/activity-printer/index.d.ts +3 -0
- package/lib/private/activity-printer/index.js +20 -0
- package/lib/private/index.d.ts +1 -0
- package/lib/private/index.js +18 -0
- package/lib/private/util.d.ts +1 -1
- package/lib/private/util.js +22 -22
- package/lib/private/util.js.map +2 -2
- package/lib/toolkit/private/index.d.ts +2 -0
- package/lib/toolkit/private/index.js +1 -1
- package/lib/toolkit/toolkit.d.ts +16 -0
- package/lib/toolkit/toolkit.js +158 -124
- package/lib/toolkit/types.d.ts +0 -55
- package/lib/toolkit/types.js +1 -1
- package/lib/util/archive.d.ts +1 -0
- package/lib/util/archive.js +86 -0
- package/lib/util/arrays.d.ts +14 -0
- package/lib/util/arrays.js +36 -0
- package/lib/util/bool.d.ts +7 -0
- package/lib/util/bool.js +13 -0
- package/lib/util/bytes.d.ts +8 -0
- package/lib/util/bytes.js +21 -0
- package/lib/util/cloudformation.d.ts +16 -0
- package/lib/util/cloudformation.js +36 -0
- package/lib/util/content-hash.d.ts +5 -0
- package/lib/util/content-hash.js +43 -0
- package/lib/util/directories.d.ts +22 -0
- package/lib/util/directories.js +59 -0
- package/lib/util/format-error.d.ts +9 -0
- package/lib/util/format-error.js +22 -0
- package/lib/util/index.d.ts +18 -0
- package/lib/util/index.js +35 -0
- package/lib/util/json.d.ts +48 -0
- package/lib/util/json.js +68 -0
- package/lib/util/objects.d.ts +65 -0
- package/lib/util/objects.js +230 -0
- package/lib/util/package-info.d.ts +3 -0
- package/lib/util/package-info.js +22 -0
- package/lib/util/parallel.d.ts +6 -0
- package/lib/util/parallel.js +48 -0
- package/lib/util/serialize.d.ts +27 -0
- package/lib/util/serialize.js +86 -0
- package/lib/util/string-manipulation.d.ts +18 -0
- package/lib/util/string-manipulation.js +46 -0
- package/lib/util/type-brands.d.ts +39 -0
- package/lib/util/type-brands.js +39 -0
- package/lib/util/types.d.ts +27 -0
- package/lib/util/types.js +25 -0
- package/lib/util/version-range.d.ts +2 -0
- package/lib/util/version-range.js +36 -0
- package/lib/util/yaml-cfn.d.ts +15 -0
- package/lib/util/yaml-cfn.js +58 -0
- package/package.json +12 -13
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ActionLessMessage, IoHelper } from './io-helper';
|
|
2
|
+
import type { IoMessageMaker } from './message-maker';
|
|
3
|
+
import type { Duration } from '../../../payloads/types';
|
|
4
|
+
export interface SpanEnd {
|
|
5
|
+
readonly duration: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Describes a specific span
|
|
9
|
+
*
|
|
10
|
+
* A span definition is a pair of `IoMessageMaker`s to create a start and end message of the span respectively.
|
|
11
|
+
* It also has a display name, that is used for auto-generated message text when they are not provided.
|
|
12
|
+
*/
|
|
13
|
+
export interface SpanDefinition<S extends object, E extends SpanEnd> {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly start: IoMessageMaker<S>;
|
|
16
|
+
readonly end: IoMessageMaker<E>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Used in conditional types to check if a type (e.g. after omitting fields) is an empty object
|
|
20
|
+
* This is needed because counter-intuitive neither `object` nor `{}` represent that.
|
|
21
|
+
*/
|
|
22
|
+
type EmptyObject = {
|
|
23
|
+
[index: string | number | symbol]: never;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Helper type to force a parameter to be not present of the computed type is an empty object
|
|
27
|
+
*/
|
|
28
|
+
type VoidWhenEmpty<T> = T extends EmptyObject ? void : T;
|
|
29
|
+
/**
|
|
30
|
+
* Helper type to force a parameter to be an empty object if the computed type is an empty object
|
|
31
|
+
* This is weird, but some computed types (e.g. using `Omit`) don't end up enforcing this.
|
|
32
|
+
*/
|
|
33
|
+
type ForceEmpty<T> = T extends EmptyObject ? EmptyObject : T;
|
|
34
|
+
/**
|
|
35
|
+
* Make some properties optional
|
|
36
|
+
*/
|
|
37
|
+
type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
|
38
|
+
/**
|
|
39
|
+
* Ending the span returns the observed duration
|
|
40
|
+
*/
|
|
41
|
+
interface ElapsedTime {
|
|
42
|
+
readonly asMs: number;
|
|
43
|
+
readonly asSec: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A message span that can be ended and read times from
|
|
47
|
+
*/
|
|
48
|
+
export interface IMessageSpan<E extends SpanEnd> {
|
|
49
|
+
/**
|
|
50
|
+
* Get the time elapsed since the start
|
|
51
|
+
*/
|
|
52
|
+
elapsedTime(): Promise<ElapsedTime>;
|
|
53
|
+
/**
|
|
54
|
+
* Sends a simple, generic message with the current timing
|
|
55
|
+
* For more complex intermediate messages, get the `elapsedTime` and use `notify`
|
|
56
|
+
*/
|
|
57
|
+
timing(maker: IoMessageMaker<Duration>, message?: string): Promise<ElapsedTime>;
|
|
58
|
+
/**
|
|
59
|
+
* Sends an arbitrary intermediate message as part of the span
|
|
60
|
+
*/
|
|
61
|
+
notify(message: ActionLessMessage<unknown>): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* End the span with a payload
|
|
64
|
+
*/
|
|
65
|
+
end(payload: VoidWhenEmpty<Omit<E, keyof SpanEnd>>): Promise<ElapsedTime>;
|
|
66
|
+
/**
|
|
67
|
+
* End the span with a payload, overwriting
|
|
68
|
+
*/
|
|
69
|
+
end(payload: VoidWhenEmpty<Optional<E, keyof SpanEnd>>): Promise<ElapsedTime>;
|
|
70
|
+
/**
|
|
71
|
+
* End the span with a message and payload
|
|
72
|
+
*/
|
|
73
|
+
end(message: string, payload: ForceEmpty<Optional<E, keyof SpanEnd>>): Promise<ElapsedTime>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Helper class to make spans around blocks of work
|
|
77
|
+
*
|
|
78
|
+
* Blocks are enclosed by a start and end message.
|
|
79
|
+
* All messages of the span share a unique id.
|
|
80
|
+
* The end message contains the time passed between start and end.
|
|
81
|
+
*/
|
|
82
|
+
export declare class SpanMaker<S extends object, E extends SpanEnd> {
|
|
83
|
+
private readonly definition;
|
|
84
|
+
private readonly ioHelper;
|
|
85
|
+
constructor(ioHelper: IoHelper, definition: SpanDefinition<S, E>);
|
|
86
|
+
/**
|
|
87
|
+
* Starts the span and initially notifies the IoHost
|
|
88
|
+
* @returns a message span
|
|
89
|
+
*/
|
|
90
|
+
begin(payload: VoidWhenEmpty<S>): Promise<IMessageSpan<E>>;
|
|
91
|
+
begin(message: string, payload: S): Promise<IMessageSpan<E>>;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpanMaker = void 0;
|
|
4
|
+
const util = require("node:util");
|
|
5
|
+
const uuid = require("uuid");
|
|
6
|
+
const util_1 = require("../../../util");
|
|
7
|
+
/**
|
|
8
|
+
* Helper class to make spans around blocks of work
|
|
9
|
+
*
|
|
10
|
+
* Blocks are enclosed by a start and end message.
|
|
11
|
+
* All messages of the span share a unique id.
|
|
12
|
+
* The end message contains the time passed between start and end.
|
|
13
|
+
*/
|
|
14
|
+
class SpanMaker {
|
|
15
|
+
definition;
|
|
16
|
+
ioHelper;
|
|
17
|
+
constructor(ioHelper, definition) {
|
|
18
|
+
this.definition = definition;
|
|
19
|
+
this.ioHelper = ioHelper;
|
|
20
|
+
}
|
|
21
|
+
async begin(a, b) {
|
|
22
|
+
const spanId = uuid.v4();
|
|
23
|
+
const startTime = new Date().getTime();
|
|
24
|
+
const notify = (msg) => {
|
|
25
|
+
return this.ioHelper.notify(withSpanId(spanId, msg));
|
|
26
|
+
};
|
|
27
|
+
const startInput = parseArgs(a, b);
|
|
28
|
+
const startMsg = startInput.message ?? `Starting ${this.definition.name} ...`;
|
|
29
|
+
const startPayload = startInput.payload;
|
|
30
|
+
await notify(this.definition.start.msg(startMsg, startPayload));
|
|
31
|
+
const timingMsgTemplate = '\n✨ %s time: %ds\n';
|
|
32
|
+
const time = () => {
|
|
33
|
+
const elapsedTime = new Date().getTime() - startTime;
|
|
34
|
+
return {
|
|
35
|
+
asMs: elapsedTime,
|
|
36
|
+
asSec: (0, util_1.formatTime)(elapsedTime),
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
elapsedTime: async () => {
|
|
41
|
+
return time();
|
|
42
|
+
},
|
|
43
|
+
notify: async (msg) => {
|
|
44
|
+
await notify(msg);
|
|
45
|
+
},
|
|
46
|
+
timing: async (maker, message) => {
|
|
47
|
+
const duration = time();
|
|
48
|
+
const timingMsg = message ? message : util.format(timingMsgTemplate, this.definition.name, duration.asSec);
|
|
49
|
+
await notify(maker.msg(timingMsg, {
|
|
50
|
+
duration: duration.asMs,
|
|
51
|
+
}));
|
|
52
|
+
return duration;
|
|
53
|
+
},
|
|
54
|
+
end: async (x, y) => {
|
|
55
|
+
const duration = time();
|
|
56
|
+
const endInput = parseArgs(x, y);
|
|
57
|
+
const endMsg = endInput.message ?? util.format(timingMsgTemplate, this.definition.name, duration.asSec);
|
|
58
|
+
const endPayload = endInput.payload;
|
|
59
|
+
await notify(this.definition.end.msg(endMsg, {
|
|
60
|
+
duration: duration.asMs,
|
|
61
|
+
...endPayload,
|
|
62
|
+
}));
|
|
63
|
+
return duration;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.SpanMaker = SpanMaker;
|
|
69
|
+
function parseArgs(first, second) {
|
|
70
|
+
const firstIsMessage = typeof first === 'string';
|
|
71
|
+
// When the first argument is a string or we have a second argument, then the first arg is the message
|
|
72
|
+
const message = (firstIsMessage || second) ? first : undefined;
|
|
73
|
+
// When the first argument is a string or we have a second argument,
|
|
74
|
+
// then the second arg is the payload, otherwise the first arg is the payload
|
|
75
|
+
const payload = (firstIsMessage || second) ? second : first;
|
|
76
|
+
return {
|
|
77
|
+
message,
|
|
78
|
+
payload,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function withSpanId(span, message) {
|
|
82
|
+
return {
|
|
83
|
+
...message,
|
|
84
|
+
span,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0NBQWtDO0FBQ2xDLDZCQUE2QjtBQUk3Qix3Q0FBMkM7QUFpRjNDOzs7Ozs7R0FNRztBQUNILE1BQWEsU0FBUztJQUNILFVBQVUsQ0FBdUI7SUFDakMsUUFBUSxDQUFXO0lBRXBDLFlBQW1CLFFBQWtCLEVBQUUsVUFBZ0M7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQVFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBTSxFQUFFLENBQUs7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdkMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUErQixFQUFpQixFQUFFO1lBQ2hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDOUUsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUV4QyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3BDLFFBQVEsRUFDUixZQUFZLENBQ2IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNoRCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7WUFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDckQsT0FBTztnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLElBQUEsaUJBQVUsRUFBQyxXQUFXLENBQUM7YUFDL0IsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLE9BQU87WUFDTCxXQUFXLEVBQUUsS0FBSyxJQUEwQixFQUFFO2dCQUM1QyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFDLEdBQStCLEVBQWlCLEVBQUU7Z0JBQzlELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFDLEtBQStCLEVBQUUsT0FBZ0IsRUFBd0IsRUFBRTtnQkFDdkYsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0csTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7b0JBQ2hDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtpQkFDeEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztZQUVELEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBTSxFQUFFLENBQTBDLEVBQXdCLEVBQUU7Z0JBQ3RGLE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUV4QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQXlDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEcsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFFcEMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNsQyxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO29CQUN2QixHQUFHLFVBQVU7aUJBQ1QsQ0FBQyxDQUFDLENBQUM7Z0JBRVgsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE1RUQsOEJBNEVDO0FBRUQsU0FBUyxTQUFTLENBQW1CLEtBQVUsRUFBRSxNQUFVO0lBQ3pELE1BQU0sY0FBYyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztJQUVqRCxzR0FBc0c7SUFDdEcsTUFBTSxPQUFPLEdBQUcsQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRS9ELG9FQUFvRTtJQUNwRSw2RUFBNkU7SUFDN0UsTUFBTSxPQUFPLEdBQUcsQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRTVELE9BQU87UUFDTCxPQUFPO1FBQ1AsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLE9BQW1DO0lBQ25FLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixJQUFJO0tBQ0wsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25MZXNzTWVzc2FnZSwgSW9IZWxwZXIgfSBmcm9tICcuL2lvLWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElvTWVzc2FnZU1ha2VyIH0gZnJvbSAnLi9tZXNzYWdlLW1ha2VyJztcbmltcG9ydCB0eXBlIHsgRHVyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXRUaW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkVuZCB7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgc3BlY2lmaWMgc3BhblxuICpcbiAqIEEgc3BhbiBkZWZpbml0aW9uIGlzIGEgcGFpciBvZiBgSW9NZXNzYWdlTWFrZXJgcyB0byBjcmVhdGUgYSBzdGFydCBhbmQgZW5kIG1lc3NhZ2Ugb2YgdGhlIHNwYW4gcmVzcGVjdGl2ZWx5LlxuICogSXQgYWxzbyBoYXMgYSBkaXNwbGF5IG5hbWUsIHRoYXQgaXMgdXNlZCBmb3IgYXV0by1nZW5lcmF0ZWQgbWVzc2FnZSB0ZXh0IHdoZW4gdGhleSBhcmUgbm90IHByb3ZpZGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5EZWZpbml0aW9uPFMgZXh0ZW5kcyBvYmplY3QsIEUgZXh0ZW5kcyBTcGFuRW5kPiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhcnQ6IElvTWVzc2FnZU1ha2VyPFM+O1xuICByZWFkb25seSBlbmQ6IElvTWVzc2FnZU1ha2VyPEU+O1xufVxuXG4vKipcbiAqIFVzZWQgaW4gY29uZGl0aW9uYWwgdHlwZXMgdG8gY2hlY2sgaWYgYSB0eXBlIChlLmcuIGFmdGVyIG9taXR0aW5nIGZpZWxkcykgaXMgYW4gZW1wdHkgb2JqZWN0XG4gKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGNvdW50ZXItaW50dWl0aXZlIG5laXRoZXIgYG9iamVjdGAgbm9yIGB7fWAgcmVwcmVzZW50IHRoYXQuXG4gKi9cbnR5cGUgRW1wdHlPYmplY3QgPSB7XG4gIFtpbmRleDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogbmV2ZXI7XG59XG5cbi8qKlxuICogSGVscGVyIHR5cGUgdG8gZm9yY2UgYSBwYXJhbWV0ZXIgdG8gYmUgbm90IHByZXNlbnQgb2YgdGhlIGNvbXB1dGVkIHR5cGUgaXMgYW4gZW1wdHkgb2JqZWN0XG4gKi9cbnR5cGUgVm9pZFdoZW5FbXB0eTxUPiA9IFQgZXh0ZW5kcyBFbXB0eU9iamVjdCA/IHZvaWQgOiBUXG5cbi8qKlxuICogSGVscGVyIHR5cGUgdG8gZm9yY2UgYSBwYXJhbWV0ZXIgdG8gYmUgYW4gZW1wdHkgb2JqZWN0IGlmIHRoZSBjb21wdXRlZCB0eXBlIGlzIGFuIGVtcHR5IG9iamVjdFxuICogVGhpcyBpcyB3ZWlyZCwgYnV0IHNvbWUgY29tcHV0ZWQgdHlwZXMgKGUuZy4gdXNpbmcgYE9taXRgKSBkb24ndCBlbmQgdXAgZW5mb3JjaW5nIHRoaXMuXG4gKi9cbnR5cGUgRm9yY2VFbXB0eTxUPiA9IFQgZXh0ZW5kcyBFbXB0eU9iamVjdCA/IEVtcHR5T2JqZWN0IDogVFxuXG4vKipcbiAqIE1ha2Ugc29tZSBwcm9wZXJ0aWVzIG9wdGlvbmFsXG4gKi9cbnR5cGUgT3B0aW9uYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gUGljazxQYXJ0aWFsPFQ+LCBLPiAmIE9taXQ8VCwgSz47XG5cbi8qKlxuICogRW5kaW5nIHRoZSBzcGFuIHJldHVybnMgdGhlIG9ic2VydmVkIGR1cmF0aW9uXG4gKi9cbmludGVyZmFjZSBFbGFwc2VkVGltZSB7XG4gIHJlYWRvbmx5IGFzTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYXNTZWM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIG1lc3NhZ2Ugc3BhbiB0aGF0IGNhbiBiZSBlbmRlZCBhbmQgcmVhZCB0aW1lcyBmcm9tXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VTcGFuPEUgZXh0ZW5kcyBTcGFuRW5kPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgc3RhcnRcbiAgICovXG4gIGVsYXBzZWRUaW1lKCk6IFByb21pc2U8RWxhcHNlZFRpbWU+O1xuICAvKipcbiAgICogU2VuZHMgYSBzaW1wbGUsIGdlbmVyaWMgbWVzc2FnZSB3aXRoIHRoZSBjdXJyZW50IHRpbWluZ1xuICAgKiBGb3IgbW9yZSBjb21wbGV4IGludGVybWVkaWF0ZSBtZXNzYWdlcywgZ2V0IHRoZSBgZWxhcHNlZFRpbWVgIGFuZCB1c2UgYG5vdGlmeWBcbiAgICovXG4gIHRpbWluZyhtYWtlcjogSW9NZXNzYWdlTWFrZXI8RHVyYXRpb24+LCBtZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxFbGFwc2VkVGltZT47XG4gIC8qKlxuICAgKiBTZW5kcyBhbiBhcmJpdHJhcnkgaW50ZXJtZWRpYXRlIG1lc3NhZ2UgYXMgcGFydCBvZiB0aGUgc3BhblxuICAgKi9cbiAgbm90aWZ5KG1lc3NhZ2U6IEFjdGlvbkxlc3NNZXNzYWdlPHVua25vd24+KTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIEVuZCB0aGUgc3BhbiB3aXRoIGEgcGF5bG9hZFxuICAgKi9cbiAgZW5kKHBheWxvYWQ6IFZvaWRXaGVuRW1wdHk8T21pdDxFLCBrZXlvZiBTcGFuRW5kPj4pOiBQcm9taXNlPEVsYXBzZWRUaW1lPjtcbiAgLyoqXG4gICAqIEVuZCB0aGUgc3BhbiB3aXRoIGEgcGF5bG9hZCwgb3ZlcndyaXRpbmdcbiAgICovXG4gIGVuZChwYXlsb2FkOiBWb2lkV2hlbkVtcHR5PE9wdGlvbmFsPEUsIGtleW9mIFNwYW5FbmQ+Pik6IFByb21pc2U8RWxhcHNlZFRpbWU+O1xuICAvKipcbiAgICogRW5kIHRoZSBzcGFuIHdpdGggYSBtZXNzYWdlIGFuZCBwYXlsb2FkXG4gICAqL1xuICBlbmQobWVzc2FnZTogc3RyaW5nLCBwYXlsb2FkOiBGb3JjZUVtcHR5PE9wdGlvbmFsPEUsIGtleW9mIFNwYW5FbmQ+Pik6IFByb21pc2U8RWxhcHNlZFRpbWU+O1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyB0byBtYWtlIHNwYW5zIGFyb3VuZCBibG9ja3Mgb2Ygd29ya1xuICpcbiAqIEJsb2NrcyBhcmUgZW5jbG9zZWQgYnkgYSBzdGFydCBhbmQgZW5kIG1lc3NhZ2UuXG4gKiBBbGwgbWVzc2FnZXMgb2YgdGhlIHNwYW4gc2hhcmUgYSB1bmlxdWUgaWQuXG4gKiBUaGUgZW5kIG1lc3NhZ2UgY29udGFpbnMgdGhlIHRpbWUgcGFzc2VkIGJldHdlZW4gc3RhcnQgYW5kIGVuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNwYW5NYWtlcjxTIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgU3BhbkVuZD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmluaXRpb246IFNwYW5EZWZpbml0aW9uPFMsIEU+O1xuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoaW9IZWxwZXI6IElvSGVscGVyLCBkZWZpbml0aW9uOiBTcGFuRGVmaW5pdGlvbjxTLCBFPikge1xuICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgc3BhbiBhbmQgaW5pdGlhbGx5IG5vdGlmaWVzIHRoZSBJb0hvc3RcbiAgICogQHJldHVybnMgYSBtZXNzYWdlIHNwYW5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBiZWdpbihwYXlsb2FkOiBWb2lkV2hlbkVtcHR5PFM+KTogUHJvbWlzZTxJTWVzc2FnZVNwYW48RT4+O1xuICBwdWJsaWMgYXN5bmMgYmVnaW4obWVzc2FnZTogc3RyaW5nLCBwYXlsb2FkOiBTKTogUHJvbWlzZTxJTWVzc2FnZVNwYW48RT4+O1xuICBwdWJsaWMgYXN5bmMgYmVnaW4oYTogYW55LCBiPzogUyk6IFByb21pc2U8SU1lc3NhZ2VTcGFuPEU+PiB7XG4gICAgY29uc3Qgc3BhbklkID0gdXVpZC52NCgpO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgY29uc3Qgbm90aWZ5ID0gKG1zZzogQWN0aW9uTGVzc01lc3NhZ2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlvSGVscGVyLm5vdGlmeSh3aXRoU3BhbklkKHNwYW5JZCwgbXNnKSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0YXJ0SW5wdXQgPSBwYXJzZUFyZ3M8Uz4oYSwgYik7XG4gICAgY29uc3Qgc3RhcnRNc2cgPSBzdGFydElucHV0Lm1lc3NhZ2UgPz8gYFN0YXJ0aW5nICR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IC4uLmA7XG4gICAgY29uc3Qgc3RhcnRQYXlsb2FkID0gc3RhcnRJbnB1dC5wYXlsb2FkO1xuXG4gICAgYXdhaXQgbm90aWZ5KHRoaXMuZGVmaW5pdGlvbi5zdGFydC5tc2coXG4gICAgICBzdGFydE1zZyxcbiAgICAgIHN0YXJ0UGF5bG9hZCxcbiAgICApKTtcblxuICAgIGNvbnN0IHRpbWluZ01zZ1RlbXBsYXRlID0gJ1xcbuKcqCAgJXMgdGltZTogJWRzXFxuJztcbiAgICBjb25zdCB0aW1lID0gKCkgPT4ge1xuICAgICAgY29uc3QgZWxhcHNlZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0VGltZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFzTXM6IGVsYXBzZWRUaW1lLFxuICAgICAgICBhc1NlYzogZm9ybWF0VGltZShlbGFwc2VkVGltZSksXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxhcHNlZFRpbWU6IGFzeW5jICgpOiBQcm9taXNlPEVsYXBzZWRUaW1lPiA9PiB7XG4gICAgICAgIHJldHVybiB0aW1lKCk7XG4gICAgICB9LFxuXG4gICAgICBub3RpZnk6IGFzeW5jKG1zZzogQWN0aW9uTGVzc01lc3NhZ2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgYXdhaXQgbm90aWZ5KG1zZyk7XG4gICAgICB9LFxuXG4gICAgICB0aW1pbmc6IGFzeW5jKG1ha2VyOiBJb01lc3NhZ2VNYWtlcjxEdXJhdGlvbj4sIG1lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPEVsYXBzZWRUaW1lPiA9PiB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGltZSgpO1xuICAgICAgICBjb25zdCB0aW1pbmdNc2cgPSBtZXNzYWdlID8gbWVzc2FnZSA6IHV0aWwuZm9ybWF0KHRpbWluZ01zZ1RlbXBsYXRlLCB0aGlzLmRlZmluaXRpb24ubmFtZSwgZHVyYXRpb24uYXNTZWMpO1xuICAgICAgICBhd2FpdCBub3RpZnkobWFrZXIubXNnKHRpbWluZ01zZywge1xuICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbi5hc01zLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBkdXJhdGlvbjtcbiAgICAgIH0sXG5cbiAgICAgIGVuZDogYXN5bmMgKHg6IGFueSwgeT86IEZvcmNlRW1wdHk8T3B0aW9uYWw8RSwga2V5b2YgU3BhbkVuZD4+KTogUHJvbWlzZTxFbGFwc2VkVGltZT4gPT4ge1xuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IHRpbWUoKTtcblxuICAgICAgICBjb25zdCBlbmRJbnB1dCA9IHBhcnNlQXJnczxGb3JjZUVtcHR5PE9wdGlvbmFsPEUsIGtleW9mIFNwYW5FbmQ+Pj4oeCwgeSk7XG4gICAgICAgIGNvbnN0IGVuZE1zZyA9IGVuZElucHV0Lm1lc3NhZ2UgPz8gdXRpbC5mb3JtYXQodGltaW5nTXNnVGVtcGxhdGUsIHRoaXMuZGVmaW5pdGlvbi5uYW1lLCBkdXJhdGlvbi5hc1NlYyk7XG4gICAgICAgIGNvbnN0IGVuZFBheWxvYWQgPSBlbmRJbnB1dC5wYXlsb2FkO1xuXG4gICAgICAgIGF3YWl0IG5vdGlmeSh0aGlzLmRlZmluaXRpb24uZW5kLm1zZyhcbiAgICAgICAgICBlbmRNc2csIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbi5hc01zLFxuICAgICAgICAgICAgLi4uZW5kUGF5bG9hZCxcbiAgICAgICAgICB9IGFzIEUpKTtcblxuICAgICAgICByZXR1cm4gZHVyYXRpb247XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzPFMgZXh0ZW5kcyBvYmplY3Q+KGZpcnN0OiBhbnksIHNlY29uZD86IFMpOiB7IG1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDsgcGF5bG9hZDogUyB9IHtcbiAgY29uc3QgZmlyc3RJc01lc3NhZ2UgPSB0eXBlb2YgZmlyc3QgPT09ICdzdHJpbmcnO1xuXG4gIC8vIFdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgc3RyaW5nIG9yIHdlIGhhdmUgYSBzZWNvbmQgYXJndW1lbnQsIHRoZW4gdGhlIGZpcnN0IGFyZyBpcyB0aGUgbWVzc2FnZVxuICBjb25zdCBtZXNzYWdlID0gKGZpcnN0SXNNZXNzYWdlIHx8IHNlY29uZCkgPyBmaXJzdCA6IHVuZGVmaW5lZDtcblxuICAvLyBXaGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHN0cmluZyBvciB3ZSBoYXZlIGEgc2Vjb25kIGFyZ3VtZW50LFxuICAvLyB0aGVuIHRoZSBzZWNvbmQgYXJnIGlzIHRoZSBwYXlsb2FkLCBvdGhlcndpc2UgdGhlIGZpcnN0IGFyZyBpcyB0aGUgcGF5bG9hZFxuICBjb25zdCBwYXlsb2FkID0gKGZpcnN0SXNNZXNzYWdlIHx8IHNlY29uZCkgPyBzZWNvbmQgOiBmaXJzdDtcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2UsXG4gICAgcGF5bG9hZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aFNwYW5JZChzcGFuOiBzdHJpbmcsIG1lc3NhZ2U6IEFjdGlvbkxlc3NNZXNzYWdlPHVua25vd24+KTogQWN0aW9uTGVzc01lc3NhZ2U8dW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIC4uLm1lc3NhZ2UsXG4gICAgc3BhbixcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { IIoHost } from '../../io-host';
|
|
2
|
+
import type { IoMessage, IoMessageLevel, IoRequest } from '../../io-message';
|
|
3
|
+
/**
|
|
4
|
+
* An implementation of `IIoHost` that records messages and lets you assert on what was logged
|
|
5
|
+
*
|
|
6
|
+
* It's like `TestIoHost`, but comes with a predefined implementation for `notify`
|
|
7
|
+
* that appends all messages to an in-memory array, and comes with a helper function
|
|
8
|
+
* `expectMessage()` to test for the existence of a function in that array.
|
|
9
|
+
*
|
|
10
|
+
* Has a public mock for `requestResponse` that you configure like any
|
|
11
|
+
* other mock function.
|
|
12
|
+
*
|
|
13
|
+
* # How to use
|
|
14
|
+
*
|
|
15
|
+
* Either create a new instance of this class for every test, or call `clear()`
|
|
16
|
+
* on it between runs.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FakeIoHost implements IIoHost {
|
|
19
|
+
messages: Array<IoMessage<unknown>>;
|
|
20
|
+
requestResponse: <T, U>(msg: IoRequest<T, U>) => Promise<U>;
|
|
21
|
+
constructor();
|
|
22
|
+
clear(): void;
|
|
23
|
+
notify(msg: IoMessage<unknown>): Promise<void>;
|
|
24
|
+
expectMessage(m: {
|
|
25
|
+
containing: string;
|
|
26
|
+
level?: IoMessageLevel;
|
|
27
|
+
}): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FakeIoHost = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An implementation of `IIoHost` that records messages and lets you assert on what was logged
|
|
6
|
+
*
|
|
7
|
+
* It's like `TestIoHost`, but comes with a predefined implementation for `notify`
|
|
8
|
+
* that appends all messages to an in-memory array, and comes with a helper function
|
|
9
|
+
* `expectMessage()` to test for the existence of a function in that array.
|
|
10
|
+
*
|
|
11
|
+
* Has a public mock for `requestResponse` that you configure like any
|
|
12
|
+
* other mock function.
|
|
13
|
+
*
|
|
14
|
+
* # How to use
|
|
15
|
+
*
|
|
16
|
+
* Either create a new instance of this class for every test, or call `clear()`
|
|
17
|
+
* on it between runs.
|
|
18
|
+
*/
|
|
19
|
+
class FakeIoHost {
|
|
20
|
+
messages = [];
|
|
21
|
+
requestResponse;
|
|
22
|
+
constructor() {
|
|
23
|
+
this.clear();
|
|
24
|
+
}
|
|
25
|
+
clear() {
|
|
26
|
+
this.messages.splice(0, this.messages.length);
|
|
27
|
+
this.requestResponse = jest.fn().mockRejectedValue(new Error('requestResponse not mocked'));
|
|
28
|
+
}
|
|
29
|
+
async notify(msg) {
|
|
30
|
+
this.messages.push(msg);
|
|
31
|
+
}
|
|
32
|
+
expectMessage(m) {
|
|
33
|
+
expect(this.messages).toContainEqual(expect.objectContaining({
|
|
34
|
+
...m.level ? { level: m.level } : undefined,
|
|
35
|
+
// Can be a partial string as well
|
|
36
|
+
message: expect.stringContaining(m.containing),
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.FakeIoHost = FakeIoHost;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS1pby1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmFrZS1pby1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxVQUFVO0lBQ2QsUUFBUSxHQUE4QixFQUFFLENBQUM7SUFDekMsZUFBZSxDQUE4QztJQUVwRTtRQUNFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQXVCO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxhQUFhLENBQUMsQ0FBaUQ7UUFDcEUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1lBQzNELEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzNDLGtDQUFrQztZQUNsQyxPQUFPLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7U0FDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUF4QkQsZ0NBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJSW9Ib3N0IH0gZnJvbSAnLi4vLi4vaW8taG9zdCc7XG5pbXBvcnQgdHlwZSB7IElvTWVzc2FnZSwgSW9NZXNzYWdlTGV2ZWwsIElvUmVxdWVzdCB9IGZyb20gJy4uLy4uL2lvLW1lc3NhZ2UnO1xuXG4vKipcbiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIGBJSW9Ib3N0YCB0aGF0IHJlY29yZHMgbWVzc2FnZXMgYW5kIGxldHMgeW91IGFzc2VydCBvbiB3aGF0IHdhcyBsb2dnZWRcbiAqXG4gKiBJdCdzIGxpa2UgYFRlc3RJb0hvc3RgLCBidXQgY29tZXMgd2l0aCBhIHByZWRlZmluZWQgaW1wbGVtZW50YXRpb24gZm9yIGBub3RpZnlgXG4gKiB0aGF0IGFwcGVuZHMgYWxsIG1lc3NhZ2VzIHRvIGFuIGluLW1lbW9yeSBhcnJheSwgYW5kIGNvbWVzIHdpdGggYSBoZWxwZXIgZnVuY3Rpb25cbiAqIGBleHBlY3RNZXNzYWdlKClgIHRvIHRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBmdW5jdGlvbiBpbiB0aGF0IGFycmF5LlxuICpcbiAqIEhhcyBhIHB1YmxpYyBtb2NrIGZvciBgcmVxdWVzdFJlc3BvbnNlYCB0aGF0IHlvdSBjb25maWd1cmUgbGlrZSBhbnlcbiAqIG90aGVyIG1vY2sgZnVuY3Rpb24uXG4gKlxuICogIyBIb3cgdG8gdXNlXG4gKlxuICogRWl0aGVyIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGZvciBldmVyeSB0ZXN0LCBvciBjYWxsIGBjbGVhcigpYFxuICogb24gaXQgYmV0d2VlbiBydW5zLlxuICovXG5leHBvcnQgY2xhc3MgRmFrZUlvSG9zdCBpbXBsZW1lbnRzIElJb0hvc3Qge1xuICBwdWJsaWMgbWVzc2FnZXM6IEFycmF5PElvTWVzc2FnZTx1bmtub3duPj4gPSBbXTtcbiAgcHVibGljIHJlcXVlc3RSZXNwb25zZSE6IDxULCBVPihtc2c6IElvUmVxdWVzdDxULCBVPikgPT4gUHJvbWlzZTxVPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5tZXNzYWdlcy5zcGxpY2UoMCwgdGhpcy5tZXNzYWdlcy5sZW5ndGgpO1xuICAgIHRoaXMucmVxdWVzdFJlc3BvbnNlID0gamVzdC5mbigpLm1vY2tSZWplY3RlZFZhbHVlKG5ldyBFcnJvcigncmVxdWVzdFJlc3BvbnNlIG5vdCBtb2NrZWQnKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbm90aWZ5KG1zZzogSW9NZXNzYWdlPHVua25vd24+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5tZXNzYWdlcy5wdXNoKG1zZyk7XG4gIH1cblxuICBwdWJsaWMgZXhwZWN0TWVzc2FnZShtOiB7IGNvbnRhaW5pbmc6IHN0cmluZzsgbGV2ZWw/OiBJb01lc3NhZ2VMZXZlbCB9KSB7XG4gICAgZXhwZWN0KHRoaXMubWVzc2FnZXMpLnRvQ29udGFpbkVxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIC4uLm0ubGV2ZWwgPyB7IGxldmVsOiBtLmxldmVsIH0gOiB1bmRlZmluZWQsXG4gICAgICAvLyBDYW4gYmUgYSBwYXJ0aWFsIHN0cmluZyBhcyB3ZWxsXG4gICAgICBtZXNzYWdlOiBleHBlY3Quc3RyaW5nQ29udGFpbmluZyhtLmNvbnRhaW5pbmcpLFxuICAgIH0pKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./test-io-host"), exports);
|
|
18
|
+
__exportStar(require("./fake-io-host"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLGlEQUErQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVzdC1pby1ob3N0JztcbmV4cG9ydCAqIGZyb20gJy4vZmFrZS1pby1ob3N0JztcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RequireApproval } from '../../../require-approval';
|
|
2
|
+
import type { IIoHost } from '../../io-host';
|
|
3
|
+
import type { IoMessage, IoMessageLevel, IoRequest } from '../../io-message';
|
|
4
|
+
import type { IoHelper } from '../io-helper';
|
|
5
|
+
/**
|
|
6
|
+
* A test implementation of IIoHost that does nothing but can be spied on.
|
|
7
|
+
*
|
|
8
|
+
* Includes a level to filter out irrelevant messages, defaults to `info`.
|
|
9
|
+
*
|
|
10
|
+
* Optionally set an approval level for code `CDK_TOOLKIT_I5060`.
|
|
11
|
+
*
|
|
12
|
+
* # How to use
|
|
13
|
+
*
|
|
14
|
+
* Configure and reset the `notifySpy` and `requestSpy` members as you would any
|
|
15
|
+
* mock function.
|
|
16
|
+
*/
|
|
17
|
+
export declare class TestIoHost implements IIoHost {
|
|
18
|
+
level: IoMessageLevel;
|
|
19
|
+
readonly notifySpy: jest.Mock<any, any, any>;
|
|
20
|
+
readonly requestSpy: jest.Mock<any, any, any>;
|
|
21
|
+
requireDeployApproval: RequireApproval;
|
|
22
|
+
constructor(level?: IoMessageLevel);
|
|
23
|
+
asHelper(action?: string): IoHelper;
|
|
24
|
+
notify(msg: IoMessage<unknown>): Promise<void>;
|
|
25
|
+
requestResponse<T, U>(msg: IoRequest<T, U>): Promise<U>;
|
|
26
|
+
private needsApproval;
|
|
27
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestIoHost = void 0;
|
|
4
|
+
const require_approval_1 = require("../../../require-approval");
|
|
5
|
+
const io_helper_1 = require("../io-helper");
|
|
6
|
+
const level_priority_1 = require("../level-priority");
|
|
7
|
+
/**
|
|
8
|
+
* A test implementation of IIoHost that does nothing but can be spied on.
|
|
9
|
+
*
|
|
10
|
+
* Includes a level to filter out irrelevant messages, defaults to `info`.
|
|
11
|
+
*
|
|
12
|
+
* Optionally set an approval level for code `CDK_TOOLKIT_I5060`.
|
|
13
|
+
*
|
|
14
|
+
* # How to use
|
|
15
|
+
*
|
|
16
|
+
* Configure and reset the `notifySpy` and `requestSpy` members as you would any
|
|
17
|
+
* mock function.
|
|
18
|
+
*/
|
|
19
|
+
class TestIoHost {
|
|
20
|
+
level;
|
|
21
|
+
notifySpy;
|
|
22
|
+
requestSpy;
|
|
23
|
+
requireDeployApproval = require_approval_1.RequireApproval.NEVER;
|
|
24
|
+
constructor(level = 'info') {
|
|
25
|
+
this.level = level;
|
|
26
|
+
this.notifySpy = jest.fn();
|
|
27
|
+
this.requestSpy = jest.fn();
|
|
28
|
+
}
|
|
29
|
+
asHelper(action = 'synth') {
|
|
30
|
+
return (0, io_helper_1.asIoHelper)(this, action);
|
|
31
|
+
}
|
|
32
|
+
async notify(msg) {
|
|
33
|
+
if ((0, level_priority_1.isMessageRelevantForLevel)(msg, this.level)) {
|
|
34
|
+
this.notifySpy(msg);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async requestResponse(msg) {
|
|
38
|
+
if ((0, level_priority_1.isMessageRelevantForLevel)(msg, this.level) && this.needsApproval(msg)) {
|
|
39
|
+
this.requestSpy(msg);
|
|
40
|
+
}
|
|
41
|
+
return msg.defaultResponse;
|
|
42
|
+
}
|
|
43
|
+
needsApproval(msg) {
|
|
44
|
+
// Return true if the code is unrelated to approval
|
|
45
|
+
if (!['CDK_TOOLKIT_I5060'].includes(msg.code)) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
switch (this.requireDeployApproval) {
|
|
49
|
+
case require_approval_1.RequireApproval.NEVER:
|
|
50
|
+
return false;
|
|
51
|
+
case require_approval_1.RequireApproval.ANY_CHANGE:
|
|
52
|
+
return true;
|
|
53
|
+
case require_approval_1.RequireApproval.BROADENING:
|
|
54
|
+
return msg.data?.permissionChangeType === 'broadening';
|
|
55
|
+
default:
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.TestIoHost = TestIoHost;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1pby1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC1pby1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUE0RDtBQUk1RCw0Q0FBMEM7QUFDMUMsc0RBQThEO0FBRTlEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBYSxVQUFVO0lBTUY7SUFMSCxTQUFTLENBQTJCO0lBQ3BDLFVBQVUsQ0FBMkI7SUFFOUMscUJBQXFCLEdBQUcsa0NBQWUsQ0FBQyxLQUFLLENBQUM7SUFFckQsWUFBbUIsUUFBd0IsTUFBTTtRQUE5QixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPO1FBQzlCLE9BQU8sSUFBQSxzQkFBVSxFQUFDLElBQUksRUFBRSxNQUFhLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUF1QjtRQUN6QyxJQUFJLElBQUEsMENBQXlCLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFPLEdBQW9CO1FBQ3JELElBQUksSUFBQSwwQ0FBeUIsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDN0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUF3QjtRQUM1QyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsUUFBUSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNuQyxLQUFLLGtDQUFlLENBQUMsS0FBSztnQkFDeEIsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLGtDQUFlLENBQUMsVUFBVTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLGtDQUFlLENBQUMsVUFBVTtnQkFDN0IsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLG9CQUFvQixLQUFLLFlBQVksQ0FBQztZQUN6RDtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0NELGdDQTZDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVpcmVBcHByb3ZhbCB9IGZyb20gJy4uLy4uLy4uL3JlcXVpcmUtYXBwcm92YWwnO1xuaW1wb3J0IHR5cGUgeyBJSW9Ib3N0IH0gZnJvbSAnLi4vLi4vaW8taG9zdCc7XG5pbXBvcnQgdHlwZSB7IElvTWVzc2FnZSwgSW9NZXNzYWdlTGV2ZWwsIElvUmVxdWVzdCB9IGZyb20gJy4uLy4uL2lvLW1lc3NhZ2UnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2lvLWhlbHBlcic7XG5pbXBvcnQgeyBhc0lvSGVscGVyIH0gZnJvbSAnLi4vaW8taGVscGVyJztcbmltcG9ydCB7IGlzTWVzc2FnZVJlbGV2YW50Rm9yTGV2ZWwgfSBmcm9tICcuLi9sZXZlbC1wcmlvcml0eSc7XG5cbi8qKlxuICogQSB0ZXN0IGltcGxlbWVudGF0aW9uIG9mIElJb0hvc3QgdGhhdCBkb2VzIG5vdGhpbmcgYnV0IGNhbiBiZSBzcGllZCBvbi5cbiAqXG4gKiBJbmNsdWRlcyBhIGxldmVsIHRvIGZpbHRlciBvdXQgaXJyZWxldmFudCBtZXNzYWdlcywgZGVmYXVsdHMgdG8gYGluZm9gLlxuICpcbiAqIE9wdGlvbmFsbHkgc2V0IGFuIGFwcHJvdmFsIGxldmVsIGZvciBjb2RlIGBDREtfVE9PTEtJVF9JNTA2MGAuXG4gKlxuICogIyBIb3cgdG8gdXNlXG4gKlxuICogQ29uZmlndXJlIGFuZCByZXNldCB0aGUgYG5vdGlmeVNweWAgYW5kIGByZXF1ZXN0U3B5YCBtZW1iZXJzIGFzIHlvdSB3b3VsZCBhbnlcbiAqIG1vY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0SW9Ib3N0IGltcGxlbWVudHMgSUlvSG9zdCB7XG4gIHB1YmxpYyByZWFkb25seSBub3RpZnlTcHk6IGplc3QuTW9jazxhbnksIGFueSwgYW55PjtcbiAgcHVibGljIHJlYWRvbmx5IHJlcXVlc3RTcHk6IGplc3QuTW9jazxhbnksIGFueSwgYW55PjtcblxuICBwdWJsaWMgcmVxdWlyZURlcGxveUFwcHJvdmFsID0gUmVxdWlyZUFwcHJvdmFsLk5FVkVSO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsZXZlbDogSW9NZXNzYWdlTGV2ZWwgPSAnaW5mbycpIHtcbiAgICB0aGlzLm5vdGlmeVNweSA9IGplc3QuZm4oKTtcbiAgICB0aGlzLnJlcXVlc3RTcHkgPSBqZXN0LmZuKCk7XG4gIH1cblxuICBwdWJsaWMgYXNIZWxwZXIoYWN0aW9uID0gJ3N5bnRoJyk6IElvSGVscGVyIHtcbiAgICByZXR1cm4gYXNJb0hlbHBlcih0aGlzLCBhY3Rpb24gYXMgYW55KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBub3RpZnkobXNnOiBJb01lc3NhZ2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoaXNNZXNzYWdlUmVsZXZhbnRGb3JMZXZlbChtc2csIHRoaXMubGV2ZWwpKSB7XG4gICAgICB0aGlzLm5vdGlmeVNweShtc2cpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0UmVzcG9uc2U8VCwgVT4obXNnOiBJb1JlcXVlc3Q8VCwgVT4pOiBQcm9taXNlPFU+IHtcbiAgICBpZiAoaXNNZXNzYWdlUmVsZXZhbnRGb3JMZXZlbChtc2csIHRoaXMubGV2ZWwpICYmIHRoaXMubmVlZHNBcHByb3ZhbChtc2cpKSB7XG4gICAgICB0aGlzLnJlcXVlc3RTcHkobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIG1zZy5kZWZhdWx0UmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIG5lZWRzQXBwcm92YWwobXNnOiBJb1JlcXVlc3Q8YW55LCBhbnk+KTogYm9vbGVhbiB7XG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGNvZGUgaXMgdW5yZWxhdGVkIHRvIGFwcHJvdmFsXG4gICAgaWYgKCFbJ0NES19UT09MS0lUX0k1MDYwJ10uaW5jbHVkZXMobXNnLmNvZGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMucmVxdWlyZURlcGxveUFwcHJvdmFsKSB7XG4gICAgICBjYXNlIFJlcXVpcmVBcHByb3ZhbC5ORVZFUjpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSBSZXF1aXJlQXBwcm92YWwuQU5ZX0NIQU5HRTpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFJlcXVpcmVBcHByb3ZhbC5CUk9BREVOSU5HOlxuICAgICAgICByZXR1cm4gbXNnLmRhdGE/LnBlcm1pc3Npb25DaGFuZ2VUeXBlID09PSAnYnJvYWRlbmluZyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWxpZCByZXBvcnRpbmcgY2F0ZWdvcmllcyBmb3IgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCB0eXBlIElvTWVzc2FnZUNvZGVDYXRlZ29yeSA9ICdUT09MS0lUJyB8ICdTREsnIHwgJ0FTU0VUUycgfCAnQVNTRU1CTFknO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The current action being performed by the CLI. 'none' represents the absence of an action.
|
|
3
|
+
*/
|
|
4
|
+
export type ToolkitAction = 'assembly' | 'bootstrap' | 'synth' | 'list' | 'diff' | 'deploy' | 'rollback' | 'watch' | 'destroy' | 'doctor' | 'gc' | 'import' | 'metadata' | 'init' | 'migrate' | 'refactor';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sa2l0LWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgY3VycmVudCBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDTEkuICdub25lJyByZXByZXNlbnRzIHRoZSBhYnNlbmNlIG9mIGFuIGFjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9vbGtpdEFjdGlvbiA9XG58ICdhc3NlbWJseSdcbnwgJ2Jvb3RzdHJhcCdcbnwgJ3N5bnRoJ1xufCAnbGlzdCdcbnwgJ2RpZmYnXG58ICdkZXBsb3knXG58ICdyb2xsYmFjaydcbnwgJ3dhdGNoJ1xufCAnZGVzdHJveSdcbnwgJ2RvY3RvcidcbnwgJ2djJ1xufCAnaW1wb3J0J1xufCAnbWV0YWRhdGEnXG58ICdpbml0J1xufCAnbWlncmF0ZSdcbnwgJ3JlZmFjdG9yJztcbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CloudFormationStackArtifact, Environment } from '@aws-cdk/cx-api';
|
|
2
|
+
import type { SDK, SdkProvider } from '../aws-auth/private';
|
|
3
|
+
import type { IoHelper } from '../io/private';
|
|
4
|
+
/**
|
|
5
|
+
* Configuration needed to monitor CloudWatch Log Groups
|
|
6
|
+
* found in a given CloudFormation Stack
|
|
7
|
+
*/
|
|
8
|
+
export interface FoundLogGroupsResult {
|
|
9
|
+
/**
|
|
10
|
+
* The resolved environment (account/region) that the log
|
|
11
|
+
* groups are deployed in
|
|
12
|
+
*/
|
|
13
|
+
readonly env: Environment;
|
|
14
|
+
/**
|
|
15
|
+
* The SDK that can be used to read events from the CloudWatch
|
|
16
|
+
* Log Groups in the given environment
|
|
17
|
+
*/
|
|
18
|
+
readonly sdk: SDK;
|
|
19
|
+
/**
|
|
20
|
+
* The names of the relevant CloudWatch Log Groups
|
|
21
|
+
* in the given CloudFormation template
|
|
22
|
+
*/
|
|
23
|
+
readonly logGroupNames: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function findCloudWatchLogGroups(sdkProvider: SdkProvider, ioHelper: IoHelper, stackArtifact: CloudFormationStackArtifact): Promise<FoundLogGroupsResult>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findCloudWatchLogGroups = findCloudWatchLogGroups;
|
|
4
|
+
const util_1 = require("../../util");
|
|
5
|
+
const cloudformation_1 = require("../cloudformation");
|
|
6
|
+
const environment_1 = require("../environment");
|
|
7
|
+
const private_1 = require("../io/private");
|
|
8
|
+
const plugin_1 = require("../plugin");
|
|
9
|
+
const toolkit_info_1 = require("../toolkit-info");
|
|
10
|
+
// resource types that have associated CloudWatch Log Groups that should _not_ be monitored
|
|
11
|
+
const IGNORE_LOGS_RESOURCE_TYPES = ['AWS::EC2::FlowLog', 'AWS::CloudTrail::Trail', 'AWS::CodeBuild::Project'];
|
|
12
|
+
async function findCloudWatchLogGroups(sdkProvider, ioHelper, stackArtifact) {
|
|
13
|
+
let sdk;
|
|
14
|
+
const resolvedEnv = await sdkProvider.resolveEnvironment(stackArtifact.environment);
|
|
15
|
+
// try to assume the lookup role and fallback to the default credentials
|
|
16
|
+
try {
|
|
17
|
+
sdk = (await new environment_1.EnvironmentAccess(sdkProvider, toolkit_info_1.DEFAULT_TOOLKIT_STACK_NAME, ioHelper).accessStackForLookup(stackArtifact)).sdk;
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Failed to access SDK environment: ${(0, util_1.formatErrorMessage)(e)}`));
|
|
21
|
+
sdk = (await sdkProvider.forEnvironment(resolvedEnv, plugin_1.Mode.ForReading)).sdk;
|
|
22
|
+
}
|
|
23
|
+
const listStackResources = new cloudformation_1.LazyListStackResources(sdk, stackArtifact.stackName);
|
|
24
|
+
const evaluateCfnTemplate = new cloudformation_1.EvaluateCloudFormationTemplate({
|
|
25
|
+
stackArtifact,
|
|
26
|
+
parameters: {},
|
|
27
|
+
account: resolvedEnv.account,
|
|
28
|
+
region: resolvedEnv.region,
|
|
29
|
+
partition: (await sdk.currentAccount()).partition,
|
|
30
|
+
sdk,
|
|
31
|
+
});
|
|
32
|
+
const stackResources = await listStackResources.listStackResources();
|
|
33
|
+
const logGroupNames = findAllLogGroupNames(stackResources, evaluateCfnTemplate);
|
|
34
|
+
return {
|
|
35
|
+
env: resolvedEnv,
|
|
36
|
+
sdk,
|
|
37
|
+
logGroupNames,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Determine if a CloudWatch Log Group is associated
|
|
42
|
+
* with an ignored resource
|
|
43
|
+
*/
|
|
44
|
+
function isReferencedFromIgnoredResource(logGroupResource, evaluateCfnTemplate) {
|
|
45
|
+
const resourcesReferencingLogGroup = evaluateCfnTemplate.findReferencesTo(logGroupResource.LogicalResourceId);
|
|
46
|
+
return resourcesReferencingLogGroup.some((reference) => {
|
|
47
|
+
return IGNORE_LOGS_RESOURCE_TYPES.includes(reference.Type);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const cloudWatchLogsResolvers = {
|
|
51
|
+
'AWS::Logs::LogGroup': (resource, evaluateCfnTemplate) => {
|
|
52
|
+
if (isReferencedFromIgnoredResource(resource, evaluateCfnTemplate)) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return resource.PhysicalResourceId?.toString();
|
|
56
|
+
},
|
|
57
|
+
// Resource types that will create a CloudWatch log group with a specific name if one is not provided.
|
|
58
|
+
// The keys are CFN resource types, and the values are the name of the physical name property of that resource
|
|
59
|
+
// and the service name that is used in the automatically created CloudWatch log group.
|
|
60
|
+
'AWS::Lambda::Function': (resource, evaluateCfnTemplate) => {
|
|
61
|
+
const loggingConfig = evaluateCfnTemplate.getResourceProperty(resource.LogicalResourceId, 'LoggingConfig');
|
|
62
|
+
if (loggingConfig?.LogGroup) {
|
|
63
|
+
// if LogGroup is a string then use it as the LogGroupName as it is referred by LogGroup.fromLogGroupArn in CDK
|
|
64
|
+
if (typeof loggingConfig.LogGroup === 'string') {
|
|
65
|
+
return loggingConfig.LogGroup;
|
|
66
|
+
}
|
|
67
|
+
// if { Ref: '...' } is used then try to resolve the LogGroupName from the referenced resource in the template
|
|
68
|
+
if (typeof loggingConfig.LogGroup === 'object') {
|
|
69
|
+
if (loggingConfig.LogGroup.Ref) {
|
|
70
|
+
return evaluateCfnTemplate.getResourceProperty(loggingConfig.LogGroup.Ref, 'LogGroupName');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return `/aws/lambda/${resource.PhysicalResourceId}`;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Find all CloudWatch Log Groups in the deployed template.
|
|
79
|
+
* This will find both explicitly created Log Groups (excluding those associated with ignored resources)
|
|
80
|
+
* and Log Groups created implicitly (i.e. Lambda Functions)
|
|
81
|
+
*/
|
|
82
|
+
function findAllLogGroupNames(stackResources, evaluateCfnTemplate) {
|
|
83
|
+
const logGroupNames = [];
|
|
84
|
+
for (const resource of stackResources) {
|
|
85
|
+
const logGroupResolver = cloudWatchLogsResolvers[resource.ResourceType];
|
|
86
|
+
if (logGroupResolver) {
|
|
87
|
+
const logGroupName = logGroupResolver(resource, evaluateCfnTemplate);
|
|
88
|
+
if (logGroupName) {
|
|
89
|
+
logGroupNames.push(logGroupName);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return logGroupNames;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jbG91ZHdhdGNoLWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaW5kLWNsb3Vkd2F0Y2gtbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNDQSwwREFpQ0M7QUFyRUQscUNBQWdEO0FBRWhELHNEQUEyRjtBQUMzRixnREFBbUQ7QUFDbkQsMkNBQW1DO0FBRW5DLHNDQUFpQztBQUNqQyxrREFBNkQ7QUFFN0QsMkZBQTJGO0FBQzNGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBMEJ2RyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFdBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLGFBQTBDO0lBRTFDLElBQUksR0FBUSxDQUFDO0lBQ2IsTUFBTSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLHdFQUF3RTtJQUN4RSxJQUFJLENBQUM7UUFDSCxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksK0JBQWlCLENBQUMsV0FBVyxFQUFFLHlDQUEwQixFQUFFLFFBQVEsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2pJLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxJQUFBLHlCQUFrQixFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xILEdBQUcsR0FBRyxDQUFDLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksdUNBQXNCLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRixNQUFNLG1CQUFtQixHQUFHLElBQUksK0NBQThCLENBQUM7UUFDN0QsYUFBYTtRQUNiLFVBQVUsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1FBQzVCLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtRQUMxQixTQUFTLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFNBQVM7UUFDakQsR0FBRztLQUNKLENBQUMsQ0FBQztJQUVILE1BQU0sY0FBYyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNyRSxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUVoRixPQUFPO1FBQ0wsR0FBRyxFQUFFLFdBQVc7UUFDaEIsR0FBRztRQUNILGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsK0JBQStCLENBQ3RDLGdCQUFzQyxFQUN0QyxtQkFBbUQ7SUFFbkQsTUFBTSw0QkFBNEIsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBa0IsQ0FBQyxDQUFDO0lBQy9HLE9BQU8sNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDckQsT0FBTywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQU9ELE1BQU0sdUJBQXVCLEdBQTJDO0lBQ3RFLHFCQUFxQixFQUFFLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEVBQUU7UUFDdkQsSUFBSSwrQkFBK0IsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHLDhHQUE4RztJQUM5Ryx1RkFBdUY7SUFDdkYsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRTtRQUN6RCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsaUJBQWtCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDNUcsSUFBSSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDNUIsK0dBQStHO1lBQy9HLElBQUksT0FBTyxhQUFhLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDaEMsQ0FBQztZQUVELDhHQUE4RztZQUM5RyxJQUFJLE9BQU8sYUFBYSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUMvQixPQUFPLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUM3RixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLGVBQWUsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDdEQsQ0FBQztDQUNGLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsY0FBc0MsRUFDdEMsbUJBQW1EO0lBRW5ELE1BQU0sYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUVuQyxLQUFLLE1BQU0sUUFBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFlBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNyRSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgRW52aXJvbm1lbnQgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBTdGFja1Jlc291cmNlU3VtbWFyeSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLLCBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHsgRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLCBMYXp5TGlzdFN0YWNrUmVzb3VyY2VzIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRBY2Nlc3MgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJTyB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbic7XG5pbXBvcnQgeyBERUZBVUxUX1RPT0xLSVRfU1RBQ0tfTkFNRSB9IGZyb20gJy4uL3Rvb2xraXQtaW5mbyc7XG5cbi8vIHJlc291cmNlIHR5cGVzIHRoYXQgaGF2ZSBhc3NvY2lhdGVkIENsb3VkV2F0Y2ggTG9nIEdyb3VwcyB0aGF0IHNob3VsZCBfbm90XyBiZSBtb25pdG9yZWRcbmNvbnN0IElHTk9SRV9MT0dTX1JFU09VUkNFX1RZUEVTID0gWydBV1M6OkVDMjo6Rmxvd0xvZycsICdBV1M6OkNsb3VkVHJhaWw6OlRyYWlsJywgJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0J107XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBuZWVkZWQgdG8gbW9uaXRvciBDbG91ZFdhdGNoIExvZyBHcm91cHNcbiAqIGZvdW5kIGluIGEgZ2l2ZW4gQ2xvdWRGb3JtYXRpb24gU3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3VuZExvZ0dyb3Vwc1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgZW52aXJvbm1lbnQgKGFjY291bnQvcmVnaW9uKSB0aGF0IHRoZSBsb2dcbiAgICogZ3JvdXBzIGFyZSBkZXBsb3llZCBpblxuICAgKi9cbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcblxuICAvKipcbiAgICogVGhlIFNESyB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlYWQgZXZlbnRzIGZyb20gdGhlIENsb3VkV2F0Y2hcbiAgICogTG9nIEdyb3VwcyBpbiB0aGUgZ2l2ZW4gZW52aXJvbm1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHNkazogU0RLO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2YgdGhlIHJlbGV2YW50IENsb3VkV2F0Y2ggTG9nIEdyb3Vwc1xuICAgKiBpbiB0aGUgZ2l2ZW4gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwTmFtZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZENsb3VkV2F0Y2hMb2dHcm91cHMoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBzdGFja0FydGlmYWN0OiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4pOiBQcm9taXNlPEZvdW5kTG9nR3JvdXBzUmVzdWx0PiB7XG4gIGxldCBzZGs6IFNESztcbiAgY29uc3QgcmVzb2x2ZWRFbnYgPSBhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2tBcnRpZmFjdC5lbnZpcm9ubWVudCk7XG4gIC8vIHRyeSB0byBhc3N1bWUgdGhlIGxvb2t1cCByb2xlIGFuZCBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBjcmVkZW50aWFsc1xuICB0cnkge1xuICAgIHNkayA9IChhd2FpdCBuZXcgRW52aXJvbm1lbnRBY2Nlc3Moc2RrUHJvdmlkZXIsIERFRkFVTFRfVE9PTEtJVF9TVEFDS19OQU1FLCBpb0hlbHBlcikuYWNjZXNzU3RhY2tGb3JMb29rdXAoc3RhY2tBcnRpZmFjdCkpLnNkaztcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfVE9PTEtJVF9ERUJVRy5tc2coYEZhaWxlZCB0byBhY2Nlc3MgU0RLIGVudmlyb25tZW50OiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKSk7XG4gICAgc2RrID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KHJlc29sdmVkRW52LCBNb2RlLkZvclJlYWRpbmcpKS5zZGs7XG4gIH1cblxuICBjb25zdCBsaXN0U3RhY2tSZXNvdXJjZXMgPSBuZXcgTGF6eUxpc3RTdGFja1Jlc291cmNlcyhzZGssIHN0YWNrQXJ0aWZhY3Quc3RhY2tOYW1lKTtcbiAgY29uc3QgZXZhbHVhdGVDZm5UZW1wbGF0ZSA9IG5ldyBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUoe1xuICAgIHN0YWNrQXJ0aWZhY3QsXG4gICAgcGFyYW1ldGVyczoge30sXG4gICAgYWNjb3VudDogcmVzb2x2ZWRFbnYuYWNjb3VudCxcbiAgICByZWdpb246IHJlc29sdmVkRW52LnJlZ2lvbixcbiAgICBwYXJ0aXRpb246IChhd2FpdCBzZGsuY3VycmVudEFjY291bnQoKSkucGFydGl0aW9uLFxuICAgIHNkayxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2tSZXNvdXJjZXMgPSBhd2FpdCBsaXN0U3RhY2tSZXNvdXJjZXMubGlzdFN0YWNrUmVzb3VyY2VzKCk7XG4gIGNvbnN0IGxvZ0dyb3VwTmFtZXMgPSBmaW5kQWxsTG9nR3JvdXBOYW1lcyhzdGFja1Jlc291cmNlcywgZXZhbHVhdGVDZm5UZW1wbGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBlbnY6IHJlc29sdmVkRW52LFxuICAgIHNkayxcbiAgICBsb2dHcm91cE5hbWVzLFxuICB9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIENsb3VkV2F0Y2ggTG9nIEdyb3VwIGlzIGFzc29jaWF0ZWRcbiAqIHdpdGggYW4gaWdub3JlZCByZXNvdXJjZVxuICovXG5mdW5jdGlvbiBpc1JlZmVyZW5jZWRGcm9tSWdub3JlZFJlc291cmNlKFxuICBsb2dHcm91cFJlc291cmNlOiBTdGFja1Jlc291cmNlU3VtbWFyeSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlc291cmNlc1JlZmVyZW5jaW5nTG9nR3JvdXAgPSBldmFsdWF0ZUNmblRlbXBsYXRlLmZpbmRSZWZlcmVuY2VzVG8obG9nR3JvdXBSZXNvdXJjZS5Mb2dpY2FsUmVzb3VyY2VJZCEpO1xuICByZXR1cm4gcmVzb3VyY2VzUmVmZXJlbmNpbmdMb2dHcm91cC5zb21lKChyZWZlcmVuY2UpID0+IHtcbiAgICByZXR1cm4gSUdOT1JFX0xPR1NfUkVTT1VSQ0VfVFlQRVMuaW5jbHVkZXMocmVmZXJlbmNlLlR5cGUpO1xuICB9KTtcbn1cblxudHlwZSBDbG91ZFdhdGNoTG9nc1Jlc29sdmVyID0gKFxuICByZXNvdXJjZTogU3RhY2tSZXNvdXJjZVN1bW1hcnksXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5jb25zdCBjbG91ZFdhdGNoTG9nc1Jlc29sdmVyczogUmVjb3JkPHN0cmluZywgQ2xvdWRXYXRjaExvZ3NSZXNvbHZlcj4gPSB7XG4gICdBV1M6OkxvZ3M6OkxvZ0dyb3VwJzogKHJlc291cmNlLCBldmFsdWF0ZUNmblRlbXBsYXRlKSA9PiB7XG4gICAgaWYgKGlzUmVmZXJlbmNlZEZyb21JZ25vcmVkUmVzb3VyY2UocmVzb3VyY2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkPy50b1N0cmluZygpO1xuICB9LFxuXG4gIC8vIFJlc291cmNlIHR5cGVzIHRoYXQgd2lsbCBjcmVhdGUgYSBDbG91ZFdhdGNoIGxvZyBncm91cCB3aXRoIGEgc3BlY2lmaWMgbmFtZSBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAvLyBUaGUga2V5cyBhcmUgQ0ZOIHJlc291cmNlIHR5cGVzLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWUgb2YgdGhlIHBoeXNpY2FsIG5hbWUgcHJvcGVydHkgb2YgdGhhdCByZXNvdXJjZVxuICAvLyBhbmQgdGhlIHNlcnZpY2UgbmFtZSB0aGF0IGlzIHVzZWQgaW4gdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBDbG91ZFdhdGNoIGxvZyBncm91cC5cbiAgJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbic6IChyZXNvdXJjZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSkgPT4ge1xuICAgIGNvbnN0IGxvZ2dpbmdDb25maWcgPSBldmFsdWF0ZUNmblRlbXBsYXRlLmdldFJlc291cmNlUHJvcGVydHkocmVzb3VyY2UuTG9naWNhbFJlc291cmNlSWQhLCAnTG9nZ2luZ0NvbmZpZycpO1xuICAgIGlmIChsb2dnaW5nQ29uZmlnPy5Mb2dHcm91cCkge1xuICAgICAgLy8gaWYgTG9nR3JvdXAgaXMgYSBzdHJpbmcgdGhlbiB1c2UgaXQgYXMgdGhlIExvZ0dyb3VwTmFtZSBhcyBpdCBpcyByZWZlcnJlZCBieSBMb2dHcm91cC5mcm9tTG9nR3JvdXBBcm4gaW4gQ0RLXG4gICAgICBpZiAodHlwZW9mIGxvZ2dpbmdDb25maWcuTG9nR3JvdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBsb2dnaW5nQ29uZmlnLkxvZ0dyb3VwO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB7IFJlZjogJy4uLicgfSBpcyB1c2VkIHRoZW4gdHJ5IHRvIHJlc29sdmUgdGhlIExvZ0dyb3VwTmFtZSBmcm9tIHRoZSByZWZlcmVuY2VkIHJlc291cmNlIGluIHRoZSB0ZW1wbGF0ZVxuICAgICAgaWYgKHR5cGVvZiBsb2dnaW5nQ29uZmlnLkxvZ0dyb3VwID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAobG9nZ2luZ0NvbmZpZy5Mb2dHcm91cC5SZWYpIHtcbiAgICAgICAgICByZXR1cm4gZXZhbHVhdGVDZm5UZW1wbGF0ZS5nZXRSZXNvdXJjZVByb3BlcnR5KGxvZ2dpbmdDb25maWcuTG9nR3JvdXAuUmVmLCAnTG9nR3JvdXBOYW1lJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYC9hd3MvbGFtYmRhLyR7cmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkfWA7XG4gIH0sXG59O1xuXG4vKipcbiAqIEZpbmQgYWxsIENsb3VkV2F0Y2ggTG9nIEdyb3VwcyBpbiB0aGUgZGVwbG95ZWQgdGVtcGxhdGUuXG4gKiBUaGlzIHdpbGwgZmluZCBib3RoIGV4cGxpY2l0bHkgY3JlYXRlZCBMb2cgR3JvdXBzIChleGNsdWRpbmcgdGhvc2UgYXNzb2NpYXRlZCB3aXRoIGlnbm9yZWQgcmVzb3VyY2VzKVxuICogYW5kIExvZyBHcm91cHMgY3JlYXRlZCBpbXBsaWNpdGx5IChpLmUuIExhbWJkYSBGdW5jdGlvbnMpXG4gKi9cbmZ1bmN0aW9uIGZpbmRBbGxMb2dHcm91cE5hbWVzKFxuICBzdGFja1Jlc291cmNlczogU3RhY2tSZXNvdXJjZVN1bW1hcnlbXSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBsb2dHcm91cE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmVzb3VyY2Ugb2Ygc3RhY2tSZXNvdXJjZXMpIHtcbiAgICBjb25zdCBsb2dHcm91cFJlc29sdmVyID0gY2xvdWRXYXRjaExvZ3NSZXNvbHZlcnNbcmVzb3VyY2UuUmVzb3VyY2VUeXBlIV07XG4gICAgaWYgKGxvZ0dyb3VwUmVzb2x2ZXIpIHtcbiAgICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IGxvZ0dyb3VwUmVzb2x2ZXIocmVzb3VyY2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpO1xuICAgICAgaWYgKGxvZ0dyb3VwTmFtZSkge1xuICAgICAgICBsb2dHcm91cE5hbWVzLnB1c2gobG9nR3JvdXBOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9nR3JvdXBOYW1lcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./logs-monitor"), exports);
|
|
18
|
+
__exportStar(require("./find-cloudwatch-logs"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9ncy1tb25pdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmluZC1jbG91ZHdhdGNoLWxvZ3MnO1xuIl19
|