UNPKG

@egjs/agent

Version:

Extracts browser and operating system information from the user agent string or user agent object(userAgentData).

74 lines (65 loc) 2.52 kB
import { AgentInfo } from "./types"; import { hasUserAgentData } from "./utils"; import { getClientHintsAgent } from "./userAgentData"; import { getLegacyAgent } from "./userAgent"; /** * @namespace eg.agent */ /** * Extracts accuate browser and operating system information from the user agent string or client hints. * @ko 유저 에이전트 문자열 또는 client hints에서 정확한 브라우저와 운영체제 정보를 추출한다. * @function eg.agent#getAccurateAgent * @param - Callback function to get the accuate agent <ko>정확한 에이전트를 가져오기 위한 callback 함수</ko> * @return - get the accuate agent promise. If Promise are not supported, null is returned. <ko> 정확한 에이전트 promise를 가져온다. Promise를 지원 하지 않는 경우, null을 반환한다. </ko> * @example import { getAccurateAgent } from "@egjs/agent"; // eg.agent.getAccurateAgent() getAccurateAgent().then(agent => { const { os, browser, isMobile } = agent; }); getAccurateAgent(agent => { const { os, browser, isMobile } = agent; }); */ export function getAccurateAgent(callback?: (result: AgentInfo) => void): Promise<AgentInfo> | null { if (hasUserAgentData()) { return navigator.userAgentData.getHighEntropyValues([ "architecture", "model", "platform", "platformVersion", "uaFullVersion", "fullVersionList", ]).then(info => { const agentInfo = getClientHintsAgent(info); callback && callback(agentInfo); return agentInfo; }); } callback && callback(agent()); if (typeof Promise === "undefined" || !Promise) { return null; } return Promise.resolve(agent()); } /** * Extracts browser and operating system information from the user agent string. * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다. * @function eg.agent#agent * @param - user agent string to parse <ko>파싱할 유저에이전트 문자열</ko> * @return - agent Info <ko> 에이전트 정보 </ko> * @example import agent from "@egjs/agent"; // eg.agent(); const { os, browser, isMobile } = agent(); */ function agent(userAgent?: string): AgentInfo { if (typeof userAgent === "undefined" && hasUserAgentData()) { return getClientHintsAgent(); } else { return getLegacyAgent(userAgent); } } export { getLegacyAgent }; export default agent; export * from "./types";