@whook/gcp-functions 13.0.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.
Files changed (38) hide show
  1. package/README.md +76 -28
  2. package/dist/commands/testHTTPFunction.d.ts +1 -1
  3. package/dist/commands/testHTTPFunction.js +2 -2
  4. package/dist/commands/testHTTPFunction.js.map +1 -1
  5. package/dist/index.d.ts +27 -0
  6. package/dist/index.js +33 -65
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.test.js +10 -0
  9. package/dist/index.test.js.map +1 -0
  10. package/dist/libs/utils.d.ts +3 -2
  11. package/dist/libs/utils.js +2 -2
  12. package/dist/libs/utils.js.map +1 -1
  13. package/dist/services/HANDLER.d.ts +12 -0
  14. package/dist/services/HANDLER.js +21 -0
  15. package/dist/services/HANDLER.js.map +1 -0
  16. package/dist/services/_autoload.d.ts +27 -13
  17. package/dist/services/_autoload.js +79 -31
  18. package/dist/services/_autoload.js.map +1 -1
  19. package/dist/services/log.js +2 -2
  20. package/dist/services/log.js.map +1 -1
  21. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.d.ts +24 -0
  22. package/dist/wrappers/{googleHTTPFunction.js → wrapHandlerForGoogleHTTPFunction.js} +88 -77
  23. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +1 -0
  24. package/package.json +10 -9
  25. package/src/commands/testHTTPFunction.ts +3 -4
  26. package/src/index.test.ts +11 -0
  27. package/src/index.ts +43 -97
  28. package/src/libs/utils.ts +3 -2
  29. package/src/services/HANDLER.ts +41 -0
  30. package/src/services/_autoload.ts +136 -41
  31. package/src/services/log.ts +2 -2
  32. package/src/wrappers/{googleHTTPFunction.ts → wrapHandlerForGoogleHTTPFunction.ts} +153 -141
  33. package/dist/services/log.test.js +0 -8
  34. package/dist/services/log.test.js.map +0 -1
  35. package/dist/wrappers/googleHTTPFunction.d.ts +0 -22
  36. package/dist/wrappers/googleHTTPFunction.js.map +0 -1
  37. package/src/services/log.test.ts +0 -8
  38. /package/dist/{services/log.test.d.ts → index.test.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { printStackTrace } from 'yerror';
2
+ import { YError, printStackTrace } from 'yerror';
3
3
  import {
4
4
  DEFAULT_DEBUG_NODE_ENVS,
5
5
  DEFAULT_BUFFER_LIMIT,
@@ -10,7 +10,7 @@ import {
10
10
  extractOperationSecurityParameters,
11
11
  castParameters,
12
12
  } from '@whook/http-router';
13
- import { reuseSpecialProps, alsoInject } from 'knifecycle';
13
+ import { autoService } from 'knifecycle';
14
14
  import Ajv from 'ajv';
15
15
  import addAJVFormats from 'ajv-formats';
16
16
  import bytes from 'bytes';
@@ -30,106 +30,119 @@ import {
30
30
  getBody,
31
31
  sendBody,
32
32
  } from '@whook/http-router';
33
- import { noop, compose, identity, lowerCaseHeaders } from '@whook/whook';
33
+ import { noop, identity, lowerCaseHeaders } from '@whook/whook';
34
34
  import stream from 'stream';
35
35
  import type { WhookQueryStringParser } from '@whook/http-router';
36
- import type { ServiceInitializer, Dependencies, Service } from 'knifecycle';
37
36
  import type {
38
37
  WhookRequest,
39
38
  WhookResponse,
40
39
  WhookHandler,
41
- ObfuscatorService,
40
+ WhookObfuscatorService,
42
41
  WhookOperation,
43
42
  WhookWrapper,
43
+ WhookErrorHandler,
44
44
  } from '@whook/whook';
45
- import type { TimeService, LogService } from 'common-services';
45
+ import type { LogService } from 'common-services';
46
46
  import type { OpenAPIV3 } from 'openapi-types';
47
47
  import type { Readable } from 'stream';
48
- import type { CORSConfig } from '@whook/cors';
48
+ import type { AppEnvVars } from 'application-services';
49
49
 
50
- type HTTPWrapperDependencies = {
51
- NODE_ENV: string;
50
+ const SEARCH_SEPARATOR = '?';
51
+ const PATH_SEPARATOR = '/';
52
+
53
+ export type WhookWrapHTTPFunctionDependencies = {
54
+ OPERATION_API: OpenAPIV3.Document;
55
+ ENV: AppEnvVars;
52
56
  DEBUG_NODE_ENVS?: string[];
53
- OPERATION: WhookOperation;
54
57
  DECODERS?: typeof DEFAULT_DECODERS;
55
58
  ENCODERS?: typeof DEFAULT_ENCODERS;
56
59
  PARSERS?: typeof DEFAULT_PARSERS;
57
60
  STRINGIFYERS?: typeof DEFAULT_STRINGIFYERS;
58
61
  QUERY_PARSER: WhookQueryStringParser;
59
62
  BUFFER_LIMIT?: string;
60
- obfuscator: ObfuscatorService;
61
- time?: TimeService;
63
+ obfuscator: WhookObfuscatorService;
64
+ errorHandler: WhookErrorHandler;
62
65
  log?: LogService;
63
- WRAPPERS: WhookWrapper<Dependencies, Service>[];
64
66
  };
65
67
 
66
- const SEARCH_SEPARATOR = '?';
67
- const PATH_SEPARATOR = '/';
68
-
69
- export default function wrapHandlerForAWSHTTPFunction<
70
- D extends Dependencies,
71
- S extends WhookHandler,
72
- >(
73
- initHandler: ServiceInitializer<D, S>,
74
- ): ServiceInitializer<D & HTTPWrapperDependencies, S> {
75
- return alsoInject<HTTPWrapperDependencies, D, S>(
76
- [
77
- 'OPERATION_API',
78
- 'WRAPPERS',
79
- '?DEBUG_NODE_ENVS',
80
- 'NODE_ENV',
81
- '?DECODERS',
82
- '?ENCODERS',
83
- '?PARSERS',
84
- '?STRINGIFYERS',
85
- '?BUFFER_LIMIT',
86
- 'QUERY_PARSER',
87
- 'obfuscator',
88
- '?log',
89
- '?time',
90
- ],
91
- reuseSpecialProps(
92
- initHandler,
93
- (initHandlerForAWSHTTPFunction as any).bind(
94
- null,
95
- initHandler,
96
- ) as ServiceInitializer<D, S>,
97
- ),
98
- );
99
- }
68
+ /**
69
+ * Wrap an handler to make it work with GCP Functions.
70
+ * @param {Object} services
71
+ * The services the wrapper depends on
72
+ * @param {Object} services.OPERATION_API
73
+ * An OpenAPI definitition for that handler
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
94
+ * @param {Object} [services.log=noop]
95
+ * An optional logging service
96
+ * @return {Promise<Object>}
97
+ * A promise of an object containing the reshaped env vars.
98
+ */
99
+
100
+ async function initWrapHandlerForGoogleHTTPFunction<S extends WhookHandler>({
101
+ OPERATION_API,
102
+ ENV,
103
+ DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS,
104
+ DECODERS = DEFAULT_DECODERS,
105
+ ENCODERS = DEFAULT_ENCODERS,
106
+ PARSERS = DEFAULT_PARSERS,
107
+ STRINGIFYERS = DEFAULT_STRINGIFYERS,
108
+ BUFFER_LIMIT = DEFAULT_BUFFER_LIMIT,
109
+ QUERY_PARSER,
110
+ obfuscator,
111
+ errorHandler,
112
+ log = noop,
113
+ }: WhookWrapHTTPFunctionDependencies): Promise<WhookWrapper<S>> {
114
+ log('debug', '📥 - Initializing the AWS Lambda cron wrapper.');
100
115
 
101
- async function initHandlerForAWSHTTPFunction(
102
- initHandler: ServiceInitializer<Dependencies, WhookHandler>,
103
- {
104
- OPERATION_API,
105
- WRAPPERS,
106
- NODE_ENV,
107
- DEBUG_NODE_ENVS = DEFAULT_DEBUG_NODE_ENVS,
108
- DECODERS = DEFAULT_DECODERS,
109
- ENCODERS = DEFAULT_ENCODERS,
110
- log = noop,
111
- time = Date.now.bind(Date),
112
- ...services
113
- },
114
- ) {
115
116
  const path = Object.keys(OPERATION_API.paths)[0];
116
- const method = Object.keys(OPERATION_API.paths[path])[0];
117
- const OPERATION: WhookOperation = {
117
+ const pathObject = OPERATION_API.paths[path];
118
+
119
+ if (typeof pathObject === 'undefined' || '$ref' in pathObject) {
120
+ throw new YError('E_BAD_OPERATION', 'pathObject', pathObject);
121
+ }
122
+
123
+ const method = Object.keys(pathObject)[0];
124
+ const operationObject = pathObject[method];
125
+
126
+ if (typeof operationObject === 'undefined' || '$ref' in operationObject) {
127
+ throw new YError('E_BAD_OPERATION', 'operationObject', operationObject);
128
+ }
129
+
130
+ const operation: WhookOperation = {
118
131
  path,
119
132
  method,
120
- ...OPERATION_API.paths[path][method],
133
+ ...operationObject,
121
134
  };
122
135
  const consumableCharsets = Object.keys(DECODERS);
123
136
  const produceableCharsets = Object.keys(ENCODERS);
124
- const consumableMediaTypes = extractConsumableMediaTypes(OPERATION);
125
- const produceableMediaTypes = extractProduceableMediaTypes(OPERATION);
137
+ const consumableMediaTypes = extractConsumableMediaTypes(operation);
138
+ const produceableMediaTypes = extractProduceableMediaTypes(operation);
126
139
  const ajv = new Ajv.default({
127
- verbose: DEBUG_NODE_ENVS.includes(NODE_ENV),
140
+ verbose: DEBUG_NODE_ENVS.includes(ENV.NODE_ENV),
128
141
  strict: true,
129
142
  logger: {
130
- log: (...args) => log?.('debug', ...args),
131
- warn: (...args) => log?.('warning', ...args),
132
- error: (...args) => log?.('error', ...args),
143
+ log: (...args: string[]) => log?.('debug', ...args),
144
+ warn: (...args: string[]) => log?.('warning', ...args),
145
+ error: (...args: string[]) => log?.('error', ...args),
133
146
  },
134
147
  useDefaults: true,
135
148
  coerceTypes: true,
@@ -137,71 +150,63 @@ async function initHandlerForAWSHTTPFunction(
137
150
  addAJVFormats.default(ajv);
138
151
  const ammendedParameters = extractOperationSecurityParameters(
139
152
  OPERATION_API,
140
- OPERATION,
153
+ operation,
141
154
  );
142
155
  const validators = prepareParametersValidators(
143
156
  ajv,
144
- OPERATION.operationId,
145
- ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[]).concat(
157
+ operation.operationId,
158
+ ((operation.parameters || []) as OpenAPIV3.ParameterObject[]).concat(
146
159
  ammendedParameters,
147
160
  ),
148
161
  );
149
- const bodyValidator = prepareBodyValidator(ajv, OPERATION);
150
- const applyWrappers = compose(...WRAPPERS) as WhookWrapper<
151
- Dependencies,
152
- Service
153
- >;
154
-
155
- const handler = await (
156
- applyWrappers(initHandler) as ServiceInitializer<Dependencies, Service>
157
- )({
158
- OPERATION,
159
- DEBUG_NODE_ENVS,
160
- NODE_ENV,
161
- ...services,
162
- time,
163
- log,
164
- });
162
+ const bodyValidator = prepareBodyValidator(ajv, operation);
163
+ const wrapper = async (handler: S): Promise<S> => {
164
+ const wrappedHandler = handleForAWSHTTPFunction.bind(
165
+ null,
166
+ {
167
+ DECODERS,
168
+ ENCODERS,
169
+ PARSERS,
170
+ STRINGIFYERS,
171
+ BUFFER_LIMIT,
172
+ QUERY_PARSER,
173
+ obfuscator,
174
+ errorHandler,
175
+ log,
176
+ },
177
+ {
178
+ consumableMediaTypes,
179
+ produceableMediaTypes,
180
+ consumableCharsets,
181
+ produceableCharsets,
182
+ validators,
183
+ bodyValidator,
184
+ operation,
185
+ },
186
+ handler as any,
187
+ );
165
188
 
166
- return handleForAWSHTTPFunction.bind(
167
- null,
168
- {
169
- OPERATION,
170
- NODE_ENV,
171
- DEBUG_NODE_ENVS,
172
- DECODERS,
173
- ENCODERS,
174
- log,
175
- time,
176
- ...services,
177
- } as unknown as HTTPWrapperDependencies & { CORS: CORSConfig },
178
- {
179
- consumableMediaTypes,
180
- produceableMediaTypes,
181
- consumableCharsets,
182
- produceableCharsets,
183
- validators,
184
- bodyValidator,
185
- },
186
- handler,
187
- );
189
+ return wrappedHandler as unknown as S;
190
+ };
191
+
192
+ return wrapper;
188
193
  }
189
194
 
190
195
  async function handleForAWSHTTPFunction(
191
196
  {
192
- OPERATION,
193
- DEBUG_NODE_ENVS,
194
- NODE_ENV,
195
- ENCODERS,
196
197
  DECODERS,
197
- PARSERS = DEFAULT_PARSERS,
198
- STRINGIFYERS = DEFAULT_STRINGIFYERS,
199
- BUFFER_LIMIT = DEFAULT_BUFFER_LIMIT,
198
+ ENCODERS,
199
+ PARSERS,
200
+ STRINGIFYERS,
201
+ BUFFER_LIMIT,
200
202
  QUERY_PARSER,
201
- CORS,
202
- log,
203
203
  obfuscator,
204
- }: HTTPWrapperDependencies & { CORS: CORSConfig },
204
+ errorHandler,
205
+ log,
206
+ }: Omit<
207
+ Required<WhookWrapHTTPFunctionDependencies>,
208
+ 'time' | 'OPERATION_API' | 'ENV' | 'DEBUG_NODE_ENVS'
209
+ >,
205
210
  {
206
211
  consumableMediaTypes,
207
212
  produceableMediaTypes,
@@ -209,12 +214,26 @@ async function handleForAWSHTTPFunction(
209
214
  produceableCharsets,
210
215
  validators,
211
216
  bodyValidator,
217
+ operation,
218
+ }: {
219
+ consumableMediaTypes: string[];
220
+ produceableMediaTypes: string[];
221
+ consumableCharsets: string[];
222
+ produceableCharsets: string[];
223
+ validators: {
224
+ [name: string]: Ajv.ValidateFunction<unknown>;
225
+ };
226
+ bodyValidator: (
227
+ operation: WhookOperation,
228
+ contentType: string,
229
+ value: unknown,
230
+ ) => void;
231
+ operation: WhookOperation;
212
232
  },
213
233
  handler: WhookHandler,
214
234
  req,
215
235
  res,
216
236
  ) {
217
- const debugging = (DEBUG_NODE_ENVS || []).includes(NODE_ENV);
218
237
  const bufferLimit = bytes.parse(BUFFER_LIMIT);
219
238
 
220
239
  log?.(
@@ -246,7 +265,6 @@ async function handleForAWSHTTPFunction(
246
265
  );
247
266
 
248
267
  try {
249
- const operation = OPERATION;
250
268
  const bodySpec = extractBodySpec(
251
269
  request,
252
270
  consumableMediaTypes,
@@ -278,7 +296,7 @@ async function handleForAWSHTTPFunction(
278
296
  );
279
297
 
280
298
  const pathParameters = (
281
- OPERATION.path
299
+ operation.path
282
300
  .split(PATH_SEPARATOR)
283
301
  .filter(identity)
284
302
  .map((part, index) => {
@@ -302,7 +320,7 @@ async function handleForAWSHTTPFunction(
302
320
  );
303
321
 
304
322
  // TODO: Update strictQS to handle OpenAPI 3
305
- const retroCompatibleQueryParameters = (OPERATION.parameters || [])
323
+ const retroCompatibleQueryParameters = (operation.parameters || [])
306
324
  .filter((p) => p.in === 'query')
307
325
  .map((p) => ({ ...p, ...p.schema }));
308
326
 
@@ -371,31 +389,23 @@ async function handleForAWSHTTPFunction(
371
389
  };
372
390
  log?.('debug', JSON.stringify(responseLog));
373
391
  } catch (err) {
374
- const castedError = YHTTPError.cast(err as Error);
375
-
392
+ response = await errorHandler('none', responseSpec, err as Error);
376
393
  responseLog = {
377
394
  type: 'error',
378
- code: castedError.code,
379
- statusCode: castedError.httpCode,
380
- params: castedError.params || [],
381
- stack: printStackTrace(castedError),
395
+ code: (err as YError)?.code || 'E_UNEXPECTED',
396
+ statusCode: response.status,
397
+ params: (err as YError)?.params || [],
398
+ stack: printStackTrace(err as Error),
382
399
  };
383
400
 
384
401
  log?.('error', JSON.stringify(responseLog));
402
+
385
403
  response = {
386
- status: castedError.httpCode,
404
+ ...response,
387
405
  headers: {
388
- ...lowerCaseHeaders(CORS),
389
- ...(castedError.headers ?? {}),
406
+ ...response.headers,
390
407
  'content-type': 'application/json',
391
408
  },
392
- body: {
393
- error: {
394
- code: castedError.code,
395
- stack: debugging ? responseLog.stack : undefined,
396
- params: debugging ? responseLog.params : undefined,
397
- },
398
- },
399
409
  };
400
410
  }
401
411
 
@@ -468,3 +478,5 @@ function obfuscateEventBody(obfuscator, rawBody) {
468
478
  }
469
479
  return rawBody;
470
480
  }
481
+
482
+ export default autoService(initWrapHandlerForGoogleHTTPFunction);
@@ -1,8 +0,0 @@
1
- import { describe, it } from '@jest/globals';
2
- import initLogService from './log.js';
3
- describe('initLogService', () => {
4
- it('should work', async () => {
5
- await initLogService({});
6
- });
7
- });
8
- //# sourceMappingURL=log.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.test.js","sourceRoot":"","sources":["../../src/services/log.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,cAAc,MAAM,UAAU,CAAC;AAEtC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,22 +0,0 @@
1
- import { DEFAULT_PARSERS, DEFAULT_STRINGIFYERS, DEFAULT_DECODERS, DEFAULT_ENCODERS } from '@whook/http-router';
2
- import type { WhookQueryStringParser } from '@whook/http-router';
3
- import type { ServiceInitializer, Dependencies, Service } from 'knifecycle';
4
- import type { WhookHandler, ObfuscatorService, WhookOperation, WhookWrapper } from '@whook/whook';
5
- import type { TimeService, LogService } from 'common-services';
6
- type HTTPWrapperDependencies = {
7
- NODE_ENV: string;
8
- DEBUG_NODE_ENVS?: string[];
9
- OPERATION: WhookOperation;
10
- DECODERS?: typeof DEFAULT_DECODERS;
11
- ENCODERS?: typeof DEFAULT_ENCODERS;
12
- PARSERS?: typeof DEFAULT_PARSERS;
13
- STRINGIFYERS?: typeof DEFAULT_STRINGIFYERS;
14
- QUERY_PARSER: WhookQueryStringParser;
15
- BUFFER_LIMIT?: string;
16
- obfuscator: ObfuscatorService;
17
- time?: TimeService;
18
- log?: LogService;
19
- WRAPPERS: WhookWrapper<Dependencies, Service>[];
20
- };
21
- export default function wrapHandlerForAWSHTTPFunction<D extends Dependencies, S extends WhookHandler>(initHandler: ServiceInitializer<D, S>): ServiceInitializer<D & HTTPWrapperDependencies, S>;
22
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"googleHTTPFunction.js","sourceRoot":"","sources":["../../src/wrappers/googleHTTPFunction.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { describe, it } from '@jest/globals';
2
- import initLogService from './log.js';
3
-
4
- describe('initLogService', () => {
5
- it('should work', async () => {
6
- await initLogService({});
7
- });
8
- });