dolphindb 3.1.13 → 3.1.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/common.d.ts CHANGED
@@ -343,3 +343,4 @@ export declare const funcdefs: {
343
343
  readonly kdb: string;
344
344
  };
345
345
  };
346
+ export declare function get_number_formatter(decimals?: any, grouping?: boolean): Intl.NumberFormat;
package/common.js CHANGED
@@ -587,4 +587,23 @@ export const funcdefs = {
587
587
  '}\n'
588
588
  }
589
589
  };
590
+ // 缓存,为了优化性能,通常 options.decimals, options.grouping 都是不变的
591
+ let _decimals = null;
592
+ let _grouping = true;
593
+ let number_formatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 20 });
594
+ export function get_number_formatter(decimals = null, grouping = true) {
595
+ if (decimals === _decimals && grouping === _grouping)
596
+ return number_formatter;
597
+ _decimals = decimals;
598
+ _grouping = grouping;
599
+ return number_formatter = new Intl.NumberFormat('en-US', {
600
+ ...decimals === null ? {
601
+ maximumFractionDigits: 20
602
+ } : {
603
+ maximumFractionDigits: decimals,
604
+ minimumFractionDigits: decimals,
605
+ },
606
+ useGrouping: grouping
607
+ });
608
+ }
590
609
  //# sourceMappingURL=common.js.map
package/common.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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","sourcesContent":["import { default as dayjs, type Dayjs } from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport { empty } from 'xshell/prototype.common.js'\nimport { check } from 'xshell/utils.common.js'\n\nimport ipaddrjs from 'ipaddr.js'\nconst { fromByteArray: buf2ipaddr } = ipaddrjs\n\nimport { t } from './i18n/index.ts'\n\n\nexport const nulls = {\n int8: -0x80, // -128\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 int128: -0x80_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00n, // -170_1411_8346_0469_2317_3168_7303_7158_8410_5728\n float32: -3.4028234663852886e+38,\n \n /** -Number.MAX_VALUE */\n double: -Number.MAX_VALUE,\n \n bytes16: Uint8Array.from(\n new Array(16).fill(0)\n )\n} as const\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 \n /** 节点内部通信可能会使用,调用函数执行脚本一般不会返回这种类型 */\n chunk = 8,\n \n /** sysobj */\n object = 9,\n tensor = 10,\n \n extobj = 11\n}\n\n\n/** DolphinDB DataType \n 对应的 array vector 类型为 64 + 基本类型\n 对应的 extended 类型为 128 + 基本类型 */\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 compressed = 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 \n decimal32 = 37,\n decimal64 = 38,\n decimal128 = 39,\n \n object = 40,\n iotany = 41,\n \n instrument = 42,\n market_data = 43,\n \n symbol_extended = 145, // 128 + DdbType.symbol\n}\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\n\nexport enum DdbDurationUnit {\n ns = 0,\n us = 1,\n ms = 2,\n s = 3,\n m = 4,\n H = 5,\n d = 6,\n w = 7,\n M = 8,\n y = 9,\n B = 10\n}\n\n\nexport enum DdbChartType {\n area = 0,\n bar = 1,\n column = 2,\n histogram = 3,\n line = 4,\n pie = 5,\n scatter = 6,\n trend = 7,\n kline = 8,\n}\n\n\n// server 实现中区分了 0: NULL (nothing), 1: NULL (null), 2: DFLT (default)\n// Void::serialize()\n// (isNothing() ? 0 : 1) + (isDefault_ ? 2 : 0);\nexport enum DdbVoidType {\n undefined = 0,\n null = 1,\n default = 2\n}\n\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbDurationValue {\n unit: DdbDurationUnit\n \n /** int32 */\n data: number\n}\n\n\nexport interface DdbDecimal32Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int32, 空值为 null ddb null is js null */\n data: number | null\n}\n\nexport interface DdbDecimal64Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int64, 空值为 null empty value is null */\n data: bigint | null\n}\n\nexport interface DdbDecimal128Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int128, 空值为 null empty value is null */\n data: bigint | null\n}\n\nexport interface DdbDecimal32VectorValue {\n scale: number\n \n data: Int32Array\n}\n\nexport interface DdbDecimal64VectorValue {\n scale: number\n \n data: BigInt64Array\n}\n\n\nexport type DdbDurationVectorValue = DdbDurationValue[]\n\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\n\nexport interface DdbExtObjValue {\n type: Uint8Array\n version: number\n data: Uint8Array\n}\n\n\nexport const dictables = new Set([DdbType.any, DdbType.string, DdbType.double, DdbType.float, DdbType.int, DdbType.long])\n\n\n/** 工具,取得某个 DdbType 的字节数 */\nexport const ddb_tensor_bytes: Record<\n DdbType.bool | DdbType.char | DdbType.short | DdbType.int | DdbType.long | DdbType.float | DdbType.double, \n number\n> = {\n [DdbType.bool]: 1,\n [DdbType.char]: 1,\n [DdbType.short]: 2,\n [DdbType.int]: 4,\n [DdbType.long]: 8,\n [DdbType.float]: 4,\n [DdbType.double]: 8,\n}\n\n\nexport type TensorElem = TensorData | boolean | number | bigint | null | string\nexport interface TensorData extends Array<TensorElem> { }\n\nexport interface DdbTensorMetadata {\n /** Tensor 的元素的数据类型 */\n data_type: DdbType\n \n /** Tensor 类型 */\n tensor_type: number\n \n /** 设备类型 */\n device_type: number\n \n /** Tensor Flags */\n tensor_flags: number\n \n /** 维度 */\n dimensions: number\n \n /** shape, shape[i] 表示第 i 个维度的 size */\n shape: number[]\n \n /** strides, strides[i] 表示在第 i 个维度,一个元素与下一个元素的距离 */\n strides: number[]\n \n /** 保留值 */\n preserve_value: bigint\n \n /** 元素个数 */\n elem_count: number\n}\n\nexport interface DdbTensorValue extends DdbTensorMetadata {\n /** 数据 */\n data: Uint8Array\n}\n\n\n/** DdbObj.data() 返回的表格对象 */\nexport interface DdbTableData <TRow = any> {\n /** 表名 */\n name: string\n \n /** 每一列的名称 */\n columns: string[]\n \n /** 每一列的原始 ddb 数据类型 */\n types: DdbType[]\n \n /** 表格数据,每一行的对象组成的数组 */\n data: TRow[]\n}\n\n/** DdbObj.data() 返回的 Tensor 对象 */\nexport interface DdbTensorData extends DdbTensorMetadata {\n /** 数据 */\n data: TensorData\n}\n\n\n/** DdbObj.data() 返回的矩阵对象 */\nexport interface DdbMatrixData {\n /** 原始数据类型 */\n type: DdbType\n \n /** 行数 */\n nrows: number\n \n /** 列数 */\n ncolumns: number\n \n /** 行名称 */\n rows?: any[]\n \n /** 列名称 */\n columns?: any[]\n \n /** 数据, data[0][1] 为第 0 行第 1 列数据 */\n data: any[][]\n}\n\n\nexport type DdbScalarValue = \n null | boolean | number | bigint | string |\n Uint8Array | // uuid, ipaddr, int128, blob\n [number, number] | // complex, point\n DdbFunctionDefValue |\n DdbDurationValue | \n DdbDecimal32Value | DdbDecimal64Value | DdbDecimal128Value\n\n\nexport type IotVectorItemValue = [number | string | bigint | boolean][]\n\n\n/** 根据 DdbType 获取其名称,array vector type 自动在后面加上 [] */\nexport function get_type_name (type: DdbType) {\n return `${DdbType[type] || type}${ 64 <= type && type < 128 ? '[]' : '' }`\n}\n\n\nexport function is_decimal_type (type: DdbType) {\n return type === DdbType.decimal32 || type === DdbType.decimal64 || type === DdbType.decimal128\n}\n\n\nexport function is_decimal_null_value (type: DdbType, value: number | bigint) {\n return (\n (value === nulls.int128 && type === DdbType.decimal128) ||\n (value === nulls.int64 && type === DdbType.decimal64) ||\n (value === nulls.int32 && type === DdbType.decimal32)\n )\n}\n\nexport function get_duration_unit (code: number) {\n let str = String.fromCharCode((code >> 24) & 0xff)\n str += String.fromCharCode((code >> 16) & 0xff)\n str += String.fromCharCode((code >> 8) & 0xff)\n str += String.fromCharCode(code & 0xff)\n return str\n}\n\n\nexport type ConvertableDdbTimeValue = undefined | null | number | string | Date | Dayjs\n\nexport const ddb_time_converters = {\n [DdbType.date]: (date: Date) =>\n Math.floor((date.getTime() - 1000 * 60 * date.getTimezoneOffset()) / (1000 * 3600 * 24)),\n \n [DdbType.datetime]: (date: Date) =>\n (date.getTime() - 1000 * 60 * date.getTimezoneOffset()) / 1000,\n \n [DdbType.timestamp]: (date: Date) =>\n BigInt(date.getTime() - 1000 * 60 * date.getTimezoneOffset()),\n \n [DdbType.nanotimestamp]: (date: Date) =>\n BigInt(date.getTime() - 1000 * 60 * date.getTimezoneOffset()) * 1000000n\n} as Record<DdbType, (date: Date) => number | bigint>\n\n\nfunction value_to_date (value: ConvertableDdbTimeValue, type: DdbType) {\n if (typeof value === 'number' || typeof value === 'string')\n return new Date(value)\n else if (value instanceof Date)\n return value\n else if (dayjs.isDayjs(value))\n return new Date(value.valueOf())\n else\n throw new Error(t('value 不能转换为 {{typename}}', { typename: get_type_name(type) }))\n}\n\n\nexport function get_time_ddbobj (type: DdbType, js_value: ConvertableDdbTimeValue) {\n return {\n form: DdbForm.scalar,\n type,\n value: js_value === null ?\n null\n :\n type === DdbType.nanotimestamp && typeof js_value === 'string' ?\n str2nanotimestamp(js_value)\n :\n ddb_time_converters[type](\n js_value === undefined ? new Date() : value_to_date(js_value, type))\n }\n}\n\n\nexport function get_times_ddbobj (\n type: DdbType,\n js_values?: ConvertableDdbTimeValue[],\n name?: string\n) {\n const length = js_values?.length || 0\n \n const int64 = type === DdbType.timestamp || type === DdbType.nanotimestamp\n \n let values = int64 ? new BigInt64Array(length) : new Int32Array(length)\n \n const converter = ddb_time_converters[type]\n \n for (let i = 0; i < length; ++i) {\n const value = js_values[i]\n \n values[i] = empty(value) ?\n int64 ? nulls.int64 : nulls.int32\n :\n type === DdbType.nanotimestamp && typeof value === 'string' ?\n str2nanotimestamp(value)\n :\n converter(value_to_date(value, type))\n }\n \n return {\n form: DdbForm.vector,\n type,\n rows: length,\n cols: 1,\n value: values,\n name\n }\n}\n\n\n// DataView Extends for bigint 128 operations\nexport function get_big_uint_128 (dataview: DataView, byte_offset: number, le = true) {\n let cursor = byte_offset + (le ? 15 : 0)\n const end = byte_offset + (le ? -1 : 16)\n const step = le ? -1 : 1\n let value = 0n\n \n while (cursor !== end) {\n value = value << 8n | BigInt(dataview.getUint8(cursor))\n cursor += step\n }\n \n return value\n}\n\nexport function get_big_int_128 (dataview: DataView, byte_offset: number, le = true) {\n return BigInt.asIntN(128, get_big_uint_128(dataview, byte_offset, le))\n}\n\n\nexport function set_big_uint_128 (dataView: DataView, byte_offset: number, value: bigint, le = true) {\n let cursor = byte_offset + (le ? 0 : 15)\n const end = byte_offset + (le ? 16 : -1)\n const step = le ? 1 : -1\n \n while (cursor !== end) {\n dataView.setUint8(cursor, Number(value & 0xffn))\n value = value >> 8n\n cursor += step\n }\n}\n\nexport function set_big_int_128 (dataview: DataView, byte_offset: number, value: bigint, le = true) {\n set_big_uint_128(dataview, byte_offset, value, le)\n}\n\nexport function generate_array_type (baseType: string, dimensions: number[]): string {\n let result = baseType\n dimensions.forEach(dimension => {\n result += `[${dimension}]`\n })\n return result\n}\n\n\n// 大端\n// const dataBE = new ArrayBuffer(16)\n// const dataViewBE = new DataView(dataBE)\n// set_big_int_128(dataViewBE, 0, -34355n, false)\n// console.log(dataViewBE.buffer)\n// const bigInt128BE = get_big_int_128(dataViewBE, 0, false)\n// const bigUint128BE = get_big_uint_128(dataViewBE, 0, false)\n// console.log(bigInt128BE.toString(), bigUint128BE.toString())\n\n// 小端\n// const dataLE = new ArrayBuffer(16)\n// const dataViewLE = new DataView(dataLE)\n// set_big_int_128(dataViewLE, 0, -34355n, true)\n// console.log(dataViewLE.buffer)\n// const bigInt128LE = get_big_int_128(dataViewLE, 0, true)\n// const bigUint128LE = get_big_uint_128(dataViewLE, 0, true)\n// console.log(bigInt128LE.toString(), bigUint128LE.toString())\n\n\n/** 用来处理时差 To deal with jet lag */\nlet _datetime_formatter = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'short', timeStyle: 'medium', timeZone: 'UTC', hour12: false })\n\n\nexport function date2ms (date: number | null) {\n // 将 server 的本地时间 (以 ms 为单位,1970.01.01 00:00:00 作为零点) 作为 UTC-0 格式化为字符串,然后根据本地的时区解析这个字符串转换为 UTC-8\n // 本地的时区与实际的时间值相关,getTimezoneOffset() 可能会受到夏令时 (DST) 的影响,不能使用\n // 得到的 utc 毫秒数交给 js date 或者 dayjs 去格式化\n \n if (date === null || date === nulls.int32)\n return null\n \n const ms = 1000 * 3600 * 24 * date\n \n return timestamp2ms(ms)\n}\n\nexport function date2str (date: number | null, format = 'YYYY.MM.DD') {\n return (date === null || date === nulls.int32) ? \n 'null'\n :\n dayjs(\n date2ms(date)\n ).format(format)\n}\n\nexport function month2ms (month: number | null): number | null {\n return (month === null || month === nulls.int32) ?\n null\n :\n dayjs(\n month2str(month),\n 'YYYY.MM[M]'\n ).valueOf()\n}\n\nexport function month2str (month: number | null) {\n if (month === null || month === nulls.int32)\n return 'null'\n \n if (month < 0)\n return String(month)\n \n const _month = month % 12\n const year = Math.trunc(month / 12)\n return `${String(year).padStart(4, '0')}.${String(_month + 1).padStart(2, '0')}M`\n}\n\nexport function time2ms (time: number | null): number | null {\n return (time === null || time === nulls.int32) ?\n null\n :\n timestamp2ms(time)\n}\n\nexport function time2str (time: number | null, format = 'HH:mm:ss.SSS') {\n return (time === null || time === nulls.int32) ?\n 'null'\n :\n dayjs(\n time2ms(time)\n ).format(format)\n}\n\nexport function minute2ms (minute: number | null): number | null {\n if (minute === null || minute === nulls.int32)\n return null\n \n const ms = 60 * 1000 * minute\n \n return timestamp2ms(ms)\n}\n\nexport function minute2str (minute: number | null, format = 'HH:mm[m]') {\n return (minute === null || minute === nulls.int32) ?\n 'null'\n :\n dayjs(\n minute2ms(minute)\n ).format(format)\n}\n\nexport function second2ms (second: number | null): number | null {\n if (second === null || second === nulls.int32)\n return null\n \n const ms = 1000 * second\n \n return timestamp2ms(ms)\n}\n\nexport function second2str (second: number | null, format = 'HH:mm:ss') {\n return (second === null || second === nulls.int32) ?\n 'null'\n :\n dayjs(\n second2ms(second)\n ).format(format)\n}\n\nexport function datetime2ms (datetime: number | null): number | null {\n if (datetime === null || datetime === nulls.int32)\n return null\n \n const date = new Date(1000 * datetime)\n return new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n}\n\nexport function datetime2str (datetime: number | null, format = 'YYYY.MM.DD HH:mm:ss') {\n return (datetime === null || datetime === nulls.int32) ?\n 'null'\n :\n dayjs(\n datetime2ms(datetime)\n ).format(format)\n}\n\n/** _datetime_formatter.format 会在 date 为 Invalid Date 时抛出错误 */\nexport function timestamp2ms (timestamp: bigint | number | null): number | null {\n if (timestamp === null || timestamp === nulls.int64)\n return null\n \n const date = new Date(Number(timestamp))\n return new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n}\n\n\n/** format timestamp (bigint) to string \n - timestamp: bigint value\n - format?: \n 格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSS` 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 */\nexport function timestamp2str (timestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n return (timestamp === null || timestamp === nulls.int64) ?\n 'null'\n :\n dayjs(\n timestamp2ms(timestamp)\n ).format(format)\n}\n\nexport function datehour2ms (datehour: number | null): number | null {\n if (datehour === null || datehour === nulls.int32)\n return null\n \n const ms = 1000 * 3600 * datehour\n \n return timestamp2ms(ms)\n}\n\nexport function datehour2str (datehour: number | null, format = 'YYYY.MM.DDTHH') {\n if (datehour === null || datehour === nulls.int32)\n return 'null'\n \n const ms = 1000 * 3600 * datehour\n \n return dayjs(\n timestamp2ms(ms)\n ).format(format)\n}\n\n\n/** parse timestamp string to bigint value \n - str: timestamp string, 如果为空字符串或 'null' 会返回对应的空值 (nulls.int64) \n timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n 对应传入字符串的格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSS` \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 */\nexport function str2timestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n check(str.length === format.length, t('timestamp 字符串长度必须等于格式串长度'))\n \n const ms = dayjs(str, format).valueOf()\n \n return BigInt(\n -(1000 * 60 * new Date(ms).getTimezoneOffset()) +\n ms\n )\n}\n\nexport function nanotime2ns (nanotime: bigint | null): bigint | null {\n return nanotimestamp2ns(nanotime)\n}\n\nexport function nanotime2str (nanotime: bigint | null, format = 'HH:mm:ss.SSSSSSSSS') {\n if (nanotime === null || nanotime === nulls.int64)\n return 'null'\n \n if (nanotime < 0n)\n return String(nanotime)\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const ms = Number(nanotime) / 1000000\n \n return (\n dayjs(\n timestamp2ms(ms)\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(nanotime % 1000000000n).padStart(9, '0')\n )\n}\n\nexport function nanotimestamp2ns (nanotimestamp: bigint | null): bigint | null {\n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return null\n \n const date = new Date(Number(nanotimestamp / 1000000n))\n return BigInt(\n new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n ) * 1000000n + nanotimestamp % 1000000n\n}\n\n/** format nanotimestamp value (bigint) to string \n - nanotimestamp: bigint value\n - format?: \n 格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n 秒的格式为 ss (必须包含); 纳秒的格式为 SSSSSSSSS (必须包含) 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 | null, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n // tests:\n // nanotimestamp2str(0n)\n // nanotimestamp2str(-1n)\n // nanotimestamp2str(-9_9999_9999n)\n // nanotimestamp2str(-10_0000_0000n)\n // nanotimestamp2str(-10_0000_0001n)\n \n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return 'null'\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const remainder = nanotimestamp % 1000000000n\n const borrow = remainder < 0n\n \n const ms = Number((nanotimestamp - remainder + (borrow ? -1000000000n : 0n)) / 1000000n)\n \n return (\n dayjs(\n _datetime_formatter.format(new Date(ms))\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(\n borrow ?\n (remainder + 1000000000n) % 1000000000n\n :\n remainder\n ).padStart(9, '0')\n )\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, 如果为空字符串或 'null' 会返回对应的空值 (nulls.int64) \n nano timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n 对应传入字符串的格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n 秒的格式为 ss (必须包含); 纳秒的格式为 SSSSSSSSS (必须包含) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens \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) */\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n check(str.length === format.length, t('nanotimestamp 字符串长度必须等于格式串长度'))\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const ms = dayjs(\n str.slice(0, i_second_end),\n format.slice(0, i_second_end)\n ).valueOf()\n \n return (\n BigInt(\n -(1000 * 60 * new Date(ms).getTimezoneOffset()) +\n ms\n ) * 1000000n\n +\n BigInt(\n str.slice(i_nanosecond_start, i_nanosecond_start + 9)\n )\n )\n}\n\n\nexport function ipaddr2str (buffer: Uint8Array, le = true, ipv6?: boolean) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n const i_non_zero = buf.findIndex(x => x !== 0)\n \n if (\n ipv6 || \n i_non_zero !== -1 && i_non_zero < 12\n ) // ipv6\n return buf2ipaddr([...buf]).toString()\n else // ipv4\n return buf.subarray(12).join('.')\n}\n\nexport function uuid2str (buffer: Uint8Array, le = true) {\n const str = int1282str(buffer, le)\n return `${str.slice(0, 8)}-${str.slice(8, 12)}-${str.slice(12, 16)}-${str.slice(16, 20)}-${str.slice(20)}`\n}\n\nexport function int1282str (buffer: Uint8Array, le = true) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n return [...buf].map(x => \n x.toString(16)\n .padStart(2, '0')\n ).join('')\n}\n\n\nexport interface ConvertOptions {\n /** `'string'` blob 转换格式 */\n blob?: 'string' | 'binary'\n \n /** `'string'` char 转换格式: string 转为 string[],number 转为 number[] */\n char?: 'string' | 'number'\n \n /** `'strings'` char vector 转换格式: strings 转为 string[], binary 转为 Uint8Array */\n chars?: 'strings' | 'binary'\n \n /** `'ms'` timestamp 类型转换为字符串表示时显示到秒还是毫秒 */\n timestamp?: 's' | 'ms'\n \n /** `'data'` 表格类型返回格式: data 转为 TResult, full 转为 DdbTableData */\n table?: 'data' | 'full'\n}\n\n\nexport const winsize = 10000 as const\n\nexport type DdbRpcType = 'script' | 'function' | 'variable' | 'connect'\n\nconst dolphindb_function_definition_pattern = /\\bdef (\\w+) \\(/\n\nexport const function_definition_patterns = {\n dolphindb: dolphindb_function_definition_pattern,\n python: dolphindb_function_definition_pattern,\n kdb: /(\\w+): \\{\\[/\n}\n\n\nexport const funcdefs = {\n invoke: {\n dolphindb:\n 'def invoke (func, args_json) {\\n' +\n ' args = fromStdJson(args_json)\\n' +\n ' func_ = func\\n' +\n ' if (type(func) == STRING)\\n' +\n ' func_ = funcByName(func)\\n' +\n ' if (type(args) != ANY)\\n' +\n ' args = cast(args, ANY)\\n' +\n ' return unifiedCall(func_, args)\\n' +\n '}\\n',\n \n python:\n 'def invoke (func, args_json):\\n' +\n ' args = fromStdJson(args_json)\\n' +\n ' func_ = func\\n' +\n ' if type(func) == STRING:\\n' +\n ' func_ = funcByName(func)\\n' +\n ' if type(args) != ANY:\\n' +\n ' args = cast(args, ANY)\\n' +\n ' return unifiedCall(func_, args)\\n',\n \n kdb:\n 'invoke: {[fn; args_json]\\n' +\n ' args_: fromStdJson[args_json];\\n' +\n ' func_: fn;\\n' +\n ' if[typestr[fn] = `STRING;\\n' +\n ' func_: get toCharArray fn;\\n' +\n ' if[type[args_] <> 0] args_: cast[args_; 25]\\n' +\n ' ];\\n' +\n ' func_ . args_\\n' +\n '}\\n'\n },\n \n jsrpc: {\n dolphindb:\n 'def jsrpc (node, func_name, args) {\\n' +\n ' args_ = args\\n' +\n ' if (func_name == \"invoke\")\\n' +\n ' args_[0] = funcByName(args[0])\\n' +\n ' return rpc(node, unifiedCall, funcByName(func_name), args_)\\n' +\n '}\\n',\n \n python:\n 'def jsrpc (node, func_name, args):\\n' +\n ' args_ = args\\n' +\n ' if func_name == \"invoke\":\\n' +\n ' args_[0] = funcByName(args[0])\\n' +\n ' return rpc(node, unifiedCall, funcByName(func_name), args_)\\n',\n \n kdb:\n 'jsrpc: {[node; func_name; args]\\n' +\n ' args_: args;\\n' +\n ' if[func_name=\"invoke\"; args_[0]:funcByName[args[0]]];\\n' +\n ' rpc[node; unifiedCall; funcByName[func_name]; args_]\\n' +\n '}\\n'\n },\n \n pnode_run: {\n dolphindb:\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 \n python:\n 'def pnode_run (nodes, func_name, args, add_node_alias):\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if not nargs:\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = [ ]\\n' +\n ' args_partial.append(func)\\n' +\n ' for a in args:\\n' +\n ' args_partial.append(a)\\n' +\n ' \\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n',\n \n kdb:\n 'pnode_run: {[nodes; func_name; args]\\n' +\n ' nargs_: count args;\\n' +\n ' func_: get toCharArray func_name;\\n' +\n ' if [nargs_=0; : pnodeRun[func_; nodes; 1b]];\\n' +\n ' args_partial_: func,args;\\n' +\n ' pnodeRun[unifiedCall[partial; args_partial_]; nodes; 1b]\\n' +\n '}\\n'\n }\n} as const\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"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","sourcesContent":["import { default as dayjs, type Dayjs } from 'dayjs'\nimport DayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'\ndayjs.extend(DayjsCustomParseFormat)\n\nimport { empty } from 'xshell/prototype.common.js'\nimport { check } from 'xshell/utils.common.js'\n\nimport ipaddrjs from 'ipaddr.js'\nconst { fromByteArray: buf2ipaddr } = ipaddrjs\n\nimport { t } from './i18n/index.ts'\n\n\nexport const nulls = {\n int8: -0x80, // -128\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 int128: -0x80_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00n, // -170_1411_8346_0469_2317_3168_7303_7158_8410_5728\n float32: -3.4028234663852886e+38,\n \n /** -Number.MAX_VALUE */\n double: -Number.MAX_VALUE,\n \n bytes16: Uint8Array.from(\n new Array(16).fill(0)\n )\n} as const\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 \n /** 节点内部通信可能会使用,调用函数执行脚本一般不会返回这种类型 */\n chunk = 8,\n \n /** sysobj */\n object = 9,\n tensor = 10,\n \n extobj = 11\n}\n\n\n/** DolphinDB DataType \n 对应的 array vector 类型为 64 + 基本类型\n 对应的 extended 类型为 128 + 基本类型 */\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 compressed = 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 \n decimal32 = 37,\n decimal64 = 38,\n decimal128 = 39,\n \n object = 40,\n iotany = 41,\n \n instrument = 42,\n market_data = 43,\n \n symbol_extended = 145, // 128 + DdbType.symbol\n}\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\n\nexport enum DdbDurationUnit {\n ns = 0,\n us = 1,\n ms = 2,\n s = 3,\n m = 4,\n H = 5,\n d = 6,\n w = 7,\n M = 8,\n y = 9,\n B = 10\n}\n\n\nexport enum DdbChartType {\n area = 0,\n bar = 1,\n column = 2,\n histogram = 3,\n line = 4,\n pie = 5,\n scatter = 6,\n trend = 7,\n kline = 8,\n}\n\n\n// server 实现中区分了 0: NULL (nothing), 1: NULL (null), 2: DFLT (default)\n// Void::serialize()\n// (isNothing() ? 0 : 1) + (isDefault_ ? 2 : 0);\nexport enum DdbVoidType {\n undefined = 0,\n null = 1,\n default = 2\n}\n\n\nexport interface DdbFunctionDefValue {\n type: DdbFunctionType\n name: string\n}\n\nexport interface DdbDurationValue {\n unit: DdbDurationUnit\n \n /** int32 */\n data: number\n}\n\n\nexport interface DdbDecimal32Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int32, 空值为 null ddb null is js null */\n data: number | null\n}\n\nexport interface DdbDecimal64Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int64, 空值为 null empty value is null */\n data: bigint | null\n}\n\nexport interface DdbDecimal128Value {\n /** int32, data 需要除以 10^scale 得到原值 */\n scale: number\n \n /** int128, 空值为 null empty value is null */\n data: bigint | null\n}\n\nexport interface DdbDecimal32VectorValue {\n scale: number\n \n data: Int32Array\n}\n\nexport interface DdbDecimal64VectorValue {\n scale: number\n \n data: BigInt64Array\n}\n\n\nexport type DdbDurationVectorValue = DdbDurationValue[]\n\n\nexport interface DdbSymbolExtendedValue {\n base_id: number\n base: string[]\n data: Uint32Array\n}\n\n\nexport interface DdbExtObjValue {\n type: Uint8Array\n version: number\n data: Uint8Array\n}\n\n\nexport const dictables = new Set([DdbType.any, DdbType.string, DdbType.double, DdbType.float, DdbType.int, DdbType.long])\n\n\n/** 工具,取得某个 DdbType 的字节数 */\nexport const ddb_tensor_bytes: Record<\n DdbType.bool | DdbType.char | DdbType.short | DdbType.int | DdbType.long | DdbType.float | DdbType.double, \n number\n> = {\n [DdbType.bool]: 1,\n [DdbType.char]: 1,\n [DdbType.short]: 2,\n [DdbType.int]: 4,\n [DdbType.long]: 8,\n [DdbType.float]: 4,\n [DdbType.double]: 8,\n}\n\n\nexport type TensorElem = TensorData | boolean | number | bigint | null | string\nexport interface TensorData extends Array<TensorElem> { }\n\nexport interface DdbTensorMetadata {\n /** Tensor 的元素的数据类型 */\n data_type: DdbType\n \n /** Tensor 类型 */\n tensor_type: number\n \n /** 设备类型 */\n device_type: number\n \n /** Tensor Flags */\n tensor_flags: number\n \n /** 维度 */\n dimensions: number\n \n /** shape, shape[i] 表示第 i 个维度的 size */\n shape: number[]\n \n /** strides, strides[i] 表示在第 i 个维度,一个元素与下一个元素的距离 */\n strides: number[]\n \n /** 保留值 */\n preserve_value: bigint\n \n /** 元素个数 */\n elem_count: number\n}\n\nexport interface DdbTensorValue extends DdbTensorMetadata {\n /** 数据 */\n data: Uint8Array\n}\n\n\n/** DdbObj.data() 返回的表格对象 */\nexport interface DdbTableData <TRow = any> {\n /** 表名 */\n name: string\n \n /** 每一列的名称 */\n columns: string[]\n \n /** 每一列的原始 ddb 数据类型 */\n types: DdbType[]\n \n /** 表格数据,每一行的对象组成的数组 */\n data: TRow[]\n}\n\n/** DdbObj.data() 返回的 Tensor 对象 */\nexport interface DdbTensorData extends DdbTensorMetadata {\n /** 数据 */\n data: TensorData\n}\n\n\n/** DdbObj.data() 返回的矩阵对象 */\nexport interface DdbMatrixData {\n /** 原始数据类型 */\n type: DdbType\n \n /** 行数 */\n nrows: number\n \n /** 列数 */\n ncolumns: number\n \n /** 行名称 */\n rows?: any[]\n \n /** 列名称 */\n columns?: any[]\n \n /** 数据, data[0][1] 为第 0 行第 1 列数据 */\n data: any[][]\n}\n\n\nexport type DdbScalarValue = \n null | boolean | number | bigint | string |\n Uint8Array | // uuid, ipaddr, int128, blob\n [number, number] | // complex, point\n DdbFunctionDefValue |\n DdbDurationValue | \n DdbDecimal32Value | DdbDecimal64Value | DdbDecimal128Value\n\n\nexport type IotVectorItemValue = [number | string | bigint | boolean][]\n\n\n/** 根据 DdbType 获取其名称,array vector type 自动在后面加上 [] */\nexport function get_type_name (type: DdbType) {\n return `${DdbType[type] || type}${ 64 <= type && type < 128 ? '[]' : '' }`\n}\n\n\nexport function is_decimal_type (type: DdbType) {\n return type === DdbType.decimal32 || type === DdbType.decimal64 || type === DdbType.decimal128\n}\n\n\nexport function is_decimal_null_value (type: DdbType, value: number | bigint) {\n return (\n (value === nulls.int128 && type === DdbType.decimal128) ||\n (value === nulls.int64 && type === DdbType.decimal64) ||\n (value === nulls.int32 && type === DdbType.decimal32)\n )\n}\n\nexport function get_duration_unit (code: number) {\n let str = String.fromCharCode((code >> 24) & 0xff)\n str += String.fromCharCode((code >> 16) & 0xff)\n str += String.fromCharCode((code >> 8) & 0xff)\n str += String.fromCharCode(code & 0xff)\n return str\n}\n\n\nexport type ConvertableDdbTimeValue = undefined | null | number | string | Date | Dayjs\n\nexport const ddb_time_converters = {\n [DdbType.date]: (date: Date) =>\n Math.floor((date.getTime() - 1000 * 60 * date.getTimezoneOffset()) / (1000 * 3600 * 24)),\n \n [DdbType.datetime]: (date: Date) =>\n (date.getTime() - 1000 * 60 * date.getTimezoneOffset()) / 1000,\n \n [DdbType.timestamp]: (date: Date) =>\n BigInt(date.getTime() - 1000 * 60 * date.getTimezoneOffset()),\n \n [DdbType.nanotimestamp]: (date: Date) =>\n BigInt(date.getTime() - 1000 * 60 * date.getTimezoneOffset()) * 1000000n\n} as Record<DdbType, (date: Date) => number | bigint>\n\n\nfunction value_to_date (value: ConvertableDdbTimeValue, type: DdbType) {\n if (typeof value === 'number' || typeof value === 'string')\n return new Date(value)\n else if (value instanceof Date)\n return value\n else if (dayjs.isDayjs(value))\n return new Date(value.valueOf())\n else\n throw new Error(t('value 不能转换为 {{typename}}', { typename: get_type_name(type) }))\n}\n\n\nexport function get_time_ddbobj (type: DdbType, js_value: ConvertableDdbTimeValue) {\n return {\n form: DdbForm.scalar,\n type,\n value: js_value === null ?\n null\n :\n type === DdbType.nanotimestamp && typeof js_value === 'string' ?\n str2nanotimestamp(js_value)\n :\n ddb_time_converters[type](\n js_value === undefined ? new Date() : value_to_date(js_value, type))\n }\n}\n\n\nexport function get_times_ddbobj (\n type: DdbType,\n js_values?: ConvertableDdbTimeValue[],\n name?: string\n) {\n const length = js_values?.length || 0\n \n const int64 = type === DdbType.timestamp || type === DdbType.nanotimestamp\n \n let values = int64 ? new BigInt64Array(length) : new Int32Array(length)\n \n const converter = ddb_time_converters[type]\n \n for (let i = 0; i < length; ++i) {\n const value = js_values[i]\n \n values[i] = empty(value) ?\n int64 ? nulls.int64 : nulls.int32\n :\n type === DdbType.nanotimestamp && typeof value === 'string' ?\n str2nanotimestamp(value)\n :\n converter(value_to_date(value, type))\n }\n \n return {\n form: DdbForm.vector,\n type,\n rows: length,\n cols: 1,\n value: values,\n name\n }\n}\n\n\n// DataView Extends for bigint 128 operations\nexport function get_big_uint_128 (dataview: DataView, byte_offset: number, le = true) {\n let cursor = byte_offset + (le ? 15 : 0)\n const end = byte_offset + (le ? -1 : 16)\n const step = le ? -1 : 1\n let value = 0n\n \n while (cursor !== end) {\n value = value << 8n | BigInt(dataview.getUint8(cursor))\n cursor += step\n }\n \n return value\n}\n\nexport function get_big_int_128 (dataview: DataView, byte_offset: number, le = true) {\n return BigInt.asIntN(128, get_big_uint_128(dataview, byte_offset, le))\n}\n\n\nexport function set_big_uint_128 (dataView: DataView, byte_offset: number, value: bigint, le = true) {\n let cursor = byte_offset + (le ? 0 : 15)\n const end = byte_offset + (le ? 16 : -1)\n const step = le ? 1 : -1\n \n while (cursor !== end) {\n dataView.setUint8(cursor, Number(value & 0xffn))\n value = value >> 8n\n cursor += step\n }\n}\n\nexport function set_big_int_128 (dataview: DataView, byte_offset: number, value: bigint, le = true) {\n set_big_uint_128(dataview, byte_offset, value, le)\n}\n\nexport function generate_array_type (baseType: string, dimensions: number[]): string {\n let result = baseType\n dimensions.forEach(dimension => {\n result += `[${dimension}]`\n })\n return result\n}\n\n\n// 大端\n// const dataBE = new ArrayBuffer(16)\n// const dataViewBE = new DataView(dataBE)\n// set_big_int_128(dataViewBE, 0, -34355n, false)\n// console.log(dataViewBE.buffer)\n// const bigInt128BE = get_big_int_128(dataViewBE, 0, false)\n// const bigUint128BE = get_big_uint_128(dataViewBE, 0, false)\n// console.log(bigInt128BE.toString(), bigUint128BE.toString())\n\n// 小端\n// const dataLE = new ArrayBuffer(16)\n// const dataViewLE = new DataView(dataLE)\n// set_big_int_128(dataViewLE, 0, -34355n, true)\n// console.log(dataViewLE.buffer)\n// const bigInt128LE = get_big_int_128(dataViewLE, 0, true)\n// const bigUint128LE = get_big_uint_128(dataViewLE, 0, true)\n// console.log(bigInt128LE.toString(), bigUint128LE.toString())\n\n\n/** 用来处理时差 To deal with jet lag */\nlet _datetime_formatter = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'short', timeStyle: 'medium', timeZone: 'UTC', hour12: false })\n\n\nexport function date2ms (date: number | null) {\n // 将 server 的本地时间 (以 ms 为单位,1970.01.01 00:00:00 作为零点) 作为 UTC-0 格式化为字符串,然后根据本地的时区解析这个字符串转换为 UTC-8\n // 本地的时区与实际的时间值相关,getTimezoneOffset() 可能会受到夏令时 (DST) 的影响,不能使用\n // 得到的 utc 毫秒数交给 js date 或者 dayjs 去格式化\n \n if (date === null || date === nulls.int32)\n return null\n \n const ms = 1000 * 3600 * 24 * date\n \n return timestamp2ms(ms)\n}\n\nexport function date2str (date: number | null, format = 'YYYY.MM.DD') {\n return (date === null || date === nulls.int32) ? \n 'null'\n :\n dayjs(\n date2ms(date)\n ).format(format)\n}\n\nexport function month2ms (month: number | null): number | null {\n return (month === null || month === nulls.int32) ?\n null\n :\n dayjs(\n month2str(month),\n 'YYYY.MM[M]'\n ).valueOf()\n}\n\nexport function month2str (month: number | null) {\n if (month === null || month === nulls.int32)\n return 'null'\n \n if (month < 0)\n return String(month)\n \n const _month = month % 12\n const year = Math.trunc(month / 12)\n return `${String(year).padStart(4, '0')}.${String(_month + 1).padStart(2, '0')}M`\n}\n\nexport function time2ms (time: number | null): number | null {\n return (time === null || time === nulls.int32) ?\n null\n :\n timestamp2ms(time)\n}\n\nexport function time2str (time: number | null, format = 'HH:mm:ss.SSS') {\n return (time === null || time === nulls.int32) ?\n 'null'\n :\n dayjs(\n time2ms(time)\n ).format(format)\n}\n\nexport function minute2ms (minute: number | null): number | null {\n if (minute === null || minute === nulls.int32)\n return null\n \n const ms = 60 * 1000 * minute\n \n return timestamp2ms(ms)\n}\n\nexport function minute2str (minute: number | null, format = 'HH:mm[m]') {\n return (minute === null || minute === nulls.int32) ?\n 'null'\n :\n dayjs(\n minute2ms(minute)\n ).format(format)\n}\n\nexport function second2ms (second: number | null): number | null {\n if (second === null || second === nulls.int32)\n return null\n \n const ms = 1000 * second\n \n return timestamp2ms(ms)\n}\n\nexport function second2str (second: number | null, format = 'HH:mm:ss') {\n return (second === null || second === nulls.int32) ?\n 'null'\n :\n dayjs(\n second2ms(second)\n ).format(format)\n}\n\nexport function datetime2ms (datetime: number | null): number | null {\n if (datetime === null || datetime === nulls.int32)\n return null\n \n const date = new Date(1000 * datetime)\n return new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n}\n\nexport function datetime2str (datetime: number | null, format = 'YYYY.MM.DD HH:mm:ss') {\n return (datetime === null || datetime === nulls.int32) ?\n 'null'\n :\n dayjs(\n datetime2ms(datetime)\n ).format(format)\n}\n\n/** _datetime_formatter.format 会在 date 为 Invalid Date 时抛出错误 */\nexport function timestamp2ms (timestamp: bigint | number | null): number | null {\n if (timestamp === null || timestamp === nulls.int64)\n return null\n \n const date = new Date(Number(timestamp))\n return new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n}\n\n\n/** format timestamp (bigint) to string \n - timestamp: bigint value\n - format?: \n 格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSS` 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 */\nexport function timestamp2str (timestamp: bigint | null, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n return (timestamp === null || timestamp === nulls.int64) ?\n 'null'\n :\n dayjs(\n timestamp2ms(timestamp)\n ).format(format)\n}\n\nexport function datehour2ms (datehour: number | null): number | null {\n if (datehour === null || datehour === nulls.int32)\n return null\n \n const ms = 1000 * 3600 * datehour\n \n return timestamp2ms(ms)\n}\n\nexport function datehour2str (datehour: number | null, format = 'YYYY.MM.DDTHH') {\n if (datehour === null || datehour === nulls.int32)\n return 'null'\n \n const ms = 1000 * 3600 * datehour\n \n return dayjs(\n timestamp2ms(ms)\n ).format(format)\n}\n\n\n/** parse timestamp string to bigint value \n - str: timestamp string, 如果为空字符串或 'null' 会返回对应的空值 (nulls.int64) \n timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n 对应传入字符串的格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSS` \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 */\nexport function str2timestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n check(str.length === format.length, t('timestamp 字符串长度必须等于格式串长度'))\n \n const ms = dayjs(str, format).valueOf()\n \n return BigInt(\n -(1000 * 60 * new Date(ms).getTimezoneOffset()) +\n ms\n )\n}\n\nexport function nanotime2ns (nanotime: bigint | null): bigint | null {\n return nanotimestamp2ns(nanotime)\n}\n\nexport function nanotime2str (nanotime: bigint | null, format = 'HH:mm:ss.SSSSSSSSS') {\n if (nanotime === null || nanotime === nulls.int64)\n return 'null'\n \n if (nanotime < 0n)\n return String(nanotime)\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const ms = Number(nanotime) / 1000000\n \n return (\n dayjs(\n timestamp2ms(ms)\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(nanotime % 1000000000n).padStart(9, '0')\n )\n}\n\nexport function nanotimestamp2ns (nanotimestamp: bigint | null): bigint | null {\n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return null\n \n const date = new Date(Number(nanotimestamp / 1000000n))\n return BigInt(\n new Date(`${_datetime_formatter.format(date)}.${String(date.getUTCMilliseconds()).padStart(3, '0')}`).valueOf()\n ) * 1000000n + nanotimestamp % 1000000n\n}\n\n/** format nanotimestamp value (bigint) to string \n - nanotimestamp: bigint value\n - format?: \n 格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` format string, default is `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n 秒的格式为 ss (必须包含); 纳秒的格式为 SSSSSSSSS (必须包含) 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 | null, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n // tests:\n // nanotimestamp2str(0n)\n // nanotimestamp2str(-1n)\n // nanotimestamp2str(-9_9999_9999n)\n // nanotimestamp2str(-10_0000_0000n)\n // nanotimestamp2str(-10_0000_0001n)\n \n if (nanotimestamp === null || nanotimestamp === nulls.int64)\n return 'null'\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const remainder = nanotimestamp % 1000000000n\n const borrow = remainder < 0n\n \n const ms = Number((nanotimestamp - remainder + (borrow ? -1000000000n : 0n)) / 1000000n)\n \n return (\n dayjs(\n _datetime_formatter.format(new Date(ms))\n ).format(\n format.slice(0, i_second_end)\n ) + \n format.slice(i_second_end, i_nanosecond_start) + \n String(\n borrow ?\n (remainder + 1000000000n) % 1000000000n\n :\n remainder\n ).padStart(9, '0')\n )\n}\n\n/** parse nano timestamp string to bigint value \n - str: nano timestamp string, 如果为空字符串或 'null' 会返回对应的空值 (nulls.int64) \n nano timestamp string, If it is an empty string or 'null', it will return the corresponding empty value (nulls.int64)\n - format?: \n 对应传入字符串的格式串,默认是 `YYYY.MM.DD HH:mm:ss.SSSSSSSSS` \n 秒的格式为 ss (必须包含); 纳秒的格式为 SSSSSSSSS (必须包含) \n https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens \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) */\nexport function str2nanotimestamp (str: string, format = 'YYYY.MM.DD HH:mm:ss.SSSSSSSSS') {\n if (!str || str === 'null')\n return nulls.int64\n \n check(str.length === format.length, t('nanotimestamp 字符串长度必须等于格式串长度'))\n \n const i_second_start = format.indexOf('ss')\n check(i_second_start !== -1, t('格式串必须包含秒的格式 (ss)'))\n \n const i_second_end = i_second_start + 2\n \n const i_nanosecond_start = format.indexOf('SSSSSSSSS', i_second_end)\n check(i_nanosecond_start !== -1, t('格式串必须包含纳秒的格式 (SSSSSSSSS)'))\n \n const ms = dayjs(\n str.slice(0, i_second_end),\n format.slice(0, i_second_end)\n ).valueOf()\n \n return (\n BigInt(\n -(1000 * 60 * new Date(ms).getTimezoneOffset()) +\n ms\n ) * 1000000n\n +\n BigInt(\n str.slice(i_nanosecond_start, i_nanosecond_start + 9)\n )\n )\n}\n\n\nexport function ipaddr2str (buffer: Uint8Array, le = true, ipv6?: boolean) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n const i_non_zero = buf.findIndex(x => x !== 0)\n \n if (\n ipv6 || \n i_non_zero !== -1 && i_non_zero < 12\n ) // ipv6\n return buf2ipaddr([...buf]).toString()\n else // ipv4\n return buf.subarray(12).join('.')\n}\n\nexport function uuid2str (buffer: Uint8Array, le = true) {\n const str = int1282str(buffer, le)\n return `${str.slice(0, 8)}-${str.slice(8, 12)}-${str.slice(12, 16)}-${str.slice(16, 20)}-${str.slice(20)}`\n}\n\nexport function int1282str (buffer: Uint8Array, le = true) {\n let buf = buffer\n \n if (le)\n buf = buffer.slice().reverse()\n \n return [...buf].map(x => \n x.toString(16)\n .padStart(2, '0')\n ).join('')\n}\n\n\nexport interface ConvertOptions {\n /** `'string'` blob 转换格式 */\n blob?: 'string' | 'binary'\n \n /** `'string'` char 转换格式: string 转为 string[],number 转为 number[] */\n char?: 'string' | 'number'\n \n /** `'strings'` char vector 转换格式: strings 转为 string[], binary 转为 Uint8Array */\n chars?: 'strings' | 'binary'\n \n /** `'ms'` timestamp 类型转换为字符串表示时显示到秒还是毫秒 */\n timestamp?: 's' | 'ms'\n \n /** `'data'` 表格类型返回格式: data 转为 TResult, full 转为 DdbTableData */\n table?: 'data' | 'full'\n}\n\n\nexport const winsize = 10000 as const\n\nexport type DdbRpcType = 'script' | 'function' | 'variable' | 'connect'\n\nconst dolphindb_function_definition_pattern = /\\bdef (\\w+) \\(/\n\nexport const function_definition_patterns = {\n dolphindb: dolphindb_function_definition_pattern,\n python: dolphindb_function_definition_pattern,\n kdb: /(\\w+): \\{\\[/\n}\n\n\nexport const funcdefs = {\n invoke: {\n dolphindb:\n 'def invoke (func, args_json) {\\n' +\n ' args = fromStdJson(args_json)\\n' +\n ' func_ = func\\n' +\n ' if (type(func) == STRING)\\n' +\n ' func_ = funcByName(func)\\n' +\n ' if (type(args) != ANY)\\n' +\n ' args = cast(args, ANY)\\n' +\n ' return unifiedCall(func_, args)\\n' +\n '}\\n',\n \n python:\n 'def invoke (func, args_json):\\n' +\n ' args = fromStdJson(args_json)\\n' +\n ' func_ = func\\n' +\n ' if type(func) == STRING:\\n' +\n ' func_ = funcByName(func)\\n' +\n ' if type(args) != ANY:\\n' +\n ' args = cast(args, ANY)\\n' +\n ' return unifiedCall(func_, args)\\n',\n \n kdb:\n 'invoke: {[fn; args_json]\\n' +\n ' args_: fromStdJson[args_json];\\n' +\n ' func_: fn;\\n' +\n ' if[typestr[fn] = `STRING;\\n' +\n ' func_: get toCharArray fn;\\n' +\n ' if[type[args_] <> 0] args_: cast[args_; 25]\\n' +\n ' ];\\n' +\n ' func_ . args_\\n' +\n '}\\n'\n },\n \n jsrpc: {\n dolphindb:\n 'def jsrpc (node, func_name, args) {\\n' +\n ' args_ = args\\n' +\n ' if (func_name == \"invoke\")\\n' +\n ' args_[0] = funcByName(args[0])\\n' +\n ' return rpc(node, unifiedCall, funcByName(func_name), args_)\\n' +\n '}\\n',\n \n python:\n 'def jsrpc (node, func_name, args):\\n' +\n ' args_ = args\\n' +\n ' if func_name == \"invoke\":\\n' +\n ' args_[0] = funcByName(args[0])\\n' +\n ' return rpc(node, unifiedCall, funcByName(func_name), args_)\\n',\n \n kdb:\n 'jsrpc: {[node; func_name; args]\\n' +\n ' args_: args;\\n' +\n ' if[func_name=\"invoke\"; args_[0]:funcByName[args[0]]];\\n' +\n ' rpc[node; unifiedCall; funcByName[func_name]; args_]\\n' +\n '}\\n'\n },\n \n pnode_run: {\n dolphindb:\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 \n python:\n 'def pnode_run (nodes, func_name, args, add_node_alias):\\n' +\n ' nargs = size(args)\\n' +\n ' func = funcByName(func_name)\\n' +\n ' \\n' +\n ' if not nargs:\\n' +\n ' return pnodeRun(func, nodes, add_node_alias)\\n' +\n ' \\n' +\n ' args_partial = [ ]\\n' +\n ' args_partial.append(func)\\n' +\n ' for a in args:\\n' +\n ' args_partial.append(a)\\n' +\n ' \\n' +\n ' return pnodeRun(\\n' +\n ' unifiedCall(partial, args_partial),\\n' +\n ' nodes,\\n' +\n ' add_node_alias\\n' +\n ' )\\n',\n \n kdb:\n 'pnode_run: {[nodes; func_name; args]\\n' +\n ' nargs_: count args;\\n' +\n ' func_: get toCharArray func_name;\\n' +\n ' if [nargs_=0; : pnodeRun[func_; nodes; 1b]];\\n' +\n ' args_partial_: func,args;\\n' +\n ' pnodeRun[unifiedCall[partial; args_partial_]; nodes; 1b]\\n' +\n '}\\n'\n }\n} as const\n\n\n// 缓存,为了优化性能,通常 options.decimals, options.grouping 都是不变的\n\nlet _decimals = null\n\nlet _grouping = true\n\nlet number_formatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 20 })\n\nexport function get_number_formatter (decimals = null, grouping = true) {\n if (decimals === _decimals && grouping === _grouping)\n return number_formatter\n \n _decimals = decimals\n _grouping = grouping\n \n return number_formatter = new Intl.NumberFormat('en-US', {\n ... decimals === null ? {\n maximumFractionDigits: 20\n } : {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n },\n useGrouping: grouping\n })\n}\n"]}
package/index.d.ts CHANGED
@@ -174,7 +174,7 @@ export interface InspectOptions extends UtilInspectOptions {
174
174
  export declare function format(type: DdbType, value: DdbValue, le: boolean, options?: InspectOptions): string;
175
175
  /** 格式化向量、集合中的第 index 项为字符串,空值返回 'null' 字符串 formatted vector, the index-th item in the collection is a string, a null value returns a 'null' string */
176
176
  export declare function formati(obj: DdbVectorObj, index: number, options?: InspectOptions): string;
177
- export declare function convert(type: DdbType, value: DdbValue, le: boolean, { blob, char, timestamp }?: ConvertOptions): string | number | bigint | boolean | string[] | number[] | DdbFunctionDefValue | DdbDurationValue | DdbDecimal32Value | DdbDecimal64Value | DdbDecimal32VectorValue | DdbDecimal64VectorValue | DdbSymbolExtendedValue | DdbExtObjValue | DdbTensorValue | Uint8Array<ArrayBufferLike> | IotVectorItemValue | DdbDurationVectorValue | Int8Array<ArrayBufferLike> | Int16Array<ArrayBufferLike> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | Float64Array<ArrayBufferLike> | BigInt64Array<ArrayBufferLike> | BigInt128Array | Uint8Array<ArrayBufferLike>[] | DdbObj<DdbValue>[] | DdbArrayVectorValue | DdbDecimal128VectorValue | DdbMatrixValue | DdbChartValue;
177
+ export declare function convert(type: DdbType, value: DdbValue, le: boolean, { blob, char, timestamp }?: ConvertOptions): string | number | bigint | boolean | number[] | Uint8Array<ArrayBufferLike> | DdbFunctionDefValue | DdbDurationValue | DdbDecimal32Value | DdbDecimal64Value | string[] | IotVectorItemValue | DdbSymbolExtendedValue | DdbDecimal32VectorValue | DdbDecimal64VectorValue | DdbDurationVectorValue | DdbTensorValue | DdbExtObjValue | Int8Array<ArrayBufferLike> | Int16Array<ArrayBufferLike> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | Float64Array<ArrayBufferLike> | BigInt64Array<ArrayBufferLike> | BigInt128Array | Uint8Array<ArrayBufferLike>[] | DdbObj<DdbValue>[] | DdbArrayVectorValue | DdbDecimal128VectorValue | DdbMatrixValue | DdbChartValue;
178
178
  /** 转换一个向量到 js 原生数组 */
179
179
  export declare function converts(type: DdbType, value: DdbVectorValue, rows: number, le: boolean, options?: ConvertOptions): any[] | Uint8Array;
180
180
  /** 构造 void 类型,默认为 `DdbVoidType.undefined` */
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { concat, assert, inspect, typed_array_to_buffer, connect_websocket, Lock, genid, seq, zip_object, WebSocketOpen, WebSocketClosed, WebSocketClosing, decode, delay, check, empty } from 'xshell';
2
2
  import { t } from "./i18n/index.js";
3
- import { date2str, datehour2str, datetime2str, ddb_tensor_bytes, DdbChartType, DdbDurationUnit, DdbForm, DdbFunctionType, DdbType, DdbVoidType, dictables, function_definition_patterns, generate_array_type, get_big_int_128, get_time_ddbobj, get_duration_unit, get_type_name, int1282str, ipaddr2str, is_decimal_null_value, is_decimal_type, minute2str, month2str, nanotime2str, nanotimestamp2str, nulls, second2str, set_big_int_128, time2str, timestamp2str, uuid2str, get_times_ddbobj, funcdefs } from "./common.js";
3
+ import { date2str, datehour2str, datetime2str, ddb_tensor_bytes, DdbChartType, DdbDurationUnit, DdbForm, DdbFunctionType, DdbType, DdbVoidType, dictables, function_definition_patterns, generate_array_type, get_big_int_128, get_time_ddbobj, get_duration_unit, get_type_name, int1282str, ipaddr2str, is_decimal_null_value, is_decimal_type, minute2str, month2str, nanotime2str, nanotimestamp2str, nulls, second2str, set_big_int_128, time2str, timestamp2str, uuid2str, get_times_ddbobj, funcdefs, get_number_formatter } from "./common.js";
4
4
  export * from "./common.js";
5
5
  /** 可以表示所有 DolphinDB 数据库中的数据类型 Can represent data types in all DolphinDB databases */
6
6
  export class DdbObj {
@@ -1556,29 +1556,10 @@ export class DdbObj {
1556
1556
  return obj;
1557
1557
  }
1558
1558
  }
1559
- /** 整数一定用这个 number formatter, InspectOptions.decimals 不传也用这个 */
1560
- let default_formatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 20 });
1561
- let _decimals = 20;
1562
- let _grouping = true;
1563
- /** 缓存,为了优化性能,通常 options.decimals 都是不变的 */
1564
- let _formatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 20 });
1565
1559
  /** 根据 DdbType 格式化单个元素 (value) 为字符串,空值返回 'null' 字符串 */
1566
1560
  export function format(type, value, le, options = {}) {
1567
- const { grouping = true, timestamp = 'ms' } = options;
1568
- const formatter = (() => {
1569
- const decimals = options.decimals ?? _decimals;
1570
- if (decimals !== _decimals || grouping !== _grouping) {
1571
- _decimals = decimals;
1572
- _grouping = grouping;
1573
- default_formatter = new Intl.NumberFormat('en-US', { maximumFractionDigits: 20, useGrouping: grouping });
1574
- _formatter = new Intl.NumberFormat('en-US', {
1575
- maximumFractionDigits: decimals,
1576
- minimumFractionDigits: decimals,
1577
- useGrouping: grouping
1578
- });
1579
- }
1580
- return options.decimals === undefined || options.decimals === null ? default_formatter : _formatter;
1581
- })();
1561
+ const { timestamp = 'ms' } = options;
1562
+ const number_formatter = get_number_formatter(options.decimals, options.grouping);
1582
1563
  function format_time(formatter, _null) {
1583
1564
  if (value === null || value === _null)
1584
1565
  return inspect(null, options);
@@ -1620,25 +1601,25 @@ export function format(type, value, le, options = {}) {
1620
1601
  inspect(null, options)
1621
1602
  :
1622
1603
  options.colors ?
1623
- default_formatter.format(value).green
1604
+ number_formatter.format(value).green
1624
1605
  :
1625
- default_formatter.format(value);
1606
+ number_formatter.format(value);
1626
1607
  case DdbType.int:
1627
1608
  return value === null || value === nulls.int32 ?
1628
1609
  inspect(null, options)
1629
1610
  :
1630
1611
  options.colors ?
1631
- default_formatter.format(value).green
1612
+ number_formatter.format(value).green
1632
1613
  :
1633
- default_formatter.format(value);
1614
+ number_formatter.format(value);
1634
1615
  case DdbType.long:
1635
1616
  return value === null || value === nulls.int64 ?
1636
1617
  inspect(null, options)
1637
1618
  :
1638
1619
  options.colors ?
1639
- default_formatter.format(value).green
1620
+ number_formatter.format(value).green
1640
1621
  :
1641
- default_formatter.format(value);
1622
+ number_formatter.format(value);
1642
1623
  case DdbType.date:
1643
1624
  return format_time(date2str, nulls.int32);
1644
1625
  case DdbType.month:
@@ -1662,17 +1643,17 @@ export function format(type, value, le, options = {}) {
1662
1643
  inspect(null, options)
1663
1644
  :
1664
1645
  options.colors ?
1665
- formatter.format(value).green
1646
+ number_formatter.format(value).green
1666
1647
  :
1667
- formatter.format(value);
1648
+ number_formatter.format(value);
1668
1649
  case DdbType.double:
1669
1650
  return value === null || value === nulls.double ?
1670
1651
  inspect(null, options)
1671
1652
  :
1672
1653
  options.colors ?
1673
- formatter.format(value).green
1654
+ number_formatter.format(value).green
1674
1655
  :
1675
- formatter.format(value);
1656
+ number_formatter.format(value);
1676
1657
  case DdbType.symbol:
1677
1658
  case DdbType.string:
1678
1659
  case DdbType.handle:
@@ -1734,7 +1715,7 @@ export function format(type, value, le, options = {}) {
1734
1715
  }
1735
1716
  /** 格式化向量、集合中的第 index 项为字符串,空值返回 'null' 字符串 formatted vector, the index-th item in the collection is a string, a null value returns a 'null' string */
1736
1717
  export function formati(obj, index, options = {}) {
1737
- assert(index < obj.rows, 'index < obj.rows');
1718
+ check(index < obj.rows, 'index 应该 < obj.rows');
1738
1719
  if (obj.type < 64 || obj.type >= 128) // 普通数组
1739
1720
  switch (obj.type) {
1740
1721
  case DdbType.symbol_extended: {
@@ -1768,6 +1749,8 @@ export function formati(obj, index, options = {}) {
1768
1749
  const str = (x < 0 ? '-' : '') + (scale ? `${s.slice(0, -scale) || '0'}.${s.slice(-scale)}` : s);
1769
1750
  return options.colors ? str.green : str;
1770
1751
  }
1752
+ case DdbType.any:
1753
+ return inspect(obj.value[index], options);
1771
1754
  default:
1772
1755
  return format(obj.type, obj.value[index], obj.le, options);
1773
1756
  }
@@ -2091,7 +2074,7 @@ export class DdbDate extends DdbObj {
2091
2074
  }
2092
2075
  export class DdbBlob extends DdbObj {
2093
2076
  constructor(value) {
2094
- assert(value, t('new DdbBlob 不能传空的 value'));
2077
+ check(value, t('new DdbBlob 不能传空的 value'));
2095
2078
  super({
2096
2079
  form: DdbForm.scalar,
2097
2080
  type: DdbType.blob,
@@ -2721,7 +2704,7 @@ export class DDB {
2721
2704
  console.log(func, args.map(arg => arg.data()), rpc_id);
2722
2705
  else
2723
2706
  console.log(`${func}()`, rpc_id);
2724
- assert(!func.includes('\0'), t('发送至 DolphinDB 执行的脚本中间不能含有 \\0'));
2707
+ check(!func.includes('\0'), t('发送至 DolphinDB 执行的脚本中间不能含有 \\0'));
2725
2708
  return 'function\n' +
2726
2709
  `${func}\n` +
2727
2710
  `${args.length}\n` +
@@ -2729,7 +2712,7 @@ export class DDB {
2729
2712
  case 'script':
2730
2713
  if (this.verbose)
2731
2714
  console.log(script, rpc_id);
2732
- assert(!script.includes('\0'), t('发送至 DolphinDB 执行的脚本中间不能含有 \\0'));
2715
+ check(!script.includes('\0'), t('发送至 DolphinDB 执行的脚本中间不能含有 \\0'));
2733
2716
  return 'script\n' +
2734
2717
  script;
2735
2718
  case 'variable':
@@ -2965,7 +2948,7 @@ export class DDB {
2965
2948
  vars,
2966
2949
  /** 上传的变量值 Uploaded variables' value */
2967
2950
  args, { listener, parse_object, } = {}) {
2968
- assert(args.length && args.length === vars.length, t('variable 指令参数不能为空且参数名不能为空,且数量应该匹配'));
2951
+ check(args.length && args.length === vars.length, t('variable 指令参数不能为空且参数名不能为空,且数量应该匹配'));
2969
2952
  return this.rpc('variable', { vars, args, listener, parse_object });
2970
2953
  }
2971
2954
  /** 取消当前 session id 对应的所有 console jobs Cancel all console jobs corresponding to the current session id */