@wps-agent/wps-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.
Files changed (37) hide show
  1. package/dist/api/client.d.ts +374 -0
  2. package/dist/api/client.d.ts.map +1 -0
  3. package/dist/api/client.js +566 -0
  4. package/dist/api/client.js.map +1 -0
  5. package/dist/auth/providers/base.d.ts +23 -0
  6. package/dist/auth/providers/base.d.ts.map +1 -0
  7. package/dist/auth/providers/base.js +43 -0
  8. package/dist/auth/providers/base.js.map +1 -0
  9. package/dist/auth/providers/wps.d.ts +108 -0
  10. package/dist/auth/providers/wps.d.ts.map +1 -0
  11. package/dist/auth/providers/wps.js +242 -0
  12. package/dist/auth/providers/wps.js.map +1 -0
  13. package/dist/auth/server.d.ts +50 -0
  14. package/dist/auth/server.d.ts.map +1 -0
  15. package/dist/auth/server.js +251 -0
  16. package/dist/auth/server.js.map +1 -0
  17. package/dist/auth/storage/file.d.ts +70 -0
  18. package/dist/auth/storage/file.d.ts.map +1 -0
  19. package/dist/auth/storage/file.js +120 -0
  20. package/dist/auth/storage/file.js.map +1 -0
  21. package/dist/auth/storage/interface.d.ts +14 -0
  22. package/dist/auth/storage/interface.d.ts.map +1 -0
  23. package/dist/auth/storage/interface.js +5 -0
  24. package/dist/auth/storage/interface.js.map +1 -0
  25. package/dist/index.d.ts +16 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +17 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/types/api-client.d.ts +229 -0
  30. package/dist/types/api-client.d.ts.map +1 -0
  31. package/dist/types/api-client.js +7 -0
  32. package/dist/types/api-client.js.map +1 -0
  33. package/dist/types/index.d.ts +5 -0
  34. package/dist/types/index.d.ts.map +1 -0
  35. package/dist/types/index.js +7 -0
  36. package/dist/types/index.js.map +1 -0
  37. package/package.json +53 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Token 持久化存储
3
+ *
4
+ * 支持文件存储,确保进程重启后 token 不会丢失
5
+ */
6
+ export interface TokenStorage {
7
+ get(key: string): Promise<any>;
8
+ set(key: string, token: any): Promise<void>;
9
+ delete(key: string): Promise<void>;
10
+ clear(): Promise<void>;
11
+ keys?(): Promise<string[]>;
12
+ }
13
+ export interface FileTokenStorageOptions {
14
+ /**
15
+ * 存储文件路径,默认: ~/.wps-agent/tokens.json
16
+ */
17
+ filePath?: string;
18
+ }
19
+ /**
20
+ * 基于文件的 Token 存储
21
+ */
22
+ export declare class FileTokenStorage implements TokenStorage {
23
+ private filePath;
24
+ private memoryCache;
25
+ private initialized;
26
+ constructor(options?: FileTokenStorageOptions);
27
+ /**
28
+ * 确保存储目录存在
29
+ */
30
+ private ensureDirectory;
31
+ /**
32
+ * 加载数据到内存缓存
33
+ */
34
+ private loadFromFile;
35
+ /**
36
+ * 保存内存缓存到文件
37
+ */
38
+ private saveToFile;
39
+ /**
40
+ * 保存 token
41
+ */
42
+ set(key: string, token: any): Promise<void>;
43
+ /**
44
+ * 获取 token
45
+ */
46
+ get(key: string): Promise<any>;
47
+ /**
48
+ * 删除 token
49
+ */
50
+ delete(key: string): Promise<void>;
51
+ /**
52
+ * 清空所有 token
53
+ */
54
+ clear(): Promise<void>;
55
+ /**
56
+ * 获取所有 token 的键
57
+ */
58
+ keys(): Promise<string[]>;
59
+ }
60
+ /**
61
+ * 内存 Token 存储(仅用于测试或不希望持久化的场景)
62
+ */
63
+ export declare class MemoryTokenStorage implements TokenStorage {
64
+ private cache;
65
+ set(key: string, token: any): Promise<void>;
66
+ get(key: string): Promise<any>;
67
+ delete(key: string): Promise<void>;
68
+ clear(): Promise<void>;
69
+ }
70
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/auth/storage/file.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,GAAE,uBAA4B;IAIjD;;OAEG;YACW,eAAe;IAS7B;;OAEG;YACW,YAAY;IAwB1B;;OAEG;YACW,UAAU;IAMxB;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAKpC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAIhC;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,KAAK,CAA+B;IAEtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Token 持久化存储
3
+ *
4
+ * 支持文件存储,确保进程重启后 token 不会丢失
5
+ */
6
+ import { readFile, writeFile, mkdir, access } from 'fs/promises';
7
+ import { dirname, join } from 'path';
8
+ import { homedir } from 'os';
9
+ /**
10
+ * 基于文件的 Token 存储
11
+ */
12
+ export class FileTokenStorage {
13
+ filePath;
14
+ memoryCache = new Map();
15
+ initialized = false;
16
+ constructor(options = {}) {
17
+ this.filePath = options.filePath || join(homedir(), '.wps-agent', 'tokens.json');
18
+ }
19
+ /**
20
+ * 确保存储目录存在
21
+ */
22
+ async ensureDirectory() {
23
+ const dir = dirname(this.filePath);
24
+ try {
25
+ await access(dir);
26
+ }
27
+ catch {
28
+ await mkdir(dir, { recursive: true });
29
+ }
30
+ }
31
+ /**
32
+ * 加载数据到内存缓存
33
+ */
34
+ async loadFromFile() {
35
+ if (this.initialized)
36
+ return;
37
+ try {
38
+ await this.ensureDirectory();
39
+ const data = await readFile(this.filePath, 'utf-8');
40
+ const parsed = JSON.parse(data);
41
+ // 转换 expiresAt 为数字(JSON 解析后可能变成字符串)
42
+ for (const [key, token] of Object.entries(parsed)) {
43
+ const tokenData = token;
44
+ this.memoryCache.set(key, {
45
+ ...tokenData,
46
+ expiresAt: typeof tokenData.expiresAt === 'string' ? parseInt(tokenData.expiresAt, 10) : tokenData.expiresAt,
47
+ });
48
+ }
49
+ }
50
+ catch (error) {
51
+ // 文件不存在或解析错误,使用空缓存
52
+ this.memoryCache.clear();
53
+ }
54
+ this.initialized = true;
55
+ }
56
+ /**
57
+ * 保存内存缓存到文件
58
+ */
59
+ async saveToFile() {
60
+ await this.ensureDirectory();
61
+ const data = Object.fromEntries(this.memoryCache.entries());
62
+ await writeFile(this.filePath, JSON.stringify(data, null, 2), 'utf-8');
63
+ }
64
+ /**
65
+ * 保存 token
66
+ */
67
+ async set(key, token) {
68
+ await this.loadFromFile();
69
+ this.memoryCache.set(key, token);
70
+ await this.saveToFile();
71
+ }
72
+ /**
73
+ * 获取 token
74
+ */
75
+ async get(key) {
76
+ await this.loadFromFile();
77
+ return this.memoryCache.get(key) || null;
78
+ }
79
+ /**
80
+ * 删除 token
81
+ */
82
+ async delete(key) {
83
+ await this.loadFromFile();
84
+ this.memoryCache.delete(key);
85
+ await this.saveToFile();
86
+ }
87
+ /**
88
+ * 清空所有 token
89
+ */
90
+ async clear() {
91
+ this.memoryCache.clear();
92
+ await this.saveToFile();
93
+ }
94
+ /**
95
+ * 获取所有 token 的键
96
+ */
97
+ async keys() {
98
+ await this.loadFromFile();
99
+ return Array.from(this.memoryCache.keys());
100
+ }
101
+ }
102
+ /**
103
+ * 内存 Token 存储(仅用于测试或不希望持久化的场景)
104
+ */
105
+ export class MemoryTokenStorage {
106
+ cache = new Map();
107
+ async set(key, token) {
108
+ this.cache.set(key, token);
109
+ }
110
+ async get(key) {
111
+ return this.cache.get(key) || null;
112
+ }
113
+ async delete(key) {
114
+ this.cache.delete(key);
115
+ }
116
+ async clear() {
117
+ this.cache.clear();
118
+ }
119
+ }
120
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/auth/storage/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Token Storage Interface
3
+ */
4
+ export interface StoredToken {
5
+ access_token: string;
6
+ refresh_token?: string;
7
+ expires_at: number;
8
+ }
9
+ export interface TokenStorage {
10
+ get(key: string): Promise<StoredToken | null>;
11
+ set(key: string, token: StoredToken): Promise<void>;
12
+ delete(key: string): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/auth/storage/interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Token Storage Interface
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/auth/storage/interface.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * WPS SDK
3
+ *
4
+ * TypeScript SDK for WPS 365 OpenAPI
5
+ */
6
+ export { WpsApiClient } from './api/client.js';
7
+ export type { WpsApiClientConfig } from './api/client.js';
8
+ export type { IWpsApiClient, Block, FileUploadResponse, BlocksResponse, DriveInfo, DriveQuota, DrivesResponse, SearchFilesResponse } from './types/api-client.js';
9
+ export { WpsAuthProvider } from './auth/providers/wps.js';
10
+ export { BaseOAuth2Provider } from './auth/providers/base.js';
11
+ export type { WpsAuthProviderOptions, WpsOAuth2Config } from './auth/providers/wps.js';
12
+ export { FileTokenStorage, MemoryTokenStorage } from './auth/storage/file.js';
13
+ export type { TokenStorage, FileTokenStorageOptions } from './auth/storage/file.js';
14
+ export { OAuthCallbackServer, OAuthServerOptions } from './auth/server.js';
15
+ export * from './types/index.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGlK,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * WPS SDK
3
+ *
4
+ * TypeScript SDK for WPS 365 OpenAPI
5
+ */
6
+ // API Client
7
+ export { WpsApiClient } from './api/client.js';
8
+ // Auth Providers
9
+ export { WpsAuthProvider } from './auth/providers/wps.js';
10
+ export { BaseOAuth2Provider } from './auth/providers/base.js';
11
+ // Token Storage
12
+ export { FileTokenStorage, MemoryTokenStorage } from './auth/storage/file.js';
13
+ // OAuth Server
14
+ export { OAuthCallbackServer } from './auth/server.js';
15
+ // Types
16
+ export * from './types/index.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG9E,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAE3E,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * WpsApiClient Interface and Types
3
+ *
4
+ * Defines the API contract and related types for WPS API client
5
+ */
6
+ /**
7
+ * Document block type (actual API response structure)
8
+ */
9
+ export interface Block {
10
+ [key: string]: unknown;
11
+ id?: string;
12
+ type: string;
13
+ content?: unknown;
14
+ attrs?: Record<string, unknown>;
15
+ }
16
+ /**
17
+ * File upload response
18
+ */
19
+ export interface FileUploadResponse {
20
+ id: string;
21
+ name: string;
22
+ linkUrl?: string;
23
+ [key: string]: unknown;
24
+ }
25
+ /**
26
+ * Blocks response
27
+ */
28
+ export interface BlocksResponse {
29
+ blocks?: Block[];
30
+ version?: number;
31
+ [key: string]: unknown;
32
+ }
33
+ /**
34
+ * Drive quota info
35
+ */
36
+ export interface DriveQuota {
37
+ used: number;
38
+ total: number;
39
+ }
40
+ /**
41
+ * Drive info
42
+ */
43
+ export interface DriveInfo {
44
+ id: string;
45
+ name: string;
46
+ status: string;
47
+ type?: string;
48
+ quota: DriveQuota;
49
+ [key: string]: unknown;
50
+ }
51
+ /**
52
+ * Drives list response
53
+ */
54
+ export interface DrivesResponse {
55
+ drives?: DriveInfo[];
56
+ [key: string]: unknown;
57
+ }
58
+ /**
59
+ * Search files response
60
+ */
61
+ export interface SearchFilesResponse {
62
+ files?: Array<{
63
+ id: string;
64
+ name: string;
65
+ linkUrl: string;
66
+ parentId: string;
67
+ type: string;
68
+ [key: string]: unknown;
69
+ }>;
70
+ [key: string]: unknown;
71
+ }
72
+ /**
73
+ * WpsApiClient Interface
74
+ *
75
+ * Defines all methods that the API client implements (matches actual implementation)
76
+ */
77
+ export interface IWpsApiClient {
78
+ getDrives(options: {
79
+ pageSize?: number;
80
+ }): Promise<DrivesResponse>;
81
+ createFile(options: {
82
+ driveId: string;
83
+ parentId: string;
84
+ name: string;
85
+ fileType: string;
86
+ }): Promise<FileUploadResponse>;
87
+ deleteFile(driveId: string, fileId: string): Promise<void>;
88
+ searchFiles(params: {
89
+ keyword?: string;
90
+ type?: 'file_name' | 'content' | 'all';
91
+ pageSize?: number;
92
+ pageToken?: string;
93
+ fileType?: 'folder' | 'file' | 'shortcut';
94
+ withTotal?: boolean;
95
+ }): Promise<{
96
+ files: Array<{
97
+ id: string;
98
+ name: string;
99
+ linkUrl: string;
100
+ [key: string]: unknown;
101
+ }>;
102
+ total?: number;
103
+ [key: string]: unknown;
104
+ }>;
105
+ getBlocks(fileId: string, arg?: {
106
+ blockId?: string;
107
+ }): Promise<{
108
+ blocks: Block[];
109
+ version: number;
110
+ }>;
111
+ convertBlocks(fileId: string, arg: {
112
+ format: 'markdown' | 'html';
113
+ content: string;
114
+ }): Promise<Array<Record<string, unknown>>>;
115
+ createBlocks(fileId: string, arg: {
116
+ blockId: string;
117
+ index?: number;
118
+ content: Array<Record<string, unknown>>;
119
+ }): Promise<{
120
+ blockId: string;
121
+ version: number;
122
+ }>;
123
+ updateBlocks(fileId: string, arg: {
124
+ [key: string]: unknown;
125
+ operation: string;
126
+ blockId: string;
127
+ }): Promise<{
128
+ version: number;
129
+ blocks: Array<Record<string, unknown>>;
130
+ }>;
131
+ deleteBlocks(fileId: string, arg: {
132
+ blockId: string;
133
+ startIndex: number;
134
+ endIndex: number;
135
+ }): Promise<{
136
+ blockId: string;
137
+ version: number;
138
+ }>;
139
+ batchUpdateBlocks(fileId: string, arg: {
140
+ [key: string]: unknown;
141
+ operation: string;
142
+ blockId: string;
143
+ }[]): Promise<{
144
+ version: number;
145
+ blocks: Array<Record<string, unknown>>;
146
+ }>;
147
+ batchDeleteBlocks(fileId: string, args: Array<{
148
+ blockId: string;
149
+ startIndex: number;
150
+ endIndex: number;
151
+ }>): Promise<Array<{
152
+ blockId: string;
153
+ version: number;
154
+ }>>;
155
+ uploadAttachment(fileId: string, file: File | Buffer, fileName?: string, onProgress?: (progress: number) => void): Promise<{
156
+ attachmentId: string;
157
+ fileId: string;
158
+ fileName: string;
159
+ }>;
160
+ commitAttachmentUpload(params: {
161
+ fileId: string;
162
+ key: string;
163
+ uploadId: string;
164
+ fileName: string;
165
+ fileSize: number;
166
+ etag?: string;
167
+ }): Promise<{
168
+ attachmentId: string;
169
+ fileId: string;
170
+ fileName: string;
171
+ }>;
172
+ uploadImage(fileId: string, file: File | Buffer, fileName?: string, onProgress?: (progress: number) => void): Promise<{
173
+ attachmentId: string;
174
+ fileId: string;
175
+ fileName: string;
176
+ }>;
177
+ getAttachments(fileId: string): Promise<Array<{
178
+ id: string;
179
+ fileName: string;
180
+ fileSize: number;
181
+ fileType: string;
182
+ downloadUrl: string;
183
+ createdAt: number;
184
+ }>>;
185
+ listFiles(driveId: string, parentId: string, params?: {
186
+ pageSize?: number;
187
+ pageToken?: string;
188
+ fileType?: 'folder' | 'file' | 'shortcut';
189
+ orderBy?: string;
190
+ orderByAsc?: boolean;
191
+ }): Promise<{
192
+ files: Array<{
193
+ id: string;
194
+ name: string;
195
+ linkUrl: string;
196
+ [key: string]: unknown;
197
+ }>;
198
+ [key: string]: unknown;
199
+ }>;
200
+ copyFile(params: {
201
+ driveId: string;
202
+ fileId: string;
203
+ targetDriveId: string;
204
+ targetParentId: string;
205
+ onNameConflict?: 'fail' | 'rename' | 'overwrite';
206
+ }): Promise<{
207
+ id: string;
208
+ linkId: string;
209
+ linkUrl: string;
210
+ name: string;
211
+ }>;
212
+ moveFile(params: {
213
+ driveId: string;
214
+ fileId: string;
215
+ targetDriveId: string;
216
+ targetParentId: string;
217
+ onNameConflict?: 'fail' | 'rename' | 'overwrite';
218
+ }): Promise<{
219
+ id: string;
220
+ linkId: string;
221
+ linkUrl: string;
222
+ name: string;
223
+ }>;
224
+ renameFile(driveId: string, fileId: string, newName: string): Promise<{
225
+ id: string;
226
+ name: string;
227
+ }>;
228
+ }
229
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/types/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WpsApiClient Interface and Types
3
+ *
4
+ * Defines the API contract and related types for WPS API client
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/types/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * WPS SDK Types
3
+ */
4
+ export * from '@wps-agent/shared';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WPS SDK Types
3
+ */
4
+ // Re-export from shared
5
+ export * from '@wps-agent/shared';
6
+ // TODO: Add WPS-specific types
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAElC,+BAA+B"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@wps-agent/wps-sdk",
3
+ "version": "1.0.0",
4
+ "description": "WPS OpenAPI SDK - TypeScript client for WPS 365 APIs",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./types": {
14
+ "import": "./dist/types/index.js",
15
+ "types": "./dist/types/index.d.ts"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsc --watch",
25
+ "typecheck": "tsc --noEmit",
26
+ "test": "vitest",
27
+ "lint": "eslint src/**/*.ts",
28
+ "clean": "rm -rf dist",
29
+ "prepublishOnly": "npm run build"
30
+ },
31
+ "keywords": [
32
+ "wps",
33
+ "wps365",
34
+ "openapi",
35
+ "sdk",
36
+ "typescript"
37
+ ],
38
+ "author": "",
39
+ "license": "MIT",
40
+ "dependencies": {
41
+ "@wps-agent/shared": "^1.0.0",
42
+ "zod": "^3.22.4"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^20.11.20",
46
+ "typescript": "^5.3.3",
47
+ "vitest": "^1.3.1"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public",
51
+ "registry": "https://registry.npmjs.org/"
52
+ }
53
+ }