@gemeentenijmegen/apigateway-http 0.0.23 → 0.0.25

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 CHANGED
@@ -1,13 +1,25 @@
1
1
  # AWS Apigateway HTTP helpers
2
2
 
3
- A package useful when developing serverless functions using AWS Lambda/Apigateway. It contains:
3
+ A package useful when developing serverless functions using AWS Lambda/Apigateway. Supports the REST and HTTP flavors
4
+ of the AWS API Gateway It contains:
4
5
 
5
- ## V2/Response
6
+ ## V1/Response
6
7
  A response object with several methods for common http responses. Return these from your lambda handler:
7
8
 
9
+
10
+ For V1 (rest) responses:
11
+ ```
12
+ import { Response } from '@gemeentenijmegen/apigateway-http/lib/V1/Response';
13
+ ```
14
+
15
+ For V2 (http) responses:
8
16
  ```
9
17
  import { Response } from '@gemeentenijmegen/apigateway-http/lib/V2/Response';
18
+ ```
19
+
20
+ Then use like this:
10
21
 
22
+ ```
11
23
  // Redirect to https://example.com
12
24
  Response.redirect('https://example.com');
13
25
 
@@ -22,4 +34,4 @@ Response.html('<!doctype html><html><head><title>My page</title></head><body>The
22
34
 
23
35
  // Return a json response from a javascript object
24
36
  Response.html({ key: 'value' });
25
- ```
37
+ ```
@@ -0,0 +1,19 @@
1
+ import { APIGatewayProxyResult } from 'aws-lambda';
2
+ /**
3
+ * Export under a different name for nice code completion
4
+ */
5
+ export interface ApiGatewayV1Response extends APIGatewayProxyResult {
6
+ }
7
+ /**
8
+ * Utility class for sending API gateway v2 responses
9
+ */
10
+ export declare class Response {
11
+ static redirect(location: string, code?: number, cookies?: string[] | string): ApiGatewayV1Response;
12
+ static html(body: string, code?: number, cookies?: string[] | string): ApiGatewayV1Response;
13
+ static error(code?: number, message?: string): ApiGatewayV1Response;
14
+ static json(json: any, code?: number, cookies?: string[] | string): ApiGatewayV1Response;
15
+ static csv(csv: string, csvFileName: string, code?: number): ApiGatewayV1Response;
16
+ static ok(code?: number, message?: string): ApiGatewayV1Response;
17
+ private static cookieHeaderValue;
18
+ private static withCookieHeader;
19
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Response = void 0;
4
+ /**
5
+ * Utility class for sending API gateway v2 responses
6
+ */
7
+ class Response {
8
+ static redirect(location, code = 302, cookies) {
9
+ const cookieHeaderValue = this.cookieHeaderValue(cookies);
10
+ const response = {
11
+ statusCode: code,
12
+ body: '',
13
+ headers: {
14
+ Location: location,
15
+ },
16
+ };
17
+ return Response.withCookieHeader(cookieHeaderValue, response);
18
+ }
19
+ static html(body, code = 200, cookies) {
20
+ const cookieHeaderValue = this.cookieHeaderValue(cookies);
21
+ return Response.withCookieHeader(cookieHeaderValue, {
22
+ statusCode: code,
23
+ body,
24
+ headers: {
25
+ 'Content-type': 'text/html',
26
+ },
27
+ });
28
+ }
29
+ static error(code = 500, message) {
30
+ if (message) {
31
+ return this.json({ message: message }, code);
32
+ }
33
+ return {
34
+ statusCode: code,
35
+ body: message ?? 'unknown error',
36
+ };
37
+ }
38
+ static json(json, code = 200, cookies) {
39
+ const cookieHeaderValue = this.cookieHeaderValue(cookies);
40
+ const body = JSON.stringify(json);
41
+ return Response.withCookieHeader(cookieHeaderValue, {
42
+ statusCode: code,
43
+ body,
44
+ headers: {
45
+ 'Content-type': 'application/json',
46
+ },
47
+ });
48
+ }
49
+ static csv(csv, csvFileName, code = 200) {
50
+ return {
51
+ statusCode: code,
52
+ body: csv,
53
+ headers: {
54
+ 'Content-type': 'text/csv',
55
+ 'Content-Disposition': `attachment;filename=${csvFileName}`,
56
+ },
57
+ };
58
+ }
59
+ static ok(code = 200, message) {
60
+ if (code < 200 || code >= 300) {
61
+ throw new Error('Only 2xx statuscodes are allowed');
62
+ }
63
+ if (message) {
64
+ return this.json({ message: message }, code);
65
+ }
66
+ return {
67
+ statusCode: code,
68
+ body: '',
69
+ };
70
+ }
71
+ static cookieHeaderValue(cookies) {
72
+ if (cookies != undefined && !Array.isArray(cookies)) {
73
+ cookies = [cookies];
74
+ }
75
+ return cookies ? cookies?.join('; ') : null;
76
+ }
77
+ static withCookieHeader(cookieheader, response) {
78
+ if (cookieheader) {
79
+ response.headers.Cookie = cookieheader;
80
+ }
81
+ return response;
82
+ }
83
+ }
84
+ exports.Response = Response;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVjEvUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUE7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFFbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDdkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsTUFBTSxRQUFRLEdBQXlCO1lBQ3JDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1NBQ0YsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE9BQTJCO1FBQy9ELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE9BQU8sUUFBUSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFO1lBQ2xELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUk7WUFDSixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLFdBQVc7YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLE9BQWdCO1FBRXZDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzlDO1FBRUQsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxPQUFPLElBQUksZUFBZTtTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBUyxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUNsRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJO1lBQ0osT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBbUIsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUNyRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLFVBQVU7Z0JBQzFCLHFCQUFxQixFQUFFLHVCQUF1QixXQUFXLEVBQUU7YUFDNUQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFnQjtRQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQTJCO1FBQzFELElBQUksT0FBTyxJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckI7UUFDRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFHTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBMkIsRUFBRSxRQUE4QjtRQUN6RixJQUFJLFlBQVksRUFBRTtZQUNoQixRQUFRLENBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7U0FDekM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBRUY7QUExRkQsNEJBMEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJR2F0ZXdheVByb3h5UmVzdWx0IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5cbi8qKlxuICogRXhwb3J0IHVuZGVyIGEgZGlmZmVyZW50IG5hbWUgZm9yIG5pY2UgY29kZSBjb21wbGV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpR2F0ZXdheVYxUmVzcG9uc2UgZXh0ZW5kcyBBUElHYXRld2F5UHJveHlSZXN1bHQge1xufVxuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIHNlbmRpbmcgQVBJIGdhdGV3YXkgdjIgcmVzcG9uc2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNwb25zZSB7XG5cbiAgc3RhdGljIHJlZGlyZWN0KGxvY2F0aW9uOiBzdHJpbmcsIGNvZGUgPSAzMDIsIGNvb2tpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyk6IEFwaUdhdGV3YXlWMVJlc3BvbnNlIHtcbiAgICBjb25zdCBjb29raWVIZWFkZXJWYWx1ZSA9IHRoaXMuY29va2llSGVhZGVyVmFsdWUoY29va2llcyk7XG4gICAgY29uc3QgcmVzcG9uc2U6IEFwaUdhdGV3YXlWMVJlc3BvbnNlID0ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHk6ICcnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBMb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIFJlc3BvbnNlLndpdGhDb29raWVIZWFkZXIoY29va2llSGVhZGVyVmFsdWUsIHJlc3BvbnNlKTtcbiAgfVxuXG4gIHN0YXRpYyBodG1sKGJvZHk6IHN0cmluZywgY29kZSA9IDIwMCwgY29va2llcz86IHN0cmluZ1tdIHwgc3RyaW5nKTogQXBpR2F0ZXdheVYxUmVzcG9uc2Uge1xuICAgIGNvbnN0IGNvb2tpZUhlYWRlclZhbHVlID0gdGhpcy5jb29raWVIZWFkZXJWYWx1ZShjb29raWVzKTtcbiAgICByZXR1cm4gUmVzcG9uc2Uud2l0aENvb2tpZUhlYWRlcihjb29raWVIZWFkZXJWYWx1ZSwge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LXR5cGUnOiAndGV4dC9odG1sJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZXJyb3IoY29kZSA9IDUwMCwgbWVzc2FnZT86IHN0cmluZyk6IEFwaUdhdGV3YXlWMVJlc3BvbnNlIHtcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5qc29uKHsgbWVzc2FnZTogbWVzc2FnZSB9LCBjb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHk6IG1lc3NhZ2UgPz8gJ3Vua25vd24gZXJyb3InLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMganNvbihqc29uOiBhbnksIGNvZGUgPSAyMDAsIGNvb2tpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyk6IEFwaUdhdGV3YXlWMVJlc3BvbnNlIHtcbiAgICBjb25zdCBjb29raWVIZWFkZXJWYWx1ZSA9IHRoaXMuY29va2llSGVhZGVyVmFsdWUoY29va2llcyk7XG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xuICAgIHJldHVybiBSZXNwb25zZS53aXRoQ29va2llSGVhZGVyKGNvb2tpZUhlYWRlclZhbHVlLCB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgY3N2KGNzdjogc3RyaW5nLCBjc3ZGaWxlTmFtZTogc3RyaW5nLCBjb2RlID0gMjAwKTogQXBpR2F0ZXdheVYxUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgICAgYm9keTogY3N2LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC10eXBlJzogJ3RleHQvY3N2JyxcbiAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgYXR0YWNobWVudDtmaWxlbmFtZT0ke2NzdkZpbGVOYW1lfWAsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgb2soY29kZSA9IDIwMCwgbWVzc2FnZT86IHN0cmluZyk6IEFwaUdhdGV3YXlWMVJlc3BvbnNlIHtcbiAgICBpZiAoY29kZSA8IDIwMCB8fCBjb2RlID49IDMwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IDJ4eCBzdGF0dXNjb2RlcyBhcmUgYWxsb3dlZCcpO1xuICAgIH1cblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5qc29uKHsgbWVzc2FnZTogbWVzc2FnZSB9LCBjb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHk6ICcnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb29raWVIZWFkZXJWYWx1ZShjb29raWVzPzogc3RyaW5nW10gfCBzdHJpbmcpIHtcbiAgICBpZiAoY29va2llcyAhPSB1bmRlZmluZWQgJiYgIUFycmF5LmlzQXJyYXkoY29va2llcykpIHtcbiAgICAgIGNvb2tpZXMgPSBbY29va2llc107XG4gICAgfVxuICAgIHJldHVybiBjb29raWVzID8gY29va2llcz8uam9pbignOyAnKSA6IG51bGw7XG4gIH1cblxuXG4gIHByaXZhdGUgc3RhdGljIHdpdGhDb29raWVIZWFkZXIoY29va2llaGVhZGVyOiBzdHJpbmcgfCBudWxsLCByZXNwb25zZTogQXBpR2F0ZXdheVYxUmVzcG9uc2UpIHtcbiAgICBpZiAoY29va2llaGVhZGVyKSB7XG4gICAgICByZXNwb25zZS5oZWFkZXJzIS5Db29raWUgPSBjb29raWVoZWFkZXI7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG59XG4iXX0=
@@ -14,4 +14,5 @@ export declare class Response {
14
14
  static json(json: any, code?: number, cookies?: string[] | string): ApiGatewayV2Response;
15
15
  static csv(csv: string, csvFileName: string, code?: number): ApiGatewayV2Response;
16
16
  static ok(code?: number, message?: string): ApiGatewayV2Response;
17
+ private static cookieArray;
17
18
  }
@@ -6,9 +6,7 @@ exports.Response = void 0;
6
6
  */
7
7
  class Response {
8
8
  static redirect(location, code = 302, cookies) {
9
- if (cookies != undefined && !Array.isArray(cookies)) {
10
- cookies = [cookies];
11
- }
9
+ cookies = Response.cookieArray(cookies);
12
10
  return {
13
11
  statusCode: code,
14
12
  body: '',
@@ -19,9 +17,7 @@ class Response {
19
17
  };
20
18
  }
21
19
  static html(body, code = 200, cookies) {
22
- if (cookies != undefined && !Array.isArray(cookies)) {
23
- cookies = [cookies];
24
- }
20
+ cookies = Response.cookieArray(cookies);
25
21
  return {
26
22
  statusCode: code,
27
23
  body,
@@ -40,9 +36,7 @@ class Response {
40
36
  };
41
37
  }
42
38
  static json(json, code = 200, cookies) {
43
- if (cookies != undefined && !Array.isArray(cookies)) {
44
- cookies = [cookies];
45
- }
39
+ cookies = Response.cookieArray(cookies);
46
40
  const body = JSON.stringify(json);
47
41
  return {
48
42
  statusCode: code,
@@ -72,6 +66,12 @@ class Response {
72
66
  }
73
67
  return { statusCode: code };
74
68
  }
69
+ static cookieArray(cookies) {
70
+ if (cookies != undefined && !Array.isArray(cookies)) {
71
+ cookies = [cookies];
72
+ }
73
+ return cookies;
74
+ }
75
75
  }
76
76
  exports.Response = Response;
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVjIvUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUE7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFFbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDdkUsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJLEVBQUUsRUFBRTtZQUNSLE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUTthQUNuQjtZQUNELE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDL0QsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSTtZQUNoQixJQUFJO1lBQ0osT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxXQUFXO2FBQzVCO1lBQ0QsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLE9BQWdCO1FBRXZDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzlDO1FBRUQsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFTLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUEyQjtRQUM1RCxJQUFJLE9BQU8sSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25ELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSTtZQUNKLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBbUIsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUNyRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLFVBQVU7Z0JBQzFCLHFCQUFxQixFQUFFLHVCQUF1QixXQUFXLEVBQUU7YUFDNUQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFnQjtRQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUVGO0FBL0VELDRCQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUdhdGV3YXlQcm94eVN0cnVjdHVyZWRSZXN1bHRWMiB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuXG4vKipcbiAqIEV4cG9ydCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIGZvciBuaWNlIGNvZGUgY29tcGxldGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUdhdGV3YXlWMlJlc3BvbnNlIGV4dGVuZHMgQVBJR2F0ZXdheVByb3h5U3RydWN0dXJlZFJlc3VsdFYyIHtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGNsYXNzIGZvciBzZW5kaW5nIEFQSSBnYXRld2F5IHYyIHJlc3BvbnNlc1xuICovXG5leHBvcnQgY2xhc3MgUmVzcG9uc2Uge1xuXG4gIHN0YXRpYyByZWRpcmVjdChsb2NhdGlvbjogc3RyaW5nLCBjb2RlID0gMzAyLCBjb29raWVzPzogc3RyaW5nW10gfCBzdHJpbmcpOiBBcGlHYXRld2F5VjJSZXNwb25zZSB7XG4gICAgaWYgKGNvb2tpZXMgIT0gdW5kZWZpbmVkICYmICFBcnJheS5pc0FycmF5KGNvb2tpZXMpKSB7XG4gICAgICBjb29raWVzID0gW2Nvb2tpZXNdO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHk6ICcnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBMb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICB9LFxuICAgICAgY29va2llcyxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGh0bWwoYm9keTogc3RyaW5nLCBjb2RlID0gMjAwLCBjb29raWVzPzogc3RyaW5nW10gfCBzdHJpbmcpOiBBcGlHYXRld2F5VjJSZXNwb25zZSB7XG4gICAgaWYgKGNvb2tpZXMgIT0gdW5kZWZpbmVkICYmICFBcnJheS5pc0FycmF5KGNvb2tpZXMpKSB7XG4gICAgICBjb29raWVzID0gW2Nvb2tpZXNdO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LXR5cGUnOiAndGV4dC9odG1sJyxcbiAgICAgIH0sXG4gICAgICBjb29raWVzLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZXJyb3IoY29kZSA9IDUwMCwgbWVzc2FnZT86IHN0cmluZyk6IEFwaUdhdGV3YXlWMlJlc3BvbnNlIHtcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5qc29uKHsgbWVzc2FnZTogbWVzc2FnZSB9LCBjb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGpzb24oanNvbjogYW55LCBjb2RlID0gMjAwLCBjb29raWVzPzogc3RyaW5nW10gfCBzdHJpbmcpOiBBcGlHYXRld2F5VjJSZXNwb25zZSB7XG4gICAgaWYgKGNvb2tpZXMgIT0gdW5kZWZpbmVkICYmICFBcnJheS5pc0FycmF5KGNvb2tpZXMpKSB7XG4gICAgICBjb29raWVzID0gW2Nvb2tpZXNdO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IGNvZGUsXG4gICAgICBib2R5LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGNvb2tpZXMsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBjc3YoY3N2OiBzdHJpbmcsIGNzdkZpbGVOYW1lOiBzdHJpbmcsIGNvZGUgPSAyMDApOiBBcGlHYXRld2F5VjJSZXNwb25zZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IGNvZGUsXG4gICAgICBib2R5OiBjc3YsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LXR5cGUnOiAndGV4dC9jc3YnLFxuICAgICAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGBhdHRhY2htZW50O2ZpbGVuYW1lPSR7Y3N2RmlsZU5hbWV9YCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBvayhjb2RlID0gMjAwLCBtZXNzYWdlPzogc3RyaW5nKTogQXBpR2F0ZXdheVYyUmVzcG9uc2Uge1xuICAgIGlmIChjb2RlIDwgMjAwIHx8IGNvZGUgPj0gMzAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgMnh4IHN0YXR1c2NvZGVzIGFyZSBhbGxvd2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmpzb24oeyBtZXNzYWdlOiBtZXNzYWdlIH0sIGNvZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXR1c0NvZGU6IGNvZGUgfTtcbiAgfVxuXG59Il19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVjIvUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUE7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFFbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDdkUsT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1lBQ0QsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUEyQjtRQUMvRCxPQUFPLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSTtZQUNKLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsV0FBVzthQUM1QjtZQUNELE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFnQjtRQUV2QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBUyxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsT0FBMkI7UUFDNUQsT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSTtZQUNKLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBbUIsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUNyRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLFVBQVU7Z0JBQzFCLHFCQUFxQixFQUFFLHVCQUF1QixXQUFXLEVBQUU7YUFDNUQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFnQjtRQUNwQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBc0M7UUFDL0QsSUFBSSxPQUFPLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQS9FRCw0QkErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElHYXRld2F5UHJveHlTdHJ1Y3R1cmVkUmVzdWx0VjIgfSBmcm9tICdhd3MtbGFtYmRhJztcblxuLyoqXG4gKiBFeHBvcnQgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSBmb3IgbmljZSBjb2RlIGNvbXBsZXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5VjJSZXNwb25zZSBleHRlbmRzIEFQSUdhdGV3YXlQcm94eVN0cnVjdHVyZWRSZXN1bHRWMiB7XG59XG5cbi8qKlxuICogVXRpbGl0eSBjbGFzcyBmb3Igc2VuZGluZyBBUEkgZ2F0ZXdheSB2MiByZXNwb25zZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3BvbnNlIHtcblxuICBzdGF0aWMgcmVkaXJlY3QobG9jYXRpb246IHN0cmluZywgY29kZSA9IDMwMiwgY29va2llcz86IHN0cmluZ1tdIHwgc3RyaW5nKTogQXBpR2F0ZXdheVYyUmVzcG9uc2Uge1xuICAgIGNvb2tpZXMgPSBSZXNwb25zZS5jb29raWVBcnJheShjb29raWVzKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzQ29kZTogY29kZSxcbiAgICAgIGJvZHk6ICcnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBMb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICB9LFxuICAgICAgY29va2llcyxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGh0bWwoYm9keTogc3RyaW5nLCBjb2RlID0gMjAwLCBjb29raWVzPzogc3RyaW5nW10gfCBzdHJpbmcpOiBBcGlHYXRld2F5VjJSZXNwb25zZSB7XG4gICAgY29va2llcyA9IFJlc3BvbnNlLmNvb2tpZUFycmF5KGNvb2tpZXMpO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICd0ZXh0L2h0bWwnLFxuICAgICAgfSxcbiAgICAgIGNvb2tpZXMsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBlcnJvcihjb2RlID0gNTAwLCBtZXNzYWdlPzogc3RyaW5nKTogQXBpR2F0ZXdheVYyUmVzcG9uc2Uge1xuXG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmpzb24oeyBtZXNzYWdlOiBtZXNzYWdlIH0sIGNvZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMganNvbihqc29uOiBhbnksIGNvZGUgPSAyMDAsIGNvb2tpZXM/OiBzdHJpbmdbXSB8IHN0cmluZyk6IEFwaUdhdGV3YXlWMlJlc3BvbnNlIHtcbiAgICBjb29raWVzID0gUmVzcG9uc2UuY29va2llQXJyYXkoY29va2llcyk7XG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBjb29raWVzLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgY3N2KGNzdjogc3RyaW5nLCBjc3ZGaWxlTmFtZTogc3RyaW5nLCBjb2RlID0gMjAwKTogQXBpR2F0ZXdheVYyUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXNDb2RlOiBjb2RlLFxuICAgICAgYm9keTogY3N2LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC10eXBlJzogJ3RleHQvY3N2JyxcbiAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBgYXR0YWNobWVudDtmaWxlbmFtZT0ke2NzdkZpbGVOYW1lfWAsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgb2soY29kZSA9IDIwMCwgbWVzc2FnZT86IHN0cmluZyk6IEFwaUdhdGV3YXlWMlJlc3BvbnNlIHtcbiAgICBpZiAoY29kZSA8IDIwMCB8fCBjb2RlID49IDMwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IDJ4eCBzdGF0dXNjb2RlcyBhcmUgYWxsb3dlZCcpO1xuICAgIH1cblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5qc29uKHsgbWVzc2FnZTogbWVzc2FnZSB9LCBjb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXNDb2RlOiBjb2RlIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb29raWVBcnJheShjb29raWVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChjb29raWVzICE9IHVuZGVmaW5lZCAmJiAhQXJyYXkuaXNBcnJheShjb29raWVzKSkge1xuICAgICAgY29va2llcyA9IFtjb29raWVzXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb2tpZXM7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "projen": "npx projen"
26
26
  },
27
27
  "devDependencies": {
28
- "@gemeentenijmegen/projen-project-type": "^1.8.7",
28
+ "@gemeentenijmegen/projen-project-type": "^1.10.3",
29
29
  "@stylistic/eslint-plugin": "^2",
30
30
  "@types/jest": "^29.5.14",
31
31
  "@types/node": "^18",
@@ -34,23 +34,23 @@
34
34
  "commit-and-tag-version": "^12",
35
35
  "constructs": "^10.0.0",
36
36
  "eslint": "^9",
37
- "eslint-import-resolver-typescript": "^3.8.3",
37
+ "eslint-import-resolver-typescript": "^3.10.1",
38
38
  "eslint-plugin-import": "^2.31.0",
39
39
  "jest": "^29.7.0",
40
40
  "jest-junit": "^16",
41
- "projen": "^0.91.13",
42
- "ts-jest": "^29.2.6",
41
+ "projen": "^0.91.27",
42
+ "ts-jest": "^29.3.2",
43
43
  "typescript": "^4.9.5"
44
44
  },
45
45
  "dependencies": {
46
- "@types/aws-lambda": "^8.10.147"
46
+ "@types/aws-lambda": "^8.10.149"
47
47
  },
48
48
  "main": "lib/index.js",
49
49
  "license": "EUPL-1.2",
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "version": "0.0.23",
53
+ "version": "0.0.25",
54
54
  "jest": {
55
55
  "coverageProvider": "v8",
56
56
  "testMatch": [