@whook/gcp-functions 18.0.3 → 19.0.0

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 (37) hide show
  1. package/README.md +19 -57
  2. package/dist/commands/testGCPFunctionRoute.d.ts +50 -0
  3. package/dist/commands/{testHTTPFunction.js → testGCPFunctionRoute.js} +44 -46
  4. package/dist/commands/testGCPFunctionRoute.js.map +1 -0
  5. package/dist/index.d.ts +8 -7
  6. package/dist/index.js +50 -54
  7. package/dist/index.js.map +1 -1
  8. package/dist/libs/utils.d.ts +1 -1
  9. package/dist/libs/utils.js +1 -1
  10. package/dist/libs/utils.js.map +1 -1
  11. package/dist/services/_autoload.d.ts +16 -12
  12. package/dist/services/_autoload.js +49 -63
  13. package/dist/services/_autoload.js.map +1 -1
  14. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.d.ts +19 -0
  15. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.js +307 -0
  16. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.js.map +1 -0
  17. package/package.json +11 -10
  18. package/src/commands/{testHTTPFunction.ts → testGCPFunctionRoute.ts} +73 -75
  19. package/src/index.ts +100 -104
  20. package/src/libs/utils.ts +2 -2
  21. package/src/services/_autoload.ts +90 -117
  22. package/src/types.d.ts +8 -0
  23. package/src/wrappers/wrapRouteHandlerForGoogleHTTPFunction.ts +571 -0
  24. package/dist/commands/testHTTPFunction.d.ts +0 -13
  25. package/dist/commands/testHTTPFunction.js.map +0 -1
  26. package/dist/services/HANDLER.d.ts +0 -11
  27. package/dist/services/HANDLER.js +0 -21
  28. package/dist/services/HANDLER.js.map +0 -1
  29. package/dist/services/log.d.ts +0 -5
  30. package/dist/services/log.js +0 -4
  31. package/dist/services/log.js.map +0 -1
  32. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.d.ts +0 -23
  33. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js +0 -272
  34. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +0 -1
  35. package/src/services/HANDLER.ts +0 -43
  36. package/src/services/log.ts +0 -7
  37. package/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts +0 -482
@@ -1,272 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { YError, printStackTrace } from 'yerror';
3
- import { DEFAULT_DEBUG_NODE_ENVS, DEFAULT_BUFFER_LIMIT, DEFAULT_PARSERS, DEFAULT_STRINGIFYERS, DEFAULT_DECODERS, DEFAULT_ENCODERS, extractOperationSecurityParameters, castParameters, } from '@whook/http-router';
4
- import { autoService } from 'knifecycle';
5
- import Ajv from 'ajv';
6
- import addAJVFormats from 'ajv-formats';
7
- import bytes from 'bytes';
8
- import { YHTTPError } from 'yhttperror';
9
- import { prepareParametersValidators, prepareBodyValidator, applyValidators, filterHeaders, extractBodySpec, extractResponseSpec, checkResponseCharset, checkResponseMediaType, executeHandler, extractProduceableMediaTypes, extractConsumableMediaTypes, getBody, sendBody, } from '@whook/http-router';
10
- import { noop, identity, lowerCaseHeaders } from '@whook/whook';
11
- import stream from 'stream';
12
- const SEARCH_SEPARATOR = '?';
13
- const PATH_SEPARATOR = '/';
14
- /**
15
- * Wrap an handler to make it work with GCP Functions.
16
- * @param {Object} services
17
- * The services the wrapper depends on
18
- * @param {Object} services.OPERATION_API
19
- * An OpenAPI definitition for that handler
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
40
- * @param {Object} [services.log=noop]
41
- * An optional logging service
42
- * @return {Promise<Object>}
43
- * A promise of an object containing the reshaped env vars.
44
- */
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, }) {
46
- log('debug', '📥 - Initializing the AWS Lambda cron wrapper.');
47
- const path = Object.keys(OPERATION_API.paths || {})[0];
48
- const pathObject = OPERATION_API.paths?.[path];
49
- if (typeof pathObject === 'undefined' || '$ref' in pathObject) {
50
- throw new YError('E_BAD_OPERATION', 'pathObject', pathObject);
51
- }
52
- const method = Object.keys(pathObject)[0];
53
- const operationObject = pathObject[method];
54
- if (typeof operationObject === 'undefined' || '$ref' in operationObject) {
55
- throw new YError('E_BAD_OPERATION', 'operationObject', operationObject);
56
- }
57
- const operation = {
58
- path,
59
- method,
60
- ...operationObject,
61
- };
62
- const consumableCharsets = Object.keys(DECODERS);
63
- const produceableCharsets = Object.keys(ENCODERS);
64
- const consumableMediaTypes = extractConsumableMediaTypes(operation);
65
- const produceableMediaTypes = extractProduceableMediaTypes(operation);
66
- const ajv = new Ajv.default({
67
- verbose: DEBUG_NODE_ENVS.includes(ENV.NODE_ENV),
68
- strict: true,
69
- logger: {
70
- log: (...args) => log?.('debug', ...args),
71
- warn: (...args) => log?.('warning', ...args),
72
- error: (...args) => log?.('error', ...args),
73
- },
74
- });
75
- addAJVFormats.default(ajv);
76
- const ammendedParameters = extractOperationSecurityParameters(OPERATION_API, operation);
77
- const validators = prepareParametersValidators(ajv, operation.operationId, (operation.parameters || []).concat(ammendedParameters));
78
- const bodyValidator = prepareBodyValidator(ajv, operation);
79
- const wrapper = async (handler) => {
80
- const wrappedHandler = handleForAWSHTTPFunction.bind(null, {
81
- DECODERS,
82
- ENCODERS,
83
- PARSERS,
84
- STRINGIFYERS,
85
- BUFFER_LIMIT,
86
- QUERY_PARSER,
87
- obfuscator,
88
- errorHandler,
89
- log,
90
- }, {
91
- consumableMediaTypes,
92
- produceableMediaTypes,
93
- consumableCharsets,
94
- produceableCharsets,
95
- validators,
96
- bodyValidator,
97
- operation,
98
- }, handler);
99
- return wrappedHandler;
100
- };
101
- return wrapper;
102
- }
103
- async function handleForAWSHTTPFunction({ DECODERS, ENCODERS, PARSERS, STRINGIFYERS, BUFFER_LIMIT, QUERY_PARSER, obfuscator, errorHandler, log, }, { consumableMediaTypes, produceableMediaTypes, consumableCharsets, produceableCharsets, validators, bodyValidator, operation, }, handler, req, res) {
104
- const bufferLimit = bytes.parse(BUFFER_LIMIT) || bytes.parse(DEFAULT_BUFFER_LIMIT);
105
- log?.('info', 'GCP_FUNCTIONS_REQUEST', JSON.stringify({
106
- url: req.originalUrl,
107
- method: req.method,
108
- body: req.body,
109
- // body: obfuscateEventBody(obfuscator, req.body),
110
- headers: obfuscator.obfuscateSensibleHeaders(req.headers),
111
- }));
112
- const request = await gcpfReqToRequest(req);
113
- let parameters;
114
- let response;
115
- let responseLog;
116
- let responseSpec;
117
- log?.('debug', 'REQUEST', JSON.stringify({
118
- ...request,
119
- body: request.body ? 'Stream' : undefined,
120
- headers: obfuscator.obfuscateSensibleHeaders(request.headers),
121
- }));
122
- try {
123
- const bodySpec = extractBodySpec(request, consumableMediaTypes, consumableCharsets);
124
- responseSpec = extractResponseSpec(operation, request, produceableMediaTypes, produceableCharsets);
125
- try {
126
- const body = await getBody({
127
- DECODERS,
128
- PARSERS,
129
- bufferLimit,
130
- }, operation, request.body, bodySpec);
131
- const path = request.url.split(SEARCH_SEPARATOR)[0];
132
- const parts = path.split(PATH_SEPARATOR).filter(identity);
133
- const search = request.url.substr(request.url.split(SEARCH_SEPARATOR)[0].length);
134
- const pathParameters = operation.path
135
- .split(PATH_SEPARATOR)
136
- .filter(identity)
137
- .map((part, index) => {
138
- const matches = /^\{([\d\w]+)\}$/i.exec(part);
139
- if (matches) {
140
- return {
141
- name: matches[1],
142
- value: parts[index],
143
- };
144
- }
145
- })
146
- .filter(identity)
147
- .reduce((accParameters, { name, value }) => ({
148
- ...accParameters,
149
- [name]: value,
150
- }), {});
151
- // TODO: Update strictQS to handle OpenAPI 3
152
- const retroCompatibleQueryParameters = (operation.parameters || [])
153
- .filter((p) => p.in === 'query')
154
- .map((p) => ({ ...p, ...p.schema }));
155
- parameters = {
156
- ...pathParameters,
157
- ...QUERY_PARSER(retroCompatibleQueryParameters, search),
158
- ...filterHeaders(operation.parameters, request.headers),
159
- };
160
- parameters = {
161
- // TODO: Use the security of the operation to infer
162
- // authorization parameters, see:
163
- // https://github.com/nfroidure/whook/blob/06ccae93d1d52d97ff70fd5e19fa826bdabf3968/packages/whook-http-router/src/validation.js#L110
164
- authorization: parameters.authorization,
165
- ...castParameters(operation.parameters || [], parameters),
166
- };
167
- applyValidators(operation, validators, parameters);
168
- bodyValidator(operation, bodySpec.contentType, body);
169
- parameters = {
170
- ...parameters,
171
- ...('undefined' !== typeof body ? { body } : {}),
172
- };
173
- }
174
- catch (err) {
175
- throw YHTTPError.cast(err, 400);
176
- }
177
- response = await executeHandler(operation, handler, parameters);
178
- if (response.body) {
179
- response.headers['content-type'] =
180
- response.headers['content-type'] || responseSpec.contentTypes[0];
181
- }
182
- // Check the stringifyer only when a schema is
183
- // specified and it is not a binary one
184
- const responseObject = operation.responses &&
185
- operation.responses[response.status];
186
- const responseSchema = responseObject &&
187
- responseObject.content &&
188
- responseObject.content[response.headers['content-type']] &&
189
- responseObject.content[response.headers['content-type']]
190
- .schema;
191
- const responseHasSchema = responseSchema &&
192
- (responseSchema.type !== 'string' || responseSchema.format !== 'binary');
193
- if (responseHasSchema && !STRINGIFYERS[response.headers['content-type']]) {
194
- throw new YHTTPError(500, 'E_STRINGIFYER_LACK', response.headers['content-type']);
195
- }
196
- if (response.body) {
197
- checkResponseMediaType(request, responseSpec, produceableMediaTypes);
198
- checkResponseCharset(request, responseSpec, produceableCharsets);
199
- }
200
- responseLog = {
201
- type: 'success',
202
- status: response.status,
203
- };
204
- log?.('debug', JSON.stringify(responseLog));
205
- }
206
- catch (err) {
207
- response = await errorHandler('none', responseSpec, err);
208
- responseLog = {
209
- type: 'error',
210
- code: err?.code || 'E_UNEXPECTED',
211
- statusCode: response.status,
212
- params: err?.params || [],
213
- stack: printStackTrace(err),
214
- };
215
- log?.('error', JSON.stringify(responseLog));
216
- response = {
217
- ...response,
218
- headers: {
219
- ...response.headers,
220
- 'content-type': 'application/json',
221
- },
222
- };
223
- }
224
- log?.('debug', 'RESPONSE', JSON.stringify({
225
- ...response,
226
- body: obfuscateEventBody(obfuscator, response.body),
227
- headers: obfuscator.obfuscateSensibleHeaders(response.headers),
228
- }));
229
- await pipeResponseInGCPFResponse(await sendBody({
230
- ENCODERS,
231
- STRINGIFYERS,
232
- }, response), res);
233
- }
234
- async function gcpfReqToRequest(req) {
235
- const request = {
236
- method: req.method.toLowerCase(),
237
- headers: lowerCaseHeaders(req.headers || {}),
238
- url: req.originalUrl,
239
- };
240
- if (req.rawBody) {
241
- request.headers['content-length'] = req.rawBody.length.toString();
242
- const bodyStream = new stream.PassThrough();
243
- request.body = bodyStream;
244
- bodyStream.write(req.rawBody);
245
- bodyStream.end();
246
- }
247
- return request;
248
- }
249
- async function pipeResponseInGCPFResponse(response, res) {
250
- Object.keys(response.headers || {}).forEach((headerName) => {
251
- res.set(headerName, response.headers?.[headerName]);
252
- });
253
- res.status(response.status);
254
- if (response.body) {
255
- response.body.pipe(res);
256
- return;
257
- }
258
- res.end();
259
- }
260
- function obfuscateEventBody(obfuscator, rawBody) {
261
- if (typeof rawBody === 'string') {
262
- try {
263
- const jsonBody = JSON.parse(rawBody);
264
- return JSON.stringify(obfuscator.obfuscateSensibleProps(jsonBody));
265
- // eslint-disable-next-line
266
- }
267
- catch (err) { }
268
- }
269
- return rawBody;
270
- }
271
- export default autoService(initWrapHandlerForGoogleHTTPFunction);
272
- //# sourceMappingURL=wrapHandlerForGoogleHTTPFunction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapHandlerForGoogleHTTPFunction.js","sourceRoot":"","sources":["../../src/wrappers/wrapHandlerForGoogleHTTPFunction.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { autoService, name, location } from 'knifecycle';
2
- import { noop, applyWrappers, type WhookWrapper } from '@whook/whook';
3
- import { type WhookHandler } from '@whook/http-transaction';
4
- import { type LogService } from 'common-services';
5
-
6
- export type WhookHandlerDependencies<T extends WhookHandler> = {
7
- WRAPPERS: WhookWrapper<T>[];
8
- mainWrapper: WhookWrapper<T>;
9
- baseHandler: T;
10
- log?: LogService;
11
- };
12
-
13
- export default location(
14
- name('HANDLER', autoService(initHandler)),
15
- import.meta.url,
16
- );
17
-
18
- /**
19
- * Initialize one Whook handler
20
- * @param {Object} services
21
- * The services `$autoload` depends on
22
- * @param {Array} services.WRAPPERS
23
- * An optional list of wrappers to inject
24
- * @param {Object} [services.log=noop]
25
- * An optional logging service
26
- * @param {Object} services.HANDLERS
27
- * The rest is a hash of handlers mapped by their operation id
28
- * @return {Promise<Function>}
29
- * A promise of the `HANDLERS` hash.
30
- */
31
- async function initHandler<T extends WhookHandler>({
32
- WRAPPERS,
33
- mainWrapper,
34
- baseHandler,
35
- log = noop,
36
- }: WhookHandlerDependencies<T>): Promise<WhookHandler<T>> {
37
- log(
38
- 'warning',
39
- `🏭 - Initializing the HANDLER service with wrapped by ${WRAPPERS.length} wrappers.`,
40
- );
41
-
42
- return await applyWrappers<T>([...WRAPPERS, mainWrapper], baseHandler);
43
- }
@@ -1,7 +0,0 @@
1
- import { service, location } from 'knifecycle';
2
- import { log } from 'node:console';
3
-
4
- export default location(
5
- service(async () => log, 'log'),
6
- import.meta.url,
7
- );