@whook/gcp-functions 13.1.0 → 13.1.2
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 +39 -6
- package/dist/services/_autoload.js +5 -5
- package/dist/services/_autoload.js.map +1 -1
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.d.ts +4 -6
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js +30 -27
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +1 -1
- package/package.json +3 -3
- package/src/services/_autoload.ts +5 -5
- package/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts +36 -36
package/README.md
CHANGED
|
@@ -192,10 +192,36 @@ There is a complete example on how to deploy your functions
|
|
|
192
192
|
[//]: # (::contents:end)
|
|
193
193
|
|
|
194
194
|
# API
|
|
195
|
-
|
|
195
|
+
## Functions
|
|
196
196
|
|
|
197
|
-
|
|
198
|
-
|
|
197
|
+
<dl>
|
|
198
|
+
<dt><a href="#initHandler">initHandler(services)</a> ⇒ <code>Promise.<function()></code></dt>
|
|
199
|
+
<dd><p>Initialize one Whook handler</p>
|
|
200
|
+
</dd>
|
|
201
|
+
<dt><a href="#initWrapHandlerForGoogleHTTPFunction">initWrapHandlerForGoogleHTTPFunction(services)</a> ⇒ <code>Promise.<Object></code></dt>
|
|
202
|
+
<dd><p>Wrap an handler to make it work with GCP Functions.</p>
|
|
203
|
+
</dd>
|
|
204
|
+
</dl>
|
|
205
|
+
|
|
206
|
+
<a name="initHandler"></a>
|
|
207
|
+
|
|
208
|
+
## initHandler(services) ⇒ <code>Promise.<function()></code>
|
|
209
|
+
Initialize one Whook handler
|
|
210
|
+
|
|
211
|
+
**Kind**: global function
|
|
212
|
+
**Returns**: <code>Promise.<function()></code> - A promise of the `HANDLERS` hash.
|
|
213
|
+
|
|
214
|
+
| Param | Type | Default | Description |
|
|
215
|
+
| --- | --- | --- | --- |
|
|
216
|
+
| services | <code>Object</code> | | The services `$autoload` depends on |
|
|
217
|
+
| services.WRAPPERS | <code>Array</code> | | An optional list of wrappers to inject |
|
|
218
|
+
| [services.log] | <code>Object</code> | <code>noop</code> | An optional logging service |
|
|
219
|
+
| services.HANDLERS | <code>Object</code> | | The rest is a hash of handlers mapped by their operation id |
|
|
220
|
+
|
|
221
|
+
<a name="initWrapHandlerForGoogleHTTPFunction"></a>
|
|
222
|
+
|
|
223
|
+
## initWrapHandlerForGoogleHTTPFunction(services) ⇒ <code>Promise.<Object></code>
|
|
224
|
+
Wrap an handler to make it work with GCP Functions.
|
|
199
225
|
|
|
200
226
|
**Kind**: global function
|
|
201
227
|
**Returns**: <code>Promise.<Object></code> - A promise of an object containing the reshaped env vars.
|
|
@@ -203,10 +229,17 @@ Wrap an handler to make it work with cron AWS Lambda.
|
|
|
203
229
|
| Param | Type | Default | Description |
|
|
204
230
|
| --- | --- | --- | --- |
|
|
205
231
|
| services | <code>Object</code> | | The services the wrapper depends on |
|
|
206
|
-
| services.ENV | <code>Object</code> | | The process environment |
|
|
207
232
|
| services.OPERATION_API | <code>Object</code> | | An OpenAPI definitition for that handler |
|
|
208
|
-
| services.
|
|
209
|
-
|
|
|
233
|
+
| services.ENV | <code>Object</code> | | The process environment |
|
|
234
|
+
| services.DEBUG_NODE_ENVS | <code>Object</code> | | The NODE_ENV values that trigger debugging |
|
|
235
|
+
| services.DECODERS | <code>Object</code> | | Request body decoders available |
|
|
236
|
+
| services.ENCODERS | <code>Object</code> | | Response body encoders available |
|
|
237
|
+
| services.PARSERS | <code>Object</code> | | Request body parsers available |
|
|
238
|
+
| services.STRINGIFYERS | <code>Object</code> | | Response body stringifyers available |
|
|
239
|
+
| services.BUFFER_LIMIT | <code>Object</code> | | The buffer size limit |
|
|
240
|
+
| services.QUERY_PARSER | <code>Object</code> | | The query parser to use |
|
|
241
|
+
| services.obfuscator | <code>Object</code> | | A service to hide sensible values |
|
|
242
|
+
| services.errorHandler | <code>Object</code> | | A service that changes any error to Whook response |
|
|
210
243
|
| [services.log] | <code>Object</code> | <code>noop</code> | An optional logging service |
|
|
211
244
|
|
|
212
245
|
|
|
@@ -16,20 +16,20 @@ const initializerWrapper = (async ({ BUILD_CONSTANTS = {}, $injector, $instance,
|
|
|
16
16
|
let OPERATION_APIS;
|
|
17
17
|
const getAPIOperation = (() => {
|
|
18
18
|
return async (serviceName) => {
|
|
19
|
+
const cleanedName = serviceName.split('_').pop();
|
|
19
20
|
// eslint-disable-next-line
|
|
20
21
|
API = API || (await $injector(['API'])).API;
|
|
21
22
|
// eslint-disable-next-line
|
|
22
23
|
OPERATION_APIS =
|
|
23
24
|
OPERATION_APIS ||
|
|
24
25
|
getOpenAPIOperations(API);
|
|
25
|
-
const OPERATION = OPERATION_APIS.find((operation) =>
|
|
26
|
+
const OPERATION = OPERATION_APIS.find((operation) => cleanedName ===
|
|
26
27
|
(((operation['x-whook'] || {}).sourceOperationId &&
|
|
27
|
-
'
|
|
28
|
-
|
|
29
|
-
'OPERATION_API_' + operation.operationId) +
|
|
28
|
+
(operation['x-whook'] || {}).sourceOperationId) ||
|
|
29
|
+
operation.operationId) +
|
|
30
30
|
((operation['x-whook'] || {}).suffix || ''));
|
|
31
31
|
if (!OPERATION) {
|
|
32
|
-
log('error', '💥 - Unable to find a
|
|
32
|
+
log('error', '💥 - Unable to find a function operation definition!');
|
|
33
33
|
throw new YError('E_OPERATION_NOT_FOUND', serviceName);
|
|
34
34
|
}
|
|
35
35
|
// eslint-disable-next-line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_autoload.js","sourceRoot":"","sources":["../../src/services/_autoload.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,aAAa,EACb,oBAAoB,EAEpB,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,oCAAoC,MAAM,iDAAiD,CAAC;AAuBnG,MAAM,CAAC,MAAM,YAAY,GAMrB;IACF,IAAI,EAAE;QACJ,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,oCAA2C;KACzD;CACF,CAAC;AAEF,MAAM,kBAAkB,GAGpB,CAAC,KAAK,EACR,EACE,eAAe,GAAG,EAAE,EACpB,SAAS,EACT,SAAS,EACT,OAAO,EACP,GAAG,GAAG,IAAI,GAC+B,EAC3C,SAAyD,EAMzD,EAAE;IACF,IAAI,GAAuB,CAAC;IAC5B,IAAI,cAAuE,CAAC;IAC5E,MAAM,eAAe,GAQjB,CAAC,GAAG,EAAE;QACR,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE;YAC3B,2BAA2B;YAC3B,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,2BAA2B;YAC3B,cAAc;gBACZ,cAAc;oBACd,oBAAoB,CAAqC,GAAG,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CACnC,CAAC,SAAS,EAAE,EAAE,CACZ,WAAW;gBACX,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB;oBAC9C,
|
|
1
|
+
{"version":3,"file":"_autoload.js","sourceRoot":"","sources":["../../src/services/_autoload.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
import { DEFAULT_PARSERS, DEFAULT_STRINGIFYERS, DEFAULT_DECODERS, DEFAULT_ENCODERS } from '@whook/http-router';
|
|
3
3
|
import stream from 'stream';
|
|
4
4
|
import type { WhookQueryStringParser } from '@whook/http-router';
|
|
5
|
-
import type { WhookResponse, WhookHandler, WhookObfuscatorService, WhookOperation, WhookWrapper } from '@whook/whook';
|
|
6
|
-
import type {
|
|
5
|
+
import type { WhookResponse, WhookHandler, WhookObfuscatorService, WhookOperation, WhookWrapper, WhookErrorHandler } from '@whook/whook';
|
|
6
|
+
import type { LogService } from 'common-services';
|
|
7
7
|
import type { OpenAPIV3 } from 'openapi-types';
|
|
8
|
-
import type { CORSConfig } from '@whook/cors';
|
|
9
8
|
import type { AppEnvVars } from 'application-services';
|
|
10
9
|
export type WhookWrapHTTPFunctionDependencies = {
|
|
11
|
-
|
|
10
|
+
OPERATION_API: OpenAPIV3.Document;
|
|
12
11
|
ENV: AppEnvVars;
|
|
13
12
|
DEBUG_NODE_ENVS?: string[];
|
|
14
13
|
DECODERS?: typeof DEFAULT_DECODERS;
|
|
@@ -18,9 +17,8 @@ export type WhookWrapHTTPFunctionDependencies = {
|
|
|
18
17
|
QUERY_PARSER: WhookQueryStringParser;
|
|
19
18
|
BUFFER_LIMIT?: string;
|
|
20
19
|
obfuscator: WhookObfuscatorService;
|
|
21
|
-
|
|
20
|
+
errorHandler: WhookErrorHandler;
|
|
22
21
|
log?: LogService;
|
|
23
|
-
OPERATION_API: OpenAPIV3.Document;
|
|
24
22
|
};
|
|
25
23
|
declare const _default: import("knifecycle").ServiceInitializer<WhookWrapHTTPFunctionDependencies, WhookWrapper<WhookHandler<import("knifecycle").Parameters, WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | stream.Readable | import("type-fest").JsonValue>, WhookOperation<Record<string, unknown>>>>>;
|
|
26
24
|
export default _default;
|
|
@@ -15,20 +15,34 @@ const PATH_SEPARATOR = '/';
|
|
|
15
15
|
* Wrap an handler to make it work with GCP Functions.
|
|
16
16
|
* @param {Object} services
|
|
17
17
|
* The services the wrapper depends on
|
|
18
|
-
* @param {Object} services.ENV
|
|
19
|
-
* The process environment
|
|
20
18
|
* @param {Object} services.OPERATION_API
|
|
21
19
|
* An OpenAPI definitition for that handler
|
|
22
|
-
* @param {Object} services.
|
|
23
|
-
* The
|
|
24
|
-
* @param {Object}
|
|
25
|
-
*
|
|
20
|
+
* @param {Object} services.ENV
|
|
21
|
+
* The process environment
|
|
22
|
+
* @param {Object} services.DEBUG_NODE_ENVS
|
|
23
|
+
* The NODE_ENV values that trigger debugging
|
|
24
|
+
* @param {Object} services.DECODERS
|
|
25
|
+
* Request body decoders available
|
|
26
|
+
* @param {Object} services.ENCODERS
|
|
27
|
+
* Response body encoders available
|
|
28
|
+
* @param {Object} services.PARSERS
|
|
29
|
+
* Request body parsers available
|
|
30
|
+
* @param {Object} services.STRINGIFYERS
|
|
31
|
+
* Response body stringifyers available
|
|
32
|
+
* @param {Object} services.BUFFER_LIMIT
|
|
33
|
+
* The buffer size limit
|
|
34
|
+
* @param {Object} services.QUERY_PARSER
|
|
35
|
+
* The query parser to use
|
|
36
|
+
* @param {Object} services.obfuscator
|
|
37
|
+
* A service to hide sensible values
|
|
38
|
+
* @param {Object} services.errorHandler
|
|
39
|
+
* A service that changes any error to Whook response
|
|
26
40
|
* @param {Object} [services.log=noop]
|
|
27
41
|
* An optional logging service
|
|
28
42
|
* @return {Promise<Object>}
|
|
29
43
|
* A promise of an object containing the reshaped env vars.
|
|
30
44
|
*/
|
|
31
|
-
async function initWrapHandlerForGoogleHTTPFunction({ OPERATION_API, ENV, DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS,
|
|
45
|
+
async function initWrapHandlerForGoogleHTTPFunction({ OPERATION_API, ENV, DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS, DECODERS = DEFAULT_DECODERS, ENCODERS = DEFAULT_ENCODERS, PARSERS = DEFAULT_PARSERS, STRINGIFYERS = DEFAULT_STRINGIFYERS, BUFFER_LIMIT = DEFAULT_BUFFER_LIMIT, QUERY_PARSER, obfuscator, errorHandler, log = noop, }) {
|
|
32
46
|
log('debug', '📥 - Initializing the AWS Lambda cron wrapper.');
|
|
33
47
|
const path = Object.keys(OPERATION_API.paths)[0];
|
|
34
48
|
const pathObject = OPERATION_API.paths[path];
|
|
@@ -66,9 +80,6 @@ async function initWrapHandlerForGoogleHTTPFunction({ OPERATION_API, ENV, DEBUG_
|
|
|
66
80
|
const bodyValidator = prepareBodyValidator(ajv, operation);
|
|
67
81
|
const wrapper = async (handler) => {
|
|
68
82
|
const wrappedHandler = handleForAWSHTTPFunction.bind(null, {
|
|
69
|
-
ENV,
|
|
70
|
-
DEBUG_NODE_ENVS,
|
|
71
|
-
CORS,
|
|
72
83
|
DECODERS,
|
|
73
84
|
ENCODERS,
|
|
74
85
|
PARSERS,
|
|
@@ -76,6 +87,7 @@ async function initWrapHandlerForGoogleHTTPFunction({ OPERATION_API, ENV, DEBUG_
|
|
|
76
87
|
BUFFER_LIMIT,
|
|
77
88
|
QUERY_PARSER,
|
|
78
89
|
obfuscator,
|
|
90
|
+
errorHandler,
|
|
79
91
|
log,
|
|
80
92
|
}, {
|
|
81
93
|
consumableMediaTypes,
|
|
@@ -90,8 +102,7 @@ async function initWrapHandlerForGoogleHTTPFunction({ OPERATION_API, ENV, DEBUG_
|
|
|
90
102
|
};
|
|
91
103
|
return wrapper;
|
|
92
104
|
}
|
|
93
|
-
async function handleForAWSHTTPFunction({
|
|
94
|
-
const debugging = (DEBUG_NODE_ENVS || []).includes(ENV.NODE_ENV);
|
|
105
|
+
async function handleForAWSHTTPFunction({ DECODERS, ENCODERS, PARSERS, STRINGIFYERS, BUFFER_LIMIT, QUERY_PARSER, obfuscator, errorHandler, log, }, { consumableMediaTypes, produceableMediaTypes, consumableCharsets, produceableCharsets, validators, bodyValidator, operation, }, handler, req, res) {
|
|
95
106
|
const bufferLimit = bytes.parse(BUFFER_LIMIT);
|
|
96
107
|
log?.('info', 'GCP_FUNCTIONS_REQUEST', JSON.stringify({
|
|
97
108
|
url: req.originalUrl,
|
|
@@ -195,29 +206,21 @@ async function handleForAWSHTTPFunction({ ENV, DEBUG_NODE_ENVS = DEFAULT_DEBUG_N
|
|
|
195
206
|
log?.('debug', JSON.stringify(responseLog));
|
|
196
207
|
}
|
|
197
208
|
catch (err) {
|
|
198
|
-
|
|
209
|
+
response = await errorHandler('none', responseSpec, err);
|
|
199
210
|
responseLog = {
|
|
200
211
|
type: 'error',
|
|
201
|
-
code:
|
|
202
|
-
statusCode:
|
|
203
|
-
params:
|
|
204
|
-
stack: printStackTrace(
|
|
212
|
+
code: err?.code || 'E_UNEXPECTED',
|
|
213
|
+
statusCode: response.status,
|
|
214
|
+
params: err?.params || [],
|
|
215
|
+
stack: printStackTrace(err),
|
|
205
216
|
};
|
|
206
217
|
log?.('error', JSON.stringify(responseLog));
|
|
207
218
|
response = {
|
|
208
|
-
|
|
219
|
+
...response,
|
|
209
220
|
headers: {
|
|
210
|
-
...
|
|
211
|
-
...(castedError.headers ?? {}),
|
|
221
|
+
...response.headers,
|
|
212
222
|
'content-type': 'application/json',
|
|
213
223
|
},
|
|
214
|
-
body: {
|
|
215
|
-
error: {
|
|
216
|
-
code: castedError.code,
|
|
217
|
-
stack: debugging ? responseLog.stack : undefined,
|
|
218
|
-
params: debugging ? responseLog.params : undefined,
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
224
|
};
|
|
222
225
|
}
|
|
223
226
|
log?.('debug', 'RESPONSE', JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapHandlerForGoogleHTTPFunction.js","sourceRoot":"","sources":["../../src/wrappers/wrapHandlerForGoogleHTTPFunction.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kCAAkC,EAClC,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,aAAa,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,4BAA4B,EAC5B,2BAA2B,EAC3B,OAAO,EACP,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAgB5B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"wrapHandlerForGoogleHTTPFunction.js","sourceRoot":"","sources":["../../src/wrappers/wrapHandlerForGoogleHTTPFunction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"name": "@whook/gcp-functions",
|
|
32
|
-
"version": "13.1.
|
|
32
|
+
"version": "13.1.2",
|
|
33
33
|
"description": "Build and deploy to GCP Cloud Functions with Whook.",
|
|
34
34
|
"type": "module",
|
|
35
35
|
"main": "dist/index.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"homepage": "https://github.com/nfroidure/whook",
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@whook/cors": "^13.1.
|
|
52
|
+
"@whook/cors": "^13.1.2",
|
|
53
53
|
"@whook/http-router": "^13.1.0",
|
|
54
54
|
"@whook/whook": "^13.1.0",
|
|
55
55
|
"ajv": "^8.12.0",
|
|
@@ -171,5 +171,5 @@
|
|
|
171
171
|
"test": "npm run jest",
|
|
172
172
|
"type-check": "tsc --pretty --noEmit"
|
|
173
173
|
},
|
|
174
|
-
"gitHead": "
|
|
174
|
+
"gitHead": "3d0b9334beef4cc3a23e2b82cf94b036658b7e59"
|
|
175
175
|
}
|
|
@@ -80,6 +80,7 @@ const initializerWrapper: ServiceInitializerWrapper<
|
|
|
80
80
|
]
|
|
81
81
|
> = (() => {
|
|
82
82
|
return async (serviceName) => {
|
|
83
|
+
const cleanedName = serviceName.split('_').pop();
|
|
83
84
|
// eslint-disable-next-line
|
|
84
85
|
API = API || (await $injector(['API'])).API;
|
|
85
86
|
// eslint-disable-next-line
|
|
@@ -89,16 +90,15 @@ const initializerWrapper: ServiceInitializerWrapper<
|
|
|
89
90
|
|
|
90
91
|
const OPERATION = OPERATION_APIS.find(
|
|
91
92
|
(operation) =>
|
|
92
|
-
|
|
93
|
+
cleanedName ===
|
|
93
94
|
(((operation['x-whook'] || {}).sourceOperationId &&
|
|
94
|
-
'
|
|
95
|
-
|
|
96
|
-
'OPERATION_API_' + operation.operationId) +
|
|
95
|
+
(operation['x-whook'] || {}).sourceOperationId) ||
|
|
96
|
+
operation.operationId) +
|
|
97
97
|
((operation['x-whook'] || {}).suffix || ''),
|
|
98
98
|
);
|
|
99
99
|
|
|
100
100
|
if (!OPERATION) {
|
|
101
|
-
log('error', '💥 - Unable to find a
|
|
101
|
+
log('error', '💥 - Unable to find a function operation definition!');
|
|
102
102
|
throw new YError('E_OPERATION_NOT_FOUND', serviceName);
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -40,18 +40,18 @@ import type {
|
|
|
40
40
|
WhookObfuscatorService,
|
|
41
41
|
WhookOperation,
|
|
42
42
|
WhookWrapper,
|
|
43
|
+
WhookErrorHandler,
|
|
43
44
|
} from '@whook/whook';
|
|
44
|
-
import type {
|
|
45
|
+
import type { LogService } from 'common-services';
|
|
45
46
|
import type { OpenAPIV3 } from 'openapi-types';
|
|
46
47
|
import type { Readable } from 'stream';
|
|
47
|
-
import type { CORSConfig } from '@whook/cors';
|
|
48
48
|
import type { AppEnvVars } from 'application-services';
|
|
49
49
|
|
|
50
50
|
const SEARCH_SEPARATOR = '?';
|
|
51
51
|
const PATH_SEPARATOR = '/';
|
|
52
52
|
|
|
53
53
|
export type WhookWrapHTTPFunctionDependencies = {
|
|
54
|
-
|
|
54
|
+
OPERATION_API: OpenAPIV3.Document;
|
|
55
55
|
ENV: AppEnvVars;
|
|
56
56
|
DEBUG_NODE_ENVS?: string[];
|
|
57
57
|
DECODERS?: typeof DEFAULT_DECODERS;
|
|
@@ -61,23 +61,36 @@ export type WhookWrapHTTPFunctionDependencies = {
|
|
|
61
61
|
QUERY_PARSER: WhookQueryStringParser;
|
|
62
62
|
BUFFER_LIMIT?: string;
|
|
63
63
|
obfuscator: WhookObfuscatorService;
|
|
64
|
-
|
|
64
|
+
errorHandler: WhookErrorHandler;
|
|
65
65
|
log?: LogService;
|
|
66
|
-
OPERATION_API: OpenAPIV3.Document;
|
|
67
66
|
};
|
|
68
67
|
|
|
69
68
|
/**
|
|
70
69
|
* Wrap an handler to make it work with GCP Functions.
|
|
71
70
|
* @param {Object} services
|
|
72
71
|
* The services the wrapper depends on
|
|
73
|
-
* @param {Object} services.ENV
|
|
74
|
-
* The process environment
|
|
75
72
|
* @param {Object} services.OPERATION_API
|
|
76
73
|
* An OpenAPI definitition for that handler
|
|
77
|
-
* @param {Object} services.
|
|
78
|
-
* The
|
|
79
|
-
* @param {Object}
|
|
80
|
-
*
|
|
74
|
+
* @param {Object} services.ENV
|
|
75
|
+
* The process environment
|
|
76
|
+
* @param {Object} services.DEBUG_NODE_ENVS
|
|
77
|
+
* The NODE_ENV values that trigger debugging
|
|
78
|
+
* @param {Object} services.DECODERS
|
|
79
|
+
* Request body decoders available
|
|
80
|
+
* @param {Object} services.ENCODERS
|
|
81
|
+
* Response body encoders available
|
|
82
|
+
* @param {Object} services.PARSERS
|
|
83
|
+
* Request body parsers available
|
|
84
|
+
* @param {Object} services.STRINGIFYERS
|
|
85
|
+
* Response body stringifyers available
|
|
86
|
+
* @param {Object} services.BUFFER_LIMIT
|
|
87
|
+
* The buffer size limit
|
|
88
|
+
* @param {Object} services.QUERY_PARSER
|
|
89
|
+
* The query parser to use
|
|
90
|
+
* @param {Object} services.obfuscator
|
|
91
|
+
* A service to hide sensible values
|
|
92
|
+
* @param {Object} services.errorHandler
|
|
93
|
+
* A service that changes any error to Whook response
|
|
81
94
|
* @param {Object} [services.log=noop]
|
|
82
95
|
* An optional logging service
|
|
83
96
|
* @return {Promise<Object>}
|
|
@@ -88,7 +101,6 @@ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
|
|
|
88
101
|
OPERATION_API,
|
|
89
102
|
ENV,
|
|
90
103
|
DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS,
|
|
91
|
-
CORS,
|
|
92
104
|
DECODERS = DEFAULT_DECODERS,
|
|
93
105
|
ENCODERS = DEFAULT_ENCODERS,
|
|
94
106
|
PARSERS = DEFAULT_PARSERS,
|
|
@@ -96,6 +108,7 @@ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
|
|
|
96
108
|
BUFFER_LIMIT = DEFAULT_BUFFER_LIMIT,
|
|
97
109
|
QUERY_PARSER,
|
|
98
110
|
obfuscator,
|
|
111
|
+
errorHandler,
|
|
99
112
|
log = noop,
|
|
100
113
|
}: WhookWrapHTTPFunctionDependencies): Promise<WhookWrapper<S>> {
|
|
101
114
|
log('debug', '📥 - Initializing the AWS Lambda cron wrapper.');
|
|
@@ -151,9 +164,6 @@ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
|
|
|
151
164
|
const wrappedHandler = handleForAWSHTTPFunction.bind(
|
|
152
165
|
null,
|
|
153
166
|
{
|
|
154
|
-
ENV,
|
|
155
|
-
DEBUG_NODE_ENVS,
|
|
156
|
-
CORS,
|
|
157
167
|
DECODERS,
|
|
158
168
|
ENCODERS,
|
|
159
169
|
PARSERS,
|
|
@@ -161,6 +171,7 @@ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
|
|
|
161
171
|
BUFFER_LIMIT,
|
|
162
172
|
QUERY_PARSER,
|
|
163
173
|
obfuscator,
|
|
174
|
+
errorHandler,
|
|
164
175
|
log,
|
|
165
176
|
},
|
|
166
177
|
{
|
|
@@ -183,9 +194,6 @@ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
|
|
|
183
194
|
|
|
184
195
|
async function handleForAWSHTTPFunction(
|
|
185
196
|
{
|
|
186
|
-
ENV,
|
|
187
|
-
DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS,
|
|
188
|
-
CORS,
|
|
189
197
|
DECODERS,
|
|
190
198
|
ENCODERS,
|
|
191
199
|
PARSERS,
|
|
@@ -193,10 +201,11 @@ async function handleForAWSHTTPFunction(
|
|
|
193
201
|
BUFFER_LIMIT,
|
|
194
202
|
QUERY_PARSER,
|
|
195
203
|
obfuscator,
|
|
204
|
+
errorHandler,
|
|
196
205
|
log,
|
|
197
206
|
}: Omit<
|
|
198
207
|
Required<WhookWrapHTTPFunctionDependencies>,
|
|
199
|
-
'time' | 'OPERATION_API'
|
|
208
|
+
'time' | 'OPERATION_API' | 'ENV' | 'DEBUG_NODE_ENVS'
|
|
200
209
|
>,
|
|
201
210
|
{
|
|
202
211
|
consumableMediaTypes,
|
|
@@ -225,7 +234,6 @@ async function handleForAWSHTTPFunction(
|
|
|
225
234
|
req,
|
|
226
235
|
res,
|
|
227
236
|
) {
|
|
228
|
-
const debugging = (DEBUG_NODE_ENVS || []).includes(ENV.NODE_ENV);
|
|
229
237
|
const bufferLimit = bytes.parse(BUFFER_LIMIT);
|
|
230
238
|
|
|
231
239
|
log?.(
|
|
@@ -381,31 +389,23 @@ async function handleForAWSHTTPFunction(
|
|
|
381
389
|
};
|
|
382
390
|
log?.('debug', JSON.stringify(responseLog));
|
|
383
391
|
} catch (err) {
|
|
384
|
-
|
|
385
|
-
|
|
392
|
+
response = await errorHandler('none', responseSpec, err as Error);
|
|
386
393
|
responseLog = {
|
|
387
394
|
type: 'error',
|
|
388
|
-
code:
|
|
389
|
-
statusCode:
|
|
390
|
-
params:
|
|
391
|
-
stack: printStackTrace(
|
|
395
|
+
code: (err as YError)?.code || 'E_UNEXPECTED',
|
|
396
|
+
statusCode: response.status,
|
|
397
|
+
params: (err as YError)?.params || [],
|
|
398
|
+
stack: printStackTrace(err as Error),
|
|
392
399
|
};
|
|
393
400
|
|
|
394
401
|
log?.('error', JSON.stringify(responseLog));
|
|
402
|
+
|
|
395
403
|
response = {
|
|
396
|
-
|
|
404
|
+
...response,
|
|
397
405
|
headers: {
|
|
398
|
-
...
|
|
399
|
-
...(castedError.headers ?? {}),
|
|
406
|
+
...response.headers,
|
|
400
407
|
'content-type': 'application/json',
|
|
401
408
|
},
|
|
402
|
-
body: {
|
|
403
|
-
error: {
|
|
404
|
-
code: castedError.code,
|
|
405
|
-
stack: debugging ? responseLog.stack : undefined,
|
|
406
|
-
params: debugging ? responseLog.params : undefined,
|
|
407
|
-
},
|
|
408
|
-
},
|
|
409
409
|
};
|
|
410
410
|
}
|
|
411
411
|
|