django-vue3-admin-web/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js
2025-10-20 21:21:14 +08:00

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;