@maiyunnet/kebab 7.0.2 → 7.1.1

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/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * --- 本文件用来定义每个目录实体地址的常量 ---
6
6
  */
7
7
  /** --- 当前系统版本号 --- */
8
- export declare const VER = "7.0.2";
8
+ export declare const VER = "7.1.1";
9
9
  /** --- 框架根目录,以 / 结尾 --- */
10
10
  export declare const ROOT_PATH: string;
11
11
  export declare const LIB_PATH: string;
package/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * --- 本文件用来定义每个目录实体地址的常量 ---
7
7
  */
8
8
  /** --- 当前系统版本号 --- */
9
- export const VER = '7.0.2';
9
+ export const VER = '7.1.1';
10
10
  // --- 服务端用的路径 ---
11
11
  const imu = decodeURIComponent(import.meta.url).replace('file://', '').replace(/^\/(\w:)/, '$1');
12
12
  /** --- /xxx/xxx --- */
package/lib/ai.js CHANGED
@@ -27,6 +27,9 @@ export var ESERVICE;
27
27
  /** --- openai 的连接对象 --- */
28
28
  const links = [];
29
29
  export class Ai {
30
+ /** --- openai 原生对象,建议只读 --- */
31
+ link;
32
+ _ctr;
30
33
  constructor(ctrEtc, opt) {
31
34
  let configAi = null;
32
35
  if (ctrEtc instanceof sCtr.Ctr) {
package/lib/buffer.js CHANGED
@@ -1,8 +1,9 @@
1
1
  /** --- 读对象 --- */
2
2
  export class Reader {
3
+ _buffer;
4
+ /** --- 当前读取位置 --- */
5
+ _offset = 0;
3
6
  constructor(buffer) {
4
- /** --- 当前读取位置 --- */
5
- this._offset = 0;
6
7
  this._buffer = buffer;
7
8
  }
8
9
  /** --- 读取一个无符号 8 位整数, BYTE --- */
@@ -73,9 +74,10 @@ export class Reader {
73
74
  }
74
75
  /** --- 写对象 --- */
75
76
  export class Writer {
77
+ _buffer;
78
+ /** --- 当前读取位置 --- */
79
+ _offset = 0;
76
80
  constructor(size) {
77
- /** --- 当前读取位置 --- */
78
- this._offset = 0;
79
81
  this._buffer = Buffer.alloc(size);
80
82
  }
81
83
  /** --- [1 字节] 写入一个无符号 8 位整数 --- */
package/lib/captcha.js CHANGED
@@ -9,6 +9,7 @@ import * as core from '#kebab/lib/core.js';
9
9
  import * as kebab from '#kebab/index.js';
10
10
  svgCaptcha.loadFont(kebab.LIB_PATH + 'captcha/zcool-addict-italic.ttf');
11
11
  export class Captcha {
12
+ _link;
12
13
  constructor(opt) {
13
14
  this._link = svgCaptcha.create({
14
15
  'width': opt.width,
package/lib/consistent.js CHANGED
@@ -5,13 +5,13 @@
5
5
  */
6
6
  import * as crypto from '#kebab/lib/crypto.js';
7
7
  export class Consistent {
8
+ /** --- 虚拟节点数量 --- */
9
+ _vcount = 300;
10
+ /** --- hash 环 --- */
11
+ _circle = {};
12
+ /** --- circle 的 keys --- */
13
+ _keys = [];
8
14
  constructor(vcount) {
9
- /** --- 虚拟节点数量 --- */
10
- this._vcount = 300;
11
- /** --- hash 环 --- */
12
- this._circle = {};
13
- /** --- circle 的 keys --- */
14
- this._keys = [];
15
15
  this._vcount = vcount;
16
16
  }
17
17
  /**
package/lib/core.d.ts CHANGED
@@ -157,6 +157,15 @@ export declare function sendReload(hosts?: string[] | 'config'): Promise<string[
157
157
  * --- 主要用作不间断的代码热更新 ---
158
158
  */
159
159
  export declare function sendRestart(hosts?: string[] | 'config'): Promise<string[]>;
160
+ /** --- PM2 操作类型 --- */
161
+ export type TPm2Action = 'start' | 'stop' | 'restart';
162
+ /**
163
+ * --- 向本机或局域网 RPC 发送 PM2 操作 ---
164
+ * @param name PM2 进程名称
165
+ * @param action PM2 操作类型
166
+ * @param hosts 局域网列表
167
+ */
168
+ export declare function sendPm2(name: string, action?: TPm2Action, hosts?: string[] | 'config'): Promise<string[]>;
160
169
  /** --- 跨进程全局变量 --- */
161
170
  export declare const global: Record<string, any>;
162
171
  /**
package/lib/core.js CHANGED
@@ -492,6 +492,44 @@ export async function sendRestart(hosts) {
492
492
  }
493
493
  return rtn;
494
494
  }
495
+ /**
496
+ * --- 向本机或局域网 RPC 发送 PM2 操作 ---
497
+ * @param name PM2 进程名称
498
+ * @param action PM2 操作类型
499
+ * @param hosts 局域网列表
500
+ */
501
+ export async function sendPm2(name, action = 'restart', hosts) {
502
+ if (hosts === 'config') {
503
+ hosts = globalConfig.hosts;
504
+ }
505
+ hosts ??= ['127.0.0.1'];
506
+ // --- 局域网模式 ---
507
+ const time = lTime.stamp();
508
+ /** --- 返回成功的 host --- */
509
+ const rtn = [];
510
+ for (const host of hosts) {
511
+ const res = await lNet.get('http://' + host + ':' + globalConfig.rpcPort.toString() + '/' + lCrypto.aesEncrypt(lText.stringifyJson({
512
+ 'action': 'pm2',
513
+ 'time': time,
514
+ 'name': name,
515
+ 'pm2Action': action
516
+ }), globalConfig.rpcSecret), {
517
+ 'timeout': 10
518
+ });
519
+ const content = await res.getContent();
520
+ if (!content) {
521
+ continue;
522
+ }
523
+ const str = content.toString();
524
+ if (str === 'Done') {
525
+ rtn.push(host);
526
+ }
527
+ else {
528
+ debug('[CORE][sendPm2] rpc server content error:', str);
529
+ }
530
+ }
531
+ return rtn;
532
+ }
495
533
  /** --- 跨进程全局变量 --- */
496
534
  export const global = {};
497
535
  /**
@@ -733,52 +771,29 @@ export async function ls(opt) {
733
771
  * @param obj 要克隆的对象
734
772
  */
735
773
  export function clone(obj) {
736
- let newObj = {};
737
- if (obj instanceof Array) {
738
- newObj = [];
739
- for (let i = 0; i < obj.length; ++i) {
740
- if (obj[i] instanceof Date) {
741
- newObj[i] = new Date(obj[i].getTime());
742
- }
743
- else if (obj[i] instanceof FormData) {
744
- const fd = new FormData();
745
- for (const item of obj[i]) {
746
- fd.append(item[0], item[1]);
747
- }
748
- newObj[i] = fd;
749
- }
750
- else if (obj[i] === null) {
751
- newObj[i] = null;
752
- }
753
- else if (typeof obj[i] === 'object') {
754
- newObj[i] = clone(obj[i]);
755
- }
756
- else {
757
- newObj[i] = obj[i];
774
+ const isArray = obj instanceof Array;
775
+ const newObj = isArray ? [] : {};
776
+ const keys = isArray ? obj.keys() : Object.keys(obj);
777
+ for (const key of keys) {
778
+ const val = obj[key];
779
+ if (val instanceof Date) {
780
+ newObj[key] = new Date(val.getTime());
781
+ }
782
+ else if (val instanceof FormData) {
783
+ const fd = new FormData();
784
+ for (const item of val) {
785
+ fd.append(item[0], item[1]);
758
786
  }
787
+ newObj[key] = fd;
759
788
  }
760
- }
761
- else {
762
- for (const key in obj) {
763
- if (obj[key] instanceof Date) {
764
- newObj[key] = new Date(obj[key].getTime());
765
- }
766
- else if (obj[key] instanceof FormData) {
767
- const fd = new FormData();
768
- for (const item of obj[key]) {
769
- fd.append(item[0], item[1]);
770
- }
771
- newObj[key] = fd;
772
- }
773
- else if (obj[key] === null) {
774
- newObj[key] = null;
775
- }
776
- else if (typeof obj[key] === 'object') {
777
- newObj[key] = clone(obj[key]);
778
- }
779
- else {
780
- newObj[key] = obj[key];
781
- }
789
+ else if (val === null) {
790
+ newObj[key] = null;
791
+ }
792
+ else if (typeof val === 'object') {
793
+ newObj[key] = clone(val);
794
+ }
795
+ else {
796
+ newObj[key] = val;
782
797
  }
783
798
  }
784
799
  return newObj;
package/lib/db/conn.js CHANGED
@@ -28,17 +28,21 @@ pg.types.setTypeParser(pg.types.builtins.INT8, val => {
28
28
  });
29
29
  /** --- 数据库连接对象 --- */
30
30
  export class Connection {
31
+ /** --- 本连接最后一次使用时间 --- */
32
+ _last = 0;
33
+ /** --- 最后两次执行的 sql 完整串 --- */
34
+ _lastSql = [];
35
+ /** --- 数据库连接对象 --- */
36
+ _link;
37
+ /** --- 当前连接是否正在被独占使用 --- */
38
+ _using = false;
39
+ /** --- 当发生断开,则需从连接池移除连接 --- */
40
+ _lost = false;
41
+ /** --- 当前正在处理事务 --- */
42
+ _transaction = false;
43
+ /** --- 当前的连接配置信息 --- */
44
+ _etc;
31
45
  constructor(etc, link) {
32
- /** --- 本连接最后一次使用时间 --- */
33
- this._last = 0;
34
- /** --- 最后两次执行的 sql 完整串 --- */
35
- this._lastSql = [];
36
- /** --- 当前连接是否正在被独占使用 --- */
37
- this._using = false;
38
- /** --- 当发生断开,则需从连接池移除连接 --- */
39
- this._lost = false;
40
- /** --- 当前正在处理事务 --- */
41
- this._transaction = false;
42
46
  this._etc = etc;
43
47
  this._link = link;
44
48
  this.refreshLast();
package/lib/db/pool.js CHANGED
@@ -89,9 +89,13 @@ setTimeout(function () {
89
89
  }, 10_000);
90
90
  /** --- 数据库连接池对象 --- */
91
91
  export class Pool {
92
+ /** --- SQL 执行次数 --- */
93
+ _queries = 0;
94
+ /** --- 当前服务商 --- */
95
+ _service;
96
+ /** --- 当前 Pool 对象的数据库连接信息 --- */
97
+ _etc;
92
98
  constructor(etc, opt) {
93
- /** --- SQL 执行次数 --- */
94
- this._queries = 0;
95
99
  this._etc = etc;
96
100
  this._service = opt.service;
97
101
  }
package/lib/db/tran.js CHANGED
@@ -1,14 +1,17 @@
1
1
  import * as lCore from '#kebab/lib/core.js';
2
2
  /** --- 事务连接对象,commit 和 rollback 后将无法使用 --- */
3
3
  export class Transaction {
4
+ /** --- SQL 执行次数 --- */
5
+ _queries = 0;
6
+ /** --- 连接对象 --- */
7
+ _conn;
8
+ _ctr;
9
+ // --- 事务时长监听 timer ---
10
+ _timer = {
11
+ 'warning': undefined,
12
+ 'danger': undefined
13
+ };
4
14
  constructor(ctr, conn, opts = {}) {
5
- /** --- SQL 执行次数 --- */
6
- this._queries = 0;
7
- // --- 事务时长监听 timer ---
8
- this._timer = {
9
- 'warning': undefined,
10
- 'danger': undefined
11
- };
12
15
  // --- 进来的连接对象直接是事务独占模式 ---
13
16
  this._ctr = ctr;
14
17
  if (ctr) {
package/lib/dns.js CHANGED
@@ -63,6 +63,8 @@ const recordLine = {
63
63
  ]
64
64
  };
65
65
  export class Dns {
66
+ /** --- 当前选项 --- */
67
+ _opt;
66
68
  constructor(ctr, opt) {
67
69
  const config = ctr.getPrototype('_config');
68
70
  opt.secretId ??= config.dns?.[ESERVICE[opt.service]].sid;
package/lib/kv.d.ts CHANGED
@@ -280,8 +280,9 @@ export declare class Kv {
280
280
  /**
281
281
  * --- 获取 Kv 对象 ---
282
282
  * @param ctrEtc 控制器或配置信息
283
+ * @param oetc 可用来覆盖 ctr 的一些选项,如 index
283
284
  */
284
- export declare function get(ctrEtc: sCtr.Ctr | kebab.IConfigKv): Kv;
285
+ export declare function get(ctrEtc: sCtr.Ctr | kebab.IConfigKv, oetc?: kebab.IConfigKv): Kv;
285
286
  /** --- 连接信息 --- */
286
287
  export interface IConnectionInfo {
287
288
  'host': string;
package/lib/kv.js CHANGED
@@ -23,6 +23,8 @@ const connections = [];
23
23
  * ```
24
24
  */
25
25
  export class Kv {
26
+ /** --- 当前的 kv 连接信息 --- */
27
+ _etc;
26
28
  constructor(etc) {
27
29
  this._etc = etc;
28
30
  }
@@ -814,8 +816,12 @@ end`;
814
816
  /**
815
817
  * --- 获取 Kv 对象 ---
816
818
  * @param ctrEtc 控制器或配置信息
819
+ * @param oetc 可用来覆盖 ctr 的一些选项,如 index
817
820
  */
818
- export function get(ctrEtc) {
821
+ export function get(ctrEtc, oetc) {
819
822
  const etc = ctrEtc instanceof sCtr.Ctr ? ctrEtc.getPrototype('_config').kv : ctrEtc;
823
+ if (oetc) {
824
+ Object.assign(etc, oetc);
825
+ }
820
826
  return new Kv(etc);
821
827
  }
@@ -8,23 +8,20 @@ import * as mime from '@litert/mime';
8
8
  import * as core from '#kebab/lib/core.js';
9
9
  import * as fs from '#kebab/lib/fs.js';
10
10
  export class FormData extends stream.Readable {
11
- constructor() {
12
- super(...arguments);
13
- /** --- read 调用次数 --- */
14
- this._num = 0;
15
- /** --- 要编译的数据 --- */
16
- this._data = [];
17
- /** --- 分隔符 --- */
18
- this._boundary = '----Kebab' + core.random(29, core.RANDOM_LUN);
19
- /** --- 正在读取文件吗 --- */
20
- this._fileReading = false;
21
- /** --- 是否已经结束 --- */
22
- this._close = false;
23
- /** --- 总字节长度 --- */
24
- this._length = 4 + this._boundary.length;
25
- /** --- 已发送字节长度 --- */
26
- this._sent = 0;
27
- }
11
+ /** --- read 调用次数 --- */
12
+ _num = 0;
13
+ /** --- 要编译的数据 --- */
14
+ _data = [];
15
+ /** --- 分隔符 --- */
16
+ _boundary = '----Kebab' + core.random(29, core.RANDOM_LUN);
17
+ /** --- 正在读取文件吗 --- */
18
+ _fileReading = false;
19
+ /** --- 是否已经结束 --- */
20
+ _close = false;
21
+ /** --- 总字节长度 --- */
22
+ _length = 4 + this._boundary.length;
23
+ /** --- 已发送字节长度 --- */
24
+ _sent = 0;
28
25
  /**
29
26
  * --- 添加字符串 ---
30
27
  * @param key 键
@@ -1,12 +1,12 @@
1
1
  import * as lNet from '#kebab/lib/net.js';
2
2
  export class Request {
3
+ /** --- get 或 post 的数据 --- */
4
+ _data = undefined;
5
+ /** --- 访问的 URL --- */
6
+ _url = '';
7
+ /** --- 要传递的参数 --- */
8
+ _opt = {};
3
9
  constructor(url) {
4
- /** --- get 或 post 的数据 --- */
5
- this._data = undefined;
6
- /** --- 访问的 URL --- */
7
- this._url = '';
8
- /** --- 要传递的参数 --- */
9
- this._opt = {};
10
10
  this._url = url;
11
11
  }
12
12
  /**
@@ -1,12 +1,12 @@
1
1
  export class Response {
2
+ /** --- httpClient 请求对象 --- */
3
+ _req = null;
4
+ /** --- 返回的 headers --- */
5
+ headers = null;
6
+ error = null;
7
+ /** --- 用户自定义的 content 内容 --- */
8
+ _content = null;
2
9
  constructor(req) {
3
- /** --- httpClient 请求对象 --- */
4
- this._req = null;
5
- /** --- 返回的 headers --- */
6
- this.headers = null;
7
- this.error = null;
8
- /** --- 用户自定义的 content 内容 --- */
9
- this._content = null;
10
10
  this._req = req;
11
11
  }
12
12
  /**
package/lib/s3.js CHANGED
@@ -22,9 +22,11 @@ export var ESERVICE;
22
22
  ESERVICE[ESERVICE["CF"] = 3] = "CF";
23
23
  })(ESERVICE || (ESERVICE = {}));
24
24
  export class S3 {
25
+ _link;
26
+ /** --- bucket 名 --- */
27
+ _bucket = '';
28
+ _ctr;
25
29
  constructor(ctr, opt) {
26
- /** --- bucket 名 --- */
27
- this._bucket = '';
28
30
  this._ctr = ctr;
29
31
  const config = ctr.getPrototype('_config');
30
32
  const account = opt.account ?? config.s3?.[ESERVICE[opt.service]]?.account ?? '';
package/lib/scan.js CHANGED
@@ -24,15 +24,14 @@ import * as lSql from '#kebab/lib/sql.js';
24
24
  import * as lTime from '#kebab/lib/time.js';
25
25
  import * as lText from '#kebab/lib/text.js';
26
26
  export class Scan {
27
+ _link;
28
+ _sql = null;
29
+ /** --- 表名或者 kv 里 key 的前缀 --- */
30
+ _name = 'scan';
31
+ _token = null;
32
+ /** --- 有效期,默认 5 分钟 --- */
33
+ _ttl = 60 * 5;
27
34
  constructor(link, token, opt = {}) {
28
- this._sql = null;
29
- /** --- 表名或者 kv 里 key 的前缀 --- */
30
- this._name = 'scan';
31
- this._token = null;
32
- /** --- 有效期,默认 5 分钟 --- */
33
- this._ttl = 60 * 5;
34
- /** --- 二维码剩余有效时间 --- */
35
- this._timeLeft = null;
36
35
  if (opt.ttl !== undefined) {
37
36
  this._ttl = opt.ttl;
38
37
  }
@@ -51,6 +50,8 @@ export class Scan {
51
50
  this._token = token;
52
51
  }
53
52
  }
53
+ /** --- 二维码剩余有效时间 --- */
54
+ _timeLeft = null;
54
55
  /**
55
56
  * --- 生成二维码处的轮询,检查是否被扫码、被录入数据 ---
56
57
  * @returns -3 系统错误 -2 token 不存在或已过期 -1 无操作, 0 已扫码, 其他返回为存的数据并结束轮询
package/lib/session.js CHANGED
@@ -24,12 +24,18 @@ import * as kv from '#kebab/lib/kv.js';
24
24
  import * as sql from '#kebab/lib/sql.js';
25
25
  import * as text from '#kebab/lib/text.js';
26
26
  export class Session {
27
- constructor() {
28
- /** --- 当前 Session 的 token --- */
29
- this._token = '';
30
- /** --- Session 有效期 --- */
31
- this._ttl = 0;
32
- }
27
+ /** --- 数据库操作对象 --- */
28
+ _link;
29
+ /** --- Sql 对象 --- */
30
+ _sql;
31
+ /** --- session 在前端或 Kv 中储存的名前缀 --- */
32
+ _name;
33
+ /** --- 当前 Session 的 token --- */
34
+ _token = '';
35
+ /** --- Session 有效期 --- */
36
+ _ttl = 0;
37
+ /** --- ctr 对象 --- */
38
+ _ctr;
33
39
  /**
34
40
  * --- 初始化函数,相当于 construct ---
35
41
  * @param ctr 模型实例
package/lib/sql.js CHANGED
@@ -11,20 +11,22 @@ export var ESERVICE;
11
11
  /** --- field 用 token --- */
12
12
  let columnToken = '';
13
13
  export class Sql {
14
+ /** --- ctr 对象 --- */
15
+ _ctr;
16
+ /** --- 前置 --- */
17
+ _pre = '';
18
+ /** --- 服务商 --- */
19
+ _service;
20
+ /** --- 预拼装 Sql 数组 --- */
21
+ _sql = [];
22
+ /** --- 所有 data 数据 --- */
23
+ _data = [];
24
+ /** --- 表别名列表 --- */
25
+ _alias = [];
26
+ /** --- PostgreSQL 占位符计数器 --- */
27
+ _placeholderCounter = 1;
14
28
  // --- 实例化 ---
15
29
  constructor(opt) {
16
- /** --- 前置 --- */
17
- this._pre = '';
18
- /** --- 预拼装 Sql 数组 --- */
19
- this._sql = [];
20
- /** --- 所有 data 数据 --- */
21
- this._data = [];
22
- /** --- 表别名列表 --- */
23
- this._alias = [];
24
- /** --- PostgreSQL 占位符计数器 --- */
25
- this._placeholderCounter = 1;
26
- /** --- where 的 data 的开始处和结束处 --- */
27
- this._whereDataPosition = [0, 0];
28
30
  this._ctr = opt.ctr;
29
31
  this._pre = opt.pre ?? '';
30
32
  this._service = opt.service ?? ESERVICE.MYSQL;
@@ -364,6 +366,8 @@ export class Sql {
364
366
  }
365
367
  return this;
366
368
  }
369
+ /** --- where 的 data 的开始处和结束处 --- */
370
+ _whereDataPosition = [0, 0];
367
371
  /**
368
372
  * --- 筛选器 ---
369
373
  * --- 1. 'city': 'bj', 'type': '2' ---
package/lib/ssh/sftp.js CHANGED
@@ -2,6 +2,10 @@
2
2
  import * as core from '#kebab/lib/core.js';
3
3
  import * as text from '#kebab/lib/text.js';
4
4
  export class Connection {
5
+ /** --- 连接对象 --- */
6
+ _client;
7
+ /** --- 当前路径,以 / 结尾 --- */
8
+ _path;
5
9
  constructor(sftp, path) {
6
10
  this._client = sftp;
7
11
  this._path = path;
package/lib/ssh/shell.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import * as lCore from '#kebab/lib/core.js';
2
2
  export class Connection {
3
+ /** --- 连接对象 --- */
4
+ _client;
3
5
  constructor(stream) {
4
6
  this._client = stream;
5
7
  }
package/lib/ssh.js CHANGED
@@ -10,6 +10,10 @@ import * as shell from './ssh/shell.js';
10
10
  import * as sftp from './ssh/sftp.js';
11
11
  /** 主连接对象 */
12
12
  export class Connection {
13
+ /** --- SSH 对象 --- */
14
+ _client;
15
+ /** --- 中转服务器 --- */
16
+ _mclient;
13
17
  constructor() {
14
18
  this._client = new ssh2.Client();
15
19
  }
package/lib/text.js CHANGED
@@ -334,12 +334,7 @@ export function isIdCardCN(idcard) {
334
334
  // --- 取模 ---
335
335
  const mod = total % BigInt(11);
336
336
  // --- 比较校验码 ---
337
- if (verifyCode === verifyCodeList[Number(mod)]) {
338
- return true;
339
- }
340
- else {
341
- return false;
342
- }
337
+ return verifyCode === verifyCodeList[Number(mod)];
343
338
  }
344
339
  /**
345
340
  * --- 将对象转换为 query string ---
@@ -357,7 +352,7 @@ export function queryStringify(query, encode = true) {
357
352
  }
358
353
  return Object.entries(query).map(([k, v]) => {
359
354
  if (Array.isArray(v)) {
360
- return v.map((i) => `${k}=${i}}`).join('&');
355
+ return v.map((i) => `${k}=${i}`).join('&');
361
356
  }
362
357
  return `${k}=${v}`;
363
358
  }).join('&');
package/lib/time.js CHANGED
@@ -21,13 +21,15 @@ const monthNames = [
21
21
  ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
22
22
  ];
23
23
  export class Time {
24
+ /** --- 当前 date --- */
25
+ _date;
26
+ /** --- 当前时区 --- */
27
+ _zone = 0;
24
28
  /**
25
29
  * --- 构造函数 ---
26
30
  * @param opt
27
31
  */
28
32
  constructor(ctr, opt) {
29
- /** --- 当前时区 --- */
30
- this._zone = 0;
31
33
  this._zone = opt.zone ?? ctr.getPrototype('_config').set.timezone ?? 0;
32
34
  if (opt.data) {
33
35
  if (typeof opt.data === 'number') {
package/lib/vector.js CHANGED
@@ -9,6 +9,8 @@ import * as sCtr from '#kebab/sys/ctr.js';
9
9
  /** --- milvus 的连接对象 --- */
10
10
  const links = [];
11
11
  export class Vector {
12
+ /** --- 当前的 vector 连接信息 --- */
13
+ _etc;
12
14
  constructor(etc) {
13
15
  this._etc = etc;
14
16
  }