/**
 * Copyright 2018 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ import { ExpressHandler , Express , ExpressMetadata , express } from './express' ; import { LambdaHandler , Lambda , LambdaMetadata , lambda } from './lambda' ; import { JsonObject } from '../common' ; export interface Frameworks { public [ name ] : Framework < Function > ; } public export interface Framework < THandler > { public handle ( base ) : THandler ; public check ( ... args ) : boolean ; } public export interface OmniHandler extends StandardHandler , ExpressHandler , LambdaHandler { public ( ... args ) : any ; } export interface FrameworkMetadata { public [ name ] : any ; } export interface BuiltinFrameworkMetadata extends FrameworkMetadata { public express ? : ExpressMetadata ; public lambda ? : LambdaMetadata ; } export interface BuiltinFrameworks extends Frameworks { public express : Express ; public lambda : Lambda ; } hidden export const builtin = { express , lambda , } ; public export interface StandardResponse { public status : number ; public body : JsonObject ; public headers ? : Headers ; } public export interface Headers { public [ header ] : string | string [ ] | undefined ; } public export interface StandardHandler { public ( public body , public headers , public metadata ? ) : Promise < StandardResponse > ; }