@nestjs-cognito/core
Version:
Cognito Provider for NestJS
62 lines • 3.44 kB
TypeScript
import type { CognitoIdentityProviderClientConfig } from "@aws-sdk/client-cognito-identity-provider";
import type { ModuleMetadata, Provider, Type } from "@nestjs/common";
import type { CognitoJwtVerifierMultiProperties, CognitoJwtVerifierProperties } from "aws-jwt-verify/cognito-verifier";
import type { JwksCache } from "aws-jwt-verify/jwk";
import type { JwtVerifierMultiIssuer as JwtRsaVerifierMultiIssuer, JwtVerifierMultiProperties as JwtRsaVerifierMultiProperties, JwtVerifierProperties as JwtRsaVerifierProperties, JwtVerifierSingleIssuer as JwtRsaVerifierSingleIssuer, VerifyProperties } from "aws-jwt-verify/jwt-verifier";
import type { CognitoJwtPayload as AwsCognitoJwtPayload } from 'aws-jwt-verify/jwt-model';
export type CognitoJwtPayload = Prettify<AwsCognitoJwtPayload>;
/**
* Represents a type that can be used as a Cognito JWT RSA verifier.
* It can be either a single issuer verifier or a multi-issuer verifier.
*/
export type CognitoJwtRsaVerifier = Prettify<JwtRsaVerifierSingleIssuer<JwtRsaVerifierProperties<VerifyProperties>> | JwtRsaVerifierMultiIssuer<JwtRsaVerifierMultiProperties<VerifyProperties>>>;
export type JwtVerifierOptions = {
jwtVerifier: (CognitoJwtVerifierProperties | CognitoJwtVerifierMultiProperties[]) & {
additionalProperties?: {
jwksCache: JwksCache;
};
};
jwtRsaVerifier: undefined | null;
};
export type JwtRsaVerifierOptions = {
jwtVerifier: undefined | null;
jwtRsaVerifier: (JwtRsaVerifierMultiProperties<VerifyProperties>[] | JwtRsaVerifierProperties<VerifyProperties>) & {
additionalProperties?: {
jwksCache: JwksCache;
};
};
};
export type CognitoModuleOptions = Prettify<{
identityProvider?: CognitoIdentityProviderClientConfig;
} & Partial<JwtVerifierOptions | JwtRsaVerifierOptions>>;
/**
* @interface CognitoModuleOptionsFactory - Metadata for the CognitoModule
* @property {() => Promise<CognitoModuleOptions>} createCognitoModuleOptions - A factory function to create the CognitoModuleOptions
* @property {Type<any>[]} imports - The imports to be used by the module
* @property {Provider[]} providers - The providers to be used by the module
* @property {(string | Provider)[]} exports - The exports to be used by the module
* @property {string} name - The name of the module
*/
export interface CognitoModuleOptionsFactory {
createCognitoModuleOptions(): Promise<CognitoModuleOptions> | CognitoModuleOptions;
}
/**
* @interface CognitoModuleAsyncOptions - Options for the CognitoModule
* @property {Function} imports - Imports the module asyncronously
* @property {Function} inject - Injects the module asyncronously
* @property {CognitoModuleOptions} useFactory - The factory function to create the CognitoModuleOptions
* @property {CognitoModuleOptions} useClass - The class to create the CognitoModuleOptions
* @property {CognitoModuleOptions} useExisting - The existing instance of the CognitoModuleOptions
*/
export interface CognitoModuleAsyncOptions extends Pick<ModuleMetadata, "imports"> {
extraProviders?: Provider[];
inject?: any[];
useClass?: Type<CognitoModuleOptionsFactory>;
useExisting?: Type<CognitoModuleOptionsFactory>;
useFactory?: (...args: any[]) => Promise<CognitoModuleOptions> | CognitoModuleOptions;
}
type Prettify<T> = {
[K in keyof T]: T[K];
} & unknown;
export {};
//# sourceMappingURL=cognito-module.options.d.ts.map