@multicloud/sls-aws
Version:
Amazon AWS specific middleware and components for Serverless @multicloud.
45 lines (44 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const sls_core_1 = require("@multicloud/sls-core");
const inversify_1 = require("inversify");
const _1 = require(".");
const services_1 = require("./services");
/**
* AWS Module that can be registered in IoC container
*/
class AwsModule {
/**
* Determines whether or not the incoming request is an AWS request
* @param req The IoC resolution request
*/
isAwsRequest(req) {
const runtimeArgs = req.parentContext.container.get(sls_core_1.ComponentType.RuntimeArgs);
return runtimeArgs && runtimeArgs[1].awsRequestId;
}
;
/**
* Creates the inversify container module
*/
create() {
return new inversify_1.ContainerModule((bind) => {
bind(sls_core_1.ComponentType.CloudContext)
.to(_1.AwsContext)
.inSingletonScope()
.when(this.isAwsRequest);
bind(sls_core_1.ComponentType.CloudRequest)
.to(_1.AwsRequest)
.when(this.isAwsRequest);
bind(sls_core_1.ComponentType.CloudResponse)
.to(_1.AwsResponse)
.when(this.isAwsRequest);
bind(sls_core_1.ComponentType.CloudService)
.to(services_1.LambdaCloudService)
.when(this.isAwsRequest);
bind(sls_core_1.ComponentType.CloudStorage)
.to(_1.S3Storage)
.when(this.isAwsRequest);
});
}
}
exports.AwsModule = AwsModule;