@stamhoofd/backend-middleware 2.74.0 → 2.75.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.
@@ -1,3 +1,3 @@
1
- import { ResponseMiddleware } from "@simonbackx/simple-endpoints";
1
+ import { ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
2
  export declare const CORSMiddleware: ResponseMiddleware;
3
3
  //# sourceMappingURL=CORSMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CORSMiddleware.d.ts","sourceRoot":"","sources":["../../src/CORSMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAE5F,eAAO,MAAM,cAAc,EAAE,kBAyB5B,CAAA"}
1
+ {"version":3,"file":"CORSMiddleware.d.ts","sourceRoot":"","sources":["../../src/CORSMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAErF,eAAO,MAAM,cAAc,EAAE,kBAyB5B,CAAC"}
@@ -3,24 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CORSMiddleware = void 0;
4
4
  exports.CORSMiddleware = {
5
5
  handleResponse(request, response) {
6
- response.headers["Access-Control-Allow-Origin"] = request.headers.origin ?? "*";
7
- response.headers["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS, PATCH, PUT, DELETE";
8
- response.headers["Access-Control-Allow-Headers"] = request.headers["access-control-request-headers"] ?? "*";
9
- response.headers["Access-Control-Max-Age"] = "86400"; // Cache 24h
10
- if (request.method !== "OPTIONS") {
6
+ response.headers['Access-Control-Allow-Origin'] = request.headers.origin ?? '*';
7
+ response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PATCH, PUT, DELETE';
8
+ response.headers['Access-Control-Allow-Headers'] = request.headers['access-control-request-headers'] ?? '*';
9
+ response.headers['Access-Control-Max-Age'] = '86400'; // Cache 24h
10
+ if (request.method !== 'OPTIONS') {
11
11
  // Expose all headers
12
- const exposeHeaders = Object.keys(response.headers).map(h => h.toLowerCase()).filter(h => !['content-length', 'cache-control', 'content-language', 'content-type', 'expires', 'last-modified', 'pragma'].includes(h)).join(", ");
12
+ const exposeHeaders = Object.keys(response.headers).map(h => h.toLowerCase()).filter(h => !['content-length', 'cache-control', 'content-language', 'content-type', 'expires', 'last-modified', 'pragma'].includes(h)).join(', ');
13
13
  if (exposeHeaders) {
14
- response.headers["Access-Control-Expose-Headers"] = exposeHeaders;
14
+ response.headers['Access-Control-Expose-Headers'] = exposeHeaders;
15
15
  }
16
16
  }
17
17
  // Not needed
18
18
  // response.headers["Access-Control-Allow-Credentials"] = "true";
19
19
  // API is public
20
- response.headers["Cross-Origin-Resource-Policy"] = "cross-origin";
21
- if (request.headers.origin && !response.headers["Vary"]) {
22
- response.headers["Vary"] = "Origin";
20
+ response.headers['Cross-Origin-Resource-Policy'] = 'cross-origin';
21
+ if (request.headers.origin && !response.headers['Vary']) {
22
+ response.headers['Vary'] = 'Origin';
23
23
  }
24
- }
24
+ },
25
25
  };
26
26
  //# sourceMappingURL=CORSMiddleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CORSMiddleware.js","sourceRoot":"","sources":["../../src/CORSMiddleware.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAuB;IAC9C,cAAc,CAAC,OAAgB,EAAE,QAAyB;QACtD,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAA;QAC/E,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,wCAAwC,CAAA;QAC3F,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,GAAG,CAAC;QAC5G,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,CAAC,YAAY;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,qBAAqB;YACrB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjO,IAAI,aAAa,EAAE,CAAC;gBAChB,QAAQ,CAAC,OAAO,CAAC,+BAA+B,CAAC,GAAG,aAAa,CAAA;YACrE,CAAC;QACL,CAAC;QAED,aAAa;QACb,iEAAiE;QAEjE,gBAAgB;QAChB,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,cAAc,CAAA;QAEjE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAA;QACvC,CAAC;IACL,CAAC;CACJ,CAAA"}
1
+ {"version":3,"file":"CORSMiddleware.js","sourceRoot":"","sources":["../../src/CORSMiddleware.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAuB;IAC9C,cAAc,CAAC,OAAgB,EAAE,QAAkB;QAC/C,QAAQ,CAAC,OAAO,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QAChF,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,wCAAwC,CAAC;QAC5F,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,GAAG,CAAC;QAC5G,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,CAAC,YAAY;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,qBAAqB;YACrB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjO,IAAI,aAAa,EAAE,CAAC;gBAChB,QAAQ,CAAC,OAAO,CAAC,+BAA+B,CAAC,GAAG,aAAa,CAAC;YACtE,CAAC;QACL,CAAC;QAED,aAAa;QACb,iEAAiE;QAEjE,gBAAgB;QAChB,QAAQ,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,cAAc,CAAC;QAElE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QACxC,CAAC;IACL,CAAC;CACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import { RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints";
1
+ import { RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
2
  export declare const LogMiddleware: ResponseMiddleware & RequestMiddleware;
3
3
  //# sourceMappingURL=LogMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogMiddleware.d.ts","sourceRoot":"","sources":["../../src/LogMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAC,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAgE9G,eAAO,MAAM,aAAa,EAAE,kBAAkB,GAAG,iBA8DhD,CAAA"}
1
+ {"version":3,"file":"LogMiddleware.d.ts","sourceRoot":"","sources":["../../src/LogMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAoExG,eAAO,MAAM,aAAa,EAAE,kBAAkB,GAAG,iBA+DhD,CAAC"}
@@ -10,7 +10,7 @@ function logRequestDetails(request) {
10
10
  if (json && json.password) {
11
11
  json.password = '*******';
12
12
  }
13
- simple_logging_1.logger.error(...requestPrefix(request, 'query'), "Request query was ", json);
13
+ simple_logging_1.logger.error(...requestPrefix(request, 'query'), 'Request query was ', json);
14
14
  }
15
15
  request.body.then((body) => {
16
16
  if (!body) {
@@ -22,11 +22,11 @@ function logRequestDetails(request) {
22
22
  if (json && json.password) {
23
23
  json.password = '*******';
24
24
  }
25
- simple_logging_1.logger.error(...requestPrefix(request, 'body'), "Request body was ", json);
25
+ simple_logging_1.logger.error(...requestPrefix(request, 'body'), 'Request body was ', json);
26
26
  }
27
27
  }
28
28
  catch (e) {
29
- simple_logging_1.logger.error(...requestPrefix(request, 'body'), "Request body was ", body);
29
+ simple_logging_1.logger.error(...requestPrefix(request, 'body'), 'Request body was ', body);
30
30
  }
31
31
  }).catch(console.error);
32
32
  }
@@ -39,20 +39,23 @@ function requestOneLiner(request) {
39
39
  new simple_logging_1.StyledText(request.getIP()).addClass('request', 'ip'),
40
40
  '@',
41
41
  new simple_logging_1.StyledText(request.host).addClass('request', 'host'),
42
- ')'
42
+ ')',
43
43
  ];
44
44
  }
45
45
  function requestPrefix(request, ...classes) {
46
+ if (!request._uniqueIndex) {
47
+ return [];
48
+ }
46
49
  return [
47
- new simple_logging_1.StyledText(`[R${request._uniqueIndex.toString().padStart(4, "0")}] `).addClass('request', 'tag', ...classes),
50
+ new simple_logging_1.StyledText(`[R${request._uniqueIndex.toString().padStart(4, '0')}] `).addClass('request', 'tag', ...classes),
48
51
  ];
49
52
  }
50
53
  exports.LogMiddleware = {
51
54
  handleRequest(request) {
52
55
  request._uniqueIndex = requestCounter++;
53
56
  request._startTime = process.hrtime();
54
- if (request.method == "OPTIONS") {
55
- if (STAMHOOFD.environment === "development") {
57
+ if (request.method == 'OPTIONS') {
58
+ if (STAMHOOFD.environment === 'development') {
56
59
  simple_logging_1.logger.log(...requestPrefix(request), ...requestOneLiner(request));
57
60
  }
58
61
  return;
@@ -62,28 +65,28 @@ exports.LogMiddleware = {
62
65
  wrapRun(run, request) {
63
66
  return simple_logging_1.logger.setContext({
64
67
  prefixes: requestPrefix(request, 'output'),
65
- tags: ['request', 'request-output']
68
+ tags: ['request', 'request-output'],
66
69
  }, run);
67
70
  },
68
71
  handleResponse(request, response, error) {
69
72
  const endTime = process.hrtime();
70
73
  const startTime = request._startTime ?? endTime;
71
74
  const timeInMs = Math.round((endTime[0] - startTime[0]) * 1000 + (endTime[1] - startTime[1]) / 1000000);
72
- if (request.method !== "OPTIONS") {
73
- simple_logging_1.logger.log(...requestPrefix(request, 'time'), response.status + " - Finished in " + timeInMs + "ms");
75
+ if (request.method !== 'OPTIONS') {
76
+ simple_logging_1.logger.log(...requestPrefix(request, 'time'), response.status + ' - Finished in ' + timeInMs + 'ms');
74
77
  }
75
78
  if (error) {
76
79
  if ((0, simple_errors_1.isSimpleError)(error) || (0, simple_errors_1.isSimpleErrors)(error)) {
77
- if (!error.hasCode("expired_access_token") && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) {
78
- simple_logging_1.logger.error(...requestPrefix(request, 'error'), "Request with error in response ", new simple_logging_1.StyledText(error).addClass('request', 'error'));
80
+ if (!error.hasCode('expired_access_token') && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) {
81
+ simple_logging_1.logger.error(...requestPrefix(request, 'error'), 'Request with error in response ', new simple_logging_1.StyledText(error).addClass('request', 'error'));
79
82
  logRequestDetails(request);
80
83
  }
81
84
  }
82
85
  else {
83
- simple_logging_1.logger.error(...requestPrefix(request, 'error'), "Request with internal error ", new simple_logging_1.StyledText(error).addClass('request', 'error'));
86
+ simple_logging_1.logger.error(...requestPrefix(request, 'error'), 'Request with internal error ', new simple_logging_1.StyledText(error).addClass('request', 'error'));
84
87
  logRequestDetails(request);
85
88
  }
86
89
  }
87
- }
90
+ },
88
91
  };
89
92
  //# sourceMappingURL=LogMiddleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogMiddleware.js","sourceRoot":"","sources":["../../src/LogMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LogMiddleware.js","sourceRoot":"","sources":["../../src/LogMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EncodedResponse, Request, RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints";
1
+ import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
2
  export declare class VersionMiddleware implements RequestMiddleware, ResponseMiddleware {
3
3
  minimumVersion: number | undefined;
4
4
  latestVersions: {
@@ -15,6 +15,6 @@ export declare class VersionMiddleware implements RequestMiddleware, ResponseMid
15
15
  minimumVersion?: number;
16
16
  });
17
17
  handleRequest(request: Request): void;
18
- handleResponse(request: Request, response: EncodedResponse): void;
18
+ handleResponse(request: Request, response: Response): void;
19
19
  }
20
20
  //# sourceMappingURL=VersionMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionMiddleware.d.ts","sourceRoot":"","sources":["../../src/VersionMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAI/G,qBAAa,iBAAkB,YAAW,iBAAiB,EAAE,kBAAkB;IAC3E,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,cAAc,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAA;gBAE/C,OAAO,EAAE;QAAC,cAAc,EAAE;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAC,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAC;IAK3G,aAAa,CAAC,OAAO,EAAE,OAAO;IAmD9B,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe;CAmB7D"}
1
+ {"version":3,"file":"VersionMiddleware.d.ts","sourceRoot":"","sources":["../../src/VersionMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIxG,qBAAa,iBAAkB,YAAW,iBAAiB,EAAE,kBAAkB;IAC3E,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;gBAElD,OAAO,EAAE;QAAE,cAAc,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAK/G,aAAa,CAAC,OAAO,EAAE,OAAO;IAqD9B,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;CAoBtD"}
@@ -14,7 +14,7 @@ class VersionMiddleware {
14
14
  if (!this.minimumVersion) {
15
15
  return;
16
16
  }
17
- const platform = request.headers["x-platform"];
17
+ const platform = request.headers['x-platform'];
18
18
  let version;
19
19
  try {
20
20
  version = request.getVersion();
@@ -22,54 +22,54 @@ class VersionMiddleware {
22
22
  catch (e) {
23
23
  if (((0, simple_errors_1.isSimpleError)(e) || (0, simple_errors_1.isSimpleErrors)(e)) && e.hasCode('missing_version')) {
24
24
  // Allow missing version on /openid/ path
25
- if (STAMHOOFD.environment === 'development' || request.url.startsWith("/openid/")) {
25
+ if (STAMHOOFD.environment === 'development' || request.url.startsWith('/openid/')) {
26
26
  request.version = this.latestVersions.web;
27
27
  return;
28
28
  }
29
29
  }
30
30
  throw e;
31
31
  }
32
- /*if (request.getIP() === '') {
32
+ /* if (request.getIP() === '') {
33
33
  throw new SimpleError({
34
34
  code: "blocked",
35
35
  statusCode: 400,
36
36
  message: "Temporary blocked",
37
37
  human: "Jouw verbinding is tijdelijk geblokkeerd. Gelieve contact op te nemen met hallo@stamhoofd.be"
38
38
  })
39
- }*/
39
+ } */
40
40
  if (version < this.minimumVersion) {
41
41
  // WARNING: update caddy config for on demand certificates, because we don't want to throw errors over there!
42
- if (platform === "web" || platform === undefined) {
42
+ if (platform === 'web' || platform === undefined) {
43
43
  throw new simple_errors_1.SimpleError({
44
- code: "client_update_required",
44
+ code: 'client_update_required',
45
45
  statusCode: 400,
46
- message: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.",
47
- human: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser."
46
+ message: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.',
47
+ human: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.',
48
48
  });
49
49
  }
50
50
  else {
51
51
  throw new simple_errors_1.SimpleError({
52
- code: "client_update_required",
52
+ code: 'client_update_required',
53
53
  statusCode: 400,
54
- message: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!",
55
- human: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!"
54
+ message: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!',
55
+ human: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!',
56
56
  });
57
57
  }
58
58
  }
59
59
  }
60
60
  handleResponse(request, response) {
61
- const platform = request.headers["x-platform"];
62
- if (platform === "android") {
63
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.android;
61
+ const platform = request.headers['x-platform'];
62
+ if (platform === 'android') {
63
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.android;
64
64
  }
65
- if (platform === "ios") {
66
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.ios;
65
+ if (platform === 'ios') {
66
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.ios;
67
67
  }
68
- if (platform === "web") {
69
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.web;
68
+ if (platform === 'web') {
69
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.web;
70
70
  }
71
71
  try {
72
- response.headers["X-Version"] = Math.min(structures_1.Version, request.getVersion());
72
+ response.headers['X-Version'] = Math.min(structures_1.Version, request.getVersion());
73
73
  }
74
74
  catch (e) {
75
75
  // No version provided or invalid version
@@ -1 +1 @@
1
- {"version":3,"file":"VersionMiddleware.js","sourceRoot":"","sources":["../../src/VersionMiddleware.ts"],"names":[],"mappings":";;;AACA,6DAAuF;AACvF,sDAAgD;AAEhD,MAAa,iBAAiB;IAC1B,cAAc,CAAoB;IAClC,cAAc,CAA6C;IAE3D,YAAY,OAA+F;QACvG,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;IAChD,CAAC;IAED,aAAa,CAAC,OAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,OAAM;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,OAAgB,CAAC;QAErB,IAAI,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,IAAA,6BAAa,EAAC,CAAC,CAAC,IAAI,IAAA,8BAAc,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1E,yCAAyC;gBACzC,IAAI,SAAS,CAAC,WAAW,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChF,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;oBACzC,OAAM;gBACV,CAAC;YACL,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;QAED;;;;;;;WAOG;QAEH,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,6GAA6G;YAC7G,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,IAAI,2BAAW,CAAC;oBAClB,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,8GAA8G;oBACvH,KAAK,EAAE,8GAA8G;iBACxH,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,2BAAW,CAAC;oBAClB,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,+EAA+E;oBACxF,KAAK,EAAE,+EAA+E;iBACzF,CAAC,CAAA;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAED,cAAc,CAAC,OAAgB,EAAE,QAAyB;QACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAA;QAC/E,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;QAC3E,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;QAC3E,CAAC;QAED,IAAI,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,yCAAyC;QAC7C,CAAC;IACL,CAAC;CACJ;AA/ED,8CA+EC"}
1
+ {"version":3,"file":"VersionMiddleware.js","sourceRoot":"","sources":["../../src/VersionMiddleware.ts"],"names":[],"mappings":";;;AACA,6DAAuF;AACvF,sDAAgD;AAEhD,MAAa,iBAAiB;IAC1B,cAAc,CAAqB;IACnC,cAAc,CAAgD;IAE9D,YAAY,OAAmG;QAC3G,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,OAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,OAAgB,CAAC;QAErB,IAAI,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,IAAA,6BAAa,EAAC,CAAC,CAAC,IAAI,IAAA,8BAAc,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1E,yCAAyC;gBACzC,IAAI,SAAS,CAAC,WAAW,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAChF,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBAC1C,OAAO;gBACX,CAAC;YACL,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;QAED;;;;;;;YAOI;QAEJ,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,6GAA6G;YAC7G,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,IAAI,2BAAW,CAAC;oBAClB,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,8GAA8G;oBACvH,KAAK,EAAE,8GAA8G;iBACxH,CAAC,CAAC;YACP,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,2BAAW,CAAC;oBAClB,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,+EAA+E;oBACxF,KAAK,EAAE,+EAA+E;iBACzF,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,cAAc,CAAC,OAAgB,EAAE,QAAkB;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAChF,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAC5E,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,yCAAyC;QAC7C,CAAC;IACL,CAAC;CACJ;AAlFD,8CAkFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/backend-middleware",
3
- "version": "2.74.0",
3
+ "version": "2.75.1",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "license": "UNLICENCED",
@@ -13,12 +13,12 @@
13
13
  "build": "tsc -b"
14
14
  },
15
15
  "dependencies": {
16
- "@simonbackx/simple-endpoints": "1.15.0",
16
+ "@simonbackx/simple-endpoints": "1.19.0",
17
17
  "@simonbackx/simple-errors": "^1.4",
18
18
  "@simonbackx/simple-logging": "^1.0.1"
19
19
  },
20
20
  "publishConfig": {
21
21
  "access": "public"
22
22
  },
23
- "gitHead": "3a77692b8163f10c231785de2f720c423a909762"
23
+ "gitHead": "4c6a7f14c62e4832885325d02c5aaeeccf27568b"
24
24
  }
@@ -1,28 +1,28 @@
1
- import { EncodedResponse, Request, ResponseMiddleware } from "@simonbackx/simple-endpoints";
1
+ import { Request, Response, ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
2
 
3
3
  export const CORSMiddleware: ResponseMiddleware = {
4
- handleResponse(request: Request, response: EncodedResponse) {
5
- response.headers["Access-Control-Allow-Origin"] = request.headers.origin ?? "*"
6
- response.headers["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS, PATCH, PUT, DELETE"
7
- response.headers["Access-Control-Allow-Headers"] = request.headers["access-control-request-headers"] ?? "*";
8
- response.headers["Access-Control-Max-Age"] = "86400"; // Cache 24h
9
-
10
- if (request.method !== "OPTIONS") {
4
+ handleResponse(request: Request, response: Response) {
5
+ response.headers['Access-Control-Allow-Origin'] = request.headers.origin ?? '*';
6
+ response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PATCH, PUT, DELETE';
7
+ response.headers['Access-Control-Allow-Headers'] = request.headers['access-control-request-headers'] ?? '*';
8
+ response.headers['Access-Control-Max-Age'] = '86400'; // Cache 24h
9
+
10
+ if (request.method !== 'OPTIONS') {
11
11
  // Expose all headers
12
- const exposeHeaders = Object.keys(response.headers).map(h => h.toLowerCase()).filter(h => !['content-length', 'cache-control', 'content-language', 'content-type', 'expires', 'last-modified', 'pragma'].includes(h)).join(", ");
12
+ const exposeHeaders = Object.keys(response.headers).map(h => h.toLowerCase()).filter(h => !['content-length', 'cache-control', 'content-language', 'content-type', 'expires', 'last-modified', 'pragma'].includes(h)).join(', ');
13
13
  if (exposeHeaders) {
14
- response.headers["Access-Control-Expose-Headers"] = exposeHeaders
14
+ response.headers['Access-Control-Expose-Headers'] = exposeHeaders;
15
15
  }
16
16
  }
17
-
17
+
18
18
  // Not needed
19
19
  // response.headers["Access-Control-Allow-Credentials"] = "true";
20
20
 
21
21
  // API is public
22
- response.headers["Cross-Origin-Resource-Policy"] = "cross-origin"
22
+ response.headers['Cross-Origin-Resource-Policy'] = 'cross-origin';
23
23
 
24
- if (request.headers.origin && !response.headers["Vary"]) {
25
- response.headers["Vary"] = "Origin"
24
+ if (request.headers.origin && !response.headers['Vary']) {
25
+ response.headers['Vary'] = 'Origin';
26
26
  }
27
- }
28
- }
27
+ },
28
+ };
@@ -1,127 +1,132 @@
1
- import { EncodedResponse, Request, RequestMiddleware,ResponseMiddleware } from "@simonbackx/simple-endpoints";
2
- import { isSimpleError, isSimpleErrors } from "@simonbackx/simple-errors";
3
- import { logger, StyledText } from "@simonbackx/simple-logging";
1
+ import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
+ import { isSimpleError, isSimpleErrors } from '@simonbackx/simple-errors';
3
+ import { logger, StyledText } from '@simonbackx/simple-logging';
4
4
  let requestCounter = 0;
5
5
 
6
6
  function logRequestDetails(request: Request) {
7
7
  if (Object.keys(request.query).length) {
8
- const json: any = {...request.query}
8
+ const json: any = { ...request.query };
9
9
  if (json && json.password) {
10
- json.password = '*******'
10
+ json.password = '*******';
11
11
  }
12
12
  logger.error(
13
13
  ...requestPrefix(request, 'query'),
14
- "Request query was ",
15
- json
16
- )
14
+ 'Request query was ',
15
+ json,
16
+ );
17
17
  }
18
18
 
19
19
  request.body.then((body) => {
20
20
  if (!body) {
21
- return
21
+ return;
22
22
  }
23
23
  try {
24
- const json = JSON.parse(body)
24
+ const json = JSON.parse(body);
25
25
  if (Array.isArray(json) || Object.keys(json).length) {
26
26
  if (json && json.password) {
27
- json.password = '*******'
27
+ json.password = '*******';
28
28
  }
29
29
 
30
30
  logger.error(
31
31
  ...requestPrefix(request, 'body'),
32
- "Request body was ",
33
- json
34
- )
32
+ 'Request body was ',
33
+ json,
34
+ );
35
35
  }
36
- } catch (e) {
36
+ }
37
+ catch (e) {
37
38
  logger.error(
38
39
  ...requestPrefix(request, 'body'),
39
- "Request body was ",
40
- body
41
- )
40
+ 'Request body was ',
41
+ body,
42
+ );
42
43
  }
43
- }).catch(console.error)
44
+ }).catch(console.error);
44
45
  }
45
46
 
46
- function requestOneLiner(request: Request): (StyledText | string)[] {
47
+ function requestOneLiner(request: Request): (StyledText | string)[] {
47
48
  return [
48
49
  new StyledText(request.method).addClass('request', 'method', request.method.toLowerCase()),
49
50
  ' ',
50
51
  new StyledText(request.url).addClass('request', 'url'),
51
52
  ' (',
52
- new StyledText(request.getIP()).addClass('request', 'ip'),
53
- '@',
54
- new StyledText(request.host).addClass('request', 'host'),
55
- ')'
56
- ]
53
+ new StyledText(request.getIP()).addClass('request', 'ip'),
54
+ '@',
55
+ new StyledText(request.host).addClass('request', 'host'),
56
+ ')',
57
+ ];
57
58
  }
58
59
 
59
60
  function requestPrefix(request: Request, ...classes: string[]): (StyledText | string)[] {
61
+ if (!(request as any)._uniqueIndex) {
62
+ return [];
63
+ }
60
64
  return [
61
- new StyledText(`[R${((request as any)._uniqueIndex as number).toString().padStart(4, "0")}] `).addClass('request', 'tag', ...classes),
62
- ]
65
+ new StyledText(`[R${((request as any)._uniqueIndex as number).toString().padStart(4, '0')}] `).addClass('request', 'tag', ...classes),
66
+ ];
63
67
  }
64
68
 
65
69
  export const LogMiddleware: ResponseMiddleware & RequestMiddleware = {
66
70
  handleRequest(request: Request) {
67
- (request as any)._uniqueIndex = requestCounter++
71
+ (request as any)._uniqueIndex = requestCounter++;
68
72
  (request as any)._startTime = process.hrtime();
69
73
 
70
- if (request.method == "OPTIONS") {
71
- if (STAMHOOFD.environment === "development") {
74
+ if (request.method == 'OPTIONS') {
75
+ if (STAMHOOFD.environment === 'development') {
72
76
  logger.log(
73
77
  ...requestPrefix(request),
74
- ...requestOneLiner(request)
75
- )
78
+ ...requestOneLiner(request),
79
+ );
76
80
  }
77
- return
81
+ return;
78
82
  }
79
83
 
80
84
  logger.log(
81
85
  ...requestPrefix(request),
82
- ...requestOneLiner(request)
83
- )
86
+ ...requestOneLiner(request),
87
+ );
84
88
  },
85
89
 
86
90
  wrapRun<T>(run: () => Promise<T>, request: Request) {
87
91
  return logger.setContext({
88
92
  prefixes: requestPrefix(request, 'output'),
89
- tags: ['request', 'request-output']
90
- }, run)
93
+ tags: ['request', 'request-output'],
94
+ }, run);
91
95
  },
92
96
 
93
- handleResponse(request: Request, response: EncodedResponse, error?: Error) {
97
+ handleResponse(request: Request, response: Response, error?: Error) {
94
98
  const endTime = process.hrtime();
95
99
  const startTime = (request as any)._startTime ?? endTime;
96
100
  const timeInMs = Math.round((endTime[0] - startTime[0]) * 1000 + (endTime[1] - startTime[1]) / 1000000);
97
101
 
98
- if (request.method !== "OPTIONS") {
102
+ if (request.method !== 'OPTIONS') {
99
103
  logger.log(
100
104
  ...requestPrefix(request, 'time'),
101
- response.status + " - Finished in "+timeInMs+"ms"
102
- )
105
+ response.status + ' - Finished in ' + timeInMs + 'ms',
106
+ );
103
107
  }
104
108
 
105
109
  if (error) {
106
110
  if (isSimpleError(error) || isSimpleErrors(error)) {
107
- if (!error.hasCode("expired_access_token") && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) {
111
+ if (!error.hasCode('expired_access_token') && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) {
108
112
  logger.error(
109
113
  ...requestPrefix(request, 'error'),
110
- "Request with error in response ",
111
- new StyledText(error).addClass('request', 'error')
112
- )
114
+ 'Request with error in response ',
115
+ new StyledText(error).addClass('request', 'error'),
116
+ );
113
117
 
114
- logRequestDetails(request)
118
+ logRequestDetails(request);
115
119
  }
116
- } else {
120
+ }
121
+ else {
117
122
  logger.error(
118
123
  ...requestPrefix(request, 'error'),
119
- "Request with internal error ",
120
- new StyledText(error).addClass('request', 'error')
121
- )
124
+ 'Request with internal error ',
125
+ new StyledText(error).addClass('request', 'error'),
126
+ );
122
127
 
123
- logRequestDetails(request)
128
+ logRequestDetails(request);
124
129
  }
125
130
  }
126
- }
127
- }
131
+ },
132
+ };
@@ -1,83 +1,86 @@
1
- import { EncodedResponse, Request, RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints";
2
- import { isSimpleError, isSimpleErrors, SimpleError } from "@simonbackx/simple-errors";
3
- import { Version } from "@stamhoofd/structures";
1
+ import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints';
2
+ import { isSimpleError, isSimpleErrors, SimpleError } from '@simonbackx/simple-errors';
3
+ import { Version } from '@stamhoofd/structures';
4
4
 
5
5
  export class VersionMiddleware implements RequestMiddleware, ResponseMiddleware {
6
- minimumVersion: number | undefined
7
- latestVersions: {android: number, ios: number, web: number}
6
+ minimumVersion: number | undefined;
7
+ latestVersions: { android: number; ios: number; web: number };
8
8
 
9
- constructor(options: {latestVersions: {android: number, ios: number, web: number}, minimumVersion?: number}) {
10
- this.minimumVersion = options.minimumVersion
11
- this.latestVersions = options.latestVersions
9
+ constructor(options: { latestVersions: { android: number; ios: number; web: number }; minimumVersion?: number }) {
10
+ this.minimumVersion = options.minimumVersion;
11
+ this.latestVersions = options.latestVersions;
12
12
  }
13
13
 
14
14
  handleRequest(request: Request) {
15
15
  if (!this.minimumVersion) {
16
- return
16
+ return;
17
17
  }
18
18
 
19
- const platform = request.headers["x-platform"];
19
+ const platform = request.headers['x-platform'];
20
20
 
21
21
  let version!: number;
22
22
 
23
23
  try {
24
- version = request.getVersion()
25
- } catch (e) {
24
+ version = request.getVersion();
25
+ }
26
+ catch (e) {
26
27
  if ((isSimpleError(e) || isSimpleErrors(e)) && e.hasCode('missing_version')) {
27
28
  // Allow missing version on /openid/ path
28
- if (STAMHOOFD.environment === 'development' || request.url.startsWith("/openid/")) {
29
- request.version = this.latestVersions.web
30
- return
29
+ if (STAMHOOFD.environment === 'development' || request.url.startsWith('/openid/')) {
30
+ request.version = this.latestVersions.web;
31
+ return;
31
32
  }
32
33
  }
33
34
  throw e;
34
35
  }
35
36
 
36
- /*if (request.getIP() === '') {
37
+ /* if (request.getIP() === '') {
37
38
  throw new SimpleError({
38
39
  code: "blocked",
39
40
  statusCode: 400,
40
41
  message: "Temporary blocked",
41
42
  human: "Jouw verbinding is tijdelijk geblokkeerd. Gelieve contact op te nemen met hallo@stamhoofd.be"
42
43
  })
43
- }*/
44
+ } */
44
45
 
45
46
  if (version < this.minimumVersion) {
46
47
  // WARNING: update caddy config for on demand certificates, because we don't want to throw errors over there!
47
- if (platform === "web" || platform === undefined) {
48
+ if (platform === 'web' || platform === undefined) {
48
49
  throw new SimpleError({
49
- code: "client_update_required",
50
+ code: 'client_update_required',
50
51
  statusCode: 400,
51
- message: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.",
52
- human: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser."
53
- })
54
- } else {
52
+ message: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.',
53
+ human: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.',
54
+ });
55
+ }
56
+ else {
55
57
  throw new SimpleError({
56
- code: "client_update_required",
58
+ code: 'client_update_required',
57
59
  statusCode: 400,
58
- message: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!",
59
- human: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!"
60
- })
60
+ message: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!',
61
+ human: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!',
62
+ });
61
63
  }
62
64
  }
63
65
  }
64
66
 
65
- handleResponse(request: Request, response: EncodedResponse) {
66
- const platform = request.headers["x-platform"];
67
+ handleResponse(request: Request, response: Response) {
68
+ const platform = request.headers['x-platform'];
67
69
 
68
- if (platform === "android") {
69
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.android
70
+ if (platform === 'android') {
71
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.android;
70
72
  }
71
- if (platform === "ios") {
72
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.ios
73
+ if (platform === 'ios') {
74
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.ios;
73
75
  }
74
- if (platform === "web") {
75
- response.headers["X-Platform-Latest-Version"] = this.latestVersions.web
76
+ if (platform === 'web') {
77
+ response.headers['X-Platform-Latest-Version'] = this.latestVersions.web;
76
78
  }
77
79
 
78
80
  try {
79
- response.headers["X-Version"] = Math.min(Version, request.getVersion())
80
- } catch (e) {
81
+ response.headers['X-Version'] = Math.min(Version, request.getVersion());
82
+ }
83
+ catch (e) {
81
84
  // No version provided or invalid version
82
85
  }
83
86
  }