@crossplane-org/function-sdk-typescript 0.2.0 → 0.3.1-20260224101659-4cea5ce7141b
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 +5 -5
- package/dist/function/function.d.ts +3 -3
- package/dist/function/function.d.ts.map +1 -1
- package/dist/function/function.js +8 -7
- package/dist/function/function.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/proto/google/protobuf/duration.js +1 -1
- package/dist/proto/google/protobuf/duration.js.map +1 -1
- package/dist/proto/google/protobuf/struct.d.ts.map +1 -1
- package/dist/proto/google/protobuf/struct.js +7 -7
- package/dist/proto/google/protobuf/struct.js.map +1 -1
- package/dist/proto/run_function.d.ts.map +1 -1
- package/dist/proto/run_function.js +41 -38
- package/dist/proto/run_function.js.map +1 -1
- package/dist/request/request.d.ts +3 -5
- package/dist/request/request.d.ts.map +1 -1
- package/dist/request/request.js +1 -1
- package/dist/request/request.js.map +1 -1
- package/dist/resource/resource.d.ts +27 -25
- package/dist/resource/resource.d.ts.map +1 -1
- package/dist/resource/resource.js +21 -1
- package/dist/resource/resource.js.map +1 -1
- package/dist/response/response.d.ts +7 -15
- package/dist/response/response.d.ts.map +1 -1
- package/dist/response/response.js +6 -6
- package/dist/response/response.js.map +1 -1
- package/dist/runtime/runtime.d.ts +3 -3
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +13 -12
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +1 -5
- package/dist/vitest.config.js.map +1 -1
- package/package.json +19 -10
- package/dist/example-function.d.ts +0 -11
- package/dist/example-function.d.ts.map +0 -1
- package/dist/example-function.js +0 -93
- package/dist/example-function.js.map +0 -1
- package/dist/main.d.ts +0 -3
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -69
- package/dist/main.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/resource/resource.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AA8B3D;;GAEG;AACH,MAAM,UAAU,kBAAkB;
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/resource/resource.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AA8B3D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,KAAK,EAAE,KAAK,CAAC,iBAAiB;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA2C;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,wEAAwE;IACxE,sDAAsD;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,GAA4B;IACnD,uEAAuE;IACvE,oEAAoE;IACpE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAA4B;IAC3D,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACxD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,GAA4B,EAC5B,iBAAqC,EACrC,KAAa;IAEb,OAAO,QAAQ,CAAC,QAAQ,CAAC;QACvB,QAAQ,EAAE,GAAG;QACb,iBAAiB,EAAE,iBAAiB,IAAI,EAAE;QAC1C,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB;KAC7D,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAkB;IACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* including setting desired state, managing results, handling context, and working with
|
|
6
6
|
* composite resources and their status.
|
|
7
7
|
*/
|
|
8
|
-
import { Resource, RunFunctionRequest, RunFunctionResponse, Ready } from
|
|
9
|
-
import { Duration } from
|
|
8
|
+
import { Resource, RunFunctionRequest, RunFunctionResponse, Ready } from '../proto/run_function.js';
|
|
9
|
+
import { Duration } from '../proto/google/protobuf/duration.js';
|
|
10
10
|
/**
|
|
11
11
|
* Default time-to-live for function responses (60 seconds).
|
|
12
12
|
* Crossplane will call the function again when the TTL expires.
|
|
@@ -184,11 +184,7 @@ export declare function setDesiredComposedResources(rsp: RunFunctionResponse, dc
|
|
|
184
184
|
* });
|
|
185
185
|
* ```
|
|
186
186
|
*/
|
|
187
|
-
export declare function setDesiredResources(rsp: RunFunctionResponse, resources:
|
|
188
|
-
[key: string]: {
|
|
189
|
-
[key: string]: any;
|
|
190
|
-
};
|
|
191
|
-
}): RunFunctionResponse;
|
|
187
|
+
export declare function setDesiredResources(rsp: RunFunctionResponse, resources: Record<string, Record<string, unknown>>): RunFunctionResponse;
|
|
192
188
|
/**
|
|
193
189
|
* Update a resource by merging source into target.
|
|
194
190
|
*
|
|
@@ -234,11 +230,9 @@ export declare function update(src: Resource, tgt: Resource): Resource;
|
|
|
234
230
|
* });
|
|
235
231
|
* ```
|
|
236
232
|
*/
|
|
237
|
-
export declare function setDesiredCompositeStatus({ rsp, status }: {
|
|
233
|
+
export declare function setDesiredCompositeStatus({ rsp, status, }: {
|
|
238
234
|
rsp: RunFunctionResponse;
|
|
239
|
-
status:
|
|
240
|
-
[key: string]: any;
|
|
241
|
-
};
|
|
235
|
+
status: Record<string, unknown>;
|
|
242
236
|
}): RunFunctionResponse;
|
|
243
237
|
/**
|
|
244
238
|
* Set a context key in the response.
|
|
@@ -259,7 +253,7 @@ export declare function setDesiredCompositeStatus({ rsp, status }: {
|
|
|
259
253
|
* rsp = setContextKey(rsp, "connection-config", { host: "db.example.com", port: 5432 });
|
|
260
254
|
* ```
|
|
261
255
|
*/
|
|
262
|
-
export declare function setContextKey(rsp: RunFunctionResponse, key: string, value:
|
|
256
|
+
export declare function setContextKey(rsp: RunFunctionResponse, key: string, value: unknown): RunFunctionResponse;
|
|
263
257
|
/**
|
|
264
258
|
* Set the desired composite resource in the response.
|
|
265
259
|
*
|
|
@@ -305,7 +299,5 @@ export declare function setDesiredCompositeResource(rsp: RunFunctionResponse, re
|
|
|
305
299
|
* });
|
|
306
300
|
* ```
|
|
307
301
|
*/
|
|
308
|
-
export declare function setOutput(rsp: RunFunctionResponse, output:
|
|
309
|
-
[key: string]: any;
|
|
310
|
-
}): RunFunctionResponse;
|
|
302
|
+
export declare function setOutput(rsp: RunFunctionResponse, output: Record<string, unknown>): RunFunctionResponse;
|
|
311
303
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response/response.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EAEnB,KAAK,EACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAGhE;;;GAGG;AACH,QAAA,MAAM,WAAW,EAAE,QAAoC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAsB/E;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,EAChC,GAAG,EAAE,aAAa,GACjB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAG7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response/response.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EAEnB,KAAK,EACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAGhE;;;GAGG;AACH,QAAA,MAAM,WAAW,EAAE,QAAoC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAsB/E;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,EAChC,GAAG,EAAE,aAAa,GACjB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAG7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAQpF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,QAO/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,QAOhE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAChC,mBAAmB,CAYrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACjD,mBAAmB,CAkBrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAE7D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,GAAG,EACH,MAAM,GACP,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GAAG,mBAAmB,CAsBtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,mBAAmB,CAMrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,KAAK,GACZ,mBAAmB,CAcrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,mBAAmB,CAGrB"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* including setting desired state, managing results, handling context, and working with
|
|
6
6
|
* composite resources and their status.
|
|
7
7
|
*/
|
|
8
|
-
import { Resource, RunFunctionRequest, RunFunctionResponse, Severity, Ready, } from
|
|
9
|
-
import { Duration } from
|
|
10
|
-
import { merge } from
|
|
8
|
+
import { Resource, RunFunctionRequest, RunFunctionResponse, Severity, Ready, } from '../proto/run_function.js';
|
|
9
|
+
import { Duration } from '../proto/google/protobuf/duration.js';
|
|
10
|
+
import { merge } from 'ts-deepmerge';
|
|
11
11
|
/**
|
|
12
12
|
* Default time-to-live for function responses (60 seconds).
|
|
13
13
|
* Crossplane will call the function again when the TTL expires.
|
|
@@ -56,7 +56,7 @@ export function to(req, ttl) {
|
|
|
56
56
|
conditions: [],
|
|
57
57
|
context: req.context,
|
|
58
58
|
desired: desired,
|
|
59
|
-
meta: { tag: req.meta?.tag ||
|
|
59
|
+
meta: { tag: req.meta?.tag || '', ttl: ttl || DEFAULT_TTL },
|
|
60
60
|
requirements: undefined,
|
|
61
61
|
results: [],
|
|
62
62
|
};
|
|
@@ -288,7 +288,7 @@ export function update(src, tgt) {
|
|
|
288
288
|
* });
|
|
289
289
|
* ```
|
|
290
290
|
*/
|
|
291
|
-
export function setDesiredCompositeStatus({ rsp, status }) {
|
|
291
|
+
export function setDesiredCompositeStatus({ rsp, status, }) {
|
|
292
292
|
// Ensure desired state exists
|
|
293
293
|
if (!rsp.desired) {
|
|
294
294
|
rsp.desired = { composite: undefined, resources: {} };
|
|
@@ -303,7 +303,7 @@ export function setDesiredCompositeStatus({ rsp, status }) {
|
|
|
303
303
|
}
|
|
304
304
|
// Merge the status
|
|
305
305
|
rsp.desired.composite.resource = merge(rsp.desired.composite.resource, {
|
|
306
|
-
|
|
306
|
+
status: status,
|
|
307
307
|
});
|
|
308
308
|
return rsp;
|
|
309
309
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response/response.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,KAAK,GACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,GAAa,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,EAAE,CAAC,GAAuB,EAAE,GAAc;IACxD,qCAAqC;IACrC,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE1B,uCAAuC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IAED,sEAAsE;IACtE,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,WAAW,EAAE;QAC3D,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,8BAA8B,CAC5C,GAAgC,EAChC,GAAkB;IAElB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response/response.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* handle TLS credentials, and manage server lifecycle. It simplifies the process
|
|
6
6
|
* of setting up a production-ready function server with proper security.
|
|
7
7
|
*/
|
|
8
|
-
import * as grpc from
|
|
9
|
-
import type { Logger } from
|
|
10
|
-
import { FunctionRunner } from
|
|
8
|
+
import * as grpc from '@grpc/grpc-js';
|
|
9
|
+
import type { Logger } from 'pino';
|
|
10
|
+
import { FunctionRunner } from '../function/function.js';
|
|
11
11
|
/**
|
|
12
12
|
* Configuration options for the gRPC server.
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAa,MAAM,yBAAyB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAa,MAAM,yBAAyB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAkBjF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAMzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAYjG"}
|
package/dist/runtime/runtime.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* handle TLS credentials, and manage server lifecycle. It simplifies the process
|
|
6
6
|
* of setting up a production-ready function server with proper security.
|
|
7
7
|
*/
|
|
8
|
-
import * as grpc from
|
|
9
|
-
import { readFileSync } from
|
|
10
|
-
import { join } from
|
|
11
|
-
import { FunctionRunner, getServer } from
|
|
8
|
+
import * as grpc from '@grpc/grpc-js';
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { FunctionRunner, getServer } from '../function/function.js';
|
|
12
12
|
/**
|
|
13
13
|
* Create gRPC ServerCredentials from TLS certificate files.
|
|
14
14
|
*
|
|
@@ -41,17 +41,18 @@ import { FunctionRunner, getServer } from "../function/function.js";
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
export function getServerCredentials(opts) {
|
|
44
|
-
if (opts?.insecure || opts?.tlsServerCertsDir ===
|
|
44
|
+
if (opts?.insecure || opts?.tlsServerCertsDir === '' || opts?.tlsServerCertsDir === undefined) {
|
|
45
45
|
return grpc.ServerCredentials.createInsecure();
|
|
46
46
|
}
|
|
47
47
|
const tlsCertsDir = opts.tlsServerCertsDir;
|
|
48
|
-
if (typeof tlsCertsDir !==
|
|
49
|
-
throw new Error(
|
|
48
|
+
if (typeof tlsCertsDir !== 'string' || tlsCertsDir.trim() === '') {
|
|
49
|
+
throw new Error('tlsServerCertsDir must be a non-empty string when TLS is enabled');
|
|
50
50
|
}
|
|
51
|
-
const privateKey = readFileSync(join(tlsCertsDir,
|
|
52
|
-
const certChain = readFileSync(join(tlsCertsDir,
|
|
53
|
-
const rootCerts = readFileSync(join(tlsCertsDir,
|
|
54
|
-
return grpc.ServerCredentials.createSsl(rootCerts, [{ private_key: privateKey, cert_chain: certChain }], false
|
|
51
|
+
const privateKey = readFileSync(join(tlsCertsDir, 'tls.key'));
|
|
52
|
+
const certChain = readFileSync(join(tlsCertsDir, 'tls.crt'));
|
|
53
|
+
const rootCerts = readFileSync(join(tlsCertsDir, 'ca.crt'));
|
|
54
|
+
return grpc.ServerCredentials.createSsl(rootCerts, [{ private_key: privateKey, cert_chain: certChain }], false // Set to false to make client certificates optional
|
|
55
|
+
);
|
|
55
56
|
}
|
|
56
57
|
/**
|
|
57
58
|
* Create a new gRPC server with the function runner registered.
|
|
@@ -74,7 +75,7 @@ export function getServerCredentials(opts) {
|
|
|
74
75
|
export function newGrpcServer(functionRunner, logger) {
|
|
75
76
|
const server = getServer(functionRunner, logger);
|
|
76
77
|
if (logger) {
|
|
77
|
-
logger.debug(
|
|
78
|
+
logger.debug('grpc server created');
|
|
78
79
|
}
|
|
79
80
|
return server;
|
|
80
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAiCpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,oBAAoB,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAiCpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAoB;IACvD,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,iBAAiB,KAAK,EAAE,IAAI,IAAI,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC3C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CACrC,SAAS,EACT,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EACpD,KAAK,CAAC,oDAAoD;KAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,cAA8B,EAAE,MAAc;IAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB,EAAE,IAAmB,EAAE,MAAc;IAClF,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":";AAEA,wBAUG"}
|
package/dist/vitest.config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAClC,OAAO,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC;SAClD;KACF;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crossplane-org/function-sdk-typescript",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1-20260224101659-4cea5ce7141b",
|
|
4
4
|
"description": "A Crossplane Function SDK for Typescript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"crossplane",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
],
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "github.com/
|
|
12
|
+
"url": "https://github.com/crossplane/function-sdk-typescript"
|
|
13
13
|
},
|
|
14
14
|
"license": "Apache-2.0",
|
|
15
15
|
"author": "Steven Borrelli",
|
|
@@ -28,28 +28,37 @@
|
|
|
28
28
|
],
|
|
29
29
|
"scripts": {
|
|
30
30
|
"clean": "scripts/clean.sh",
|
|
31
|
+
"protoc-gen": "scripts/protoc-gen.sh",
|
|
31
32
|
"build": "npx tsc",
|
|
32
33
|
"pack": "npm pack",
|
|
33
34
|
"prepublishOnly": "npm run build",
|
|
34
35
|
"test": "vitest run",
|
|
35
36
|
"test:watch": "vitest",
|
|
36
|
-
"test:coverage": "vitest run --coverage"
|
|
37
|
+
"test:coverage": "vitest run --coverage",
|
|
38
|
+
"lint": "eslint src",
|
|
39
|
+
"lint:fix": "eslint src --fix",
|
|
40
|
+
"format": "prettier --write \"src/**/*.{ts,tsx,json,md}\"",
|
|
41
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx,json,md}\""
|
|
37
42
|
},
|
|
38
43
|
"dependencies": {
|
|
39
|
-
"@grpc/grpc-js": "^1.
|
|
44
|
+
"@grpc/grpc-js": "^1.14.3",
|
|
40
45
|
"@grpc/proto-loader": "^0.8.0",
|
|
41
|
-
"google-protobuf": "^4.0.
|
|
46
|
+
"google-protobuf": "^4.0.1",
|
|
42
47
|
"kubernetes-models": "^4.5.1",
|
|
43
48
|
"pino": "^10.1.0",
|
|
44
49
|
"ts-deepmerge": "^7.0.3",
|
|
45
|
-
"ts-proto": "^2.
|
|
50
|
+
"ts-proto": "^2.10.1"
|
|
46
51
|
},
|
|
47
52
|
"devDependencies": {
|
|
53
|
+
"@eslint/js": "^9.39.2",
|
|
48
54
|
"@types/google-protobuf": "^3.15.12",
|
|
49
|
-
"@types/node": "^
|
|
50
|
-
"@vitest/coverage-v8": "^
|
|
55
|
+
"@types/node": "^25.0.3",
|
|
56
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
57
|
+
"eslint": "^9.39.2",
|
|
58
|
+
"prettier": "^3.7.4",
|
|
51
59
|
"ts-node": "^10.9.2",
|
|
52
|
-
"typescript": "^5.
|
|
53
|
-
"
|
|
60
|
+
"typescript": "^5.9.3",
|
|
61
|
+
"typescript-eslint": "^8.52.0",
|
|
62
|
+
"vitest": "^4.0.16"
|
|
54
63
|
}
|
|
55
64
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { RunFunctionRequest, RunFunctionResponse } from "./proto/run_function.js";
|
|
2
|
-
import type { Logger } from "pino";
|
|
3
|
-
import type { FunctionHandler } from "./function/function.js";
|
|
4
|
-
/**
|
|
5
|
-
* ExampleFunction is a sample implementation showing how to use the SDK
|
|
6
|
-
* This creates a Deployment and Pod as example resources
|
|
7
|
-
*/
|
|
8
|
-
export declare class ExampleFunction implements FunctionHandler {
|
|
9
|
-
RunFunction(req: RunFunctionRequest, logger?: Logger): Promise<RunFunctionResponse>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=example-function.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example-function.d.ts","sourceRoot":"","sources":["../src/example-function.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAanC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,qBAAa,eAAgB,YAAW,eAAe;IAC7C,WAAW,CACb,GAAG,EAAE,kBAAkB,EACvB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC;CA4FlC"}
|
package/dist/example-function.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// Example function implementation demonstrating how to use the SDK
|
|
2
|
-
import { Resource, RunFunctionRequest, RunFunctionResponse, } from "./proto/run_function.js";
|
|
3
|
-
import { Pod } from "kubernetes-models/v1";
|
|
4
|
-
import { fatal, normal, setDesiredComposedResources, to, } from "./response/response.js";
|
|
5
|
-
import { getDesiredComposedResources, getDesiredCompositeResource, getObservedCompositeResource, } from "./request/request.js";
|
|
6
|
-
/**
|
|
7
|
-
* ExampleFunction is a sample implementation showing how to use the SDK
|
|
8
|
-
* This creates a Deployment and Pod as example resources
|
|
9
|
-
*/
|
|
10
|
-
export class ExampleFunction {
|
|
11
|
-
async RunFunction(req, logger) {
|
|
12
|
-
const startTime = Date.now();
|
|
13
|
-
// Set up a minimal response from the request
|
|
14
|
-
let rsp = to(req);
|
|
15
|
-
try {
|
|
16
|
-
// Get our Observed Composite
|
|
17
|
-
const oxr = getObservedCompositeResource(req);
|
|
18
|
-
logger?.debug({ oxr }, "Observed composite resource");
|
|
19
|
-
// Get our Desired Composite
|
|
20
|
-
const dxr = getDesiredCompositeResource(req);
|
|
21
|
-
logger?.debug({ dxr }, "Desired composite resource");
|
|
22
|
-
// List the Desired Composed resources
|
|
23
|
-
let dcds = getDesiredComposedResources(req);
|
|
24
|
-
// Create resource from a JSON object
|
|
25
|
-
dcds["deployment"] = Resource.fromJSON({
|
|
26
|
-
resource: {
|
|
27
|
-
apiVersion: "apps/v1",
|
|
28
|
-
kind: "Deployment",
|
|
29
|
-
metadata: {
|
|
30
|
-
name: "my-deployment",
|
|
31
|
-
namespace: "foo",
|
|
32
|
-
},
|
|
33
|
-
spec: {
|
|
34
|
-
replicas: 3,
|
|
35
|
-
selector: {
|
|
36
|
-
matchLabels: {
|
|
37
|
-
app: "my-app",
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
template: {
|
|
41
|
-
metadata: {
|
|
42
|
-
labels: {
|
|
43
|
-
app: "my-app",
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
spec: {
|
|
47
|
-
containers: [
|
|
48
|
-
{
|
|
49
|
-
name: "my-container",
|
|
50
|
-
image: "my-image:latest",
|
|
51
|
-
ports: [
|
|
52
|
-
{
|
|
53
|
-
containerPort: 80,
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
},
|
|
57
|
-
],
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
// Create a resource from a Model at https://github.com/tommy351/kubernetes-models-ts
|
|
64
|
-
const pod = new Pod({
|
|
65
|
-
metadata: {
|
|
66
|
-
name: "pod",
|
|
67
|
-
namespace: "default",
|
|
68
|
-
},
|
|
69
|
-
spec: {
|
|
70
|
-
containers: [],
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
pod.validate();
|
|
74
|
-
dcds["pod"] = Resource.fromJSON({ resource: pod.toJSON() });
|
|
75
|
-
// Merge dcds with existing resources using the response helper
|
|
76
|
-
rsp = setDesiredComposedResources(rsp, dcds);
|
|
77
|
-
const duration = Date.now() - startTime;
|
|
78
|
-
logger?.info({ duration: `${duration}ms` }, "Function completed successfully");
|
|
79
|
-
normal(rsp, "processing complete");
|
|
80
|
-
return rsp;
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
const duration = Date.now() - startTime;
|
|
84
|
-
logger?.error({
|
|
85
|
-
error: error instanceof Error ? error.message : String(error),
|
|
86
|
-
duration: `${duration}ms`,
|
|
87
|
-
}, "Function invocation failed");
|
|
88
|
-
fatal(rsp, error instanceof Error ? error.message : String(error));
|
|
89
|
-
return rsp;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=example-function.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example-function.js","sourceRoot":"","sources":["../src/example-function.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
DELETED
package/dist/main.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { newGrpcServer, startServer } from "./runtime/runtime.js";
|
|
4
|
-
import { pino } from "pino";
|
|
5
|
-
import { FunctionRunner } from "./function/function.js";
|
|
6
|
-
import { ExampleFunction } from "./example-function.js";
|
|
7
|
-
// defaultAddress where the function will listen for gRPC connections
|
|
8
|
-
const defaultAddress = "0.0.0.0:9443";
|
|
9
|
-
// defaultTlsServerCertsDir is the directory where the XP package reconciler stores generated TLS certs
|
|
10
|
-
const defaultTlsServerCertsDir = "/tls/server";
|
|
11
|
-
const logger = pino({
|
|
12
|
-
level: "info",
|
|
13
|
-
});
|
|
14
|
-
const program = new Command("function-typescript-example")
|
|
15
|
-
.option("--address", "Address at which to listen for gRPC connections", defaultAddress)
|
|
16
|
-
.option("-d, --debug", "Emit debug logs.", false)
|
|
17
|
-
.option("--insecure", "Run without mTLS credentials.", false)
|
|
18
|
-
.option("--tls-server-certs-dir [Directory]", "Serve using mTLS certificates in this directory. The directory should contain tls.key, tls.crt, and ca.crt files.", defaultTlsServerCertsDir);
|
|
19
|
-
program.parse(process.argv);
|
|
20
|
-
function parseArgs(args) {
|
|
21
|
-
return {
|
|
22
|
-
address: args?.address || defaultAddress,
|
|
23
|
-
debug: args.debug,
|
|
24
|
-
insecure: args.insecure,
|
|
25
|
-
tlsServerCertsDir: args.tlsServerCertsDir,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function main() {
|
|
29
|
-
const args = program.opts();
|
|
30
|
-
const opts = parseArgs(args);
|
|
31
|
-
const logger = pino({
|
|
32
|
-
level: opts?.debug ? "debug" : "info",
|
|
33
|
-
formatters: {
|
|
34
|
-
level: (label) => {
|
|
35
|
-
return { severity: label.toUpperCase() };
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
logger.debug({ "options passed to function": opts });
|
|
40
|
-
try {
|
|
41
|
-
// Create an instance of your function implementation
|
|
42
|
-
// This is an example - users would replace ExampleFunction with their own implementation
|
|
43
|
-
const exampleFunction = new ExampleFunction();
|
|
44
|
-
// Create the function runner with your handler
|
|
45
|
-
const fnRunner = new FunctionRunner(exampleFunction, logger);
|
|
46
|
-
// Create and start the gRPC server
|
|
47
|
-
const server = newGrpcServer(fnRunner, logger);
|
|
48
|
-
startServer(server, opts, logger);
|
|
49
|
-
// Keep the process running to handle gRPC requests
|
|
50
|
-
process.on('SIGINT', () => {
|
|
51
|
-
logger.info('shutting down gracefully...');
|
|
52
|
-
server.tryShutdown((err) => {
|
|
53
|
-
if (err) {
|
|
54
|
-
logger.error(err, 'error during shutdown');
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
logger.info('server shut down successfully');
|
|
58
|
-
process.exit(0);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
logger.error(err);
|
|
64
|
-
// eslint-disable-next-line no-process-exit
|
|
65
|
-
process.exit(-1);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
main();
|
|
69
|
-
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|