@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.
- package/README.md +76 -28
- package/dist/commands/testHTTPFunction.d.ts +1 -1
- package/dist/commands/testHTTPFunction.js +2 -2
- package/dist/commands/testHTTPFunction.js.map +1 -1
- package/dist/index.d.ts +27 -0
- package/dist/index.js +33 -65
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +10 -0
- package/dist/index.test.js.map +1 -0
- package/dist/libs/utils.d.ts +3 -2
- package/dist/libs/utils.js +2 -2
- package/dist/libs/utils.js.map +1 -1
- package/dist/services/HANDLER.d.ts +12 -0
- package/dist/services/HANDLER.js +21 -0
- package/dist/services/HANDLER.js.map +1 -0
- package/dist/services/_autoload.d.ts +27 -13
- package/dist/services/_autoload.js +79 -31
- package/dist/services/_autoload.js.map +1 -1
- package/dist/services/log.js +2 -2
- package/dist/services/log.js.map +1 -1
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.d.ts +24 -0
- package/dist/wrappers/{googleHTTPFunction.js → wrapHandlerForGoogleHTTPFunction.js} +88 -77
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +1 -0
- package/package.json +10 -9
- package/src/commands/testHTTPFunction.ts +3 -4
- package/src/index.test.ts +11 -0
- package/src/index.ts +43 -97
- package/src/libs/utils.ts +3 -2
- package/src/services/HANDLER.ts +41 -0
- package/src/services/_autoload.ts +136 -41
- package/src/services/log.ts +2 -2
- package/src/wrappers/{googleHTTPFunction.ts → wrapHandlerForGoogleHTTPFunction.ts} +153 -141
- package/dist/services/log.test.js +0 -8
- package/dist/services/log.test.js.map +0 -1
- package/dist/wrappers/googleHTTPFunction.d.ts +0 -22
- package/dist/wrappers/googleHTTPFunction.js.map +0 -1
- package/src/services/log.test.ts +0 -8
- /package/dist/{services/log.test.d.ts → index.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -27,41 +27,42 @@ Install this module:
|
|
|
27
27
|
npm i @whook/gcp-functions;
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Add
|
|
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
|
-
|
|
87
|
-
|
|
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,8 +93,8 @@ export async function prepareBuildEnvironment(
|
|
|
96
93
|
}
|
|
97
94
|
```
|
|
98
95
|
|
|
99
|
-
Declare this module types in your `src/whook.d.ts` type
|
|
100
|
-
|
|
96
|
+
Declare this module types in your `src/whook.d.ts` type definitions:
|
|
97
|
+
|
|
101
98
|
```diff
|
|
102
99
|
// ...
|
|
103
100
|
+ import type { WhookCompilerConfig } from '@whook/whook';
|
|
@@ -137,6 +134,7 @@ declare module '@whook/whook' {
|
|
|
137
134
|
}
|
|
138
135
|
}
|
|
139
136
|
```
|
|
137
|
+
|
|
140
138
|
And add the GCP Functions config (usually in `src/config/common/config.js`):
|
|
141
139
|
|
|
142
140
|
```diff
|
|
@@ -194,6 +192,56 @@ There is a complete example on how to deploy your functions
|
|
|
194
192
|
[//]: # (::contents:end)
|
|
195
193
|
|
|
196
194
|
# API
|
|
195
|
+
## Functions
|
|
196
|
+
|
|
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.
|
|
225
|
+
|
|
226
|
+
**Kind**: global function
|
|
227
|
+
**Returns**: <code>Promise.<Object></code> - A promise of an object containing the reshaped env vars.
|
|
228
|
+
|
|
229
|
+
| Param | Type | Default | Description |
|
|
230
|
+
| --- | --- | --- | --- |
|
|
231
|
+
| services | <code>Object</code> | | The services the wrapper depends on |
|
|
232
|
+
| services.OPERATION_API | <code>Object</code> | | An OpenAPI definitition for that handler |
|
|
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 |
|
|
243
|
+
| [services.log] | <code>Object</code> | <code>noop</code> | An optional logging service |
|
|
244
|
+
|
|
197
245
|
|
|
198
246
|
# Authors
|
|
199
247
|
- [Nicolas Froidure](http://insertafter.com/en/index.html)
|
|
@@ -3,7 +3,7 @@ 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
|
-
|
|
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<{}>;
|
|
@@ -39,11 +39,11 @@ export const definition = {
|
|
|
39
39
|
},
|
|
40
40
|
};
|
|
41
41
|
export default extra(definition, autoService(initTestHTTPFunctionCommand));
|
|
42
|
-
async function initTestHTTPFunctionCommand({
|
|
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 },
|
|
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');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testHTTPFunction.js","sourceRoot":"","sources":["../../src/commands/testHTTPFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AASlE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,WAAW,EAAE,yCAAyC;IACtD,OAAO,EAAE,uCAAuC;IAChD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,WAAW,EAAE,6BAA6B;gBAC1C,IAAI,EAAE,QAAQ;aACf;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACvB,OAAO,EAAE,OAAO;aACjB;YACD,WAAW,EAAE;gBACX,WAAW,EAAE,6BAA6B;gBAC1C,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kBAAkB;aAC5B;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,eAAe,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC;AAE3E,KAAK,UAAU,2BAA2B,CAAC,EACzC,
|
|
1
|
+
{"version":3,"file":"testHTTPFunction.js","sourceRoot":"","sources":["../../src/commands/testHTTPFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AASlE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,WAAW,EAAE,yCAAyC;IACtD,OAAO,EAAE,uCAAuC;IAChD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,WAAW,EAAE,6BAA6B;gBAC1C,IAAI,EAAE,QAAQ;aACf;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACvB,OAAO,EAAE,OAAO;aACjB;YACD,WAAW,EAAE;gBACX,WAAW,EAAE,6BAA6B;gBAC1C,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kBAAkB;aAC5B;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,eAAe,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC;AAE3E,KAAK,UAAU,2BAA2B,CAAC,EACzC,OAAO,EACP,WAAW,EACX,gBAAgB,GAAG,wBAAwB,EAC3C,GAAG,EACH,GAAG,EACH,IAAI,GAQL;IACC,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,EACJ,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,GACvE,GAAG,QAAQ,CAKT,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,EAC7B,IAAI,EACJ,IAAI,EACJ,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,CAChB,MAAM,4BAA4B,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CACnE,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC;SAC3C;QAED,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAiC;aACzE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;aAC/B,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;YACvB,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC9B,OAAO,CACL,SAAS;oBACT,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtB,CAAC,CAAC,IAAI;oBACN,GAAG;oBACH,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CACnB,CAAC;aACH;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;aACxB,KAAK,CAAC,cAAc,CAAC;aAErB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,OAAO,EAAE;gBACX,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/B;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,IAAI,CAAC,cAAc,CAAC,CAAC;QACxB,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAG,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAiC;iBACnE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;iBAChC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE;gBAC9B,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzD,OAAO,gBAAgB,CAAC;YAC1B,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,MAAM,CAAC,IAAI,CAClB,OAAO;gBACL,CAAC,CAAC,WAAW,KAAK,kBAAkB;oBAClC,CAAC,CAAC,UAAU,CAAC,IAAI;wBACf,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;wBACjC,CAAC,CAAC,EAAE;oBACN,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;gBACzB,CAAC,CAAC,EAAE,CACP;SACF,CAAC;QACF,IAAI,OAAO,EAAE;YACX,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,WAAW,gBAAgB,CAAC;SACtE;QACD,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,WAAgC,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;SACT,CAAC;QACF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAE9C,8DAA8D;YAC7D,YAAoB,CAAC,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAQ,EAAE;gBAChE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACjC,CAAC,CAAC;YACF,8DAA8D;YAC7D,YAAoB,CAAC,MAAM,GAAG,CAAC,IAAY,EAAQ,EAAE;gBACpD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YACzB,CAAC,CAAC;YAEF,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,EAAc,CAAC;YAE9B,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC5B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;gBAC/B,IAAI,IAAY,CAAC;gBACjB,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}
|
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
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 {
|
|
9
|
-
import {
|
|
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 =
|
|
31
|
+
const handlerName = argv[2];
|
|
46
32
|
const $ = await aPrepareBuildEnvironment();
|
|
47
|
-
const {
|
|
48
|
-
'
|
|
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',
|
|
53
|
+
log('warning', `📃 - ${operations.length} operations to process.`);
|
|
68
54
|
await processOperations({
|
|
69
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
process.exit(1);
|
|
66
|
+
stderr.write(`💀 - Cannot launch the build:' ${printStackTrace(err)}`);
|
|
67
|
+
exit(1);
|
|
83
68
|
}
|
|
84
69
|
}
|
|
85
|
-
async function processOperations({
|
|
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
|
-
|
|
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
|
|
80
|
+
log('info', `📃 - ${operationsLeft.length} operations left.`);
|
|
97
81
|
return processOperations({
|
|
98
|
-
|
|
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({
|
|
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',
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const
|
|
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(
|
|
148
|
-
return
|
|
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
|
|
153
|
-
initHandler
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
const handlerPromise = initialize()
|
|
157
|
-
.then(handlerInitializer);
|
|
125
|
+
const initializationPromise = initialize();
|
|
158
126
|
|
|
159
|
-
|
|
160
|
-
return
|
|
161
|
-
|
|
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":"AAAA,
|
|
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"}
|
package/dist/libs/utils.d.ts
CHANGED
|
@@ -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
|
-
},
|
|
6
|
+
}, operationId: string, type: string, extension?: string): Promise<any>;
|
package/dist/libs/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { YError } from 'yerror';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
export async function loadFunction({ PROJECT_DIR, log, },
|
|
4
|
-
const modulePath = path.join(PROJECT_DIR, 'builds',
|
|
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);
|
package/dist/libs/utils.js.map
CHANGED
|
@@ -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,
|
|
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,31 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Injector, Autoloader, Initializer, Dependencies } from 'knifecycle';
|
|
3
|
-
import type {
|
|
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
|
|
6
|
-
*
|
|
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.
|
|
10
|
-
*
|
|
11
|
-
* @param {Object}
|
|
12
|
-
* A
|
|
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
|
|
33
|
+
declare const _default: import("knifecycle").ServiceInitializer<Dependencies<any> & import("@whook/whook").WhookWrappersConfig & {
|
|
19
34
|
PROJECT_SRC: string;
|
|
20
|
-
APP_CONFIG?: import("
|
|
21
|
-
WRAPPERS?: import("@whook/whook").WhookWrapper<Dependencies, import("@whook/http-transaction").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>>>>[] | undefined;
|
|
35
|
+
APP_CONFIG?: import("@whook/whook").WhookAutoloadConfig | undefined;
|
|
22
36
|
INITIALIZER_PATH_MAP?: import("@whook/whook").WhookInitializerMap | undefined;
|
|
23
37
|
WHOOK_PLUGINS_PATHS?: string[] | undefined;
|
|
24
38
|
$injector: Injector<any>;
|
|
25
39
|
importer: import("common-services").ImporterService<{
|
|
26
40
|
default: Initializer<any, Dependencies>;
|
|
27
41
|
}>;
|
|
28
|
-
resolve:
|
|
42
|
+
resolve: ResolveService;
|
|
29
43
|
log?: LogService | undefined;
|
|
30
44
|
}, Autoloader<Initializer<unknown, Dependencies>>>;
|
|
31
45
|
export default _default;
|