dolphindb 0.0.12 → 0.0.15
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/README.zh.md +1 -0
- package/browser.d.ts +25 -3
- package/browser.js +91 -31
- package/browser.js.map +1 -1
- package/index.d.ts +29 -4
- package/index.js +108 -32
- package/index.js.map +1 -1
- package/package.json +2 -2
package/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["browser.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport 'xshell/prototype.browser'\nimport { concat } from 'xshell/utils.browser'\n\n\nexport enum DdbForm {\n scalar = 0,\n vector = 1,\n pair = 2,\n matrix = 3,\n set = 4,\n dict = 5,\n table = 6,\n chart = 7,\n chunk = 8,\n}\n\nexport enum DdbType {\n void = 0,\n bool = 1,\n char = 2,\n short = 3,\n int = 4,\n long = 5,\n date = 6,\n month = 7,\n time = 8,\n minute = 9,\n second = 10,\n datetime = 11,\n timestamp = 12,\n nanotime = 13,\n nanotimestamp = 14,\n float = 15,\n double = 16,\n symbol = 17,\n string = 18,\n uuid = 19,\n functiondef = 20,\n handle = 21,\n code = 22,\n datasource = 23,\n resource = 24,\n any = 25,\n compress = 26,\n dict = 27,\n datehour = 28,\n ipaddr = 30,\n int128 = 31,\n blob = 32,\n complex = 34,\n point = 35,\n duration = 36,\n object = 37,\n \n symbol_extended = 145,\n}\n\nexport enum DdbFunctionType {\n SystemFunc = 0,\n SystemProc = 1,\n OperatorFunc = 2,\n UserDefinedFunc = 3,\n PartialFunc = 4,\n DynamicFunc = 5,\n PiecewiseFunc = 6,\n JitFunc = 7,\n JitPartialFunc = 8,\n}\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\nexport interface DdbArrayVectorBlock {\n unit: 1 | 2 | 4\n rows: number\n lengths: Uint8Array | Uint16Array | Uint32Array\n data: DdbVectorValue\n}\n\n\nexport type DdbValue = null | boolean | number | [number, number] | bigint | string | string[] | Uint8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | Uint8Array[] | DdbObj[] | DdbFunctionDefValue | DdbSymbolExtendedValue | DdbArrayVectorBlock[]\n\n\nexport type DdbVectorValue = string | string[] | Uint8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | Uint8Array[] | DdbObj[] | DdbSymbolExtendedValue | DdbArrayVectorBlock[]\n\n\nexport const nulls = {\n char: '\\x80',\n int16: -0x80_00, // -32768\n int32: -0x80_00_00_00, // -21_4748_3648\n int64: -0x80_00_00_00_00_00_00_00n, // -922_3372_0368_5477_5808\n} as const\n\n\nexport const timezone_offset = 1000 * 60 * new Date().getTimezoneOffset()\n\n\n/** 可以表示所有 DolphinDB 数据库中的数据类型 */\nexport class DdbObj <T extends DdbValue = DdbValue> {\n static dec = new TextDecoder('utf-8')\n \n static enc = new TextEncoder()\n \n /** 维护已解析的 symbol base,比如流数据中后续的 symbol 向量可能只发送一个 base.id, base.size == 0, 依赖之前发送的 symbol base */\n static symbol_bases: Record<number, string[]> = { }\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否为小端 (little endian) */\n le = DdbObj.le_client\n \n /** 数据形式 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataForms/index.html */\n form: DdbForm\n \n /** 数据类型 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataTypes/index.html */\n type: DdbType\n \n /** 占用 parse 时传入的 buf 的长度 */\n length: number\n \n /** table name / column name */\n name?: string\n \n /**\n 最低维、第 1 维\n - vector: rows = n, cols = 1\n - pair: rows = 2, cols = 1\n - matrix: rows = n, cols = m\n - set: 同 vector\n - dict: 包含 keys, values 向量\n - table: 同 matrix\n */\n rows?: number\n \n /** 第 2 维 */\n cols?: number\n \n \n /** matrix 中值的类型,仅 matrix 才有 */\n datatype?: DdbType\n \n /** 实际数据。不同的 DdbForm, DdbType 使用 DdbValue 中不同的类型来表示实际数据 */\n value: T\n \n \n constructor (data: Partial<DdbObj> & { form: DdbForm, type: DdbType, length: number }) {\n Object.assign(this, data)\n }\n \n \n static parse (buf: Uint8Array, le: boolean) {\n if (!buf.length)\n return new this({\n le,\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n value: undefined\n })\n \n const type = buf[0]\n const form = buf[1]\n \n if (buf.length <= 2) {\n return new this({\n le,\n form,\n type,\n length: 2,\n value: null,\n })\n }\n \n // set 里面 data 嵌套了一个 vector, 跳过 vector 的 type 和 form\n const i_data = form === DdbForm.set ? 4 : 2\n const buf_data = buf.subarray(i_data)\n \n switch (form) {\n case DdbForm.scalar: {\n const [length, value] = this.parse_scalar(buf_data, le, type)\n return new this({\n le,\n form, \n type,\n length: 2 + length,\n value,\n })\n }\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n let vector = this.parse_vector(buf_data, le, type)\n vector.length += 2\n vector.form = form\n return vector\n }\n \n \n case DdbForm.table: {\n // table([\n // [1, 2] as a,\n // [1, 2] as b\n // ])\n \n // <Buffer \n // 00 06 form = table\n // 02 00 00 00 02 00 00 00 rows = 2, cols = 2\n // 00 行名称\n // 61 00 62 00 列名称 a, b\n \n // 04 01 form = vector, type = int\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 01 00 00 00 02 00 00 00 \n \n // 04 01 \n // 02 00 00 00 01 00 00 00 \n // 01 00 00 00 02 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const rows = dv.getUint32(0, le)\n const cols = dv.getUint32(4, le)\n const i_name_tail = buf_data.indexOf(0, 8)\n const name = this.dec.decode(\n buf_data.subarray(8, i_name_tail)\n )\n \n const i_items_start = i_name_tail + 1\n \n const [len_items, colnames] = this.parse_vector_items(\n buf_data.subarray(i_items_start),\n le,\n DdbType.string,\n cols\n ) as [number, string[]]\n \n let value = new Array(cols)\n let i_start = i_items_start + len_items\n for (let i = 0; i < cols; i++) {\n const type = buf_data[i_start] as DdbType\n \n const i_vector_head = i_start + 2\n \n let col = this.parse_vector(\n buf_data.subarray(i_vector_head),\n le,\n type\n )\n \n col.name = colnames[i]\n \n value[i] = col\n \n i_start = i_vector_head + col.length\n }\n \n return new this({\n le,\n form,\n type,\n length: i_start,\n name,\n rows,\n cols,\n value,\n })\n }\n \n \n case DdbForm.dict: {\n // <Buffer 19 05 type = any, form = dict\n // 12 01 keys.type = string, keys.form = vector\n // 03 00 00 00 01 00 00 00 keys.cols = 3, keys.rows = 1\n // 63 00 62 00 61 00 \n \n // 19 01 values.type = any, values.form = vector\n // 03 00 00 00 01 00 00 00 values.cols = 3, values.rows = 1\n // 04 00 03 00 00 00 04 00 02 00 00 00 04 00 01 00 00 00>\n \n let keys = this.parse_vector(\n buf_data.subarray(2),\n le,\n buf_data[0]\n )\n \n keys.length += 2\n \n let values = this.parse_vector(\n buf_data.subarray(keys.length + 2),\n le,\n buf_data[keys.length]\n )\n \n values.length += 2\n \n return new this({\n le,\n form,\n type,\n length: 2 + keys.length + values.length,\n rows: keys.rows,\n cols: 2,\n value: [\n keys,\n values\n ],\n })\n }\n \n \n case DdbForm.matrix: {\n // matrix([\n // [1, 2, 3],\n // [3, 2, 1]\n // ])\n \n // <Buffer 00 has_row_label = , has_col_label = \n // 04 03 type = int, form = matrix\n // 03 00 00 00 02 00 00 00 rows = 3, cols = 2\n // 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const label_flags = buf_data[0]\n const has_row_labels = Boolean(label_flags & 0x01)\n const has_col_labels = Boolean(label_flags & 0x02)\n \n if (has_row_labels || has_col_labels)\n throw new Error('matrix 暂不支持 row labels 和 col labels')\n \n const datatype = buf_data[1] as DdbType\n const rows = dv.getUint32(3, le)\n const cols = dv.getUint32(7, le)\n \n const [len_items, value] = this.parse_vector_items(\n buf_data.subarray(11),\n le,\n datatype,\n rows * cols // 假设小于 2**32\n )\n \n return new this({\n le,\n form, \n type,\n length: 11 + len_items,\n rows,\n cols,\n datatype,\n value,\n }) \n }\n \n \n default:\n return new this({\n le,\n form,\n type,\n length: buf_data.length,\n value: buf_data\n })\n }\n }\n \n \n static parse_scalar (buf: Uint8Array, le: boolean, type: DdbType): [number, DdbValue] {\n switch (type) {\n case DdbType.void:\n return [1, null]\n \n \n case DdbType.bool:\n return [1, Boolean(buf[0])]\n \n \n case DdbType.char:\n return [1, String.fromCharCode(buf[0])]\n \n \n case DdbType.short: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [2, dv.getInt16(0, le)]\n }\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime: \n case DdbType.datehour: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [4, dv.getInt32(0, le)]\n }\n \n \n case DdbType.float: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [4, dv.getFloat32(0, le)]\n }\n \n \n case DdbType.double: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [8, dv.getFloat64(0, le)]\n }\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [8, dv.getBigInt64(0, le)]\n }\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.functiondef: {\n const i_head = type === DdbType.functiondef ? 1 : 0\n let i_zero = buf.indexOf(0, i_head)\n let i_end: number // 整个字符串(包括 0)的末尾,excluding\n if (i_zero === -1)\n i_end = i_zero = buf.length\n else\n i_end = i_zero + 1\n // 调整了 i_zero 到字符串(不包括 0)的末尾,excluding\n \n const str = this.dec.decode(\n buf.subarray(i_head, i_zero)\n )\n \n return [\n i_end,\n type === DdbType.functiondef ?\n {\n type: buf[0] as DdbFunctionType,\n name: str\n }\n :\n str\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16,\n buf.slice(0, 16)\n ]\n \n \n case DdbType.blob: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const length = dv.getUint32(0, le)\n \n return [\n 4 + length,\n buf.slice(4, 4 + length)\n ]\n }\n \n \n case DdbType.complex:\n case DdbType.point: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 16,\n [\n dv.getFloat64(0, le),\n dv.getFloat64(8, le)\n ] as [number, number]\n ]\n }\n \n \n default:\n return [0, buf]\n }\n }\n \n \n /** parse: rows, cols, items \n 返回的 ddbobj.length 不包括 vector 的 type 和 form\n */\n static parse_vector (buf: Uint8Array, le: boolean, type: DdbType): DdbObj {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n \n const rows = dv.getUint32(0, le)\n \n let i_items_start = 8\n \n if (type < 64 || type >= 128) {\n const [len_items, value] = this.parse_vector_items(\n buf.subarray(i_items_start),\n le,\n type,\n rows\n )\n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_items_start + len_items,\n cols: 1,\n rows,\n value,\n })\n }\n \n \n // array vector\n \n // av = array(INT[], 0, 3)\n // append!(av, [1..4])\n // append!(av, [1..70000])\n // av\n \n // <Buffer 44 01 type = array vector, form = vector\n // 02 00 00 00 74 11 01 00 rows = 2, cols = 70004 (0x011174)\n \n // block 0\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 04 00 00 00 block.lengths = [4]\n // 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 block.data\n \n // block 1\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 70 11 01 00 block.lengths = [70000 (0x00011170)]\n // 01 00 00 00 02 00 00 00 ... 279992 more bytes> block.data\n \n const cols = dv.getUint32(4, le)\n \n let blocks: DdbArrayVectorBlock[] = [ ]\n \n let i_block_start = i_items_start\n \n // 解析一个 block\n for (let i_row = 0; i_row < rows; ) {\n /** 对应 array vector 中元素个数 */\n const rows = dv.getUint16(i_block_start, le)\n \n /** 每个 length 占用的字节数 */\n const unit = dv.getUint8(i_block_start + 2)\n \n /** array vector 每个元素的子元素长度 */\n let lengths: Uint32Array | Uint16Array | Uint8Array\n \n const i_lengths_start = i_block_start + 4\n const i_data_start = i_lengths_start + rows * unit\n \n const lengths_buf = buf.slice(\n i_lengths_start,\n i_data_start\n )\n \n switch (unit) {\n case 1:\n lengths = lengths_buf\n break\n \n case 2:\n lengths = new Uint16Array(lengths_buf.buffer)\n break\n \n case 4:\n lengths = new Uint32Array(lengths_buf.buffer)\n break\n \n default:\n throw new Error(`array vector 存在非法 unit = ${unit}`)\n }\n \n let total_length = 0\n for (const x of lengths)\n total_length += x\n \n const [len_items, data] = this.parse_vector_items(\n buf.subarray(i_data_start),\n le,\n type - 64,\n total_length\n )\n \n blocks.push({\n unit,\n rows,\n lengths,\n data\n })\n \n i_block_start = i_data_start + len_items\n \n i_row += rows\n }\n \n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_block_start,\n cols,\n rows,\n value: blocks\n })\n }\n \n \n /** 有可能没有字节对齐,不能直接使用原有 message 的 arraybuffer, 统一复制出来,让原有 arraybuffer 被回收掉比较好 */\n static parse_vector_items (\n buf: Uint8Array, \n le: boolean,\n type: DdbType, \n length: number\n ): [\n number, \n DdbVectorValue\n ] {\n switch (type) {\n case DdbType.bool:\n return [length, buf.slice(0, length)]\n \n \n case DdbType.char:\n return [\n length,\n this.dec.decode(\n buf.subarray(0, length)\n )\n ]\n \n \n case DdbType.short:\n return [\n 2 * length,\n new Int16Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 2 * length\n )\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n return [\n 4 * length,\n new Int32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.float:\n return [\n 4 * length,\n new Float32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.double:\n return [\n 8 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset, \n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n 8 * length,\n new BigInt64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.string: \n case DdbType.symbol: \n case DdbType.code: {\n let value = new Array<string>(length)\n let i_head = 0, i_tail = i_head\n for (let i = 0; i < length; i++) {\n i_tail = buf.indexOf(0, i_head)\n value[i] = this.dec.decode(\n buf.subarray(i_head, i_tail)\n )\n i_head = i_tail + 1\n }\n return [i_head, value]\n }\n \n \n case DdbType.symbol_extended: {\n // <Buffer 91 01 type = symbol extended, form = vector\n // 05 00 00 00 01 00 00 00 row = 5, col = 1\n \n // buf:\n // 00 00 00 00 symbol base id = 0 (uint32)\n // 02 00 00 00 symbol base size = 2\n // 00 61 61 00 以 \\0 分割的字符串\n // 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n const base_id = dv.getUint32(0, le)\n const base_size = dv.getUint32(4, le)\n \n let base_length = 0\n let base = this.symbol_bases[base_id]\n \n // base_size 为 0 时复用之前的 symbol base\n if (base_size) {\n [base_length, base] = this.parse_vector_items(\n buf.subarray(8),\n le,\n DdbType.string,\n base_size\n ) as [number, string[]]\n \n this.symbol_bases[base_id] = base\n }\n \n const value_start = 8 + base_length\n const value_end = value_start + length * 4\n \n const data = new Uint32Array(\n buf.buffer.slice(\n buf.byteOffset + value_start,\n buf.byteOffset + value_end\n )\n )\n \n return [\n value_end,\n {\n base_id,\n base,\n data\n }\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16 * length,\n new Uint8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.blob: {\n // <Buffer 20 01 type = blob, form = vector\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 04 00 00 00 61 62 63 64 \n // 04 00 00 00 61 62 63 64>\n \n let value = new Array<Uint8Array>(length)\n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const sublen = dv.getUint32(i_head, le)\n const i_blob_head = i_head + 4\n const i_blob_tail = i_blob_head + sublen\n value[i] = buf.slice(i_blob_head, i_blob_tail)\n i_head = i_blob_tail\n }\n \n return [i_head, value]\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [\n 16 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n \n let values = new Array<DdbObj>(length)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const obj = this.parse(\n buf.subarray(i_head),\n le\n )\n values[i] = obj\n i_head += obj.length\n }\n \n return [\n i_head,\n values\n ]\n }\n \n \n default:\n return [0, buf]\n }\n }\n \n \n pack (): Uint8Array {\n const { form, type, value } = this\n \n let header = new Uint8Array(new ArrayBuffer(2))\n header[0] = type\n header[1] = form\n \n const body = (() => {\n switch (form) {\n case DdbForm.scalar:\n switch (type) {\n case DdbType.void:\n return [Uint8Array.of(1)]\n \n case DdbType.bool:\n return [Uint8Array.of(Number(value as boolean))]\n \n \n case DdbType.char:\n return [Uint8Array.of((value as string).charCodeAt(0))]\n \n \n case DdbType.short:\n return [Int16Array.of(value as number)]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [Int32Array.of(value as number)]\n \n \n case DdbType.float:\n return [Float32Array.of(value as number)]\n \n \n case DdbType.double:\n return [Float64Array.of(value as number)]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [BigInt64Array.of(this.value as bigint)]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n return [\n DdbObj.enc.encode(value as string),\n Uint8Array.of(0),\n ]\n \n case DdbType.functiondef:\n return [\n Uint8Array.of((value as DdbFunctionDefValue).type),\n DdbObj.enc.encode((value as DdbFunctionDefValue).name),\n Uint8Array.of(0)\n ]\n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [this.value as Uint8Array]\n \n \n case DdbType.blob:\n return [\n Uint32Array.of(\n (this.value as Uint8Array).byteLength\n ),\n this.value as Uint8Array\n ]\n \n \n case DdbType.complex:\n case DdbType.point:\n return [Float64Array.from(this.value as [number, number])]\n \n \n case DdbType.duration:\n return [value as Uint8Array]\n \n case DdbType.handle:\n throw new Error('DolphinDB Server 不支持 handle 的反序列化')\n \n default:\n throw new Error(`${DdbType[type]} 暂时不支持序列化`)\n }\n \n \n case DdbForm.vector:\n case DdbForm.pair:\n // pack array vector\n if (form === DdbForm.vector && 64 <= type && type < 128)\n return [\n Uint32Array.of(this.rows, this.cols),\n ... (this.value as DdbArrayVectorBlock[]).map(block => ([\n Uint16Array.of(block.rows),\n Uint8Array.of(block.unit, 0),\n block.lengths,\n block.data as any\n ])).flat()\n ]\n \n return [\n Uint32Array.of(this.rows, 1),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, type, this.rows)\n ]\n \n \n case DdbForm.set:\n return [\n new DdbObj({\n ...this,\n form: DdbForm.vector,\n }).pack()\n ]\n \n \n case DdbForm.table:\n return [\n Uint32Array.of(this.rows, this.cols),\n DdbObj.enc.encode(this.name),\n Uint8Array.of(0),\n ...DdbObj.pack_vector_body(\n (this.value as DdbObj[]).map(col => col.name),\n DdbType.string, \n this.cols\n ),\n ...(() => {\n let cols = new Array<Uint8Array>(this.cols)\n for (let i = 0; i < cols.length; i++)\n cols[i] = (this.value as DdbObj[])[i].pack()\n return cols\n })()\n ]\n \n \n case DdbForm.dict:\n return [\n (value as [DdbObj, DdbObj])[0].pack(),\n (value as [DdbObj, DdbObj])[1].pack(),\n ]\n \n \n case DdbForm.matrix:\n return [\n Uint8Array.of(0, this.datatype, this.form),\n Uint32Array.of(this.rows, this.cols),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, this.datatype, this.rows * this.cols)\n ]\n \n \n default:\n throw new Error(`${DdbForm[form]} 暂不支持序列化`)\n }\n })()\n \n \n if (!body)\n return new Uint8Array(0)\n \n return concat([\n header,\n ...body\n ])\n }\n \n \n static pack_vector_body (\n value: DdbVectorValue,\n type: DdbType,\n length: number\n ): ArrayBufferView[] {\n switch (type) {\n case DdbType.bool:\n return [value as Uint8Array]\n \n \n case DdbType.char:\n return [this.enc.encode(value as string)]\n \n \n case DdbType.short:\n return [value as Int16Array]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n return [value as Int32Array]\n \n \n case DdbType.float:\n return [value as Float32Array]\n \n \n case DdbType.double:\n return [value as Float64Array]\n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [value as BigInt64Array]\n \n \n case DdbType.string: \n case DdbType.symbol: \n case DdbType.code: {\n let bufs = new Array<Uint8Array>(length * 2)\n for (let i = 0; i < length; i++) {\n bufs[2 * i] = this.enc.encode((value as string[])[i])\n bufs[2 * i + 1] = Uint8Array.of(0)\n }\n return bufs\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [value as Uint8Array]\n \n \n case DdbType.blob: {\n let bufs = new Array<ArrayBufferView>(length * 2)\n for (let i = 0; i < length; i++) {\n const blob_value = (value as Uint8Array[])[i]\n bufs[2 * i] = Uint32Array.of(blob_value.length)\n bufs[2 * i + 1] = blob_value\n }\n return bufs\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [value as Float64Array]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n let bufs = new Array<Uint8Array>(length)\n for (let i = 0; i < length; i++)\n bufs[i] = (value as DdbObj[])[i].pack()\n return bufs\n }\n \n \n case DdbType.symbol_extended: {\n const { base_id, base, data } = value as DdbSymbolExtendedValue\n \n return [\n Uint32Array.of(\n base_id,\n base.length,\n ),\n ...this.pack_vector_body(base, DdbType.string, base.length),\n data\n ]\n }\n \n default:\n throw new Error(`vector ${DdbType[type]} 暂不支持序列化`)\n }\n }\n \n \n toString () {\n const type = (() => {\n const tname = DdbType[this.type]\n \n switch (this.form) {\n case DdbForm.scalar:\n if (this.type === DdbType.functiondef)\n return `functiondef<${DdbFunctionType[(this.value as DdbFunctionDefValue).type]}>`\n return tname\n \n case DdbForm.vector:\n if (64 <= this.type && this.type < 128)\n return `${DdbType[this.type - 64]}[][${this.rows}]`\n return `${tname}[${this.rows}]`\n \n case DdbForm.pair:\n return `pair<${tname}>`\n \n case DdbForm.set:\n return `set<${tname}>`\n \n case DdbForm.table:\n return `table[${this.rows} rows][${this.cols} cols]`\n \n case DdbForm.dict:\n return `dict<${DdbType[(this.value[0] as DdbObj).type]}, ${DdbType[(this.value[1] as DdbObj).type]}>`\n \n case DdbForm.matrix:\n return `matrix<${DdbType[this.datatype]}>[${this.rows} rows][${this.cols} cols]`\n \n default:\n return `${DdbForm[this.form]} ${tname}`\n }\n })()\n \n const data = (() => {\n if (this.form === DdbForm.pair)\n return `${this.value[0]}, ${this.value[1]}`\n \n if (this.form === DdbForm.scalar && this.type === DdbType.functiondef)\n return `'${(this.value as DdbFunctionDefValue).name}'`\n \n return this.value\n })()\n \n return `${type}(${ this.name ? `'${this.name}', ` : '' }${data})\\n`\n }\n \n \n to_cols () {\n return (this.value as DdbObj[]).map(col => {\n let col_: {\n title: string\n dataIndex: string\n render?: any\n } = {\n title: col.name,\n dataIndex: col.name,\n }\n \n switch (col.type) {\n case DdbType.timestamp:\n col_.render = timestamp2str\n break\n \n case DdbType.date:\n col_.render = date2str\n break\n \n case DdbType.ipaddr:\n col_.render = value =>\n (value as Uint8Array).slice().reverse().join('.').replace(/^(0\\.)+/, '')\n break\n }\n \n return col_\n })\n }\n \n \n to_rows <T extends Record<string, any> = Record<string, any>> () {\n let rows = new Array<T>(this.rows)\n \n for (let i = 0; i < this.rows; i++) {\n let row: any = { }\n for (let j = 0; j < this.cols; j++) {\n const c: DdbObj = this.value[j]\n \n if (c.type === DdbType.ipaddr) {\n row[c.name] = (c.value as Uint8Array).subarray(16 * i, 16 * (i + 1))\n continue\n }\n \n row[c.name] = c.value[i]\n }\n rows[i] = row\n }\n \n return rows\n }\n \n \n to_dict <T = Record<string, any>> () {\n if (this.form !== DdbForm.dict)\n throw new Error('this.form is not DdbForm.dict, cannot convert to Object')\n \n const [{ value: keys }, { value: values }] = this.value as [DdbObj<DdbObj[]>, DdbObj<DdbObj[]>]\n \n let obj = { }\n \n for (let i = 0; i < this.rows; i++)\n obj[keys[i] as any] = values[i].value\n \n return obj as T\n }\n}\n\n\nexport class DdbVoid extends DdbObj<undefined> {\n constructor () {\n super({\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n })\n }\n}\n\n\nexport class DdbBool extends DdbObj<boolean> {\n constructor (value: boolean) {\n super({\n form: DdbForm.scalar,\n type: DdbType.bool,\n length: 1,\n value,\n })\n }\n}\n\nexport class DdbChar extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.char,\n length: 1,\n value,\n })\n }\n}\n\nexport class DdbInt extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.int,\n length: 4,\n value\n })\n }\n}\n\nexport class DdbString extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.string,\n length: 0,\n value\n })\n }\n}\n\nexport class DdbLong extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.long,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbDouble extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.double,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbDateTime extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.datetime,\n length: 4,\n value\n })\n }\n}\n\nexport class DdbTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.timestamp,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbNanoTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.nanotimestamp,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbVectorInt extends DdbObj<Int32Array> {\n constructor (value: number[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.int,\n length: 0,\n rows: value.length,\n cols: 1,\n value: Int32Array.from(value),\n name,\n })\n }\n}\n\nexport class DdbVectorString extends DdbObj<string[]> {\n constructor (value: string[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.string,\n length: 0,\n rows: value.length,\n cols: 1,\n value,\n name,\n })\n }\n}\n\nexport class DdbVectorDouble extends DdbObj<Float64Array> {\n constructor (value: number[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: value.length,\n cols: 1,\n value: Float64Array.from(value),\n name,\n })\n }\n}\n\nexport class DdbVectorAny extends DdbObj {\n constructor (value: DdbObj<DdbValue>[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.any,\n length: 0,\n rows: value.length,\n cols: 1,\n value,\n name,\n })\n }\n}\n\nexport class DdbPair extends DdbObj<Int32Array> {\n constructor (l: number, r = -2147483648) {\n super({\n form: DdbForm.pair,\n type: DdbType.int,\n length: 0,\n rows: 2,\n cols: 1,\n value: Int32Array.of(l, r)\n })\n }\n}\n\nexport class DdbFunction extends DdbObj<DdbFunctionDefValue> {\n constructor (name: string, type: DdbFunctionType) {\n super({\n form: DdbForm.scalar,\n type: DdbType.functiondef,\n length: 0,\n value: { type, name }\n })\n }\n}\n\n\nexport function date2str (date: number, format = 'YYYY.MM.DD') {\n return date === nulls.int32 ? \n ''\n :\n dayjs(\n timezone_offset + 1000 * 3600 * 24 * date\n ).format(format)\n}\n\nexport function datetime2str (datetime: number, format = 'YYYY.MM.DD HH:mm:ss') {\n return datetime === nulls.int32 ?\n ''\n :\n dayjs(\n timezone_offset + 1000 * datetime\n ).format(format)\n}\n\nexport function timestamp2str (timestamp: bigint) {\n return timestamp === nulls.int64 ?\n ''\n :\n dayjs(\n timezone_offset + Number(timestamp)\n ).format('YYYY.MM.DD HH:mm:ss.SSS')\n}\n\nexport function nanotimestamp2str (nanotimestamp: bigint, format = 'YYYY.MM.DD HH:mm:ss') {\n return nanotimestamp === nulls.int64 ?\n ''\n :\n dayjs(\n timezone_offset + (Number(nanotimestamp) / 1000000)\n ).format(format) + `.${nanotimestamp % 1000000000n}`\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, 如果为空字符串会返回对应的空值 (nulls.int64)\n - format?: Format string up to and including seconds of the passed string, default is `YYYY.MM.DD HH:mm:ss`\n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss') {\n if (!str)\n return nulls.int64\n \n if (str.length - format.length !== 9)\n throw new Error('nanotimestamp 字符串长度减格式串长度应该等于 9')\n \n return (\n BigInt(\n -timezone_offset +\n dayjs(\n str.slice(0, format.length),\n format\n ).valueOf()\n ) * 1000000n\n +\n BigInt(\n str.slice(format.length)\n )\n )\n}\n\n\nexport class DDB {\n /** 当前的 session id (http 或 tcp) */\n sid = '0'\n \n /** utf-8 text decoder */\n dec = new TextDecoder('utf-8')\n \n enc = new TextEncoder()\n \n \n /** DolphinDB WebSocket URL\n e.g. `ws://127.0.0.1:8848/`, `wss://dolphindb.com`\n */\n url: string\n \n websocket = null as WebSocket\n \n /** little endian (server) */\n le = true\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** python session flag (2048) */\n python = false\n \n message_hook = null as (message: Uint8Array) => any\n \n /** print message handler */\n printer (message: string) {\n console.log(message)\n }\n \n /** resolver, rejector, promise of last rpc */\n presolver (buf: Uint8Array) { }\n prejector (error: Error) { }\n presult = Promise.resolve(null) as Promise<Uint8Array>\n \n /**\n Initialize an instance of DolphinDB Client using the WebSocket URL \n (without establishing an actual network connection)\n @example\n let ddb = new DDB('ws://127.0.0.1:8848')\n let ddb_secure = new DDB('wss://dolphindb.com')\n */\n constructor (url?: string) {\n if (!url) {\n const _url = new URL(location.href)\n \n const hostname = _url.searchParams.get('hostname') || location.hostname\n \n const port = _url.searchParams.get('port') || location.port\n \n url = `${ location.protocol === 'https:' ? 'wss' : 'ws' }://${hostname}${ port ? `:${port}` : '' }/`\n }\n \n this.url = url\n }\n \n \n /** Establish the actual WebSocket connection to the DolphinDB corresponding to the URL */\n async connect (\n {\n url = this.url,\n login = true,\n username = 'admin',\n password = '123456',\n python = false,\n }: {\n /** By default, the WebSocket URL passed in when the instance is initialized is used */\n url?: string\n \n /** Whether to automatically log in after the connection is established, the default is true */\n login?: boolean\n \n /** DolphinDB username */\n username?: string\n \n /** DolphinDB password */\n password?: string\n \n /** set python session flag */\n python?: boolean\n } = { }\n ) {\n this.url = url\n this.python = python\n \n if (this.websocket?.readyState === WebSocket.OPEN)\n this.disconnect()\n \n let websocket = new WebSocket(\n url,\n python ? ['python'] : [ ]\n )\n \n // https://stackoverflow.com/questions/11821096/what-is-the-difference-between-an-arraybuffer-and-a-blob/39951543\n websocket.binaryType = 'arraybuffer'\n \n this.websocket = websocket\n \n await new Promise<void>((resolve, reject) => {\n websocket.addEventListener('open', async event => {\n console.log(`${websocket.url} opened`)\n \n await this.rpc('connect', { })\n resolve()\n })\n \n websocket.addEventListener('close', event => {\n console.log(`${websocket.url} closed with code = ${event.code}, reason = '${event.reason}'`)\n })\n \n websocket.addEventListener('error', event => {\n const message = `${websocket.url} errored`\n console.error(message, event)\n reject(\n Object.assign(\n new Error(message),\n { event }\n )\n )\n })\n \n websocket.addEventListener('message', event => {\n const buf = new Uint8Array(event.data as ArrayBuffer)\n \n if (this.message_hook)\n this.message_hook(buf)\n \n try {\n const { type, data } = this.parse_message(buf)\n \n if (type === 'message') {\n this.printer(data)\n return\n }\n \n this.presolver(data)\n } catch (error) {\n this.prejector(error)\n }\n })\n })\n \n if (!this.python)\n await this.eval(\n 'def pnode_run (nodes, func_name, args, add_node_alias = true) {\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if (!nargs)\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = array(any, 1 + nargs, 1 + nargs)\\n' +\n ' args_partial[0] = func\\n' +\n ' args_partial[1:] = args\\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n' +\n '}\\n',\n { urgent: true }\n )\n \n if (login)\n await this.call('login', [username, password], { urgent: true })\n }\n \n \n get_rpc_options ({\n urgent = false,\n secondary = false,\n async: _async = false,\n pickle = false,\n clear = false,\n api = false,\n compress = false,\n \n cancellable = true,\n priority = urgent ? 8 : 4,\n parallelism = 8,\n root_id = '',\n limit,\n }: {\n // --- flags ---\n urgent?: boolean\n \n /** API 提交的任务, secondary 必须为 false */\n secondary?: boolean\n \n /** 是否异步任务(不返回结果) */\n async?: boolean\n \n /** 让服务端以 pickle 协议返回数据 */\n pickle?: boolean\n \n /** 本次任务完成后 clear session memory */\n clear?: boolean\n \n /** 是否为 api client */\n api?: boolean\n \n compress?: boolean\n \n // --- flags end ---\n \n /** 任务是否可以取消 */\n cancellable?: boolean\n \n priority?: number\n \n /** `8` 0 ~ 64, 指定本任务并行度 */\n parallelism?: number\n \n /** 根任务编号,内部使用,API中固定为空 */\n root_id?: string\n \n /** 指定分块返回的块大小 */\n limit?: boolean\n } = { }) {\n let flag = 0\n if (urgent)\n flag += 1\n if (secondary)\n flag += 2\n if (_async)\n flag += 4\n if (pickle)\n flag += 8\n if (clear)\n flag += 16\n if (api)\n flag += 32\n if (compress)\n flag += 64\n \n // python session\n if (this.python)\n flag += 2048\n \n const options = [\n flag,\n cancellable ? 1 : 0,\n priority,\n parallelism,\n ... limit ? [\n root_id,\n limit,\n ] : [ ],\n ]\n \n return `/ ${options.join('_')}`\n }\n \n \n disconnect () {\n this.websocket?.close(1000)\n }\n \n \n /** rpc through websocket (function/script/variable command) \n - type: API 类型: 'script' | 'function' | 'variable'\n - options:\n - urgent?: 决定 `行为标识` 那一行字符串的取值(只适用于 script 和 function)\n - vars?: type === 'variable' 时必传,variable 指令中待上传的变量名\n */\n async rpc <T extends DdbObj = DdbObj> (\n type: 'script' | 'function' | 'variable' | 'connect',\n {\n script,\n func,\n args = [ ],\n vars = [ ],\n urgent,\n }: {\n script?: string\n func?: string\n args?: (DdbObj | string | boolean)[]\n vars?: string[]\n urgent?: boolean\n }) {\n if (!this.websocket)\n await this.connect()\n \n if (this.websocket.readyState !== WebSocket.OPEN)\n throw new Error(`${this.url} is already disconnected`)\n \n // 临界区:保证多个 rpc 并发时形成 promise 链\n // ddb 世界观:需要等待上一个 rpc 结果从 server 返回之后才能发起下一个调用 \n // 违反世界观可能造成: \n // 1. 并发多个请求只返回第一个结果(阻塞,需后续请求疏通)\n // 2. windows 下 ddb server 返回多个相同的结果\n \n const ptail = this.presult\n let presolver: (buf: Uint8Array) => void\n let prejector: (error: Error) => void\n \n const presult = this.presult = new Promise<Uint8Array>((resolve, reject) => {\n presolver = resolve\n prejector = reject\n })\n \n try {\n await ptail\n } catch { }\n \n this.presolver = presolver\n this.prejector = prejector\n // 临界区结束,只有一个 rpc 请求可以写 WebSocket\n \n if (urgent && type !== 'script' && type !== 'function')\n throw new Error('urgent 只适用于 script 和 funciton')\n \n this.to_ddbobjs(args)\n \n const command = this.enc.encode(\n (() => {\n switch (type) {\n case 'function':\n return 'function\\n' +\n `${func}\\n` +\n `${args.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'script':\n return 'script\\n' +\n script\n \n case 'variable':\n return 'variable\\n' +\n `${vars.join(',')}\\n` +\n `${vars.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'connect':\n return 'connect\\n'\n }\n })()\n )\n \n const message = concat([\n this.enc.encode(\n `API2 ${this.sid} ${command.length}${this.get_rpc_options({ urgent })}\\n`\n ),\n command,\n ... args.map((arg: DdbObj) =>\n arg.pack()\n )\n ])\n \n this.websocket.send(message)\n \n return DdbObj.parse(\n await presult, // data_buf\n this.le\n ) as T\n }\n \n \n /** eval script through websocket (script command) */\n async eval <T extends DdbObj> (\n /** 执行的脚本 */\n script: string,\n \n /** 执行选项 */\n {\n urgent\n }: {\n /** 紧急 flag,确保提交的脚本使用 urgent worker 处理,防止被其它作业阻塞 */\n urgent?: boolean\n } = { }\n ) {\n return this.rpc<T>('script', { script, urgent })\n }\n \n \n /** call function through websocket (function command) \n - func: 函数名\n - args?: `[ ]` 调用参数 (传入的原生 string 和 boolean 会被自动转换为 DdbObj<string> 和 DdbObj<boolean>)\n - options?: 调用选项\n - urgent?: 紧急 flag。使用 urgent worker 执行,防止被其它作业阻塞\n - node?: 设置结点 alias 时发送到集群中对应的结点执行 (使用 DolphinDB 中的 rpc 方法)\n - nodes?: 设置多个结点 alias 时发送到集群中对应的多个结点执行 (使用 DolphinDB 中的 pnodeRun 方法)\n - func_type?: 设置 node 参数时必传,需指定函数类型,其它情况下不传\n - add_node_alias?: 设置 nodes 参数时选传,其它情况不传\n */\n async call <T extends DdbObj> (\n func: string,\n args: (DdbObj | string | boolean)[] = [ ],\n {\n urgent,\n node,\n nodes,\n func_type,\n add_node_alias\n }: {\n urgent?: boolean\n node?: string\n nodes?: string[]\n func_type?: DdbFunctionType\n add_node_alias?: boolean\n } = { }\n ) {\n if (this.python)\n throw new Error('call doesn\\'t support python session yet')\n \n if (node) {\n if (typeof func_type === 'undefined')\n throw new Error('指定 node 时必须设置 func_type')\n \n args = [\n node,\n new DdbFunction(func, func_type),\n ...args\n ]\n func = 'rpc'\n }\n \n if (nodes) {\n args = [\n new DdbVectorString(nodes),\n func,\n new DdbVectorAny(\n this.to_ddbobjs(args)\n ),\n ... (() => {\n if (typeof add_node_alias !== 'undefined')\n return [add_node_alias]\n \n if (this.python)\n return [true]\n \n return [ ]\n })()\n ]\n func = 'pnode_run'\n }\n \n return this.rpc<T>('function', {\n func,\n args,\n urgent,\n })\n }\n \n \n /** upload variable through websocket (variable command) */\n async upload (\n /** Uploaded variables' name */\n vars: string[],\n \n /** Uploaded variables' value */\n args: (DdbObj | string | boolean)[]\n ) {\n if (!args.length || args.length !== vars.length)\n throw new Error('variable 指令参数为空或参数名为空,或数量不匹配')\n \n return this.rpc('variable', { vars, args })\n }\n \n \n /** 解析服务端响应报文,返回去掉 header 的 data buf */\n parse_message (buf: Uint8Array) {\n // MSG\\n\n // <message>\\0\n // 'M'.codePointAt(0).to_hex_str()\n if (buf[0] === 0x4d && buf[1] === 0x53 && buf[2] === 0x47 && buf[3] === 0x0a)\n return {\n type: 'message' as const,\n data: \n this.dec.decode(\n buf.subarray(4)\n )\n }\n \n \n // '1166953221 1 1\\n'\n // 'OK\\n'\n // '\\x04\\x00\\x02\\x00\\x00\\x00'\n \n /** index of line feed 0 */\n const i_lf_0 = buf.indexOf(0x0a) // '\\n'\n \n const parts = this.dec.decode(\n buf.subarray(0, i_lf_0)\n ).split(' ')\n \n /** session id */\n const sid = parts[0]\n if (sid !== this.sid) {\n console.log(`sid 从 ${this.sid} 变为 ${sid}`)\n this.sid = sid\n }\n \n /** 返回对象的数量 */\n const n_obj = Number(parts[1])\n \n /** 大小端: 协议中大端为 0, 小端为 1 */\n this.le = Number(parts[2]) !== 0\n \n const i_ls_1 = i_lf_0 + 1\n const i_lf_1 = buf.indexOf(0x0a, i_ls_1) // '\\n'\n /** 'OK' 表示成功,其它文本表示失败 */\n const message = this.dec.decode(\n buf.subarray(i_ls_1, i_lf_1)\n )\n \n if (message !== 'OK')\n throw new Error(message)\n \n return {\n type: 'object' as const,\n data: buf.subarray(i_lf_1 + 1)\n }\n }\n \n \n /** 自动转换 js string, boolean 为 DdbObj */\n to_ddbobj (value: DdbObj | string | boolean): DdbObj {\n if (value instanceof DdbObj)\n return value\n \n const type = typeof value\n \n switch (type) {\n case 'string':\n return new DdbString(value as string)\n \n case 'boolean':\n return new DdbBool(value as boolean)\n \n default: \n throw new Error(`不能自动转换 ${type} 至 DdbObj`)\n }\n }\n \n \n /** 转换 js 数组为 DdbObj[] (in place, 会修改原数组) */\n to_ddbobjs (values: any[]) {\n for (let i = 0; i < values.length; i++)\n values[i] = this.to_ddbobj(values[i])\n return values as DdbObj<DdbValue>[]\n }\n}\n\nexport let ddb = (window as any).ddb = new DDB()\n\nexport default ddb\n"]}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["browser.ts"],"names":[],"mappings":"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","sourcesContent":["import dayjs from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport 'xshell/prototype.browser'\nimport { concat } from 'xshell/utils.browser'\n\n\nexport enum DdbForm {\n scalar = 0,\n vector = 1,\n pair = 2,\n matrix = 3,\n set = 4,\n dict = 5,\n table = 6,\n chart = 7,\n chunk = 8,\n}\n\nexport enum DdbType {\n void = 0,\n bool = 1,\n char = 2,\n short = 3,\n int = 4,\n long = 5,\n date = 6,\n month = 7,\n time = 8,\n minute = 9,\n second = 10,\n datetime = 11,\n timestamp = 12,\n nanotime = 13,\n nanotimestamp = 14,\n float = 15,\n double = 16,\n symbol = 17,\n string = 18,\n uuid = 19,\n functiondef = 20,\n handle = 21,\n code = 22,\n datasource = 23,\n resource = 24,\n any = 25,\n compress = 26,\n dict = 27,\n datehour = 28,\n ipaddr = 30,\n int128 = 31,\n blob = 32,\n complex = 34,\n point = 35,\n duration = 36,\n object = 37,\n \n symbol_extended = 145,\n}\n\nexport enum DdbFunctionType {\n SystemFunc = 0,\n SystemProc = 1,\n OperatorFunc = 2,\n UserDefinedFunc = 3,\n PartialFunc = 4,\n DynamicFunc = 5,\n PiecewiseFunc = 6,\n JitFunc = 7,\n JitPartialFunc = 8,\n}\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\nexport interface DdbArrayVectorBlock {\n unit: 1 | 2 | 4\n rows: number\n lengths: Uint8Array | Uint16Array | Uint32Array\n data: DdbVectorValue\n}\n\n\nexport type DdbValue = null | boolean | number | [number, number] | bigint | string | string[] | Uint8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | Uint8Array[] | DdbObj[] | DdbFunctionDefValue | DdbSymbolExtendedValue | DdbArrayVectorBlock[]\n\n\nexport type DdbVectorValue = string | string[] | Uint8Array | Int16Array | Int32Array | Float32Array | Float64Array | BigInt64Array | Uint8Array[] | DdbObj[] | DdbSymbolExtendedValue | DdbArrayVectorBlock[]\n\n\nexport const nulls = {\n char: '\\x80',\n int16: -0x80_00, // -32768\n int32: -0x80_00_00_00, // -21_4748_3648\n int64: -0x80_00_00_00_00_00_00_00n, // -922_3372_0368_5477_5808\n} as const\n\n\nexport const timezone_offset = 1000 * 60 * new Date().getTimezoneOffset()\n\n\n/** 可以表示所有 DolphinDB 数据库中的数据类型 */\nexport class DdbObj <T extends DdbValue = DdbValue> {\n static dec = new TextDecoder('utf-8')\n \n static enc = new TextEncoder()\n \n /** 维护已解析的 symbol base,比如流数据中后续的 symbol 向量可能只发送一个 base.id, base.size == 0, 依赖之前发送的 symbol base */\n static symbol_bases: Record<number, string[]> = { }\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** 是否为小端 (little endian) */\n le = DdbObj.le_client\n \n /** 数据形式 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataForms/index.html */\n form: DdbForm\n \n /** 数据类型 https://www.dolphindb.cn/cn/help/DataTypesandStructures/DataTypes/index.html */\n type: DdbType\n \n /** 占用 parse 时传入的 buf 的长度 */\n length: number\n \n /** table name / column name */\n name?: string\n \n /**\n 最低维、第 1 维\n - vector: rows = n, cols = 1\n - pair: rows = 2, cols = 1\n - matrix: rows = n, cols = m\n - set: 同 vector\n - dict: 包含 keys, values 向量\n - table: 同 matrix\n */\n rows?: number\n \n /** 第 2 维 */\n cols?: number\n \n \n /** matrix 中值的类型,仅 matrix 才有 */\n datatype?: DdbType\n \n /** 实际数据。不同的 DdbForm, DdbType 使用 DdbValue 中不同的类型来表示实际数据 */\n value: T\n \n \n constructor (data: Partial<DdbObj> & { form: DdbForm, type: DdbType, length: number }) {\n Object.assign(this, data)\n }\n \n \n static parse (buf: Uint8Array, le: boolean) {\n if (!buf.length)\n return new this({\n le,\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n value: undefined\n })\n \n const type = buf[0]\n const form = buf[1]\n \n if (buf.length <= 2) {\n return new this({\n le,\n form,\n type,\n length: 2,\n value: null,\n })\n }\n \n // set 里面 data 嵌套了一个 vector, 跳过 vector 的 type 和 form\n const i_data = form === DdbForm.set ? 4 : 2\n const buf_data = buf.subarray(i_data)\n \n switch (form) {\n case DdbForm.scalar: {\n const [length, value] = this.parse_scalar(buf_data, le, type)\n return new this({\n le,\n form, \n type,\n length: i_data + length,\n value,\n })\n }\n \n case DdbForm.vector:\n case DdbForm.pair:\n case DdbForm.set: {\n let vector = this.parse_vector(buf_data, le, type)\n vector.length += i_data\n vector.form = form\n return vector\n }\n \n \n case DdbForm.table: {\n // table([\n // [1, 2] as a,\n // [1, 2] as b\n // ])\n \n // <Buffer \n // 00 06 form = table\n // 02 00 00 00 02 00 00 00 rows = 2, cols = 2\n // 00 行名称\n // 61 00 62 00 列名称 a, b\n \n // 04 01 form = vector, type = int\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 01 00 00 00 02 00 00 00 \n \n // 04 01 \n // 02 00 00 00 01 00 00 00 \n // 01 00 00 00 02 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const rows = dv.getUint32(0, le)\n const cols = dv.getUint32(4, le)\n const i_name_tail = buf_data.indexOf(0, 8)\n const name = this.dec.decode(\n buf_data.subarray(8, i_name_tail)\n )\n \n const i_items_start = i_name_tail + 1\n \n const [len_items, colnames] = this.parse_vector_items(\n buf_data.subarray(i_items_start),\n le,\n DdbType.string,\n cols\n ) as [number, string[]]\n \n let value = new Array(cols)\n let i_start = i_items_start + len_items\n for (let i = 0; i < cols; i++) {\n const type = buf_data[i_start] as DdbType\n \n let col = this.parse_vector(\n buf_data.subarray(i_start + 2),\n le,\n type\n )\n \n col.length += 2\n \n col.name = colnames[i]\n \n value[i] = col\n \n i_start += col.length\n }\n \n return new this({\n le,\n form,\n type,\n length: i_data + i_start,\n name,\n rows,\n cols,\n value,\n })\n }\n \n \n case DdbForm.dict: {\n // <Buffer 19 05 type = any, form = dict\n // 12 01 keys.type = string, keys.form = vector\n // 03 00 00 00 01 00 00 00 keys.cols = 3, keys.rows = 1\n // 63 00 62 00 61 00 \n \n // 19 01 values.type = any, values.form = vector\n // 03 00 00 00 01 00 00 00 values.cols = 3, values.rows = 1\n // 04 00 03 00 00 00 04 00 02 00 00 00 04 00 01 00 00 00>\n \n let keys = this.parse_vector(\n buf_data.subarray(2),\n le,\n buf_data[0]\n )\n \n keys.length += 2\n \n let values = this.parse_vector(\n buf_data.subarray(keys.length + 2),\n le,\n buf_data[keys.length]\n )\n \n values.length += 2\n \n return new this({\n le,\n form,\n type,\n length: i_data + keys.length + values.length,\n rows: keys.rows,\n cols: 2,\n value: [\n keys,\n values\n ],\n })\n }\n \n \n case DdbForm.matrix: {\n // matrix([\n // [1, 2, 3],\n // [3, 2, 1]\n // ])\n \n // <Buffer 00 has_row_label = , has_col_label = \n // 04 03 type = int, form = matrix\n // 03 00 00 00 02 00 00 00 rows = 3, cols = 2\n // 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset + i_data)\n \n const label_flags = buf_data[0]\n const has_row_labels = Boolean(label_flags & 0x01)\n const has_col_labels = Boolean(label_flags & 0x02)\n \n if (has_row_labels || has_col_labels)\n throw new Error('matrix 暂不支持 row labels 和 col labels')\n \n const datatype = buf_data[1] as DdbType\n const rows = dv.getUint32(3, le)\n const cols = dv.getUint32(7, le)\n \n const [len_items, value] = this.parse_vector_items(\n buf_data.subarray(11),\n le,\n datatype,\n rows * cols // 假设小于 2**32\n )\n \n return new this({\n le,\n form, \n type,\n length: i_data + 11 + len_items,\n rows,\n cols,\n datatype,\n value,\n }) \n }\n \n \n default:\n return new this({\n le,\n form,\n type,\n length: i_data + buf_data.length,\n value: buf_data\n })\n }\n }\n \n \n static parse_scalar (buf: Uint8Array, le: boolean, type: DdbType): [number, DdbValue] {\n switch (type) {\n case DdbType.void:\n return [1, null]\n \n \n case DdbType.bool:\n return [1, Boolean(buf[0])]\n \n \n case DdbType.char:\n return [1, String.fromCharCode(buf[0])]\n \n \n case DdbType.short: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [2, dv.getInt16(0, le)]\n }\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime: \n case DdbType.datehour: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [4, dv.getInt32(0, le)]\n }\n \n \n case DdbType.float: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [4, dv.getFloat32(0, le)]\n }\n \n \n case DdbType.double: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [8, dv.getFloat64(0, le)]\n }\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [8, dv.getBigInt64(0, le)]\n }\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n case DdbType.functiondef: {\n const i_head = type === DdbType.functiondef ? 1 : 0\n let i_zero = buf.indexOf(0, i_head)\n let i_end: number // 整个字符串(包括 0)的末尾,excluding\n if (i_zero === -1)\n i_end = i_zero = buf.length\n else\n i_end = i_zero + 1\n // 调整了 i_zero 到字符串(不包括 0)的末尾,excluding\n \n const str = this.dec.decode(\n buf.subarray(i_head, i_zero)\n )\n \n return [\n i_end,\n type === DdbType.functiondef ?\n {\n type: buf[0] as DdbFunctionType,\n name: str\n }\n :\n str\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16,\n buf.slice(0, 16)\n ]\n \n \n case DdbType.blob: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n const length = dv.getUint32(0, le)\n \n return [\n 4 + length,\n buf.slice(4, 4 + length)\n ]\n }\n \n \n case DdbType.complex:\n case DdbType.point: {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n return [\n 16,\n [\n dv.getFloat64(0, le),\n dv.getFloat64(8, le)\n ] as [number, number]\n ]\n }\n \n \n default:\n return [0, buf]\n }\n }\n \n \n /** parse: rows, cols, items \n 返回的 ddbobj.length 不包括 vector 的 type 和 form\n */\n static parse_vector (buf: Uint8Array, le: boolean, type: DdbType): DdbObj {\n const dv = new DataView(buf.buffer, buf.byteOffset)\n \n const rows = dv.getUint32(0, le)\n \n let i_items_start = 8\n \n if (type < 64 || type >= 128) {\n const [len_items, value] = this.parse_vector_items(\n buf.subarray(i_items_start),\n le,\n type,\n rows\n )\n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_items_start + len_items,\n cols: 1,\n rows,\n value,\n })\n }\n \n \n // array vector\n \n // av = array(INT[], 0, 3)\n // append!(av, [1..4])\n // append!(av, [1..70000])\n // av\n \n // <Buffer 44 01 type = array vector, form = vector\n // 02 00 00 00 74 11 01 00 rows = 2, cols = 70004 (0x011174)\n \n // block 0\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 04 00 00 00 block.lengths = [4]\n // 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 block.data\n \n // block 1\n // 01 00 block.rows = 1\n // 04 block.unit = 4\n // 00 reserved\n // 70 11 01 00 block.lengths = [70000 (0x00011170)]\n // 01 00 00 00 02 00 00 00 ... 279992 more bytes> block.data\n \n const cols = dv.getUint32(4, le)\n \n let blocks: DdbArrayVectorBlock[] = [ ]\n \n let i_block_start = i_items_start\n \n // 解析一个 block\n for (let i_row = 0; i_row < rows; ) {\n /** 对应 array vector 中元素个数 */\n const rows = dv.getUint16(i_block_start, le)\n \n /** 每个 length 占用的字节数 */\n const unit = dv.getUint8(i_block_start + 2)\n \n /** array vector 每个元素的子元素长度 */\n let lengths: Uint32Array | Uint16Array | Uint8Array\n \n const i_lengths_start = i_block_start + 4\n const i_data_start = i_lengths_start + rows * unit\n \n const lengths_buf = buf.slice(\n i_lengths_start,\n i_data_start\n )\n \n switch (unit) {\n case 1:\n lengths = lengths_buf\n break\n \n case 2:\n lengths = new Uint16Array(lengths_buf.buffer)\n break\n \n case 4:\n lengths = new Uint32Array(lengths_buf.buffer)\n break\n \n default:\n throw new Error(`array vector 存在非法 unit = ${unit}`)\n }\n \n let total_length = 0\n for (const x of lengths)\n total_length += x\n \n const [len_items, data] = this.parse_vector_items(\n buf.subarray(i_data_start),\n le,\n type - 64,\n total_length\n )\n \n blocks.push({\n unit,\n rows,\n lengths,\n data\n })\n \n i_block_start = i_data_start + len_items\n \n i_row += rows\n }\n \n \n return new this({\n le,\n form: DdbForm.vector,\n type,\n length: i_block_start,\n cols,\n rows,\n value: blocks\n })\n }\n \n \n /** 有可能没有字节对齐,不能直接使用原有 message 的 arraybuffer, 统一复制出来,让原有 arraybuffer 被回收掉比较好 */\n static parse_vector_items (\n buf: Uint8Array, \n le: boolean,\n type: DdbType, \n length: number\n ): [\n number, \n DdbVectorValue\n ] {\n switch (type) {\n case DdbType.bool:\n return [length, buf.slice(0, length)]\n \n \n case DdbType.char:\n return [\n length,\n this.dec.decode(\n buf.subarray(0, length)\n )\n ]\n \n \n case DdbType.short:\n return [\n 2 * length,\n new Int16Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 2 * length\n )\n )\n ]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n return [\n 4 * length,\n new Int32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.float:\n return [\n 4 * length,\n new Float32Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 4 * length\n )\n )\n ]\n \n \n case DdbType.double:\n return [\n 8 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset, \n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [\n 8 * length,\n new BigInt64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 8 * length\n )\n )\n ]\n \n \n case DdbType.string: \n case DdbType.symbol: \n case DdbType.code: {\n let value = new Array<string>(length)\n let i_head = 0, i_tail = i_head\n for (let i = 0; i < length; i++) {\n i_tail = buf.indexOf(0, i_head)\n value[i] = this.dec.decode(\n buf.subarray(i_head, i_tail)\n )\n i_head = i_tail + 1\n }\n return [i_head, value]\n }\n \n \n case DdbType.symbol_extended: {\n // <Buffer 91 01 type = symbol extended, form = vector\n // 05 00 00 00 01 00 00 00 row = 5, col = 1\n \n // buf:\n // 00 00 00 00 symbol base id = 0 (uint32)\n // 02 00 00 00 symbol base size = 2\n // 00 61 61 00 以 \\0 分割的字符串\n // 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00>\n \n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n const base_id = dv.getUint32(0, le)\n const base_size = dv.getUint32(4, le)\n \n let base_length = 0\n let base = this.symbol_bases[base_id]\n \n // base_size 为 0 时复用之前的 symbol base\n if (base_size) {\n [base_length, base] = this.parse_vector_items(\n buf.subarray(8),\n le,\n DdbType.string,\n base_size\n ) as [number, string[]]\n \n this.symbol_bases[base_id] = base\n }\n \n const value_start = 8 + base_length\n const value_end = value_start + length * 4\n \n const data = new Uint32Array(\n buf.buffer.slice(\n buf.byteOffset + value_start,\n buf.byteOffset + value_end\n )\n )\n \n return [\n value_end,\n {\n base_id,\n base,\n data\n }\n ]\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [\n 16 * length,\n new Uint8Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.blob: {\n // <Buffer 20 01 type = blob, form = vector\n // 02 00 00 00 01 00 00 00 cols = 2, rows = 1\n // 04 00 00 00 61 62 63 64 \n // 04 00 00 00 61 62 63 64>\n \n let value = new Array<Uint8Array>(length)\n const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const sublen = dv.getUint32(i_head, le)\n const i_blob_head = i_head + 4\n const i_blob_tail = i_blob_head + sublen\n value[i] = buf.slice(i_blob_head, i_blob_tail)\n i_head = i_blob_tail\n }\n \n return [i_head, value]\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [\n 16 * length,\n new Float64Array(\n buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + 16 * length\n )\n )\n ]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n \n let values = new Array<DdbObj>(length)\n let i_head = 0\n for (let i = 0; i < length; i++) {\n const obj = this.parse(\n buf.subarray(i_head),\n le\n )\n values[i] = obj\n i_head += obj.length\n }\n \n return [\n i_head,\n values\n ]\n }\n \n \n default:\n return [0, buf]\n }\n }\n \n \n pack (): Uint8Array {\n const { form, type, value } = this\n \n let header = new Uint8Array(new ArrayBuffer(2))\n header[0] = type\n header[1] = form\n \n const body = (() => {\n switch (form) {\n case DdbForm.scalar:\n switch (type) {\n case DdbType.void:\n return [Uint8Array.of(1)]\n \n case DdbType.bool:\n return [Uint8Array.of(Number(value as boolean))]\n \n \n case DdbType.char:\n return [Uint8Array.of((value as string).charCodeAt(0))]\n \n \n case DdbType.short:\n return [Int16Array.of(value as number)]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n case DdbType.datehour:\n return [Int32Array.of(value as number)]\n \n \n case DdbType.float:\n return [Float32Array.of(value as number)]\n \n \n case DdbType.double:\n return [Float64Array.of(value as number)]\n \n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [BigInt64Array.of(this.value as bigint)]\n \n \n case DdbType.string:\n case DdbType.symbol:\n case DdbType.code:\n return [\n DdbObj.enc.encode(value as string),\n Uint8Array.of(0),\n ]\n \n case DdbType.functiondef:\n return [\n Uint8Array.of((value as DdbFunctionDefValue).type),\n DdbObj.enc.encode((value as DdbFunctionDefValue).name),\n Uint8Array.of(0)\n ]\n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [this.value as Uint8Array]\n \n \n case DdbType.blob:\n return [\n Uint32Array.of(\n (this.value as Uint8Array).byteLength\n ),\n this.value as Uint8Array\n ]\n \n \n case DdbType.complex:\n case DdbType.point:\n return [Float64Array.from(this.value as [number, number])]\n \n \n case DdbType.duration:\n return [value as Uint8Array]\n \n case DdbType.handle:\n throw new Error('DolphinDB Server 不支持 handle 的反序列化')\n \n default:\n throw new Error(`${DdbType[type]} 暂时不支持序列化`)\n }\n \n \n case DdbForm.vector:\n case DdbForm.pair:\n // pack array vector\n if (form === DdbForm.vector && 64 <= type && type < 128)\n return [\n Uint32Array.of(this.rows, this.cols),\n ... (this.value as DdbArrayVectorBlock[]).map(block => ([\n Uint16Array.of(block.rows),\n Uint8Array.of(block.unit, 0),\n block.lengths,\n block.data as any\n ])).flat()\n ]\n \n return [\n Uint32Array.of(this.rows, 1),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, type, this.rows)\n ]\n \n \n case DdbForm.set:\n return [\n new DdbObj({\n ...this,\n form: DdbForm.vector,\n }).pack()\n ]\n \n \n case DdbForm.table:\n return [\n Uint32Array.of(this.rows, this.cols),\n DdbObj.enc.encode(this.name),\n Uint8Array.of(0),\n ...DdbObj.pack_vector_body(\n (this.value as DdbObj[]).map(col => col.name),\n DdbType.string, \n this.cols\n ),\n ...(() => {\n let cols = new Array<Uint8Array>(this.cols)\n for (let i = 0; i < cols.length; i++)\n cols[i] = (this.value as DdbObj[])[i].pack()\n return cols\n })()\n ]\n \n \n case DdbForm.dict:\n return [\n (value as [DdbObj, DdbObj])[0].pack(),\n (value as [DdbObj, DdbObj])[1].pack(),\n ]\n \n \n case DdbForm.matrix:\n return [\n Uint8Array.of(0, this.datatype, this.form),\n Uint32Array.of(this.rows, this.cols),\n ... DdbObj.pack_vector_body(value as DdbVectorValue, this.datatype, this.rows * this.cols)\n ]\n \n \n default:\n throw new Error(`${DdbForm[form]} 暂不支持序列化`)\n }\n })()\n \n \n if (!body)\n return new Uint8Array(0)\n \n return concat([\n header,\n ...body\n ])\n }\n \n \n static pack_vector_body (\n value: DdbVectorValue,\n type: DdbType,\n length: number\n ): ArrayBufferView[] {\n switch (type) {\n case DdbType.bool:\n return [value as Uint8Array]\n \n \n case DdbType.char:\n return [this.enc.encode(value as string)]\n \n \n case DdbType.short:\n return [value as Int16Array]\n \n \n case DdbType.int:\n // datetime\n case DdbType.date:\n case DdbType.month:\n case DdbType.time:\n case DdbType.minute:\n case DdbType.second:\n case DdbType.datetime:\n return [value as Int32Array]\n \n \n case DdbType.float:\n return [value as Float32Array]\n \n \n case DdbType.double:\n return [value as Float64Array]\n \n case DdbType.long:\n // timestamp\n case DdbType.timestamp:\n case DdbType.nanotime:\n case DdbType.nanotimestamp:\n return [value as BigInt64Array]\n \n \n case DdbType.string: \n case DdbType.symbol: \n case DdbType.code: {\n let bufs = new Array<Uint8Array>(length * 2)\n for (let i = 0; i < length; i++) {\n bufs[2 * i] = this.enc.encode((value as string[])[i])\n bufs[2 * i + 1] = Uint8Array.of(0)\n }\n return bufs\n }\n \n \n case DdbType.uuid:\n case DdbType.ipaddr:\n case DdbType.int128:\n return [value as Uint8Array]\n \n \n case DdbType.blob: {\n let bufs = new Array<ArrayBufferView>(length * 2)\n for (let i = 0; i < length; i++) {\n const blob_value = (value as Uint8Array[])[i]\n bufs[2 * i] = Uint32Array.of(blob_value.length)\n bufs[2 * i + 1] = blob_value\n }\n return bufs\n }\n \n \n case DdbType.complex:\n case DdbType.point: \n return [value as Float64Array]\n \n \n case DdbType.any: {\n // [1, 2, 'a', 'aaa']\n // any[4](<Buffer \n // 04 00 DdbType.int, DdbForm.scalar\n // 01 00 00 00 \n // 04 00 DdbType.int, DdbForm.scalar\n // 02 00 00 00 \n // 02 00 DdbType.char, DdbForm.scalar\n // 61 \n // 12 00 DdbType.string, DdbForm.scalar\n // 61 61 61 00>)\n \n let bufs = new Array<Uint8Array>(length)\n for (let i = 0; i < length; i++)\n bufs[i] = (value as DdbObj[])[i].pack()\n return bufs\n }\n \n \n case DdbType.symbol_extended: {\n const { base_id, base, data } = value as DdbSymbolExtendedValue\n \n return [\n Uint32Array.of(\n base_id,\n base.length,\n ),\n ...this.pack_vector_body(base, DdbType.string, base.length),\n data\n ]\n }\n \n default:\n throw new Error(`vector ${DdbType[type]} 暂不支持序列化`)\n }\n }\n \n \n toString () {\n const type = (() => {\n const tname = DdbType[this.type]\n \n switch (this.form) {\n case DdbForm.scalar:\n if (this.type === DdbType.functiondef)\n return `functiondef<${DdbFunctionType[(this.value as DdbFunctionDefValue).type]}>`\n return tname\n \n case DdbForm.vector:\n if (64 <= this.type && this.type < 128)\n return `${DdbType[this.type - 64]}[][${this.rows}]`\n return `${tname}[${this.rows}]`\n \n case DdbForm.pair:\n return `pair<${tname}>`\n \n case DdbForm.set:\n return `set<${tname}>[${this.rows}]`\n \n case DdbForm.table:\n return `table[${this.rows} rows][${this.cols} cols]`\n \n case DdbForm.dict:\n return `dict<${DdbType[(this.value[0] as DdbObj).type]}, ${DdbType[(this.value[1] as DdbObj).type]}>`\n \n case DdbForm.matrix:\n return `matrix<${DdbType[this.datatype]}>[${this.rows} rows][${this.cols} cols]`\n \n default:\n return `${DdbForm[this.form]} ${tname}`\n }\n })()\n \n const data = (() => {\n if (this.form === DdbForm.pair)\n return `${this.value[0]}, ${this.value[1]}`\n \n if (this.form === DdbForm.scalar && this.type === DdbType.functiondef)\n return `'${(this.value as DdbFunctionDefValue).name}'`\n \n return this.value\n })()\n \n return `${type}(${ this.name ? `'${this.name}', ` : '' }${data})\\n`\n }\n \n \n to_cols () {\n return (this.value as DdbObj[]).map(col => {\n let col_: {\n title: string\n dataIndex: string\n render?: any\n } = {\n title: col.name,\n dataIndex: col.name,\n }\n \n switch (col.type) {\n case DdbType.timestamp:\n col_.render = timestamp2str\n break\n \n case DdbType.date:\n col_.render = date2str\n break\n \n case DdbType.ipaddr:\n col_.render = value =>\n (value as Uint8Array).slice().reverse().join('.').replace(/^(0\\.)+/, '')\n break\n }\n \n return col_\n })\n }\n \n \n to_rows <T extends Record<string, any> = Record<string, any>> () {\n if (this.form !== DdbForm.table)\n throw new Error('this.form is not DdbForm.table, cannot call to_rows')\n \n let rows = new Array<T>(this.rows)\n \n for (let i = 0; i < this.rows; i++) {\n let row: any = { }\n for (let j = 0; j < this.cols; j++) {\n const { type, name, value }: DdbObj = this.value[j] // column\n \n switch (type) {\n case DdbType.bool:\n row[name] = Boolean(value[i])\n break\n \n case DdbType.ipaddr:\n row[name] = (value as Uint8Array).subarray(16 * i, 16 * (i + 1))\n break\n \n case DdbType.symbol_extended: {\n const { base, data } = value as DdbSymbolExtendedValue\n row[name] = base[data[i]]\n break\n }\n \n default:\n row[name] = value[i]\n }\n }\n rows[i] = row\n }\n \n return rows\n }\n \n \n to_dict <T = Record<string, any>> () {\n if (this.form !== DdbForm.dict)\n throw new Error('this.form is not DdbForm.dict, cannot convert to Object')\n \n const [{ value: keys }, { value: values }] = this.value as [DdbObj<DdbObj[]>, DdbObj<DdbObj[]>]\n \n let obj = { }\n \n for (let i = 0; i < this.rows; i++)\n obj[keys[i] as any] = values[i].value\n \n return obj as T\n }\n}\n\n\nexport class DdbVoid extends DdbObj<undefined> {\n constructor () {\n super({\n form: DdbForm.scalar,\n type: DdbType.void,\n length: 0,\n })\n }\n}\n\n\nexport class DdbBool extends DdbObj<boolean> {\n constructor (value: boolean) {\n super({\n form: DdbForm.scalar,\n type: DdbType.bool,\n length: 1,\n value,\n })\n }\n}\n\nexport class DdbChar extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.char,\n length: 1,\n value,\n })\n }\n}\n\nexport class DdbInt extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.int,\n length: 4,\n value\n })\n }\n}\n\nexport class DdbString extends DdbObj<string> {\n constructor (value: string) {\n super({\n form: DdbForm.scalar,\n type: DdbType.string,\n length: 0,\n value\n })\n }\n}\n\nexport class DdbLong extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.long,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbDouble extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.double,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbDateTime extends DdbObj<number> {\n constructor (value: number) {\n super({\n form: DdbForm.scalar,\n type: DdbType.datetime,\n length: 4,\n value\n })\n }\n}\n\nexport class DdbTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.timestamp,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbNanoTimeStamp extends DdbObj<bigint> {\n constructor (value: bigint) {\n super({\n form: DdbForm.scalar,\n type: DdbType.nanotimestamp,\n length: 8,\n value\n })\n }\n}\n\nexport class DdbVectorInt extends DdbObj<Int32Array> {\n constructor (value: number[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.int,\n length: 0,\n rows: value.length,\n cols: 1,\n value: Int32Array.from(value),\n name,\n })\n }\n}\n\nexport class DdbVectorString extends DdbObj<string[]> {\n constructor (value: string[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.string,\n length: 0,\n rows: value.length,\n cols: 1,\n value,\n name,\n })\n }\n}\n\nexport class DdbVectorDouble extends DdbObj<Float64Array> {\n constructor (value: number[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: value.length,\n cols: 1,\n value: Float64Array.from(value),\n name,\n })\n }\n}\n\nexport class DdbVectorAny extends DdbObj {\n constructor (value: DdbObj<DdbValue>[], name?: string) {\n super({\n form: DdbForm.vector,\n type: DdbType.any,\n length: 0,\n rows: value.length,\n cols: 1,\n value,\n name,\n })\n }\n}\n\nexport class DdbPair extends DdbObj<Int32Array> {\n constructor (l: number, r = -2147483648) {\n super({\n form: DdbForm.pair,\n type: DdbType.int,\n length: 0,\n rows: 2,\n cols: 1,\n value: Int32Array.of(l, r)\n })\n }\n}\n\nexport class DdbFunction extends DdbObj<DdbFunctionDefValue> {\n constructor (name: string, type: DdbFunctionType) {\n super({\n form: DdbForm.scalar,\n type: DdbType.functiondef,\n length: 0,\n value: { type, name }\n })\n }\n}\n\n\nexport function date2str (date: number, format = 'YYYY.MM.DD') {\n return date === nulls.int32 ? \n ''\n :\n dayjs(\n timezone_offset + 1000 * 3600 * 24 * date\n ).format(format)\n}\n\n\nexport function datetime2str (datetime: number, format = 'YYYY.MM.DD HH:mm:ss') {\n return datetime === nulls.int32 ?\n ''\n :\n dayjs(\n timezone_offset + 1000 * datetime\n ).format(format)\n}\n\n\n/** format timestamp (bigint) to string \n - timestamp: bigint value\n - format?: \n format string, default to `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function timestamp2str (timestamp: bigint, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n return timestamp === nulls.int64 ?\n ''\n :\n dayjs(\n timezone_offset + Number(timestamp)\n ).format(format)\n}\n\n\n/** parse timestamp string to bigint value \n - str: timestamp string, If it is an empty string, it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSS` \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2timestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n if (!str)\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('The length of the timestamp string is not equal to the length of the format string')\n \n return BigInt(\n -timezone_offset +\n dayjs(str, format).valueOf()\n )\n}\n\n\n/** format nanotimestamp value (bigint) to string \n - nanotimestamp: bigint value\n - format?: \n format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function nanotimestamp2str (nanotimestamp: bigint, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (nanotimestamp === nulls.int64)\n return ''\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('The format string must contain the format for nanoseconds (SSSSSSSSS)')\n \n return (\n dayjs(\n timezone_offset + (Number(nanotimestamp) / 1000000)\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(nanotimestamp % 1000000000n)\n )\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, If it is an empty string, it will return the corresponding empty value (nulls.int64)\n - format?: \n The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens\n*/\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (!str)\n return nulls.int64\n \n if (str.length !== format.length)\n throw new Error('nanotimestamp string length is not equal to format string length')\n \n const i_second_start = format.indexOf('ss')\n if (i_second_start === -1)\n throw new Error('The format string must contain the format for seconds (ss)')\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n if (i_nanosecond_start === -1)\n throw new Error('Format string must contain nanosecond format (SSSSSSSSS)')\n \n return (\n BigInt(\n -timezone_offset +\n dayjs(\n str.slice(0, i_second_end),\n format.slice(0, i_second_end)\n ).valueOf()\n ) * 1000000n\n +\n BigInt(\n str.slice(i_nanosecond_start, i_nanosecond_start + 9)\n )\n )\n}\n\n\nexport class DDB {\n /** 当前的 session id (http 或 tcp) */\n sid = '0'\n \n /** utf-8 text decoder */\n dec = new TextDecoder('utf-8')\n \n enc = new TextEncoder()\n \n \n /** DolphinDB WebSocket URL\n e.g. `ws://127.0.0.1:8848/`, `wss://dolphindb.com`\n */\n url: string\n \n websocket = null as WebSocket\n \n /** little endian (server) */\n le = true\n \n /** little endian (client) */\n static le_client = Boolean(\n new Uint8Array(\n Uint32Array.of(1).buffer\n )[0]\n )\n \n /** python session flag (2048) */\n python = false\n \n message_hook = null as (message: Uint8Array) => any\n \n /** print message handler */\n printer (message: string) {\n console.log(message)\n }\n \n /** resolver, rejector, promise of last rpc */\n presolver (buf: Uint8Array) { }\n prejector (error: Error) { }\n presult = Promise.resolve(null) as Promise<Uint8Array>\n \n /**\n Initialize an instance of DolphinDB Client using the WebSocket URL \n (without establishing an actual network connection)\n @example\n let ddb = new DDB('ws://127.0.0.1:8848')\n let ddb_secure = new DDB('wss://dolphindb.com')\n */\n constructor (url?: string) {\n if (!url) {\n const _url = new URL(location.href)\n \n const hostname = _url.searchParams.get('hostname') || location.hostname\n \n const port = _url.searchParams.get('port') || location.port\n \n url = `${ location.protocol === 'https:' ? 'wss' : 'ws' }://${hostname}${ port ? `:${port}` : '' }/`\n }\n \n this.url = url\n }\n \n \n /** Establish the actual WebSocket connection to the DolphinDB corresponding to the URL */\n async connect (\n {\n url = this.url,\n login = true,\n username = 'admin',\n password = '123456',\n python = false,\n }: {\n /** By default, the WebSocket URL passed in when the instance is initialized is used */\n url?: string\n \n /** Whether to automatically log in after the connection is established, the default is true */\n login?: boolean\n \n /** DolphinDB username */\n username?: string\n \n /** DolphinDB password */\n password?: string\n \n /** set python session flag */\n python?: boolean\n } = { }\n ) {\n this.url = url\n this.python = python\n \n if (this.websocket?.readyState === WebSocket.OPEN)\n this.disconnect()\n \n let websocket = new WebSocket(\n url,\n python ? ['python'] : [ ]\n )\n \n // https://stackoverflow.com/questions/11821096/what-is-the-difference-between-an-arraybuffer-and-a-blob/39951543\n websocket.binaryType = 'arraybuffer'\n \n this.websocket = websocket\n \n await new Promise<void>((resolve, reject) => {\n websocket.addEventListener('open', async event => {\n console.log(`${websocket.url} opened`)\n \n await this.rpc('connect', { })\n resolve()\n })\n \n websocket.addEventListener('close', event => {\n console.log(`${websocket.url} closed with code = ${event.code}, reason = '${event.reason}'`)\n })\n \n websocket.addEventListener('error', event => {\n const message = `${websocket.url} errored`\n console.error(message, event)\n reject(\n Object.assign(\n new Error(message),\n { event }\n )\n )\n })\n \n websocket.addEventListener('message', event => {\n const buf = new Uint8Array(event.data as ArrayBuffer)\n \n if (this.message_hook)\n this.message_hook(buf)\n \n try {\n const { type, data } = this.parse_message(buf)\n \n if (type === 'message') {\n this.printer(data)\n return\n }\n \n this.presolver(data)\n } catch (error) {\n this.prejector(error)\n }\n })\n })\n \n if (!this.python)\n await this.eval(\n 'def pnode_run (nodes, func_name, args, add_node_alias = true) {\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if (!nargs)\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = array(any, 1 + nargs, 1 + nargs)\\n' +\n ' args_partial[0] = func\\n' +\n ' args_partial[1:] = args\\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n' +\n '}\\n',\n { urgent: true }\n )\n \n if (login)\n if (this.python)\n await this.eval(`login(${username.quote('double')}, ${password.quote('double')})`, { urgent: true })\n else\n await this.call('login', [username, password], { urgent: true })\n }\n \n \n get_rpc_options ({\n urgent = false,\n secondary = false,\n async: _async = false,\n pickle = false,\n clear = false,\n api = false,\n compress = false,\n \n cancellable = true,\n priority = urgent ? 8 : 4,\n parallelism = 8,\n root_id = '',\n limit,\n }: {\n // --- flags ---\n urgent?: boolean\n \n /** API 提交的任务, secondary 必须为 false */\n secondary?: boolean\n \n /** 是否异步任务(不返回结果) */\n async?: boolean\n \n /** 让服务端以 pickle 协议返回数据 */\n pickle?: boolean\n \n /** 本次任务完成后 clear session memory */\n clear?: boolean\n \n /** 是否为 api client */\n api?: boolean\n \n compress?: boolean\n \n // --- flags end ---\n \n /** 任务是否可以取消 */\n cancellable?: boolean\n \n priority?: number\n \n /** `8` 0 ~ 64, 指定本任务并行度 */\n parallelism?: number\n \n /** 根任务编号,内部使用,API中固定为空 */\n root_id?: string\n \n /** 指定分块返回的块大小 */\n limit?: boolean\n } = { }) {\n let flag = 0\n if (urgent)\n flag += 1\n if (secondary)\n flag += 2\n if (_async)\n flag += 4\n if (pickle)\n flag += 8\n if (clear)\n flag += 16\n if (api)\n flag += 32\n if (compress)\n flag += 64\n \n // python session\n if (this.python)\n flag += 2048\n \n const options = [\n flag,\n cancellable ? 1 : 0,\n priority,\n parallelism,\n ... limit ? [\n root_id,\n limit,\n ] : [ ],\n ]\n \n return `/ ${options.join('_')}`\n }\n \n \n disconnect () {\n this.websocket?.close(1000)\n }\n \n \n /** rpc through websocket (function/script/variable command) \n - type: API 类型: 'script' | 'function' | 'variable'\n - options:\n - urgent?: 决定 `行为标识` 那一行字符串的取值(只适用于 script 和 function)\n - vars?: type === 'variable' 时必传,variable 指令中待上传的变量名\n */\n async rpc <T extends DdbObj = DdbObj> (\n type: 'script' | 'function' | 'variable' | 'connect',\n {\n script,\n func,\n args = [ ],\n vars = [ ],\n urgent,\n }: {\n script?: string\n func?: string\n args?: (DdbObj | string | boolean)[]\n vars?: string[]\n urgent?: boolean\n }) {\n if (!this.websocket)\n await this.connect()\n \n if (this.websocket.readyState !== WebSocket.OPEN)\n throw new Error(`${this.url} is already disconnected`)\n \n // 临界区:保证多个 rpc 并发时形成 promise 链\n // ddb 世界观:需要等待上一个 rpc 结果从 server 返回之后才能发起下一个调用 \n // 违反世界观可能造成: \n // 1. 并发多个请求只返回第一个结果(阻塞,需后续请求疏通)\n // 2. windows 下 ddb server 返回多个相同的结果\n \n const ptail = this.presult\n let presolver: (buf: Uint8Array) => void\n let prejector: (error: Error) => void\n \n const presult = this.presult = new Promise<Uint8Array>((resolve, reject) => {\n presolver = resolve\n prejector = reject\n })\n \n try {\n await ptail\n } catch { }\n \n this.presolver = presolver\n this.prejector = prejector\n // 临界区结束,只有一个 rpc 请求可以写 WebSocket\n \n if (urgent && type !== 'script' && type !== 'function')\n throw new Error('urgent 只适用于 script 和 funciton')\n \n this.to_ddbobjs(args)\n \n const command = this.enc.encode(\n (() => {\n switch (type) {\n case 'function':\n return 'function\\n' +\n `${func}\\n` +\n `${args.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'script':\n return 'script\\n' +\n script\n \n case 'variable':\n return 'variable\\n' +\n `${vars.join(',')}\\n` +\n `${vars.length}\\n` +\n `${Number(DDB.le_client)}\\n`\n \n case 'connect':\n return 'connect\\n'\n }\n })()\n )\n \n const message = concat([\n this.enc.encode(\n `API2 ${this.sid} ${command.length}${this.get_rpc_options({ urgent })}\\n`\n ),\n command,\n ... args.map((arg: DdbObj) =>\n arg.pack()\n )\n ])\n \n this.websocket.send(message)\n \n return DdbObj.parse(\n await presult, // data_buf\n this.le\n ) as T\n }\n \n \n /** eval script through websocket (script command) */\n async eval <T extends DdbObj> (\n /** 执行的脚本 */\n script: string,\n \n /** 执行选项 */\n {\n urgent\n }: {\n /** 紧急 flag,确保提交的脚本使用 urgent worker 处理,防止被其它作业阻塞 */\n urgent?: boolean\n } = { }\n ) {\n return this.rpc<T>('script', { script, urgent })\n }\n \n \n /** call function through websocket (function command) \n - func: 函数名\n - args?: `[ ]` 调用参数 (传入的原生 string 和 boolean 会被自动转换为 DdbObj<string> 和 DdbObj<boolean>)\n - options?: 调用选项\n - urgent?: 紧急 flag。使用 urgent worker 执行,防止被其它作业阻塞\n - node?: 设置结点 alias 时发送到集群中对应的结点执行 (使用 DolphinDB 中的 rpc 方法)\n - nodes?: 设置多个结点 alias 时发送到集群中对应的多个结点执行 (使用 DolphinDB 中的 pnodeRun 方法)\n - func_type?: 设置 node 参数时必传,需指定函数类型,其它情况下不传\n - add_node_alias?: 设置 nodes 参数时选传,其它情况不传\n */\n async call <T extends DdbObj> (\n func: string,\n args: (DdbObj | string | boolean)[] = [ ],\n {\n urgent,\n node,\n nodes,\n func_type,\n add_node_alias\n }: {\n urgent?: boolean\n node?: string\n nodes?: string[]\n func_type?: DdbFunctionType\n add_node_alias?: boolean\n } = { }\n ) {\n if (this.python)\n throw new Error('call doesn\\'t support python session yet')\n \n if (node) {\n if (typeof func_type === 'undefined')\n throw new Error('指定 node 时必须设置 func_type')\n \n args = [\n node,\n new DdbFunction(func, func_type),\n ...args\n ]\n func = 'rpc'\n }\n \n if (nodes) {\n args = [\n new DdbVectorString(nodes),\n func,\n new DdbVectorAny(\n this.to_ddbobjs(args)\n ),\n ... (() => {\n if (typeof add_node_alias !== 'undefined')\n return [add_node_alias]\n \n if (this.python)\n return [true]\n \n return [ ]\n })()\n ]\n func = 'pnode_run'\n }\n \n return this.rpc<T>('function', {\n func,\n args,\n urgent,\n })\n }\n \n \n /** upload variable through websocket (variable command) */\n async upload (\n /** Uploaded variables' name */\n vars: string[],\n \n /** Uploaded variables' value */\n args: (DdbObj | string | boolean)[]\n ) {\n if (!args.length || args.length !== vars.length)\n throw new Error('variable 指令参数为空或参数名为空,或数量不匹配')\n \n return this.rpc('variable', { vars, args })\n }\n \n \n /** 解析服务端响应报文,返回去掉 header 的 data buf */\n parse_message (buf: Uint8Array) {\n // MSG\\n\n // <message>\\0\n // 'M'.codePointAt(0).to_hex_str()\n if (buf[0] === 0x4d && buf[1] === 0x53 && buf[2] === 0x47 && buf[3] === 0x0a)\n return {\n type: 'message' as const,\n data: \n this.dec.decode(\n buf.subarray(4)\n )\n }\n \n \n // '1166953221 1 1\\n'\n // 'OK\\n'\n // '\\x04\\x00\\x02\\x00\\x00\\x00'\n \n /** index of line feed 0 */\n const i_lf_0 = buf.indexOf(0x0a) // '\\n'\n \n const parts = this.dec.decode(\n buf.subarray(0, i_lf_0)\n ).split(' ')\n \n /** session id */\n const sid = parts[0]\n if (sid !== this.sid) {\n console.log(`sid 从 ${this.sid} 变为 ${sid}`)\n this.sid = sid\n }\n \n /** 返回对象的数量 */\n const n_obj = Number(parts[1])\n \n /** 大小端: 协议中大端为 0, 小端为 1 */\n this.le = Number(parts[2]) !== 0\n \n const i_ls_1 = i_lf_0 + 1\n const i_lf_1 = buf.indexOf(0x0a, i_ls_1) // '\\n'\n /** 'OK' 表示成功,其它文本表示失败 */\n const message = this.dec.decode(\n buf.subarray(i_ls_1, i_lf_1)\n )\n \n if (message !== 'OK')\n throw new Error(message)\n \n return {\n type: 'object' as const,\n data: buf.subarray(i_lf_1 + 1)\n }\n }\n \n \n /** 自动转换 js string, boolean 为 DdbObj */\n to_ddbobj (value: DdbObj | string | boolean): DdbObj {\n if (value instanceof DdbObj)\n return value\n \n const type = typeof value\n \n switch (type) {\n case 'string':\n return new DdbString(value as string)\n \n case 'boolean':\n return new DdbBool(value as boolean)\n \n default: \n throw new Error(`不能自动转换 ${type} 至 DdbObj`)\n }\n }\n \n \n /** 转换 js 数组为 DdbObj[] (in place, 会修改原数组) */\n to_ddbobjs (values: any[]) {\n for (let i = 0; i < values.length; i++)\n values[i] = this.to_ddbobj(values[i])\n return values as DdbObj<DdbValue>[]\n }\n}\n\nexport let ddb = (window as any).ddb = new DDB()\n\nexport default ddb\n"]}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { InspectOptions } from 'util';
|
|
1
3
|
import { inspect } from 'xshell/utils.js';
|
|
2
4
|
export declare enum DdbForm {
|
|
3
5
|
scalar = 0,
|
|
@@ -137,7 +139,8 @@ export declare class DdbObj<T extends DdbValue = DdbValue> {
|
|
|
137
139
|
];
|
|
138
140
|
pack(): Uint8Array;
|
|
139
141
|
static pack_vector_body(value: DdbVectorValue, type: DdbType, length: number): ArrayBufferView[];
|
|
140
|
-
[inspect.custom](): string;
|
|
142
|
+
[inspect.custom](depth: number, options: InspectOptions, _inspect: any): string;
|
|
143
|
+
to_rows<T extends Record<string, any> = Record<string, any>>(): T[];
|
|
141
144
|
to_dict<T = Record<string, any>>(): T;
|
|
142
145
|
}
|
|
143
146
|
export declare class DdbVoid extends DdbObj<undefined> {
|
|
@@ -190,11 +193,33 @@ export declare class DdbFunction extends DdbObj<DdbFunctionDefValue> {
|
|
|
190
193
|
}
|
|
191
194
|
export declare function date2str(date: number, format?: string): string;
|
|
192
195
|
export declare function datetime2str(datetime: number, format?: string): string;
|
|
193
|
-
|
|
196
|
+
/** format timestamp (bigint) to string
|
|
197
|
+
- timestamp: bigint value
|
|
198
|
+
- format?:
|
|
199
|
+
format string, default to `YYYY.MM.DD HH:mm:ss.SSS`
|
|
200
|
+
https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens
|
|
201
|
+
*/
|
|
202
|
+
export declare function timestamp2str(timestamp: bigint, format?: string): string;
|
|
203
|
+
/** parse timestamp string to bigint value
|
|
204
|
+
- str: timestamp string, If it is an empty string, it will return the corresponding empty value (nulls.int64)
|
|
205
|
+
- format?:
|
|
206
|
+
The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSS`
|
|
207
|
+
https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens
|
|
208
|
+
*/
|
|
209
|
+
export declare function str2timestamp(str: string, format?: string): bigint;
|
|
210
|
+
/** format nanotimestamp value (bigint) to string
|
|
211
|
+
- nanotimestamp: bigint value
|
|
212
|
+
- format?:
|
|
213
|
+
format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS`
|
|
214
|
+
Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included)
|
|
215
|
+
https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens
|
|
216
|
+
*/
|
|
194
217
|
export declare function nanotimestamp2str(nanotimestamp: bigint, format?: string): string;
|
|
195
218
|
/** parse nano timestamp string to bigint value
|
|
196
|
-
- str: nano timestamp string,
|
|
197
|
-
- format?:
|
|
219
|
+
- str: nano timestamp string, If it is an empty string, it will return the corresponding empty value (nulls.int64)
|
|
220
|
+
- format?:
|
|
221
|
+
The format string corresponding to the incoming string, the default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS`
|
|
222
|
+
Seconds are in the format ss (must be included); nanoseconds are in the format SSSSSSSSS (must be included)
|
|
198
223
|
https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens
|
|
199
224
|
*/
|
|
200
225
|
export declare function str2nanotimestamp(str: string, format?: string): bigint;
|