github ministackorg/ministack v1.3.39

3 hours ago

What's Changed

New Contributors

[1.3.39] — 2026-05-15

Added

  • Node.js Lambda — @aws-sdk/client-* built-in stubs — real Node.js 18+ Lambda ships the AWS SDK v3 built-in; MiniStack's worker now intercepts require('@aws-sdk/client-*') and returns lightweight stubs that route through AWS_ENDPOINT_URL when the real package isn't installed (Lambda Layers still win). @aws-sdk/client-lambda gets a REST stub; 28 awsJson1.x services resolve via a generic X-Amz-Target Proxy. err.name/err.code set per v3 catch-by-name convention. HTTPS→HTTP localhost downgrade extended to CDK Provider Framework's cfn-response.js PUT. Query-protocol / REST-XML / REST-path clients still need bundling or a Layer, as on real AWS outside a managed runtime. Contributed by @hiddengearz.

Fixed

  • Cognito OIDC federation callback (/oauth2/idpresponse) — OIDC federation was half-wired: /oauth2/authorize redirected to the IdP correctly but routed the callback at /saml2/idpresponse, which only accepts SAML, so every IdP code+state callback 400'd. MiniStack now serves /oauth2/idpresponse: exchanges the code at the IdP's token_url, decodes the id_token (no signature verification — same posture as SAML), applies AttributeMapping, provisions the {provider}_{sub} user, and 302s back to the app with a MiniStack-issued code. Reported by @ocr-lasagna.
  • Step Functions executions stalling at ExecutionStarted under non-default account IDs_executions is an AccountScopedDict keyed by get_account_id() (a ContextVar); the background worker was spawned via plain threading.Thread which doesn't propagate contextvars, so the worker looked up the execution under the default account, found nothing, and silently returned. Fixed with contextvars.copy_context().run on each thread target, with per-thread snapshots at the Parallel and Map spawn sites (a single Context cannot be entered by two threads concurrently). Contributed by @michael-denyer.
  • Step Functions JSONata Arguments on aws-sdk Task states — Tasks with QueryLanguage: "JSONata" now evaluate Arguments and success/Catch Output against $states.input / $states.result / $states.errorOutput, instead of dispatching with an empty JSONPath payload. Contributed by @jayjanssen.
  • Step Functions JSONata coverage for Pass and Choice — Pass now evaluates Output (previously silently ignored). Choice now evaluates per-branch Condition (previously always treated as falsy, falling through to Default) and applies per-branch Output on the matched rule. Evaluator extended with comparison/arithmetic/string-concat/and/or/in/not, $count/$length/$string/$number, paren grouping, unary minus, left-associative parsing. Reported by @youngkwangk.

Don't miss a new ministack release

NewReleases is sending notifications on new releases.