@go-to-k/cdkd 0.278.41 → 0.278.43
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-CoBHZKJt.js → asg-provider-DIkqTnMR.js} +2 -2
- package/dist/{asg-provider-CoBHZKJt.js.map → asg-provider-DIkqTnMR.js.map} +1 -1
- package/dist/cli.js +55 -32
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-CiMIsVFt.js → deploy-engine-1qwryuQH.js} +73 -15
- package/dist/deploy-engine-1qwryuQH.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-CiMIsVFt.js.map +0 -1
|
@@ -9167,14 +9167,6 @@ async function applyRoleArnIfSet(opts) {
|
|
|
9167
9167
|
* Deliberately NOT rolled, so the decision is challengeable rather than
|
|
9168
9168
|
* invisible:
|
|
9169
9169
|
*
|
|
9170
|
-
* - **TOP-LEVEL `properties['X'] ?? 'default'` reads** (EC2 `InstanceType` /
|
|
9171
|
-
* `Domain`, API Gateway `AuthorizationType`, IAM access-key `Status`, Lambda
|
|
9172
|
-
* event-invoke `Qualifier`, RDS DB-proxy `TargetGroupName`, GlobalTable
|
|
9173
|
-
* `BillingMode` on create and on the desired side of update). The container
|
|
9174
|
-
* is the provider's own property bag, so rule 2 cannot fire; only rules 3/4
|
|
9175
|
-
* would apply, and refusing a present-but-non-string value there is a
|
|
9176
|
-
* stricter-value decision with its own regression surface (an unquoted YAML
|
|
9177
|
-
* `IpProtocol: -1` is a NUMBER today and deploys fine). Tracked as issue #1513.
|
|
9178
9170
|
* - **Nested reads whose value is an identity key or a label, never sent to
|
|
9179
9171
|
* AWS**: EC2's `rule['IpProtocol'] ?? '-1'` (composes a physical id and is
|
|
9180
9172
|
* read from BOTH the previous and next rule), `agentcore-evaluator`'s
|
|
@@ -9190,6 +9182,40 @@ async function applyRoleArnIfSet(opts) {
|
|
|
9190
9182
|
* `BillingMode`, RDS DB-proxy `delete()` / `readCurrentState`) — the
|
|
9191
9183
|
* desired-side-only rule above.
|
|
9192
9184
|
*
|
|
9185
|
+
* **The TOP-LEVEL `properties['X'] ?? 'default'` reads followed in issue
|
|
9186
|
+
* #1513**, per site rather than as a sweep: the container there is the
|
|
9187
|
+
* provider's own property bag, so rule 2 cannot fire and only rules 3/4 apply —
|
|
9188
|
+
* and those turn a present-but-non-string value into a hard refusal, which is a
|
|
9189
|
+
* stricter-value decision with its own regression surface. Three axes came out
|
|
9190
|
+
* of it, each an option or an omission rather than a blanket:
|
|
9191
|
+
*
|
|
9192
|
+
* - **Coerce where the value is legitimately numeric-looking.** An unquoted
|
|
9193
|
+
* YAML `IpProtocol: -1` / `Qualifier: 1` is a NUMBER today and deploys fine,
|
|
9194
|
+
* so those sites pass `coerceNumber` (CFn coerces scalars; cdkd does not).
|
|
9195
|
+
* The enum-valued sites — EC2 `InstanceType` / `Domain`, API Gateway
|
|
9196
|
+
* `AuthorizationType`, IAM access-key `Status`, RDS DB-proxy
|
|
9197
|
+
* `TargetGroupName` — do not: a number there is a template bug.
|
|
9198
|
+
* - **Throw on CREATE, warn on any STATE-REPLAY path** (`onUnusable`). A rollback
|
|
9199
|
+
* replays via `provider.update(..., previousState.properties, ...)`, so an
|
|
9200
|
+
* update-path refusal can strand a historical state record with no
|
|
9201
|
+
* template-side remedy. "Create is always template-borne" is FALSE and was
|
|
9202
|
+
* corrected in review: the reverse-replacement arm also calls
|
|
9203
|
+
* `provider.create(..., previousState.properties, REPLAYING_STATE_CREATE_CONTEXT)`,
|
|
9204
|
+
* so a create guard downgrades too — see {@link replayWarn}. A create reached
|
|
9205
|
+
* as the re-create half of a delete-then-create UPDATE
|
|
9206
|
+
* (`EC2Provider.updateSecurityGroupIngress`) is the third such path, and the
|
|
9207
|
+
* worst: the revoke has already committed, so a refusal leaves the rule
|
|
9208
|
+
* deleted from AWS.
|
|
9209
|
+
* - **Left unguarded: `EC2Provider.buildIpPermission`'s `IpProtocol` read.**
|
|
9210
|
+
* Textually a top-level read, but the helper is also reached from
|
|
9211
|
+
* `deleteSecurityGroupIngress` and from the REVOKE half of the inline-rule
|
|
9212
|
+
* update diff, both carrying STATE-borne rules — a refusal there would break
|
|
9213
|
+
* destroy and rollback. The create path is guarded at its own call site
|
|
9214
|
+
* instead, which refuses before the helper is ever reached.
|
|
9215
|
+
*
|
|
9216
|
+
* The one site #1513 leaves open is GlobalTable `BillingMode`, whose file was
|
|
9217
|
+
* owned by a parallel lane at the time.
|
|
9218
|
+
*
|
|
9193
9219
|
* This is a provider-layer guard rather than a pre-flight template check
|
|
9194
9220
|
* because **rule 4** is only decidable AFTER intrinsic resolution: at pre-flight
|
|
9195
9221
|
* time a legitimate `Fn::If`-valued block is an object whose `Status` key does
|
|
@@ -9245,15 +9271,47 @@ function readConfigString(container, key, fallback, containerPath) {
|
|
|
9245
9271
|
* @param value The already-read field value.
|
|
9246
9272
|
* @param fallback The value to use when the field is absent.
|
|
9247
9273
|
* @param path CFn path used in the error message, e.g. `AWS::WAFv2::WebACL Scope`.
|
|
9248
|
-
* @
|
|
9274
|
+
* @param options Per-site relaxations — see {@link ConfigStringOptions}.
|
|
9275
|
+
* @throws Error when the value is present but not a non-blank string (and not a
|
|
9276
|
+
* finite number under `coerceNumber`), unless `onUnusable` is supplied.
|
|
9249
9277
|
*/
|
|
9250
|
-
function requireConfigString(value, fallback, path) {
|
|
9278
|
+
function requireConfigString(value, fallback, path, options) {
|
|
9251
9279
|
if (value === void 0) return fallback;
|
|
9252
9280
|
if (fallback === "" && typeof value === "string") return value;
|
|
9253
|
-
if (
|
|
9281
|
+
if (options?.coerceNumber === true && typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
9282
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
9283
|
+
const detail = `(got ${describe(value)}) — check for an unresolved intrinsic or a mis-nested template value`;
|
|
9284
|
+
const named = fallback === "" ? "" : ` (${fallback})`;
|
|
9285
|
+
if (options?.onUnusable) {
|
|
9286
|
+
options.onUnusable(`${path} must be a non-empty string ${detail}. Ignoring it and using the default${named} here; the same value is REFUSED on a template-path create`);
|
|
9287
|
+
return fallback;
|
|
9288
|
+
}
|
|
9289
|
+
throw new Error(`${path} must be a non-empty string ${detail}. Omit the field entirely to use the default` + named);
|
|
9290
|
+
}
|
|
9254
9291
|
return value;
|
|
9255
9292
|
}
|
|
9256
9293
|
/**
|
|
9294
|
+
* The CREATE-path counterpart of {@link ConfigStringOptions.onUnusable}.
|
|
9295
|
+
*
|
|
9296
|
+
* `create()` is NOT always template-borne, which is the correction that made
|
|
9297
|
+
* this helper necessary: `rollback-executor.ts`'s reverse-replacement arm
|
|
9298
|
+
* revives the OLD resource by calling `provider.create(..., previousState.properties,
|
|
9299
|
+
* REPLAYING_STATE_CREATE_CONTEXT)`. A resource written by an older binary with a
|
|
9300
|
+
* value this guard now refuses would otherwise become un-rollbackable, with only
|
|
9301
|
+
* a hand-edit of `state.json` as a remedy — the same failure the update-path
|
|
9302
|
+
* warn exists to prevent, and what `.claude/rules/providers.md` requires a
|
|
9303
|
+
* create-side pre-flight refusal to downgrade for.
|
|
9304
|
+
*
|
|
9305
|
+
* Spread into the options bag so a site can combine it with `coerceNumber`:
|
|
9306
|
+
* `{ coerceNumber: true, ...replayWarn(this.logger, context) }`.
|
|
9307
|
+
*
|
|
9308
|
+
* @returns `{ onUnusable }` when the caller declared a state replay, else `{}`
|
|
9309
|
+
* (an ordinary template-path create, where the refusal stands).
|
|
9310
|
+
*/
|
|
9311
|
+
function replayWarn(logger, context) {
|
|
9312
|
+
return context?.replayingState === true ? { onUnusable: (message) => logger.warn(message) } : {};
|
|
9313
|
+
}
|
|
9314
|
+
/**
|
|
9257
9315
|
* Refuse a present-but-non-ARRAY value where a CFn LIST block belongs.
|
|
9258
9316
|
*
|
|
9259
9317
|
* The list-shaped sibling of {@link readConfigString}, for the container one
|
|
@@ -12653,7 +12711,7 @@ var CloudControlProvider = class {
|
|
|
12653
12711
|
if (context?.finalSnapshotIdentifier !== void 0) throw new ProvisioningError(`${logicalId} (${resourceType}) requires a final snapshot (DeletionPolicy: Snapshot), but the Cloud Control API delete route has no final-snapshot parameter. Re-run with --skip-final-snapshot after snapshotting manually, or retain the resource.`, resourceType, logicalId, physicalId);
|
|
12654
12712
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
12655
12713
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
12656
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
12714
|
+
const { ASGProvider } = await import("./asg-provider-DIkqTnMR.js").then((n) => n.n);
|
|
12657
12715
|
await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
|
|
12658
12716
|
return;
|
|
12659
12717
|
}
|
|
@@ -19150,7 +19208,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
19150
19208
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
19151
19209
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
19152
19210
|
function getCdkdVersion() {
|
|
19153
|
-
return "0.278.
|
|
19211
|
+
return "0.278.43";
|
|
19154
19212
|
}
|
|
19155
19213
|
/**
|
|
19156
19214
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -21261,5 +21319,5 @@ var DeployEngine = class {
|
|
|
21261
21319
|
};
|
|
21262
21320
|
|
|
21263
21321
|
//#endregion
|
|
21264
|
-
export {
|
|
21265
|
-
//# sourceMappingURL=deploy-engine-
|
|
21322
|
+
export { DiffCalculator as $, resolveBucketRegion as $t, red as A, getDockerImageBySourceHash as At, isTerminationProtectionPropagationError as B, resolveStateBucketWithDefaultAndSource as Bt, isStatefulRecreateTargetSync as C, formatError as Cn, validateContainerRepoName as Ct, cyan as D, __exportAll as Dn, runDockerForeground as Dt, bold as E, withErrorHandling as En, getDockerCmd as Et, ProviderRegistry as F, resolveApp as Ft, normalizeAwsTagsToCfn as G, CFN_TEMPLATE_URL_LIMIT as Gt, cfnRefValueFromPhysicalId as H, stateBucketExistenceConfirmed as Ht, findActionableSilentDrops as I, resolveAutoAssetStorage as It, readConfigString as J, uploadCfnTemplate as Jt, resolveExplicitPhysicalId as K, MIGRATE_TMP_PREFIX as Kt, CloudControlProvider as L, resolveCaptureObservedState as Lt, IAMRoleProvider as M, synthesisStatusMessage as Mt, collectInlinePolicyNamesManagedBySiblings as N, getDefaultStateBucketName as Nt, gray as O, runDockerStreaming as Ot, clearOnUpdateRemoval as P, getLegacyStateBucketName as Pt, applyRoleArnIfSet as Q, clearBucketRegionCache as Qt, slowCcOperationTimeoutMs as R, resolveSkipPrefix as Rt, MULTI_REGION_RECREATE_BLOCKED_TYPES as S, SynthesisError as Sn, validateAssetBucketName as St, formatResourceLine as T, normalizeAwsError as Tn, formatDockerLoginError as Tt, refStateLookupFromResource as U, warnDeprecatedNoPrefixCliFlag as Ut, IntrinsicFunctionResolver as V, resolveUseCdkBootstrapAssets as Vt, WAFv2WebACLProvider as W, CFN_TEMPLATE_BODY_LIMIT as Wt, requireConfigArray as X, AssemblyReader as Xt, replayWarn as Y, expectedOwnerParam as Yt, requireConfigString as Z, processStackMessages as Zt, createPreDeleteFinalSnapshot as _, ResourceTimeoutError as _n, AssetModeResolver as _t, DeploymentEventsStore as a, CdkdError as an, TemplateParser as at, unsupportedFinalSnapshotError as b, StackTerminationProtectionError as bn, getBootstrapMarkerKey as bt, replayFailedOperations as c, DeployCancelledError as cn, rebuildClientForBucketRegion as ct, IMPLICIT_DELETE_DEPENDENCIES as d, LocalStartServiceError as dn, stringifyValue as dt, AwsClients as en, describeTypeWithThrottleRetry as et, computeImplicitDeleteEdges as f, LockError as fn, WorkGraph as ft, ccRoutedFinalSnapshotError as g, ProvisioningError as gn, rewriteTemplateAssetReferences as gt, buildFinalSnapshotIdentifier as h, PartialFailureError as hn, loadPublishableAssetManifest as ht, DeploymentEventsReader as i, AssetError as in, DagBuilder as it, yellow as j, Synthesizer as jt, green as k, AssetManifestLoader as kt, replayRollback as l, LocalInvokeBuildError as ln, shouldRetainResource as lt, PRE_DELETE_SNAPSHOT_TYPES as m, NestedStackChildDirectDestroyError as mn, createAssetRedirectResolver as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, resetAwsClients as nn, isRetryableTransientError as nt, planFailedOps as o, ConfigError as on, LockManager as ot, ATOMIC_FINAL_SNAPSHOT_TYPES as p, MissingCdkCliError as pn, buildAssetRedirectMap as pt, assertRegionMatch as q, findLargeInlineResources as qt, DeployEngine as r, setAwsClients as rn, isThrottlingError as rt, planRollback as s, DependencyError as sn, S3StateBackend as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, getAwsClients as tn, withRetry as tt, withResourceDeadline as u, LocalMigrateError as un, AssetPublisher as ut, isFinalSnapshotError as v, ResourceUpdateNotSupportedError as vn, BOOTSTRAP_MARKER_PREFIX as vt, renderStatefulReason as w, isCdkdError as wn, buildDockerImage as wt, extractDeploymentEventError as x, StateError as xn, parseBootstrapMarker as xt, refusesFinalSnapshot as y, StackHasActiveImportsError as yn, ensureAssetStorage as yt, disableInstanceApiTermination as z, resolveStateBucketWithDefault as zt };
|
|
21323
|
+
//# sourceMappingURL=deploy-engine-1qwryuQH.js.map
|