apaas-oapi-client 0.1.11 → 0.1.13

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.ts CHANGED
@@ -56,6 +56,11 @@ declare class Client {
56
56
  * 获取当前 accessToken
57
57
  */
58
58
  get token(): string | null;
59
+ /**
60
+ * 获取当前 token 剩余过期时间(单位:秒)
61
+ * @returns 剩余秒数,若无 token 则返回 null
62
+ */
63
+ get tokenExpireTime(): number | null;
59
64
  /**
60
65
  * 获取当前 namespace
61
66
  */
package/dist/index.js CHANGED
@@ -148,12 +148,13 @@ class Client {
148
148
  let nextPageToken = '';
149
149
  let total = 0;
150
150
  let page = 0;
151
+ const url = `/v1/data/namespaces/${this.namespace}/objects/${object_name}/records_query`;
151
152
  do {
152
153
  await functionLimiter(async () => {
153
154
  const mergedData = { ...data, page_token: nextPageToken || '' };
154
- const res = await this.object.search.records({
155
- object_name,
156
- data: mergedData
155
+ await this.ensureTokenValid();
156
+ const res = await this.axiosInstance.post(url, mergedData, {
157
+ headers: { Authorization: `${this.accessToken}` }
157
158
  });
158
159
  page += 1;
159
160
  if (res.data && Array.isArray(res.data.items)) {
@@ -161,12 +162,15 @@ class Client {
161
162
  }
162
163
  if (page === 1) {
163
164
  total = res.data.total || 0;
164
- this.log(LoggerLevel.info, '[批量查询记录] 🔍 查询object_name=${object_name}, 接口返回 total:', total);
165
+ this.log(LoggerLevel.info, `[批量查询记录] 🔍 object_name=${object_name}, 接口返回 total: ${total}`);
165
166
  }
166
- nextPageToken = res.data.next_page_token;
167
- this.log(LoggerLevel.debug, `[批量查询记录] 🔍 第 ${page} 页查询, nextPageToken: ${nextPageToken || ''}`);
167
+ const totalPages = Math.ceil(total / (data.page_size || 100));
168
+ const padLength = String(totalPages).length;
169
+ this.log(LoggerLevel.info, `[批量查询记录] 🔍 [${String(page).padStart(padLength, '0')}/${totalPages}] 接口调用完成`);
170
+ this.log(LoggerLevel.debug, `[批量查询记录] 🔍 第 ${page} 页查询, nextPageToken: ${res.data.next_page_token || ''}`);
168
171
  this.log(LoggerLevel.debug, `[批量查询记录] 🔍 第 ${page} 页查询完成, items.length: ${res.data.items.length}`);
169
172
  this.log(LoggerLevel.trace, `[批量查询记录] 🔍 第 ${page} 页查询结果: ${JSON.stringify(res.data.items)}`);
173
+ nextPageToken = res.data.next_page_token;
170
174
  return res;
171
175
  });
172
176
  } while (nextPageToken);
@@ -574,6 +578,26 @@ class Client {
574
578
  get token() {
575
579
  return this.accessToken;
576
580
  }
581
+ /**
582
+ * 获取当前 token 剩余过期时间(单位:秒)
583
+ * @returns 剩余秒数,若无 token 则返回 null
584
+ */
585
+ get tokenExpireTime() {
586
+ if (!this.accessToken || !this.expireTime) {
587
+ this.log(LoggerLevel.warn, '[client] no valid token');
588
+ return null;
589
+ }
590
+ const now = dayjs().valueOf();
591
+ const remainMs = this.expireTime - now;
592
+ if (remainMs <= 0) {
593
+ this.log(LoggerLevel.warn, '[client] token expired');
594
+ return 0;
595
+ }
596
+ const remainSeconds = Math.floor(remainMs / 1000);
597
+ this.log(LoggerLevel.debug, `[client] token expire time: ${remainSeconds} seconds remaining`);
598
+ this.log(LoggerLevel.trace, `[client] token expire time: ${remainSeconds} seconds remaining, expireTime=${this.expireTime}, now=${now}`);
599
+ return remainSeconds;
600
+ }
577
601
  /**
578
602
  * 获取当前 namespace
579
603
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apaas-oapi-client",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "main": "dist/index.js",
5
5
  "exports": {
6
6
  ".": "./dist/index.js",
package/src/index.ts CHANGED
@@ -139,6 +139,30 @@ class Client {
139
139
  return this.accessToken;
140
140
  }
141
141
 
142
+ /**
143
+ * 获取当前 token 剩余过期时间(单位:秒)
144
+ * @returns 剩余秒数,若无 token 则返回 null
145
+ */
146
+ get tokenExpireTime() {
147
+ if (!this.accessToken || !this.expireTime) {
148
+ this.log(LoggerLevel.warn, '[client] no valid token');
149
+ return null;
150
+ }
151
+
152
+ const now = dayjs().valueOf();
153
+ const remainMs = this.expireTime - now;
154
+
155
+ if (remainMs <= 0) {
156
+ this.log(LoggerLevel.warn, '[client] token expired');
157
+ return 0;
158
+ }
159
+
160
+ const remainSeconds = Math.floor(remainMs / 1000);
161
+ this.log(LoggerLevel.debug, `[client] token expire time: ${remainSeconds} seconds remaining`);
162
+ this.log(LoggerLevel.trace, `[client] token expire time: ${remainSeconds} seconds remaining, expireTime=${this.expireTime}, now=${now}`);
163
+ return remainSeconds;
164
+ }
165
+
142
166
  /**
143
167
  * 获取当前 namespace
144
168
  */
@@ -260,13 +284,16 @@ class Client {
260
284
  let total = 0;
261
285
  let page = 0;
262
286
 
287
+ const url = `/v1/data/namespaces/${this.namespace}/objects/${object_name}/records_query`;
288
+
263
289
  do {
264
290
  const pageRes = await functionLimiter(async () => {
265
291
  const mergedData = { ...data, page_token: nextPageToken || '' };
266
292
 
267
- const res = await this.object.search.records({
268
- object_name,
269
- data: mergedData
293
+ await this.ensureTokenValid();
294
+
295
+ const res = await this.axiosInstance.post(url, mergedData, {
296
+ headers: { Authorization: `${this.accessToken}` }
270
297
  });
271
298
 
272
299
  page += 1;
@@ -277,14 +304,19 @@ class Client {
277
304
 
278
305
  if (page === 1) {
279
306
  total = res.data.total || 0;
280
- this.log(LoggerLevel.info, '[批量查询记录] 🔍 查询object_name=${object_name}, 接口返回 total:', total);
307
+ this.log(LoggerLevel.info, `[批量查询记录] 🔍 object_name=${object_name}, 接口返回 total: ${total}`);
281
308
  }
282
309
 
283
- nextPageToken = res.data.next_page_token;
310
+ const totalPages = Math.ceil(total / (data.page_size || 100));
311
+ const padLength = String(totalPages).length;
284
312
 
285
- this.log(LoggerLevel.debug, `[批量查询记录] 🔍 ${page} 页查询, nextPageToken: ${nextPageToken || ''}`);
313
+ this.log(LoggerLevel.info, `[批量查询记录] 🔍 [${String(page).padStart(padLength, '0')}/${totalPages}] 接口调用完成`);
314
+ this.log(LoggerLevel.debug, `[批量查询记录] 🔍 第 ${page} 页查询, nextPageToken: ${res.data.next_page_token || ''}`);
286
315
  this.log(LoggerLevel.debug, `[批量查询记录] 🔍 第 ${page} 页查询完成, items.length: ${res.data.items.length}`);
287
316
  this.log(LoggerLevel.trace, `[批量查询记录] 🔍 第 ${page} 页查询结果: ${JSON.stringify(res.data.items)}`);
317
+
318
+ nextPageToken = res.data.next_page_token;
319
+
288
320
  return res;
289
321
  });
290
322
  } while (nextPageToken);