Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
@mornya/platform-libs
Advanced tools
Parses UA (user-agent) information of the current platform.
Parses UA (user-agent) information of the current platform.
This project has been created by Vessel CLI. For a simple and quick reference about it, click here.
현재 웹 플랫폼에서 사용자 에이전트 정보를 추출하는 라이브러리.
해당 라이브러리를 사용 할 프로젝트에서는 아래와 같이 의존성 모듈로 설치한다.
$ npm install --save @mornya/platform-libs
or
$ yarn add @mornya/platform-libs
아래와 같이 모듈을 import하여 사용한다.
import { Platform } from '@mornya/platform-libs';
본 패키지에는 아래와 같은 모듈들을 포함한다.
제공되는 모듈과 메소드 사용법 등은 코드 스니핏을 참고한다.
샘플 모듈은 다음과 같은 메소드들을 제공한다.
Platform.getInfo
파라미터로 전달된 사용자 에이전트 문자열을 분석하여 추출된 내용을 오브젝트 형태로 반환한다.
import { Platform } from '@mornya/platform-libs';
const platformInfo = Platform.getInfo(navigator.userAgent);
console.log(platformInfo);
반환되는 오브젝트는 아래 기본 인터페이스 구조를 참고.
{
// OS 벤더 구분
OS: {
vendor: string; // 'AOS' | 'IOS' | 'WOS' | 'WIN' | 'MAC' | 'LINUX';
version: string; // OS 벤더 버전 (semver 형태)
};
// 브라우저(웹/앱) 구분
Browser: {
type: string; // 'APP' | 'MWEB' | 'PC';
vendor: string; // 'CHROME' | 'SAFARI' | 'FIREFOX' | 'OPERA' | 'IE';
version: string; // 브라우저 벤더 버전 (semver 형태)
};
// UserAgent 문자열 추출 정보
UA: {
productName: string;
productVersion: string;
systemInfo: string;
extras?: string;
};
isDesktop: boolean; // 데스크탑 PC에서의 브라우징 여부
isMobile: boolean; // 모바일에서의 브라우징 여부 (네이티브 앱 일때에도 true)
isAOS: boolean; // OS가 Android인지 여부
isIOS: boolean; // OS가 iOS인지 여부
}
Platform.checkVersion
semver 형태의 버전을 서로 비교하여 대상 버전이 높은지(1) 같은지(0) 낮은지(-1)를 판별한다.
import { Platform } from '@mornya/platform-libs';
const baseVersion = '1.0.0';
console.log(Platform.checkVersion(baseVersion, '1.1.0')); // 1
console.log(Platform.checkVersion(baseVersion, '1.0.0')); // 0
console.log(Platform.checkVersion(baseVersion, '0.9.0')); // -1
Platform.resolveMatches
정규식을 이용하여 매치되는 브라우저 정보를 커스터마이즈하여 추가하기 위해 사용한다.
import { Platform } from '@mornya/platform-libs';
type ExtraBrowserType = 'APP'; // 추가 될 브라우저 타입
type ExtraBrowserVendor = 'APP1' | 'APP2'; // 추가 될 브라우저 벤더명
interface IPlatformExtendInfo extends Platform.Info<ExtraBrowserType, ExtraBrowserVendor> {
isNative?: boolean;
isAPP1?: boolean;
isAPP2?: boolean;
}
const platformInfo = Platform.getInfo<IPlatformExtendInfo>(navigator.userAgent);
// 네이티브 앱 브라우저 정보 등록 샘플
// UA 문자열에 앱 관련 정보가 있어야 함
// ex) my-native-app1/1.2.3
const extras = {
APP1: [/my-native-app1\/([0-9]+)\.([0-9]+)\.([0-9]+)/],
APP2: [/my-native-app2\/([0-9]+)\.([0-9]+)\.([0-9]+)/],
};
const { name, matches } = Platform.resolveMatches(extras, platformInfo.UA.extras);
if (['APP1', 'APP2'].includes(name)) {
platformInfo.Browser.type = 'APP';
platformInfo.Browser.vendor = name; // 정규식으로 매칭된 키 (APP1 or APP2)
platformInfo.Browser.version = [matches[1], matches[2], matches[3]].join('.'); // semver 형태
platformInfo.isMobile = true;
platformInfo.isNative = true;
platformInfo.isAPP1 = name === 'APP1';
platformInfo.isAPP2 = name === 'APP2';
} else {
platformInfo.isNative = false;
platformInfo.isAPP1 = false;
platformInfo.isAPP2 = false;
}
console.info(platformInfo);
Platform.isTouchDevice
현재 디바이스가 터치 가능한 디바이스인지 여부를 리턴한다.
import { Platform } from '@mornya/platform-libs';
console.log(Platform.isTouchDevice()); // true or false
프로젝트 변경사항은 CHANGELOG.md 파일 참조.
프로젝트 라이센스는 LICENSE 파일 참조.
FAQs
Parses UA (user-agent) information of the current platform.
The npm package @mornya/platform-libs receives a total of 5 weekly downloads. As such, @mornya/platform-libs popularity was classified as not popular.
We found that @mornya/platform-libs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.