diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 97d9a97..9d0d3bd 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,2 +1,10 @@ -// @visionl/core — placeholder, to be implemented in Task 2 -export const VERSION = '0.1.0'; +export { type PageInfo } from './types/page.js'; +export { type ApiResponse, ErrorCode } from './types/api.js'; +export { type WsEvent } from './types/ws.js'; +export { + type FingerprintProfile, + type FingerprintPermissions, + type FingerprintBehavior, + type CanvasNoiseConfig, + type PermissionState, +} from './types/fingerprint.js'; diff --git a/packages/core/src/types/api.ts b/packages/core/src/types/api.ts new file mode 100644 index 0000000..0b5d798 --- /dev/null +++ b/packages/core/src/types/api.ts @@ -0,0 +1,18 @@ +// API request/response types / API 请求响应类型 +export interface ApiResponse { + ok: boolean; + data?: T; + error?: { + code: ErrorCode; + message: string; + }; +} + +export enum ErrorCode { + PAGE_NOT_FOUND = 'PAGE_NOT_FOUND', + DAEMON_UNREACHABLE = 'DAEMON_UNREACHABLE', + INVALID_URL = 'INVALID_URL', + ALIAS_EXISTS = 'ALIAS_EXISTS', + TIMEOUT = 'TIMEOUT', + INTERNAL = 'INTERNAL', +} diff --git a/packages/core/src/types/fingerprint.ts b/packages/core/src/types/fingerprint.ts new file mode 100644 index 0000000..dc25395 --- /dev/null +++ b/packages/core/src/types/fingerprint.ts @@ -0,0 +1,37 @@ +// Fingerprint profile type definitions / 指纹配置类型定义 +export type PermissionState = 'prompt' | 'granted' | 'denied'; + +export interface FingerprintPermissions { + notifications: PermissionState; + geolocation: PermissionState; + camera: PermissionState; + microphone: PermissionState; +} + +export interface CanvasNoiseConfig { + enabled: boolean; + strength: number; // 0-1 / 噪声强度 0-1 +} + +export interface FingerprintBehavior { + mouseMoveDelay: { min: number; max: number }; + keyPressDelay: { min: number; max: number }; + scrollStepDelay: { min: number; max: number }; +} + +export interface FingerprintProfile { + id: string; + name: string; + userAgent: string; + platform: string; + languages: string[]; + acceptLanguage: string; + screen: { width: number; height: number; colorDepth: number; pixelRatio: number }; + viewport: { width: number; height: number }; + webgl: { vendor: string; renderer: string }; + timezone: string; + geolocation?: { latitude: number; longitude: number; accuracy: number }; + permissions: FingerprintPermissions; + behavior: FingerprintBehavior; + canvasNoise: CanvasNoiseConfig; +} diff --git a/packages/core/src/types/page.ts b/packages/core/src/types/page.ts new file mode 100644 index 0000000..5b1e771 --- /dev/null +++ b/packages/core/src/types/page.ts @@ -0,0 +1,9 @@ +// Page state type definitions / 页面状态类型定义 +export interface PageInfo { + id: string; + url: string; + alias?: string; + title: string; + status: 'active' | 'crashed'; + profile: string; +} diff --git a/packages/core/src/types/ws.ts b/packages/core/src/types/ws.ts new file mode 100644 index 0000000..e96b442 --- /dev/null +++ b/packages/core/src/types/ws.ts @@ -0,0 +1,10 @@ +// WebSocket event type definitions / WebSocket 事件类型定义 +import type { PageInfo } from './page.js'; + +export type WsEvent = + | { type: 'page:created'; data: PageInfo } + | { type: 'page:closed'; data: { id: string } } + | { type: 'page:navigated'; data: { id: string; url: string; title: string } } + | { type: 'page:crashed'; data: { id: string; error: string } } + | { type: 'page:console'; data: { id: string; level: string; text: string } } + | { type: 'page:detection:warning'; data: { id: string; level: string; detail: string } };