@go-to-k/cdkd 0.278.18 → 0.278.19
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/dist/{asg-provider-DHs3PmZU.js → asg-provider-DaP2cw8z.js} +2 -2
- package/dist/{asg-provider-DHs3PmZU.js.map → asg-provider-DaP2cw8z.js.map} +1 -1
- package/dist/cli.js +96 -7
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-D9TPJSZY.js → deploy-engine-DOQs235O.js} +3 -3
- package/dist/{deploy-engine-D9TPJSZY.js.map → deploy-engine-DOQs235O.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-
|
|
2
|
+
import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-DOQs235O.js";
|
|
3
3
|
import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
|
|
4
|
-
import { t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as ASGProvider } from "./asg-provider-DaP2cw8z.js";
|
|
5
5
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
6
6
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
7
7
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -12535,6 +12535,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
12535
12535
|
}
|
|
12536
12536
|
const previousSdkIndexes = toSdkGlobalSecondaryIndexes(previousProperties, currentRegion, oldBilling);
|
|
12537
12537
|
const gsiDiff = diffGlobalSecondaryIndexes(previousSdkIndexes, toSdkGlobalSecondaryIndexes(properties, currentRegion, newBilling));
|
|
12538
|
+
const rawOnDemandDeclarations = collectRawOnDemandDeclarations(properties, currentRegion);
|
|
12538
12539
|
const previousSdkByName = /* @__PURE__ */ new Map();
|
|
12539
12540
|
for (const prev of previousSdkIndexes) if (prev.IndexName) previousSdkByName.set(prev.IndexName, prev);
|
|
12540
12541
|
for (const gsi of gsiDiff.removed) {
|
|
@@ -12564,22 +12565,27 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
12564
12565
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId);
|
|
12565
12566
|
}
|
|
12566
12567
|
for (const gsi of gsiDiff.modified) {
|
|
12567
|
-
if (
|
|
12568
|
+
if (typeof gsi.IndexName !== "string" || gsi.IndexName.length === 0) continue;
|
|
12568
12569
|
if (gsiHandledByBillingFlip.has(gsi.IndexName)) continue;
|
|
12569
12570
|
const billingFlipped = oldBilling !== newBilling;
|
|
12570
12571
|
const update = { IndexName: gsi.IndexName };
|
|
12571
12572
|
const previousOnDemand = previousSdkByName.get(gsi.IndexName)?.OnDemandThroughput;
|
|
12573
|
+
const declared = rawOnDemandDeclarations.get(gsi.IndexName);
|
|
12572
12574
|
const onDemand = { ...gsi.OnDemandThroughput };
|
|
12575
|
+
const unresolvedMembers = [];
|
|
12573
12576
|
if (!billingFlipped && previousOnDemand) {
|
|
12574
|
-
if (previousOnDemand.MaxReadRequestUnits !== void 0 && onDemand.MaxReadRequestUnits === void 0)
|
|
12575
|
-
|
|
12577
|
+
if (previousOnDemand.MaxReadRequestUnits !== void 0 && onDemand.MaxReadRequestUnits === void 0) if (declared?.readDeclared) unresolvedMembers.push("MaxReadRequestUnits");
|
|
12578
|
+
else onDemand.MaxReadRequestUnits = ON_DEMAND_LIMIT_RESET;
|
|
12579
|
+
if (previousOnDemand.MaxWriteRequestUnits !== void 0 && onDemand.MaxWriteRequestUnits === void 0) if (declared?.writeDeclared) unresolvedMembers.push("MaxWriteRequestUnits");
|
|
12580
|
+
else onDemand.MaxWriteRequestUnits = ON_DEMAND_LIMIT_RESET;
|
|
12576
12581
|
}
|
|
12582
|
+
if (unresolvedMembers.length > 0) this.logger.warn(`GSI '${gsi.IndexName}' on ${physicalId}: the template declares ${unresolvedMembers.join(" / ")} but the value did not resolve to a number, so the on-demand limit was left UNCHANGED on AWS rather than applied or cleared. This is usually an unresolved intrinsic in the template; resolve it to a literal to change the ceiling, or remove the property entirely to clear it.`);
|
|
12577
12583
|
if (Object.keys(onDemand).length > 0) update.OnDemandThroughput = onDemand;
|
|
12578
12584
|
if (!billingFlipped && gsi.ProvisionedThroughput) update.ProvisionedThroughput = gsi.ProvisionedThroughput;
|
|
12579
12585
|
const previousSdk = previousSdkByName.get(gsi.IndexName);
|
|
12580
12586
|
if (gsi.WarmThroughput !== void 0 && !deepEqual$1(gsi.WarmThroughput, previousSdk?.WarmThroughput)) update.WarmThroughput = gsi.WarmThroughput;
|
|
12581
12587
|
if (!update.ProvisionedThroughput && !update.OnDemandThroughput && !update.WarmThroughput) {
|
|
12582
|
-
if (!billingFlipped) this.logger.warn(`GSI '${gsi.IndexName}' on ${physicalId} changed in a way DynamoDB's UpdateTable cannot express (KeySchema / Projection are immutable on an existing index). Recreate the index under a new name to apply the change.`);
|
|
12588
|
+
if (!billingFlipped && unresolvedMembers.length === 0) this.logger.warn(`GSI '${gsi.IndexName}' on ${physicalId} changed in a way DynamoDB's UpdateTable cannot express (KeySchema / Projection are immutable on an existing index). Recreate the index under a new name to apply the change.`);
|
|
12583
12589
|
continue;
|
|
12584
12590
|
}
|
|
12585
12591
|
const gsiUpdate = { Update: update };
|
|
@@ -13536,6 +13542,89 @@ function toSdkGlobalSecondaryIndexes(properties, region, billingMode) {
|
|
|
13536
13542
|
return result;
|
|
13537
13543
|
}
|
|
13538
13544
|
/**
|
|
13545
|
+
* True when a CFn sub-object is nothing but an unresolved intrinsic
|
|
13546
|
+
* (`{"Fn::If": […]}` / `{"Ref": …}`), i.e. the template DID declare the block
|
|
13547
|
+
* but its value could not be resolved to a shape with members.
|
|
13548
|
+
*
|
|
13549
|
+
* Needed because presence is otherwise tested on the MEMBER key: an
|
|
13550
|
+
* intrinsic-valued block IS a record, so `asRecord` succeeds while
|
|
13551
|
+
* `['MaxReadRequestUnits']` is undefined — reporting "not declared" and firing
|
|
13552
|
+
* the destructive `-1` reset on a ceiling the template was trying to SET. That
|
|
13553
|
+
* is issue #1440 one level up from where the member test looks.
|
|
13554
|
+
*/
|
|
13555
|
+
function isUnresolvedIntrinsicBlock(value) {
|
|
13556
|
+
const record = asRecord(value);
|
|
13557
|
+
if (!record) return false;
|
|
13558
|
+
const keys = Object.keys(record);
|
|
13559
|
+
return keys.length > 0 && keys.every((k) => k === "Ref" || k.startsWith("Fn::"));
|
|
13560
|
+
}
|
|
13561
|
+
/**
|
|
13562
|
+
* Per-index RAW presence of the two per-GSI on-demand members, keyed by
|
|
13563
|
+
* `IndexName` (issue #1440).
|
|
13564
|
+
*
|
|
13565
|
+
* The per-GSI reset needs to know "did the template DROP this member", and the
|
|
13566
|
+
* only faithful answer is whether the CFn key is THERE — not whether its value
|
|
13567
|
+
* coerced. `toSdkGlobalSecondaryIndexes` runs every value through
|
|
13568
|
+
* {@link toFiniteNumber}, which returns `undefined` for a present-but-
|
|
13569
|
+
* unparseable value (an unresolved `{Ref: …}`, `''`, an object). Deciding
|
|
13570
|
+
* "dropped" from that collapsed view sent the `-1` reset for a member the
|
|
13571
|
+
* template was actively trying to SET, silently clearing the ceiling — the same
|
|
13572
|
+
* silent-wrong-action class the reset exists to remove, and the exact hazard
|
|
13573
|
+
* the table-level path was corrected for in #1434's PR.
|
|
13574
|
+
*
|
|
13575
|
+
* So this walks the same two sources as `toSdkGlobalSecondaryIndexes` — the
|
|
13576
|
+
* top-level GSI for the write half, the LOCAL replica's index entry (with the
|
|
13577
|
+
* GSI-level spelling as the documented fallback) for the read half — and
|
|
13578
|
+
* reports presence only. Keeping it beside that function is deliberate: the
|
|
13579
|
+
* two must agree on where each member lives, and a divergence between them is
|
|
13580
|
+
* exactly what would re-open the bug.
|
|
13581
|
+
*
|
|
13582
|
+
* A missing entry means "not declared", which lets the reset FIRE — i.e. the
|
|
13583
|
+
* DESTRUCTIVE direction, not a conservative one. Two DIFFERENT mechanisms keep
|
|
13584
|
+
* that safe, and neither is "the translation validates everything":
|
|
13585
|
+
* - a non-array `GlobalSecondaryIndexes` is refused LOUDLY by
|
|
13586
|
+
* `toSdkGlobalSecondaryIndexes` before any of this runs;
|
|
13587
|
+
* - a malformed per-ENTRY shape is NOT refused — it is passed through
|
|
13588
|
+
* untouched so AWS surfaces the real error — but such an entry carries no
|
|
13589
|
+
* usable `IndexName`, so the reset loop skips it before consulting this map.
|
|
13590
|
+
* Do not relax either behavior on the assumption that this helper degrades
|
|
13591
|
+
* safely on its own; it does not.
|
|
13592
|
+
*/
|
|
13593
|
+
function collectRawOnDemandDeclarations(properties, region) {
|
|
13594
|
+
const out = /* @__PURE__ */ new Map();
|
|
13595
|
+
const rawIndexes = properties["GlobalSecondaryIndexes"];
|
|
13596
|
+
if (!Array.isArray(rawIndexes)) return out;
|
|
13597
|
+
const replicas = properties["Replicas"];
|
|
13598
|
+
const localReplicaIndexes = asRecord(Array.isArray(replicas) ? replicas.find((r) => asRecord(r)?.["Region"] === region) : void 0)?.["GlobalSecondaryIndexes"];
|
|
13599
|
+
const localByName = /* @__PURE__ */ new Map();
|
|
13600
|
+
if (Array.isArray(localReplicaIndexes)) for (const entry of localReplicaIndexes) {
|
|
13601
|
+
const record = asRecord(entry);
|
|
13602
|
+
const name = record?.["IndexName"];
|
|
13603
|
+
if (record && typeof name === "string") localByName.set(name, record);
|
|
13604
|
+
}
|
|
13605
|
+
for (const entry of rawIndexes) {
|
|
13606
|
+
const gsi = asRecord(entry);
|
|
13607
|
+
const name = gsi?.["IndexName"];
|
|
13608
|
+
if (!gsi || typeof name !== "string") continue;
|
|
13609
|
+
const localEntry = localByName.get(name);
|
|
13610
|
+
const explicitOnDemand = asRecord(gsi["OnDemandThroughput"]);
|
|
13611
|
+
if (explicitOnDemand) {
|
|
13612
|
+
out.set(name, {
|
|
13613
|
+
readDeclared: explicitOnDemand["MaxReadRequestUnits"] !== void 0,
|
|
13614
|
+
writeDeclared: explicitOnDemand["MaxWriteRequestUnits"] !== void 0
|
|
13615
|
+
});
|
|
13616
|
+
continue;
|
|
13617
|
+
}
|
|
13618
|
+
const readBlocks = [localEntry?.["ReadOnDemandThroughputSettings"], gsi["ReadOnDemandThroughputSettings"]];
|
|
13619
|
+
const writeBlock = gsi["WriteOnDemandThroughputSettings"];
|
|
13620
|
+
out.set(name, {
|
|
13621
|
+
readDeclared: readBlocks.some((block) => asRecord(block)?.["MaxReadRequestUnits"] !== void 0 || isUnresolvedIntrinsicBlock(block)),
|
|
13622
|
+
writeDeclared: asRecord(writeBlock)?.["MaxWriteRequestUnits"] !== void 0 || isUnresolvedIntrinsicBlock(writeBlock)
|
|
13623
|
+
});
|
|
13624
|
+
}
|
|
13625
|
+
return out;
|
|
13626
|
+
}
|
|
13627
|
+
/**
|
|
13539
13628
|
* Translate a CFn `Replicas[].GlobalSecondaryIndexes[]` blob (the
|
|
13540
13629
|
* `ReplicaGlobalSecondaryIndexSpecification` shape) into the SDK's
|
|
13541
13630
|
* `ReplicaGlobalSecondaryIndex[]` used by `CreateReplicationGroupMemberAction`
|
|
@@ -65020,7 +65109,7 @@ function createMigrateCommand() {
|
|
|
65020
65109
|
*/
|
|
65021
65110
|
function buildProgram() {
|
|
65022
65111
|
const program = new Command();
|
|
65023
|
-
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.
|
|
65112
|
+
program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.19");
|
|
65024
65113
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
65025
65114
|
const { profile } = actionCommand.optsWithGlobals();
|
|
65026
65115
|
if (profile !== void 0) process.env["AWS_PROFILE"] = profile;
|