DefinitelyTyped/types/lambda-phi/index.d.ts
elitechance 1f6037a629 This is a new definition for lambda-phi npm package (#18485)
* Initial import for lambda-phi typings

* Fix test and index.d.ts after running npm run lint lambda-phi
2017-08-01 11:36:43 -07:00

330 lines
9.6 KiB
TypeScript

// Type definitions for lambda-phi 1.0
// Project: https://github.com/elitechance/lambda-phi
// Definitions by: Ethan Dave B. Gomez <https://github.com/elitechance>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
declare module 'lambda-phi/lib/path-model' {
class PathModel {
private _methodName;
private _pattern;
private _httpMethods;
pattern: string;
httpMethods: string[];
methodName: string;
}
}
declare module 'lambda-phi/lib/path-param-model' {
/**
* Created by EGomez on 5/18/17.
*/
class PathParamModel {
private _name: string;
private _index: number;
private _methodName: string;
private _defaultValue: any;
name: string;
index: number;
methodName: string;
defaultValue: any;
}
}
declare module 'lambda-phi/lib/http-verb-model' {
/**
* Created by EGomez on 5/18/17.
*/
class HttpVerbModel {
private _name: string;
private _methodName: string;
name: string;
methodName: string;
}
}
declare module 'lambda-phi/lib/lambda-config' {
/**
* Created by EGomez on 5/19/17.
*/
interface LambdaConfig {
allowNullInjection: boolean;
}
}
declare module 'lambda-phi/lib/lambda-model' {
/**
* Created by EGomez on 2/23/17.
*/
import { PathModel } from 'lambda-phi/lib/path-model';
import { PathParamModel } from 'lambda-phi/lib/path-param-model';
import { HttpVerbModel } from 'lambda-phi/lib/http-verb-model';
import { LambdaConfig } from 'lambda-phi/lib/lambda-config';
class LambdaModel {
private _name: any;
private _instance: any;
private _paths: PathModel[];
private _basePath: string;
private _pathParams: PathParamModel[];
private _httpVerbs: HttpVerbModel[];
private _config: any;
/**
* API Properties
*/
private _postConstructorMethod;
private _preLambdaTimeoutMethod;
private _preLambdaTimeoutTime;
private _preLambdaCallbackMethod;
/**
* Lambda Properties
*/
private _eventProperty;
private _callbackProperty;
private _contextProperty;
private _handlerMethod;
/**
* Api Gateway Properties
*/
private _queryParamsProperty;
private _pathParamsProperty;
private _headersProperty;
private _bodyProperty;
private _methodProperty;
private _anyMethod;
name: any;
instance: any;
eventProperty: any;
handlerMethod: any;
callbackProperty: any;
queryParamsProperty: any;
pathParamsProperty: any;
methodProperty: any;
contextProperty: any;
anyMethod: any;
postConstructorMethod: any;
headersProperty: any;
bodyProperty: any;
preLambdaTimeoutMethod: string;
preLambdaTimeoutTime: number;
preLambdaCallbackMethod: string;
paths: PathModel[];
basePath: string;
pathParams: PathParamModel[];
httpVerbs: HttpVerbModel[];
config: LambdaConfig;
}
}
declare module 'lambda-phi/lib/http-model' {
/**
* Created by EGomez on 5/4/17.
*/
class HttpModel {
static readonly METHOD_GET: string;
static readonly METHOD_POST: string;
static readonly METHOD_PATCH: string;
static readonly METHOD_OPTIONS: string;
static readonly METHOD_PUT: string;
static readonly METHOD_HEAD: string;
static readonly METHOD_DELETE: string;
static readonly methods: string[];
}
}
declare module 'lambda-phi/lib/api-gateway' {
import { LambdaModel } from 'lambda-phi/lib/lambda-model';
class ApiGateway {
private static event;
private static context;
private static queryParams;
private static pathParams;
private static method;
private static headers;
private static body;
private static pathConfig;
static queryParamsAlias: any;
static pathParamsAlias: any;
static methodAlias: any;
static headersAlias: any;
static bodyAlias: any;
static addHttpVerbMethod(name: string, target: any, methodName: any): void;
static addAnyMethod(target: any, method: any): void;
static addHandlerMethod(target: any, method: any): void;
static addPostConstructorMethod(target: any, method: any): void;
static addPathMethod(pattern: string, target: any, method: any): void;
static addPathParam(name: string, target: any, methodName: any, index: number): void;
static addHeadersProperty(target: any, property: any): void;
static addQueryParamsProperty(target: any, property: any): void;
static addMethodProperty(target: any, property: any): void;
static addBodyProperty(target: any, property: any): void;
static addPathParamsProperty(target: any, property: any): void;
private static getHttpVerbMethods(lambda);
private static methodHasPath(lambda, methodName);
static setPathConfig(config: any): void;
static executeHttpRequest(lambda: LambdaModel): void;
private static executeAnyRequest(lambda);
private static getObjectValue(object, name);
private static getAliasValue(event, alias);
private static setQueryParams();
private static setPathParams();
private static setMethod();
private static setHeaders();
private static setBody();
static prepareHttpRequestVariables(event: any, context: any): void;
private static getHttpVerbsByMethodName(lambda, methodName);
private static verbExists(verbs, verb);
private static getArgs(keys, pathToRegEx, lambda, path);
private static getResourcePath();
private static executePathLambdaMethod(pathToRegEx, lambda, path);
static executePath(lambda: LambdaModel): boolean;
private static getHeaders(lambda);
private static getQueryParams(lambda);
private static getPathParams(lambda);
static setLambdaProperties(lambda: LambdaModel): void;
}
function Get(): (target: any, methodName: string) => void;
function Post(): (target: any, methodName: string) => void;
function Put(): (target: any, methodName: string) => void;
function Patch(): (target: any, methodName: string) => void;
function Options(): (target: any, methodName: string) => void;
function Delete(): (target: any, methodName: string) => void;
function Head(): (target: any, methodName: string) => void;
function Any(): (target: any, methodName: string) => void;
/**
* "alias" will be the alternative name defined in Body Mapping Templates
*/
function Headers(alias?: any): (target: any, propertyKey: string) => void;
function QueryParams(alias?: any): (target: any, propertyKey: string) => void;
function PathParams(alias?: any): (target: any, propertyKey: string) => void;
function Method(alias?: any): (target: any, propertyKey: string) => void;
function Body(alias?: any): (target: any, propertyKey: string) => void;
function Path(pattern: string): (target: any, propertyKey: string) => void;
function PathConfig(config: any): (target: any) => void;
function PathParam(name: string): (target: any, propertyKey: string, index: number) => void;
}
declare module 'lambda-phi/lib/lambda-manager' {
import { LambdaModel } from 'lambda-phi/lib/lambda-model';
import { LambdaConfig } from 'lambda-phi/lib/lambda-config';
class LambdaManager {
static instance: LambdaManager;
private _rawHandler;
private _event;
private _context;
private _callback;
private _lambdaModels;
private _lambdas;
upsertLambdaModel(target: any): LambdaModel;
setLambda(target: any, lambdaConfig: LambdaConfig): void;
setLambdaPath(target: any, path: any): void;
private getEvent(lambda);
private setLambdaProperties(lambda);
private executePostConstructor(lambda);
private executeHandler(lambda);
private setPreLambdaTimeoutMethod(lambda);
processLambdas(): void;
getLambdaByName(name: string): LambdaModel;
addHandlerMethod(target: any, method: any): void;
addPostConstructorMethod(target: any, method: any): void;
addPreLambdaTimeoutMethod(target: any, method: string, miliSecondsBeforeTimeout: number): void;
addPreLambdaCallbackMethod(target: any, method: string): void;
addCallbackProperty(target: any, property: any): void;
addEventProperty(target: any, property: any): void;
addContextProperty(target: any, property: any): void;
private executePreLambdaCallback(lambda);
event: any;
context: any;
callback: any;
rawHandler: any;
}
}
declare module 'lambda-phi' {
import { LambdaConfig } from 'lambda-phi/lib/lambda-config';
function LambdaHandler(event: any, context: any, callback: any): void;
function Lambda(lambdaConfig?: LambdaConfig): (target: any) => void;
function PostConstructor(): (target: any, methodName: string) => void;
function PreLambdaTimeout(miliSecondsBeforeTimeout: number): (target: any, methodName: string) => void;
function PreLambdaCallback(): (target: any, methodName: string) => void;
function Context(): (target: any, propertyKey: string) => void;
function Callback(): (target: any, propertyKey: string) => void;
function Event(): (target: any, propertyKey: string) => void;
}