@middy/appconfig
Version:
AppConfig middleware for the middy framework
66 lines (58 loc) • 1.8 kB
TypeScript
// Copyright 2017 - 2026 will Farrell, Luciano Mammino, and Middy contributors.
// SPDX-License-Identifier: MIT
import type {
AppConfigDataClient,
AppConfigDataClientConfig,
StartConfigurationSessionRequest,
} from "@aws-sdk/client-appconfigdata";
import type middy from "@middy/core";
import type { Options as MiddyOptions } from "@middy/util";
import type { Context as LambdaContext } from "aws-lambda";
export type ParamType<T> = StartConfigurationSessionRequest & {
__returnType?: T;
};
export declare function appConfigParam<T>(
name: StartConfigurationSessionRequest,
): ParamType<T>;
export interface AppConfigOptions<AwsAppConfigClient = AppConfigDataClient>
extends Omit<
MiddyOptions<AwsAppConfigClient, AppConfigDataClientConfig>,
"fetchData"
> {
fetchData?: {
[key: string]: StartConfigurationSessionRequest | ParamType<unknown>;
};
}
export type Context<TOptions extends AppConfigOptions | undefined> =
TOptions extends { setToContext: true }
? TOptions extends { fetchData: infer TFetchData }
? LambdaContext & {
[Key in keyof TFetchData]: TFetchData[Key] extends ParamType<infer T>
? T
: unknown;
}
: never
: LambdaContext;
export type Internal<TOptions extends AppConfigOptions | undefined> =
TOptions extends AppConfigOptions
? TOptions extends { fetchData: infer TFetchData }
? {
[Key in keyof TFetchData]: TFetchData[Key] extends ParamType<infer T>
? T
: unknown;
}
: {}
: {};
declare function appConfigMiddleware<TOptions extends AppConfigOptions>(
options?: TOptions,
): middy.MiddlewareObj<
unknown,
unknown,
Error,
Context<TOptions>,
Internal<TOptions>
>;
export declare function appConfigValidateOptions(
options?: Record<string, unknown>,
): void;
export default appConfigMiddleware;