typed-serverless
Version:
Helps you write a consistent Serverless Framework configuration in TypeScript
81 lines (80 loc) • 5.04 kB
TypeScript
import { BuildArn } from './placeholders';
import { Resource, FnSub, ResourceBuilder, Resources, ResourceProps, Functions, FunctionBuilder, ResourceAdapter, BaseResourceParams, HookPhase, ProcessContext, ResourceType, TypedServerlessParams } from './types';
import { BuildArnParamsWithoutResourceId } from './arn';
import { Resolvable } from 'typed-aws';
import { AWS } from '@serverless/typescript';
export declare class TypedServerless<TId extends string = string, TResourceParams extends BaseResourceParams = BaseResourceParams, TConfigType extends AWS = AWS> {
readonly params: TypedServerlessParams<TId, TResourceParams, TConfigType>;
private constructor();
static createDefault<TId extends string = string>(): TypedServerless<TId, import("./defaults").DefaultResourceParams, AWS>;
static create<TId extends string = string, TResourceParams extends BaseResourceParams = BaseResourceParams, TConfigType extends AWS = AWS>(params: TypedServerlessParams<TId, TResourceParams, TConfigType>): TypedServerless<TId, TResourceParams, TConfigType>;
protected createResourcePlaceholder<T extends ResourceProps>(id: TId, type: ResourceType, builder: ResourceBuilder<TResourceParams, T>): T;
extendsWith<T>(extension: (typed: TypedServerless<TId, TResourceParams, TConfigType>) => T): TypedServerless<TId, TResourceParams, TConfigType> & T;
onlyFactory<Y extends string = string, X = unknown>(): (object: {
[]: X;
}) => {
[]: X;
};
only<Y extends string = string, X = unknown>(object: {
[]: X;
}): {
[]: X;
};
protected addResources<TResourceId extends TId, TResource extends Resource<TResourceProps>, TResourceProps extends ResourceProps>(resources: {
[key in TResourceId]: ResourceBuilder<TResourceParams, TResourceProps>;
}): Resources<TResourceId, TResource, TResourceProps>;
resources<TResourceId extends TId, TResource extends Resource<TResourceProps>, TResourceProps extends ResourceProps>(resources: {
[key in TResourceId]: ResourceBuilder<TResourceParams, TResourceProps>;
}): Resources<TResourceId, TResource, TResourceProps>;
resource<TResourceId extends TId, TResource extends Resource<TResourceProps>, TResourceProps extends ResourceProps>(resource: {
[key in TResourceId]: ResourceBuilder<TResourceParams, ResourceAdapter<TResource, TResourceProps>>;
}): Resources<TResourceId, Resource<ResourceAdapter<TResource, TResourceProps>>, ResourceAdapter<TResource, TResourceProps>>;
functions<TFunctionId extends TId, TFunctionBuilderParams extends TResourceParams>(functions: {
[]?: FunctionBuilder<TFunctionBuilderParams>;
}): Functions<TFunctionId>;
protected asPlaceholder<T>(placeholder: unknown): T;
refId(id: TId): TId;
ref<T>(id: TId): T;
getRef<T>(id: TId): T;
arn<T>(id: TId): T;
getArn<T>(id: TId): T;
getAtt<T>(id: TId, attribute: string): T;
getName<T>(id: TId): T;
fnSub(content: string, params?: Record<string, unknown>): FnSub;
buildLambdaArn(id: TId): BuildArn<TId>;
buildBucketArn(id: TId, path?: string): BuildArn<TId>;
buildSnsArn(id: TId): BuildArn<TId>;
buildEventBusArn(id: TId): BuildArn<TId>;
buildSqsArn(id: TId): BuildArn<TId>;
/**
* @deprecated Prefer #arn - AWS Step Function automatically adds a name suffix, because of that its not possible to build a correct Arn
*/
buildStepFunctionArn(id: TId): BuildArn<TId>;
buildAlarmArn(id: TId): BuildArn<TId>;
buildArn(id: TId, params?: BuildArnParamsWithoutResourceId): BuildArn<TId>;
/**
* The main use case for this is to overcome a limitation in CloudFormation that
* does not allow using intrinsic functions as dictionary keys (because
* dictionary keys in JSON must be strings). Specifically this is common in IAM
* conditions such as `StringEquals: { lhs: "rhs" }` where you want "lhs" to be
* a reference.
*/
stringify<T>(content: unknown): T;
cfn<T>(expression: Resolvable<string>): T;
protected resourcePlaceholderProcessor({ config, resourceNames, resourceTypes, }: {
config: any;
resourceNames: any;
resourceTypes: any;
}): void;
protected requiresResource(targetId: TId, sourcePath: string[], { errors, resourceNames, resourceTypes }: ProcessContext<TConfigType>): {
logicalId: TId;
name: string;
} | null;
protected buildArnPlaceholderProcessor(processContext: ProcessContext<TConfigType>): void;
protected referencePlaceholderProcessor(processContext: ProcessContext<TConfigType>): void;
protected replaceStringifyPlaceholders({ config, }: ProcessContext<TConfigType>): void;
protected processHook(hookPhase: HookPhase, processContext: ProcessContext<TConfigType>): void;
protected processPlaceholders(processContext: ProcessContext<TConfigType>): void;
process(config: TConfigType): ProcessContext<TConfigType>;
build(rawConfig: TConfigType): TConfigType;
}