@smartsheet-extensions/handler 0.1.0 → 1.0.0-alpha.3

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.
package/README.md CHANGED
@@ -31,7 +31,7 @@ This will export a function that:
31
31
 
32
32
  # Enhancers
33
33
 
34
- The handler by itself can't do much, but enhancers can be used to extend the functionality of the handler from defining the transport interface to applying middleware and handling business logic. The library comes with some useful enhancers built in.
34
+ The handler by itself can't do much, but enhancers can be used to extend the functionality of the handler from defining the transport interface to applying middleware and handling business logic. The library comes with some useful enhancers built in.
35
35
 
36
36
  ### `httpTransport`
37
37
 
@@ -89,3 +89,4 @@ return () => respond => {
89
89
  // execute after handler responds
90
90
  };
91
91
  ```
92
+
@@ -0,0 +1,3 @@
1
+ import { ExtensionHandlerEnhancer } from '../handler';
2
+ export declare const handleBigPayLoad: ExtensionHandlerEnhancer;
3
+ //# sourceMappingURL=handleBigPayLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleBigPayLoad.d.ts","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAmDtD,eAAO,MAAM,gBAAgB,EAAE,wBAqB9B,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ // @ts-ignore
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.handleBigPayLoad = void 0;
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const S3_EXECUTION = 's3Execution';
19
+ const STREAM_EXECUTION = 'streamExecution';
20
+ const getPayloadFromS3 = (url) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const resp = yield axios_1.default.get(url);
22
+ return resp.data;
23
+ });
24
+ const putPayloadToS3 = (url, payload) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const headers = new Headers({ 'Content-Type': 'application/json' });
26
+ const resp = yield axios_1.default.post(url, {
27
+ method: 'POST',
28
+ headers,
29
+ body: payload,
30
+ });
31
+ return resp.data;
32
+ });
33
+ const isStreamExecution = (payload) => {
34
+ if (payload.meta !== undefined && payload.meta.type !== undefined) {
35
+ return payload.meta.type === STREAM_EXECUTION;
36
+ }
37
+ };
38
+ const isS3Execution = (payload) => {
39
+ if (payload.meta !== undefined && payload.meta.type !== undefined) {
40
+ return payload.meta.type === S3_EXECUTION;
41
+ }
42
+ };
43
+ exports.handleBigPayLoad = create => {
44
+ return () => {
45
+ const handler = create();
46
+ return (payload, callback) => {
47
+ if (isS3Execution(payload)) {
48
+ getPayloadFromS3(payload.body.getUrl)
49
+ .then(resultFromS3 => {
50
+ handler(resultFromS3, (err, result) => {
51
+ putPayloadToS3(payload.body.postUrl, result)
52
+ .then(resultNext => callback(err, resultNext))
53
+ .catch(callback);
54
+ });
55
+ })
56
+ .catch(callback);
57
+ }
58
+ else if (isStreamExecution(payload)) {
59
+ handler(payload.body.payload, callback);
60
+ }
61
+ else {
62
+ handler(payload, callback);
63
+ }
64
+ };
65
+ };
66
+ };
67
+ //# sourceMappingURL=handleBigPayLoad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleBigPayLoad.js","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":";AAAA,aAAa;;;;;;;;;;;;;;;AAEb,kDAA0B;AAG1B,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAE3C,MAAM,gBAAgB,GAAG,CAAO,GAAW,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,CAAO,GAAW,EAAE,OAAY,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACjC,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC,CAAA,CAAC;AAsBF,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAA8B,EAAE;IACrE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QACjE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC;KAC/C;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAY,EAA0B,EAAE;IAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QACjE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;KAC3C;AACH,CAAC,CAAC;AACW,QAAA,gBAAgB,GAA6B,MAAM,CAAC,EAAE;IACjE,OAAO,GAAG,EAAE;QACV,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC3B,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;gBAC1B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;qBAClC,IAAI,CAAC,YAAY,CAAC,EAAE;oBACnB,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAW,EAAE,EAAE;wBACzC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;6BACzC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;6BAC7C,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACrB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,QAAQ,CAAC,CAAC;aACpB;iBAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACzC;iBAAM;gBACL,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './enhancers/handlePromises';
4
4
  export * from './enhancers/handleThunks';
5
5
  export * from './enhancers/toSerializableObject';
6
6
  export * from './enhancers/xorHandler';
7
+ export * from './enhancers/handleBigPayLoad';
7
8
  export * from './errors/AbstractError';
8
9
  export * from './errors/BadRequestError';
9
10
  export * from './errors/ExtensionError';
@@ -14,6 +15,7 @@ export * from './handler';
14
15
  export * from './responses/ErrorResponse';
15
16
  export * from './responses/ExtensionResponse';
16
17
  export * from './transports/httpTransport';
18
+ export * from './transports/lambdaTransport';
17
19
  export * from './utils/compose';
18
20
  export * from './utils/serializable';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
package/lib/index.js CHANGED
@@ -16,6 +16,7 @@ __exportStar(require("./enhancers/handlePromises"), exports);
16
16
  __exportStar(require("./enhancers/handleThunks"), exports);
17
17
  __exportStar(require("./enhancers/toSerializableObject"), exports);
18
18
  __exportStar(require("./enhancers/xorHandler"), exports);
19
+ __exportStar(require("./enhancers/handleBigPayLoad"), exports);
19
20
  __exportStar(require("./errors/AbstractError"), exports);
20
21
  __exportStar(require("./errors/BadRequestError"), exports);
21
22
  __exportStar(require("./errors/ExtensionError"), exports);
@@ -26,6 +27,7 @@ __exportStar(require("./handler"), exports);
26
27
  __exportStar(require("./responses/ErrorResponse"), exports);
27
28
  __exportStar(require("./responses/ExtensionResponse"), exports);
28
29
  __exportStar(require("./transports/httpTransport"), exports);
30
+ __exportStar(require("./transports/lambdaTransport"), exports);
29
31
  __exportStar(require("./utils/compose"), exports);
30
32
  __exportStar(require("./utils/serializable"), exports);
31
33
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAA8C;AAC9C,yDAAuC;AACvC,6DAA2C;AAC3C,2DAAyC;AACzC,mEAAiD;AACjD,yDAAuC;AACvC,yDAAuC;AACvC,2DAAyC;AACzC,0DAAwC;AACxC,yDAAuC;AACvC,yDAAuC;AACvC,yDAAuC;AACvC,4CAA0B;AAC1B,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAC3C,kDAAgC;AAChC,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAA8C;AAC9C,yDAAuC;AACvC,6DAA2C;AAC3C,2DAAyC;AACzC,mEAAiD;AACjD,yDAAuC;AACvC,+DAA6C;AAC7C,yDAAuC;AACvC,2DAAyC;AACzC,0DAAwC;AACxC,yDAAuC;AACvC,yDAAuC;AACvC,yDAAuC;AACvC,4CAA0B;AAC1B,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAC3C,+DAA6C;AAC7C,kDAAgC;AAChC,uDAAqC"}
@@ -0,0 +1,14 @@
1
+ import { Handler } from 'aws-lambda';
2
+ import { ExtensionHandlerEnhancer } from '../handler';
3
+ export declare type ExtensionLambdaHandler = Handler<ExtensionEvent, ExtensionResult>;
4
+ export declare type ExtensionEvent = any;
5
+ export declare type ExtensionResult = any;
6
+ /**
7
+ * This enhancer will return a function that takes a `event` and a `Context`
8
+ * and passes the `body` parameter from the request through to the handler (or
9
+ * next enhancer).
10
+ *
11
+ * **Note**: Should always be the first enhancer given and shouldn't be used with any other transport enhancers.
12
+ */
13
+ export declare const lambdaTransport: ExtensionHandlerEnhancer<ExtensionLambdaHandler>;
14
+ //# sourceMappingURL=lambdaTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdaTransport.d.ts","sourceRoot":"","sources":["../../src/transports/lambdaTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,oBAAY,sBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC9E,oBAAY,cAAc,GAAG,GAAG,CAAC;AACjC,oBAAY,eAAe,GAAG,GAAG,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,wBAAwB,CAAC,sBAAsB,CA8B5E,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lambdaTransport = void 0;
4
+ const InternalError_1 = require("../errors/InternalError");
5
+ const normalizeError_1 = require("../utils/normalizeError");
6
+ /**
7
+ * This enhancer will return a function that takes a `event` and a `Context`
8
+ * and passes the `body` parameter from the request through to the handler (or
9
+ * next enhancer).
10
+ *
11
+ * **Note**: Should always be the first enhancer given and shouldn't be used with any other transport enhancers.
12
+ */
13
+ exports.lambdaTransport = create => () => {
14
+ const handler = create();
15
+ return (event, context, callback) => {
16
+ const normalizeErrorAndRespond = (e) => {
17
+ const error = normalizeError_1.normalizeError(e);
18
+ if (callback) {
19
+ callback(null, error.toJSON());
20
+ }
21
+ };
22
+ try {
23
+ if (event === undefined || event === null) {
24
+ throw new InternalError_1.InternalError('Lambda event can not be undefined or null.');
25
+ }
26
+ if (context === undefined || context === null) {
27
+ throw new InternalError_1.InternalError('Lambda context can not be undefined or null.');
28
+ }
29
+ handler(event, (err, result) => {
30
+ if (err) {
31
+ normalizeErrorAndRespond(err);
32
+ }
33
+ else {
34
+ callback(null, result);
35
+ }
36
+ });
37
+ }
38
+ catch (err) {
39
+ normalizeErrorAndRespond(err);
40
+ }
41
+ };
42
+ };
43
+ //# sourceMappingURL=lambdaTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdaTransport.js","sourceRoot":"","sources":["../../src/transports/lambdaTransport.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AAExD,4DAAyD;AAMzD;;;;;;GAMG;AACU,QAAA,eAAe,GAAqD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;IAC9F,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAClC,MAAM,wBAAwB,GAAG,CAAC,CAAM,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,+BAAc,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;aAChC;QACH,CAAC,CAAC;QAEF,IAAI;YACF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzC,MAAM,IAAI,6BAAa,CAAC,4CAA4C,CAAC,CAAC;aACvE;YAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE;gBAC7C,MAAM,IAAI,6BAAa,CAAC,8CAA8C,CAAC,CAAC;aACzE;YAED,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7B,IAAI,GAAG,EAAE;oBACP,wBAAwB,CAAC,GAAG,CAAC,CAAC;iBAC/B;qBAAM;oBACL,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;SACJ;QAAC,OAAO,GAAG,EAAE;YACZ,wBAAwB,CAAC,GAAG,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartsheet-extensions/handler",
3
- "version": "0.1.0",
3
+ "version": "1.0.0-alpha.3",
4
4
  "license": "Apache-2.0",
5
5
  "description": "",
6
6
  "main": "./lib/index.js",
@@ -11,6 +11,7 @@
11
11
  },
12
12
  "author": "graeme.cassels@smartsheet.com",
13
13
  "devDependencies": {
14
+ "@types/aws-lambda": "^8.10.89",
14
15
  "@types/supertest": "^2.0.8",
15
16
  "body-parser": "^1.19.0",
16
17
  "express": "^4.17.1",
@@ -18,6 +19,7 @@
18
19
  "supertest": "^4.0.2"
19
20
  },
20
21
  "dependencies": {
21
- "@types/express": "^4.17.0"
22
+ "@types/express": "^4.17.0",
23
+ "axios": "^0.26.1"
22
24
  }
23
25
  }