@yopdev/dev-server 1.3.8 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,10 @@
1
- import { SNSMessageAttributes, SQSEvent } from 'aws-lambda';
1
+ import { SNSMessageAttributes, SQSEvent, SQSRecord } from 'aws-lambda';
2
+ import { Message } from '@aws-sdk/client-sqs';
2
3
  import { Service } from './services';
3
4
  export declare const newEventsProxy: (name: string, config: {
4
5
  handlers: EventHandler[];
5
6
  topic?: string;
7
+ mapper?: (message: Message) => SQSRecord;
6
8
  }) => Service<void>;
7
9
  export type EventHandler = {
8
10
  name: string;
@@ -43,13 +43,14 @@ var logging_1 = require("@yopdev/logging");
43
43
  var stoppable_1 = require("./stoppable");
44
44
  var assert_1 = require("./assert");
45
45
  var services_1 = require("./services");
46
- var newEventsProxy = function (name, config) { return new services_1.Service(new EventsProxy(name, config.handlers, config.topic)); };
46
+ var newEventsProxy = function (name, config) { var _a; return new services_1.Service(new EventsProxy(name, config.handlers, (_a = config.mapper) !== null && _a !== void 0 ? _a : mappers_1.mapToLambdaSqsRecord, config.topic)); };
47
47
  exports.newEventsProxy = newEventsProxy;
48
48
  var EventsProxy = /** @class */ (function () {
49
- function EventsProxy(name, handlers, topic) {
49
+ function EventsProxy(name, handlers, mapper, topic) {
50
50
  var _this = this;
51
51
  this.name = name;
52
52
  this.handlers = handlers;
53
+ this.mapper = mapper;
53
54
  this.topic = topic;
54
55
  this.pollingFrequency = 1;
55
56
  this.stopped = true;
@@ -101,7 +102,7 @@ var EventsProxy = /** @class */ (function () {
101
102
  if (handlers.length === 0) {
102
103
  _this.LOGGER.warn('no handlers found for message %o', message);
103
104
  }
104
- var record = (0, mappers_1.mapToLambdaSqsRecord)(message);
105
+ var record = _this.mapper(message);
105
106
  handlers.forEach(function (handler) {
106
107
  return handler
107
108
  .handler({ Records: [record] })
@@ -14,6 +14,7 @@ export { lazy, promised } from './deferred';
14
14
  export { Lifecycle, Service } from './services';
15
15
  export { DevServerConfig } from './config';
16
16
  export { Route } from './lambda-http-proxy';
17
+ export { mapToLambdaEvent as defaultApiGatewayLambdaMapper, mapToLambdaSqsRecord as defaultSqsLambdaMapper } from './mappers';
17
18
  declare global {
18
19
  interface Promise<T> {
19
20
  tap(onfulfilled?: (value: T) => void, onrejected?: (reason: unknown) => void): Promise<T>;
package/dist/src/index.js CHANGED
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.Service = exports.promised = exports.lazy = exports.oneThenOther = exports.allOf = exports.tunnel = exports.container = exports.dynamoDbTable = exports.preTrafficHooks = exports.scheduledTasks = exports.eventsProxy = exports.internalQueue = exports.snsHttpProxy = exports.lambdaHttpProxy = exports.httpServer = exports.DevServer = void 0;
39
+ exports.defaultSqsLambdaMapper = exports.defaultApiGatewayLambdaMapper = exports.Service = exports.promised = exports.lazy = exports.oneThenOther = exports.allOf = exports.tunnel = exports.container = exports.dynamoDbTable = exports.preTrafficHooks = exports.scheduledTasks = exports.eventsProxy = exports.internalQueue = exports.snsHttpProxy = exports.lambdaHttpProxy = exports.httpServer = exports.DevServer = void 0;
40
40
  var dev_server_1 = require("./dev-server");
41
41
  Object.defineProperty(exports, "DevServer", { enumerable: true, get: function () { return dev_server_1.DevServer; } });
42
42
  var http_server_1 = require("./http-server");
@@ -67,6 +67,9 @@ Object.defineProperty(exports, "lazy", { enumerable: true, get: function () { re
67
67
  Object.defineProperty(exports, "promised", { enumerable: true, get: function () { return deferred_1.promised; } });
68
68
  var services_1 = require("./services");
69
69
  Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return services_1.Service; } });
70
+ var mappers_1 = require("./mappers");
71
+ Object.defineProperty(exports, "defaultApiGatewayLambdaMapper", { enumerable: true, get: function () { return mappers_1.mapToLambdaEvent; } });
72
+ Object.defineProperty(exports, "defaultSqsLambdaMapper", { enumerable: true, get: function () { return mappers_1.mapToLambdaSqsRecord; } });
70
73
  Promise.prototype.tap = function (onfulfilled, onrejected) {
71
74
  return __awaiter(this, void 0, void 0, function () {
72
75
  var _this = this;
@@ -1,9 +1,11 @@
1
1
  import { Queue } from "./sqs";
2
- import { SQSEvent } from "aws-lambda";
2
+ import { SQSEvent, SQSRecord } from "aws-lambda";
3
3
  import { Service, Callback } from "./services";
4
+ import { Message } from "@aws-sdk/client-sqs";
4
5
  export declare const newInternalQueue: (name: string, config: {
5
6
  index: number;
6
7
  visibility: number;
7
8
  handler: (queue: Queue) => (e: SQSEvent) => Promise<void>;
8
9
  fifo: boolean;
10
+ mapper?: (message: Message) => SQSRecord;
9
11
  }, callback?: Callback<string>) => Service<string>;
@@ -42,15 +42,19 @@ var sqs_consumer_1 = require("sqs-consumer");
42
42
  var stoppable_1 = require("./stoppable");
43
43
  var mappers_1 = require("./mappers");
44
44
  var services_1 = require("./services");
45
- var newInternalQueue = function (name, config, callback) { return new services_1.Service(new InternalQueue(name, config.visibility, config.handler, config.index, function (sqs) { return config.fifo ? sqs.createFifoQueue : sqs.createStandardQueue; }), callback); };
45
+ var newInternalQueue = function (name, config, callback) {
46
+ var _a;
47
+ return new services_1.Service(new InternalQueue(name, config.visibility, config.handler, config.index, function (sqs) { return config.fifo ? sqs.createFifoQueue : sqs.createStandardQueue; }, (_a = config.mapper) !== null && _a !== void 0 ? _a : mappers_1.mapToLambdaSqsRecord), callback);
48
+ };
46
49
  exports.newInternalQueue = newInternalQueue;
47
50
  var InternalQueue = /** @class */ (function () {
48
- function InternalQueue(name, visibility, handler, index, creator) {
51
+ function InternalQueue(name, visibility, handler, index, creator, mapper) {
49
52
  var _this = this;
50
53
  this.name = name;
51
54
  this.visibility = visibility;
52
55
  this.handler = handler;
53
56
  this.creator = creator;
57
+ this.mapper = mapper;
54
58
  this.start = function (config) { return _this.create(config.sqs); };
55
59
  this.create = function (sqs) { return __awaiter(_this, void 0, void 0, function () {
56
60
  var _this = this;
@@ -69,7 +73,7 @@ var InternalQueue = /** @class */ (function () {
69
73
  waitTimeSeconds: visibility,
70
74
  sqs: sqs,
71
75
  handleMessage: function (message) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
72
- return [2 /*return*/, handler({ Records: [(0, mappers_1.mapToLambdaSqsRecord)(message)] })];
76
+ return [2 /*return*/, handler({ Records: [this.mapper(message)] })];
73
77
  }); }); },
74
78
  }))
75
79
  .then(function (consumer) {
@@ -1,9 +1,11 @@
1
1
  import { HttpSettings } from "./http-server";
2
2
  import { APIGatewayProxyEvent, APIGatewayProxyResult } from "aws-lambda";
3
+ import { IncomingMessage } from "http";
3
4
  import { Service, Callback } from "./services";
4
5
  export declare const newLambdaHttpProxy: (name: string, config: {
5
6
  settings: HttpSettings;
6
7
  routes: Route[];
8
+ mapper?: (request: IncomingMessage, body: string) => Promise<APIGatewayProxyEvent>;
7
9
  }, callback?: Callback<string>) => Service<string>;
8
10
  export type Route = {
9
11
  method: RegExp;
@@ -42,25 +42,29 @@ var http_server_1 = require("./http-server");
42
42
  var mappers_1 = require("./mappers");
43
43
  var responses_1 = require("./responses");
44
44
  var services_1 = require("./services");
45
- var newLambdaHttpProxy = function (name, config, callback) { return new services_1.Service(new LambdaHttpProxy(name, config.settings, config.routes), callback); };
45
+ var newLambdaHttpProxy = function (name, config, callback) { var _a; return new services_1.Service(new LambdaHttpProxy(name, config.settings, config.routes, (_a = config.mapper) !== null && _a !== void 0 ? _a : mappers_1.mapToLambdaEvent), callback); };
46
46
  exports.newLambdaHttpProxy = newLambdaHttpProxy;
47
47
  var LambdaHttpProxy = /** @class */ (function () {
48
- function LambdaHttpProxy(name, settings, routes) {
48
+ function LambdaHttpProxy(name, settings, routes, mapper) {
49
49
  var _this = this;
50
50
  this.name = name;
51
51
  this.routes = routes;
52
+ this.mapper = mapper;
52
53
  this.start = function () { return _this.server.start(); };
53
54
  this.stop = function () { return _this.server.stop(); };
54
55
  this.handler = function (lambdaHandler) {
55
56
  return function (request, body, response) {
56
- return lambdaHandler((0, mappers_1.mapToLambdaEvent)(request, body))
57
- .then(function (lambda) {
58
- var _a, _b, _c, _d, _e, _f;
59
- return (0, responses_1.writeResponse)(response, lambda.statusCode, lambda.body, (_c = (_b = (_a = lambda.headers) === null || _a === void 0 ? void 0 : _a['Content-Type']) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : undefined, (_f = (_e = (_d = lambda.headers) === null || _d === void 0 ? void 0 : _d['Location']) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : undefined);
60
- })
61
- .catch(function (e) {
62
- _this.LOGGER.error(e, 'request failed to execute');
63
- (0, responses_1.internalServerError)(response, e.body);
57
+ return _this.mapper(request, body)
58
+ .then(function (mapper) {
59
+ return lambdaHandler(mapper)
60
+ .then(function (lambda) {
61
+ var _a, _b, _c, _d, _e, _f;
62
+ return (0, responses_1.writeResponse)(response, lambda.statusCode, lambda.body, (_c = (_b = (_a = lambda.headers) === null || _a === void 0 ? void 0 : _a['Content-Type']) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : undefined, (_f = (_e = (_d = lambda.headers) === null || _d === void 0 ? void 0 : _d['Location']) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : undefined);
63
+ })
64
+ .catch(function (e) {
65
+ _this.LOGGER.error(e, 'request failed to execute');
66
+ (0, responses_1.internalServerError)(response, e.body);
67
+ });
64
68
  });
65
69
  };
66
70
  };
@@ -3,4 +3,4 @@ import { Message } from "@aws-sdk/client-sqs";
3
3
  import { APIGatewayProxyEvent, SQSRecord } from "aws-lambda";
4
4
  import { IncomingMessage } from "http";
5
5
  export declare const mapToLambdaSqsRecord: (message: Message) => SQSRecord;
6
- export declare function mapToLambdaEvent(req: IncomingMessage, requestBody: string): APIGatewayProxyEvent;
6
+ export declare function mapToLambdaEvent(req: IncomingMessage, requestBody: string): Promise<APIGatewayProxyEvent>;
@@ -39,7 +39,7 @@ function mapToLambdaEvent(req, requestBody) {
39
39
  headers['accept'] = req.headers['accept'];
40
40
  if (req.headers['authorization'])
41
41
  headers['authorization'] = req.headers['authorization'];
42
- return {
42
+ return Promise.resolve({
43
43
  httpMethod: req.method,
44
44
  body: requestBody,
45
45
  headers: headers,
@@ -87,7 +87,7 @@ function mapToLambdaEvent(req, requestBody) {
87
87
  resourcePath: '',
88
88
  stage: '',
89
89
  },
90
- };
90
+ });
91
91
  }
92
92
  exports.mapToLambdaEvent = mapToLambdaEvent;
93
93
  function extractClaims(req) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yopdev/dev-server",
3
- "version": "1.3.8",
3
+ "version": "1.3.10",
4
4
  "scripts": {
5
5
  "compile": "tsc",
6
6
  "pretest": "npm run compile",