@whook/gcp-functions 18.1.0 → 19.0.1

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 (33) hide show
  1. package/README.md +16 -54
  2. package/dist/commands/testGCPFunctionRoute.d.ts +50 -0
  3. package/dist/commands/{testHTTPFunction.js → testGCPFunctionRoute.js} +43 -44
  4. package/dist/commands/testGCPFunctionRoute.js.map +1 -0
  5. package/dist/index.d.ts +7 -6
  6. package/dist/index.js +49 -52
  7. package/dist/index.js.map +1 -1
  8. package/dist/services/_autoload.d.ts +14 -9
  9. package/dist/services/_autoload.js +49 -62
  10. package/dist/services/_autoload.js.map +1 -1
  11. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.d.ts +19 -0
  12. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.js +307 -0
  13. package/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.js.map +1 -0
  14. package/package.json +10 -8
  15. package/src/commands/{testHTTPFunction.ts → testGCPFunctionRoute.ts} +68 -69
  16. package/src/index.ts +85 -87
  17. package/src/services/_autoload.ts +79 -106
  18. package/src/types.d.ts +8 -0
  19. package/src/wrappers/wrapRouteHandlerForGoogleHTTPFunction.ts +571 -0
  20. package/dist/commands/testHTTPFunction.d.ts +0 -13
  21. package/dist/commands/testHTTPFunction.js.map +0 -1
  22. package/dist/services/HANDLER.d.ts +0 -10
  23. package/dist/services/HANDLER.js +0 -21
  24. package/dist/services/HANDLER.js.map +0 -1
  25. package/dist/services/log.d.ts +0 -5
  26. package/dist/services/log.js +0 -4
  27. package/dist/services/log.js.map +0 -1
  28. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.d.ts +0 -21
  29. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js +0 -270
  30. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +0 -1
  31. package/src/services/HANDLER.ts +0 -47
  32. package/src/services/log.ts +0 -7
  33. package/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts +0 -480
@@ -1,85 +1,72 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { UNBUILDABLE_SERVICES, wrapInitializer, constant, alsoInject, location, } from 'knifecycle';
2
+ import { wrapInitializer, constant, alsoInject, location, } from 'knifecycle';
3
3
  import { YError } from 'yerror';
4
- import { initBuildAutoload, noop, cleanupOpenAPI, dereferenceOpenAPIOperations, getOpenAPIOperations, } from '@whook/whook';
5
- import initHandler from './HANDLER.js';
6
- import initWrapHandlerForGoogleHTTPFunction from '../wrappers/wrapHandlerForGoogleHTTPFunction.js';
7
- export const GCP_WRAPPERS = {
8
- http: {
9
- name: 'wrapHandlerForGoogleHTTPFunction',
10
- initializer: initWrapHandlerForGoogleHTTPFunction,
11
- },
12
- };
4
+ import { initBuildAutoload, initMainHandler, noop, } from '@whook/whook';
5
+ import { cleanupOpenAPI } from 'ya-open-api-types';
6
+ import initWrapRouteHandlerForGoogleHTTPFunction from '../wrappers/wrapRouteHandlerForGoogleHTTPFunction.js';
13
7
  const initializerWrapper = (async ({ $injector, log = noop }, $autoload) => {
14
8
  let API;
15
- let OPERATION_APIS;
16
- const getAPIOperation = (() => {
9
+ let DEFINITIONS;
10
+ let ROUTES_DEFINITIONS;
11
+ const getDefinition = (() => {
17
12
  return async (serviceName) => {
18
13
  const cleanedName = serviceName.split('_').pop();
19
14
  API = API || (await $injector(['API'])).API;
20
- OPERATION_APIS =
21
- OPERATION_APIS ||
22
- getOpenAPIOperations(API);
23
- const OPERATION = OPERATION_APIS.find((operation) => cleanedName ===
24
- (((operation['x-whook'] || {}).sourceOperationId &&
25
- (operation['x-whook'] || {}).sourceOperationId) ||
26
- operation.operationId) +
27
- ((operation['x-whook'] || {}).suffix || ''));
28
- if (!OPERATION) {
29
- log('error', '💥 - Unable to find a function operation definition!');
30
- throw new YError('E_OPERATION_NOT_FOUND', serviceName);
15
+ DEFINITIONS =
16
+ DEFINITIONS || (await $injector(['DEFINITIONS'])).DEFINITIONS;
17
+ ROUTES_DEFINITIONS =
18
+ ROUTES_DEFINITIONS ||
19
+ (await $injector(['ROUTES_DEFINITIONS'])).ROUTES_DEFINITIONS;
20
+ const config = DEFINITIONS.configs[cleanedName];
21
+ if (!config) {
22
+ log('error', '💥 - Unable to find a GCP Function definition!');
23
+ throw new YError('E_DEFINITION_NOT_FOUND', serviceName, cleanedName);
31
24
  }
32
- const OPERATION_API = cleanupOpenAPI({
25
+ if (!config || config.type !== 'route') {
26
+ log('error', '💥 - GCP Function only supports routes!');
27
+ throw new YError('E_UNSUPPORTED_DEFINITION', serviceName, cleanedName);
28
+ }
29
+ const openAPI = (await cleanupOpenAPI({
33
30
  ...API,
34
31
  paths: {
35
- [OPERATION.path]: {
36
- [OPERATION.method]: API.paths?.[OPERATION.path]?.[OPERATION.method],
37
- },
38
- },
39
- });
40
- return [
41
- OPERATION['x-whook']?.type || 'http',
42
- OPERATION.operationId,
43
- {
44
- ...OPERATION_API,
45
- paths: {
46
- [OPERATION.path]: {
47
- [OPERATION.method]: (await dereferenceOpenAPIOperations(OPERATION_API, [
48
- {
49
- path: OPERATION.path,
50
- method: OPERATION.method,
51
- ...OPERATION_API.paths?.[OPERATION.path]?.[OPERATION.method],
52
- parameters: OPERATION.parameters,
53
- },
54
- ]))[0],
55
- },
32
+ [config.path]: {
33
+ parameters: API?.paths?.[config.path]?.parameters || [],
34
+ [config.method]: API.paths?.[config.path]?.[config.method],
56
35
  },
57
36
  },
58
- ];
37
+ }));
38
+ return {
39
+ name: cleanedName,
40
+ type: 'route',
41
+ openAPI,
42
+ definition: ROUTES_DEFINITIONS[cleanedName]?.module?.definition || config,
43
+ };
59
44
  };
60
45
  })();
61
- log('debug', '🤖 - Initializing the `$autoload` build wrapper.');
46
+ log('debug', '🤖 - Initializing the GCP Functions `$autoload` build wrapper.');
62
47
  return async (serviceName) => {
63
- if (UNBUILDABLE_SERVICES.includes(serviceName)) {
64
- log('warning', `🤷 - Building a project with the "${serviceName}" unbuildable service (ie Knifecycle ones: ${UNBUILDABLE_SERVICES.join(', ')}) can give unpredictable results!`);
65
- return constant(serviceName, undefined);
48
+ if (serviceName.startsWith('MAIN_API_')) {
49
+ const definition = await getDefinition(serviceName);
50
+ return constant(serviceName, definition.type === 'route' ? definition.openAPI : {});
66
51
  }
67
- if (serviceName.startsWith('OPERATION_API_')) {
68
- const [, , OPERATION_API] = await getAPIOperation(serviceName);
69
- return constant(serviceName, OPERATION_API);
52
+ if (serviceName.startsWith('MAIN_DEFINITION_')) {
53
+ const { definition } = await getDefinition(serviceName);
54
+ return constant(serviceName, definition);
70
55
  }
71
- if (serviceName.startsWith('OPERATION_WRAPPER_')) {
72
- const [type] = await getAPIOperation(serviceName);
56
+ if (serviceName.startsWith('MAIN_WRAPPER_')) {
73
57
  return location(alsoInject([
74
- `OPERATION_API>${serviceName.replace('OPERATION_WRAPPER_', 'OPERATION_API_')}`,
75
- ], GCP_WRAPPERS[type].initializer), `@whook/gcp-functions/dist/wrappers/${GCP_WRAPPERS[type].name}.js`);
58
+ `MAIN_DEFINITION>${serviceName.replace('MAIN_WRAPPER_', 'MAIN_DEFINITION_')}`,
59
+ `MAIN_API>${serviceName.replace('MAIN_WRAPPER_', 'MAIN_API_')}`,
60
+ ], initWrapRouteHandlerForGoogleHTTPFunction), `@whook/gcp-functions/dist/wrappers/wrapRouteHandlerForGoogleHTTPFunction.js`);
76
61
  }
77
- if (serviceName.startsWith('OPERATION_HANDLER_')) {
78
- const [, operationId] = await getAPIOperation(serviceName);
62
+ if (serviceName.startsWith('MAIN_HANDLER_')) {
63
+ const { type, name, definition } = await getDefinition(serviceName);
64
+ const targetHandler = definition.config?.targetHandler || name;
79
65
  return location(alsoInject([
80
- `mainWrapper>OPERATION_WRAPPER_${serviceName.replace('OPERATION_HANDLER_', '')}`,
81
- `baseHandler>${operationId}`,
82
- ], initHandler), '@whook/gcp-functions/dist/services/HANDLER.js');
66
+ `MAIN_WRAPPER>MAIN_WRAPPER_${serviceName.replace('MAIN_HANDLER_', '')}`,
67
+ `?WRAPPERS>${type.toUpperCase()}S_WRAPPERS`,
68
+ `BASE_HANDLER>${targetHandler}`,
69
+ ], initMainHandler), '@whook/whook/dist/services/MAIN_HANDLER.js');
83
70
  }
84
71
  return await $autoload(serviceName);
85
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"_autoload.js","sourceRoot":"","sources":["../../src/services/_autoload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_autoload.js","sourceRoot":"","sources":["../../src/services/_autoload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { DEFAULT_PARSERS, DEFAULT_STRINGIFYERS, DEFAULT_DECODERS, DEFAULT_ENCODERS, type WhookObfuscatorService, type WhookRouteHandlerWrapper, type WhookErrorHandler, type WhookOpenAPI, type WhookCoercionOptions, type WhookRouteDefinition, type WhookSchemaValidatorsService, type WhookQueryParserBuilderService } from '@whook/whook';
2
+ import { type LogService } from 'common-services';
3
+ export type WhookGCPFunctionRouteWrapperDependencies = {
4
+ MAIN_DEFINITION: WhookRouteDefinition;
5
+ MAIN_API: WhookOpenAPI;
6
+ DECODERS?: typeof DEFAULT_DECODERS;
7
+ ENCODERS?: typeof DEFAULT_ENCODERS;
8
+ PARSERS?: typeof DEFAULT_PARSERS;
9
+ STRINGIFYERS?: typeof DEFAULT_STRINGIFYERS;
10
+ queryParserBuilder: WhookQueryParserBuilderService;
11
+ BUFFER_LIMIT?: string;
12
+ COERCION_OPTIONS: WhookCoercionOptions;
13
+ obfuscator: WhookObfuscatorService;
14
+ errorHandler: WhookErrorHandler;
15
+ schemaValidators: WhookSchemaValidatorsService;
16
+ log?: LogService;
17
+ };
18
+ declare const _default: import("knifecycle").ServiceInitializer<WhookGCPFunctionRouteWrapperDependencies, WhookRouteHandlerWrapper>;
19
+ export default _default;
@@ -0,0 +1,307 @@
1
+ import { YError, printStackTrace } from 'yerror';
2
+ import stream from 'node:stream';
3
+ import { autoService } from 'knifecycle';
4
+ import bytes from 'bytes';
5
+ import { YHTTPError } from 'yhttperror';
6
+ import { DEFAULT_COERCION_OPTIONS, DEFAULT_BUFFER_LIMIT, DEFAULT_PARSERS, DEFAULT_STRINGIFYERS, DEFAULT_DECODERS, DEFAULT_ENCODERS, SEARCH_SEPARATOR, PATH_SEPARATOR, extractOperationSecurityParameters, prepareBodyValidator, extractBodySpec, extractResponseSpec, checkResponseCharset, checkResponseMediaType, executeHandler, extractProduceableMediaTypes, extractConsumableMediaTypes, getBody, sendBody, noop, identity, lowerCaseHeaders, resolveParameters, createParametersValidators, pickFirstHeaderValue, } from '@whook/whook';
7
+ import { ensureResolvedObject, } from 'ya-open-api-types';
8
+ /**
9
+ * Wrap an handler to make it work with GCP Functions.
10
+ * @param {Object} services
11
+ * The services the wrapper depends on
12
+ * @param {Object} services.MAIN_DEFINITION
13
+ * An OpenAPI definitition for that handler
14
+ * @param {Object} services.DECODERS
15
+ * Request body decoders available
16
+ * @param {Object} services.ENCODERS
17
+ * Response body encoders available
18
+ * @param {Object} services.PARSERS
19
+ * Request body parsers available
20
+ * @param {Object} services.STRINGIFYERS
21
+ * Response body stringifyers available
22
+ * @param {Object} services.BUFFER_LIMIT
23
+ * The buffer size limit
24
+ * @param {Object} services.queryParserBuilder
25
+ * A query parser builder from OpenAPI parameters
26
+ * @param {Object} services.obfuscator
27
+ * A service to hide sensible values
28
+ * @param {Object} services.errorHandler
29
+ * A service that changes any error to Whook response
30
+ * @param {Object} [services.log=noop]
31
+ * An optional logging service
32
+ * @return {Promise<Object>}
33
+ * A promise of an object containing the reshaped env vars.
34
+ */
35
+ async function initWrapRouteHandlerForGoogleHTTPFunction({ MAIN_DEFINITION, MAIN_API, DECODERS = DEFAULT_DECODERS, ENCODERS = DEFAULT_ENCODERS, PARSERS = DEFAULT_PARSERS, STRINGIFYERS = DEFAULT_STRINGIFYERS, BUFFER_LIMIT = DEFAULT_BUFFER_LIMIT, queryParserBuilder, COERCION_OPTIONS = DEFAULT_COERCION_OPTIONS, obfuscator, errorHandler, schemaValidators, log = noop, }) {
36
+ log('debug', '📥 - Initializing the GCP Function wrapper.');
37
+ const path = MAIN_DEFINITION.path;
38
+ const pathItem = MAIN_API.paths?.[path];
39
+ if (typeof pathItem === 'undefined' || '$ref' in pathItem) {
40
+ throw new YError('E_BAD_OPERATION', 'pathItem', pathItem);
41
+ }
42
+ const method = MAIN_DEFINITION.method;
43
+ const operation = pathItem[method];
44
+ if (typeof operation === 'undefined' || '$ref' in operation) {
45
+ throw new YError('E_BAD_OPERATION', 'operation', operation);
46
+ }
47
+ const pathItemParameters = await resolveParameters({ API: MAIN_API, log }, pathItem.parameters || []);
48
+ const pathItemValidators = await createParametersValidators({
49
+ API: MAIN_API,
50
+ COERCION_OPTIONS,
51
+ schemaValidators,
52
+ }, pathItemParameters);
53
+ const operationParameters = await resolveParameters({ API: MAIN_API, log }, operation.parameters || []);
54
+ const ammendedParameters = await resolveParameters({ API: MAIN_API, log }, await extractOperationSecurityParameters({ API: MAIN_API }, operation));
55
+ const operationValidators = await createParametersValidators({
56
+ API: MAIN_API,
57
+ COERCION_OPTIONS,
58
+ schemaValidators,
59
+ }, operationParameters.concat(ammendedParameters));
60
+ const bodyValidator = await prepareBodyValidator({ API: MAIN_API, schemaValidators }, operation);
61
+ const consumableCharsets = Object.keys(DECODERS);
62
+ const produceableCharsets = Object.keys(ENCODERS);
63
+ const consumableMediaTypes = await extractConsumableMediaTypes(MAIN_API, operation);
64
+ const produceableMediaTypes = await extractProduceableMediaTypes(MAIN_API, operation);
65
+ const parameters = pathItemParameters
66
+ .concat(ammendedParameters)
67
+ .filter((parameter) => operationParameters.every((aParameter) => aParameter.in !== parameter.in || aParameter.name !== parameter.name))
68
+ .concat(operationParameters);
69
+ const queryParser = await queryParserBuilder(parameters);
70
+ const wrapper = async (handler) => {
71
+ const wrappedHandler = handleForAWSHTTPFunction.bind(null, {
72
+ MAIN_DEFINITION,
73
+ MAIN_API,
74
+ DECODERS,
75
+ ENCODERS,
76
+ PARSERS,
77
+ STRINGIFYERS,
78
+ BUFFER_LIMIT,
79
+ obfuscator,
80
+ errorHandler,
81
+ log,
82
+ }, {
83
+ consumableCharsets,
84
+ produceableCharsets,
85
+ handler,
86
+ operation,
87
+ queryParser,
88
+ parametersValidators: {
89
+ path: {
90
+ ...pathItemValidators.path,
91
+ ...operationValidators.path,
92
+ },
93
+ query: {
94
+ ...pathItemValidators.query,
95
+ ...operationValidators.query,
96
+ },
97
+ header: {
98
+ ...pathItemValidators.header,
99
+ ...operationValidators.header,
100
+ },
101
+ cookie: {
102
+ ...pathItemValidators.cookie,
103
+ ...operationValidators.cookie,
104
+ },
105
+ },
106
+ consumableMediaTypes,
107
+ produceableMediaTypes,
108
+ bodyValidator,
109
+ }, MAIN_DEFINITION);
110
+ return wrappedHandler;
111
+ };
112
+ return wrapper;
113
+ }
114
+ async function handleForAWSHTTPFunction({ MAIN_API, DECODERS, ENCODERS, PARSERS, STRINGIFYERS, BUFFER_LIMIT, obfuscator, errorHandler, log, }, { handler, operation, parametersValidators, consumableMediaTypes, produceableMediaTypes, consumableCharsets, produceableCharsets, queryParser, bodyValidator, }, definition, req, res) {
115
+ const bufferLimit = bytes.parse(BUFFER_LIMIT) || bytes.parse(DEFAULT_BUFFER_LIMIT);
116
+ log?.('info', 'GCP_FUNCTIONS_REQUEST', JSON.stringify({
117
+ url: req.originalUrl,
118
+ method: req.method,
119
+ body: req.body,
120
+ // body: obfuscateEventBody(obfuscator, req.body),
121
+ headers: obfuscator.obfuscateSensibleHeaders(req.headers || {}),
122
+ }));
123
+ const request = await gcpfReqToRequest(req);
124
+ let response;
125
+ let responseLog;
126
+ let responseSpec;
127
+ log?.('debug', 'REQUEST', JSON.stringify({
128
+ ...request,
129
+ body: request.body ? 'Stream' : undefined,
130
+ headers: obfuscator.obfuscateSensibleHeaders(request.headers),
131
+ }));
132
+ const parametersValues = {
133
+ query: {},
134
+ header: {},
135
+ path: {},
136
+ cookie: {},
137
+ body: undefined,
138
+ options: {},
139
+ };
140
+ try {
141
+ try {
142
+ const path = request.url.split(SEARCH_SEPARATOR)[0];
143
+ const parts = path.split(PATH_SEPARATOR).filter(identity);
144
+ const search = request.url.substr(request.url.split(SEARCH_SEPARATOR)[0].length);
145
+ const queryValues = queryParser(search);
146
+ const pathParameters = definition.path
147
+ .split(PATH_SEPARATOR)
148
+ .filter(identity)
149
+ .map((part, index) => {
150
+ const matches = /^\{([\d\w]+)\}$/i.exec(part);
151
+ if (matches) {
152
+ return {
153
+ name: matches[1],
154
+ value: parts[index],
155
+ };
156
+ }
157
+ })
158
+ .filter(identity)
159
+ .reduce((accParameters, { name, value }) => ({
160
+ ...accParameters,
161
+ [name]: value,
162
+ }), {});
163
+ for (const location of Object.keys(parametersValidators)) {
164
+ if (location === 'query') {
165
+ for (const [name, validator] of Object.entries(parametersValidators.query)) {
166
+ parametersValues.query[name] = validator(queryValues && typeof queryValues[name] !== 'undefined'
167
+ ? queryValues[name]?.toString()
168
+ : undefined);
169
+ }
170
+ }
171
+ else if (location === 'header') {
172
+ for (const [name, validator] of Object.entries(parametersValidators.header)) {
173
+ // header names are case insensitive
174
+ const canonicalName = name.toLowerCase();
175
+ parametersValues.header[name] = validator(typeof request.headers[canonicalName] !== 'undefined'
176
+ ? request.headers[canonicalName].toString()
177
+ : undefined);
178
+ }
179
+ }
180
+ else if (location === 'path') {
181
+ for (const [name, validator] of Object.entries(parametersValidators.path)) {
182
+ parametersValues.path[name] = validator(pathParameters && typeof pathParameters[name] !== 'undefined'
183
+ ? pathParameters[name].toString()
184
+ : undefined);
185
+ }
186
+ }
187
+ }
188
+ const bodySpec = extractBodySpec(request, consumableMediaTypes || [], consumableCharsets);
189
+ responseSpec = extractResponseSpec(operation, request, produceableMediaTypes || [], produceableCharsets);
190
+ const body = await getBody({
191
+ API: MAIN_API,
192
+ DECODERS,
193
+ PARSERS,
194
+ bufferLimit,
195
+ }, operation, request.body, bodySpec);
196
+ bodyValidator(operation, bodySpec.contentType, body);
197
+ if (typeof body !== 'undefined') {
198
+ parametersValues.body = body;
199
+ }
200
+ }
201
+ catch (err) {
202
+ throw YHTTPError.cast(err, 400);
203
+ }
204
+ response = await executeHandler(definition, handler, parametersValues);
205
+ response.headers = response.headers || {};
206
+ if (response.body) {
207
+ response.headers['content-type'] =
208
+ response.headers['content-type'] || responseSpec.contentTypes[0];
209
+ }
210
+ const responseContentType = pickFirstHeaderValue('content-type', response.headers || {}) ||
211
+ 'text/plain';
212
+ const responseObject = operation.responses && operation.responses[response.status]
213
+ ? await ensureResolvedObject(MAIN_API, operation.responses[response.status])
214
+ : undefined;
215
+ const responseSchema = responseObject &&
216
+ responseObject.content &&
217
+ responseObject.content?.[responseContentType] &&
218
+ 'schema' in responseObject.content[responseContentType] &&
219
+ (await ensureResolvedObject(MAIN_API, responseObject.content?.[responseContentType].schema));
220
+ // Check the stringifyer only when a schema is
221
+ // specified and it is not a binary one
222
+ const responseHasSchema = typeof responseSchema === 'boolean' ||
223
+ (typeof responseSchema === 'object' &&
224
+ responseSchema &&
225
+ !('type' in responseSchema &&
226
+ responseSchema.type === 'string' &&
227
+ responseSchema.format === 'binary'));
228
+ if (responseHasSchema && !STRINGIFYERS[responseContentType]) {
229
+ throw new YHTTPError(500, 'E_STRINGIFYER_LACK', response.headers['content-type'], response);
230
+ }
231
+ if (response.body) {
232
+ checkResponseMediaType(request, responseSpec, produceableMediaTypes || []);
233
+ checkResponseCharset(request, responseSpec, produceableCharsets);
234
+ }
235
+ responseLog = {
236
+ type: 'success',
237
+ status: response.status,
238
+ };
239
+ log?.('debug', JSON.stringify(responseLog));
240
+ }
241
+ catch (err) {
242
+ response = await errorHandler('none', responseSpec, err);
243
+ responseLog = {
244
+ type: 'error',
245
+ code: err?.code || 'E_UNEXPECTED',
246
+ statusCode: response.status,
247
+ params: err?.params || [],
248
+ stack: printStackTrace(err),
249
+ };
250
+ log?.('error', JSON.stringify(responseLog));
251
+ response = {
252
+ ...response,
253
+ headers: {
254
+ ...response.headers,
255
+ 'content-type': 'application/json',
256
+ },
257
+ };
258
+ }
259
+ log?.('debug', 'RESPONSE', JSON.stringify({
260
+ ...response,
261
+ body: obfuscateEventBody(obfuscator, response.body),
262
+ headers: obfuscator.obfuscateSensibleHeaders(response.headers),
263
+ }));
264
+ await pipeResponseInGCPFResponse(await sendBody({
265
+ ENCODERS,
266
+ STRINGIFYERS,
267
+ }, response), res);
268
+ }
269
+ async function gcpfReqToRequest(req) {
270
+ const request = {
271
+ method: req.method.toLowerCase(),
272
+ headers: lowerCaseHeaders(req.headers || {}),
273
+ url: req.originalUrl,
274
+ };
275
+ if (req.rawBody) {
276
+ request.headers['content-length'] = req.rawBody.length.toString();
277
+ const bodyStream = new stream.PassThrough();
278
+ request.body = bodyStream;
279
+ bodyStream.write(req.rawBody);
280
+ bodyStream.end();
281
+ }
282
+ return request;
283
+ }
284
+ async function pipeResponseInGCPFResponse(response, res) {
285
+ Object.keys(response.headers || {}).forEach((headerName) => {
286
+ res.set(headerName, response.headers?.[headerName]);
287
+ });
288
+ res.status(response.status);
289
+ if (response.body) {
290
+ response.body.pipe(res);
291
+ return;
292
+ }
293
+ res.end();
294
+ }
295
+ function obfuscateEventBody(obfuscator, rawBody) {
296
+ if (typeof rawBody === 'string') {
297
+ try {
298
+ const jsonBody = JSON.parse(rawBody);
299
+ return JSON.stringify(obfuscator.obfuscateSensibleProps(jsonBody));
300
+ // eslint-disable-next-line
301
+ }
302
+ catch (err) { }
303
+ }
304
+ return rawBody;
305
+ }
306
+ export default autoService(initWrapRouteHandlerForGoogleHTTPFunction);
307
+ //# sourceMappingURL=wrapRouteHandlerForGoogleHTTPFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapRouteHandlerForGoogleHTTPFunction.js","sourceRoot":"","sources":["../../src/wrappers/wrapRouteHandlerForGoogleHTTPFunction.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": "18.1.0",
32
+ "version": "19.0.1",
33
33
  "description": "Build and deploy to GCP Cloud Functions with Whook.",
34
34
  "type": "module",
35
35
  "main": "dist/index.js",
@@ -49,20 +49,22 @@
49
49
  },
50
50
  "homepage": "https://github.com/nfroidure/whook",
51
51
  "dependencies": {
52
- "@whook/cors": "^18.1.0",
53
- "@whook/whook": "^18.1.0",
52
+ "@whook/cors": "^19.0.1",
53
+ "@whook/whook": "^19.0.1",
54
54
  "ajv": "^8.17.1",
55
55
  "ajv-formats": "^3.0.1",
56
- "application-services": "^7.0.1",
56
+ "application-services": "^7.0.2",
57
57
  "camelcase": "^8.0.0",
58
58
  "common-services": "^17.0.1",
59
59
  "cpr": "3.0.1",
60
- "knifecycle": "^18.0.0",
60
+ "knifecycle": "^19.0.0",
61
61
  "mkdirp": "^3.0.1",
62
- "openapi-types": "^12.1.3",
63
62
  "qs": "^6.13.1",
64
63
  "strict-qs": "^8.0.3",
65
- "yerror": "^8.0.0"
64
+ "ya-json-schema-types": "^1.0.1",
65
+ "ya-open-api-types": "^1.2.0",
66
+ "yerror": "^8.0.0",
67
+ "yhttperror": "^8.1.0"
66
68
  },
67
69
  "devDependencies": {
68
70
  "@eslint/js": "^9.16.0",
@@ -145,5 +147,5 @@
145
147
  "overrides": {
146
148
  "eslint": "^9.16.0"
147
149
  },
148
- "gitHead": "540bd23ce703c3650d58da7711931be1afd55d82"
150
+ "gitHead": "7bec2e36076d7e9146f54f558397063af4ac174c"
149
151
  }