@whook/gcp-functions 8.5.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -32
- package/dist/commands/testHTTPFunction.js.map +1 -1
- package/dist/commands/testHTTPFunction.mjs.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/libs/utils.js.map +1 -1
- package/dist/libs/utils.mjs.map +1 -1
- package/dist/services/_autoload.d.ts +14 -2
- package/dist/services/_autoload.js +27 -21
- package/dist/services/_autoload.js.map +1 -1
- package/dist/services/_autoload.mjs +27 -21
- package/dist/services/_autoload.mjs.map +1 -1
- package/dist/services/log.d.ts +4 -1
- package/dist/services/log.js.map +1 -1
- package/dist/services/log.mjs.map +1 -1
- package/dist/services/log.test.js +1 -1
- package/dist/services/log.test.js.map +1 -1
- package/dist/services/log.test.mjs +1 -1
- package/dist/services/log.test.mjs.map +1 -1
- package/dist/wrappers/googleHTTPFunction.js +15 -13
- package/dist/wrappers/googleHTTPFunction.js.map +1 -1
- package/dist/wrappers/googleHTTPFunction.mjs +15 -13
- package/dist/wrappers/googleHTTPFunction.mjs.map +1 -1
- package/package.json +35 -36
- package/src/commands/testHTTPFunction.ts +6 -6
- package/src/index.ts +34 -30
- package/src/libs/utils.ts +1 -1
- package/src/services/_autoload.ts +123 -119
- package/src/services/log.test.ts +1 -1
- package/src/wrappers/googleHTTPFunction.ts +30 -28
package/README.md
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
> Build and deploy to GCP Cloud Functions with Whook.
|
|
9
9
|
|
|
10
10
|
[](https://github.com/nfroidure/whook/blob/master/packages/whook-gcp-functions/LICENSE)
|
|
11
|
-
[](https://npmjs.org/package/@whook/gcp-functions)
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
[//]: # (::contents:start)
|
|
@@ -33,7 +32,11 @@ Add this module to your Whook plugins and tweak the 2 build functions in your
|
|
|
33
32
|
`build.ts` main file:
|
|
34
33
|
|
|
35
34
|
```diff
|
|
36
|
-
|
|
35
|
+
import {
|
|
36
|
+
// (...)
|
|
37
|
+
- runBuild as runBaseBuild,
|
|
38
|
+
// (...)
|
|
39
|
+
} from '@whook/whook';
|
|
37
40
|
+import {
|
|
38
41
|
+ runBuild as runBaseBuild,
|
|
39
42
|
+ prepareBuildEnvironment as prepareBaseBuildEnvironment,
|
|
@@ -61,20 +64,6 @@ export async function prepareEnvironment(
|
|
|
61
64
|
|
|
62
65
|
// (...)
|
|
63
66
|
|
|
64
|
-
// The `runBuild` function is intended to build the
|
|
65
|
-
// project
|
|
66
|
-
export async function runBuild(
|
|
67
|
-
innerPrepareEnvironment = prepareBuildEnvironment,
|
|
68
|
-
): Promise<void> {
|
|
69
|
-
- throw new YError('E_NO_BUILD_IMPLEMENTED');
|
|
70
|
-
|
|
71
|
-
// Usually, here you call the installed build
|
|
72
|
-
- // return runBaseBuild(innerPrepareEnvironment);
|
|
73
|
-
+ return runBaseBuild(innerPrepareEnvironment);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// (...)
|
|
77
|
-
|
|
78
67
|
// The `prepareBuildEnvironment` create the build
|
|
79
68
|
// environment
|
|
80
69
|
export async function prepareBuildEnvironment(
|
|
@@ -109,35 +98,58 @@ export async function prepareBuildEnvironment(
|
|
|
109
98
|
}
|
|
110
99
|
```
|
|
111
100
|
|
|
112
|
-
|
|
113
|
-
|
|
101
|
+
Declare this module types in your `src/whook.d.ts` type
|
|
102
|
+
definitions:
|
|
114
103
|
```diff
|
|
115
104
|
+ import type { WhookCompilerConfig } from '@whook/whook';
|
|
116
105
|
+ import type {
|
|
117
|
-
+
|
|
106
|
+
+ WhookGCPBuildConfig,
|
|
107
|
+
+ WhookAPIOperationGCPFunctionConfig
|
|
118
108
|
+ } from '@whook/gcp-functions';
|
|
119
109
|
|
|
120
|
-
|
|
110
|
+
declare module '@whook/whook' {
|
|
111
|
+
|
|
112
|
+
// ...
|
|
121
113
|
|
|
122
|
-
export
|
|
123
|
-
|
|
124
|
-
|
|
114
|
+
export interface WhookConfigs
|
|
115
|
+
- extends WhookBaseConfigs {}
|
|
116
|
+
+ extends WhookBaseConfigs,
|
|
117
|
+
+ WhookGCPBuildConfig,
|
|
118
|
+
+ WhookCompilerConfig {}
|
|
125
119
|
|
|
126
|
-
|
|
120
|
+
// ...
|
|
121
|
+
|
|
122
|
+
export interface WhookAPIHandlerDefinition<
|
|
123
|
+
T extends Record<string, unknown> = Record<string, unknown>,
|
|
124
|
+
U extends {
|
|
125
|
+
[K in keyof U]: K extends `x-${string}` ? Record<string, unknown> : never;
|
|
126
|
+
} = unknown,
|
|
127
|
+
V extends Record<string, unknown> = Record<string, unknown>,
|
|
128
|
+
> extends WhookBaseAPIHandlerDefinition<T, U> {
|
|
129
|
+
operation: U & WhookAPIOperation<
|
|
130
|
+
T &
|
|
131
|
+
+ WhookAPIOperationGCPFunctionConfig &
|
|
132
|
+
WhookAPIOperationCORSConfig
|
|
133
|
+
>;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
And add the GCP Functions config (usually in `src/config/common/config.js`):
|
|
139
|
+
|
|
140
|
+
```diff
|
|
141
|
+
import type { WhookConfigs } from '@whook/whook';
|
|
142
|
+
|
|
143
|
+
// ...
|
|
144
|
+
|
|
145
|
+
const CONFIG: WhookConfigs = {
|
|
127
146
|
// ...
|
|
128
147
|
+ COMPILER_OPTIONS: {
|
|
129
148
|
+ externalModules: [],
|
|
130
|
-
+
|
|
131
|
-
+ target: '12', // Node 14 is in public review
|
|
149
|
+
+ target: '14',
|
|
132
150
|
+ },
|
|
133
151
|
};
|
|
134
152
|
|
|
135
|
-
// Export custom handlers definitions
|
|
136
|
-
export type APIHandlerDefinition = WhookAPIHandlerDefinition<
|
|
137
|
-
+ WhookAPIOperationGCPFunctionConfig &
|
|
138
|
-
WhookAPIOperationSwaggerConfig
|
|
139
|
-
>;
|
|
140
|
-
|
|
141
153
|
export default CONFIG;
|
|
142
154
|
```
|
|
143
155
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"testHTTPFunction.js","names":["SEARCH_SEPARATOR","PATH_SEPARATOR","definition","description","example","arguments","type","additionalProperties","required","properties","name","enum","default","contentType","parameters","extra","autoService","initTestHTTPLambdaCommand","NODE_ENV","PROJECT_DIR","API","log","args","rawParameters","readArgs","handler","loadLambda","OPERATION","dereferenceOpenAPIOperations","getOpenAPIOperations","find","operationId","YError","hasBody","requestBody","JSON","parse","search","filter","p","in","reduce","accSearch","path","split","map","part","matches","exec","join","gcpfRequest","method","originalUrl","headers","headerParameters","camelCase","rawBody","Buffer","from","body","stringify","response","status","data","Promise","resolve","reject","gcpfResponse","stream","PassThrough","set","value","code","catch","chunks","once","concat","toString","on","read","push"],"sources":["../../src/commands/testHTTPFunction.ts"],"sourcesContent":["import { loadLambda } from '../libs/utils';\nimport { extra, autoService } from 'knifecycle';\nimport { readArgs } from '@whook/cli';\nimport YError from 'yerror';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport stream from 'stream';\nimport camelCase from 'camelcase';\nimport type {\n WhookCommandArgs,\n WhookCommandDefinition,\n WhookCommandNamedArgs,\n} from '@whook/cli';\nimport type { LogService } from 'common-services';\nimport type { OpenAPIV3 } from 'openapi-types';\n\nconst SEARCH_SEPARATOR = '?';\nconst PATH_SEPARATOR = '/';\n\nexport const definition: WhookCommandDefinition = {\n description: 'A command for testing AWS HTTP lambda',\n example: `whook testHTTPLambda --name getPing`,\n arguments: {\n type: 'object',\n additionalProperties: false,\n required: ['name'],\n properties: {\n name: {\n description: 'Name of the lamda to run',\n type: 'string',\n },\n type: {\n description: 'Type of lambda to test',\n type: 'string',\n enum: ['main', 'index'],\n default: 'index',\n },\n contentType: {\n description: 'Content type of the payload',\n type: 'string',\n default: 'application/json',\n },\n parameters: {\n description: 'The HTTP call parameters',\n type: 'string',\n default: '{}',\n },\n },\n },\n};\n\nexport default extra(definition, autoService(initTestHTTPLambdaCommand));\n\nasync function initTestHTTPLambdaCommand({\n NODE_ENV,\n PROJECT_DIR,\n API,\n log,\n args,\n}: {\n NODE_ENV: string;\n PROJECT_DIR: string;\n API: OpenAPIV3.Document;\n log: LogService;\n args: WhookCommandArgs;\n}) {\n return async () => {\n const {\n name,\n type,\n contentType,\n parameters: rawParameters,\n }: WhookCommandNamedArgs = readArgs(definition.arguments, args) as {\n name: string;\n type: string;\n contentType: string;\n parameters: string;\n };\n const handler = await loadLambda(\n { PROJECT_DIR, log },\n NODE_ENV,\n name,\n type,\n );\n const OPERATION = (\n await dereferenceOpenAPIOperations(API, getOpenAPIOperations(API))\n ).find(({ operationId }) => operationId === name);\n\n if (!OPERATION) {\n throw new YError('E_OPERATION_NOT_FOUND');\n }\n\n const hasBody = !!OPERATION.requestBody;\n const parameters = JSON.parse(rawParameters);\n const search = ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'query')\n .reduce((accSearch, p) => {\n if (null != parameters[p.name]) {\n return (\n accSearch +\n (accSearch ? '&' : '') +\n p.name +\n '=' +\n parameters[p.name]\n );\n }\n return accSearch;\n }, '');\n\n const path = OPERATION.path\n .split(PATH_SEPARATOR)\n\n .map((part) => {\n const matches = /^\\{([\\d\\w]+)\\}$/i.exec(part);\n\n if (matches) {\n return parameters[matches[1]];\n }\n return part;\n })\n .join(PATH_SEPARATOR);\n const gcpfRequest = {\n method: OPERATION.method,\n originalUrl: path + (search ? SEARCH_SEPARATOR + search : ''),\n headers: ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'header')\n .reduce((headerParameters, p) => {\n headerParameters[p.name] = parameters[camelCase(p.name)];\n return headerParameters;\n }, {}),\n rawBody: Buffer.from(\n hasBody\n ? contentType === 'application/json'\n ? parameters.body\n ? JSON.stringify(parameters.body)\n : ''\n : parameters.body || ''\n : '',\n ),\n };\n if (hasBody) {\n gcpfRequest.headers['content-type'] = `${contentType};charset=UTF-8`;\n }\n log('info', 'GCPF_REQUEST:', gcpfRequest as unknown as string);\n\n const response = {\n status: 0,\n headers: {},\n data: '',\n };\n await new Promise<void>((resolve, reject) => {\n const gcpfResponse = new stream.PassThrough();\n\n (gcpfResponse as any).set = (name: string, value: string): void => {\n response.headers[name] = value;\n };\n (gcpfResponse as any).status = (code: number): void => {\n response.status = code;\n };\n\n handler(gcpfRequest, gcpfResponse).catch(reject);\n\n const chunks = [] as Buffer[];\n\n gcpfResponse.once('end', () => {\n response.data = Buffer.concat(chunks).toString();\n resolve();\n });\n gcpfResponse.once('error', reject);\n gcpfResponse.on('readable', () => {\n let data: Buffer;\n while ((data = gcpfResponse.read())) {\n chunks.push(data);\n }\n });\n });\n log('info', 'SUCCESS:', response);\n };\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;;;AASA,MAAMA,gBAAgB,GAAG,GAAzB;AACA,MAAMC,cAAc,GAAG,GAAvB;AAEO,MAAMC,UAAkC,GAAG;EAChDC,WAAW,EAAE,uCADmC;EAEhDC,OAAO,EAAG,qCAFsC;EAGhDC,SAAS,EAAE;IACTC,IAAI,EAAE,QADG;IAETC,oBAAoB,EAAE,KAFb;IAGTC,QAAQ,EAAE,CAAC,MAAD,CAHD;IAITC,UAAU,EAAE;MACVC,IAAI,EAAE;QACJP,WAAW,EAAE,0BADT;QAEJG,IAAI,EAAE;MAFF,CADI;MAKVA,IAAI,EAAE;QACJH,WAAW,EAAE,wBADT;QAEJG,IAAI,EAAE,QAFF;QAGJK,IAAI,EAAE,CAAC,MAAD,EAAS,OAAT,CAHF;QAIJC,OAAO,EAAE;MAJL,CALI;MAWVC,WAAW,EAAE;QACXV,WAAW,EAAE,6BADF;QAEXG,IAAI,EAAE,QAFK;QAGXM,OAAO,EAAE;MAHE,CAXH;MAgBVE,UAAU,EAAE;QACVX,WAAW,EAAE,0BADH;QAEVG,IAAI,EAAE,QAFI;QAGVM,OAAO,EAAE;MAHC;IAhBF;EAJH;AAHqC,CAA3C;;;eAgCQ,IAAAG,iBAAA,EAAMb,UAAN,EAAkB,IAAAc,mBAAA,EAAYC,yBAAZ,6EAAlB,C;;;;AAEf,eAAeA,yBAAf,CAAyC;EACvCC,QADuC;EAEvCC,WAFuC;EAGvCC,GAHuC;EAIvCC,GAJuC;EAKvCC;AALuC,CAAzC,EAYG;EACD,OAAO,YAAY;IACjB,MAAM;MACJZ,IADI;MAEJJ,IAFI;MAGJO,WAHI;MAIJC,UAAU,EAAES;IAJR,IAKqB,IAAAC,aAAA,EAAStB,UAAU,CAACG,SAApB,EAA+BiB,IAA/B,CAL3B;IAWA,MAAMG,OAAO,GAAG,MAAM,IAAAC,iBAAA,EACpB;MAAEP,WAAF;MAAeE;IAAf,CADoB,EAEpBH,QAFoB,EAGpBR,IAHoB,EAIpBJ,IAJoB,CAAtB;IAMA,MAAMqB,SAAS,GAAG,CAChB,MAAM,IAAAC,wCAAA,EAA6BR,GAA7B,EAAkC,IAAAS,gCAAA,EAAqBT,GAArB,CAAlC,CADU,EAEhBU,IAFgB,CAEX,CAAC;MAAEC;IAAF,CAAD,KAAqBA,WAAW,KAAKrB,IAF1B,CAAlB;;IAIA,IAAI,CAACiB,SAAL,EAAgB;MACd,MAAM,IAAIK,eAAJ,CAAW,uBAAX,CAAN;IACD;;IAED,MAAMC,OAAO,GAAG,CAAC,CAACN,SAAS,CAACO,WAA5B;IACA,MAAMpB,UAAU,GAAGqB,IAAI,CAACC,KAAL,CAAWb,aAAX,CAAnB;IACA,MAAMc,MAAM,GAAG,CAAEV,SAAS,CAACb,UAAV,IAAwB,EAA1B,EACZwB,MADY,CACJC,CAAD,IAAOA,CAAC,CAACC,EAAF,KAAS,OADX,EAEZC,MAFY,CAEL,CAACC,SAAD,EAAYH,CAAZ,KAAkB;MACxB,IAAI,QAAQzB,UAAU,CAACyB,CAAC,CAAC7B,IAAH,CAAtB,EAAgC;QAC9B,OACEgC,SAAS,IACRA,SAAS,GAAG,GAAH,GAAS,EADV,CAAT,GAEAH,CAAC,CAAC7B,IAFF,GAGA,GAHA,GAIAI,UAAU,CAACyB,CAAC,CAAC7B,IAAH,CALZ;MAOD;;MACD,OAAOgC,SAAP;IACD,CAbY,EAaV,EAbU,CAAf;IAeA,MAAMC,IAAI,GAAGhB,SAAS,CAACgB,IAAV,CACVC,KADU,CACJ3C,cADI,EAGV4C,GAHU,CAGLC,IAAD,IAAU;MACb,MAAMC,OAAO,GAAG,mBAAmBC,IAAnB,CAAwBF,IAAxB,CAAhB;;MAEA,IAAIC,OAAJ,EAAa;QACX,OAAOjC,UAAU,CAACiC,OAAO,CAAC,CAAD,CAAR,CAAjB;MACD;;MACD,OAAOD,IAAP;IACD,CAVU,EAWVG,IAXU,CAWLhD,cAXK,CAAb;IAYA,MAAMiD,WAAW,GAAG;MAClBC,MAAM,EAAExB,SAAS,CAACwB,MADA;MAElBC,WAAW,EAAET,IAAI,IAAIN,MAAM,GAAGrC,gBAAgB,GAAGqC,MAAtB,GAA+B,EAAzC,CAFC;MAGlBgB,OAAO,EAAE,CAAE1B,SAAS,CAACb,UAAV,IAAwB,EAA1B,EACNwB,MADM,CACEC,CAAD,IAAOA,CAAC,CAACC,EAAF,KAAS,QADjB,EAENC,MAFM,CAEC,CAACa,gBAAD,EAAmBf,CAAnB,KAAyB;QAC/Be,gBAAgB,CAACf,CAAC,CAAC7B,IAAH,CAAhB,GAA2BI,UAAU,CAAC,IAAAyC,kBAAA,EAAUhB,CAAC,CAAC7B,IAAZ,CAAD,CAArC;QACA,OAAO4C,gBAAP;MACD,CALM,EAKJ,EALI,CAHS;MASlBE,OAAO,EAAEC,MAAM,CAACC,IAAP,CACPzB,OAAO,GACHpB,WAAW,KAAK,kBAAhB,GACEC,UAAU,CAAC6C,IAAX,GACExB,IAAI,CAACyB,SAAL,CAAe9C,UAAU,CAAC6C,IAA1B,CADF,GAEE,EAHJ,GAIE7C,UAAU,CAAC6C,IAAX,IAAmB,EALlB,GAMH,EAPG;IATS,CAApB;;IAmBA,IAAI1B,OAAJ,EAAa;MACXiB,WAAW,CAACG,OAAZ,CAAoB,cAApB,IAAuC,GAAExC,WAAY,gBAArD;IACD;;IACDQ,GAAG,CAAC,MAAD,EAAS,eAAT,EAA0B6B,WAA1B,CAAH;IAEA,MAAMW,QAAQ,GAAG;MACfC,MAAM,EAAE,CADO;MAEfT,OAAO,EAAE,EAFM;MAGfU,IAAI,EAAE;IAHS,CAAjB;IAKA,MAAM,IAAIC,OAAJ,CAAkB,CAACC,OAAD,EAAUC,MAAV,KAAqB;MAC3C,MAAMC,YAAY,GAAG,IAAIC,eAAA,CAAOC,WAAX,EAArB;;MAECF,YAAD,CAAsBG,GAAtB,GAA4B,CAAC5D,IAAD,EAAe6D,KAAf,KAAuC;QACjEV,QAAQ,CAACR,OAAT,CAAiB3C,IAAjB,IAAyB6D,KAAzB;MACD,CAFD;;MAGCJ,YAAD,CAAsBL,MAAtB,GAAgCU,IAAD,IAAwB;QACrDX,QAAQ,CAACC,MAAT,GAAkBU,IAAlB;MACD,CAFD;;MAIA/C,OAAO,CAACyB,WAAD,EAAciB,YAAd,CAAP,CAAmCM,KAAnC,CAAyCP,MAAzC;MAEA,MAAMQ,MAAM,GAAG,EAAf;MAEAP,YAAY,CAACQ,IAAb,CAAkB,KAAlB,EAAyB,MAAM;QAC7Bd,QAAQ,CAACE,IAAT,GAAgBN,MAAM,CAACmB,MAAP,CAAcF,MAAd,EAAsBG,QAAtB,EAAhB;QACAZ,OAAO;MACR,CAHD;MAIAE,YAAY,CAACQ,IAAb,CAAkB,OAAlB,EAA2BT,MAA3B;MACAC,YAAY,CAACW,EAAb,CAAgB,UAAhB,EAA4B,MAAM;QAChC,IAAIf,IAAJ;;QACA,OAAQA,IAAI,GAAGI,YAAY,CAACY,IAAb,EAAf,EAAqC;UACnCL,MAAM,CAACM,IAAP,CAAYjB,IAAZ;QACD;MACF,CALD;IAMD,CAzBK,CAAN;IA0BA1C,GAAG,CAAC,MAAD,EAAS,UAAT,EAAqBwC,QAArB,CAAH;EACD,CA/GD;AAgHD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/testHTTPFunction.ts"],"names":["loadLambda","extra","autoService","readArgs","YError","dereferenceOpenAPIOperations","getOpenAPIOperations","stream","camelCase","SEARCH_SEPARATOR","PATH_SEPARATOR","definition","description","example","arguments","type","additionalProperties","required","properties","name","enum","default","contentType","parameters","initTestHTTPLambdaCommand","NODE_ENV","PROJECT_DIR","API","log","args","rawParameters","handler","OPERATION","find","operationId","hasBody","requestBody","JSON","parse","search","filter","p","in","reduce","accSearch","path","split","map","part","matches","exec","join","gcpfRequest","method","originalUrl","headers","headerParameters","rawBody","Buffer","from","body","stringify","response","status","data","Promise","resolve","reject","gcpfResponse","PassThrough","set","value","code","catch","chunks","once","concat","toString","on","read","push"],"mappings":"AAAA,SAASA,UAAT,QAA2B,eAA3B;AACA,SAASC,KAAT,EAAgBC,OAAW,IAAXA,QAAhB,QAAmC,YAAnC;AACA,SAASC,QAAT,QAAyB,YAAzB;AACA,OAAOC,MAAP,MAAmB,QAAnB;AACA,SACEC,4BADF,EAEEC,oBAFF,QAGO,oBAHP;AAIA,OAAOC,MAAP,MAAmB,QAAnB;AACA,OAAOC,SAAP,MAAsB,WAAtB;AASA,MAAMC,gBAAgB,GAAG,GAAzB;AACA,MAAMC,cAAc,GAAG,GAAvB;AAEA,OAAO,MAAMC,UAAkC,GAAG;AAChDC,EAAAA,WAAW,EAAE,uCADmC;AAEhDC,EAAAA,OAAO,EAAG,qCAFsC;AAGhDC,EAAAA,SAAS,EAAE;AACTC,IAAAA,IAAI,EAAE,QADG;AAETC,IAAAA,oBAAoB,EAAE,KAFb;AAGTC,IAAAA,QAAQ,EAAE,CAAC,MAAD,CAHD;AAITC,IAAAA,UAAU,EAAE;AACVC,MAAAA,IAAI,EAAE;AACJP,QAAAA,WAAW,EAAE,0BADT;AAEJG,QAAAA,IAAI,EAAE;AAFF,OADI;AAKVA,MAAAA,IAAI,EAAE;AACJH,QAAAA,WAAW,EAAE,wBADT;AAEJG,QAAAA,IAAI,EAAE,QAFF;AAGJK,QAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,OAAT,CAHF;AAIJC,QAAAA,OAAO,EAAE;AAJL,OALI;AAWVC,MAAAA,WAAW,EAAE;AACXV,QAAAA,WAAW,EAAE,6BADF;AAEXG,QAAAA,IAAI,EAAE,QAFK;AAGXM,QAAAA,OAAO,EAAE;AAHE,OAXH;AAgBVE,MAAAA,UAAU,EAAE;AACVX,QAAAA,WAAW,EAAE,0BADH;AAEVG,QAAAA,IAAI,EAAE,QAFI;AAGVM,QAAAA,OAAO,EAAE;AAHC;AAhBF;AAJH;AAHqC,CAA3C;AAgCP,eAAepB,KAAK,CAACU,UAAD,EAAaT,QAAW,CAACsB,yBAAD,6EAAxB,CAApB;;AAEA,eAAeA,yBAAf,CAAyC;AACvCC,EAAAA,QADuC;AAEvCC,EAAAA,WAFuC;AAGvCC,EAAAA,GAHuC;AAIvCC,EAAAA,GAJuC;AAKvCC,EAAAA;AALuC,CAAzC,EAYG;AACD,SAAO,YAAY;AACjB,UAAM;AACJV,MAAAA,IADI;AAEJJ,MAAAA,IAFI;AAGJO,MAAAA,WAHI;AAIJC,MAAAA,UAAU,EAAEO;AAJR,QAKqB3B,QAAQ,CAACQ,UAAU,CAACG,SAAZ,EAAuBe,IAAvB,CALnC;AAWA,UAAME,OAAO,GAAG,MAAM/B,UAAU,CAC9B;AAAE0B,MAAAA,WAAF;AAAeE,MAAAA;AAAf,KAD8B,EAE9BH,QAF8B,EAG9BN,IAH8B,EAI9BJ,IAJ8B,CAAhC;AAMA,UAAMiB,SAAS,GAAG,CAChB,MAAM3B,4BAA4B,CAACsB,GAAD,EAAMrB,oBAAoB,CAACqB,GAAD,CAA1B,CADlB,EAEhBM,IAFgB,CAEX,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAqBA,WAAW,KAAKf,IAF1B,CAAlB;;AAIA,QAAI,CAACa,SAAL,EAAgB;AACd,YAAM,IAAI5B,MAAJ,CAAW,uBAAX,CAAN;AACD;;AAED,UAAM+B,OAAO,GAAG,CAAC,CAACH,SAAS,CAACI,WAA5B;AACA,UAAMb,UAAU,GAAGc,IAAI,CAACC,KAAL,CAAWR,aAAX,CAAnB;AACA,UAAMS,MAAM,GAAG,CAAEP,SAAS,CAACT,UAAV,IAAwB,EAA1B,EACZiB,MADY,CACJC,CAAD,IAAOA,CAAC,CAACC,EAAF,KAAS,OADX,EAEZC,MAFY,CAEL,CAACC,SAAD,EAAYH,CAAZ,KAAkB;AACxB,UAAI,QAAQlB,UAAU,CAACkB,CAAC,CAACtB,IAAH,CAAtB,EAAgC;AAC9B,eACEyB,SAAS,IACRA,SAAS,GAAG,GAAH,GAAS,EADV,CAAT,GAEAH,CAAC,CAACtB,IAFF,GAGA,GAHA,GAIAI,UAAU,CAACkB,CAAC,CAACtB,IAAH,CALZ;AAOD;;AACD,aAAOyB,SAAP;AACD,KAbY,EAaV,EAbU,CAAf;AAeA,UAAMC,IAAI,GAAGb,SAAS,CAACa,IAAV,CACVC,KADU,CACJpC,cADI,EAGVqC,GAHU,CAGLC,IAAD,IAAU;AACb,YAAMC,OAAO,GAAG,mBAAmBC,IAAnB,CAAwBF,IAAxB,CAAhB;;AAEA,UAAIC,OAAJ,EAAa;AACX,eAAO1B,UAAU,CAAC0B,OAAO,CAAC,CAAD,CAAR,CAAjB;AACD;;AACD,aAAOD,IAAP;AACD,KAVU,EAWVG,IAXU,CAWLzC,cAXK,CAAb;AAYA,UAAM0C,WAAW,GAAG;AAClBC,MAAAA,MAAM,EAAErB,SAAS,CAACqB,MADA;AAElBC,MAAAA,WAAW,EAAET,IAAI,IAAIN,MAAM,GAAG9B,gBAAgB,GAAG8B,MAAtB,GAA+B,EAAzC,CAFC;AAGlBgB,MAAAA,OAAO,EAAE,CAAEvB,SAAS,CAACT,UAAV,IAAwB,EAA1B,EACNiB,MADM,CACEC,CAAD,IAAOA,CAAC,CAACC,EAAF,KAAS,QADjB,EAENC,MAFM,CAEC,CAACa,gBAAD,EAAmBf,CAAnB,KAAyB;AAC/Be,QAAAA,gBAAgB,CAACf,CAAC,CAACtB,IAAH,CAAhB,GAA2BI,UAAU,CAACf,SAAS,CAACiC,CAAC,CAACtB,IAAH,CAAV,CAArC;AACA,eAAOqC,gBAAP;AACD,OALM,EAKJ,EALI,CAHS;AASlBC,MAAAA,OAAO,EAAEC,MAAM,CAACC,IAAP,CACPxB,OAAO,GACHb,WAAW,KAAK,kBAAhB,GACEC,UAAU,CAACqC,IAAX,GACEvB,IAAI,CAACwB,SAAL,CAAetC,UAAU,CAACqC,IAA1B,CADF,GAEE,EAHJ,GAIErC,UAAU,CAACqC,IAAX,IAAmB,EALlB,GAMH,EAPG;AATS,KAApB;;AAmBA,QAAIzB,OAAJ,EAAa;AACXiB,MAAAA,WAAW,CAACG,OAAZ,CAAoB,cAApB,IAAuC,GAAEjC,WAAY,gBAArD;AACD;;AACDM,IAAAA,GAAG,CAAC,MAAD,EAAS,eAAT,EAA0BwB,WAA1B,CAAH;AAEA,UAAMU,QAAQ,GAAG;AACfC,MAAAA,MAAM,EAAE,CADO;AAEfR,MAAAA,OAAO,EAAE,EAFM;AAGfS,MAAAA,IAAI,EAAE;AAHS,KAAjB;AAKA,UAAM,IAAIC,OAAJ,CAAkB,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC3C,YAAMC,YAAiB,GAAG,IAAI7D,MAAM,CAAC8D,WAAX,EAA1B;;AAEAD,MAAAA,YAAY,CAACE,GAAb,GAAmB,CAACnD,IAAD,EAAeoD,KAAf,KAAiC;AAClDT,QAAAA,QAAQ,CAACP,OAAT,CAAiBpC,IAAjB,IAAyBoD,KAAzB;AACD,OAFD;;AAGAH,MAAAA,YAAY,CAACL,MAAb,GAAuBS,IAAD,IAAkB;AACtCV,QAAAA,QAAQ,CAACC,MAAT,GAAkBS,IAAlB;AACD,OAFD;;AAIAzC,MAAAA,OAAO,CAACqB,WAAD,EAAcgB,YAAd,CAAP,CAAmCK,KAAnC,CAAyCN,MAAzC;AAEA,YAAMO,MAAM,GAAG,EAAf;AAEAN,MAAAA,YAAY,CAACO,IAAb,CAAkB,KAAlB,EAAyB,MAAM;AAC7Bb,QAAAA,QAAQ,CAACE,IAAT,GAAgBN,MAAM,CAACkB,MAAP,CAAcF,MAAd,EAAsBG,QAAtB,EAAhB;AACAX,QAAAA,OAAO;AACR,OAHD;AAIAE,MAAAA,YAAY,CAACO,IAAb,CAAkB,OAAlB,EAA2BR,MAA3B;AACAC,MAAAA,YAAY,CAACU,EAAb,CAAgB,UAAhB,EAA4B,MAAM;AAChC,YAAId,IAAJ;;AACA,eAAQA,IAAI,GAAGI,YAAY,CAACW,IAAb,EAAf,EAAqC;AACnCL,UAAAA,MAAM,CAACM,IAAP,CAAYhB,IAAZ;AACD;AACF,OALD;AAMD,KAzBK,CAAN;AA0BApC,IAAAA,GAAG,CAAC,MAAD,EAAS,UAAT,EAAqBkC,QAArB,CAAH;AACD,GA/GD;AAgHD","sourcesContent":["import { loadLambda } from '../libs/utils';\nimport { extra, autoService } from 'knifecycle';\nimport { readArgs } from '@whook/cli';\nimport YError from 'yerror';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport stream from 'stream';\nimport camelCase from 'camelcase';\nimport type {\n WhookCommandArgs,\n WhookCommandDefinition,\n WhookCommandNamedArgs,\n} from '@whook/cli';\nimport type { LogService } from 'common-services';\nimport type { OpenAPIV3 } from 'openapi-types';\n\nconst SEARCH_SEPARATOR = '?';\nconst PATH_SEPARATOR = '/';\n\nexport const definition: WhookCommandDefinition = {\n description: 'A command for testing AWS HTTP lambda',\n example: `whook testHTTPLambda --name getPing`,\n arguments: {\n type: 'object',\n additionalProperties: false,\n required: ['name'],\n properties: {\n name: {\n description: 'Name of the lamda to run',\n type: 'string',\n },\n type: {\n description: 'Type of lambda to test',\n type: 'string',\n enum: ['main', 'index'],\n default: 'index',\n },\n contentType: {\n description: 'Content type of the payload',\n type: 'string',\n default: 'application/json',\n },\n parameters: {\n description: 'The HTTP call parameters',\n type: 'string',\n default: '{}',\n },\n },\n },\n};\n\nexport default extra(definition, autoService(initTestHTTPLambdaCommand));\n\nasync function initTestHTTPLambdaCommand({\n NODE_ENV,\n PROJECT_DIR,\n API,\n log,\n args,\n}: {\n NODE_ENV: string;\n PROJECT_DIR: string;\n API: OpenAPIV3.Document;\n log: LogService;\n args: WhookCommandArgs;\n}) {\n return async () => {\n const {\n name,\n type,\n contentType,\n parameters: rawParameters,\n }: WhookCommandNamedArgs = readArgs(definition.arguments, args) as {\n name: string;\n type: string;\n contentType: string;\n parameters: string;\n };\n const handler = await loadLambda(\n { PROJECT_DIR, log },\n NODE_ENV,\n name,\n type,\n );\n const OPERATION = (\n await dereferenceOpenAPIOperations(API, getOpenAPIOperations(API))\n ).find(({ operationId }) => operationId === name);\n\n if (!OPERATION) {\n throw new YError('E_OPERATION_NOT_FOUND');\n }\n\n const hasBody = !!OPERATION.requestBody;\n const parameters = JSON.parse(rawParameters);\n const search = ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'query')\n .reduce((accSearch, p) => {\n if (null != parameters[p.name]) {\n return (\n accSearch +\n (accSearch ? '&' : '') +\n p.name +\n '=' +\n parameters[p.name]\n );\n }\n return accSearch;\n }, '');\n\n const path = OPERATION.path\n .split(PATH_SEPARATOR)\n\n .map((part) => {\n const matches = /^\\{([\\d\\w]+)\\}$/i.exec(part);\n\n if (matches) {\n return parameters[matches[1]];\n }\n return part;\n })\n .join(PATH_SEPARATOR);\n const gcpfRequest = {\n method: OPERATION.method,\n originalUrl: path + (search ? SEARCH_SEPARATOR + search : ''),\n headers: ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'header')\n .reduce((headerParameters, p) => {\n headerParameters[p.name] = parameters[camelCase(p.name)];\n return headerParameters;\n }, {}),\n rawBody: Buffer.from(\n hasBody\n ? contentType === 'application/json'\n ? parameters.body\n ? JSON.stringify(parameters.body)\n : ''\n : parameters.body || ''\n : '',\n ),\n };\n if (hasBody) {\n gcpfRequest.headers['content-type'] = `${contentType};charset=UTF-8`;\n }\n log('info', 'GCPF_REQUEST:', gcpfRequest);\n\n const response = {\n status: 0,\n headers: {},\n data: '',\n };\n await new Promise<void>((resolve, reject) => {\n const gcpfResponse: any = new stream.PassThrough();\n\n gcpfResponse.set = (name: string, value: string) => {\n response.headers[name] = value;\n };\n gcpfResponse.status = (code: number) => {\n response.status = code;\n };\n\n handler(gcpfRequest, gcpfResponse).catch(reject);\n\n const chunks = [];\n\n gcpfResponse.once('end', () => {\n response.data = Buffer.concat(chunks).toString();\n resolve();\n });\n gcpfResponse.once('error', reject);\n gcpfResponse.on('readable', () => {\n let data;\n while ((data = gcpfResponse.read())) {\n chunks.push(data);\n }\n });\n });\n log('info', 'SUCCESS:', response);\n };\n}\n"],"file":"testHTTPFunction.mjs"}
|
|
1
|
+
{"version":3,"file":"testHTTPFunction.mjs","names":["loadLambda","extra","autoService","readArgs","YError","dereferenceOpenAPIOperations","getOpenAPIOperations","stream","camelCase","SEARCH_SEPARATOR","PATH_SEPARATOR","definition","description","example","arguments","type","additionalProperties","required","properties","name","enum","default","contentType","parameters","initTestHTTPLambdaCommand","NODE_ENV","PROJECT_DIR","API","log","args","rawParameters","handler","OPERATION","find","operationId","hasBody","requestBody","JSON","parse","search","filter","p","in","reduce","accSearch","path","split","map","part","matches","exec","join","gcpfRequest","method","originalUrl","headers","headerParameters","rawBody","Buffer","from","body","stringify","response","status","data","Promise","resolve","reject","gcpfResponse","PassThrough","set","value","code","catch","chunks","once","concat","toString","on","read","push"],"sources":["../../src/commands/testHTTPFunction.ts"],"sourcesContent":["import { loadLambda } from '../libs/utils';\nimport { extra, autoService } from 'knifecycle';\nimport { readArgs } from '@whook/cli';\nimport YError from 'yerror';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport stream from 'stream';\nimport camelCase from 'camelcase';\nimport type {\n WhookCommandArgs,\n WhookCommandDefinition,\n WhookCommandNamedArgs,\n} from '@whook/cli';\nimport type { LogService } from 'common-services';\nimport type { OpenAPIV3 } from 'openapi-types';\n\nconst SEARCH_SEPARATOR = '?';\nconst PATH_SEPARATOR = '/';\n\nexport const definition: WhookCommandDefinition = {\n description: 'A command for testing AWS HTTP lambda',\n example: `whook testHTTPLambda --name getPing`,\n arguments: {\n type: 'object',\n additionalProperties: false,\n required: ['name'],\n properties: {\n name: {\n description: 'Name of the lamda to run',\n type: 'string',\n },\n type: {\n description: 'Type of lambda to test',\n type: 'string',\n enum: ['main', 'index'],\n default: 'index',\n },\n contentType: {\n description: 'Content type of the payload',\n type: 'string',\n default: 'application/json',\n },\n parameters: {\n description: 'The HTTP call parameters',\n type: 'string',\n default: '{}',\n },\n },\n },\n};\n\nexport default extra(definition, autoService(initTestHTTPLambdaCommand));\n\nasync function initTestHTTPLambdaCommand({\n NODE_ENV,\n PROJECT_DIR,\n API,\n log,\n args,\n}: {\n NODE_ENV: string;\n PROJECT_DIR: string;\n API: OpenAPIV3.Document;\n log: LogService;\n args: WhookCommandArgs;\n}) {\n return async () => {\n const {\n name,\n type,\n contentType,\n parameters: rawParameters,\n }: WhookCommandNamedArgs = readArgs(definition.arguments, args) as {\n name: string;\n type: string;\n contentType: string;\n parameters: string;\n };\n const handler = await loadLambda(\n { PROJECT_DIR, log },\n NODE_ENV,\n name,\n type,\n );\n const OPERATION = (\n await dereferenceOpenAPIOperations(API, getOpenAPIOperations(API))\n ).find(({ operationId }) => operationId === name);\n\n if (!OPERATION) {\n throw new YError('E_OPERATION_NOT_FOUND');\n }\n\n const hasBody = !!OPERATION.requestBody;\n const parameters = JSON.parse(rawParameters);\n const search = ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'query')\n .reduce((accSearch, p) => {\n if (null != parameters[p.name]) {\n return (\n accSearch +\n (accSearch ? '&' : '') +\n p.name +\n '=' +\n parameters[p.name]\n );\n }\n return accSearch;\n }, '');\n\n const path = OPERATION.path\n .split(PATH_SEPARATOR)\n\n .map((part) => {\n const matches = /^\\{([\\d\\w]+)\\}$/i.exec(part);\n\n if (matches) {\n return parameters[matches[1]];\n }\n return part;\n })\n .join(PATH_SEPARATOR);\n const gcpfRequest = {\n method: OPERATION.method,\n originalUrl: path + (search ? SEARCH_SEPARATOR + search : ''),\n headers: ((OPERATION.parameters || []) as OpenAPIV3.ParameterObject[])\n .filter((p) => p.in === 'header')\n .reduce((headerParameters, p) => {\n headerParameters[p.name] = parameters[camelCase(p.name)];\n return headerParameters;\n }, {}),\n rawBody: Buffer.from(\n hasBody\n ? contentType === 'application/json'\n ? parameters.body\n ? JSON.stringify(parameters.body)\n : ''\n : parameters.body || ''\n : '',\n ),\n };\n if (hasBody) {\n gcpfRequest.headers['content-type'] = `${contentType};charset=UTF-8`;\n }\n log('info', 'GCPF_REQUEST:', gcpfRequest as unknown as string);\n\n const response = {\n status: 0,\n headers: {},\n data: '',\n };\n await new Promise<void>((resolve, reject) => {\n const gcpfResponse = new stream.PassThrough();\n\n (gcpfResponse as any).set = (name: string, value: string): void => {\n response.headers[name] = value;\n };\n (gcpfResponse as any).status = (code: number): void => {\n response.status = code;\n };\n\n handler(gcpfRequest, gcpfResponse).catch(reject);\n\n const chunks = [] as Buffer[];\n\n gcpfResponse.once('end', () => {\n response.data = Buffer.concat(chunks).toString();\n resolve();\n });\n gcpfResponse.once('error', reject);\n gcpfResponse.on('readable', () => {\n let data: Buffer;\n while ((data = gcpfResponse.read())) {\n chunks.push(data);\n }\n });\n });\n log('info', 'SUCCESS:', response);\n };\n}\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import Knifecycle from 'knifecycle';
|
|
2
|
-
import type { Dependencies } from 'knifecycle';
|
|
3
2
|
import type { WhookCompilerOptions } from '@whook/whook';
|
|
4
|
-
import type { BuildOptions } from 'knifecycle/dist/build';
|
|
5
3
|
export declare const DEFAULT_BUILD_PARALLELISM = 10;
|
|
6
|
-
export declare type
|
|
7
|
-
BUILD_OPTIONS?: BuildOptions;
|
|
4
|
+
export declare type WhookGCPBuildConfig = {
|
|
8
5
|
BUILD_PARALLELISM?: number;
|
|
9
6
|
};
|
|
10
7
|
export declare type WhookAPIOperationGCPFunctionConfig = {
|
|
@@ -14,5 +11,5 @@ export declare type WhookAPIOperationGCPFunctionConfig = {
|
|
|
14
11
|
compilerOptions?: WhookCompilerOptions;
|
|
15
12
|
suffix?: string;
|
|
16
13
|
};
|
|
17
|
-
export declare function prepareBuildEnvironment<T extends Knifecycle
|
|
14
|
+
export declare function prepareBuildEnvironment<T extends Knifecycle>($?: T): Promise<T>;
|
|
18
15
|
export declare function runBuild(aPrepareBuildEnvironment: typeof prepareBuildEnvironment): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -84,7 +84,7 @@ async function runBuild(aPrepareBuildEnvironment) {
|
|
|
84
84
|
API,
|
|
85
85
|
buildInitializer
|
|
86
86
|
} = await $.run(['NODE_ENV', '?BUILD_PARALLELISM', '?BUILD_OPTIONS', 'PROJECT_DIR', 'process', 'compiler', 'log', '$autoload', 'API', 'buildInitializer']);
|
|
87
|
-
log('info', 'Environment initialized 🚀🌕');
|
|
87
|
+
log('info', 'GCP Functions build Environment initialized 🚀🌕');
|
|
88
88
|
const operations = (await (0, _httpRouter.dereferenceOpenAPIOperations)(API, (0, _httpRouter.getOpenAPIOperations)(API))).filter(operation => {
|
|
89
89
|
if (handlerName) {
|
|
90
90
|
const sourceOperationId = operation['x-whook'] && operation['x-whook'].sourceOperationId;
|
|
@@ -199,7 +199,7 @@ async function buildAnyLambda({
|
|
|
199
199
|
}, lambdaPath, whookConfig);
|
|
200
200
|
} catch (err) {
|
|
201
201
|
log('error', `Error building "${operationId}"...`);
|
|
202
|
-
log('stack', err.stack);
|
|
202
|
+
log('error-stack', err.stack || 'no_stack_trace');
|
|
203
203
|
log('debug', JSON.stringify(err.params, null, 2));
|
|
204
204
|
throw _yerror.default.wrap(err, 'E_LAMBDA_BUILD', operationId);
|
|
205
205
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["DEFAULT_BUILD_PARALLELISM","readFileAsync","util","promisify","fs","readFile","writeFileAsync","writeFile","cprAsync","cpr","BUILD_DEFINITIONS","http","type","wrapper","name","path","join","__dirname","suffix","prepareBuildEnvironment","$","Knifecycle","register","ENV","log","time","delay","initInitializerBuilder","initBuildAutoloader","initCompiler","runBuild","aPrepareBuildEnvironment","handlerName","process","argv","NODE_ENV","BUILD_PARALLELISM","BUILD_OPTIONS","PROJECT_DIR","compiler","$autoload","API","buildInitializer","run","operations","filter","operation","sourceOperationId","operationId","length","processOperations","DEFAULT_BUILD_OPTIONS","destroy","err","console","error","stack","JSON","stringify","params","exit","operationsLeft","slice","Promise","all","map","buildAnyLambda","whookConfig","operationType","entryPoint","finalEntryPoint","buildDefinition","applyWrapper","require","default","rootNode","lambdaPath","finalHandlerInitializer","initializer","initializerContent","SPECIAL_PROPS","INJECT","indexContent","buildLambdaIndex","copyStaticFiles","staticFiles","ensureFileAsync","buildFinalLambda","YError","wrap","buildWrapper","options","modules","contents","mappings","compilerOptions","resolve","staticFile","copyFiles","source","destination","theError","data","code","overwrite","content","encoding","oldContent"],"mappings":"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","sourcesContent":["/* eslint global-require:0 */\nimport fs from 'fs';\nimport util from 'util';\nimport path from 'path';\nimport mkdirp from 'mkdirp';\nimport cpr from 'cpr';\nimport YError from 'yerror';\nimport Knifecycle, {\n SPECIAL_PROPS,\n constant,\n initInitializerBuilder,\n} from 'knifecycle';\nimport { DEFAULT_BUILD_OPTIONS, initCompiler } from '@whook/whook';\nimport initBuildAutoloader from './services/_autoload';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport type { Autoloader, Dependencies, BuildInitializer } from 'knifecycle';\nimport type {\n WhookOperation,\n WhookCompilerOptions,\n WhookCompilerService,\n} from '@whook/whook';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport type { LogService } from 'common-services';\nimport type { CprOptions } from 'cpr';\nimport type { BuildOptions } from 'knifecycle/dist/build';\n\nexport const DEFAULT_BUILD_PARALLELISM = 10;\n\nexport type WhookBuildConfig = {\n BUILD_OPTIONS?: BuildOptions;\n BUILD_PARALLELISM?: number;\n};\nexport type WhookAPIOperationGCPFunctionConfig = {\n type?: 'http';\n sourceOperationId?: string;\n staticFiles?: string[];\n compilerOptions?: WhookCompilerOptions;\n suffix?: string;\n};\n\nconst readFileAsync = util.promisify(fs.readFile) as (\n path: string,\n encoding: string,\n) => Promise<string>;\nconst writeFileAsync = util.promisify(fs.writeFile) as (\n path: string,\n content: string,\n encoding: string,\n) => Promise<void>;\nconst cprAsync = util.promisify(cpr) as (\n source: string,\n destination: string,\n options: CprOptions,\n) => Promise<string[]>;\n\nconst BUILD_DEFINITIONS: Record<\n WhookAPIOperationGCPFunctionConfig['type'],\n {\n type: string;\n wrapper: { name: string; path: string };\n suffix?: string;\n }\n> = {\n http: {\n type: 'HTTP',\n wrapper: {\n name: 'wrapHandlerForGoogleHTTPFunction',\n path: path.join(__dirname, 'wrappers', 'googleHTTPFunction'),\n },\n suffix: 'Wrapped',\n },\n};\n\nexport async function prepareBuildEnvironment<\n T extends Knifecycle<Dependencies>,\n>($: T = new Knifecycle() as T): Promise<T> {\n $.register(\n constant('INITIALIZER_PATH_MAP', {\n ENV: '@whook/whook/dist/services/ProxyedENV',\n log: __dirname + '/services/log',\n time: 'common-services/dist/time',\n delay: 'common-services/dist/delay',\n }),\n );\n $.register(initInitializerBuilder);\n $.register(initBuildAutoloader);\n $.register(initCompiler);\n $.register(constant('PORT', 1337));\n $.register(constant('HOST', 'localhost'));\n\n return $;\n}\n\nexport async function runBuild(\n aPrepareBuildEnvironment: typeof prepareBuildEnvironment,\n): Promise<void> {\n try {\n const handlerName = process.argv[2];\n const $ = await aPrepareBuildEnvironment();\n const {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n API,\n buildInitializer,\n }: WhookBuildConfig & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n API: OpenAPIV3.Document;\n buildInitializer: BuildInitializer;\n } = await $.run([\n 'NODE_ENV',\n '?BUILD_PARALLELISM',\n '?BUILD_OPTIONS',\n 'PROJECT_DIR',\n 'process',\n 'compiler',\n 'log',\n '$autoload',\n 'API',\n 'buildInitializer',\n ]);\n\n log('info', 'Environment initialized 🚀🌕');\n\n const operations = (\n await dereferenceOpenAPIOperations(\n API,\n getOpenAPIOperations<WhookAPIOperationGCPFunctionConfig>(API),\n )\n ).filter((operation) => {\n if (handlerName) {\n const sourceOperationId =\n operation['x-whook'] && operation['x-whook'].sourceOperationId;\n\n return (\n handlerName === operation.operationId ||\n handlerName === sourceOperationId\n );\n }\n return true;\n });\n\n log('warning', `${operations.length} operations to process.`);\n await processOperations(\n {\n NODE_ENV,\n BUILD_OPTIONS: BUILD_OPTIONS || DEFAULT_BUILD_OPTIONS,\n BUILD_PARALLELISM: BUILD_PARALLELISM || DEFAULT_BUILD_PARALLELISM,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operations,\n );\n await $.destroy();\n } catch (err) {\n // eslint-disable-next-line\n console.error(\n '💀 - Cannot launch the build:',\n err.stack,\n JSON.stringify(err.params, null, 2),\n );\n process.exit(1);\n }\n}\n\nasync function processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: {\n NODE_ENV: string;\n BUILD_PARALLELISM: number;\n BUILD_OPTIONS: BuildOptions;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n buildInitializer: BuildInitializer;\n },\n operations: WhookOperation<WhookAPIOperationGCPFunctionConfig>[],\n): Promise<void> {\n const operationsLeft = operations.slice(BUILD_PARALLELISM);\n\n await Promise.all(\n operations.slice(0, BUILD_PARALLELISM).map((operation) =>\n buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operation,\n ),\n ),\n );\n\n if (operationsLeft.length) {\n log('info', operationsLeft.length, ' operations left.');\n return processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operationsLeft,\n );\n }\n log('info', 'No more operations.');\n}\n\nasync function buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: {\n NODE_ENV: string;\n PROJECT_DIR: string;\n BUILD_OPTIONS: BuildOptions;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n buildInitializer: BuildInitializer;\n },\n operation: WhookOperation<WhookAPIOperationGCPFunctionConfig>,\n): Promise<void> {\n const { operationId } = operation;\n\n try {\n const whookConfig: WhookAPIOperationGCPFunctionConfig =\n operation['x-whook'] || {};\n const operationType = whookConfig.type || 'http';\n const sourceOperationId = whookConfig.sourceOperationId;\n const entryPoint = operationId;\n const finalEntryPoint =\n (sourceOperationId ? sourceOperationId : operationId) +\n ((operation['x-whook'] || {}).suffix || '');\n log('warning', `Building ${operationType} \"${finalEntryPoint}\"...`);\n const buildDefinition = BUILD_DEFINITIONS[operationType];\n // eslint-disable-next-line\n const applyWrapper = require(buildDefinition.wrapper.path).default;\n const rootNode = await $autoload(\n entryPoint + (buildDefinition.suffix || ''),\n );\n const lambdaPath = path.join(\n PROJECT_DIR,\n 'builds',\n NODE_ENV,\n finalEntryPoint,\n );\n const finalHandlerInitializer = applyWrapper(rootNode.initializer);\n\n const initializerContent = await buildInitializer(\n finalHandlerInitializer[SPECIAL_PROPS.INJECT].map((name) =>\n name === 'OPERATION_API'\n ? `OPERATION_API>OPERATION_API_${finalEntryPoint}`\n : name,\n ),\n BUILD_OPTIONS,\n );\n const indexContent = await buildLambdaIndex(\n rootNode,\n {\n name: buildDefinition.wrapper.name,\n path: buildDefinition.wrapper.path,\n },\n BUILD_OPTIONS,\n );\n\n await mkdirp(lambdaPath);\n await Promise.all([\n copyStaticFiles(\n { PROJECT_DIR, log },\n lambdaPath,\n whookConfig.staticFiles || [],\n ),\n ensureFileAsync(\n { log },\n path.join(lambdaPath, 'initialize.js'),\n initializerContent,\n ),\n ensureFileAsync({ log }, path.join(lambdaPath, 'main.js'), indexContent),\n ]);\n await buildFinalLambda({ compiler, log }, lambdaPath, whookConfig);\n } catch (err) {\n log('error', `Error building \"${operationId}\"...`);\n log('stack', err.stack);\n log('debug', JSON.stringify(err.params, null, 2));\n throw YError.wrap(err, 'E_LAMBDA_BUILD', operationId);\n }\n}\n\nasync function buildLambdaIndex(\n rootNode: { path: string },\n buildWrapper: { name: string; path: string },\n options: BuildOptions,\n): Promise<string> {\n return `${\n options.modules === 'commonjs'\n ? `const pickModule = (m) => { return m && m.default || m; }\nconst initHandler = pickModule(require('${rootNode.path}'));\nconst ${buildWrapper.name} = pickModule(require('${buildWrapper.path}'));\nconst { initialize } = require('./initialize');`\n : `import initHandler from '${rootNode.path}';\nimport ${buildWrapper.name} from '${buildWrapper.path}';\nimport { initialize } from './initialize';`\n }\n\nconst handlerInitializer = ${buildWrapper.name}(\n initHandler\n);\n\nconst handlerPromise = initialize()\n .then(handlerInitializer);\n\n${\n options.modules === 'commonjs'\n ? 'module.exports = {}; module.exports.default = '\n : 'export default '\n}function handler (req, res) {\n return handlerPromise\n .then(handler => handler(req, res));\n};\n`;\n}\n\nasync function buildFinalLambda(\n { compiler, log }: { compiler: WhookCompilerService; log: LogService },\n lambdaPath: string,\n whookConfig: WhookAPIOperationGCPFunctionConfig,\n): Promise<void> {\n const entryPoint = `${lambdaPath}/main.js`;\n const { contents, mappings } = await compiler(\n entryPoint,\n whookConfig.compilerOptions,\n );\n\n await Promise.all([\n ensureFileAsync({ log }, `${lambdaPath}/index.js`, contents, 'utf-8'),\n mappings\n ? ensureFileAsync(\n { log },\n `${lambdaPath}/index.js.map`,\n mappings,\n 'utf-8',\n )\n : Promise.resolve(),\n ]);\n}\n\nasync function copyStaticFiles(\n { PROJECT_DIR, log }: { PROJECT_DIR: string; log: LogService },\n lambdaPath: string,\n staticFiles: string[] = [],\n): Promise<void> {\n await Promise.all(\n staticFiles.map(\n async (staticFile) =>\n await copyFiles(\n { log },\n path.join(PROJECT_DIR, 'node_modules', staticFile),\n path.join(lambdaPath, 'node_modules', staticFile),\n ),\n ),\n );\n}\n\nasync function copyFiles(\n { log }: { log: LogService },\n source: string,\n destination: string,\n): Promise<void> {\n let theError;\n try {\n await mkdirp(destination);\n const data = await readFileAsync(source, 'utf-8');\n await ensureFileAsync({ log }, destination, data, 'utf-8');\n } catch (err) {\n theError = err;\n }\n if (theError) {\n if ('EISDIR' !== theError.code) {\n throw theError;\n }\n await cprAsync(source, destination, {\n overwrite: true,\n });\n }\n}\n\nasync function ensureFileAsync(\n { log }: { log: LogService },\n path: string,\n content: string,\n encoding = 'utf-8',\n): Promise<void> {\n try {\n const oldContent = await readFileAsync(path, encoding);\n\n if (oldContent === content) {\n log('debug', `Ignore unchanged file: \"${path}\".`);\n return;\n }\n } catch (err) {\n log('debug', `Write new file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n }\n log('debug', `Write changed file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DEFAULT_BUILD_PARALLELISM","readFileAsync","util","promisify","fs","readFile","writeFileAsync","writeFile","cprAsync","cpr","BUILD_DEFINITIONS","http","type","wrapper","name","path","join","__dirname","suffix","prepareBuildEnvironment","$","Knifecycle","register","constant","ENV","log","time","delay","initInitializerBuilder","initBuildAutoloader","initCompiler","runBuild","aPrepareBuildEnvironment","handlerName","process","argv","NODE_ENV","BUILD_PARALLELISM","BUILD_OPTIONS","PROJECT_DIR","compiler","$autoload","API","buildInitializer","run","operations","dereferenceOpenAPIOperations","getOpenAPIOperations","filter","operation","sourceOperationId","operationId","length","processOperations","DEFAULT_BUILD_OPTIONS","destroy","err","console","error","stack","JSON","stringify","params","exit","operationsLeft","slice","Promise","all","map","buildAnyLambda","whookConfig","operationType","entryPoint","finalEntryPoint","buildDefinition","applyWrapper","require","default","rootNode","lambdaPath","finalHandlerInitializer","initializer","initializerContent","SPECIAL_PROPS","INJECT","indexContent","buildLambdaIndex","mkdirp","copyStaticFiles","staticFiles","ensureFileAsync","buildFinalLambda","YError","wrap","buildWrapper","options","modules","contents","mappings","compilerOptions","resolve","staticFile","copyFiles","source","destination","theError","data","code","overwrite","content","encoding","oldContent"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint global-require:0 */\nimport fs from 'fs';\nimport util from 'util';\nimport path from 'path';\nimport mkdirp from 'mkdirp';\nimport cpr from 'cpr';\nimport YError from 'yerror';\nimport Knifecycle, {\n SPECIAL_PROPS,\n constant,\n initInitializerBuilder,\n} from 'knifecycle';\nimport { DEFAULT_BUILD_OPTIONS, initCompiler } from '@whook/whook';\nimport initBuildAutoloader from './services/_autoload';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport type {\n Autoloader,\n Dependencies,\n BuildInitializer,\n Initializer,\n Service,\n} from 'knifecycle';\nimport type {\n WhookOperation,\n WhookCompilerConfig,\n WhookCompilerOptions,\n WhookCompilerService,\n} from '@whook/whook';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport type { LogService } from 'common-services';\nimport type { CprOptions } from 'cpr';\n\nexport const DEFAULT_BUILD_PARALLELISM = 10;\n\nexport type WhookGCPBuildConfig = {\n BUILD_PARALLELISM?: number;\n};\nexport type WhookAPIOperationGCPFunctionConfig = {\n type?: 'http';\n sourceOperationId?: string;\n staticFiles?: string[];\n compilerOptions?: WhookCompilerOptions;\n suffix?: string;\n};\n\nconst readFileAsync = util.promisify(fs.readFile) as (\n path: string,\n encoding: string,\n) => Promise<string>;\nconst writeFileAsync = util.promisify(fs.writeFile) as (\n path: string,\n content: string,\n encoding: string,\n) => Promise<void>;\nconst cprAsync = util.promisify(cpr) as (\n source: string,\n destination: string,\n options: CprOptions,\n) => Promise<string[]>;\n\nconst BUILD_DEFINITIONS: Record<\n NonNullable<WhookAPIOperationGCPFunctionConfig['type']>,\n {\n type: string;\n wrapper: { name: string; path: string };\n suffix?: string;\n }\n> = {\n http: {\n type: 'HTTP',\n wrapper: {\n name: 'wrapHandlerForGoogleHTTPFunction',\n path: path.join(__dirname, 'wrappers', 'googleHTTPFunction'),\n },\n suffix: 'Wrapped',\n },\n};\n\nexport async function prepareBuildEnvironment<T extends Knifecycle>(\n $: T = new Knifecycle() as T,\n): Promise<T> {\n $.register(\n constant('INITIALIZER_PATH_MAP', {\n ENV: '@whook/whook/dist/services/ProxyedENV',\n log: __dirname + '/services/log',\n time: 'common-services/dist/time',\n delay: 'common-services/dist/delay',\n }),\n );\n $.register(initInitializerBuilder);\n $.register(initBuildAutoloader);\n $.register(initCompiler);\n $.register(constant('PORT', 1337));\n $.register(constant('HOST', 'localhost'));\n\n return $;\n}\n\nexport async function runBuild(\n aPrepareBuildEnvironment: typeof prepareBuildEnvironment,\n): Promise<void> {\n try {\n const handlerName = process.argv[2];\n const $ = await aPrepareBuildEnvironment();\n const {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n API,\n buildInitializer,\n }: WhookGCPBuildConfig &\n Pick<WhookCompilerConfig, 'BUILD_OPTIONS'> & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n API: OpenAPIV3.Document;\n buildInitializer: BuildInitializer;\n } = await $.run([\n 'NODE_ENV',\n '?BUILD_PARALLELISM',\n '?BUILD_OPTIONS',\n 'PROJECT_DIR',\n 'process',\n 'compiler',\n 'log',\n '$autoload',\n 'API',\n 'buildInitializer',\n ]);\n\n log('info', 'GCP Functions build Environment initialized 🚀🌕');\n\n const operations = (\n await dereferenceOpenAPIOperations(\n API,\n getOpenAPIOperations<WhookAPIOperationGCPFunctionConfig>(API),\n )\n ).filter((operation) => {\n if (handlerName) {\n const sourceOperationId =\n operation['x-whook'] && operation['x-whook'].sourceOperationId;\n\n return (\n handlerName === operation.operationId ||\n handlerName === sourceOperationId\n );\n }\n return true;\n });\n\n log('warning', `${operations.length} operations to process.`);\n await processOperations(\n {\n NODE_ENV,\n BUILD_OPTIONS: BUILD_OPTIONS || DEFAULT_BUILD_OPTIONS,\n BUILD_PARALLELISM: BUILD_PARALLELISM || DEFAULT_BUILD_PARALLELISM,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operations,\n );\n await $.destroy();\n } catch (err) {\n // eslint-disable-next-line\n console.error(\n '💀 - Cannot launch the build:',\n (err as YError).stack,\n JSON.stringify((err as YError).params, null, 2),\n );\n process.exit(1);\n }\n}\n\nasync function processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: Required<Pick<WhookCompilerConfig, 'BUILD_OPTIONS'>> & {\n NODE_ENV: string;\n BUILD_PARALLELISM: number;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n buildInitializer: BuildInitializer;\n },\n operations: WhookOperation<WhookAPIOperationGCPFunctionConfig>[],\n): Promise<void> {\n const operationsLeft = operations.slice(BUILD_PARALLELISM);\n\n await Promise.all(\n operations.slice(0, BUILD_PARALLELISM).map((operation) =>\n buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operation,\n ),\n ),\n );\n\n if (operationsLeft.length) {\n log('info', operationsLeft.length, ' operations left.');\n return processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operationsLeft,\n );\n }\n log('info', 'No more operations.');\n}\n\nasync function buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: Required<Pick<WhookCompilerConfig, 'BUILD_OPTIONS'>> & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n buildInitializer: BuildInitializer;\n },\n operation: WhookOperation<WhookAPIOperationGCPFunctionConfig>,\n): Promise<void> {\n const { operationId } = operation;\n\n try {\n const whookConfig: WhookAPIOperationGCPFunctionConfig =\n operation['x-whook'] || {};\n const operationType = whookConfig.type || 'http';\n const sourceOperationId = whookConfig.sourceOperationId;\n const entryPoint = operationId;\n const finalEntryPoint =\n (sourceOperationId ? sourceOperationId : operationId) +\n ((operation['x-whook'] || {}).suffix || '');\n log('warning', `Building ${operationType} \"${finalEntryPoint}\"...`);\n const buildDefinition = BUILD_DEFINITIONS[operationType];\n // eslint-disable-next-line\n const applyWrapper = require(buildDefinition.wrapper.path).default;\n const rootNode = await $autoload(\n entryPoint + (buildDefinition.suffix || ''),\n );\n const lambdaPath = path.join(\n PROJECT_DIR,\n 'builds',\n NODE_ENV,\n finalEntryPoint,\n );\n const finalHandlerInitializer = applyWrapper(rootNode.initializer);\n\n const initializerContent = await buildInitializer(\n finalHandlerInitializer[SPECIAL_PROPS.INJECT].map((name) =>\n name === 'OPERATION_API'\n ? `OPERATION_API>OPERATION_API_${finalEntryPoint}`\n : name,\n ),\n BUILD_OPTIONS,\n );\n const indexContent = await buildLambdaIndex(\n rootNode,\n {\n name: buildDefinition.wrapper.name,\n path: buildDefinition.wrapper.path,\n },\n BUILD_OPTIONS,\n );\n\n await mkdirp(lambdaPath);\n await Promise.all([\n copyStaticFiles(\n { PROJECT_DIR, log },\n lambdaPath,\n whookConfig.staticFiles || [],\n ),\n ensureFileAsync(\n { log },\n path.join(lambdaPath, 'initialize.js'),\n initializerContent,\n ),\n ensureFileAsync({ log }, path.join(lambdaPath, 'main.js'), indexContent),\n ]);\n await buildFinalLambda({ compiler, log }, lambdaPath, whookConfig);\n } catch (err) {\n log('error', `Error building \"${operationId}\"...`);\n log('error-stack', (err as Error).stack || 'no_stack_trace');\n log('debug', JSON.stringify((err as YError).params, null, 2));\n throw YError.wrap(err as Error, 'E_LAMBDA_BUILD', operationId);\n }\n}\n\nasync function buildLambdaIndex(\n rootNode: { path: string },\n buildWrapper: { name: string; path: string },\n options: NonNullable<WhookCompilerConfig['BUILD_OPTIONS']>,\n): Promise<string> {\n return `${\n options.modules === 'commonjs'\n ? `const pickModule = (m) => { return m && m.default || m; }\nconst initHandler = pickModule(require('${rootNode.path}'));\nconst ${buildWrapper.name} = pickModule(require('${buildWrapper.path}'));\nconst { initialize } = require('./initialize');`\n : `import initHandler from '${rootNode.path}';\nimport ${buildWrapper.name} from '${buildWrapper.path}';\nimport { initialize } from './initialize';`\n }\n\nconst handlerInitializer = ${buildWrapper.name}(\n initHandler\n);\n\nconst handlerPromise = initialize()\n .then(handlerInitializer);\n\n${\n options.modules === 'commonjs'\n ? 'module.exports = {}; module.exports.default = '\n : 'export default '\n}function handler (req, res) {\n return handlerPromise\n .then(handler => handler(req, res));\n};\n`;\n}\n\nasync function buildFinalLambda(\n { compiler, log }: { compiler: WhookCompilerService; log: LogService },\n lambdaPath: string,\n whookConfig: WhookAPIOperationGCPFunctionConfig,\n): Promise<void> {\n const entryPoint = `${lambdaPath}/main.js`;\n const { contents, mappings } = await compiler(\n entryPoint,\n whookConfig.compilerOptions,\n );\n\n await Promise.all([\n ensureFileAsync({ log }, `${lambdaPath}/index.js`, contents, 'utf-8'),\n mappings\n ? ensureFileAsync(\n { log },\n `${lambdaPath}/index.js.map`,\n mappings,\n 'utf-8',\n )\n : Promise.resolve(),\n ]);\n}\n\nasync function copyStaticFiles(\n { PROJECT_DIR, log }: { PROJECT_DIR: string; log: LogService },\n lambdaPath: string,\n staticFiles: string[] = [],\n): Promise<void> {\n await Promise.all(\n staticFiles.map(\n async (staticFile) =>\n await copyFiles(\n { log },\n path.join(PROJECT_DIR, 'node_modules', staticFile),\n path.join(lambdaPath, 'node_modules', staticFile),\n ),\n ),\n );\n}\n\nasync function copyFiles(\n { log }: { log: LogService },\n source: string,\n destination: string,\n): Promise<void> {\n let theError;\n try {\n await mkdirp(destination);\n const data = await readFileAsync(source, 'utf-8');\n await ensureFileAsync({ log }, destination, data, 'utf-8');\n } catch (err) {\n theError = err;\n }\n if (theError) {\n if ('EISDIR' !== theError.code) {\n throw theError;\n }\n await cprAsync(source, destination, {\n overwrite: true,\n });\n }\n}\n\nasync function ensureFileAsync(\n { log }: { log: LogService },\n path: string,\n content: string,\n encoding = 'utf-8',\n): Promise<void> {\n try {\n const oldContent = await readFileAsync(path, encoding);\n\n if (oldContent === content) {\n log('debug', `Ignore unchanged file: \"${path}\".`);\n return;\n }\n } catch (err) {\n log('debug', `Write new file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n }\n log('debug', `Write changed file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n}\n"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -52,7 +52,7 @@ export async function runBuild(aPrepareBuildEnvironment) {
|
|
|
52
52
|
API,
|
|
53
53
|
buildInitializer
|
|
54
54
|
} = await $.run(['NODE_ENV', '?BUILD_PARALLELISM', '?BUILD_OPTIONS', 'PROJECT_DIR', 'process', 'compiler', 'log', '$autoload', 'API', 'buildInitializer']);
|
|
55
|
-
log('info', 'Environment initialized 🚀🌕');
|
|
55
|
+
log('info', 'GCP Functions build Environment initialized 🚀🌕');
|
|
56
56
|
const operations = (await dereferenceOpenAPIOperations(API, getOpenAPIOperations(API))).filter(operation => {
|
|
57
57
|
if (handlerName) {
|
|
58
58
|
const sourceOperationId = operation['x-whook'] && operation['x-whook'].sourceOperationId;
|
|
@@ -165,7 +165,7 @@ async function buildAnyLambda({
|
|
|
165
165
|
}, lambdaPath, whookConfig);
|
|
166
166
|
} catch (err) {
|
|
167
167
|
log('error', `Error building "${operationId}"...`);
|
|
168
|
-
log('stack', err.stack);
|
|
168
|
+
log('error-stack', err.stack || 'no_stack_trace');
|
|
169
169
|
log('debug', JSON.stringify(err.params, null, 2));
|
|
170
170
|
throw YError.wrap(err, 'E_LAMBDA_BUILD', operationId);
|
|
171
171
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["fs","util","path","mkdirp","cpr","YError","Knifecycle","SPECIAL_PROPS","constant","initInitializerBuilder","DEFAULT_BUILD_OPTIONS","initCompiler","initBuildAutoloader","dereferenceOpenAPIOperations","getOpenAPIOperations","DEFAULT_BUILD_PARALLELISM","readFileAsync","promisify","readFile","writeFileAsync","writeFile","cprAsync","BUILD_DEFINITIONS","http","type","wrapper","name","join","__dirname","suffix","prepareBuildEnvironment","$","register","ENV","log","time","delay","runBuild","aPrepareBuildEnvironment","handlerName","process","argv","NODE_ENV","BUILD_PARALLELISM","BUILD_OPTIONS","PROJECT_DIR","compiler","$autoload","API","buildInitializer","run","operations","filter","operation","sourceOperationId","operationId","length","processOperations","destroy","err","console","error","stack","JSON","stringify","params","exit","operationsLeft","slice","Promise","all","map","buildAnyLambda","whookConfig","operationType","entryPoint","finalEntryPoint","buildDefinition","applyWrapper","require","default","rootNode","lambdaPath","finalHandlerInitializer","initializer","initializerContent","INJECT","indexContent","buildLambdaIndex","copyStaticFiles","staticFiles","ensureFileAsync","buildFinalLambda","wrap","buildWrapper","options","modules","contents","mappings","compilerOptions","resolve","staticFile","copyFiles","source","destination","theError","data","code","overwrite","content","encoding","oldContent"],"mappings":"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","sourcesContent":["/* eslint global-require:0 */\nimport fs from 'fs';\nimport util from 'util';\nimport path from 'path';\nimport mkdirp from 'mkdirp';\nimport cpr from 'cpr';\nimport YError from 'yerror';\nimport Knifecycle, {\n SPECIAL_PROPS,\n constant,\n initInitializerBuilder,\n} from 'knifecycle';\nimport { DEFAULT_BUILD_OPTIONS, initCompiler } from '@whook/whook';\nimport initBuildAutoloader from './services/_autoload';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport type { Autoloader, Dependencies, BuildInitializer } from 'knifecycle';\nimport type {\n WhookOperation,\n WhookCompilerOptions,\n WhookCompilerService,\n} from '@whook/whook';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport type { LogService } from 'common-services';\nimport type { CprOptions } from 'cpr';\nimport type { BuildOptions } from 'knifecycle/dist/build';\n\nexport const DEFAULT_BUILD_PARALLELISM = 10;\n\nexport type WhookBuildConfig = {\n BUILD_OPTIONS?: BuildOptions;\n BUILD_PARALLELISM?: number;\n};\nexport type WhookAPIOperationGCPFunctionConfig = {\n type?: 'http';\n sourceOperationId?: string;\n staticFiles?: string[];\n compilerOptions?: WhookCompilerOptions;\n suffix?: string;\n};\n\nconst readFileAsync = util.promisify(fs.readFile) as (\n path: string,\n encoding: string,\n) => Promise<string>;\nconst writeFileAsync = util.promisify(fs.writeFile) as (\n path: string,\n content: string,\n encoding: string,\n) => Promise<void>;\nconst cprAsync = util.promisify(cpr) as (\n source: string,\n destination: string,\n options: CprOptions,\n) => Promise<string[]>;\n\nconst BUILD_DEFINITIONS: Record<\n WhookAPIOperationGCPFunctionConfig['type'],\n {\n type: string;\n wrapper: { name: string; path: string };\n suffix?: string;\n }\n> = {\n http: {\n type: 'HTTP',\n wrapper: {\n name: 'wrapHandlerForGoogleHTTPFunction',\n path: path.join(__dirname, 'wrappers', 'googleHTTPFunction'),\n },\n suffix: 'Wrapped',\n },\n};\n\nexport async function prepareBuildEnvironment<\n T extends Knifecycle<Dependencies>,\n>($: T = new Knifecycle() as T): Promise<T> {\n $.register(\n constant('INITIALIZER_PATH_MAP', {\n ENV: '@whook/whook/dist/services/ProxyedENV',\n log: __dirname + '/services/log',\n time: 'common-services/dist/time',\n delay: 'common-services/dist/delay',\n }),\n );\n $.register(initInitializerBuilder);\n $.register(initBuildAutoloader);\n $.register(initCompiler);\n $.register(constant('PORT', 1337));\n $.register(constant('HOST', 'localhost'));\n\n return $;\n}\n\nexport async function runBuild(\n aPrepareBuildEnvironment: typeof prepareBuildEnvironment,\n): Promise<void> {\n try {\n const handlerName = process.argv[2];\n const $ = await aPrepareBuildEnvironment();\n const {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n API,\n buildInitializer,\n }: WhookBuildConfig & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n API: OpenAPIV3.Document;\n buildInitializer: BuildInitializer;\n } = await $.run([\n 'NODE_ENV',\n '?BUILD_PARALLELISM',\n '?BUILD_OPTIONS',\n 'PROJECT_DIR',\n 'process',\n 'compiler',\n 'log',\n '$autoload',\n 'API',\n 'buildInitializer',\n ]);\n\n log('info', 'Environment initialized 🚀🌕');\n\n const operations = (\n await dereferenceOpenAPIOperations(\n API,\n getOpenAPIOperations<WhookAPIOperationGCPFunctionConfig>(API),\n )\n ).filter((operation) => {\n if (handlerName) {\n const sourceOperationId =\n operation['x-whook'] && operation['x-whook'].sourceOperationId;\n\n return (\n handlerName === operation.operationId ||\n handlerName === sourceOperationId\n );\n }\n return true;\n });\n\n log('warning', `${operations.length} operations to process.`);\n await processOperations(\n {\n NODE_ENV,\n BUILD_OPTIONS: BUILD_OPTIONS || DEFAULT_BUILD_OPTIONS,\n BUILD_PARALLELISM: BUILD_PARALLELISM || DEFAULT_BUILD_PARALLELISM,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operations,\n );\n await $.destroy();\n } catch (err) {\n // eslint-disable-next-line\n console.error(\n '💀 - Cannot launch the build:',\n err.stack,\n JSON.stringify(err.params, null, 2),\n );\n process.exit(1);\n }\n}\n\nasync function processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: {\n NODE_ENV: string;\n BUILD_PARALLELISM: number;\n BUILD_OPTIONS: BuildOptions;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n buildInitializer: BuildInitializer;\n },\n operations: WhookOperation<WhookAPIOperationGCPFunctionConfig>[],\n): Promise<void> {\n const operationsLeft = operations.slice(BUILD_PARALLELISM);\n\n await Promise.all(\n operations.slice(0, BUILD_PARALLELISM).map((operation) =>\n buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operation,\n ),\n ),\n );\n\n if (operationsLeft.length) {\n log('info', operationsLeft.length, ' operations left.');\n return processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operationsLeft,\n );\n }\n log('info', 'No more operations.');\n}\n\nasync function buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: {\n NODE_ENV: string;\n PROJECT_DIR: string;\n BUILD_OPTIONS: BuildOptions;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader;\n buildInitializer: BuildInitializer;\n },\n operation: WhookOperation<WhookAPIOperationGCPFunctionConfig>,\n): Promise<void> {\n const { operationId } = operation;\n\n try {\n const whookConfig: WhookAPIOperationGCPFunctionConfig =\n operation['x-whook'] || {};\n const operationType = whookConfig.type || 'http';\n const sourceOperationId = whookConfig.sourceOperationId;\n const entryPoint = operationId;\n const finalEntryPoint =\n (sourceOperationId ? sourceOperationId : operationId) +\n ((operation['x-whook'] || {}).suffix || '');\n log('warning', `Building ${operationType} \"${finalEntryPoint}\"...`);\n const buildDefinition = BUILD_DEFINITIONS[operationType];\n // eslint-disable-next-line\n const applyWrapper = require(buildDefinition.wrapper.path).default;\n const rootNode = await $autoload(\n entryPoint + (buildDefinition.suffix || ''),\n );\n const lambdaPath = path.join(\n PROJECT_DIR,\n 'builds',\n NODE_ENV,\n finalEntryPoint,\n );\n const finalHandlerInitializer = applyWrapper(rootNode.initializer);\n\n const initializerContent = await buildInitializer(\n finalHandlerInitializer[SPECIAL_PROPS.INJECT].map((name) =>\n name === 'OPERATION_API'\n ? `OPERATION_API>OPERATION_API_${finalEntryPoint}`\n : name,\n ),\n BUILD_OPTIONS,\n );\n const indexContent = await buildLambdaIndex(\n rootNode,\n {\n name: buildDefinition.wrapper.name,\n path: buildDefinition.wrapper.path,\n },\n BUILD_OPTIONS,\n );\n\n await mkdirp(lambdaPath);\n await Promise.all([\n copyStaticFiles(\n { PROJECT_DIR, log },\n lambdaPath,\n whookConfig.staticFiles || [],\n ),\n ensureFileAsync(\n { log },\n path.join(lambdaPath, 'initialize.js'),\n initializerContent,\n ),\n ensureFileAsync({ log }, path.join(lambdaPath, 'main.js'), indexContent),\n ]);\n await buildFinalLambda({ compiler, log }, lambdaPath, whookConfig);\n } catch (err) {\n log('error', `Error building \"${operationId}\"...`);\n log('stack', err.stack);\n log('debug', JSON.stringify(err.params, null, 2));\n throw YError.wrap(err, 'E_LAMBDA_BUILD', operationId);\n }\n}\n\nasync function buildLambdaIndex(\n rootNode: { path: string },\n buildWrapper: { name: string; path: string },\n options: BuildOptions,\n): Promise<string> {\n return `${\n options.modules === 'commonjs'\n ? `const pickModule = (m) => { return m && m.default || m; }\nconst initHandler = pickModule(require('${rootNode.path}'));\nconst ${buildWrapper.name} = pickModule(require('${buildWrapper.path}'));\nconst { initialize } = require('./initialize');`\n : `import initHandler from '${rootNode.path}';\nimport ${buildWrapper.name} from '${buildWrapper.path}';\nimport { initialize } from './initialize';`\n }\n\nconst handlerInitializer = ${buildWrapper.name}(\n initHandler\n);\n\nconst handlerPromise = initialize()\n .then(handlerInitializer);\n\n${\n options.modules === 'commonjs'\n ? 'module.exports = {}; module.exports.default = '\n : 'export default '\n}function handler (req, res) {\n return handlerPromise\n .then(handler => handler(req, res));\n};\n`;\n}\n\nasync function buildFinalLambda(\n { compiler, log }: { compiler: WhookCompilerService; log: LogService },\n lambdaPath: string,\n whookConfig: WhookAPIOperationGCPFunctionConfig,\n): Promise<void> {\n const entryPoint = `${lambdaPath}/main.js`;\n const { contents, mappings } = await compiler(\n entryPoint,\n whookConfig.compilerOptions,\n );\n\n await Promise.all([\n ensureFileAsync({ log }, `${lambdaPath}/index.js`, contents, 'utf-8'),\n mappings\n ? ensureFileAsync(\n { log },\n `${lambdaPath}/index.js.map`,\n mappings,\n 'utf-8',\n )\n : Promise.resolve(),\n ]);\n}\n\nasync function copyStaticFiles(\n { PROJECT_DIR, log }: { PROJECT_DIR: string; log: LogService },\n lambdaPath: string,\n staticFiles: string[] = [],\n): Promise<void> {\n await Promise.all(\n staticFiles.map(\n async (staticFile) =>\n await copyFiles(\n { log },\n path.join(PROJECT_DIR, 'node_modules', staticFile),\n path.join(lambdaPath, 'node_modules', staticFile),\n ),\n ),\n );\n}\n\nasync function copyFiles(\n { log }: { log: LogService },\n source: string,\n destination: string,\n): Promise<void> {\n let theError;\n try {\n await mkdirp(destination);\n const data = await readFileAsync(source, 'utf-8');\n await ensureFileAsync({ log }, destination, data, 'utf-8');\n } catch (err) {\n theError = err;\n }\n if (theError) {\n if ('EISDIR' !== theError.code) {\n throw theError;\n }\n await cprAsync(source, destination, {\n overwrite: true,\n });\n }\n}\n\nasync function ensureFileAsync(\n { log }: { log: LogService },\n path: string,\n content: string,\n encoding = 'utf-8',\n): Promise<void> {\n try {\n const oldContent = await readFileAsync(path, encoding);\n\n if (oldContent === content) {\n log('debug', `Ignore unchanged file: \"${path}\".`);\n return;\n }\n } catch (err) {\n log('debug', `Write new file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n }\n log('debug', `Write changed file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n}\n"],"file":"index.mjs"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["fs","util","path","mkdirp","cpr","YError","Knifecycle","SPECIAL_PROPS","constant","initInitializerBuilder","DEFAULT_BUILD_OPTIONS","initCompiler","initBuildAutoloader","dereferenceOpenAPIOperations","getOpenAPIOperations","DEFAULT_BUILD_PARALLELISM","readFileAsync","promisify","readFile","writeFileAsync","writeFile","cprAsync","BUILD_DEFINITIONS","http","type","wrapper","name","join","__dirname","suffix","prepareBuildEnvironment","$","register","ENV","log","time","delay","runBuild","aPrepareBuildEnvironment","handlerName","process","argv","NODE_ENV","BUILD_PARALLELISM","BUILD_OPTIONS","PROJECT_DIR","compiler","$autoload","API","buildInitializer","run","operations","filter","operation","sourceOperationId","operationId","length","processOperations","destroy","err","console","error","stack","JSON","stringify","params","exit","operationsLeft","slice","Promise","all","map","buildAnyLambda","whookConfig","operationType","entryPoint","finalEntryPoint","buildDefinition","applyWrapper","require","default","rootNode","lambdaPath","finalHandlerInitializer","initializer","initializerContent","INJECT","indexContent","buildLambdaIndex","copyStaticFiles","staticFiles","ensureFileAsync","buildFinalLambda","wrap","buildWrapper","options","modules","contents","mappings","compilerOptions","resolve","staticFile","copyFiles","source","destination","theError","data","code","overwrite","content","encoding","oldContent"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint global-require:0 */\nimport fs from 'fs';\nimport util from 'util';\nimport path from 'path';\nimport mkdirp from 'mkdirp';\nimport cpr from 'cpr';\nimport YError from 'yerror';\nimport Knifecycle, {\n SPECIAL_PROPS,\n constant,\n initInitializerBuilder,\n} from 'knifecycle';\nimport { DEFAULT_BUILD_OPTIONS, initCompiler } from '@whook/whook';\nimport initBuildAutoloader from './services/_autoload';\nimport {\n dereferenceOpenAPIOperations,\n getOpenAPIOperations,\n} from '@whook/http-router';\nimport type {\n Autoloader,\n Dependencies,\n BuildInitializer,\n Initializer,\n Service,\n} from 'knifecycle';\nimport type {\n WhookOperation,\n WhookCompilerConfig,\n WhookCompilerOptions,\n WhookCompilerService,\n} from '@whook/whook';\nimport type { OpenAPIV3 } from 'openapi-types';\nimport type { LogService } from 'common-services';\nimport type { CprOptions } from 'cpr';\n\nexport const DEFAULT_BUILD_PARALLELISM = 10;\n\nexport type WhookGCPBuildConfig = {\n BUILD_PARALLELISM?: number;\n};\nexport type WhookAPIOperationGCPFunctionConfig = {\n type?: 'http';\n sourceOperationId?: string;\n staticFiles?: string[];\n compilerOptions?: WhookCompilerOptions;\n suffix?: string;\n};\n\nconst readFileAsync = util.promisify(fs.readFile) as (\n path: string,\n encoding: string,\n) => Promise<string>;\nconst writeFileAsync = util.promisify(fs.writeFile) as (\n path: string,\n content: string,\n encoding: string,\n) => Promise<void>;\nconst cprAsync = util.promisify(cpr) as (\n source: string,\n destination: string,\n options: CprOptions,\n) => Promise<string[]>;\n\nconst BUILD_DEFINITIONS: Record<\n NonNullable<WhookAPIOperationGCPFunctionConfig['type']>,\n {\n type: string;\n wrapper: { name: string; path: string };\n suffix?: string;\n }\n> = {\n http: {\n type: 'HTTP',\n wrapper: {\n name: 'wrapHandlerForGoogleHTTPFunction',\n path: path.join(__dirname, 'wrappers', 'googleHTTPFunction'),\n },\n suffix: 'Wrapped',\n },\n};\n\nexport async function prepareBuildEnvironment<T extends Knifecycle>(\n $: T = new Knifecycle() as T,\n): Promise<T> {\n $.register(\n constant('INITIALIZER_PATH_MAP', {\n ENV: '@whook/whook/dist/services/ProxyedENV',\n log: __dirname + '/services/log',\n time: 'common-services/dist/time',\n delay: 'common-services/dist/delay',\n }),\n );\n $.register(initInitializerBuilder);\n $.register(initBuildAutoloader);\n $.register(initCompiler);\n $.register(constant('PORT', 1337));\n $.register(constant('HOST', 'localhost'));\n\n return $;\n}\n\nexport async function runBuild(\n aPrepareBuildEnvironment: typeof prepareBuildEnvironment,\n): Promise<void> {\n try {\n const handlerName = process.argv[2];\n const $ = await aPrepareBuildEnvironment();\n const {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n API,\n buildInitializer,\n }: WhookGCPBuildConfig &\n Pick<WhookCompilerConfig, 'BUILD_OPTIONS'> & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n API: OpenAPIV3.Document;\n buildInitializer: BuildInitializer;\n } = await $.run([\n 'NODE_ENV',\n '?BUILD_PARALLELISM',\n '?BUILD_OPTIONS',\n 'PROJECT_DIR',\n 'process',\n 'compiler',\n 'log',\n '$autoload',\n 'API',\n 'buildInitializer',\n ]);\n\n log('info', 'GCP Functions build Environment initialized 🚀🌕');\n\n const operations = (\n await dereferenceOpenAPIOperations(\n API,\n getOpenAPIOperations<WhookAPIOperationGCPFunctionConfig>(API),\n )\n ).filter((operation) => {\n if (handlerName) {\n const sourceOperationId =\n operation['x-whook'] && operation['x-whook'].sourceOperationId;\n\n return (\n handlerName === operation.operationId ||\n handlerName === sourceOperationId\n );\n }\n return true;\n });\n\n log('warning', `${operations.length} operations to process.`);\n await processOperations(\n {\n NODE_ENV,\n BUILD_OPTIONS: BUILD_OPTIONS || DEFAULT_BUILD_OPTIONS,\n BUILD_PARALLELISM: BUILD_PARALLELISM || DEFAULT_BUILD_PARALLELISM,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operations,\n );\n await $.destroy();\n } catch (err) {\n // eslint-disable-next-line\n console.error(\n '💀 - Cannot launch the build:',\n (err as YError).stack,\n JSON.stringify((err as YError).params, null, 2),\n );\n process.exit(1);\n }\n}\n\nasync function processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: Required<Pick<WhookCompilerConfig, 'BUILD_OPTIONS'>> & {\n NODE_ENV: string;\n BUILD_PARALLELISM: number;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n buildInitializer: BuildInitializer;\n },\n operations: WhookOperation<WhookAPIOperationGCPFunctionConfig>[],\n): Promise<void> {\n const operationsLeft = operations.slice(BUILD_PARALLELISM);\n\n await Promise.all(\n operations.slice(0, BUILD_PARALLELISM).map((operation) =>\n buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operation,\n ),\n ),\n );\n\n if (operationsLeft.length) {\n log('info', operationsLeft.length, ' operations left.');\n return processOperations(\n {\n NODE_ENV,\n BUILD_PARALLELISM,\n BUILD_OPTIONS,\n PROJECT_DIR,\n compiler,\n log,\n $autoload,\n buildInitializer,\n },\n operationsLeft,\n );\n }\n log('info', 'No more operations.');\n}\n\nasync function buildAnyLambda(\n {\n NODE_ENV,\n PROJECT_DIR,\n BUILD_OPTIONS,\n compiler,\n log,\n $autoload,\n buildInitializer,\n }: Required<Pick<WhookCompilerConfig, 'BUILD_OPTIONS'>> & {\n NODE_ENV: string;\n PROJECT_DIR: string;\n compiler: WhookCompilerService;\n log: LogService;\n $autoload: Autoloader<Initializer<Dependencies, Service>>;\n buildInitializer: BuildInitializer;\n },\n operation: WhookOperation<WhookAPIOperationGCPFunctionConfig>,\n): Promise<void> {\n const { operationId } = operation;\n\n try {\n const whookConfig: WhookAPIOperationGCPFunctionConfig =\n operation['x-whook'] || {};\n const operationType = whookConfig.type || 'http';\n const sourceOperationId = whookConfig.sourceOperationId;\n const entryPoint = operationId;\n const finalEntryPoint =\n (sourceOperationId ? sourceOperationId : operationId) +\n ((operation['x-whook'] || {}).suffix || '');\n log('warning', `Building ${operationType} \"${finalEntryPoint}\"...`);\n const buildDefinition = BUILD_DEFINITIONS[operationType];\n // eslint-disable-next-line\n const applyWrapper = require(buildDefinition.wrapper.path).default;\n const rootNode = await $autoload(\n entryPoint + (buildDefinition.suffix || ''),\n );\n const lambdaPath = path.join(\n PROJECT_DIR,\n 'builds',\n NODE_ENV,\n finalEntryPoint,\n );\n const finalHandlerInitializer = applyWrapper(rootNode.initializer);\n\n const initializerContent = await buildInitializer(\n finalHandlerInitializer[SPECIAL_PROPS.INJECT].map((name) =>\n name === 'OPERATION_API'\n ? `OPERATION_API>OPERATION_API_${finalEntryPoint}`\n : name,\n ),\n BUILD_OPTIONS,\n );\n const indexContent = await buildLambdaIndex(\n rootNode,\n {\n name: buildDefinition.wrapper.name,\n path: buildDefinition.wrapper.path,\n },\n BUILD_OPTIONS,\n );\n\n await mkdirp(lambdaPath);\n await Promise.all([\n copyStaticFiles(\n { PROJECT_DIR, log },\n lambdaPath,\n whookConfig.staticFiles || [],\n ),\n ensureFileAsync(\n { log },\n path.join(lambdaPath, 'initialize.js'),\n initializerContent,\n ),\n ensureFileAsync({ log }, path.join(lambdaPath, 'main.js'), indexContent),\n ]);\n await buildFinalLambda({ compiler, log }, lambdaPath, whookConfig);\n } catch (err) {\n log('error', `Error building \"${operationId}\"...`);\n log('error-stack', (err as Error).stack || 'no_stack_trace');\n log('debug', JSON.stringify((err as YError).params, null, 2));\n throw YError.wrap(err as Error, 'E_LAMBDA_BUILD', operationId);\n }\n}\n\nasync function buildLambdaIndex(\n rootNode: { path: string },\n buildWrapper: { name: string; path: string },\n options: NonNullable<WhookCompilerConfig['BUILD_OPTIONS']>,\n): Promise<string> {\n return `${\n options.modules === 'commonjs'\n ? `const pickModule = (m) => { return m && m.default || m; }\nconst initHandler = pickModule(require('${rootNode.path}'));\nconst ${buildWrapper.name} = pickModule(require('${buildWrapper.path}'));\nconst { initialize } = require('./initialize');`\n : `import initHandler from '${rootNode.path}';\nimport ${buildWrapper.name} from '${buildWrapper.path}';\nimport { initialize } from './initialize';`\n }\n\nconst handlerInitializer = ${buildWrapper.name}(\n initHandler\n);\n\nconst handlerPromise = initialize()\n .then(handlerInitializer);\n\n${\n options.modules === 'commonjs'\n ? 'module.exports = {}; module.exports.default = '\n : 'export default '\n}function handler (req, res) {\n return handlerPromise\n .then(handler => handler(req, res));\n};\n`;\n}\n\nasync function buildFinalLambda(\n { compiler, log }: { compiler: WhookCompilerService; log: LogService },\n lambdaPath: string,\n whookConfig: WhookAPIOperationGCPFunctionConfig,\n): Promise<void> {\n const entryPoint = `${lambdaPath}/main.js`;\n const { contents, mappings } = await compiler(\n entryPoint,\n whookConfig.compilerOptions,\n );\n\n await Promise.all([\n ensureFileAsync({ log }, `${lambdaPath}/index.js`, contents, 'utf-8'),\n mappings\n ? ensureFileAsync(\n { log },\n `${lambdaPath}/index.js.map`,\n mappings,\n 'utf-8',\n )\n : Promise.resolve(),\n ]);\n}\n\nasync function copyStaticFiles(\n { PROJECT_DIR, log }: { PROJECT_DIR: string; log: LogService },\n lambdaPath: string,\n staticFiles: string[] = [],\n): Promise<void> {\n await Promise.all(\n staticFiles.map(\n async (staticFile) =>\n await copyFiles(\n { log },\n path.join(PROJECT_DIR, 'node_modules', staticFile),\n path.join(lambdaPath, 'node_modules', staticFile),\n ),\n ),\n );\n}\n\nasync function copyFiles(\n { log }: { log: LogService },\n source: string,\n destination: string,\n): Promise<void> {\n let theError;\n try {\n await mkdirp(destination);\n const data = await readFileAsync(source, 'utf-8');\n await ensureFileAsync({ log }, destination, data, 'utf-8');\n } catch (err) {\n theError = err;\n }\n if (theError) {\n if ('EISDIR' !== theError.code) {\n throw theError;\n }\n await cprAsync(source, destination, {\n overwrite: true,\n });\n }\n}\n\nasync function ensureFileAsync(\n { log }: { log: LogService },\n path: string,\n content: string,\n encoding = 'utf-8',\n): Promise<void> {\n try {\n const oldContent = await readFileAsync(path, encoding);\n\n if (oldContent === content) {\n log('debug', `Ignore unchanged file: \"${path}\".`);\n return;\n }\n } catch (err) {\n log('debug', `Write new file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n }\n log('debug', `Write changed file: \"${path}\".`);\n return await writeFileAsync(path, content, encoding);\n}\n"],"mappings":"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"}
|
package/dist/libs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.js","names":["loadLambda","PROJECT_DIR","log","target","operationId","type","modulePath","path","join","module","require","YError","default","Object","keys","err","wrap"],"sources":["../../src/libs/utils.ts"],"sourcesContent":["import YError from 'yerror';\nimport path from 'path';\nimport type { LogService } from 'common-services';\n\nexport async function loadLambda(\n {\n PROJECT_DIR,\n log,\n }: {\n PROJECT_DIR: string;\n log: LogService;\n },\n target: string,\n operationId: string,\n type: string,\n): Promise<any> {\n const modulePath = path.join(\n PROJECT_DIR,\n 'builds',\n target,\n operationId,\n type,\n );\n\n log('debug', `⛏️ - Loading lambda module at path \"${modulePath}\".`);\n\n try {\n // eslint-disable-next-line\n const module = require(modulePath);\n\n if (!module) {\n throw new YError('E_MODULE_NOT_FOUND', module);\n }\n\n if (!module.default) {\n throw new YError('E_LAMBDA_NOT_FOUND', module, Object.keys(module));\n }\n\n return module.default;\n } catch (err) {\n throw YError.wrap(err as Error, 'E_LAMBDA_LOAD');\n }\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAGO,eAAeA,UAAf,CACL;EACEC,WADF;EAEEC;AAFF,CADK,EAQLC,MARK,EASLC,WATK,EAULC,IAVK,EAWS;EACd,MAAMC,UAAU,GAAGC,aAAA,CAAKC,IAAL,CACjBP,WADiB,EAEjB,QAFiB,EAGjBE,MAHiB,EAIjBC,WAJiB,EAKjBC,IALiB,CAAnB;;EAQAH,GAAG,CAAC,OAAD,EAAW,uCAAsCI,UAAW,IAA5D,CAAH;;EAEA,IAAI;IACF;IACA,MAAMG,MAAM,GAAGC,OAAO,CAACJ,UAAD,CAAtB;;IAEA,IAAI,CAACG,MAAL,EAAa;MACX,MAAM,IAAIE,eAAJ,CAAW,oBAAX,EAAiCF,MAAjC,CAAN;IACD;;IAED,IAAI,CAACA,MAAM,CAACG,OAAZ,EAAqB;MACnB,MAAM,IAAID,eAAJ,CAAW,oBAAX,EAAiCF,MAAjC,EAAyCI,MAAM,CAACC,IAAP,CAAYL,MAAZ,CAAzC,CAAN;IACD;;IAED,OAAOA,MAAM,CAACG,OAAd;EACD,CAbD,CAaE,OAAOG,GAAP,EAAY;IACZ,MAAMJ,eAAA,CAAOK,IAAP,CAAYD,GAAZ,EAA0B,eAA1B,CAAN;EACD;AACF"}
|
package/dist/libs/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":["YError","path","loadLambda","PROJECT_DIR","log","target","operationId","type","modulePath","join","module","require","default","Object","keys","err","wrap"],"sources":["../../src/libs/utils.ts"],"sourcesContent":["import YError from 'yerror';\nimport path from 'path';\nimport type { LogService } from 'common-services';\n\nexport async function loadLambda(\n {\n PROJECT_DIR,\n log,\n }: {\n PROJECT_DIR: string;\n log: LogService;\n },\n target: string,\n operationId: string,\n type: string,\n): Promise<any> {\n const modulePath = path.join(\n PROJECT_DIR,\n 'builds',\n target,\n operationId,\n type,\n );\n\n log('debug', `⛏️ - Loading lambda module at path \"${modulePath}\".`);\n\n try {\n // eslint-disable-next-line\n const module = require(modulePath);\n\n if (!module) {\n throw new YError('E_MODULE_NOT_FOUND', module);\n }\n\n if (!module.default) {\n throw new YError('E_LAMBDA_NOT_FOUND', module, Object.keys(module));\n }\n\n return module.default;\n } catch (err) {\n throw YError.wrap(err as Error, 'E_LAMBDA_LOAD');\n }\n}\n"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,QAAnB;AACA,OAAOC,IAAP,MAAiB,MAAjB;AAGA,OAAO,eAAeC,UAAf,CACL;EACEC,WADF;EAEEC;AAFF,CADK,EAQLC,MARK,EASLC,WATK,EAULC,IAVK,EAWS;EACd,MAAMC,UAAU,GAAGP,IAAI,CAACQ,IAAL,CACjBN,WADiB,EAEjB,QAFiB,EAGjBE,MAHiB,EAIjBC,WAJiB,EAKjBC,IALiB,CAAnB;EAQAH,GAAG,CAAC,OAAD,EAAW,uCAAsCI,UAAW,IAA5D,CAAH;;EAEA,IAAI;IACF;IACA,MAAME,MAAM,GAAGC,OAAO,CAACH,UAAD,CAAtB;;IAEA,IAAI,CAACE,MAAL,EAAa;MACX,MAAM,IAAIV,MAAJ,CAAW,oBAAX,EAAiCU,MAAjC,CAAN;IACD;;IAED,IAAI,CAACA,MAAM,CAACE,OAAZ,EAAqB;MACnB,MAAM,IAAIZ,MAAJ,CAAW,oBAAX,EAAiCU,MAAjC,EAAyCG,MAAM,CAACC,IAAP,CAAYJ,MAAZ,CAAzC,CAAN;IACD;;IAED,OAAOA,MAAM,CAACE,OAAd;EACD,CAbD,CAaE,OAAOG,GAAP,EAAY;IACZ,MAAMf,MAAM,CAACgB,IAAP,CAAYD,GAAZ,EAA0B,eAA1B,CAAN;EACD;AACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { Injector, Autoloader, Initializer, Dependencies } from 'knifecycle';
|
|
3
|
+
import type { LogService } from 'common-services';
|
|
3
4
|
/**
|
|
4
5
|
* Wrap the _autoload service in order to build AWS
|
|
5
6
|
* Lambda compatible code.
|
|
@@ -14,4 +15,15 @@ declare const _default: import("knifecycle").ServiceInitializer<unknown, Autoloa
|
|
|
14
15
|
* @return {Promise<Object>}
|
|
15
16
|
* A promise of an object containing the reshaped env vars.
|
|
16
17
|
*/
|
|
18
|
+
declare const _default: import("knifecycle").ServiceInitializer<import("@whook/whook/dist/services/_autoload").AutoloadConfig & {
|
|
19
|
+
PROJECT_SRC: string;
|
|
20
|
+
CONFIGS?: import("@whook/whook").CONFIGSService | undefined;
|
|
21
|
+
WRAPPERS?: import("@whook/whook").WhookWrapper<unknown, import("@whook/http-transaction").WhookHandler<import("knifecycle").Parameters<any>, import("@whook/http-transaction").WhookResponse<number, void | import("@whook/http-transaction").WhookHeaders, void | import("type-fest").JsonValue | import("stream").Readable>, import("@whook/http-transaction").WhookOperation<Record<string, unknown>>>>[] | undefined;
|
|
22
|
+
$injector: Injector<any>;
|
|
23
|
+
importer: import("@whook/whook").ImporterService<{
|
|
24
|
+
default: Initializer<any, Dependencies<any>>;
|
|
25
|
+
}>;
|
|
26
|
+
resolve: import("@whook/whook/dist/services/resolve").ResolveService;
|
|
27
|
+
log?: LogService | undefined;
|
|
28
|
+
}, Autoloader<Initializer<unknown, Dependencies<any>>>>;
|
|
17
29
|
export default _default;
|