@stamhoofd/backend-middleware
Advanced tools
Comparing version 2.74.0 to 2.75.0
@@ -1,3 +0,3 @@ | ||
import { ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
export declare const CORSMiddleware: ResponseMiddleware; | ||
//# sourceMappingURL=CORSMiddleware.d.ts.map |
@@ -6,11 +6,11 @@ "use strict"; | ||
handleResponse(request, response) { | ||
response.headers["Access-Control-Allow-Origin"] = request.headers.origin ?? "*"; | ||
response.headers["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS, PATCH, PUT, DELETE"; | ||
response.headers["Access-Control-Allow-Headers"] = request.headers["access-control-request-headers"] ?? "*"; | ||
response.headers["Access-Control-Max-Age"] = "86400"; // Cache 24h | ||
if (request.method !== "OPTIONS") { | ||
response.headers['Access-Control-Allow-Origin'] = request.headers.origin ?? '*'; | ||
response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PATCH, PUT, DELETE'; | ||
response.headers['Access-Control-Allow-Headers'] = request.headers['access-control-request-headers'] ?? '*'; | ||
response.headers['Access-Control-Max-Age'] = '86400'; // Cache 24h | ||
if (request.method !== 'OPTIONS') { | ||
// Expose all headers | ||
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(", "); | ||
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(', '); | ||
if (exposeHeaders) { | ||
response.headers["Access-Control-Expose-Headers"] = exposeHeaders; | ||
response.headers['Access-Control-Expose-Headers'] = exposeHeaders; | ||
} | ||
@@ -21,8 +21,8 @@ } | ||
// API is public | ||
response.headers["Cross-Origin-Resource-Policy"] = "cross-origin"; | ||
if (request.headers.origin && !response.headers["Vary"]) { | ||
response.headers["Vary"] = "Origin"; | ||
response.headers['Cross-Origin-Resource-Policy'] = 'cross-origin'; | ||
if (request.headers.origin && !response.headers['Vary']) { | ||
response.headers['Vary'] = 'Origin'; | ||
} | ||
} | ||
}, | ||
}; | ||
//# sourceMappingURL=CORSMiddleware.js.map |
@@ -1,3 +0,3 @@ | ||
import { RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
export declare const LogMiddleware: ResponseMiddleware & RequestMiddleware; | ||
//# sourceMappingURL=LogMiddleware.d.ts.map |
@@ -13,3 +13,3 @@ "use strict"; | ||
} | ||
simple_logging_1.logger.error(...requestPrefix(request, 'query'), "Request query was ", json); | ||
simple_logging_1.logger.error(...requestPrefix(request, 'query'), 'Request query was ', json); | ||
} | ||
@@ -26,7 +26,7 @@ request.body.then((body) => { | ||
} | ||
simple_logging_1.logger.error(...requestPrefix(request, 'body'), "Request body was ", json); | ||
simple_logging_1.logger.error(...requestPrefix(request, 'body'), 'Request body was ', json); | ||
} | ||
} | ||
catch (e) { | ||
simple_logging_1.logger.error(...requestPrefix(request, 'body'), "Request body was ", body); | ||
simple_logging_1.logger.error(...requestPrefix(request, 'body'), 'Request body was ', body); | ||
} | ||
@@ -44,8 +44,11 @@ }).catch(console.error); | ||
new simple_logging_1.StyledText(request.host).addClass('request', 'host'), | ||
')' | ||
')', | ||
]; | ||
} | ||
function requestPrefix(request, ...classes) { | ||
if (!request._uniqueIndex) { | ||
return []; | ||
} | ||
return [ | ||
new simple_logging_1.StyledText(`[R${request._uniqueIndex.toString().padStart(4, "0")}] `).addClass('request', 'tag', ...classes), | ||
new simple_logging_1.StyledText(`[R${request._uniqueIndex.toString().padStart(4, '0')}] `).addClass('request', 'tag', ...classes), | ||
]; | ||
@@ -57,4 +60,4 @@ } | ||
request._startTime = process.hrtime(); | ||
if (request.method == "OPTIONS") { | ||
if (STAMHOOFD.environment === "development") { | ||
if (request.method == 'OPTIONS') { | ||
if (STAMHOOFD.environment === 'development') { | ||
simple_logging_1.logger.log(...requestPrefix(request), ...requestOneLiner(request)); | ||
@@ -69,3 +72,3 @@ } | ||
prefixes: requestPrefix(request, 'output'), | ||
tags: ['request', 'request-output'] | ||
tags: ['request', 'request-output'], | ||
}, run); | ||
@@ -77,9 +80,9 @@ }, | ||
const timeInMs = Math.round((endTime[0] - startTime[0]) * 1000 + (endTime[1] - startTime[1]) / 1000000); | ||
if (request.method !== "OPTIONS") { | ||
simple_logging_1.logger.log(...requestPrefix(request, 'time'), response.status + " - Finished in " + timeInMs + "ms"); | ||
if (request.method !== 'OPTIONS') { | ||
simple_logging_1.logger.log(...requestPrefix(request, 'time'), response.status + ' - Finished in ' + timeInMs + 'ms'); | ||
} | ||
if (error) { | ||
if ((0, simple_errors_1.isSimpleError)(error) || (0, simple_errors_1.isSimpleErrors)(error)) { | ||
if (!error.hasCode("expired_access_token") && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) { | ||
simple_logging_1.logger.error(...requestPrefix(request, 'error'), "Request with error in response ", new simple_logging_1.StyledText(error).addClass('request', 'error')); | ||
if (!error.hasCode('expired_access_token') && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) { | ||
simple_logging_1.logger.error(...requestPrefix(request, 'error'), 'Request with error in response ', new simple_logging_1.StyledText(error).addClass('request', 'error')); | ||
logRequestDetails(request); | ||
@@ -89,8 +92,8 @@ } | ||
else { | ||
simple_logging_1.logger.error(...requestPrefix(request, 'error'), "Request with internal error ", new simple_logging_1.StyledText(error).addClass('request', 'error')); | ||
simple_logging_1.logger.error(...requestPrefix(request, 'error'), 'Request with internal error ', new simple_logging_1.StyledText(error).addClass('request', 'error')); | ||
logRequestDetails(request); | ||
} | ||
} | ||
} | ||
}, | ||
}; | ||
//# sourceMappingURL=LogMiddleware.js.map |
@@ -1,2 +0,2 @@ | ||
import { EncodedResponse, Request, RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
export declare class VersionMiddleware implements RequestMiddleware, ResponseMiddleware { | ||
@@ -18,4 +18,4 @@ minimumVersion: number | undefined; | ||
handleRequest(request: Request): void; | ||
handleResponse(request: Request, response: EncodedResponse): void; | ||
handleResponse(request: Request, response: Response): void; | ||
} | ||
//# sourceMappingURL=VersionMiddleware.d.ts.map |
@@ -17,3 +17,3 @@ "use strict"; | ||
} | ||
const platform = request.headers["x-platform"]; | ||
const platform = request.headers['x-platform']; | ||
let version; | ||
@@ -26,3 +26,3 @@ try { | ||
// Allow missing version on /openid/ path | ||
if (STAMHOOFD.environment === 'development' || request.url.startsWith("/openid/")) { | ||
if (STAMHOOFD.environment === 'development' || request.url.startsWith('/openid/')) { | ||
request.version = this.latestVersions.web; | ||
@@ -34,3 +34,3 @@ return; | ||
} | ||
/*if (request.getIP() === '') { | ||
/* if (request.getIP() === '') { | ||
throw new SimpleError({ | ||
@@ -42,11 +42,11 @@ code: "blocked", | ||
}) | ||
}*/ | ||
} */ | ||
if (version < this.minimumVersion) { | ||
// WARNING: update caddy config for on demand certificates, because we don't want to throw errors over there! | ||
if (platform === "web" || platform === undefined) { | ||
if (platform === 'web' || platform === undefined) { | ||
throw new simple_errors_1.SimpleError({ | ||
code: "client_update_required", | ||
code: 'client_update_required', | ||
statusCode: 400, | ||
message: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.", | ||
human: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser." | ||
message: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.', | ||
human: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.', | ||
}); | ||
@@ -56,6 +56,6 @@ } | ||
throw new simple_errors_1.SimpleError({ | ||
code: "client_update_required", | ||
code: 'client_update_required', | ||
statusCode: 400, | ||
message: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!", | ||
human: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!" | ||
message: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!', | ||
human: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!', | ||
}); | ||
@@ -66,14 +66,14 @@ } | ||
handleResponse(request, response) { | ||
const platform = request.headers["x-platform"]; | ||
if (platform === "android") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.android; | ||
const platform = request.headers['x-platform']; | ||
if (platform === 'android') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.android; | ||
} | ||
if (platform === "ios") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.ios; | ||
if (platform === 'ios') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.ios; | ||
} | ||
if (platform === "web") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.web; | ||
if (platform === 'web') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.web; | ||
} | ||
try { | ||
response.headers["X-Version"] = Math.min(structures_1.Version, request.getVersion()); | ||
response.headers['X-Version'] = Math.min(structures_1.Version, request.getVersion()); | ||
} | ||
@@ -80,0 +80,0 @@ catch (e) { |
{ | ||
"name": "@stamhoofd/backend-middleware", | ||
"version": "2.74.0", | ||
"version": "2.75.0", | ||
"main": "./dist/index.js", | ||
@@ -16,3 +16,3 @@ "types": "./dist/index.d.ts", | ||
"dependencies": { | ||
"@simonbackx/simple-endpoints": "1.15.0", | ||
"@simonbackx/simple-endpoints": "1.19.0", | ||
"@simonbackx/simple-errors": "^1.4", | ||
@@ -24,3 +24,3 @@ "@simonbackx/simple-logging": "^1.0.1" | ||
}, | ||
"gitHead": "3a77692b8163f10c231785de2f720c423a909762" | ||
"gitHead": "4710a9386f9f489356e04518622cc83c5faa2bf1" | ||
} |
@@ -1,18 +0,18 @@ | ||
import { EncodedResponse, Request, ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { Request, Response, ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
export const CORSMiddleware: ResponseMiddleware = { | ||
handleResponse(request: Request, response: EncodedResponse) { | ||
response.headers["Access-Control-Allow-Origin"] = request.headers.origin ?? "*" | ||
response.headers["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS, PATCH, PUT, DELETE" | ||
response.headers["Access-Control-Allow-Headers"] = request.headers["access-control-request-headers"] ?? "*"; | ||
response.headers["Access-Control-Max-Age"] = "86400"; // Cache 24h | ||
if (request.method !== "OPTIONS") { | ||
handleResponse(request: Request, response: Response) { | ||
response.headers['Access-Control-Allow-Origin'] = request.headers.origin ?? '*'; | ||
response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PATCH, PUT, DELETE'; | ||
response.headers['Access-Control-Allow-Headers'] = request.headers['access-control-request-headers'] ?? '*'; | ||
response.headers['Access-Control-Max-Age'] = '86400'; // Cache 24h | ||
if (request.method !== 'OPTIONS') { | ||
// Expose all headers | ||
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(", "); | ||
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(', '); | ||
if (exposeHeaders) { | ||
response.headers["Access-Control-Expose-Headers"] = exposeHeaders | ||
response.headers['Access-Control-Expose-Headers'] = exposeHeaders; | ||
} | ||
} | ||
// Not needed | ||
@@ -22,8 +22,8 @@ // response.headers["Access-Control-Allow-Credentials"] = "true"; | ||
// API is public | ||
response.headers["Cross-Origin-Resource-Policy"] = "cross-origin" | ||
response.headers['Cross-Origin-Resource-Policy'] = 'cross-origin'; | ||
if (request.headers.origin && !response.headers["Vary"]) { | ||
response.headers["Vary"] = "Origin" | ||
if (request.headers.origin && !response.headers['Vary']) { | ||
response.headers['Vary'] = 'Origin'; | ||
} | ||
} | ||
} | ||
}, | ||
}; |
@@ -1,4 +0,4 @@ | ||
import { EncodedResponse, Request, RequestMiddleware,ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { isSimpleError, isSimpleErrors } from "@simonbackx/simple-errors"; | ||
import { logger, StyledText } from "@simonbackx/simple-logging"; | ||
import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
import { isSimpleError, isSimpleErrors } from '@simonbackx/simple-errors'; | ||
import { logger, StyledText } from '@simonbackx/simple-logging'; | ||
let requestCounter = 0; | ||
@@ -8,11 +8,11 @@ | ||
if (Object.keys(request.query).length) { | ||
const json: any = {...request.query} | ||
const json: any = { ...request.query }; | ||
if (json && json.password) { | ||
json.password = '*******' | ||
json.password = '*******'; | ||
} | ||
logger.error( | ||
...requestPrefix(request, 'query'), | ||
"Request query was ", | ||
json | ||
) | ||
'Request query was ', | ||
json, | ||
); | ||
} | ||
@@ -22,9 +22,9 @@ | ||
if (!body) { | ||
return | ||
return; | ||
} | ||
try { | ||
const json = JSON.parse(body) | ||
const json = JSON.parse(body); | ||
if (Array.isArray(json) || Object.keys(json).length) { | ||
if (json && json.password) { | ||
json.password = '*******' | ||
json.password = '*******'; | ||
} | ||
@@ -34,17 +34,18 @@ | ||
...requestPrefix(request, 'body'), | ||
"Request body was ", | ||
json | ||
) | ||
'Request body was ', | ||
json, | ||
); | ||
} | ||
} catch (e) { | ||
} | ||
catch (e) { | ||
logger.error( | ||
...requestPrefix(request, 'body'), | ||
"Request body was ", | ||
body | ||
) | ||
'Request body was ', | ||
body, | ||
); | ||
} | ||
}).catch(console.error) | ||
}).catch(console.error); | ||
} | ||
function requestOneLiner(request: Request): (StyledText | string)[] { | ||
function requestOneLiner(request: Request): (StyledText | string)[] { | ||
return [ | ||
@@ -55,13 +56,16 @@ new StyledText(request.method).addClass('request', 'method', request.method.toLowerCase()), | ||
' (', | ||
new StyledText(request.getIP()).addClass('request', 'ip'), | ||
'@', | ||
new StyledText(request.host).addClass('request', 'host'), | ||
')' | ||
] | ||
new StyledText(request.getIP()).addClass('request', 'ip'), | ||
'@', | ||
new StyledText(request.host).addClass('request', 'host'), | ||
')', | ||
]; | ||
} | ||
function requestPrefix(request: Request, ...classes: string[]): (StyledText | string)[] { | ||
if (!(request as any)._uniqueIndex) { | ||
return []; | ||
} | ||
return [ | ||
new StyledText(`[R${((request as any)._uniqueIndex as number).toString().padStart(4, "0")}] `).addClass('request', 'tag', ...classes), | ||
] | ||
new StyledText(`[R${((request as any)._uniqueIndex as number).toString().padStart(4, '0')}] `).addClass('request', 'tag', ...classes), | ||
]; | ||
} | ||
@@ -71,13 +75,13 @@ | ||
handleRequest(request: Request) { | ||
(request as any)._uniqueIndex = requestCounter++ | ||
(request as any)._uniqueIndex = requestCounter++; | ||
(request as any)._startTime = process.hrtime(); | ||
if (request.method == "OPTIONS") { | ||
if (STAMHOOFD.environment === "development") { | ||
if (request.method == 'OPTIONS') { | ||
if (STAMHOOFD.environment === 'development') { | ||
logger.log( | ||
...requestPrefix(request), | ||
...requestOneLiner(request) | ||
) | ||
...requestOneLiner(request), | ||
); | ||
} | ||
return | ||
return; | ||
} | ||
@@ -87,4 +91,4 @@ | ||
...requestPrefix(request), | ||
...requestOneLiner(request) | ||
) | ||
...requestOneLiner(request), | ||
); | ||
}, | ||
@@ -95,7 +99,7 @@ | ||
prefixes: requestPrefix(request, 'output'), | ||
tags: ['request', 'request-output'] | ||
}, run) | ||
tags: ['request', 'request-output'], | ||
}, run); | ||
}, | ||
handleResponse(request: Request, response: EncodedResponse, error?: Error) { | ||
handleResponse(request: Request, response: Response, error?: Error) { | ||
const endTime = process.hrtime(); | ||
@@ -105,7 +109,7 @@ const startTime = (request as any)._startTime ?? endTime; | ||
if (request.method !== "OPTIONS") { | ||
if (request.method !== 'OPTIONS') { | ||
logger.log( | ||
...requestPrefix(request, 'time'), | ||
response.status + " - Finished in "+timeInMs+"ms" | ||
) | ||
response.status + ' - Finished in ' + timeInMs + 'ms', | ||
); | ||
} | ||
@@ -115,22 +119,23 @@ | ||
if (isSimpleError(error) || isSimpleErrors(error)) { | ||
if (!error.hasCode("expired_access_token") && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) { | ||
if (!error.hasCode('expired_access_token') && !error.hasCode('unknown_domain') && !error.hasCode('unknown_webshop')) { | ||
logger.error( | ||
...requestPrefix(request, 'error'), | ||
"Request with error in response ", | ||
new StyledText(error).addClass('request', 'error') | ||
) | ||
'Request with error in response ', | ||
new StyledText(error).addClass('request', 'error'), | ||
); | ||
logRequestDetails(request) | ||
logRequestDetails(request); | ||
} | ||
} else { | ||
} | ||
else { | ||
logger.error( | ||
...requestPrefix(request, 'error'), | ||
"Request with internal error ", | ||
new StyledText(error).addClass('request', 'error') | ||
) | ||
'Request with internal error ', | ||
new StyledText(error).addClass('request', 'error'), | ||
); | ||
logRequestDetails(request) | ||
logRequestDetails(request); | ||
} | ||
} | ||
} | ||
} | ||
}, | ||
}; |
@@ -1,12 +0,12 @@ | ||
import { EncodedResponse, Request, RequestMiddleware, ResponseMiddleware } from "@simonbackx/simple-endpoints"; | ||
import { isSimpleError, isSimpleErrors, SimpleError } from "@simonbackx/simple-errors"; | ||
import { Version } from "@stamhoofd/structures"; | ||
import { Response, Request, RequestMiddleware, ResponseMiddleware } from '@simonbackx/simple-endpoints'; | ||
import { isSimpleError, isSimpleErrors, SimpleError } from '@simonbackx/simple-errors'; | ||
import { Version } from '@stamhoofd/structures'; | ||
export class VersionMiddleware implements RequestMiddleware, ResponseMiddleware { | ||
minimumVersion: number | undefined | ||
latestVersions: {android: number, ios: number, web: number} | ||
minimumVersion: number | undefined; | ||
latestVersions: { android: number; ios: number; web: number }; | ||
constructor(options: {latestVersions: {android: number, ios: number, web: number}, minimumVersion?: number}) { | ||
this.minimumVersion = options.minimumVersion | ||
this.latestVersions = options.latestVersions | ||
constructor(options: { latestVersions: { android: number; ios: number; web: number }; minimumVersion?: number }) { | ||
this.minimumVersion = options.minimumVersion; | ||
this.latestVersions = options.latestVersions; | ||
} | ||
@@ -16,6 +16,6 @@ | ||
if (!this.minimumVersion) { | ||
return | ||
return; | ||
} | ||
const platform = request.headers["x-platform"]; | ||
const platform = request.headers['x-platform']; | ||
@@ -25,9 +25,10 @@ let version!: number; | ||
try { | ||
version = request.getVersion() | ||
} catch (e) { | ||
version = request.getVersion(); | ||
} | ||
catch (e) { | ||
if ((isSimpleError(e) || isSimpleErrors(e)) && e.hasCode('missing_version')) { | ||
// Allow missing version on /openid/ path | ||
if (STAMHOOFD.environment === 'development' || request.url.startsWith("/openid/")) { | ||
request.version = this.latestVersions.web | ||
return | ||
if (STAMHOOFD.environment === 'development' || request.url.startsWith('/openid/')) { | ||
request.version = this.latestVersions.web; | ||
return; | ||
} | ||
@@ -38,3 +39,3 @@ } | ||
/*if (request.getIP() === '') { | ||
/* if (request.getIP() === '') { | ||
throw new SimpleError({ | ||
@@ -46,20 +47,21 @@ code: "blocked", | ||
}) | ||
}*/ | ||
} */ | ||
if (version < this.minimumVersion) { | ||
// WARNING: update caddy config for on demand certificates, because we don't want to throw errors over there! | ||
if (platform === "web" || platform === undefined) { | ||
if (platform === 'web' || platform === undefined) { | ||
throw new SimpleError({ | ||
code: "client_update_required", | ||
code: 'client_update_required', | ||
statusCode: 400, | ||
message: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.", | ||
human: "Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser." | ||
}) | ||
} else { | ||
message: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.', | ||
human: 'Er is een noodzakelijke update beschikbaar. Herlaad de pagina en wis indien nodig de cache van jouw browser.', | ||
}); | ||
} | ||
else { | ||
throw new SimpleError({ | ||
code: "client_update_required", | ||
code: 'client_update_required', | ||
statusCode: 400, | ||
message: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!", | ||
human: "Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!" | ||
}) | ||
message: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!', | ||
human: 'Er is een noodzakelijke update beschikbaar. Update de app en probeer opnieuw!', | ||
}); | ||
} | ||
@@ -69,18 +71,19 @@ } | ||
handleResponse(request: Request, response: EncodedResponse) { | ||
const platform = request.headers["x-platform"]; | ||
handleResponse(request: Request, response: Response) { | ||
const platform = request.headers['x-platform']; | ||
if (platform === "android") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.android | ||
if (platform === 'android') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.android; | ||
} | ||
if (platform === "ios") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.ios | ||
if (platform === 'ios') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.ios; | ||
} | ||
if (platform === "web") { | ||
response.headers["X-Platform-Latest-Version"] = this.latestVersions.web | ||
if (platform === 'web') { | ||
response.headers['X-Platform-Latest-Version'] = this.latestVersions.web; | ||
} | ||
try { | ||
response.headers["X-Version"] = Math.min(Version, request.getVersion()) | ||
} catch (e) { | ||
response.headers['X-Version'] = Math.min(Version, request.getVersion()); | ||
} | ||
catch (e) { | ||
// No version provided or invalid version | ||
@@ -87,0 +90,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
63749
450
+ Added@simonbackx/simple-endpoints@1.19.0(transitive)
- Removed@simonbackx/simple-endpoints@1.15.0(transitive)