54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider";
 | 
						|
export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => {
 | 
						|
    const navigator = typeof window !== "undefined" ? window.navigator : undefined;
 | 
						|
    const uaString = navigator?.userAgent ?? "";
 | 
						|
    const osName = navigator?.userAgentData?.platform ?? fallback.os(uaString) ?? "other";
 | 
						|
    const osVersion = undefined;
 | 
						|
    const brands = navigator?.userAgentData?.brands ?? [];
 | 
						|
    const brand = brands[brands.length - 1];
 | 
						|
    const browserName = brand?.brand ?? fallback.browser(uaString) ?? "unknown";
 | 
						|
    const browserVersion = brand?.version ?? "unknown";
 | 
						|
    const sections = [
 | 
						|
        ["aws-sdk-js", clientVersion],
 | 
						|
        ["ua", "2.1"],
 | 
						|
        [`os/${osName}`, osVersion],
 | 
						|
        ["lang/js"],
 | 
						|
        ["md/browser", `${browserName}_${browserVersion}`],
 | 
						|
    ];
 | 
						|
    if (serviceId) {
 | 
						|
        sections.push([`api/${serviceId}`, clientVersion]);
 | 
						|
    }
 | 
						|
    const appId = await config?.userAgentAppId?.();
 | 
						|
    if (appId) {
 | 
						|
        sections.push([`app/${appId}`]);
 | 
						|
    }
 | 
						|
    return sections;
 | 
						|
};
 | 
						|
export const fallback = {
 | 
						|
    os(ua) {
 | 
						|
        if (/iPhone|iPad|iPod/.test(ua))
 | 
						|
            return "iOS";
 | 
						|
        if (/Macintosh|Mac OS X/.test(ua))
 | 
						|
            return "macOS";
 | 
						|
        if (/Windows NT/.test(ua))
 | 
						|
            return "Windows";
 | 
						|
        if (/Android/.test(ua))
 | 
						|
            return "Android";
 | 
						|
        if (/Linux/.test(ua))
 | 
						|
            return "Linux";
 | 
						|
        return undefined;
 | 
						|
    },
 | 
						|
    browser(ua) {
 | 
						|
        if (/EdgiOS|EdgA|Edg\//.test(ua))
 | 
						|
            return "Microsoft Edge";
 | 
						|
        if (/Firefox\//.test(ua))
 | 
						|
            return "Firefox";
 | 
						|
        if (/Chrome\//.test(ua))
 | 
						|
            return "Chrome";
 | 
						|
        if (/Safari\//.test(ua))
 | 
						|
            return "Safari";
 | 
						|
        return undefined;
 | 
						|
    },
 | 
						|
};
 | 
						|
export const defaultUserAgent = createDefaultUserAgentProvider;
 |