quasqui
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
42 lines (33 loc) • 1.12 kB
text/typescript
import Parser from 'ua-parser-js';
import compareVersions from 'compare-versions';
import { ModernServerContext } from '../../context';
import { NativeModuleNameMap } from './browser-list';
const nativeModules = require('@babel/compat-data/native-modules');
export const supportModern = (context: ModernServerContext) => {
if (context.query?.modern_es6) {
return true;
}
// no ua in request headers
const userAgent = context.headers['user-agent'];
if (!userAgent || typeof userAgent !== 'string') {
return false;
}
const parsedUA = Parser(userAgent);
const browserName = parsedUA.browser.name;
const browserVersion = parsedUA.browser.version;
if (!browserName || !browserVersion) {
return false;
}
const nativeUAName = NativeModuleNameMap[browserName];
if (!nativeUAName) {
return false;
}
const version = nativeModules['es6.module'][nativeUAName];
if (!version) {
return false;
}
const result = compareVersions(browserVersion, version);
return result >= 0;
};
export const getModernEntry = (filepath: string) =>
filepath.replace(/\.html$/, '-es6.html');