Skip to content

AxisDataSelections

Open in ChatGPTOpen in Claude

Defined in: packages/stacks/src/composer/selections.ts:27

@axis-tech-co/axis-stacks — composer/selections.ts

Phase 3L1 — the selections contract (design §5). Exports:

  • AxisSelections — compile-time face of the axis.json selections block
  • AxisResolvedSelections — post-context-overlay selections (same shape, frozen)
  • resolveSelections — shape/enum/unknown-key/reserved-apis validation (§5.2) + the feature.<name> context overlay (§5.4)

Pure TypeScript — no CDK imports. The composer (define-axis-app.ts) calls resolveSelections at the top of defineAxisApp with the app’s context getter; tests call it directly with a plain map-backed getter. All failures throw [Axis]-prefixed errors at synth time.

D4: apis is a RESERVED sibling key — v1 rejects it with a versioned message (code, not documentation), so the future multi-API minor lands without a compile break and old readers fail loudly, never silently.

D13: context maps to on/off ONLY. "custom" is unreachable via context — substitution is project state, not a synth experiment. A context key targeting a stack whose mode is "custom" throws; a kind-mismatched API key throws naming the project’s kind.

dynamo: boolean

Defined in: packages/stacks/src/composer/selections.ts:32

DynamoDB tables family toggle — distinct from DataStack existence (3M6).


eventBridge: boolean

Defined in: packages/stacks/src/composer/selections.ts:38


kms: boolean

Defined in: packages/stacks/src/composer/selections.ts:33


mode: "custom" | "axis" | "off"

Defined in: packages/stacks/src/composer/selections.ts:30

Tri-state (3M6): “off” ⇒ no DataStack — legal only when every data toggle (incl. dynamo) is false.


s3: boolean

Defined in: packages/stacks/src/composer/selections.ts:34


secrets: boolean

Defined in: packages/stacks/src/composer/selections.ts:37


sns: boolean

Defined in: packages/stacks/src/composer/selections.ts:36


sqs: boolean

Defined in: packages/stacks/src/composer/selections.ts:35

© 2026 Axis Tech. Powered by axis-tech.co.