@middy/appconfig
Version:
AppConfig middleware for the middy framework
60 lines (53 loc) • 1.59 kB
TypeScript
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 appConfigReq<T>(
req: 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,
any,
Error,
Context<TOptions>,
Internal<TOptions>
>;
export default appConfigMiddleware;