@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.
- package/README.md +55 -35
- package/dist/commands/testHTTPFunction.d.ts +2 -2
- package/dist/commands/testHTTPFunction.js +4 -2
- package/dist/commands/testHTTPFunction.js.map +1 -1
- package/dist/index.d.ts +27 -0
- package/dist/index.js +34 -66
- 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 +31 -15
- package/dist/services/_autoload.js +78 -26
- 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 +26 -0
- package/dist/wrappers/{googleHTTPFunction.js → wrapHandlerForGoogleHTTPFunction.js} +71 -63
- package/dist/wrappers/wrapHandlerForGoogleHTTPFunction.js.map +1 -0
- package/package.json +46 -42
- package/src/commands/testHTTPFunction.ts +5 -4
- package/src/index.test.ts +11 -0
- package/src/index.ts +45 -99
- package/src/libs/utils.ts +4 -2
- package/src/services/HANDLER.ts +41 -0
- package/src/services/_autoload.ts +134 -36
- package/src/services/log.ts +2 -2
- package/src/wrappers/{googleHTTPFunction.ts → wrapHandlerForGoogleHTTPFunction.ts} +135 -123
- 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
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# @whook/gcp-functions
|
|
8
8
|
> Build and deploy to GCP Cloud Functions with Whook.
|
|
9
9
|
|
|
10
|
-
[](https://github.com/nfroidure/whook/blob/
|
|
10
|
+
[](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
|
|
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,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
|
-
|
|
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 '
|
|
106
|
+
declare module 'application-services' {
|
|
109
107
|
|
|
110
108
|
// ...
|
|
111
109
|
|
|
112
|
-
export interface
|
|
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
|
-
|
|
141
|
+
// ...
|
|
142
|
+
import type { AppConfig } from 'application-services';
|
|
140
143
|
|
|
141
144
|
// ...
|
|
142
145
|
|
|
143
|
-
const CONFIG:
|
|
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.<Object></code>
|
|
198
|
+
Wrap an handler to make it work with cron AWS Lambda.
|
|
199
|
+
|
|
200
|
+
**Kind**: global function
|
|
201
|
+
**Returns**: <code>Promise.<Object></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/
|
|
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
|
-
|
|
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
|
|
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({
|
|
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');
|
|
@@ -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":"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":"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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 {
|
|
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":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,kCAAkC,IAAI,uCAAuC,EAC7E,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAiB5B,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,GAAG,uCAAuC;IAC1C,GAAG,EAAE,wCAAwC;CAC9C,CAAC;AAaF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAG5B,CAAC;AACrB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAIhC,CAAC;AACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAIb,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAO,IAAI,UAAU,EAAO;IAE5B,CAAC,CAAC,QAAQ,CACR,QAAQ,CAAC,sBAAsB,EAAE,kCAAkC,CAAC,CACrE,CAAC;IACF,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAChC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,wBAAwD;IAExD,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAC3C,MAAM,EACJ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,GAAG,EACH,SAAS,EACT,GAAG,EACH,gBAAgB,GACjB,GAQG,MAAM,CAAC,CAAC,GAAG,CAAC;YACd,SAAS;YACT,oBAAoB;YACpB,aAAa;YACb,SAAS;YACT,UAAU;YACV,KAAK;YACL,WAAW;YACX,KAAK;YACL,kBAAkB;SACnB,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;QAEhE,MAAM,UAAU,GAAG,CACjB,MAAM,4BAA4B,CAChC,GAAG,EACH,oBAAoB,CAAqC,GAAG,CAAC,CAC9D,CACF,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;YACrB,IAAI,WAAW,EAAE;gBACf,MAAM,iBAAiB,GACrB,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC;gBAEjE,OAAO,CACL,WAAW,KAAK,SAAS,CAAC,WAAW;oBACrC,WAAW,KAAK,iBAAiB,CAClC,CAAC;aACH;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,SAAS,EAAE,QAAQ,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAEnE,MAAM,iBAAiB,CACrB;YACE,OAAO;YACP,iBAAiB,EAAE,iBAAiB,IAAI,yBAAyB;YACjE,WAAW;YACX,QAAQ;YACR,GAAG;YACH,SAAS;YACT,gBAAgB;SACjB,EACD,UAAU,CACX,CAAC;QACF,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,CACV,kCAAkC,eAAe,CAAC,GAAY,CAAC,EAAE,CAClE,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,CAAC;KACT;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,EACE,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,GAAG,EACH,SAAS,EACT,gBAAgB,GAQjB,EACD,UAAgE;IAEhE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE3D,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACvD,cAAc,CACZ;QACE,OAAO;QACP,WAAW;QACX,QAAQ;QACR,GAAG;QACH,gBAAgB;KACjB,EACD,SAAS,CACV,CACF,CACF,CAAC;IAEF,IAAI,cAAc,CAAC,MAAM,EAAE;QACzB,GAAG,CAAC,MAAM,EAAE,QAAQ,cAAc,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC9D,OAAO,iBAAiB,CACtB;YACE,OAAO;YACP,iBAAiB;YACjB,WAAW;YACX,QAAQ;YACR,GAAG;YACH,SAAS;YACT,gBAAgB;SACjB,EACD,cAAc,CACf,CAAC;KACH;IACD,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,EACE,OAAO,EACP,WAAW,EACX,QAAQ,EACR,GAAG,EACH,gBAAgB,GAOjB,EACD,SAA6D;IAE7D,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAElC,IAAI;QACF,MAAM,WAAW,GAAuC,SAAS,CAC/D,SAAS,CACV,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC;QACjD,MAAM,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC;QACxD,MAAM,eAAe,GACnB,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAE9C,GAAG,CAAC,SAAS,EAAE,iBAAiB,aAAa,KAAK,eAAe,MAAM,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,WAAW,EACX,QAAQ,EACR,OAAO,EACP,eAAe,CAChB,CAAC;QAEF,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC;YAChD,qBAAqB,eAAe,EAAE;SACvC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CACzC,qBAAqB,eAAe,EAAE,CACvC,CAAC;QAEF,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,eAAe,CACb,EAAE,WAAW,EAAE,GAAG,EAAE,EACpB,UAAU,EACV,WAAW,CAAC,WAAW,IAAI,EAAE,CAC9B;YACD,eAAe,CACb,EAAE,GAAG,EAAE,EACP,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EACtC,kBAAkB,CACnB;YACD,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;SACzE,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;KACpE;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,EAAE,mBAAmB,WAAW,MAAM,CAAC,CAAC;QACnD,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,GAAY,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;KAChE;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,OAAO;;;;;;;kCAOyB,IAAI;;CAErC,CAAC;AACF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,EAAE,QAAQ,EAAE,GAAG,EAAuD,EACtE,UAAkB,EAClB,WAA+C;IAE/C,MAAM,UAAU,GAAG,GAAG,UAAU,UAAU,CAAC;IAC3C,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CACtD,UAAU,EACV,WAAW,CAAC,eAAe,CAC5B,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,eAAe,CACb,EAAE,GAAG,EAAE,EACP,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC,EAC3C,QAAQ,EACR,OAAO,CACR;QACD,QAAQ;YACN,CAAC,CAAC,eAAe,CACb,EAAE,GAAG,EAAE,EACP,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,SAAS,MAAM,CAAC,EAC/C,QAAQ,EACR,OAAO,CACR;YACH,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,EAAE,WAAW,EAAE,GAAG,EAA4C,EAC9D,UAAkB,EAClB,cAAwB,EAAE;IAE1B,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CACb,KAAK,EAAE,UAAU,EAAE,EAAE,CACnB,MAAM,SAAS,CACb,EAAE,GAAG,EAAE,EACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,EAClD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAClD,CACJ,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,EAAE,GAAG,EAAuB,EAC5B,MAAc,EACd,WAAmB;IAEnB,IAAI,QAAQ,CAAC;IACb,IAAI;QACF,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KAC5D;IAAC,OAAO,GAAG,EAAE;QACZ,QAAQ,GAAG,GAAG,CAAC;KAChB;IACD,IAAI,QAAQ,EAAE;QACZ,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE;YAC9B,MAAM,QAAQ,CAAC;SAChB;QACD,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE;YAClC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;KACJ;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,EAAE,GAAG,EAAuB,EAC5B,IAAY,EACZ,OAAe,EACf,QAAQ,GAAG,OAAO;IAElB,IAAI;QACF,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEvD,IAAI,UAAU,KAAK,OAAO,EAAE;YAC1B,GAAG,CAAC,OAAO,EAAE,2BAA2B,IAAI,IAAI,CAAC,CAAC;YAClD,OAAO;SACR;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,EAAE,oBAAoB,IAAI,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACtD;IACD,GAAG,CAAC,OAAO,EAAE,wBAAwB,IAAI,IAAI,CAAC,CAAC;IAC/C,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -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,29 +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
|
-
|
|
21
|
-
|
|
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
|
|
40
|
+
default: Initializer<any, Dependencies>;
|
|
25
41
|
}>;
|
|
26
|
-
resolve:
|
|
42
|
+
resolve: ResolveService;
|
|
27
43
|
log?: LogService | undefined;
|
|
28
|
-
}, Autoloader<Initializer<unknown, Dependencies
|
|
44
|
+
}, Autoloader<Initializer<unknown, Dependencies>>>;
|
|
29
45
|
export default _default;
|