@iflyrpa/actions 1.2.27 → 1.2.29

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.
Files changed (64) hide show
  1. package/dist/actions/baijiahaoLogin/index.d.ts +5 -0
  2. package/dist/actions/baijiahaoLogin/rpa-server.d.ts +2 -0
  3. package/dist/actions/baijiahaoLogin/rpa.d.ts +2 -0
  4. package/dist/actions/baijiahaoPublish/index.d.ts +1 -0
  5. package/dist/actions/common/FansTool/index.d.ts +1 -1
  6. package/dist/actions/common/sessionCheck/index.d.ts +32 -8
  7. package/dist/actions/getBaijiaohaoConfig/index.d.ts +9 -7
  8. package/dist/actions/getXhsCollection/index.d.ts +17 -21
  9. package/dist/actions/getXhsGroup/index.d.ts +9 -7
  10. package/dist/actions/getXhsWebUnreadCount/index.d.ts +12 -0
  11. package/dist/actions/searchAccountInfo/getBjhInfo.d.ts +3 -2
  12. package/dist/actions/searchAccountInfo/getTTInfo.d.ts +3 -2
  13. package/dist/actions/searchAccountInfo/getWxInfo.d.ts +3 -2
  14. package/dist/actions/searchAccountInfo/getXhsInfo.d.ts +4 -3
  15. package/dist/actions/searchAccountInfo/index.d.ts +33 -6
  16. package/dist/actions/searchAccountInfo/types.d.ts +43 -38
  17. package/dist/actions/searchBjhUserArticle/index.d.ts +7 -0
  18. package/dist/actions/searchPublishInfo/handleBjhData.d.ts +4 -3
  19. package/dist/actions/searchPublishInfo/handleTTData.d.ts +3 -2
  20. package/dist/actions/searchPublishInfo/handleWXData.d.ts +4 -3
  21. package/dist/actions/searchPublishInfo/handleXhsData.d.ts +4 -3
  22. package/dist/actions/searchPublishInfo/index.d.ts +37 -14
  23. package/dist/actions/searchPublishInfo/types.d.ts +108 -47
  24. package/dist/actions/searchWeixinAccountCard/index.d.ts +18 -0
  25. package/dist/actions/searchWeixinUserArticle/index.d.ts +8 -0
  26. package/dist/actions/searchXhsWebConnections/index.d.ts +36 -0
  27. package/dist/actions/searchXhsWebLike/index.d.ts +73 -0
  28. package/dist/actions/searchXhsWebMentions/index.d.ts +72 -0
  29. package/dist/actions/searchXiaohongshuUserArticle/index.d.ts +7 -0
  30. package/dist/actions/toutiaoLogin/index.d.ts +5 -0
  31. package/dist/actions/toutiaoLogin/rpa-server.d.ts +2 -0
  32. package/dist/actions/toutiaoLogin/rpa.d.ts +2 -0
  33. package/dist/actions/toutiaoPublish/index.d.ts +1 -0
  34. package/dist/actions/weixinLogin/index.d.ts +5 -0
  35. package/dist/actions/weixinLogin/rpa-server.d.ts +2 -0
  36. package/dist/actions/weixinLogin/rpa.d.ts +2 -0
  37. package/dist/actions/weixinPublish/index.d.ts +2 -1
  38. package/dist/actions/xiaohongshuLogin/index.d.ts +5 -0
  39. package/dist/actions/xiaohongshuLogin/rpa-server.d.ts +2 -0
  40. package/dist/actions/xiaohongshuLogin/rpa.d.ts +2 -0
  41. package/dist/actions/xiaohongshuPublish/index.d.ts +101 -35
  42. package/dist/actions/xiaohongshuPublish/mock.d.ts +1 -1
  43. package/dist/actions/xiaohongshuPublish/rpa-server-mock.d.ts +2 -0
  44. package/dist/actions/xiaohongshuPublish/rpa-server.d.ts +2 -0
  45. package/dist/actions/xiaohongshuWebCommentAction/index.d.ts +14 -0
  46. package/dist/actions/xiaohongshuWebIntimacySearch/index.d.ts +13 -0
  47. package/dist/actions/xiaohongshuWebMsgRead/index.d.ts +12 -0
  48. package/dist/actions/xiaohongshuWebMsgReply/index.d.ts +47 -0
  49. package/dist/actions/xiaohongshuWebNoteFeed/index.d.ts +19 -0
  50. package/dist/actions/xiaohongshuWebRelationAction/index.d.ts +17 -0
  51. package/dist/actions/xiaohongshuWebSearch/index.d.ts +62 -0
  52. package/dist/bundle.js +20788 -8601
  53. package/dist/bundle.js.map +1 -1
  54. package/dist/index.d.ts +196 -20
  55. package/dist/index.js +11862 -5505
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.mjs +10940 -4603
  58. package/dist/index.mjs.map +1 -1
  59. package/dist/types.d.ts +56 -15
  60. package/dist/utils/http.d.ts +7 -5
  61. package/dist/utils/index.d.ts +2 -2
  62. package/dist/utils/proxy.d.ts +8 -1
  63. package/dist/utils/xhsXsEncrypt.d.ts +201 -17
  64. package/package.json +6 -3
package/dist/types.d.ts CHANGED
@@ -1,19 +1,63 @@
1
- import type { CookiesSetDetails } from "@iflyrpa/share";
1
+ import { LoggerImplement } from "@iflyrpa/share";
2
+ import type { CreateAxiosDefaults } from "axios";
3
+ import { z } from "zod";
2
4
  declare module "axios" {
3
5
  interface AxiosRequestConfig {
4
6
  defaultErrorMsg?: string;
5
7
  }
6
8
  }
7
- export interface ActiomCommonParams {
8
- url?: string;
9
- cookies: Partial<CookiesSetDetails>[];
10
- actionType?: "mockApi" | "rpa";
11
- readonly articleId?: string;
12
- readonly saveType?: string;
9
+ export declare const ActionCommonParamsSchema: z.ZodObject<{
10
+ url: z.ZodOptional<z.ZodString>;
11
+ cookies: z.ZodArray<z.ZodObject<{
12
+ name: z.ZodString;
13
+ value: z.ZodString;
14
+ domain: z.ZodOptional<z.ZodString>;
15
+ path: z.ZodOptional<z.ZodString>;
16
+ expires: z.ZodOptional<z.ZodNumber>;
17
+ httpOnly: z.ZodOptional<z.ZodBoolean>;
18
+ secure: z.ZodOptional<z.ZodBoolean>;
19
+ }, z.core.$catchall<z.ZodUnknown>>>;
20
+ actionType: z.ZodOptional<z.ZodEnum<{
21
+ mockApi: "mockApi";
22
+ rpa: "rpa";
23
+ server: "server";
24
+ }>>;
25
+ accountId: z.ZodOptional<z.ZodNumber>;
26
+ proxyLoc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
27
+ localIP: z.ZodOptional<z.ZodString>;
28
+ huiwenToken: z.ZodOptional<z.ZodString>;
29
+ articleId: z.ZodOptional<z.ZodString>;
30
+ saveType: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export type ActiomCommonParams = z.infer<typeof ActionCommonParamsSchema>;
33
+ export type AxiosProxyParams = [
34
+ CreateAxiosDefaults,
35
+ LoggerImplement?,
36
+ (string | null | undefined)?,
37
+ string?,
38
+ number?
39
+ ];
40
+ export interface ActionParams extends ActiomCommonParams {
41
+ id?: string;
42
+ }
43
+ export declare enum ExecutionState {
44
+ RUNNING = "RUNNING",
45
+ SCAN_WAITING = "SCAN_WAITING",
46
+ SCANNED = "SCANNED",
47
+ CONFIRMED = "CONFIRMED",
48
+ SUCCESS = "SUCCESS",
49
+ TIMEOUT = "TIMEOUT",
50
+ BROWSER_CLOSED = "BROWSER_CLOSED",
51
+ FAILED = "FAILED"
52
+ }
53
+ export interface FansDetail {
54
+ following: number | null;
55
+ fans_count: number | null;
56
+ digg_count: number | null;
57
+ description: string;
13
58
  }
14
59
  export declare namespace Weixin {
15
- interface FansCount {
16
- fans_count: number | null;
60
+ interface FansCount extends FansDetail {
17
61
  }
18
62
  interface WeiXinCropResult {
19
63
  cdnurl: string;
@@ -23,13 +67,11 @@ export declare namespace Weixin {
23
67
  }
24
68
  }
25
69
  export declare namespace BaiJiaHao {
26
- interface FansCount {
27
- fans_count: number | null;
70
+ interface FansCount extends FansDetail {
28
71
  }
29
72
  }
30
73
  export declare namespace Toutiao {
31
- interface FansCount {
32
- fans_count: number | null;
74
+ interface FansCount extends FansDetail {
33
75
  }
34
76
  interface Topic {
35
77
  concern_id: string;
@@ -78,8 +120,7 @@ export declare namespace Toutiao {
78
120
  }
79
121
  }
80
122
  export declare namespace Xiaohongshu {
81
- interface FansCount {
82
- fans_count: number | null;
123
+ interface FansCount extends FansDetail {
83
124
  }
84
125
  interface Topic {
85
126
  id?: string;
@@ -1,15 +1,17 @@
1
- import type { ResponseData } from "@iflyrpa/share";
2
- import { type AxiosResponse, type CreateAxiosDefaults, type AxiosRequestConfig } from "axios";
1
+ import type { LoggerImplement, ResponseData } from "@iflyrpa/share";
2
+ import { type AxiosRequestConfig, type AxiosResponse, type CreateAxiosDefaults } from "axios";
3
3
  export declare class Http {
4
4
  private readonly apiClient;
5
- private readonly adr?;
6
- private readonly heiwenToken?;
5
+ logger?: LoggerImplement;
7
6
  proxyInfo?: string;
7
+ private readonly agentPromise?;
8
8
  static handleApiError(error: unknown): ResponseData;
9
- constructor(config?: CreateAxiosDefaults, adr?: string, huiwenToken?: string);
9
+ constructor(config?: CreateAxiosDefaults, logger?: LoggerImplement, adr?: string | null, ip?: string, accountId?: number);
10
+ clearResponseInterceptors(): void;
10
11
  addResponseInterceptor<T = any>(findError: (response: AxiosResponse<T>) => ResponseData | undefined): void;
11
12
  api<T = any>(config: AxiosRequestConfig, options?: {
12
13
  retries?: number;
13
14
  retryDelay?: number;
15
+ timeout?: number;
14
16
  }): Promise<T>;
15
17
  }
@@ -35,8 +35,8 @@ export declare const extractImgTag: (html: string) => string[];
35
35
  * @param format 默认 yyyy-MM-dd HH:mm
36
36
  * @returns 时间字符串
37
37
  */
38
- export declare class TimeFormatter {
39
- static format(timestamp: number, formatStr?: String): string;
38
+ export declare namespace TimeFormatter {
39
+ function format(timestamp: number, formatStr?: string): string;
40
40
  }
41
41
  export declare const replaceImgSrc: (html: string, callback: (dom: Element) => Element) => string;
42
42
  export declare const stringifyError: (error: unknown) => {} | undefined;
@@ -1,2 +1,9 @@
1
+ import { LoggerImplement } from "@iflyrpa/share";
1
2
  import { HttpsProxyAgent } from "https-proxy-agent";
2
- export declare const ProxyAgent: (adr: string, huiwenToken?: string) => Promise<HttpsProxyAgent<`http://${string}:${string}@${string}`> | null>;
3
+ export declare function ProxyAgent(this: {
4
+ logger?: LoggerImplement;
5
+ }, ip: string, adr?: string | null, accountId?: number, refresh?: boolean): Promise<{
6
+ ip: string;
7
+ port: string;
8
+ agent: HttpsProxyAgent<`http://${string}:${string}`>;
9
+ } | null>;
@@ -1,32 +1,216 @@
1
1
  /**
2
- * 小红书请求客户端封装
2
+ * 小红书请求签名生成工具 TypeScript 版本
3
+ * 完全对应 Python 版本的功能实现
4
+ * 兼容ES5/ES2015版本
3
5
  */
4
- export declare class Xhshow {
5
- private cryptoProcessor;
6
- constructor();
6
+ export declare class CryptoConfig {
7
+ static readonly MAX_32BIT = 4294967295;
8
+ static readonly MAX_SIGNED_32BIT = 2147483647;
9
+ static readonly MAX_BYTE = 255;
10
+ static readonly STANDARD_BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
11
+ static readonly CUSTOM_BASE64_ALPHABET = "ZmserbBoHQtNP+wOcza/LpngG8yJq42KWYj0DSfdikx3VT16IlUAFM97hECvuRX5";
12
+ static readonly X3_BASE64_ALPHABET = "MfgqrsbcyzPQRStuvC7mn501HIJBo2DEFTKdeNOwxWXYZap89+/A4UVLhijkl63G";
13
+ static readonly HEX_KEY = "71a302257793271ddd273bcee3e4b98d9d7935e1da33f5765e2ea8afb6dc77a51a499d23b67c20660025860cbf13d4540d92497f58686c574e508f46e1956344f39139bf4faf22a3eef120b79258145b2feb5193b6478669961298e79bedca646e1a693a926154a5a7a1bd1cf0dedb742f917a747a1e388b234f2277";
14
+ static readonly EXPECTED_HEX_LENGTH = 32;
15
+ static readonly OUTPUT_BYTE_COUNT = 8;
16
+ static readonly HEX_CHUNK_SIZE = 2;
17
+ static readonly VERSION_BYTES: number[];
18
+ static readonly SEQUENCE_VALUE_MIN = 15;
19
+ static readonly SEQUENCE_VALUE_MAX = 50;
20
+ static readonly WINDOW_PROPS_LENGTH_MIN = 900;
21
+ static readonly WINDOW_PROPS_LENGTH_MAX = 1200;
22
+ static readonly CHECKSUM_VERSION = 1;
23
+ static readonly CHECKSUM_XOR_KEY = 115;
24
+ static readonly CHECKSUM_FIXED_TAIL: number[];
25
+ static readonly ENV_FINGERPRINT_XOR_KEY = 41;
26
+ static readonly ENV_FINGERPRINT_TIME_OFFSET_MIN = 10;
27
+ static readonly ENV_FINGERPRINT_TIME_OFFSET_MAX = 50;
28
+ static readonly SIGNATURE_DATA_TEMPLATE: {
29
+ x0: string;
30
+ x1: string;
31
+ x2: string;
32
+ x3: string;
33
+ x4: string;
34
+ };
35
+ static readonly X3_PREFIX = "mns0301_";
36
+ static readonly XYS_PREFIX = "XYS_";
37
+ static readonly HEX_CHARS = "abcdef0123456789";
38
+ static readonly XRAY_TRACE_ID_SEQ_MAX = 8388607;
39
+ static readonly XRAY_TRACE_ID_TIMESTAMP_SHIFT = 23;
40
+ static readonly B3_TRACE_ID_LENGTH = 16;
41
+ static readonly PUBLIC_USERAGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0";
42
+ static readonly SIGNATURE_XSCOMMON_TEMPLATE: {
43
+ s0: number;
44
+ s1: string;
45
+ x0: string;
46
+ x1: string;
47
+ x2: string;
48
+ x3: string;
49
+ x4: string;
50
+ x5: string;
51
+ x6: string;
52
+ x7: string;
53
+ x8: string;
54
+ x9: number;
55
+ x10: number;
56
+ x11: string;
57
+ };
58
+ }
59
+ export declare class BitOperations {
60
+ private config;
61
+ normalizeTo32bit(value: number): number;
62
+ xorTransformArray(inputArray: number[]): Uint8Array;
63
+ private hexStringToBytes;
64
+ }
65
+ export declare class RandomGenerator {
66
+ private config;
67
+ generateRandomBytes(byteCount: number): number[];
68
+ generateRandomByteInRange(minVal: number, maxVal: number): number;
69
+ generateRandomInt(): number;
70
+ generateB3TraceId(): string;
71
+ generateXrayTraceId(timestamp?: number, seq?: number): string;
72
+ }
73
+ export declare class Base64Encoder {
74
+ private config;
75
+ encode(dataToEncode: string): string;
76
+ decode(encodedString: string): string;
77
+ encodeX3(dataBytes: Uint8Array): string;
78
+ decodeX3(encodedString: string): Uint8Array;
79
+ }
80
+ export type HttpMethod = 'GET' | 'POST';
81
+ export declare class RequestSignatureValidator {
82
+ static validateMethod(method: any): HttpMethod;
83
+ static validateUri(uri: any): string;
84
+ static validateA1Value(a1Value: any): string;
85
+ static validateXsecAppid(xsecAppid: any): string;
86
+ static validatePayload(payload: any): Record<string, any> | null;
87
+ }
88
+ export declare class CryptoProcessor {
89
+ config: typeof CryptoConfig;
90
+ bitOps: BitOperations;
91
+ b64encoder: Base64Encoder;
92
+ randomGen: RandomGenerator;
93
+ private intToLeBytes;
94
+ private envFingerprintA;
95
+ private envFingerprintB;
96
+ buildPayloadArray(hexParameter: string, a1Value: string, appIdentifier?: string, stringParam?: string, timestamp?: number): number[];
97
+ }
98
+ export declare class CRC32 {
99
+ private static readonly CRC32_TABLE;
100
+ static crc32JsInt(input: string | number[] | Uint8Array, signed?: boolean): number;
101
+ private static stringToBytes;
102
+ }
103
+ export declare class FingerprintData {
104
+ static readonly GPU_VENDORS: string[];
105
+ static readonly SCREEN_RESOLUTIONS: {
106
+ resolutions: string[];
107
+ weights: number[];
108
+ };
109
+ static readonly COLOR_DEPTH_OPTIONS: {
110
+ values: number[];
111
+ weights: number[];
112
+ };
113
+ static readonly DEVICE_MEMORY_OPTIONS: {
114
+ values: number[];
115
+ weights: number[];
116
+ };
117
+ static readonly CORE_OPTIONS: {
118
+ values: number[];
119
+ weights: number[];
120
+ };
121
+ static readonly BROWSER_PLUGINS = "PDF Viewer,Chrome PDF Viewer,Chromium PDF Viewer,Microsoft Edge PDF Viewer,WebKit built-in PDF";
122
+ static readonly CANVAS_HASH = "742cc32c";
123
+ static readonly VOICE_HASH_OPTIONS = "10311144241322244122";
124
+ static readonly FONTS = "system-ui, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, BlinkMacSystemFont, \"Helvetica Neue\", Arial, \"PingFang SC\", \"PingFang TC\", \"PingFang HK\", \"Microsoft Yahei\", \"Microsoft JhengHei\"";
125
+ }
126
+ export declare class FingerprintHelpers {
7
127
  /**
8
- * 构建内容字符串(用于MD5计算和签名生成)
128
+ * 加权随机选择
9
129
  */
10
- private buildContentString;
130
+ static weightedRandomChoice<T>(options: T[], weights: number[]): T;
11
131
  /**
12
- * 从内容字符串生成d值(MD5哈希)
132
+ * 获取随机渲染器信息
13
133
  */
14
- private generateDValue;
134
+ static getRendererInfo(): {
135
+ vendor: string;
136
+ renderer: string;
137
+ };
15
138
  /**
16
- * 构建签名
139
+ * 获取屏幕配置
17
140
  */
18
- private buildSignature;
141
+ static getScreenConfig(): {
142
+ width: number;
143
+ height: number;
144
+ availWidth: number;
145
+ availHeight: number;
146
+ };
19
147
  /**
20
- * 生成请求签名(支持GET和POST)
148
+ * 生成 Canvas 哈希
21
149
  */
22
- signXs(method: 'GET' | 'POST', uri: string, a1Value: string, xsecAppid?: string, payload?: Record<string, any> | null): string;
150
+ static generateCanvasHash(): string;
23
151
  /**
24
- * 生成GET请求签名(便捷方法)
152
+ * 生成 WebGL 哈希
25
153
  */
26
- signXsGet(uri: string, a1Value: string, xsecAppid?: string, params?: Record<string, any> | null): string;
154
+ static generateWebglHash(): string;
155
+ }
156
+ export declare class ARC4 {
157
+ private s;
158
+ constructor(key: Uint8Array);
27
159
  /**
28
- * 生成POST请求签名(便捷方法)
160
+ * 加密数据
29
161
  */
30
- signXsPost(uri: string, a1Value: string, xsecAppid?: string, payload?: Record<string, any> | null): string;
162
+ encrypt(data: Uint8Array): Uint8Array;
163
+ }
164
+ export declare class FingerprintGenerator {
165
+ private config;
166
+ private b1Key;
167
+ private encoder;
168
+ constructor();
169
+ /**
170
+ * 生成完整的浏览器指纹
171
+ * 完全对应 Python 版本的实现
172
+ */
173
+ generate(cookies: Record<string, any>, userAgent: string): Record<string, any>;
174
+ /**
175
+ * 生成 b1 参数
176
+ * 完全对应 Python 版本的实现
177
+ */
178
+ generateB1(fp: Record<string, any>): string;
179
+ /**
180
+ * 更新指纹
181
+ * 完全对应 Python 版本的实现
182
+ */
183
+ update(fp: Record<string, any>, cookies: Record<string, any>, url: string): void;
184
+ }
185
+ export declare class XsCommonSigner {
186
+ private config;
187
+ private fpGenerator;
188
+ private encoder;
189
+ constructor();
190
+ sign(cookieDict: Record<string, any>): string;
191
+ }
192
+ export declare class Xhshow {
193
+ private cryptoProcessor;
194
+ private xsCommonSigner;
195
+ private buildContentString;
196
+ private generateDValue;
197
+ private buildSignature;
198
+ signXs(method: HttpMethod, uri: string, a1Value: string, xsecAppid?: string, payload?: Record<string, any> | null, timestamp?: number): string;
199
+ signXsGet(uri: string, a1Value: string, xsecAppid?: string, params?: Record<string, any> | null, timestamp?: number): string;
200
+ signXsPost(uri: string, a1Value: string, xsecAppid?: string, payload?: Record<string, any> | null, timestamp?: number): string;
201
+ signXsCommon(cookieDict: Record<string, any> | string): string;
202
+ signXsc(cookieDict: Record<string, any> | string): string;
203
+ private parseCookies;
204
+ signHeaders(method: HttpMethod, uri: string, cookies: Record<string, any> | string, xsecAppid?: string, params?: Record<string, any> | null, payload?: Record<string, any> | null, timestamp?: number): Record<string, string>;
205
+ signHeadersGet(uri: string, cookies: Record<string, any> | string, xsecAppid?: string, params?: Record<string, any> | null, timestamp?: number): Record<string, string>;
206
+ signHeadersPost(uri: string, cookies: Record<string, any> | string, xsecAppid?: string, payload?: Record<string, any> | null, timestamp?: number): Record<string, string>;
207
+ decodeX3(x3Signature: string): Uint8Array;
208
+ decodeXs(xsSignature: string): Record<string, any>;
209
+ getB3TraceId(): string;
210
+ getXrayTraceId(timestamp?: number, seq?: number): string;
211
+ getXT(timestamp?: number): number;
212
+ buildUrl(baseUrl: string, params?: Record<string, any>): string;
213
+ buildJsonBody(payload: Record<string, any>): string;
31
214
  }
32
- export default Xhshow;
215
+ declare const _default: Xhshow;
216
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iflyrpa/actions",
3
- "version": "1.2.27",
3
+ "version": "1.2.29",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -16,11 +16,14 @@
16
16
  "form-data": "^4.0.1",
17
17
  "htmlparser2": "^9.1.0",
18
18
  "mime-types": "^2.1.35",
19
- "@iflyrpa/share": "0.0.15"
19
+ "node-fetch": "^2.7.0",
20
+ "playwright-core": "^1.46.1",
21
+ "@iflyrpa/share": "0.0.16"
20
22
  },
21
23
  "devDependencies": {
22
24
  "@rslib/core": "^0.4.1",
23
- "@types/mime-types": "^2.1.4"
25
+ "@types/mime-types": "^2.1.4",
26
+ "zod": "^4.1.12"
24
27
  },
25
28
  "scripts": {
26
29
  "build": "rslib build",