hm-tracking-sdk 0.1.9 → 0.2.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.
@@ -37,23 +37,23 @@ export function getTelegramUserUnsafe() {
37
37
  console.warn("Telegram用户信息结构不完整");
38
38
  return null;
39
39
  }
40
- // 返回与 TelegramUserInfo 一致的嵌套 user 结构(snake_case)
40
+ // 确保包含必要字段
41
41
  const userInfo = {
42
42
  user: {
43
43
  id: initDataUnsafe.user.id,
44
- first_name: initDataUnsafe.user.first_name || "",
45
- last_name: initDataUnsafe.user.last_name || "",
44
+ firstName: initDataUnsafe.user.first_name || "",
45
+ lastName: initDataUnsafe.user.last_name || "",
46
46
  username: initDataUnsafe.user.username,
47
- photo_url: initDataUnsafe.user.photo_url,
48
- language_code: initDataUnsafe.user.language_code,
49
- allows_write_to_pm: initDataUnsafe.user.allows_write_to_pm || false,
50
- is_premium: initDataUnsafe.user.is_premium || false,
47
+ photoUrl: initDataUnsafe.user.photo_url || "",
48
+ languageCode: initDataUnsafe.user.language_code,
49
+ isPremium: initDataUnsafe.user.is_premium || false,
50
+ allowsWriteToPm: initDataUnsafe.user.allows_write_to_pm || false,
51
51
  },
52
- auth_date: initDataUnsafe.auth_date,
52
+ authDate: Math.floor(Date.now() / 1000),
53
53
  hash: initDataUnsafe.hash || "",
54
- start_param: initDataUnsafe.start_param,
55
- chat_type: initDataUnsafe.chat_type,
56
- chat_instance: initDataUnsafe.chat_instance,
54
+ startParam: initDataUnsafe.start_param,
55
+ chatType: initDataUnsafe.chat_type,
56
+ chatInstance: initDataUnsafe.chat_instance,
57
57
  };
58
58
  return userInfo;
59
59
  }
@@ -102,17 +102,18 @@ export function getAnonymousBrowserUser(cookieName = "tg_tracking_uid") {
102
102
  return {
103
103
  user: {
104
104
  id: uidNum,
105
- first_name: "Guest",
106
- last_name: "",
105
+ firstName: "Guest",
106
+ lastName: "",
107
107
  username: `guest_${uidStr.slice(-6)}`,
108
- language_code: lang.toLowerCase(),
109
- allows_write_to_pm: false,
108
+ languageCode: lang.toLowerCase(),
109
+ isPremium: false,
110
+ allowsWriteToPm: false,
110
111
  },
111
- auth_date: Math.floor(Date.now() / 1000),
112
+ authDate: Math.floor(Date.now() / 1000),
112
113
  hash: "anonymous_cookie_user",
113
- start_param: "browser_guest",
114
- chat_type: "sender",
115
- chat_instance: "",
114
+ startParam: "browser_guest",
115
+ chatType: "sender",
116
+ chatInstance: "",
116
117
  };
117
118
  }
118
119
  /**
@@ -122,18 +123,18 @@ export function getDefaultMockUser() {
122
123
  return {
123
124
  user: {
124
125
  id: 2077220643,
125
- first_name: "Mock",
126
- last_name: "User",
126
+ firstName: "Mock",
127
+ lastName: "User",
127
128
  username: "mock_user_demo",
128
- language_code: "zh-hans",
129
- allows_write_to_pm: true,
130
- is_premium: true,
129
+ languageCode: "zh-hans",
130
+ isPremium: true,
131
+ allowsWriteToPm: true,
131
132
  },
132
- auth_date: Math.floor(Date.now() / 1000),
133
+ authDate: Math.floor(Date.now() / 1000),
133
134
  hash: "mock_hash_for_demo_purpose",
134
- start_param: "demo_start_param",
135
- chat_type: "sender",
136
- chat_instance: "-245769840322609948",
135
+ startParam: "demo_start_param",
136
+ chatType: "sender",
137
+ chatInstance: "-245769840322609948",
137
138
  };
138
139
  }
139
140
  //# sourceMappingURL=telegram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/sdk/telegram.ts"],"names":[],"mappings":"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","sourcesContent":["import WebApp from \"@twa-dev/sdk\";\r\nimport type { TelegramUserInfo } from \"./types.js\";\r\n\r\n/**\r\n * 尝试获取启动参数,检查是否在 Telegram 环境中\r\n */\r\nfunction retrieveLaunchParams() {\r\n if (!WebApp.initData || WebApp.initData === \"\") {\r\n throw new Error(\"未能提取启动参数,不在 Telegram 环境中\");\r\n }\r\n return WebApp.initData;\r\n}\r\n\r\nexport function isTelegramEnv(): boolean {\r\n try {\r\n // 检查 WebApp 对象是否存在且 initData 可用\r\n if (\r\n typeof window !== \"undefined\" &&\r\n (window as any).Telegram &&\r\n (window as any).Telegram.WebApp\r\n ) {\r\n // 如果能够提取启动参数,说明已经在 Telegram 环境中\r\n retrieveLaunchParams();\r\n return true;\r\n }\r\n return false;\r\n } catch (error) {\r\n console.warn(\"非Telegram环境\");\r\n return false;\r\n }\r\n}\r\n\r\nexport function getTelegramUserUnsafe(): TelegramUserInfo | null {\r\n try {\r\n // 确保 WebApp 对象存在\r\n if (!WebApp || !WebApp.initDataUnsafe) {\r\n return null;\r\n }\r\n\r\n const initDataUnsafe = WebApp.initDataUnsafe;\r\n\r\n // 验证用户信息的基本结构\r\n if (!initDataUnsafe.user || !initDataUnsafe.user.id) {\r\n console.warn(\"Telegram用户信息结构不完整\");\r\n return null;\r\n }\r\n\r\n // 返回与 TelegramUserInfo 一致的嵌套 user 结构(snake_case)\r\n const userInfo: TelegramUserInfo = {\r\n user: {\r\n id: initDataUnsafe.user.id,\r\n first_name: initDataUnsafe.user.first_name || \"\",\r\n last_name: initDataUnsafe.user.last_name || \"\",\r\n username: initDataUnsafe.user.username,\r\n photo_url: initDataUnsafe.user.photo_url,\r\n language_code: initDataUnsafe.user.language_code,\r\n allows_write_to_pm: initDataUnsafe.user.allows_write_to_pm || false,\r\n is_premium: initDataUnsafe.user.is_premium || false,\r\n },\r\n auth_date: initDataUnsafe.auth_date,\r\n hash: initDataUnsafe.hash || \"\",\r\n start_param: initDataUnsafe.start_param,\r\n chat_type: initDataUnsafe.chat_type,\r\n chat_instance: initDataUnsafe.chat_instance,\r\n };\r\n\r\n return userInfo;\r\n } catch (error) {\r\n console.warn(\"获取Telegram用户信息失败:\", error);\r\n return null;\r\n }\r\n}\r\n\r\n/** Cookie 工具 **/\r\nfunction readCookie(name: string): string | null {\r\n if (typeof document === \"undefined\") return null;\r\n const match = document.cookie.match(\r\n new RegExp(\r\n \"(?:^|; )\" + name.replace(/([.$?*|{}()\\[\\]\\\\/+^])/g, \"\\\\$1\") + \"=([^;]*)\"\r\n )\r\n );\r\n return match ? decodeURIComponent(match[1]) : null;\r\n}\r\n\r\nfunction writeCookie(name: string, value: string, days = 365 * 2) {\r\n if (typeof document === \"undefined\") return;\r\n const date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n const expires = \"; expires=\" + date.toUTCString();\r\n document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(\r\n value\r\n )}${expires}; path=/`;\r\n}\r\n\r\nfunction generateNumericId(): number {\r\n // 生成稳定的数值 ID(53-bit 安全整数范围内)\r\n const rand = Math.floor(Math.random() * 1e9);\r\n const time = Date.now() % 1e9;\r\n const id = Number(\r\n String(time).padStart(9, \"0\") + String(rand).padStart(9, \"0\")\r\n );\r\n return id;\r\n}\r\n\r\n/**\r\n * 基于 Cookie 的匿名浏览器用户(非 Telegram 环境使用)\r\n * - 会在 cookie 中持久化 uid,下次复用\r\n */\r\nexport function getAnonymousBrowserUser(\r\n cookieName = \"tg_tracking_uid\"\r\n): TelegramUserInfo {\r\n let uidStr = readCookie(cookieName);\r\n if (!uidStr) {\r\n const uid = generateNumericId();\r\n uidStr = String(uid);\r\n writeCookie(cookieName, uidStr);\r\n }\r\n const uidNum =\r\n Number(uidStr.replace(/\\D/g, \"\").slice(0, 15)) || generateNumericId();\r\n const lang =\r\n (typeof navigator !== \"undefined\" &&\r\n (navigator.language || (navigator as any).userLanguage)) ||\r\n \"en\";\r\n\r\n return {\r\n user: {\r\n id: uidNum,\r\n first_name: \"Guest\",\r\n last_name: \"\",\r\n username: `guest_${uidStr.slice(-6)}`,\r\n language_code: lang.toLowerCase(),\r\n allows_write_to_pm: false,\r\n },\r\n auth_date: Math.floor(Date.now() / 1000),\r\n hash: \"anonymous_cookie_user\",\r\n start_param: \"browser_guest\",\r\n chat_type: \"sender\",\r\n chat_instance: \"\",\r\n } as TelegramUserInfo;\r\n}\r\n\r\n/**\r\n * 获取默认的 mock 用户信息(保留旧逻辑)\r\n */\r\nexport function getDefaultMockUser(): TelegramUserInfo {\r\n return {\r\n user: {\r\n id: 2077220643,\r\n first_name: \"Mock\",\r\n last_name: \"User\",\r\n username: \"mock_user_demo\",\r\n language_code: \"zh-hans\",\r\n allows_write_to_pm: true,\r\n is_premium: true,\r\n },\r\n auth_date: Math.floor(Date.now() / 1000),\r\n hash: \"mock_hash_for_demo_purpose\",\r\n start_param: \"demo_start_param\",\r\n chat_type: \"sender\",\r\n chat_instance: \"-245769840322609948\",\r\n } as TelegramUserInfo;\r\n}\r\n"]}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/sdk/telegram.ts"],"names":[],"mappings":"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","sourcesContent":["import WebApp from \"@twa-dev/sdk\";\r\nimport type { TelegramUserInfo } from \"./types.js\";\r\n\r\n/**\r\n * 尝试获取启动参数,检查是否在 Telegram 环境中\r\n */\r\nfunction retrieveLaunchParams() {\r\n if (!WebApp.initData || WebApp.initData === \"\") {\r\n throw new Error(\"未能提取启动参数,不在 Telegram 环境中\");\r\n }\r\n return WebApp.initData;\r\n}\r\n\r\nexport function isTelegramEnv(): boolean {\r\n try {\r\n // 检查 WebApp 对象是否存在且 initData 可用\r\n if (\r\n typeof window !== \"undefined\" &&\r\n (window as any).Telegram &&\r\n (window as any).Telegram.WebApp\r\n ) {\r\n // 如果能够提取启动参数,说明已经在 Telegram 环境中\r\n retrieveLaunchParams();\r\n return true;\r\n }\r\n return false;\r\n } catch (error) {\r\n console.warn(\"非Telegram环境\");\r\n return false;\r\n }\r\n}\r\n\r\nexport function getTelegramUserUnsafe(): TelegramUserInfo | null {\r\n try {\r\n // 确保 WebApp 对象存在\r\n if (!WebApp || !WebApp.initDataUnsafe) {\r\n return null;\r\n }\r\n\r\n const initDataUnsafe = WebApp.initDataUnsafe;\r\n\r\n // 验证用户信息的基本结构\r\n if (!initDataUnsafe.user || !initDataUnsafe.user.id) {\r\n console.warn(\"Telegram用户信息结构不完整\");\r\n return null;\r\n }\r\n\r\n // 确保包含必要字段\r\n const userInfo = {\r\n user: {\r\n id: initDataUnsafe.user.id,\r\n firstName: initDataUnsafe.user.first_name || \"\",\r\n lastName: initDataUnsafe.user.last_name || \"\",\r\n username: initDataUnsafe.user.username,\r\n photoUrl: initDataUnsafe.user.photo_url || \"\",\r\n languageCode: initDataUnsafe.user.language_code,\r\n isPremium: initDataUnsafe.user.is_premium || false,\r\n allowsWriteToPm: initDataUnsafe.user.allows_write_to_pm || false,\r\n },\r\n authDate: Math.floor(Date.now() / 1000),\r\n hash: initDataUnsafe.hash || \"\",\r\n startParam: initDataUnsafe.start_param,\r\n chatType: initDataUnsafe.chat_type,\r\n chatInstance: initDataUnsafe.chat_instance,\r\n };\r\n\r\n return userInfo as TelegramUserInfo;\r\n } catch (error) {\r\n console.warn(\"获取Telegram用户信息失败:\", error);\r\n return null;\r\n }\r\n}\r\n\r\n/** Cookie 工具 **/\r\nfunction readCookie(name: string): string | null {\r\n if (typeof document === \"undefined\") return null;\r\n const match = document.cookie.match(\r\n new RegExp(\r\n \"(?:^|; )\" + name.replace(/([.$?*|{}()\\[\\]\\\\/+^])/g, \"\\\\$1\") + \"=([^;]*)\"\r\n )\r\n );\r\n return match ? decodeURIComponent(match[1]) : null;\r\n}\r\n\r\nfunction writeCookie(name: string, value: string, days = 365 * 2) {\r\n if (typeof document === \"undefined\") return;\r\n const date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n const expires = \"; expires=\" + date.toUTCString();\r\n document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(\r\n value\r\n )}${expires}; path=/`;\r\n}\r\n\r\nfunction generateNumericId(): number {\r\n // 生成稳定的数值 ID(53-bit 安全整数范围内)\r\n const rand = Math.floor(Math.random() * 1e9);\r\n const time = Date.now() % 1e9;\r\n const id = Number(\r\n String(time).padStart(9, \"0\") + String(rand).padStart(9, \"0\")\r\n );\r\n return id;\r\n}\r\n\r\n/**\r\n * 基于 Cookie 的匿名浏览器用户(非 Telegram 环境使用)\r\n * - 会在 cookie 中持久化 uid,下次复用\r\n */\r\nexport function getAnonymousBrowserUser(\r\n cookieName = \"tg_tracking_uid\"\r\n): TelegramUserInfo {\r\n let uidStr = readCookie(cookieName);\r\n if (!uidStr) {\r\n const uid = generateNumericId();\r\n uidStr = String(uid);\r\n writeCookie(cookieName, uidStr);\r\n }\r\n const uidNum =\r\n Number(uidStr.replace(/\\D/g, \"\").slice(0, 15)) || generateNumericId();\r\n const lang =\r\n (typeof navigator !== \"undefined\" &&\r\n (navigator.language || (navigator as any).userLanguage)) ||\r\n \"en\";\r\n\r\n return {\r\n user: {\r\n id: uidNum,\r\n firstName: \"Guest\",\r\n lastName: \"\",\r\n username: `guest_${uidStr.slice(-6)}`,\r\n languageCode: lang.toLowerCase(),\r\n isPremium: false,\r\n allowsWriteToPm: false,\r\n },\r\n authDate: Math.floor(Date.now() / 1000),\r\n hash: \"anonymous_cookie_user\",\r\n startParam: \"browser_guest\",\r\n chatType: \"sender\",\r\n chatInstance: \"\",\r\n } as TelegramUserInfo;\r\n}\r\n\r\n/**\r\n * 获取默认的 mock 用户信息(保留旧逻辑)\r\n */\r\nexport function getDefaultMockUser(): TelegramUserInfo {\r\n return {\r\n user: {\r\n id: 2077220643,\r\n firstName: \"Mock\",\r\n lastName: \"User\",\r\n username: \"mock_user_demo\",\r\n languageCode: \"zh-hans\",\r\n isPremium: true,\r\n allowsWriteToPm: true,\r\n },\r\n authDate: Math.floor(Date.now() / 1000),\r\n hash: \"mock_hash_for_demo_purpose\",\r\n startParam: \"demo_start_param\",\r\n chatType: \"sender\",\r\n chatInstance: \"-245769840322609948\",\r\n } as TelegramUserInfo;\r\n}\r\n"]}
@@ -9,19 +9,19 @@ export interface TelegramUserUnsafeInitData {
9
9
  export interface TelegramUserInfo {
10
10
  user: {
11
11
  id: number;
12
- first_name?: string;
13
- last_name?: string;
12
+ firstName?: string;
13
+ lastName?: string;
14
14
  username?: string;
15
- photo_url?: string;
16
- language_code?: string;
17
- allows_write_to_pm?: boolean;
18
- is_premium?: boolean;
15
+ photoUrl?: string;
16
+ languageCode?: string;
17
+ allowsWriteToPm?: boolean;
18
+ isPremium?: boolean;
19
19
  };
20
- auth_date?: number;
20
+ authDate?: number;
21
21
  hash?: string;
22
- start_param?: string;
23
- chat_type?: string;
24
- chat_instance?: string;
22
+ startParam?: string;
23
+ chatType?: string;
24
+ chatInstance?: string;
25
25
  [key: string]: unknown;
26
26
  }
27
27
  export interface SDKInitOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,sEAAoD,CAAA;IACpD,sEAAoD,CAAA;IACpD,8DAA4C,CAAA;AAC9C,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","sourcesContent":["export enum AdPositionName {\n GameRewardedAdPosition = \"game_rewarded_ad_position\",\n TaskRewardedAdPosition = \"task_rewarded_ad_position\",\n TaskListAdPosition = \"task_list_ad_position\",\n}\n\nexport interface TelegramUserUnsafeInitData {\n [key: string]: unknown;\n}\n\nexport interface TelegramUserInfo {\n user: {\n id: number;\n first_name?: string;\n last_name?: string;\n username?: string;\n photo_url?: string;\n language_code?: string;\n allows_write_to_pm?: boolean;\n is_premium?: boolean;\n };\n auth_date?: number;\n hash?: string;\n start_param?: string;\n chat_type?: string;\n chat_instance?: string;\n [key: string]: unknown;\n}\n\nexport interface SDKInitOptions {\n /** 自定义用户信息(可选) */\n customUser?: TelegramUserInfo;\n /** 本地存储 Key 前缀,避免冲突 */\n storageKeyPrefix?: string;\n /** 自定义接口地址(可选)。不传则使用默认正式环境 */\n baseURL?: string;\n /** 可选:回调校验用 */\n appId?: string;\n /** 可选:SDK 初始化鉴权成功后的服务端回调地址 */\n notifyUrl?: string;\n /** 可选:TON Connect manifest 文件地址;未传则使用默认测试清单 */\n tonConnectManifestUrl?: string;\n}\n\nexport interface AuthResponseData {\n token: string;\n [key: string]: unknown;\n}\n\nexport interface APIResponse<T> {\n code: number;\n msg: string;\n timestamp?: number;\n datetime?: string;\n data: T;\n}\n\nexport interface AdConfigItem {\n id: number;\n adTypeId: number;\n adPlatformId: number;\n title: string;\n name: string;\n spaceId: string;\n rewardRate: number;\n payout: number;\n description?: string | null;\n status: number;\n enable: number;\n createDatetime: string;\n updateDatetime: string;\n adId: number;\n adPositionId: number;\n adPositionName: string;\n adPositionTitle: string;\n rank: number;\n adPlatformName: string; // e.g., monetag\n adPlatformTitle: string; // e.g., Monetag\n appId?: string | null;\n appSecret?: string | null;\n appUrl?: string | null;\n adPlatformConfig?: unknown | null;\n adTypeName: string; // e.g., interstitial_ad | popup_ad | inapp\n adTypeTitle: string;\n adRewardAmount?: number;\n}\n\nexport interface CreateAdParams {\n adId: number;\n adPositionId: number;\n tournamentId?: number;\n groupId?: number;\n}\n\nexport interface BindWalletResponseData {\n id: number;\n authId: number;\n authHash: string;\n authDatetime: string;\n chatInstance: string;\n firstName: string;\n lastName: string;\n username: string;\n nickname: string | null;\n allowsWritePm: number;\n languageCode: string;\n isPremiumUser: number;\n avatarUrl: string | null;\n email: string | null;\n phone: string | null;\n referrerId: number | null;\n referrerAuthId: number | null;\n walletAddress: string;\n usdtWalletAddress: string;\n points: number;\n buyContribution: number;\n revenuesContribution: number;\n taskContribution: number;\n status: number;\n enable: number;\n}\n\nexport interface AdResponseData {\n id: number;\n adTypeId: number;\n adPlatformId: number;\n title: string;\n name: string;\n spaceId: string;\n rewardRate: number;\n payout: number;\n description?: string | null;\n status: number;\n enable: number;\n createDatetime: string;\n updateDatetime: string;\n adShowId: string;\n start?: string[];\n show?: string[];\n error?: string[];\n close?: string[];\n reward?: string[];\n}\n\nexport interface MonitorUrls {\n start?: string[];\n show?: string[];\n error?: string[];\n close?: string[];\n reward?: string[];\n}\n\n// 新增:广告展示回调接口,供 SDK 用户可选传入\nexport interface AdCallbacks {\n onSuccess?: (result?: unknown) => void | Promise<void>;\n onError?: (error: unknown) => void | Promise<void>;\n}\n\nexport interface BindWalletReq {\n wallet: string;\n forceBind: boolean;\n}\n\nexport interface TonTransactionResult {\n transferHash?: string;\n boc?: string;\n raw?: unknown;\n}\n\nexport interface MerchantPayModeItem {\n id: number;\n title: string;\n name: string; // USDT | TON | STARS\n rate: number;\n nameDesc: string;\n}\n\nexport interface MerchantPayModeListData {\n payModeList: MerchantPayModeItem[];\n}\n\nexport interface MerchantPayCreateRequest {\n currencyName: string; // USDT | TON | STARS\n amount: number; // 单价/金额\n outTradeNo: string; // 商户订单号\n notifyUrl: string; // 回调地址\n attach: string; // 附加信息\n}\n\nexport interface MerchantPayTransferMessage {\n address: string;\n amount: string;\n payload?: string;\n}\n\nexport interface MerchantPayTransferData {\n validUntil: number;\n messages: MerchantPayTransferMessage[];\n}\n\nexport interface MerchantPayOrderBase {\n orderSn: string;\n transactionSn: string;\n outTradeNo: string;\n price: number | string;\n count: number;\n totalPrice: number | string;\n currencyId: number;\n currencyName: string;\n currencyRate: number;\n currencyAmount: number | string;\n payUrl: string | null;\n payExpireDatetime: string;\n payDatetime: string | null;\n finishDatetime: string | null;\n description: string;\n status: number;\n statusDesc: string;\n closeCode: string | null;\n closeCodeDesc: string | null;\n createDatetime: string;\n updateDatetime: string;\n transferHash: string | null;\n transactionHash: string | null;\n transactionLt: string | null;\n}\n\nexport interface MerchantPayCreateResponseData extends MerchantPayOrderBase {\n transferData: MerchantPayTransferData;\n}\n\nexport interface MerchantPayFinishRequest {\n orderSn: string;\n status: string; // success / failed / cancelled\n transferHash?: string;\n orderId?: string;\n}\n\nexport type MerchantPayFinishResponseData = MerchantPayOrderBase;\n\nexport interface MerchantPayQueryResultRequest {\n orderSn?: string;\n outTradeNo?: string;\n}\n\nexport type MerchantPayQueryResultResponseData = MerchantPayOrderBase;\n\nexport type MerchantPayNotifyRequest = MerchantPayOrderBase;\n\nexport interface TonWalletProvider {\n isConnected: () => boolean;\n connect: () => Promise<boolean>;\n disconnect: () => Promise<boolean>;\n sendTonTransaction: (\n transferData: MerchantPayTransferData\n ) => Promise<TonTransactionResult>;\n sendUsdtTransaction: (\n transferData: MerchantPayTransferData\n ) => Promise<TonTransactionResult>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,sEAAoD,CAAA;IACpD,sEAAoD,CAAA;IACpD,8DAA4C,CAAA;AAC9C,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB","sourcesContent":["export enum AdPositionName {\r\n GameRewardedAdPosition = \"game_rewarded_ad_position\",\r\n TaskRewardedAdPosition = \"task_rewarded_ad_position\",\r\n TaskListAdPosition = \"task_list_ad_position\",\r\n}\r\n\r\nexport interface TelegramUserUnsafeInitData {\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface TelegramUserInfo {\r\n user: {\r\n id: number;\r\n firstName?: string;\r\n lastName?: string;\r\n username?: string;\r\n photoUrl?: string;\r\n languageCode?: string;\r\n allowsWriteToPm?: boolean;\r\n isPremium?: boolean;\r\n };\r\n authDate?: number;\r\n hash?: string;\r\n startParam?: string;\r\n chatType?: string;\r\n chatInstance?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface SDKInitOptions {\r\n /** 自定义用户信息(可选) */\r\n customUser?: TelegramUserInfo;\r\n /** 本地存储 Key 前缀,避免冲突 */\r\n storageKeyPrefix?: string;\r\n /** 自定义接口地址(可选)。不传则使用默认正式环境 */\r\n baseURL?: string;\r\n /** 可选:回调校验用 */\r\n appId?: string;\r\n /** 可选:SDK 初始化鉴权成功后的服务端回调地址 */\r\n notifyUrl?: string;\r\n /** 可选:TON Connect manifest 文件地址;未传则使用默认测试清单 */\r\n tonConnectManifestUrl?: string;\r\n}\r\n\r\nexport interface AuthResponseData {\r\n token: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface APIResponse<T> {\r\n code: number;\r\n msg: string;\r\n timestamp?: number;\r\n datetime?: string;\r\n data: T;\r\n}\r\n\r\nexport interface AdConfigItem {\r\n id: number;\r\n adTypeId: number;\r\n adPlatformId: number;\r\n title: string;\r\n name: string;\r\n spaceId: string;\r\n rewardRate: number;\r\n payout: number;\r\n description?: string | null;\r\n status: number;\r\n enable: number;\r\n createDatetime: string;\r\n updateDatetime: string;\r\n adId: number;\r\n adPositionId: number;\r\n adPositionName: string;\r\n adPositionTitle: string;\r\n rank: number;\r\n adPlatformName: string; // e.g., monetag\r\n adPlatformTitle: string; // e.g., Monetag\r\n appId?: string | null;\r\n appSecret?: string | null;\r\n appUrl?: string | null;\r\n adPlatformConfig?: unknown | null;\r\n adTypeName: string; // e.g., interstitial_ad | popup_ad | inapp\r\n adTypeTitle: string;\r\n adRewardAmount?: number;\r\n}\r\n\r\nexport interface CreateAdParams {\r\n adId: number;\r\n adPositionId: number;\r\n tournamentId?: number;\r\n groupId?: number;\r\n}\r\n\r\nexport interface BindWalletResponseData {\r\n id: number;\r\n authId: number;\r\n authHash: string;\r\n authDatetime: string;\r\n chatInstance: string;\r\n firstName: string;\r\n lastName: string;\r\n username: string;\r\n nickname: string | null;\r\n allowsWritePm: number;\r\n languageCode: string;\r\n isPremiumUser: number;\r\n avatarUrl: string | null;\r\n email: string | null;\r\n phone: string | null;\r\n referrerId: number | null;\r\n referrerAuthId: number | null;\r\n walletAddress: string;\r\n usdtWalletAddress: string;\r\n points: number;\r\n buyContribution: number;\r\n revenuesContribution: number;\r\n taskContribution: number;\r\n status: number;\r\n enable: number;\r\n}\r\n\r\nexport interface AdResponseData {\r\n id: number;\r\n adTypeId: number;\r\n adPlatformId: number;\r\n title: string;\r\n name: string;\r\n spaceId: string;\r\n rewardRate: number;\r\n payout: number;\r\n description?: string | null;\r\n status: number;\r\n enable: number;\r\n createDatetime: string;\r\n updateDatetime: string;\r\n adShowId: string;\r\n start?: string[];\r\n show?: string[];\r\n error?: string[];\r\n close?: string[];\r\n reward?: string[];\r\n}\r\n\r\nexport interface MonitorUrls {\r\n start?: string[];\r\n show?: string[];\r\n error?: string[];\r\n close?: string[];\r\n reward?: string[];\r\n}\r\n\r\n// 新增:广告展示回调接口,供 SDK 用户可选传入\r\nexport interface AdCallbacks {\r\n onSuccess?: (result?: unknown) => void | Promise<void>;\r\n onError?: (error: unknown) => void | Promise<void>;\r\n}\r\n\r\nexport interface BindWalletReq {\r\n wallet: string;\r\n forceBind: boolean;\r\n}\r\n\r\nexport interface TonTransactionResult {\r\n transferHash?: string;\r\n boc?: string;\r\n raw?: unknown;\r\n}\r\n\r\nexport interface MerchantPayModeItem {\r\n id: number;\r\n title: string;\r\n name: string; // USDT | TON | STARS\r\n rate: number;\r\n nameDesc: string;\r\n}\r\n\r\nexport interface MerchantPayModeListData {\r\n payModeList: MerchantPayModeItem[];\r\n}\r\n\r\nexport interface MerchantPayCreateRequest {\r\n currencyName: string; // USDT | TON | STARS\r\n amount: number; // 单价/金额\r\n outTradeNo: string; // 商户订单号\r\n notifyUrl: string; // 回调地址\r\n attach: string; // 附加信息\r\n}\r\n\r\nexport interface MerchantPayTransferMessage {\r\n address: string;\r\n amount: string;\r\n payload?: string;\r\n}\r\n\r\nexport interface MerchantPayTransferData {\r\n validUntil: number;\r\n messages: MerchantPayTransferMessage[];\r\n}\r\n\r\nexport interface MerchantPayOrderBase {\r\n orderSn: string;\r\n transactionSn: string;\r\n outTradeNo: string;\r\n price: number | string;\r\n count: number;\r\n totalPrice: number | string;\r\n currencyId: number;\r\n currencyName: string;\r\n currencyRate: number;\r\n currencyAmount: number | string;\r\n payUrl: string | null;\r\n payExpireDatetime: string;\r\n payDatetime: string | null;\r\n finishDatetime: string | null;\r\n description: string;\r\n status: number;\r\n statusDesc: string;\r\n closeCode: string | null;\r\n closeCodeDesc: string | null;\r\n createDatetime: string;\r\n updateDatetime: string;\r\n transferHash: string | null;\r\n transactionHash: string | null;\r\n transactionLt: string | null;\r\n}\r\n\r\nexport interface MerchantPayCreateResponseData extends MerchantPayOrderBase {\r\n transferData: MerchantPayTransferData;\r\n}\r\n\r\nexport interface MerchantPayFinishRequest {\r\n orderSn: string;\r\n status: string; // success / failed / cancelled\r\n transferHash?: string;\r\n orderId?: string;\r\n}\r\n\r\nexport type MerchantPayFinishResponseData = MerchantPayOrderBase;\r\n\r\nexport interface MerchantPayQueryResultRequest {\r\n orderSn?: string;\r\n outTradeNo?: string;\r\n}\r\n\r\nexport type MerchantPayQueryResultResponseData = MerchantPayOrderBase;\r\n\r\nexport type MerchantPayNotifyRequest = MerchantPayOrderBase;\r\n\r\nexport interface TonWalletProvider {\r\n isConnected: () => boolean;\r\n connect: () => Promise<boolean>;\r\n disconnect: () => Promise<boolean>;\r\n sendTonTransaction: (\r\n transferData: MerchantPayTransferData\r\n ) => Promise<TonTransactionResult>;\r\n sendUsdtTransaction: (\r\n transferData: MerchantPayTransferData\r\n ) => Promise<TonTransactionResult>;\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hm-tracking-sdk",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "private": false,
5
5
  "description": "Telegram tracking SDK for Web/Miniapp with TON/Stars payment integration.",
6
6
  "license": "MIT",