agentlink-sdk 1.0.0 → 1.0.2

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/dist/index.d.mts CHANGED
@@ -1,17 +1,22 @@
1
- import * as localforage from 'localforage';
2
- import { IOriginStorageClient, IChangeData } from '@agentlink/core';
3
- export { OriginStorage } from '@agentlink/core';
1
+ interface URLData {
2
+ data: any;
3
+ type: string;
4
+ }
5
+ /**
6
+ * 将数据编码为 URL hash
7
+ */
8
+ declare function encodeDataToUrl(data: any, type: string, baseUrl: string): Promise<string>;
9
+ /**
10
+ * 从 URL 中解码数据
11
+ */
12
+ declare function decodeDataFromUrl(urlStr: string): Promise<URLData | null>;
4
13
 
5
14
  interface AgentLinkClientOptions {
6
15
  /**
7
- * 服务端存储页面的 URL
8
- * 例如: 'https://storage.example.com/storage'
16
+ * 服务端验证地址
17
+ * 例如: 'https://agentlink-server.vercel.app'
9
18
  */
10
19
  serverUrl: string;
11
- /**
12
- * localforage 存储配置(可选)
13
- */
14
- storageOptions?: Parameters<typeof localforage.createInstance>[0];
15
20
  }
16
21
  interface WhitelistInfo {
17
22
  domain: string;
@@ -22,96 +27,59 @@ interface WhitelistResponse {
22
27
  origin: string | null;
23
28
  }
24
29
  /**
25
- * AgentLink 客户端 SDK
26
- * 用于跨域访问存储服务
30
+ * AgentLink 客户端 SDK (URL Hash 方案)
27
31
  */
28
- declare class AgentLinkClient implements IOriginStorageClient {
29
- private client;
32
+ declare class AgentLinkClient {
30
33
  private serverUrl;
34
+ private static DEFAULT_WINDOW_NAME;
31
35
  constructor(options: AgentLinkClientOptions);
32
36
  /**
33
- * 获取当前 origin 的 hostname
34
- */
35
- private getCurrentHostname;
36
- /**
37
- * 连接成功回调
38
- */
39
- onConnect(callback: () => void): () => void;
40
- /**
41
- * 监听存储变更
42
- */
43
- onChange(callback: (data: IChangeData) => void): Promise<{
44
- off: () => void;
45
- broadcastChanges: boolean;
46
- }>;
47
- /**
48
- * 获取指定 key 的值
49
- * @param key 数据键
50
- * @param options 选项
51
- * @param options.filterOrigin 指定要读取的域名(默认:当前域名)
52
- * @param options.includeMetadata 是否包含元数据(origin 和 timestamp)
53
- */
54
- getItem(key: string, options?: {
55
- filterOrigin?: string;
56
- includeMetadata?: boolean;
57
- }): Promise<any>;
58
- /**
59
- * 设置指定 key 的值
37
+ * 发送数据到目标应用
38
+ * @param targetUrl 目标应用的地址
39
+ * @param data 要发送的数据
40
+ * @param type 数据类型标识
41
+ * @param windowName 窗口名称,用于复用(默认: 'agentlink-window')
60
42
  */
61
- setItem(key: string, value: any): Promise<void>;
43
+ sendData(targetUrl: string, data: any, type: string, windowName?: string): Promise<void>;
62
44
  /**
63
- * 删除指定 key
45
+ * 监听来自 URL 的数据
46
+ * @param callback 接收到数据时的回调函数
64
47
  */
65
- removeItem(key: string): Promise<void>;
48
+ receiveData(callback: (data: any, type: string) => void): () => void;
66
49
  /**
67
- * 清空所有数据
68
- * @param filterOrigin 指定要清除的域名(默认:当前域名)
50
+ * 从当前 URL 获取数据并验证接收方白名单
69
51
  */
70
- clear(filterOrigin?: string): Promise<void>;
71
- /**
72
- * 获取存储项数量
73
- * @param filterOrigin 指定要统计的域名(默认:当前域名)
74
- */
75
- length(filterOrigin?: string): Promise<number>;
76
- /**
77
- * 获取指定索引的 key 名称
78
- * @param index 索引
79
- * @param filterOrigin 指定要查询的域名(默认:当前域名)
80
- */
81
- key(index: number, filterOrigin?: string): Promise<string | null>;
82
- /**
83
- * 获取所有 key 的数组
84
- * @param filterOrigin 指定要查询的域名(默认:当前域名)
85
- */
86
- keys(filterOrigin?: string): Promise<string[]>;
87
- /**
88
- * 获取包含元数据的数据项
89
- * @param key 数据键
90
- * @param filterOrigin 指定要读取的域名(默认:当前域名)
91
- * @returns 包含 value、origin 和 timestamp 的对象
92
- */
93
- getItemWithMetadata(key: string, filterOrigin?: string): Promise<{
94
- value: any;
95
- origin: string;
96
- timestamp: number;
97
- }>;
98
- /**
99
- * 获取所有数据项(支持过滤)
100
- * @param filterOrigin 指定要读取的域名(默认:当前域名)
101
- * @returns 包含所有数据的对象,key 为数据键,value 为包含 value、origin 和 timestamp 的对象
102
- */
103
- getAllItems(filterOrigin?: string): Promise<{
104
- [key: string]: {
105
- value: any;
106
- origin: string;
107
- timestamp: number;
108
- };
109
- }>;
52
+ getDataFromUrl(url?: string): Promise<URLData | null>;
110
53
  /**
111
54
  * 获取白名单信息
112
- * @param includeAll 如果为true,返回所有白名单;如果为false,只返回当前域名的白名单信息
113
55
  */
114
56
  getWhitelistInfo(includeAll?: boolean): Promise<WhitelistResponse>;
115
57
  }
116
58
 
117
- export { AgentLinkClient, type AgentLinkClientOptions, type WhitelistInfo, type WhitelistResponse };
59
+ /**
60
+ * 使用 CompressionStream API 进行 gzip 压缩
61
+ */
62
+ declare function compress(text: string): Promise<Uint8Array>;
63
+ /**
64
+ * 使用 DecompressionStream API 进行 gzip 解压
65
+ */
66
+ declare function decompress(compressedData: Uint8Array): Promise<string>;
67
+ /**
68
+ * 将 Uint8Array 转换为 base64 字符串(URL 安全)
69
+ */
70
+ declare function uint8ArrayToBase64(arr: Uint8Array): string;
71
+ /**
72
+ * 将 URL 安全的 base64 字符串转换为 Uint8Array
73
+ */
74
+ declare function base64ToUint8Array(base64: string): Uint8Array;
75
+
76
+ /**
77
+ * 验证域名是否在白名单中
78
+ */
79
+ declare function verifyWhitelist(serverUrl: string, origin?: string): Promise<boolean>;
80
+ /**
81
+ * 获取白名单详细信息
82
+ */
83
+ declare function fetchWhitelistInfo(serverUrl: string, includeAll?: boolean): Promise<any>;
84
+
85
+ export { AgentLinkClient, type AgentLinkClientOptions, type URLData, type WhitelistInfo, type WhitelistResponse, base64ToUint8Array, compress, decodeDataFromUrl, decompress, encodeDataToUrl, fetchWhitelistInfo, uint8ArrayToBase64, verifyWhitelist };
package/dist/index.d.ts CHANGED
@@ -1,17 +1,22 @@
1
- import * as localforage from 'localforage';
2
- import { IOriginStorageClient, IChangeData } from '@agentlink/core';
3
- export { OriginStorage } from '@agentlink/core';
1
+ interface URLData {
2
+ data: any;
3
+ type: string;
4
+ }
5
+ /**
6
+ * 将数据编码为 URL hash
7
+ */
8
+ declare function encodeDataToUrl(data: any, type: string, baseUrl: string): Promise<string>;
9
+ /**
10
+ * 从 URL 中解码数据
11
+ */
12
+ declare function decodeDataFromUrl(urlStr: string): Promise<URLData | null>;
4
13
 
5
14
  interface AgentLinkClientOptions {
6
15
  /**
7
- * 服务端存储页面的 URL
8
- * 例如: 'https://storage.example.com/storage'
16
+ * 服务端验证地址
17
+ * 例如: 'https://agentlink-server.vercel.app'
9
18
  */
10
19
  serverUrl: string;
11
- /**
12
- * localforage 存储配置(可选)
13
- */
14
- storageOptions?: Parameters<typeof localforage.createInstance>[0];
15
20
  }
16
21
  interface WhitelistInfo {
17
22
  domain: string;
@@ -22,96 +27,59 @@ interface WhitelistResponse {
22
27
  origin: string | null;
23
28
  }
24
29
  /**
25
- * AgentLink 客户端 SDK
26
- * 用于跨域访问存储服务
30
+ * AgentLink 客户端 SDK (URL Hash 方案)
27
31
  */
28
- declare class AgentLinkClient implements IOriginStorageClient {
29
- private client;
32
+ declare class AgentLinkClient {
30
33
  private serverUrl;
34
+ private static DEFAULT_WINDOW_NAME;
31
35
  constructor(options: AgentLinkClientOptions);
32
36
  /**
33
- * 获取当前 origin 的 hostname
34
- */
35
- private getCurrentHostname;
36
- /**
37
- * 连接成功回调
38
- */
39
- onConnect(callback: () => void): () => void;
40
- /**
41
- * 监听存储变更
42
- */
43
- onChange(callback: (data: IChangeData) => void): Promise<{
44
- off: () => void;
45
- broadcastChanges: boolean;
46
- }>;
47
- /**
48
- * 获取指定 key 的值
49
- * @param key 数据键
50
- * @param options 选项
51
- * @param options.filterOrigin 指定要读取的域名(默认:当前域名)
52
- * @param options.includeMetadata 是否包含元数据(origin 和 timestamp)
53
- */
54
- getItem(key: string, options?: {
55
- filterOrigin?: string;
56
- includeMetadata?: boolean;
57
- }): Promise<any>;
58
- /**
59
- * 设置指定 key 的值
37
+ * 发送数据到目标应用
38
+ * @param targetUrl 目标应用的地址
39
+ * @param data 要发送的数据
40
+ * @param type 数据类型标识
41
+ * @param windowName 窗口名称,用于复用(默认: 'agentlink-window')
60
42
  */
61
- setItem(key: string, value: any): Promise<void>;
43
+ sendData(targetUrl: string, data: any, type: string, windowName?: string): Promise<void>;
62
44
  /**
63
- * 删除指定 key
45
+ * 监听来自 URL 的数据
46
+ * @param callback 接收到数据时的回调函数
64
47
  */
65
- removeItem(key: string): Promise<void>;
48
+ receiveData(callback: (data: any, type: string) => void): () => void;
66
49
  /**
67
- * 清空所有数据
68
- * @param filterOrigin 指定要清除的域名(默认:当前域名)
50
+ * 从当前 URL 获取数据并验证接收方白名单
69
51
  */
70
- clear(filterOrigin?: string): Promise<void>;
71
- /**
72
- * 获取存储项数量
73
- * @param filterOrigin 指定要统计的域名(默认:当前域名)
74
- */
75
- length(filterOrigin?: string): Promise<number>;
76
- /**
77
- * 获取指定索引的 key 名称
78
- * @param index 索引
79
- * @param filterOrigin 指定要查询的域名(默认:当前域名)
80
- */
81
- key(index: number, filterOrigin?: string): Promise<string | null>;
82
- /**
83
- * 获取所有 key 的数组
84
- * @param filterOrigin 指定要查询的域名(默认:当前域名)
85
- */
86
- keys(filterOrigin?: string): Promise<string[]>;
87
- /**
88
- * 获取包含元数据的数据项
89
- * @param key 数据键
90
- * @param filterOrigin 指定要读取的域名(默认:当前域名)
91
- * @returns 包含 value、origin 和 timestamp 的对象
92
- */
93
- getItemWithMetadata(key: string, filterOrigin?: string): Promise<{
94
- value: any;
95
- origin: string;
96
- timestamp: number;
97
- }>;
98
- /**
99
- * 获取所有数据项(支持过滤)
100
- * @param filterOrigin 指定要读取的域名(默认:当前域名)
101
- * @returns 包含所有数据的对象,key 为数据键,value 为包含 value、origin 和 timestamp 的对象
102
- */
103
- getAllItems(filterOrigin?: string): Promise<{
104
- [key: string]: {
105
- value: any;
106
- origin: string;
107
- timestamp: number;
108
- };
109
- }>;
52
+ getDataFromUrl(url?: string): Promise<URLData | null>;
110
53
  /**
111
54
  * 获取白名单信息
112
- * @param includeAll 如果为true,返回所有白名单;如果为false,只返回当前域名的白名单信息
113
55
  */
114
56
  getWhitelistInfo(includeAll?: boolean): Promise<WhitelistResponse>;
115
57
  }
116
58
 
117
- export { AgentLinkClient, type AgentLinkClientOptions, type WhitelistInfo, type WhitelistResponse };
59
+ /**
60
+ * 使用 CompressionStream API 进行 gzip 压缩
61
+ */
62
+ declare function compress(text: string): Promise<Uint8Array>;
63
+ /**
64
+ * 使用 DecompressionStream API 进行 gzip 解压
65
+ */
66
+ declare function decompress(compressedData: Uint8Array): Promise<string>;
67
+ /**
68
+ * 将 Uint8Array 转换为 base64 字符串(URL 安全)
69
+ */
70
+ declare function uint8ArrayToBase64(arr: Uint8Array): string;
71
+ /**
72
+ * 将 URL 安全的 base64 字符串转换为 Uint8Array
73
+ */
74
+ declare function base64ToUint8Array(base64: string): Uint8Array;
75
+
76
+ /**
77
+ * 验证域名是否在白名单中
78
+ */
79
+ declare function verifyWhitelist(serverUrl: string, origin?: string): Promise<boolean>;
80
+ /**
81
+ * 获取白名单详细信息
82
+ */
83
+ declare function fetchWhitelistInfo(serverUrl: string, includeAll?: boolean): Promise<any>;
84
+
85
+ export { AgentLinkClient, type AgentLinkClientOptions, type URLData, type WhitelistInfo, type WhitelistResponse, base64ToUint8Array, compress, decodeDataFromUrl, decompress, encodeDataToUrl, fetchWhitelistInfo, uint8ArrayToBase64, verifyWhitelist };