@quantabit/risk-control-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/index.cjs +786 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +761 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +90 -0
- package/types/index.d.ts +110 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/services/riskControlApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useRiskControl.js","../src/components/RiskControl.jsx","../src/index.js"],"sourcesContent":["/**\n * Risk Control SDK - API 客户端\n * 风险控制系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 风控 API 客户端\n */\nexport class RiskControlApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/risk', config);\n }\n\n // ============ 风险评估 ============\n\n /**\n * 评估风险\n * @param {Object} data - 评估数据\n */\n async assess(data) {\n return this.post('/assess', data);\n }\n\n /**\n * 检查风险(兼容快捷导出命名)\n * @param {Object} data - 风险检查数据\n */\n async checkRisk(data) {\n return this.assess(data);\n }\n\n /**\n * 实时风险检测\n * @param {string} eventType - 事件类型\n * @param {Object} context - 上下文\n */\n async detect(eventType, context) {\n return this.post('/detect', { event_type: eventType, ...context });\n }\n\n /**\n * 获取用户风险分数\n * @param {string} userId - 用户 ID\n */\n async getUserRiskScore(userId) {\n return this.get(`/users/${userId}/score`);\n }\n\n /**\n * 获取用户风险画像\n * @param {string} userId - 用户 ID\n */\n async getUserRiskProfile(userId) {\n return this.get(`/users/${userId}/profile`);\n }\n\n // ============ 验证码 ============\n\n /**\n * 获取验证码\n * @param {string} type - 验证码类型\n * @param {Object} options - 选项\n */\n async getCaptcha(type, options = {}) {\n return this.post('/captcha', { type, ...options });\n }\n\n /**\n * 验证验证码\n * @param {string} captchaId - 验证码 ID\n * @param {string} answer - 答案\n */\n async verifyCaptcha(captchaId, answer) {\n return this.post('/captcha/verify', { captcha_id: captchaId, answer });\n }\n\n // ============ 规则管理 ============\n\n /**\n * 获取规则列表\n * @param {Object} params - 查询参数\n */\n async getRules(params = {}) {\n return this.get('/rules', params);\n }\n\n /**\n * 获取规则详情\n * @param {string} ruleId - 规则 ID\n */\n async getRule(ruleId) {\n return this.get(`/rules/${ruleId}`);\n }\n\n /**\n * 创建规则\n * @param {Object} rule - 规则数据\n */\n async createRule(rule) {\n return this.post('/rules', rule);\n }\n\n /**\n * 更新规则\n * @param {string} ruleId - 规则 ID\n * @param {Object} updates - 更新数据\n */\n async updateRule(ruleId, updates) {\n return this.put(`/rules/${ruleId}`, updates);\n }\n\n /**\n * 删除规则\n * @param {string} ruleId - 规则 ID\n */\n async deleteRule(ruleId) {\n return this.delete(`/rules/${ruleId}`);\n }\n\n /**\n * 切换规则状态\n * @param {string} ruleId - 规则 ID\n * @param {boolean} enabled - 是否启用\n */\n async toggleRule(ruleId, enabled) {\n return this.post(`/rules/${ruleId}/toggle`, { enabled });\n }\n\n // ============ 事件上报 ============\n\n /**\n * 上报风险事件\n * @param {Object} event - 事件数据\n */\n async reportEvent(event) {\n return this.post('/events', event);\n }\n\n /**\n * 批量上报事件\n * @param {Object[]} events - 事件列表\n */\n async batchReportEvents(events) {\n return this.post('/events/batch', { events });\n }\n\n /**\n * 获取事件列表\n * @param {Object} params - 查询参数\n */\n async getEvents(params = {}) {\n return this.get('/events', params);\n }\n\n // ============ 处置操作 ============\n\n /**\n * 封禁用户\n * @param {string} userId - 用户 ID\n * @param {Object} options - 封禁选项\n */\n async banUser(userId, options = {}) {\n return this.post(`/users/${userId}/ban`, options);\n }\n\n /**\n * 解封用户\n * @param {string} userId - 用户 ID\n */\n async unbanUser(userId) {\n return this.post(`/users/${userId}/unban`);\n }\n\n /**\n * 限制用户\n * @param {string} userId - 用户 ID\n * @param {Object} restrictions - 限制配置\n */\n async restrictUser(userId, restrictions) {\n return this.post(`/users/${userId}/restrict`, restrictions);\n }\n\n // ============ 统计分析 ============\n\n /**\n * 获取风控统计\n * @param {Object} params - 统计参数\n */\n async getStats(params = {}) {\n return this.get('/stats', params);\n }\n\n /**\n * 获取风险趋势\n * @param {Object} params - 查询参数\n */\n async getTrend(params = {}) {\n return this.get('/trend', params);\n }\n\n /**\n * 获取告警列表\n * @param {Object} params - 查询参数\n */\n async getAlerts(params = {}) {\n return this.get('/alerts', params);\n }\n\n /**\n * 处理告警\n * @param {string} alertId - 告警 ID\n * @param {Object} action - 处理动作\n */\n async handleAlert(alertId, action) {\n return this.post(`/alerts/${alertId}/handle`, action);\n }\n\n // ============ 隐私合规 ============\n\n /**\n * 获取用户风控数据概要 — GDPR 第15条: 访问权\n * 用户有权知道被收集的风控信息\n * @param {string} userId - 用户 ID\n * @returns {Promise<object>} 风控数据概要(不含算法细节)\n */\n async getUserDataSummary(userId) {\n return this.get(`/users/${userId}/data-summary`);\n }\n\n /**\n * 获取隐私数据声明\n */\n getDataDisclosure() {\n return {\n sdk: '@quantabit/risk-control-sdk',\n privacyLevel: 'essential',\n consentRequired: false,\n collected: [\n { type: 'risk_score', description: 'User risk assessment score', retention: '2 years' },\n { type: 'behavior_events', description: 'Security-relevant user actions', retention: '1 year' },\n { type: 'device_fingerprint', description: 'Device identification for fraud detection', retention: '90 days' },\n { type: 'ip_address', description: 'IP for geo-risk analysis (anonymized after 30 days)', retention: '30 days (full), 1 year (anonymized)' },\n { type: 'captcha_responses', description: 'Bot detection verification', retention: '24 hours' },\n ],\n legalBasis: 'Legitimate interest (fraud prevention, Art. 6(1)(f) GDPR)',\n compliance: ['GDPR Art. 22 (Automated decision-making)', 'PSD2 SCA'],\n gdprCapabilities: ['access-summary'],\n note: 'Risk scoring uses automated processing. Users have the right to contest automated decisions under GDPR Art. 22.',\n };\n }\n}\n\n// 创建默认实例\nexport const riskControlApi = new RiskControlApiClient();\n\n\n\nexport default riskControlApi;\n","/**\n * Risk Control SDK - 类型定义\n */\n\n// 风险等级\nexport const RiskLevel = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n};\n\n// 事件类型\nexport const RiskEventType = {\n LOGIN: 'login',\n REGISTER: 'register',\n PAYMENT: 'payment',\n WITHDRAW: 'withdraw',\n CONTENT: 'content',\n INTERACTION: 'interaction',\n};\n\n// 检测结果\nexport const DetectionResult = {\n PASS: 'pass',\n REVIEW: 'review',\n BLOCK: 'block',\n CAPTCHA: 'captcha',\n};\n\n// 风险因素\nexport const RiskFactor = {\n NEW_DEVICE: 'new_device',\n ABNORMAL_IP: 'abnormal_ip',\n HIGH_FREQUENCY: 'high_frequency',\n SUSPICIOUS_BEHAVIOR: 'suspicious_behavior',\n BOT_DETECTED: 'bot_detected',\n FRAUD_PATTERN: 'fraud_pattern',\n};\n\nexport const RuleCondition = {\n EQUALS: 'equals',\n NOT_EQUALS: 'not_equals',\n GREATER_THAN: 'greater_than',\n LESS_THAN: 'less_than',\n CONTAINS: 'contains',\n IN: 'in',\n};\n\nexport const EventType = RiskEventType;\n\nexport const RiskAction = {\n PASS: 'pass',\n REVIEW: 'review',\n BLOCK: 'block',\n CAPTCHA: 'captcha',\n LIMIT: 'limit',\n};\n\nexport default {\n RiskLevel,\n RiskEventType,\n DetectionResult,\n RiskFactor,\n RuleCondition,\n EventType,\n RiskAction,\n};\n","/**\n * Risk Control SDK - 多语言支持\n */\n\nconst messages = {\n en: {\n riskControl: 'Risk Control',\n riskRules: 'Risk Rules',\n riskEvents: 'Risk Events',\n antiCheat: 'Anti-Cheat',\n createRule: 'Create Rule',\n editRule: 'Edit Rule',\n ruleName: 'Rule Name',\n ruleDescription: 'Description',\n conditions: 'Conditions',\n actions: 'Actions',\n priority: 'Priority',\n enabled: 'Enabled',\n disabled: 'Disabled',\n riskLevel: 'Risk Level',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n block: 'Block',\n warn: 'Warn',\n review: 'Review',\n pass: 'Pass',\n challenged: 'Challenged',\n blocked: 'Blocked',\n eventType: 'Event Type',\n login: 'Login',\n payment: 'Payment',\n withdraw: 'Withdraw',\n register: 'Register',\n timestamp: 'Timestamp',\n userId: 'User ID',\n ipAddress: 'IP Address',\n deviceId: 'Device ID',\n riskScore: 'Risk Score',\n triggeredRules: 'Triggered Rules',\n details: 'Details',\n loading: 'Loading...',\n noData: 'No data',\n save: 'Save',\n cancel: 'Cancel',\n },\n zh: {\n riskControl: '风控',\n riskRules: '风控规则',\n riskEvents: '风险事件',\n antiCheat: '反作弊',\n createRule: '创建规则',\n editRule: '编辑规则',\n ruleName: '规则名称',\n ruleDescription: '描述',\n conditions: '条件',\n actions: '动作',\n priority: '优先级',\n enabled: '启用',\n disabled: '禁用',\n riskLevel: '风险等级',\n high: '高',\n medium: '中',\n low: '低',\n block: '拦截',\n warn: '警告',\n review: '人工审核',\n pass: '通过',\n challenged: '挑战',\n blocked: '已拦截',\n eventType: '事件类型',\n login: '登录',\n payment: '支付',\n withdraw: '提现',\n register: '注册',\n timestamp: '时间',\n userId: '用户ID',\n ipAddress: 'IP地址',\n deviceId: '设备ID',\n riskScore: '风险分数',\n triggeredRules: '触发规则',\n details: '详情',\n loading: '加载中...',\n noData: '暂无数据',\n save: '保存',\n cancel: '取消',\n },\n ja: {\n riskControl: 'リスク管理', riskRules: 'リスクルール', riskEvents: 'リスクイベント', antiCheat: 'アンチチート',\n createRule: 'ルールの作成', editRule: 'ルールの編集', ruleName: 'ルール名', ruleDescription: '説明',\n conditions: '条件', actions: 'アクション', priority: '優先度', enabled: '有効', disabled: '無効',\n riskLevel: 'リスクレベル', high: '高', medium: '中', low: '低',\n block: 'ブロック', warn: '警告', review: 'レビュー', pass: 'パス',\n challenged: 'チャレンジ済み', blocked: 'ブロック済み', eventType: 'イベントタイプ',\n login: 'ログイン', payment: '支払い', withdraw: '出金', register: '登録',\n timestamp: 'タイムスタンプ', userId: 'ユーザーID', ipAddress: 'IPアドレス', deviceId: 'デバイスID',\n riskScore: 'リスクスコア', triggeredRules: 'トリガーされたルール', details: '詳細',\n loading: '読み込み中...', noData: 'データなし', save: '保存', cancel: 'キャンセル',\n },\n ko: {\n riskControl: '리스크 관리', riskRules: '리스크 규칙', riskEvents: '리스크 이벤트', antiCheat: '안티 치트',\n createRule: '규칙 생성', editRule: '규칙 편집', ruleName: '규칙 이름', ruleDescription: '설명',\n conditions: '조건', actions: '작업', priority: '우선순위', enabled: '활성화됨', disabled: '비활성화됨',\n riskLevel: '리스크 수준', high: '높음', medium: '중간', low: '낮음',\n block: '차단', warn: '경고', review: '검토', pass: '통과',\n challenged: '도전됨', blocked: '차단됨', eventType: '이벤트 유형',\n login: '로그인', payment: '결제', withdraw: '출금', register: '등록',\n timestamp: '타임스탬프', userId: '사용자 ID', ipAddress: 'IP 주소', deviceId: '디바이스 ID',\n riskScore: '리스크 점수', triggeredRules: '트리거된 규칙', details: '세부 정보',\n loading: '로딩 중...', noData: '데이터 없음', save: '저장', cancel: '취소',\n },\n};\n\nconst SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) { if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang; }\nexport function getLanguage() { return currentLanguage; }\nexport function t(key) { return (messages[currentLanguage] || messages.en)[key] || key; }\nexport { messages, SUPPORTED_LANGUAGES };\n","/**\n * Risk Control SDK - React Hooks\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { riskControlApi } from '../services/riskControlApi';\n\nexport function useRiskRules(options = {}) {\n const [rules, setRules] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetch = useCallback(async () => {\n setLoading(true);\n try {\n const result = await riskControlApi.getRules(options);\n setRules(result.items || result);\n setError(null);\n } catch (err) {\n setError(err);\n } finally {\n setLoading(false);\n }\n }, [JSON.stringify(options)]);\n\n useEffect(() => { fetch(); }, [fetch]);\n\n return { rules, loading, error, refresh: fetch };\n}\n\nexport function useRiskEvents(options = {}) {\n const [events, setEvents] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetch = useCallback(async () => {\n setLoading(true);\n try {\n const result = await riskControlApi.getEvents(options);\n setEvents(result.items || result);\n setError(null);\n } catch (err) {\n setError(err);\n } finally {\n setLoading(false);\n }\n }, [JSON.stringify(options)]);\n\n useEffect(() => { fetch(); }, [fetch]);\n\n return { events, loading, error, refresh: fetch };\n}\n\nexport function useRiskCheck() {\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState(null);\n\n const checkRisk = useCallback(async (data) => {\n setLoading(true);\n try {\n const res = await riskControlApi.checkRisk(data);\n setResult(res);\n return res;\n } catch (err) {\n setResult({ error: err.message });\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { checkRisk, result, loading };\n}\n\n","/**\n * Risk Control SDK - 风控组件\n */\n\nimport React from 'react';\nimport { t } from '../i18n';\n\nexport function RiskLevelBadge({ level }) {\n const levelMap = { high: 'risk-badge-high', medium: 'risk-badge-medium', low: 'risk-badge-low' };\n return <span className={`risk-badge ${levelMap[level] || levelMap.low}`}>{t(level)}</span>;\n}\n\nexport function RiskScore({ score }) {\n const level = score >= 70 ? 'high' : score >= 40 ? 'medium' : 'low';\n return <div className={`risk-score risk-score-${level}`}>{score}</div>;\n}\n\nexport function RiskEventTable({ events = [], loading = false, onViewDetails, className = '' }) {\n if (loading) {\n return <div className={`risk-card ${className}`}><div className=\"risk-loading\"><div className=\"risk-spinner\" /></div></div>;\n }\n\n if (events.length === 0) {\n return (\n <div className={`risk-card ${className}`}>\n <div className=\"risk-empty\">\n <div style={{ fontSize: '48px', marginBottom: '16px' }}>🛡️</div>\n <div>{t('noData')}</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`risk-card ${className}`}>\n <table className=\"risk-table\">\n <thead>\n <tr>\n <th>{t('timestamp')}</th>\n <th>{t('eventType')}</th>\n <th>{t('userId')}</th>\n <th>{t('riskScore')}</th>\n <th>{t('riskLevel')}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {events.map((event) => (\n <tr key={event.id}>\n <td>{new Date(event.timestamp).toLocaleString()}</td>\n <td>{t(event.event_type) || event.event_type}</td>\n <td><code style={{ background: '#f3f4f6', padding: '2px 6px', borderRadius: '4px' }}>{event.user_id}</code></td>\n <td><RiskScore score={event.risk_score} /></td>\n <td><RiskLevelBadge level={event.risk_level} /></td>\n <td>\n {onViewDetails && (\n <button className=\"risk-btn risk-btn-outline\" style={{ padding: '4px 10px', fontSize: '12px' }} onClick={() => onViewDetails(event)}>\n {t('details')}\n </button>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport function RiskRuleCard({ rule, onEdit, onToggle }) {\n return (\n <div className=\"risk-rule-item\">\n <div>\n <div className=\"risk-rule-name\">{rule.name}</div>\n <div className=\"risk-rule-desc\">{rule.description}</div>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <RiskLevelBadge level={rule.risk_level} />\n <label style={{ display: 'flex', alignItems: 'center', gap: '8px', cursor: 'pointer' }}>\n <input type=\"checkbox\" checked={rule.enabled} onChange={() => onToggle?.(rule.id, !rule.enabled)} style={{ width: '18px', height: '18px' }} />\n <span style={{ fontSize: '13px', color: '#6b7280' }}>{rule.enabled ? t('enabled') : t('disabled')}</span>\n </label>\n {onEdit && (\n <button className=\"risk-btn risk-btn-outline\" style={{ padding: '6px 12px', fontSize: '12px' }} onClick={() => onEdit(rule)}>\n {t('editRule')}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport function RiskRulesList({ rules = [], loading = false, onEdit, onToggle, className = '' }) {\n if (loading) {\n return <div className={`risk-card ${className}`}><div className=\"risk-loading\"><div className=\"risk-spinner\" /></div></div>;\n }\n\n if (rules.length === 0) {\n return <div className={`risk-card ${className}`}><div className=\"risk-empty\">{t('noData')}</div></div>;\n }\n\n return (\n <div className={`risk-card ${className}`}>\n <div className=\"risk-rules-list\">\n {rules.map((rule) => (\n <RiskRuleCard key={rule.id} rule={rule} onEdit={onEdit} onToggle={onToggle} />\n ))}\n </div>\n </div>\n );\n}\n\nexport default RiskEventTable;\n","/**\n * @quantabit/risk-control-sdk\n * Risk Control SDK - Full Version\n */\n\nexport { riskControlApi, RiskControlApiClient } from './services/riskControlApi';\nexport { RiskLevel, RiskAction, EventType, RuleCondition } from './types';\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\nexport { useRiskRules, useRiskEvents, useRiskCheck } from './hooks/useRiskControl';\nexport { RiskEventTable, RiskRulesList, RiskRuleCard, RiskLevelBadge, RiskScore } from './components/RiskControl';\n\nimport { riskControlApi } from './services/riskControlApi';\n\nexport const getRules = (...args) => riskControlApi.getRules(...args);\nexport const createRule = (...args) => riskControlApi.createRule(...args);\nexport const updateRule = (...args) => riskControlApi.updateRule(...args);\nexport const getEvents = (...args) => riskControlApi.getEvents(...args);\nexport const checkRisk = (...args) => riskControlApi.checkRisk(...args);\n\nimport './styles/main.css';\n"],"names":["RiskControlApiClient","BaseApiClient","constructor","config","assess","data","post","checkRisk","detect","eventType","context","event_type","getUserRiskScore","userId","get","getUserRiskProfile","getCaptcha","type","options","verifyCaptcha","captchaId","answer","captcha_id","getRules","params","getRule","ruleId","createRule","rule","updateRule","updates","put","deleteRule","delete","toggleRule","enabled","reportEvent","event","batchReportEvents","events","getEvents","banUser","unbanUser","restrictUser","restrictions","getStats","getTrend","getAlerts","handleAlert","alertId","action","getUserDataSummary","getDataDisclosure","sdk","privacyLevel","consentRequired","collected","description","retention","legalBasis","compliance","gdprCapabilities","note","riskControlApi","RiskLevel","LOW","MEDIUM","HIGH","CRITICAL","RiskEventType","LOGIN","REGISTER","PAYMENT","WITHDRAW","CONTENT","INTERACTION","RuleCondition","EQUALS","NOT_EQUALS","GREATER_THAN","LESS_THAN","CONTAINS","IN","EventType","RiskAction","PASS","REVIEW","BLOCK","CAPTCHA","LIMIT","messages","en","riskControl","riskRules","riskEvents","antiCheat","editRule","ruleName","ruleDescription","conditions","actions","priority","disabled","riskLevel","high","medium","low","block","warn","review","pass","challenged","blocked","login","payment","withdraw","register","timestamp","ipAddress","deviceId","riskScore","triggeredRules","details","loading","noData","save","cancel","zh","ja","ko","SUPPORTED_LANGUAGES","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useRiskRules","rules","setRules","useState","setLoading","error","setError","fetch","useCallback","result","items","err","JSON","stringify","useEffect","refresh","useRiskEvents","setEvents","useRiskCheck","setResult","res","message","RiskLevelBadge","level","levelMap","React","createElement","className","RiskScore","score","RiskEventTable","onViewDetails","length","style","fontSize","marginBottom","map","id","Date","toLocaleString","background","padding","borderRadius","user_id","risk_score","risk_level","onClick","RiskRuleCard","onEdit","onToggle","name","display","alignItems","gap","cursor","checked","onChange","width","height","color","RiskRulesList","args"],"mappings":"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"}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--risk-primary:#6366f1;--risk-danger:#ef4444;--risk-warning:#f59e0b;--risk-success:#22c55e;--risk-gray-100:#f3f4f6;--risk-gray-200:#e5e7eb;--risk-gray-500:#6b7280;--risk-gray-700:#374151;--risk-gray-900:#111827;--risk-radius:8px}.risk-card{background:#fff;border-radius:var(--risk-radius);box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.risk-header{align-items:center;border-bottom:1px solid var(--risk-gray-200);display:flex;justify-content:space-between;padding:16px 20px}.risk-title{color:var(--risk-gray-900);font-size:16px;font-weight:600}.risk-table{border-collapse:collapse;width:100%}.risk-table td,.risk-table th{border-bottom:1px solid var(--risk-gray-200);font-size:14px;padding:12px 16px;text-align:left}.risk-table th{color:var(--risk-gray-700);font-weight:600}.risk-table th,.risk-table tr:hover td{background:var(--risk-gray-100)}.risk-badge{border-radius:16px;display:inline-flex;font-size:12px;font-weight:500;padding:4px 10px}.risk-badge-high{background:#fee2e2;color:#991b1b}.risk-badge-medium{background:#fef3c7;color:#92400e}.risk-badge-low{background:#dcfce7;color:#166534}.risk-badge-blocked{background:#fee2e2;color:#991b1b}.risk-badge-passed{background:#dcfce7;color:#166534}.risk-score{align-items:center;border-radius:50%;display:inline-flex;font-size:14px;font-weight:700;height:40px;justify-content:center;width:40px}.risk-score-high{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.risk-score-medium{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.risk-score-low{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.risk-btn{align-items:center;border:none;border-radius:var(--risk-radius);cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:6px;padding:8px 16px}.risk-btn-primary{background:var(--risk-primary);color:#fff}.risk-btn-outline{background:transparent;border:1px solid var(--risk-gray-200);color:var(--risk-gray-700)}.risk-rules-list{display:flex;flex-direction:column;gap:12px;padding:16px}.risk-rule-item{align-items:center;background:var(--risk-gray-100);border-radius:var(--risk-radius);display:flex;justify-content:space-between;padding:16px}.risk-rule-name{color:var(--risk-gray-900);font-weight:500}.risk-rule-desc{color:var(--risk-gray-500);font-size:13px;margin-top:4px}.risk-empty{color:var(--risk-gray-500);padding:48px 20px;text-align:center}.risk-loading{display:flex;justify-content:center;padding:40px}.risk-spinner{animation:risk-spin .8s linear infinite;border:3px solid var(--risk-gray-200);border-radius:50%;border-top-color:var(--risk-primary);height:32px;width:32px}@keyframes risk-spin{to{transform:rotate(1turn)}}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quantabit/risk-control-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "QuantaBit Risk Control SDK - Device fingerprinting, behavior analysis, rule engine, and real-time interception",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.esm.js",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md",
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"types"
|
|
13
|
+
],
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./types/index.d.ts",
|
|
17
|
+
"import": "./dist/index.esm.js",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./styles": "./dist/styles.css",
|
|
21
|
+
"./styles.css": "./dist/styles.css"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "rollup -c",
|
|
25
|
+
"dev": "rollup -c -w",
|
|
26
|
+
"clean": "rm -rf dist",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
28
|
+
"test": "jest --passWithNoTests"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@rollup/plugin-commonjs": "^25.0.0",
|
|
32
|
+
"@rollup/plugin-node-resolve": "^15.0.0",
|
|
33
|
+
"rollup": "^4.0.0",
|
|
34
|
+
"@babel/core": "^7.23.0",
|
|
35
|
+
"@babel/preset-react": "^7.23.0",
|
|
36
|
+
"@rollup/plugin-babel": "^6.0.0",
|
|
37
|
+
"rollup-plugin-postcss": "^4.0.0",
|
|
38
|
+
"@babel/preset-env": "^7.23.0",
|
|
39
|
+
"babel-jest": "^29.7.0",
|
|
40
|
+
"identity-obj-proxy": "^3.0.0",
|
|
41
|
+
"jest": "^29.7.0",
|
|
42
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
43
|
+
"react": "^18.2.0",
|
|
44
|
+
"react-dom": "^18.2.0"
|
|
45
|
+
},
|
|
46
|
+
"keywords": [
|
|
47
|
+
"risk",
|
|
48
|
+
"fraud",
|
|
49
|
+
"anti-cheat",
|
|
50
|
+
"security",
|
|
51
|
+
"quantabit"
|
|
52
|
+
],
|
|
53
|
+
"author": "QuantaBit Team",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public",
|
|
57
|
+
"registry": "https://registry.npmjs.org"
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"@quantabit/sdk-config": "^1.0.6"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"react": ">=17.0.0",
|
|
64
|
+
"react-dom": ">=17.0.0"
|
|
65
|
+
},
|
|
66
|
+
"repository": {
|
|
67
|
+
"type": "git",
|
|
68
|
+
"url": "https://github.com/quantabit-chain/qbit-sdk.git",
|
|
69
|
+
"directory": "packages/risk-control-sdk"
|
|
70
|
+
},
|
|
71
|
+
"homepage": "https://github.com/quantabit-chain/qbit-sdk/tree/main/packages/risk-control-sdk#readme",
|
|
72
|
+
"bugs": {
|
|
73
|
+
"url": "https://github.com/quantabit-chain/qbit-sdk/issues"
|
|
74
|
+
},
|
|
75
|
+
"types": "types/index.d.ts",
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=18.0.0"
|
|
78
|
+
},
|
|
79
|
+
"sideEffects": [
|
|
80
|
+
"*.css"
|
|
81
|
+
],
|
|
82
|
+
"qbit": {
|
|
83
|
+
"privacy": {
|
|
84
|
+
"level": "functional",
|
|
85
|
+
"dataCollection": "Feature-related data for personalization. Requires user consent.",
|
|
86
|
+
"gdprCompliant": true,
|
|
87
|
+
"ccpaCompliant": true
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @quantabit/risk-control-sdk TypeScript Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Auto-generated type stubs. Enhance with specific types as the SDK matures.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { FC, ReactNode } from 'react';
|
|
8
|
+
|
|
9
|
+
// ============ Components ============
|
|
10
|
+
|
|
11
|
+
export interface RiskEventTableProps {
|
|
12
|
+
className?: string;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export declare const RiskEventTable: FC<RiskEventTableProps>;
|
|
18
|
+
|
|
19
|
+
export interface RiskRulesListProps {
|
|
20
|
+
className?: string;
|
|
21
|
+
style?: React.CSSProperties;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export declare const RiskRulesList: FC<RiskRulesListProps>;
|
|
26
|
+
|
|
27
|
+
export interface RiskRuleCardProps {
|
|
28
|
+
className?: string;
|
|
29
|
+
style?: React.CSSProperties;
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export declare const RiskRuleCard: FC<RiskRuleCardProps>;
|
|
34
|
+
|
|
35
|
+
export interface RiskLevelBadgeProps {
|
|
36
|
+
className?: string;
|
|
37
|
+
style?: React.CSSProperties;
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export declare const RiskLevelBadge: FC<RiskLevelBadgeProps>;
|
|
42
|
+
|
|
43
|
+
export interface RiskScoreProps {
|
|
44
|
+
className?: string;
|
|
45
|
+
style?: React.CSSProperties;
|
|
46
|
+
[key: string]: any;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export declare const RiskScore: FC<RiskScoreProps>;
|
|
50
|
+
|
|
51
|
+
// ============ Hooks ============
|
|
52
|
+
|
|
53
|
+
export interface UseRiskRulesReturn {
|
|
54
|
+
data: any;
|
|
55
|
+
loading: boolean;
|
|
56
|
+
error: string | null;
|
|
57
|
+
[key: string]: any;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export declare function useRiskRules(...args: any[]): UseRiskRulesReturn;
|
|
61
|
+
|
|
62
|
+
export interface UseRiskEventsReturn {
|
|
63
|
+
data: any;
|
|
64
|
+
loading: boolean;
|
|
65
|
+
error: string | null;
|
|
66
|
+
[key: string]: any;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export declare function useRiskEvents(...args: any[]): UseRiskEventsReturn;
|
|
70
|
+
|
|
71
|
+
export interface UseRiskCheckReturn {
|
|
72
|
+
data: any;
|
|
73
|
+
loading: boolean;
|
|
74
|
+
error: string | null;
|
|
75
|
+
[key: string]: any;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export declare function useRiskCheck(...args: any[]): UseRiskCheckReturn;
|
|
79
|
+
|
|
80
|
+
// ============ Services ============
|
|
81
|
+
|
|
82
|
+
export declare const riskControlApi: any;
|
|
83
|
+
|
|
84
|
+
export declare class RiskControlApiClient {
|
|
85
|
+
constructor(config?: Record<string, any>);
|
|
86
|
+
setToken(token: string): void;
|
|
87
|
+
setBaseUrl(url: string): void;
|
|
88
|
+
destroy(): void;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ============ Types & Enums ============
|
|
92
|
+
|
|
93
|
+
export declare const RiskLevel: any;
|
|
94
|
+
export declare const RiskAction: any;
|
|
95
|
+
export declare const EventType: Record<string, string>;
|
|
96
|
+
export declare const RuleCondition: any;
|
|
97
|
+
|
|
98
|
+
// ============ Functions & Utilities ============
|
|
99
|
+
|
|
100
|
+
export declare const messages: Record<string, Record<string, string>>;
|
|
101
|
+
export declare const SUPPORTED_LANGUAGES: string[];
|
|
102
|
+
export declare function setLanguage(lang: string): void;
|
|
103
|
+
export declare function getLanguage(): string;
|
|
104
|
+
export declare function t(key: string, params?: Record<string, any>): string;
|
|
105
|
+
export declare function getRules(...args: any[]): any;
|
|
106
|
+
export declare function createRule(...args: any[]): any;
|
|
107
|
+
export declare function updateRule(...args: any[]): any;
|
|
108
|
+
export declare function getEvents(...args: any[]): any;
|
|
109
|
+
export declare function checkRisk(...args: any[]): any;
|
|
110
|
+
|