@whook/gcp-functions 12.0.2 → 13.1.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 (38) hide show
  1. package/README.md +55 -35
  2. package/dist/commands/testHTTPFunction.d.ts +2 -2
  3. package/dist/commands/testHTTPFunction.js +4 -2
  4. package/dist/commands/testHTTPFunction.js.map +1 -1
  5. package/dist/index.d.ts +27 -0
  6. package/dist/index.js +34 -66
  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 +31 -15
  17. package/dist/services/_autoload.js +78 -26
  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 +26 -0
  22. package/dist/wrappers/{googleHTTPFunction.js → wrapHandlerForGoogleHTTPFunction.js} +71 -63
  23. package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +1 -0
  24. package/package.json +46 -42
  25. package/src/commands/testHTTPFunction.ts +5 -4
  26. package/src/index.test.ts +11 -0
  27. package/src/index.ts +45 -99
  28. package/src/libs/utils.ts +4 -2
  29. package/src/services/HANDLER.ts +41 -0
  30. package/src/services/_autoload.ts +134 -36
  31. package/src/services/log.ts +2 -2
  32. package/src/wrappers/{googleHTTPFunction.ts → wrapHandlerForGoogleHTTPFunction.ts} +135 -123
  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
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  # @whook/gcp-functions
8
8
  > Build and deploy to GCP Cloud Functions with Whook.
9
9
 
10
- [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nfroidure/whook/blob/master/packages/whook-gcp-functions/LICENSE)
10
+ [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nfroidure/whook/blob/main/packages/whook-gcp-functions/LICENSE)
11
11
 
12
12
 
13
13
  [//]: # (::contents:start)
@@ -27,41 +27,42 @@ Install this module:
27
27
  npm i @whook/gcp-functions;
28
28
  ```
29
29
 
30
- Add this module to your Whook plugins and tweak the 2 build functions in your
30
+ Add the plugin to the `src/index.ts` main file:
31
+
32
+ ```diff
33
+
34
+ // ...
35
+
36
+ $.register(
37
+ constant('WHOOK_PLUGINS', [
38
+ '@whook/whook',
39
+ + '@whook/gcp-functions',
40
+ '@whook/cors',
41
+ ]),
42
+ );
43
+
44
+ // ...
45
+ ```
46
+
47
+ Tweak the 2 build functions in your
31
48
  `src/build.ts` main file:
32
49
 
33
50
  ```diff
34
51
  import {
35
52
  // (...)
53
+ - DEFAULT_INITIALIZER_PATH_MAP,
36
54
  - runBuild as runBaseBuild,
55
+ - prepareBuildEnvironment as prepareBaseBuildEnvironment,
37
56
  // (...)
38
57
  } from '@whook/whook';
39
58
  +import {
59
+ + DEFAULT_BUILD_INITIALIZER_PATH_MAP,
40
60
  + runBuild as runBaseBuild,
41
61
  + prepareBuildEnvironment as prepareBaseBuildEnvironment,
42
62
  +} from '@whook/gcp-functions';
43
63
 
44
64
  // (...)
45
65
 
46
- export async function prepareEnvironment(
47
- $: Knifecycle = new Knifecycle(),
48
- ): Promise<Knifecycle> {
49
-
50
- // (...)
51
-
52
- // Setup your own whook plugins or avoid whook defaults by leaving it empty
53
- - $.register(constant('WHOOK_PLUGINS', ['@whook/whook']));
54
- + $.register(constant('WHOOK_PLUGINS', [
55
- + '@whook/gcp-functions',
56
- + '@whook/whook',
57
- + ]));
58
-
59
- // (...)
60
-
61
- }
62
-
63
- // (...)
64
-
65
66
  // The `prepareBuildEnvironment` create the build
66
67
  // environment
67
68
  export async function prepareBuildEnvironment(
@@ -76,18 +77,14 @@ export async function prepareBuildEnvironment(
76
77
  + // Calling the GCP specific build env
77
78
  + $ = await prepareBaseBuildEnvironment($);
78
79
 
79
-
80
80
  // The build often need to know were initializers
81
81
  // can be found to create a static build and
82
82
  // remove the need to create an injector
83
83
  $.register(
84
84
  constant('INITIALIZER_PATH_MAP', {
85
85
  // (...)
86
- obfuscator: '@whook/http-transaction/dist/services/obfuscator',
87
- - log: 'common-services/dist/log',
88
- + log: '@whook/gcp-functions/dist/services/log',
89
- time: 'common-services/dist/time',
90
- delay: 'common-services/dist/delay',
86
+ - ...DEFAULT_INITIALIZER_PATH_MAP,
87
+ + ...DEFAULT_BUILD_INITIALIZER_PATH_MAP,
91
88
  }),
92
89
  );
93
90
 
@@ -96,27 +93,32 @@ export async function prepareBuildEnvironment(
96
93
  }
97
94
  ```
98
95
 
99
- Declare this module types in your `src/whook.d.ts` type
100
- definitions:
96
+ Declare this module types in your `src/whook.d.ts` type definitions:
97
+
101
98
  ```diff
99
+ // ...
102
100
  + import type { WhookCompilerConfig } from '@whook/whook';
103
101
  + import type {
104
102
  + WhookGCPBuildConfig,
105
103
  + WhookAPIOperationGCPFunctionConfig
106
104
  + } from '@whook/gcp-functions';
107
105
 
108
- declare module '@whook/whook' {
106
+ declare module 'application-services' {
109
107
 
110
108
  // ...
111
109
 
112
- export interface WhookConfigs
110
+ export interface AppConfig
113
111
  - extends WhookBaseConfigs {}
114
112
  + extends WhookBaseConfigs,
115
113
  + WhookGCPBuildConfig,
116
114
  + WhookCompilerConfig {}
117
115
 
118
116
  // ...
117
+ }
119
118
 
119
+ // ...
120
+
121
+ declare module '@whook/whook' {
120
122
  export interface WhookAPIHandlerDefinition<
121
123
  T extends Record<string, unknown> = Record<string, unknown>,
122
124
  U extends {
@@ -130,17 +132,18 @@ declare module '@whook/whook' {
130
132
  WhookAPIOperationCORSConfig
131
133
  >;
132
134
  }
133
-
134
135
  }
135
136
  ```
137
+
136
138
  And add the GCP Functions config (usually in `src/config/common/config.js`):
137
139
 
138
140
  ```diff
139
- import type { WhookConfigs } from '@whook/whook';
141
+ // ...
142
+ import type { AppConfig } from 'application-services';
140
143
 
141
144
  // ...
142
145
 
143
- const CONFIG: WhookConfigs = {
146
+ const CONFIG: AppConfig = {
144
147
  // ...
145
148
  + COMPILER_OPTIONS: {
146
149
  + externalModules: [],
@@ -189,9 +192,26 @@ There is a complete example on how to deploy your functions
189
192
  [//]: # (::contents:end)
190
193
 
191
194
  # API
195
+ <a name="initWrapHandlerForHTTPFunction"></a>
196
+
197
+ ## initWrapHandlerForHTTPFunction(services) ⇒ <code>Promise.&lt;Object&gt;</code>
198
+ Wrap an handler to make it work with cron AWS Lambda.
199
+
200
+ **Kind**: global function
201
+ **Returns**: <code>Promise.&lt;Object&gt;</code> - A promise of an object containing the reshaped env vars.
202
+
203
+ | Param | Type | Default | Description |
204
+ | --- | --- | --- | --- |
205
+ | services | <code>Object</code> | | The services the wrapper depends on |
206
+ | services.ENV | <code>Object</code> | | The process environment |
207
+ | services.OPERATION_API | <code>Object</code> | | An OpenAPI definitition for that handler |
208
+ | services.apm | <code>Object</code> | | An application monitoring service |
209
+ | [services.time] | <code>Object</code> | | An optional time service |
210
+ | [services.log] | <code>Object</code> | <code>noop</code> | An optional logging service |
211
+
192
212
 
193
213
  # Authors
194
214
  - [Nicolas Froidure](http://insertafter.com/en/index.html)
195
215
 
196
216
  # License
197
- [MIT](https://github.com/nfroidure/whook/blob/master/packages/whook-gcp-functions/LICENSE)
217
+ [MIT](https://github.com/nfroidure/whook/blob/main/packages/whook-gcp-functions/LICENSE)
@@ -3,11 +3,11 @@ import type { LogService } from 'common-services';
3
3
  import type { OpenAPIV3 } from 'openapi-types';
4
4
  export declare const definition: WhookCommandDefinition;
5
5
  declare const _default: import("knifecycle").ServiceInitializer<{
6
- NODE_ENV: string;
6
+ APP_ENV: string;
7
7
  PROJECT_DIR: string;
8
8
  COMPILER_OPTIONS?: Partial<import("@whook/whook/dist/services/compiler.js").FullWhookCompilerOptions> | undefined;
9
9
  API: OpenAPIV3.Document<{}>;
10
10
  log: LogService;
11
- args: WhookCommandArgs<Record<string, import("@whook/whook").WhookArgsTypes>>;
11
+ args: WhookCommandArgs;
12
12
  }, () => Promise<void>>;
13
13
  export default _default;
@@ -39,11 +39,11 @@ export const definition = {
39
39
  },
40
40
  };
41
41
  export default extra(definition, autoService(initTestHTTPFunctionCommand));
42
- async function initTestHTTPFunctionCommand({ NODE_ENV, PROJECT_DIR, COMPILER_OPTIONS = DEFAULT_COMPILER_OPTIONS, API, log, args, }) {
42
+ async function initTestHTTPFunctionCommand({ APP_ENV, PROJECT_DIR, COMPILER_OPTIONS = DEFAULT_COMPILER_OPTIONS, API, log, args, }) {
43
43
  return async () => {
44
44
  const { namedArguments: { name, type, contentType, parameters: rawParameters }, } = readArgs(definition.arguments, args);
45
45
  const extension = COMPILER_OPTIONS.format === 'cjs' ? '.cjs' : '.mjs';
46
- const handler = await loadFunction({ PROJECT_DIR, log }, NODE_ENV, name, type, extension);
46
+ const handler = await loadFunction({ APP_ENV, PROJECT_DIR, log }, name, type, extension);
47
47
  const OPERATION = (await dereferenceOpenAPIOperations(API, getOpenAPIOperations(API))).find(({ operationId }) => operationId === name);
48
48
  if (!OPERATION) {
49
49
  throw new YError('E_OPERATION_NOT_FOUND');
@@ -100,9 +100,11 @@ async function initTestHTTPFunctionCommand({ NODE_ENV, PROJECT_DIR, COMPILER_OPT
100
100
  };
101
101
  await new Promise((resolve, reject) => {
102
102
  const gcpfResponse = new stream.PassThrough();
103
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
103
104
  gcpfResponse.set = (name, value) => {
104
105
  response.headers[name] = value;
105
106
  };
107
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
108
  gcpfResponse.status = (code) => {
107
109
  response.status = code;
108
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"testHTTPFunction.js","sourceRoot":"","sources":["../../src/commands/testHTTPFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testHTTPFunction.js","sourceRoot":"","sources":["../../src/commands/testHTTPFunction.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,33 @@
1
1
  import { Knifecycle } from 'knifecycle';
2
2
  import type { WhookCompilerOptions } from '@whook/whook';
3
3
  export declare const DEFAULT_BUILD_PARALLELISM = 10;
4
+ export declare const DEFAULT_BUILD_INITIALIZER_PATH_MAP: {
5
+ log: string;
6
+ $fatalError: string;
7
+ BASE_URL: string;
8
+ API_DEFINITIONS: string;
9
+ logger: string;
10
+ exit: string;
11
+ PORT: string;
12
+ HOST: string;
13
+ WHOOK_PLUGINS_PATHS: string;
14
+ httpRouter: string;
15
+ httpTransaction: string;
16
+ httpServer: string;
17
+ apm: string;
18
+ obfuscator: string;
19
+ errorHandler: string;
20
+ APP_CONFIG: string;
21
+ PROJECT_DIR: string;
22
+ PROCESS_ENV: string;
23
+ process: string;
24
+ ENV: string;
25
+ time: string;
26
+ delay: string;
27
+ random: string;
28
+ importer: string;
29
+ resolve: string;
30
+ };
4
31
  export type WhookGCPBuildConfig = {
5
32
  BUILD_PARALLELISM?: number;
6
33
  };
package/dist/index.js CHANGED
@@ -1,38 +1,24 @@
1
- /* eslint global-require:0 */
2
1
  import fs from 'fs';
3
2
  import util from 'util';
4
3
  import path from 'path';
5
- import mkdirp from 'mkdirp';
4
+ import { mkdirp } from 'mkdirp';
5
+ import { argv, exit, stderr } from 'node:process';
6
6
  import cpr from 'cpr';
7
7
  import { printStackTrace, YError } from 'yerror';
8
- import { createRequire } from 'module';
9
- import { Knifecycle, SPECIAL_PROPS, constant, initInitializerBuilder, } from 'knifecycle';
10
- import { initCompiler } from '@whook/whook';
8
+ import { Knifecycle, constant, initInitializerBuilder } from 'knifecycle';
9
+ import { DEFAULT_BUILD_INITIALIZER_PATH_MAP as BASE_DEFAULT_BUILD_INITIALIZER_PATH_MAP, initCompiler, } from '@whook/whook';
11
10
  import initBuildAutoloader from './services/_autoload.js';
12
11
  import { dereferenceOpenAPIOperations, getOpenAPIOperations, } from '@whook/http-router';
13
12
  export const DEFAULT_BUILD_PARALLELISM = 10;
13
+ export const DEFAULT_BUILD_INITIALIZER_PATH_MAP = {
14
+ ...BASE_DEFAULT_BUILD_INITIALIZER_PATH_MAP,
15
+ log: '@whook/gcp-functions/dist/services/log',
16
+ };
14
17
  const readFileAsync = util.promisify(fs.readFile);
15
18
  const writeFileAsync = util.promisify(fs.writeFile);
16
19
  const cprAsync = util.promisify(cpr);
17
- // TODO: Use import.meta when Jest will support it
18
- const require = createRequire(path.join(process.cwd(), 'src', 'index.ts'));
19
- const BUILD_DEFINITIONS = {
20
- http: {
21
- type: 'HTTP',
22
- wrapper: {
23
- name: 'wrapHandlerForGoogleHTTPFunction',
24
- path: path.join(path.dirname(require.resolve('@whook/gcp-functions')), 'wrappers/googleHTTPFunction.js'),
25
- },
26
- suffix: 'Wrapped',
27
- },
28
- };
29
20
  export async function prepareBuildEnvironment($ = new Knifecycle()) {
30
- $.register(constant('INITIALIZER_PATH_MAP', {
31
- ENV: '@whook/whook/dist/services/ProxyedENV',
32
- log: '@whook/gcp-functions/dist/services/log',
33
- time: 'common-services/dist/time',
34
- delay: 'common-services/dist/delay',
35
- }));
21
+ $.register(constant('INITIALIZER_PATH_MAP', DEFAULT_BUILD_INITIALIZER_PATH_MAP));
36
22
  $.register(initInitializerBuilder);
37
23
  $.register(initBuildAutoloader);
38
24
  $.register(initCompiler);
@@ -42,10 +28,10 @@ export async function prepareBuildEnvironment($ = new Knifecycle()) {
42
28
  }
43
29
  export async function runBuild(aPrepareBuildEnvironment) {
44
30
  try {
45
- const handlerName = process.argv[2];
31
+ const handlerName = argv[2];
46
32
  const $ = await aPrepareBuildEnvironment();
47
- const { NODE_ENV, BUILD_PARALLELISM, PROJECT_DIR, compiler, log, $autoload, API, buildInitializer, } = await $.run([
48
- 'NODE_ENV',
33
+ const { APP_ENV, BUILD_PARALLELISM, PROJECT_DIR, compiler, log, $autoload, API, buildInitializer, } = await $.run([
34
+ 'APP_ENV',
49
35
  '?BUILD_PARALLELISM',
50
36
  'PROJECT_DIR',
51
37
  'process',
@@ -64,9 +50,9 @@ export async function runBuild(aPrepareBuildEnvironment) {
64
50
  }
65
51
  return true;
66
52
  });
67
- log('warning', `${operations.length} operations to process.`);
53
+ log('warning', `📃 - ${operations.length} operations to process.`);
68
54
  await processOperations({
69
- NODE_ENV,
55
+ APP_ENV,
70
56
  BUILD_PARALLELISM: BUILD_PARALLELISM || DEFAULT_BUILD_PARALLELISM,
71
57
  PROJECT_DIR,
72
58
  compiler,
@@ -77,25 +63,23 @@ export async function runBuild(aPrepareBuildEnvironment) {
77
63
  await $.destroy();
78
64
  }
79
65
  catch (err) {
80
- // eslint-disable-next-line
81
- console.error('💀 - Cannot launch the build:', printStackTrace(err), JSON.stringify(err?.params, null, 2));
82
- process.exit(1);
66
+ stderr.write(`💀 - Cannot launch the build:' ${printStackTrace(err)}`);
67
+ exit(1);
83
68
  }
84
69
  }
85
- async function processOperations({ NODE_ENV, BUILD_PARALLELISM, PROJECT_DIR, compiler, log, $autoload, buildInitializer, }, operations) {
70
+ async function processOperations({ APP_ENV, BUILD_PARALLELISM, PROJECT_DIR, compiler, log, $autoload, buildInitializer, }, operations) {
86
71
  const operationsLeft = operations.slice(BUILD_PARALLELISM);
87
72
  await Promise.all(operations.slice(0, BUILD_PARALLELISM).map((operation) => buildAnyLambda({
88
- NODE_ENV,
73
+ APP_ENV,
89
74
  PROJECT_DIR,
90
75
  compiler,
91
76
  log,
92
- $autoload,
93
77
  buildInitializer,
94
78
  }, operation)));
95
79
  if (operationsLeft.length) {
96
- log('info', operationsLeft.length, ' operations left.');
80
+ log('info', `📃 - ${operationsLeft.length} operations left.`);
97
81
  return processOperations({
98
- NODE_ENV,
82
+ APP_ENV,
99
83
  BUILD_PARALLELISM,
100
84
  PROJECT_DIR,
101
85
  compiler,
@@ -104,31 +88,22 @@ async function processOperations({ NODE_ENV, BUILD_PARALLELISM, PROJECT_DIR, com
104
88
  buildInitializer,
105
89
  }, operationsLeft);
106
90
  }
107
- log('info', 'No more operations.');
91
+ log('info', '🤷 - No more operations.');
108
92
  }
109
- async function buildAnyLambda({ NODE_ENV, PROJECT_DIR, compiler, log, $autoload, buildInitializer, }, operation) {
93
+ async function buildAnyLambda({ APP_ENV, PROJECT_DIR, compiler, log, buildInitializer, }, operation) {
110
94
  const { operationId } = operation;
111
95
  try {
112
96
  const whookConfig = operation['x-whook'] || { type: 'http' };
113
97
  const operationType = whookConfig.type || 'http';
114
98
  const sourceOperationId = whookConfig.sourceOperationId;
115
- const entryPoint = operationId;
116
99
  const finalEntryPoint = (sourceOperationId ? sourceOperationId : operationId) +
117
100
  ((operation['x-whook'] || {}).suffix || '');
118
- log('warning', `Building ${operationType} "${finalEntryPoint}"...`);
119
- const buildDefinition = BUILD_DEFINITIONS[operationType];
120
- // eslint-disable-next-line
121
- const applyWrapper = (await import(buildDefinition.wrapper.path)).default;
122
- const rootNode = await $autoload(entryPoint + (buildDefinition.suffix || ''));
123
- const lambdaPath = path.join(PROJECT_DIR, 'builds', NODE_ENV, finalEntryPoint);
124
- const finalHandlerInitializer = applyWrapper(rootNode.initializer);
125
- const initializerContent = await buildInitializer(finalHandlerInitializer[SPECIAL_PROPS.INJECT].map((name) => name === 'OPERATION_API'
126
- ? `OPERATION_API>OPERATION_API_${finalEntryPoint}`
127
- : name));
128
- const indexContent = await buildLambdaIndex(rootNode, {
129
- name: buildDefinition.wrapper.name,
130
- path: buildDefinition.wrapper.path,
131
- });
101
+ log('warning', `🏗 - Building ${operationType} "${finalEntryPoint}"...`);
102
+ const lambdaPath = path.join(PROJECT_DIR, 'builds', APP_ENV, finalEntryPoint);
103
+ const initializerContent = await buildInitializer([
104
+ `OPERATION_HANDLER_${finalEntryPoint}`,
105
+ ]);
106
+ const indexContent = await buildLambdaIndex(`OPERATION_HANDLER_${finalEntryPoint}`);
132
107
  await mkdirp(lambdaPath);
133
108
  await Promise.all([
134
109
  copyStaticFiles({ PROJECT_DIR, log }, lambdaPath, whookConfig.staticFiles || []),
@@ -140,25 +115,18 @@ async function buildAnyLambda({ NODE_ENV, PROJECT_DIR, compiler, log, $autoload,
140
115
  catch (err) {
141
116
  log('error', `Error building "${operationId}"...`);
142
117
  log('error-stack', printStackTrace(err));
143
- log('debug', JSON.stringify(err.params, null, 2));
144
118
  throw YError.wrap(err, 'E_LAMBDA_BUILD', operationId);
145
119
  }
146
120
  }
147
- async function buildLambdaIndex(rootNode, buildWrapper) {
148
- return `import initHandler from '${rootNode.path}';
149
- import ${buildWrapper.name} from '${buildWrapper.path}';
121
+ async function buildLambdaIndex(name) {
122
+ return `// Automatically generated by \`@whook/gcp-functions\`
150
123
  import { initialize } from './initialize.js';
151
124
 
152
- const handlerInitializer = ${buildWrapper.name}(
153
- initHandler
154
- );
155
-
156
- const handlerPromise = initialize()
157
- .then(handlerInitializer);
125
+ const initializationPromise = initialize();
158
126
 
159
- export default function handler (req, res) {
160
- return handlerPromise
161
- .then(handler => handler(req, res));
127
+ export default function handler (req, res) {
128
+ return initializationPromise
129
+ .then(services => services['${name}'](req, res));
162
130
  };
163
131
  `;
164
132
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Knifecycle } from 'knifecycle';
2
+ import { describe, test, expect } from '@jest/globals';
3
+ import { prepareBuildEnvironment } from './index.js';
4
+ describe('prepareBuildEnvironment', () => {
5
+ test('should work', async () => {
6
+ const $ = await prepareBuildEnvironment(new Knifecycle());
7
+ expect($).toBeDefined();
8
+ });
9
+ });
10
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,CAAC,GAAG,MAAM,uBAAuB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { LogService } from 'common-services';
2
- export declare function loadFunction({ PROJECT_DIR, log, }: {
2
+ export declare function loadFunction({ PROJECT_DIR, APP_ENV, log, }: {
3
3
  PROJECT_DIR: string;
4
+ APP_ENV: string;
4
5
  log: LogService;
5
- }, target: string, operationId: string, type: string, extension?: string): Promise<any>;
6
+ }, operationId: string, type: string, extension?: string): Promise<any>;
@@ -1,7 +1,7 @@
1
1
  import { YError } from 'yerror';
2
2
  import path from 'path';
3
- export async function loadFunction({ PROJECT_DIR, log, }, target, operationId, type, extension = '.mjs') {
4
- const modulePath = path.join(PROJECT_DIR, 'builds', target, operationId, type + extension);
3
+ export async function loadFunction({ PROJECT_DIR, APP_ENV, log, }, operationId, type, extension = '.mjs') {
4
+ const modulePath = path.join(PROJECT_DIR, 'builds', APP_ENV, operationId, type + extension);
5
5
  log('debug', `⛏️ - Loading function module at path "${modulePath}".`);
6
6
  try {
7
7
  const module = await import(modulePath);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/libs/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EACE,WAAW,EACX,GAAG,GAIJ,EACD,MAAc,EACd,WAAmB,EACnB,IAAY,EACZ,SAAS,GAAG,MAAM;IAElB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,WAAW,EACX,QAAQ,EACR,MAAM,EACN,WAAW,EACX,IAAI,GAAG,SAAS,CACjB,CAAC;IAEF,GAAG,CAAC,OAAO,EAAE,yCAAyC,UAAU,IAAI,CAAC,CAAC;IAEtE,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACrE;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,MAAM,CAAC,IAAI,CAAC,GAAY,EAAE,eAAe,CAAC,CAAC;KAClD;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/libs/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EACE,WAAW,EACX,OAAO,EACP,GAAG,GAKJ,EACD,WAAmB,EACnB,IAAY,EACZ,SAAS,GAAG,MAAM;IAGlB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,WAAW,EACX,QAAQ,EACR,OAAO,EACP,WAAW,EACX,IAAI,GAAG,SAAS,CACjB,CAAC;IAEF,GAAG,CAAC,OAAO,EAAE,yCAAyC,UAAU,IAAI,CAAC,CAAC;IAEtE,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACrE;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,MAAM,CAAC,IAAI,CAAC,GAAY,EAAE,eAAe,CAAC,CAAC;KAClD;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { WhookWrapper } from '@whook/whook';
3
+ import type { WhookHandler } from '@whook/http-transaction';
4
+ import type { LogService } from 'common-services';
5
+ export type WhookHandlerDependencies<T extends WhookHandler> = {
6
+ WRAPPERS: WhookWrapper<T>[];
7
+ mainWrapper: WhookWrapper<T>;
8
+ baseHandler: T;
9
+ log?: LogService;
10
+ };
11
+ declare const _default: import("knifecycle").ServiceInitializer<WhookHandlerDependencies<WhookHandler<import("knifecycle").Parameters, import("@whook/http-transaction").WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | import("stream").Readable | import("type-fest").JsonValue>, import("@whook/http-transaction").WhookOperation<Record<string, unknown>>>>, WhookHandler<WhookHandler<import("knifecycle").Parameters, import("@whook/http-transaction").WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | import("stream").Readable | import("type-fest").JsonValue>, import("@whook/http-transaction").WhookOperation<Record<string, unknown>>>, import("@whook/http-transaction").WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | import("stream").Readable | import("type-fest").JsonValue>, import("@whook/http-transaction").WhookOperation<Record<string, unknown>>>>;
12
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import { autoService, name } from 'knifecycle';
2
+ import { noop, applyWrappers } from '@whook/whook';
3
+ export default name('HANDLER', autoService(initHandler));
4
+ /**
5
+ * Initialize one Whook handler
6
+ * @param {Object} services
7
+ * The services `$autoload` depends on
8
+ * @param {Array} services.WRAPPERS
9
+ * An optional list of wrappers to inject
10
+ * @param {Object} [services.log=noop]
11
+ * An optional logging service
12
+ * @param {Object} services.HANDLERS
13
+ * The rest is a hash of handlers mapped by their operation id
14
+ * @return {Promise<Function>}
15
+ * A promise of the `HANDLERS` hash.
16
+ */
17
+ async function initHandler({ WRAPPERS, mainWrapper, baseHandler, log = noop, }) {
18
+ log('warning', `🏭 - Initializing the HANDLER service with wrapped by ${WRAPPERS.length} wrappers.`);
19
+ return await applyWrappers([...WRAPPERS, mainWrapper], baseHandler);
20
+ }
21
+ //# sourceMappingURL=HANDLER.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HANDLER.js","sourceRoot":"","sources":["../../src/services/HANDLER.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAYnD,eAAe,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,WAAW,CAAyB,EACjD,QAAQ,EACR,WAAW,EACX,WAAW,EACX,GAAG,GAAG,IAAI,GACkB;IAC5B,GAAG,CACD,SAAS,EACT,yDAAyD,QAAQ,CAAC,MAAM,YAAY,CACrF,CAAC;IAEF,OAAO,MAAM,aAAa,CAAI,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC"}
@@ -1,29 +1,45 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import type { Injector, Autoloader, Initializer, Dependencies } from 'knifecycle';
3
- import type { LogService } from 'common-services';
1
+ import { Knifecycle } from 'knifecycle';
2
+ import type { Injector, Autoloader, Initializer, Dependencies, Service } from 'knifecycle';
3
+ import type { WhookBuildConstantsService } from '@whook/whook';
4
+ import type { LogService, ResolveService } from 'common-services';
5
+ import type { WhookAPIOperationGCPFunctionConfig } from '../index.js';
6
+ export type WhookGoogleFunctionsAutoloadDependencies = {
7
+ BUILD_CONSTANTS?: WhookBuildConstantsService;
8
+ $injector: Injector<Service>;
9
+ $instance: Knifecycle;
10
+ resolve: ResolveService;
11
+ log?: LogService;
12
+ };
13
+ export declare const GCP_WRAPPERS: Record<Required<WhookAPIOperationGCPFunctionConfig>['type'], {
14
+ name: string;
15
+ initializer: Initializer<Service, Dependencies>;
16
+ }>;
4
17
  /**
5
- * Wrap the _autoload service in order to build AWS
6
- * Lambda compatible code.
18
+ * Wrap the _autoload service in order to build for GCP
19
+ * Functions compatible code.
7
20
  * @param {Object} services
8
21
  * The services ENV depends on
9
- * @param {Object} services.NODE_ENV
10
- * The injected NODE_ENV value to add it to the build env
11
- * @param {Object} [services.PROXYED_ENV_VARS={}]
12
- * A list of environment variable names to proxy
22
+ * @param {Object} [services.BUILD_CONSTANTS]
23
+ * Service whose contents should be considered as constants
24
+ * @param {Object} $instance
25
+ * A Knifecycle instance
26
+ * @param {Object} $injector
27
+ * The Knifecycle injector
13
28
  * @param {Object} [services.log=noop]
14
29
  * An optional logging service
15
30
  * @return {Promise<Object>}
16
31
  * A promise of an object containing the reshaped env vars.
17
32
  */
18
- declare const _default: import("knifecycle").ServiceInitializer<Dependencies<any> & import("@whook/whook/dist/services/_autoload.js").AutoloadConfig & {
33
+ declare const _default: import("knifecycle").ServiceInitializer<Dependencies<any> & import("@whook/whook").WhookWrappersConfig & {
19
34
  PROJECT_SRC: string;
20
- CONFIGS?: import("@whook/whook").CONFIGSService | undefined;
21
- WRAPPERS?: import("@whook/whook").WhookWrapper<Dependencies<any>, import("@whook/http-transaction").WhookHandler<import("knifecycle").Parameters<any>, import("@whook/http-transaction").WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | import("stream").Readable | import("type-fest").JsonValue>, import("@whook/http-transaction").WhookOperation<Record<string, unknown>>>>[] | undefined;
35
+ APP_CONFIG?: import("@whook/whook").WhookAutoloadConfig | undefined;
36
+ INITIALIZER_PATH_MAP?: import("@whook/whook").WhookInitializerMap | undefined;
37
+ WHOOK_PLUGINS_PATHS?: string[] | undefined;
22
38
  $injector: Injector<any>;
23
39
  importer: import("common-services").ImporterService<{
24
- default: Initializer<any, Dependencies<any>>;
40
+ default: Initializer<any, Dependencies>;
25
41
  }>;
26
- resolve: import("common-services").ResolveService;
42
+ resolve: ResolveService;
27
43
  log?: LogService | undefined;
28
- }, Autoloader<Initializer<unknown, Dependencies<any>>>>;
44
+ }, Autoloader<Initializer<unknown, Dependencies>>>;
29
45
  export default _default;