lansenger-sdk-ts 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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.fr.md +501 -0
  3. package/README.md +504 -0
  4. package/README.zhHans.md +501 -0
  5. package/README.zhHant.md +501 -0
  6. package/README.zhHantHK.md +501 -0
  7. package/dist/accountMessages.d.ts +12 -0
  8. package/dist/accountMessages.js +41 -0
  9. package/dist/auth.d.ts +13 -0
  10. package/dist/auth.js +70 -0
  11. package/dist/calendars.d.ts +84 -0
  12. package/dist/calendars.js +278 -0
  13. package/dist/callbacks.d.ts +384 -0
  14. package/dist/callbacks.js +712 -0
  15. package/dist/chats.d.ts +22 -0
  16. package/dist/chats.js +88 -0
  17. package/dist/client.d.ts +439 -0
  18. package/dist/client.js +712 -0
  19. package/dist/config.d.ts +14 -0
  20. package/dist/config.js +42 -0
  21. package/dist/constants.d.ts +30 -0
  22. package/dist/constants.js +187 -0
  23. package/dist/contacts.d.ts +38 -0
  24. package/dist/contacts.js +161 -0
  25. package/dist/departments.d.ts +18 -0
  26. package/dist/departments.js +69 -0
  27. package/dist/exceptions.d.ts +20 -0
  28. package/dist/exceptions.js +42 -0
  29. package/dist/groupMessages.d.ts +11 -0
  30. package/dist/groupMessages.js +39 -0
  31. package/dist/groups.d.ts +66 -0
  32. package/dist/groups.js +218 -0
  33. package/dist/http.d.ts +7 -0
  34. package/dist/http.js +67 -0
  35. package/dist/index.d.ts +24 -0
  36. package/dist/index.js +189 -0
  37. package/dist/media.d.ts +16 -0
  38. package/dist/media.js +178 -0
  39. package/dist/models.d.ts +925 -0
  40. package/dist/models.js +991 -0
  41. package/dist/oauth.d.ts +17 -0
  42. package/dist/oauth.js +107 -0
  43. package/dist/persistence.d.ts +26 -0
  44. package/dist/persistence.js +210 -0
  45. package/dist/reminders.d.ts +10 -0
  46. package/dist/reminders.js +31 -0
  47. package/dist/streaming.d.ts +9 -0
  48. package/dist/streaming.js +40 -0
  49. package/dist/todos.d.ts +75 -0
  50. package/dist/todos.js +282 -0
  51. package/dist/urlHelpers.d.ts +7 -0
  52. package/dist/urlHelpers.js +22 -0
  53. package/dist/userMessages.d.ts +8 -0
  54. package/dist/userMessages.js +34 -0
  55. package/dist/users.d.ts +6 -0
  56. package/dist/users.js +32 -0
  57. package/package.json +33 -0
package/dist/todos.js ADDED
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TODO_TYPE_APPROVAL = exports.TODO_TYPE_NOTIFICATION = exports.TODO_TODO_STATUS_DONE = exports.TODO_TODO_STATUS_PENDING_DO = exports.TODO_TODO_STATUS_READ = exports.TODO_TODO_STATUS_PENDING_READ = void 0;
4
+ exports.createTodoTask = createTodoTask;
5
+ exports.updateTodoTask = updateTodoTask;
6
+ exports.updateTodoTaskStatus = updateTodoTaskStatus;
7
+ exports.deleteTodoTask = deleteTodoTask;
8
+ exports.fetchTodoTaskList = fetchTodoTaskList;
9
+ exports.fetchTodoTaskBySourceId = fetchTodoTaskBySourceId;
10
+ exports.fetchTodoTaskById = fetchTodoTaskById;
11
+ exports.fetchTodoTaskStatusCounts = fetchTodoTaskStatusCounts;
12
+ exports.updateExecutorStatus = updateExecutorStatus;
13
+ exports.addExecutors = addExecutors;
14
+ exports.deleteExecutors = deleteExecutors;
15
+ exports.fetchExecutorList = fetchExecutorList;
16
+ const urlHelpers_1 = require("./urlHelpers");
17
+ const http_1 = require("./http");
18
+ const models_1 = require("./models");
19
+ exports.TODO_TODO_STATUS_PENDING_READ = "11";
20
+ exports.TODO_TODO_STATUS_READ = "12";
21
+ exports.TODO_TODO_STATUS_PENDING_DO = "21";
22
+ exports.TODO_TODO_STATUS_DONE = "22";
23
+ exports.TODO_TYPE_NOTIFICATION = 1;
24
+ exports.TODO_TYPE_APPROVAL = 2;
25
+ async function createTodoTask(config, appToken, title, link, pcLink, executorIds, orgId, type = 1, opts) {
26
+ if (!title)
27
+ return new models_1.TodoTaskCreateResult({ success: false, error: "title is required" });
28
+ if (!link)
29
+ return new models_1.TodoTaskCreateResult({ success: false, error: "link is required" });
30
+ if (!pcLink)
31
+ return new models_1.TodoTaskCreateResult({ success: false, error: "pc_link is required" });
32
+ if (!executorIds || !executorIds.length)
33
+ return new models_1.TodoTaskCreateResult({ success: false, error: "executor_ids is required" });
34
+ if (!orgId)
35
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
36
+ const userToken = opts?.user_token || "";
37
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "create", appToken, { userToken });
38
+ const body = { title, type, link, pcLink: pcLink, executorIds, orgId };
39
+ if (opts?.source_id)
40
+ body.sourceId = opts.source_id;
41
+ if (opts?.desc)
42
+ body.desc = opts.desc;
43
+ if (opts?.sender_id)
44
+ body.senderId = opts.sender_id;
45
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
46
+ if (httpErr)
47
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
48
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
49
+ if (!ok)
50
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
51
+ const d = data.data || {};
52
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: d.todotaskId, raw_response: data });
53
+ }
54
+ async function updateTodoTask(config, appToken, todotaskId, title, link, pcLink, orgId, opts) {
55
+ if (!todotaskId)
56
+ return new models_1.TodoTaskCreateResult({ success: false, error: "todotask_id is required" });
57
+ if (!title)
58
+ return new models_1.TodoTaskCreateResult({ success: false, error: "title is required" });
59
+ if (!orgId)
60
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
61
+ const userToken = opts?.user_token || "";
62
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "info_update", appToken, { userToken });
63
+ const body = { todotaskId, title, link, pcLink: pcLink, orgId };
64
+ if (opts?.desc)
65
+ body.desc = opts.desc;
66
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
67
+ if (httpErr)
68
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
69
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
70
+ if (!ok)
71
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
72
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: todotaskId, raw_response: data });
73
+ }
74
+ async function updateTodoTaskStatus(config, appToken, todotaskId, status, orgId, opts) {
75
+ const valid = ["11", "12", "21", "22"];
76
+ if (!valid.includes(status))
77
+ return new models_1.TodoTaskCreateResult({ success: false, error: `status must be one of: ${valid.join(", ")}` });
78
+ if (!todotaskId)
79
+ return new models_1.TodoTaskCreateResult({ success: false, error: "todotask_id is required" });
80
+ if (!orgId)
81
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
82
+ const userToken = opts?.user_token || "";
83
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "status_update", appToken, { userToken });
84
+ const body = { todotaskId, status, orgId };
85
+ if (opts?.staff_id)
86
+ body.staffId = opts.staff_id;
87
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
88
+ if (httpErr)
89
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
90
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
91
+ if (!ok)
92
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
93
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: todotaskId, raw_response: data });
94
+ }
95
+ async function deleteTodoTask(config, appToken, todotaskId, orgId, opts) {
96
+ if (!todotaskId)
97
+ return new models_1.TodoTaskCreateResult({ success: false, error: "todotask_id is required" });
98
+ if (!orgId)
99
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
100
+ const userToken = opts?.user_token || "";
101
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "sender_delete", appToken, { userToken });
102
+ const body = { todotaskId, orgId };
103
+ if (opts?.staff_id)
104
+ body.staffId = opts.staff_id;
105
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
106
+ if (httpErr)
107
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
108
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
109
+ if (!ok)
110
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
111
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: todotaskId, raw_response: data });
112
+ }
113
+ async function fetchTodoTaskList(config, appToken, orgId, opts) {
114
+ if (!orgId)
115
+ return new models_1.TodoTaskListResult({ success: false, error: "org_id is required" });
116
+ const userToken = opts?.user_token || "";
117
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "list_fetch", appToken, { userToken });
118
+ const body = { orgId };
119
+ if (opts?.app_ids)
120
+ body.appIds = opts.app_ids;
121
+ if (opts?.staff_id)
122
+ body.staffId = opts.staff_id;
123
+ if (opts?.status_list)
124
+ body.statusList = opts.status_list;
125
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
126
+ if (httpErr)
127
+ return new models_1.TodoTaskListResult({ success: false, error: httpErr });
128
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
129
+ if (!ok)
130
+ return new models_1.TodoTaskListResult({ success: false, error: apiErr });
131
+ const d = data.data || {};
132
+ return new models_1.TodoTaskListResult({ success: true, total: d.total || 0, todotask_list: d.todotaskList, raw_response: data });
133
+ }
134
+ async function fetchTodoTaskBySourceId(config, appToken, sourceId, orgId, opts) {
135
+ if (!sourceId)
136
+ return new models_1.TodoTaskInfoResult({ success: false, error: "source_id is required" });
137
+ if (!orgId)
138
+ return new models_1.TodoTaskInfoResult({ success: false, error: "org_id is required" });
139
+ const userToken = opts?.user_token || "";
140
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "info_fetch_by_source_id", appToken, { userToken });
141
+ const body = { sourceId, orgId };
142
+ if (opts?.staff_id)
143
+ body.staffId = opts.staff_id;
144
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
145
+ if (httpErr)
146
+ return new models_1.TodoTaskInfoResult({ success: false, error: httpErr });
147
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
148
+ if (!ok)
149
+ return new models_1.TodoTaskInfoResult({ success: false, error: apiErr });
150
+ const d = data.data || {};
151
+ return new models_1.TodoTaskInfoResult({
152
+ success: true, todotask_id: d.todotaskId, source_id: d.sourceId,
153
+ title: d.title, desc: d.desc, status: d.status, type: d.type,
154
+ link: d.link, pc_link: d.pcLink, sender_id: d.senderId,
155
+ executor_ids: d.executorIds, create_time: d.createTime, app_id: d.appId,
156
+ raw_response: data,
157
+ });
158
+ }
159
+ async function fetchTodoTaskById(config, appToken, todotaskId, orgId, opts) {
160
+ if (!todotaskId)
161
+ return new models_1.TodoTaskInfoResult({ success: false, error: "todotask_id is required" });
162
+ if (!orgId)
163
+ return new models_1.TodoTaskInfoResult({ success: false, error: "org_id is required" });
164
+ const userToken = opts?.user_token || "";
165
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "info_fetch", appToken, { userToken });
166
+ const body = { todotaskId, orgId };
167
+ if (opts?.staff_id)
168
+ body.staffId = opts.staff_id;
169
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
170
+ if (httpErr)
171
+ return new models_1.TodoTaskInfoResult({ success: false, error: httpErr });
172
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
173
+ if (!ok)
174
+ return new models_1.TodoTaskInfoResult({ success: false, error: apiErr });
175
+ const d = data.data || {};
176
+ return new models_1.TodoTaskInfoResult({
177
+ success: true, todotask_id: d.todotaskId, source_id: d.sourceId,
178
+ title: d.title, desc: d.desc, status: d.status, type: d.type,
179
+ link: d.link, pc_link: d.pcLink, sender_id: d.senderId,
180
+ executor_ids: d.executorIds, create_time: d.createTime, app_id: d.appId,
181
+ raw_response: data,
182
+ });
183
+ }
184
+ async function fetchTodoTaskStatusCounts(config, appToken, staffId, orgId, opts) {
185
+ if (!staffId)
186
+ return new models_1.TodoTaskStatusCountResult({ success: false, error: "staff_id is required" });
187
+ if (!orgId)
188
+ return new models_1.TodoTaskStatusCountResult({ success: false, error: "org_id is required" });
189
+ const userToken = opts?.user_token || "";
190
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "status_count_list_fetch", appToken, { userToken });
191
+ const body = { staffId, orgId };
192
+ if (opts?.app_id)
193
+ body.appId = opts.app_id;
194
+ if (opts?.status_list)
195
+ body.status = opts.status_list;
196
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
197
+ if (httpErr)
198
+ return new models_1.TodoTaskStatusCountResult({ success: false, error: httpErr });
199
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
200
+ if (!ok)
201
+ return new models_1.TodoTaskStatusCountResult({ success: false, error: apiErr });
202
+ const d = data.data || [];
203
+ return new models_1.TodoTaskStatusCountResult({ success: true, status_counts: Array.isArray(d) ? d : [], raw_response: data });
204
+ }
205
+ async function updateExecutorStatus(config, appToken, executorStatusList, orgId, opts) {
206
+ if (!executorStatusList || !executorStatusList.length)
207
+ return new models_1.TodoTaskCreateResult({ success: false, error: "executor_status_list is required" });
208
+ if (!orgId)
209
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
210
+ const userToken = opts?.user_token || "";
211
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "executor_status_update", appToken, { userToken });
212
+ const body = { executorStatusList, orgId };
213
+ if (opts?.todotask_id)
214
+ body.todotaskId = opts.todotask_id;
215
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
216
+ if (httpErr)
217
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
218
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
219
+ if (!ok)
220
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
221
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: opts?.todotask_id || "", raw_response: data });
222
+ }
223
+ async function addExecutors(config, appToken, executorIds, orgId, opts) {
224
+ if (!executorIds || !executorIds.length)
225
+ return new models_1.TodoTaskCreateResult({ success: false, error: "executor_ids is required" });
226
+ if (!orgId)
227
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
228
+ const userToken = opts?.user_token || "";
229
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "executor_create", appToken, { userToken });
230
+ const body = { executorIds, orgId };
231
+ if (opts?.todotask_id)
232
+ body.todotaskId = opts.todotask_id;
233
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
234
+ if (httpErr)
235
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
236
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
237
+ if (!ok)
238
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
239
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: opts?.todotask_id || "", raw_response: data });
240
+ }
241
+ async function deleteExecutors(config, appToken, executorIds, orgId, opts) {
242
+ if (!executorIds || !executorIds.length)
243
+ return new models_1.TodoTaskCreateResult({ success: false, error: "executor_ids is required" });
244
+ if (!orgId)
245
+ return new models_1.TodoTaskCreateResult({ success: false, error: "org_id is required" });
246
+ const userToken = opts?.user_token || "";
247
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "executor_delete", appToken, { userToken });
248
+ const body = { executorIds, orgId };
249
+ if (opts?.todotask_id)
250
+ body.todotaskId = opts.todotask_id;
251
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
252
+ if (httpErr)
253
+ return new models_1.TodoTaskCreateResult({ success: false, error: httpErr });
254
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
255
+ if (!ok)
256
+ return new models_1.TodoTaskCreateResult({ success: false, error: apiErr });
257
+ return new models_1.TodoTaskCreateResult({ success: true, todotask_id: opts?.todotask_id || "", raw_response: data });
258
+ }
259
+ async function fetchExecutorList(config, appToken, todotaskId, orgId, opts) {
260
+ if (!todotaskId)
261
+ return new models_1.TodoTaskExecutorListResult({ success: false, error: "todotask_id is required" });
262
+ if (!orgId)
263
+ return new models_1.TodoTaskExecutorListResult({ success: false, error: "org_id is required" });
264
+ const userToken = opts?.user_token || "";
265
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "todo", "executor_list_fetch", appToken, { userToken });
266
+ const body = { todotaskId, orgId };
267
+ if (opts?.staff_id)
268
+ body.staffId = opts.staff_id;
269
+ if (opts?.status_list)
270
+ body.statusList = opts.status_list;
271
+ const [data, httpErr] = await (0, http_1.doPost)(url, body, opts?.fetchFn);
272
+ if (httpErr)
273
+ return new models_1.TodoTaskExecutorListResult({ success: false, error: httpErr });
274
+ const [ok, apiErr] = (0, http_1.parseApiResponse)(data);
275
+ if (!ok)
276
+ return new models_1.TodoTaskExecutorListResult({ success: false, error: apiErr });
277
+ const d = data.data || {};
278
+ return new models_1.TodoTaskExecutorListResult({
279
+ success: true, total: d.total || 0, executor_list: d.executorList, raw_response: data,
280
+ });
281
+ }
282
+ //# sourceMappingURL=todos.js.map
@@ -0,0 +1,7 @@
1
+ import { LansengerConfig } from "./config";
2
+ export interface BuildApiUrlOptions {
3
+ userToken?: string;
4
+ userId?: string;
5
+ pathVars?: Record<string, string>;
6
+ }
7
+ export declare function buildApiUrl(config: LansengerConfig, category: string, endpoint: string, appToken: string, options?: BuildApiUrlOptions): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildApiUrl = buildApiUrl;
4
+ const constants_1 = require("./constants");
5
+ function buildApiUrl(config, category, endpoint, appToken, options) {
6
+ const opts = options || {};
7
+ const pathTemplate = constants_1.API_ENDPOINTS[category][endpoint];
8
+ let apiPath = pathTemplate;
9
+ const pathVars = opts.pathVars || {};
10
+ for (const [varName, varValue] of Object.entries(pathVars)) {
11
+ apiPath = apiPath.replace(`{${varName}}`, encodeURIComponent(varValue));
12
+ }
13
+ let url = `${config.api_gateway_url}${apiPath}?app_token=${encodeURIComponent(appToken)}`;
14
+ if (opts.userToken) {
15
+ url += `&user_token=${encodeURIComponent(opts.userToken)}`;
16
+ }
17
+ if (opts.userId) {
18
+ url += `&user_id=${encodeURIComponent(opts.userId)}`;
19
+ }
20
+ return url;
21
+ }
22
+ //# sourceMappingURL=urlHelpers.js.map
@@ -0,0 +1,8 @@
1
+ import { LansengerConfig } from "./config";
2
+ import { FetchFn } from "./http";
3
+ import { UserMessageResult } from "./models";
4
+ export declare function sendUserMessage(config: LansengerConfig, appToken: string, userToken: string, receiverId: string, msgType: string, msgData: Record<string, any>, opts?: {
5
+ common?: Record<string, any>;
6
+ uuid?: string;
7
+ fetchFn?: FetchFn;
8
+ }): Promise<UserMessageResult>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendUserMessage = sendUserMessage;
4
+ const urlHelpers_1 = require("./urlHelpers");
5
+ const http_1 = require("./http");
6
+ const models_1 = require("./models");
7
+ async function sendUserMessage(config, appToken, userToken, receiverId, msgType, msgData, opts) {
8
+ if (!userToken)
9
+ return new models_1.UserMessageResult({ success: false, error: "user_token is required for user private chat messages" });
10
+ if (!receiverId)
11
+ return new models_1.UserMessageResult({ success: false, error: "receiver_id is required" });
12
+ if (!msgType)
13
+ return new models_1.UserMessageResult({ success: false, error: "msg_type is required" });
14
+ if (!msgData)
15
+ return new models_1.UserMessageResult({ success: false, error: "msg_data is required" });
16
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "user_message", "create", appToken, { userToken });
17
+ const finalMsgData = { ...msgData };
18
+ if (opts?.common)
19
+ finalMsgData.common = opts.common;
20
+ const payload = { receiverId, msgType, msgData: finalMsgData };
21
+ if (opts?.uuid)
22
+ payload.uuid = opts.uuid;
23
+ const [data, httpErr] = await (0, http_1.doPost)(url, payload, opts?.fetchFn);
24
+ if (httpErr)
25
+ return new models_1.UserMessageResult({ success: false, error: httpErr });
26
+ const errCode = data.errCode ?? -1;
27
+ if (errCode !== 0) {
28
+ const msg = data.errMsg || "Unknown error";
29
+ return new models_1.UserMessageResult({ success: false, error: `API error (errCode=${errCode}): ${msg}` });
30
+ }
31
+ const d = data.data || {};
32
+ return new models_1.UserMessageResult({ success: true, message_id: d.msgId, raw_response: data });
33
+ }
34
+ //# sourceMappingURL=userMessages.js.map
@@ -0,0 +1,6 @@
1
+ import { LansengerConfig } from "./config";
2
+ import { FetchFn } from "./http";
3
+ import { UserInfoResult } from "./models";
4
+ export declare function fetchUserInfo(config: LansengerConfig, appToken: string, userToken: string, opts?: {
5
+ fetchFn?: FetchFn;
6
+ }): Promise<UserInfoResult>;
package/dist/users.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchUserInfo = fetchUserInfo;
4
+ const urlHelpers_1 = require("./urlHelpers");
5
+ const http_1 = require("./http");
6
+ const models_1 = require("./models");
7
+ async function fetchUserInfo(config, appToken, userToken, opts) {
8
+ if (!userToken)
9
+ return new models_1.UserInfoResult({ success: false, error: "user_token is required" });
10
+ if (!appToken)
11
+ return new models_1.UserInfoResult({ success: false, error: "app_token is required" });
12
+ const url = (0, urlHelpers_1.buildApiUrl)(config, "users", "fetch", appToken, { userToken });
13
+ const [data, httpErr] = await (0, http_1.doGet)(url, opts?.fetchFn);
14
+ if (httpErr)
15
+ return new models_1.UserInfoResult({ success: false, error: httpErr });
16
+ const errCode = data.errCode ?? -1;
17
+ if (errCode !== 0) {
18
+ const msg = data.errMsg || "Unknown error";
19
+ return new models_1.UserInfoResult({ success: false, error: `API error (errCode=${errCode}): ${msg}` });
20
+ }
21
+ const d = data.data || {};
22
+ return new models_1.UserInfoResult({
23
+ success: true, staff_id: d.staffId, name: d.name,
24
+ org_id: d.orgId, org_name: d.orgid || d.orgName || d.orgname,
25
+ avatar_id: d.avatarId, avatar_url: d.avatarUrl,
26
+ mobile_phone: d.mobilePhone, email: d.email,
27
+ employee_number: d.employeeNumber, login_name: d.loginName,
28
+ external_id: d.externalId, department: d.department,
29
+ raw_response: data,
30
+ });
31
+ }
32
+ //# sourceMappingURL=users.js.map
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "lansenger-sdk-ts",
3
+ "version": "1.0.0",
4
+ "description": "Lansenger SDK — TypeScript SDK for Lansenger Smart Bot API",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "engines": {
8
+ "node": ">=18.0.0"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "jest",
13
+ "lint": "tsc --noEmit"
14
+ },
15
+ "files": [
16
+ "dist/**/*.js",
17
+ "dist/**/*.d.ts",
18
+ "LICENSE",
19
+ "README.md"
20
+ ],
21
+ "dependencies": {
22
+ "node-fetch": "^2.7.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/jest": "^29.0.0",
26
+ "@types/node": "^20.0.0",
27
+ "@types/node-fetch": "^2.6.13",
28
+ "jest": "^29.0.0",
29
+ "ts-jest": "^29.0.0",
30
+ "typescript": "^5.0.0"
31
+ },
32
+ "license": "MIT"
33
+ }