@api.global/typedserver
Version:
A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.
57 lines • 4.5 kB
JavaScript
import * as interfaces from './interfaces/index.js';
import * as plugins from './plugins.js';
import { WorkerEvent } from './classes.workerevent.js';
import * as domainInstructions from './domaininstructions/index.js';
export class DomainRouter {
smartmatches = [];
constructor() {
for (const key of Object.keys(domainInstructions.instructionObject)) {
this.smartmatches.push(new plugins.smartmatch.SmartMatch(key));
}
}
/**
*
* @param cworkerevent
*/
routeToResponder(cworkerevent) {
const match = this.smartmatches.find(smartmatchArg => {
return smartmatchArg.match(cworkerevent.request.url);
});
cworkerevent.responderInstruction = match
? domainInstructions.instructionObject[match.wildcard]
: {
type: 'cache'
};
}
/**
* rendertronRouter
*/
checkWetherReRouteToRendertron(cworkerevent) {
let needsRendertron = false;
for (const botAgentIdentifier of domainInstructions.botUserAgents) {
if (needsRendertron) {
continue;
}
if (cworkerevent.request.headers.get('user-agent') &&
cworkerevent.request.headers.get('user-agent').toLowerCase().includes(botAgentIdentifier.toLowerCase()) &&
!cworkerevent.request.url.includes('lossless.one')) {
needsRendertron = true;
}
}
if (needsRendertron) {
cworkerevent.routedThroughRendertron = true;
}
}
/**
* check wether this is a preflight request that should be handled
*/
checkWetherIsPreflight(cworkerevent) {
if (cworkerevent.request.method === 'OPTIONS' &&
cworkerevent.request.headers.get('Origin') !== null &&
cworkerevent.request.headers.get('Access-Control-Request-Method') !== null &&
cworkerevent.request.headers.get('Access-Control-Request-Headers') !== null) {
cworkerevent.isPreflight = true;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kb21haW5yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19lZGdld29ya2VyL2NsYXNzZXMuZG9tYWlucm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUVwRSxNQUFNLE9BQU8sWUFBWTtJQUNmLFlBQVksR0FBb0MsRUFBRSxDQUFDO0lBRTNEO1FBQ0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0IsQ0FBQyxZQUF5QjtRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNuRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLO1lBQ3ZDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3RELENBQUMsQ0FBQztnQkFDRSxJQUFJLEVBQUUsT0FBTzthQUNkLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7SUFDSSw4QkFBOEIsQ0FBQyxZQUF5QjtRQUM3RCxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDNUIsS0FBSyxNQUFNLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xFLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFDRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO2dCQUM5QyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2RyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFDbEQsQ0FBQztnQkFDRCxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBc0IsQ0FBRSxZQUF5QjtRQUN0RCxJQUNFLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDekMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7WUFDbkQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLEtBQUssSUFBSTtZQUMxRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxJQUFJLEVBQzNFLENBQUM7WUFDRCxZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztDQUVGIn0=