dolphindb 3.1.35 → 3.1.37
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/browser.js +1 -1
- package/browser.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/language.d.ts +1 -1
- package/language.js +9 -0
- package/language.js.map +1 -1
- package/package.json +4 -4
- package/test.js.map +1 -1
package/language.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const keywords: string[];
|
|
2
|
-
export declare const constants: readonly ["DFLT", "NULL", "true", "false", "pi", "e", "SCALAR", "VECTOR", "PAIR", "MATRIX", "SET", "DICT", "TABLE", "VOID", "BOOL", "CHAR", "SHORT", "INT", "INDEX", "LONG", "DATE", "MONTH", "TIME", "MINUTE", "SECOND", "DATETIME", "TIMESTAMP", "NANOTIME", "NANOTIMESTAMP", "FLOAT", "DOUBLE", "SYMBOL", "STRING", "UUID", "FUNCTIONDEF", "HANDLE", "CODE", "DATASOURCE", "RESOURCE", "ANY", "DICTIONARY", "DATEHOUR", "IPADDR", "INT128", "BLOB", "COMPLEX", "POINT", "DURATION", "OBJECT", "DECIMAL32", "DECIMAL64", "DECIMAL128", "IOTANY", "SEQ", "RANGE", "HASH", "VALUE", "LIST", "COMPO", "VAR", "SHARED", "DEF", "GLOBAL", "TABLE_READ", "TABLE_WRITE", "TABLE_INSERT", "TABLE_UPDATE", "TABLE_DELETE", "TABLE_SENSITIVE_VIEW", "DBOBJ_CREATE", "DBOBJ_DELETE", "COMPUTE_GROUP_EXEC", "DB_DELETE", "DB_INSERT", "DB_MANAGE", "DB_OWNER", "DB_READ", "DB_UPDATE", "DB_WRITE", "DB_SENSITIVE_VIEW", "CATALOG_MANAGE", "CATALOG_READ", "CATALOG_WRITE", "CATALOG_INSERT", "CATALOG_UPDATE", "CATALOG_DELETE", "SCHEMA_MANAGE", "SCHEMAOBJ_CREATE", "SCHEMAOBJ_DELETE", "SCHEMA_READ", "SCHEMA_WRITE", "SCHEMA_INSERT", "SCHEMA_UPDATE", "SCHEMA_DELETE", "SCRIPT_EXEC", "TASK_GROUP_MEM_LIMIT", "TEST_EXEC", "VIEW_EXEC", "VIEW_OWNER", "QUERY_RESULT_MEM_LIMIT", "HINT_HASH", "HINT_SNAPSHOT", "HINT_KEEPORDER", "HINT_SEQ", "HINT_EXPLAIN", "HINT_VECTORIZED", "HEAD", "CURRENT", "TAIL", "LINE", "PIE", "COLUMN", "BAR", "AREA", "SCATTER", "HISTOGRAM", "KLINE", "SURFACE", "DEBUG", "INFO", "WARNING", "ERROR", "FIRST", "LAST", "ALL", "NONE", "HASH_PTN", "True", "False", "None"];
|
|
2
|
+
export declare const constants: readonly ["DFLT", "NULL", "true", "false", "pi", "e", "SCALAR", "VECTOR", "PAIR", "MATRIX", "SET", "DICT", "TABLE", "VOID", "BOOL", "CHAR", "SHORT", "INT", "INDEX", "LONG", "DATE", "MONTH", "TIME", "MINUTE", "SECOND", "DATETIME", "TIMESTAMP", "NANOTIME", "NANOTIMESTAMP", "FLOAT", "DOUBLE", "SYMBOL", "STRING", "UUID", "FUNCTIONDEF", "HANDLE", "CODE", "DATASOURCE", "RESOURCE", "ANY", "DICTIONARY", "DATEHOUR", "IPADDR", "INT128", "BLOB", "COMPLEX", "POINT", "DURATION", "OBJECT", "DECIMAL32", "DECIMAL64", "DECIMAL128", "IOTANY", "SEQ", "RANGE", "HASH", "VALUE", "LIST", "COMPO", "VAR", "SHARED", "DEF", "GLOBAL", "TABLE_READ", "TABLE_WRITE", "TABLE_INSERT", "TABLE_UPDATE", "TABLE_DELETE", "TABLE_SENSITIVE_VIEW", "DBOBJ_CREATE", "DBOBJ_DELETE", "COMPUTE_GROUP_EXEC", "DB_DELETE", "DB_INSERT", "DB_MANAGE", "DB_OWNER", "DB_READ", "DB_UPDATE", "DB_WRITE", "DB_SENSITIVE_VIEW", "CATALOG_MANAGE", "CATALOG_READ", "CATALOG_WRITE", "CATALOG_INSERT", "CATALOG_UPDATE", "CATALOG_DELETE", "SCHEMA_MANAGE", "SCHEMAOBJ_CREATE", "SCHEMAOBJ_DELETE", "SCHEMA_READ", "SCHEMA_WRITE", "SCHEMA_INSERT", "SCHEMA_UPDATE", "SCHEMA_DELETE", "SCRIPT_EXEC", "TASK_GROUP_MEM_LIMIT", "TEST_EXEC", "VIEW_EXEC", "VIEW_OWNER", "QUERY_RESULT_MEM_LIMIT", "ORCA_GRAPH_CREATE", "ORCA_GRAPH_DROP", "ORCA_GRAPH_CONTROL", "ORCA_TABLE_CREATE", "ORCA_TABLE_DROP", "ORCA_TABLE_READ", "ORCA_TABLE_WRITE", "ORCA_ENGINE_MANAGE", "ORCA_MANAGE", "HINT_HASH", "HINT_SNAPSHOT", "HINT_KEEPORDER", "HINT_SEQ", "HINT_EXPLAIN", "HINT_VECTORIZED", "HEAD", "CURRENT", "TAIL", "LINE", "PIE", "COLUMN", "BAR", "AREA", "SCATTER", "HISTOGRAM", "KLINE", "SURFACE", "DEBUG", "INFO", "WARNING", "ERROR", "FIRST", "LAST", "ALL", "NONE", "HASH_PTN", "True", "False", "None"];
|
|
3
3
|
export declare const tm_language: Block;
|
|
4
4
|
export declare const tm_language_python: Block;
|
|
5
5
|
interface Block {
|
package/language.js
CHANGED
|
@@ -229,6 +229,15 @@ export const constants = [
|
|
|
229
229
|
'VIEW_EXEC',
|
|
230
230
|
'VIEW_OWNER',
|
|
231
231
|
'QUERY_RESULT_MEM_LIMIT',
|
|
232
|
+
'ORCA_GRAPH_CREATE',
|
|
233
|
+
'ORCA_GRAPH_DROP',
|
|
234
|
+
'ORCA_GRAPH_CONTROL',
|
|
235
|
+
'ORCA_TABLE_CREATE',
|
|
236
|
+
'ORCA_TABLE_DROP',
|
|
237
|
+
'ORCA_TABLE_READ',
|
|
238
|
+
'ORCA_TABLE_WRITE',
|
|
239
|
+
'ORCA_ENGINE_MANAGE',
|
|
240
|
+
'ORCA_MANAGE',
|
|
232
241
|
// hint
|
|
233
242
|
// https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/s/sql.html
|
|
234
243
|
'HINT_HASH',
|
package/language.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.js","sourceRoot":"","sources":["language.ts"],"names":[],"mappings":"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","sourcesContent":["const sql_keywords = [\n // 不要单独算关键字比较好\n // 'column',\n // 'table',\n // 'database',\n \n 'select',\n 'exec',\n 'update',\n \n 'insert',\n 'insert into',\n \n 'create table',\n 'create database',\n \n 'alter table',\n \n // alter table ... add column_name datatype\n 'add',\n 'rename',\n 'to',\n 'drop',\n \n \n 'drop table',\n 'drop database',\n \n 'use catalog',\n \n 'delete',\n \n 'transaction',\n \n 'join',\n 'inner join',\n 'outer join',\n 'full join',\n 'full outer join',\n 'left join',\n 'left outer join',\n 'left semi join',\n 'right join',\n 'right outer join',\n 'left semijoin',\n 'cross join',\n \n 'context by',\n 'partitioned by',\n 'group by',\n 'pivot by',\n 'order by',\n 'cgroup by',\n 'partition by',\n \n 'csort',\n 'limit',\n 'top',\n \n 'into',\n 'from',\n 'where',\n 'having',\n 'with',\n 'set',\n 'as',\n 'in',\n 'or',\n 'not',\n 'on',\n 'like',\n 'values',\n 'if',\n 'exists',\n 'distinct',\n 'map',\n \n \n 'between', 'and', // between ... and ...\n \n 'is null', 'is not null',\n \n // case when ... then ... end\n 'case', 'when', 'then', 'else', 'end',\n \n 'union', 'union all',\n \n 'nulls first', 'nulls last',\n \n 'asc', 'desc',\n]\n\n\nexport const keywords = [\n 'assert',\n \n 'const',\n 'mutable',\n \n 'def',\n 'defg',\n \n // 'map',\n 'mapr',\n \n 'timer',\n \n // 流程控制\n // 'if',\n // 'else',\n 'do',\n 'for',\n 'while',\n 'return',\n 'continue',\n 'break',\n 'try',\n 'catch',\n 'throw',\n 'go',\n \n // 模块\n 'use',\n 'module',\n \n \n // 仅 Python 有的\n 'async',\n 'await',\n 'class',\n 'del',\n 'elif',\n 'except',\n 'finally',\n 'global',\n 'import',\n 'is',\n 'lambda',\n 'nonlocal',\n 'pass',\n 'raise',\n 'yield',\n \n \n // --- SQL\n ... sql_keywords,\n ... sql_keywords.map(keyword => keyword.toUpperCase())\n].sort((l, r) => { // 长的在前面,正则表达式先匹配全部,而不是部分单词,防止高亮显示不正确\n const delta_len = l.length - r.length\n if (delta_len !== 0)\n return -delta_len\n \n return 0 // 否则保留原本顺序\n})\n\n\nexport const constants = [\n 'DFLT',\n 'NULL',\n 'true',\n 'false',\n 'pi',\n 'e',\n \n // --- form\n 'SCALAR',\n 'VECTOR',\n 'PAIR',\n 'MATRIX',\n 'SET',\n 'DICT',\n 'TABLE',\n // 'CHART',\n // 'CHUNK',\n \n // --- type\n 'VOID',\n 'BOOL',\n 'CHAR',\n 'SHORT',\n 'INT', 'INDEX',\n 'LONG',\n 'DATE',\n 'MONTH',\n 'TIME',\n 'MINUTE',\n 'SECOND',\n 'DATETIME',\n 'TIMESTAMP',\n 'NANOTIME',\n 'NANOTIMESTAMP',\n 'FLOAT',\n 'DOUBLE',\n 'SYMBOL',\n 'STRING',\n 'UUID',\n 'FUNCTIONDEF',\n 'HANDLE',\n 'CODE',\n 'DATASOURCE',\n 'RESOURCE',\n 'ANY',\n // 'COMPRESS',\n 'DICTIONARY',\n 'DATEHOUR',\n 'IPADDR',\n 'INT128',\n 'BLOB',\n 'COMPLEX',\n 'POINT',\n 'DURATION',\n 'OBJECT',\n 'DECIMAL32',\n 'DECIMAL64',\n 'DECIMAL128',\n 'IOTANY',\n \n // partition type\n 'SEQ',\n 'RANGE',\n 'HASH',\n 'VALUE',\n 'LIST',\n 'COMPO',\n \n \n // defined\n // https://www.dolphindb.cn/cn/help/FunctionsandCommands/FunctionReferences/d/defined.html\n 'VAR',\n 'SHARED',\n 'DEF',\n 'GLOBAL',\n \n \n // 用户权限管理\n // https://www.dolphindb.cn/cn/help/200/SystemManagement/UserAccessControl.html\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/CommandsReferences/d/deny.html\n 'TABLE_READ',\n 'TABLE_WRITE',\n 'TABLE_INSERT',\n 'TABLE_UPDATE',\n 'TABLE_DELETE',\n 'TABLE_SENSITIVE_VIEW',\n \n 'DBOBJ_CREATE',\n 'DBOBJ_DELETE',\n \n 'COMPUTE_GROUP_EXEC',\n \n 'DB_DELETE',\n 'DB_INSERT',\n 'DB_MANAGE',\n 'DB_OWNER',\n 'DB_READ',\n 'DB_UPDATE',\n 'DB_WRITE',\n 'DB_SENSITIVE_VIEW',\n \n 'CATALOG_MANAGE',\n 'CATALOG_READ',\n 'CATALOG_WRITE',\n 'CATALOG_INSERT',\n 'CATALOG_UPDATE',\n 'CATALOG_DELETE',\n \n 'SCHEMA_MANAGE',\n 'SCHEMAOBJ_CREATE',\n 'SCHEMAOBJ_DELETE',\n 'SCHEMA_READ',\n 'SCHEMA_WRITE',\n 'SCHEMA_INSERT',\n 'SCHEMA_UPDATE',\n 'SCHEMA_DELETE',\n \n 'SCRIPT_EXEC',\n 'TASK_GROUP_MEM_LIMIT',\n 'TEST_EXEC',\n 'VIEW_EXEC',\n 'VIEW_OWNER',\n 'QUERY_RESULT_MEM_LIMIT',\n \n \n // hint\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/s/sql.html\n 'HINT_HASH',\n 'HINT_SNAPSHOT',\n 'HINT_KEEPORDER',\n 'HINT_SEQ',\n 'HINT_EXPLAIN',\n 'HINT_VECTORIZED',\n \n \n // --- seek mode\n 'HEAD',\n 'CURRENT',\n 'TAIL',\n \n // --- chart type\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/p/plot.html\n 'LINE',\n 'PIE',\n 'COLUMN',\n 'BAR',\n 'AREA',\n 'SCATTER',\n 'HISTOGRAM',\n 'KLINE',\n 'SURFACE',\n \n \n // --- log level\n 'DEBUG',\n 'INFO',\n 'WARNING',\n 'ERROR',\n \n // keep duplicates\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/c/createPartitionedTable.html?highlight=first\n 'FIRST',\n 'LAST',\n 'ALL',\n \n // keep\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/i/isDuplicated.html?highlight=none\n 'NONE',\n \n 'HASH_PTN',\n \n // 仅 Python 有的\n 'True',\n 'False',\n 'None',\n \n] as const\n\n\nfunction get_tm_language (python = false) {\n return {\n $schema: 'https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json',\n \n name: python ? 'DolphinDB Python' : 'DolphinDB',\n \n scopeName: python ? 'source.dolphindb-python' : 'source.dolphindb',\n \n patterns: [\n {\n match: '\\\\.\\\\.\\\\.',\n name: 'invalid.ellipsis.dolphindb'\n },\n {\n include: '#keyword'\n },\n {\n include: '#literal'\n },\n {\n include: '#comment'\n },\n {\n include: '#decorator'\n },\n {\n include: '#variable'\n },\n {\n include: '#operator'\n },\n {\n include: '#method_call'\n },\n {\n include: '#function_call'\n },\n {\n include: '#property'\n },\n {\n match: ';',\n name: 'punctuation.terminator.statement.dolphindb'\n },\n {\n match: ',',\n name: 'punctuation.separator.commma.dolphindb'\n }\n ],\n \n \n repository: {\n keyword: {\n // \\b: word boundary\n // (?<![.$]): boundary 不是 . 或 $\n // ?!\\s*: 不是 label\n match: `\\\\b(?<![.$])(${keywords.join('|')})(?!(\\\\s*:|\\\\())\\\\b`,\n name: 'keyword.control.dolphindb'\n },\n \n literal: {\n patterns: [\n { include: '#constant' },\n { include: '#datetime' },\n { include: '#string' },\n { include: '#number' },\n ]\n },\n \n constant: {\n match: `\\\\b(?<![.$])(${constants.join('|')})(?!\\\\s*:)\\\\b`,\n name: 'constant.language.int.dolphindb'\n },\n \n decorator: {\n match: '^@(testing|state|transform|jit)',\n name: 'meta.decorator.dolphindb',\n },\n \n datetime: {\n patterns: [\n {\n match: '\\\\b[0-9]{4}[.][0-9]{2}[.][0-9]{2}[T ][0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{3,9})?\\\\b',\n name: 'constant.numeric.datetime.datetime.dolphindb',\n },\n {\n match: '\\\\b[0-9]{4}\\\\.[0-9]{2}M\\\\b',\n name: 'constant.numeric.datetime.month.dolphindb',\n },\n {\n match: '\\\\b[0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2}\\\\b',\n name: 'constant.numeric.datetime.date.dolphindb',\n },\n {\n match: '\\\\b[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{3,9})?\\\\b',\n name: 'constant.numeric.datetime.time.dolphindb',\n },\n {\n match: '\\\\b[0-9]{2}:[0-9]{2}m\\\\b',\n name: 'constant.numeric.datetime.minute.dolphindb',\n },\n ]\n },\n \n string: {\n patterns: [\n {\n include: '#string_single_quoted'\n },\n {\n include: '#string_double_quoted'\n },\n {\n begin: \"'''\",\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: \"'''\",\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.single.heredoc.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\).',\n name: 'constant.character.escape.backslash.dolphindb'\n }\n ]\n },\n {\n begin: '\"\"\"',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: '\"\"\"',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.double.heredoc.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\).',\n name: 'constant.character.escape.backslash.dolphindb'\n },\n {\n include: '#interpolated_dolphindb'\n }\n ]\n },\n {\n match: '`[\\\\w\\\\.]*',\n name: 'string.quoted.other.dolphindb'\n }\n ]\n },\n \n number: {\n patterns: [\n {\n match: '\\\\b[01]+[bB]\\\\b',\n name: 'constant.numeric.binary.dolphindb'\n },\n {\n // 97c\n match: '\\\\b[0-9]+([clhsmyM]|ms)\\\\b',\n name: 'constant.numeric.dolphindb'\n },\n {\n // 1.2f, 1f\n match: '\\\\b[0-9]+(\\\\.[0-9]+)?f\\\\b',\n name: 'constant.numeric.dolphindb'\n },\n {\n match: \n '(?x)\\n' +\n '(?:\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[eE][+-]?[0-9]+\\\\b)| # 1.E+3\\n' +\n ' (?:\\\\b(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # .1E+3\\n' +\n ' (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1E+3\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)| # 1.1\\n' +\n ' (?:\\\\b[0-9]+(?=\\\\.{2,3}))| # 1 followed by a slice\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)\\\\b)| # 1.\\n' +\n ' (?:\\\\b(\\\\.)[0-9]+\\\\b)| # .1\\n' +\n ' (?:\\\\b[0-9]+\\\\b(?!\\\\.)) # 1\\n' +\n ')\\n',\n \n captures: {\n 0: {\n name: 'constant.numeric.decimal.dolphindb'\n },\n 1: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 2: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 3: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 4: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 5: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 6: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n }\n }\n },\n ]\n },\n \n string_single_quoted: {\n patterns: [\n {\n begin: \"'\",\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: \"'\",\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.single.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)',\n name: 'constant.character.escape.backslash.dolphindb'\n }\n ]\n }\n ]\n },\n \n string_double_quoted: {\n patterns: [\n {\n begin: '\"',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: '\"',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.double.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)',\n name: 'constant.character.escape.backslash.dolphindb'\n },\n {\n include: '#interpolated_dolphindb'\n }\n ]\n }\n ]\n },\n \n function_call: {\n patterns: [\n {\n begin: '(@)?(\\\\w+!?)(?=\\\\s*\\\\()',\n beginCaptures: {\n 1: { name: 'variable.other.readwrite.instance.dolphindb' },\n 2: { patterns: [{ include: '#function_name' }] }\n },\n end: '(?<=\\\\))',\n name: 'meta.function-call.dolphindb',\n patterns: [{ include: '#arguments' }]\n }\n ]\n },\n \n \n method_call: {\n patterns: [\n {\n begin: '(?:(\\\\.)|(::))\\\\s*(\\\\w*!?)(?=\\\\()',\n beginCaptures: {\n 1: { name: 'punctuation.separator.method.period.dolphindb' },\n 2: { name: 'keyword.operator.prototype.dolphindb' },\n 3: { patterns: [{ include: '#function_name' }] }\n },\n end: '(?<=\\\\))',\n name: 'meta.method-call.dolphindb',\n patterns: [{ include: '#arguments' }]\n }\n ]\n },\n \n \n function_name: {\n patterns: [\n {\n match: '[^\\\\d\\\\W]\\\\w*!?',\n name: 'entity.name.function.dolphindb'\n },\n {\n match: '\\\\d[\\\\w]*',\n name: 'invalid.illegal.identifier.dolphindb'\n }\n ]\n },\n \n function_params: {\n patterns: [\n {\n begin: '\\\\(',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.parameters.begin.bracket.round.dolphindb'\n }\n },\n end: '\\\\)',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.parameters.end.bracket.round.dolphindb'\n }\n },\n name: 'meta.parameters.dolphindb',\n patterns: [\n {\n include: '#variable'\n },\n {\n match: '(@(?:[a-zA-Z_$][\\\\w$]*)?)(\\\\.\\\\.\\\\.)?',\n captures: {\n 1: {\n name: 'variable.parameter.function.readwrite.instance.dolphindb'\n },\n 2: {\n name: 'keyword.operator.splat.dolphindb'\n }\n }\n },\n {\n include: '$self'\n }\n ]\n }\n ]\n },\n \n comment: {\n patterns: python ? [\n {\n begin: '#',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '$',\n name: 'comment.line.number-sign.dolphindb'\n }\n ] : [\n {\n begin: '/\\\\*',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '\\\\*/',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n name: 'comment.block.dolphindb'\n },\n {\n begin: '//',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '$',\n name: 'comment.line.number-sign.dolphindb'\n },\n ]\n },\n \n arguments: {\n patterns: [\n {\n begin: '\\\\(',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.arguments.begin.bracket.round.dolphindb'\n }\n },\n end: '\\\\)',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.arguments.end.bracket.round.dolphindb'\n }\n },\n name: 'meta.arguments.dolphindb',\n patterns: [\n {\n include: '$self'\n },\n {\n include: '#literal'\n },\n {\n include: '#variable'\n }\n ]\n }\n ]\n },\n \n variable: {\n patterns: [\n {\n match: '(@)([a-zA-Z_\\\\$]\\\\w*)?',\n name: 'variable.other.readwrite.instance.dolphindb'\n }\n ]\n },\n \n interpolated_dolphindb: {\n patterns: [\n {\n begin: '\\\\#\\\\{',\n captures: {\n 0: {\n name: 'punctuation.section.embedded.dolphindb'\n }\n },\n end: '\\\\}',\n name: 'source.dolphindb.embedded.source',\n patterns: [\n {\n include: '$self'\n }\n ]\n }\n ]\n },\n \n \n operator: {\n patterns: [\n {\n match: '<<|>>',\n name: 'keyword.operator.bitwise.shift.dolphindb'\n },\n {\n match: '!=|<=|>=|==|>|<',\n name: 'keyword.operator.comparison.dolphindb'\n },\n {\n match: '<-|->',\n name: 'keyword.operator.join.dolphindb'\n },\n {\n match: '&&|!|\\\\|\\\\|',\n name: 'keyword.operator.logical.dolphindb'\n },\n {\n match: '&|\\\\||\\\\^',\n name: 'keyword.operator.bitwise.dolphindb'\n },\n {\n match: '\\\\.\\\\.',\n name: 'keyword.operator.splat.dolphindb'\n },\n {\n match: '\\\\?',\n name: 'keyword.operator.existential.dolphindb'\n },\n {\n match: '/|<-|%|\\\\*|/|-|\\\\$|\\\\+',\n name: 'keyword.operator.dolphindb'\n },\n {\n match: '([a-zA-Z$_][\\\\w$]*)?\\\\s*(=|:(?!:))(?![>=])',\n captures: {\n 1: {\n name: 'variable.assignment.dolphindb'\n },\n 2: {\n name: 'keyword.operator.assignment.dolphindb'\n }\n }\n }\n ]\n },\n \n property: {\n patterns: [\n {\n match: '(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'constant.other.object.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'variable.other.object.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'constant.other.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'variable.other.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*([0-9][\\\\w$]*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'invalid.illegal.identifier.dolphindb'\n }\n }\n }\n ]\n }\n }\n } as Block\n}\n\n\nexport const tm_language = get_tm_language(false)\n\nexport const tm_language_python = get_tm_language(true)\n\n\ninterface Block {\n patterns: Pattern[]\n repository?: Record<string, Pattern | Block>\n}\n\ntype Pattern = Match | Include | Block\n\ntype Match = MatchOne | MatchBeginEnd\n\ninterface MatchOne {\n /** a single-line regular expression */\n match: RegExp | string\n \n /** This is the scope that will be applied to the matched text */\n name?: string\n \n /** This use of the captures > patterns structure is extremely important. \n Without it, a stretch of text matched by a match rule is considered finished, and \n TextMate’s search proceeds to the rest of the line after the matched text. \n With it, the stretch of matched text itself becomes a candidate for further matches. \n */\n captures?: Captures\n}\n\ninterface MatchBeginEnd {\n begin: RegExp | string\n \n end: RegExp | string\n \n /** This is the scope (or an expression evaluating to a scope) to be applied to \n the entire matched stretch(es) of text starting at the start of the begin match.\n */\n name?: string\n \n /** This is the scope to be applied to what’s between the begin match and the end match (or the end of the document). */\n contentName?: string\n \n /** it applies to the region between the begin and end matches. */\n patterns?: Pattern[]\n \n beginCaptures?: Captures\n \n endCaptures?: Captures\n \n whileCaptures?: Captures\n \n /** If the name or number of the matched group happens to be the same for both the begin pattern and the other pattern, \n you can (if appropriate) use captures as a shorthand to avoid saying the same thing twice.\n */\n captures?: Captures\n \n applyEndPatternLast?: 1\n}\n\ninterface Include {\n include: string\n}\n\ntype Captures = Record<string | number, {\n /** This is the scope that will be assigned to the matched group text. */\n name?: string\n \n /** This is a list of match rules to be sought within the matched group text \n — thus permitting the search for matches to continue inside the matched text.\n */\n patterns?: Pattern[]\n}>\n\n"]}
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["language.ts"],"names":[],"mappings":"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","sourcesContent":["const sql_keywords = [\n // 不要单独算关键字比较好\n // 'column',\n // 'table',\n // 'database',\n \n 'select',\n 'exec',\n 'update',\n \n 'insert',\n 'insert into',\n \n 'create table',\n 'create database',\n \n 'alter table',\n \n // alter table ... add column_name datatype\n 'add',\n 'rename',\n 'to',\n 'drop',\n \n \n 'drop table',\n 'drop database',\n \n 'use catalog',\n \n 'delete',\n \n 'transaction',\n \n 'join',\n 'inner join',\n 'outer join',\n 'full join',\n 'full outer join',\n 'left join',\n 'left outer join',\n 'left semi join',\n 'right join',\n 'right outer join',\n 'left semijoin',\n 'cross join',\n \n 'context by',\n 'partitioned by',\n 'group by',\n 'pivot by',\n 'order by',\n 'cgroup by',\n 'partition by',\n \n 'csort',\n 'limit',\n 'top',\n \n 'into',\n 'from',\n 'where',\n 'having',\n 'with',\n 'set',\n 'as',\n 'in',\n 'or',\n 'not',\n 'on',\n 'like',\n 'values',\n 'if',\n 'exists',\n 'distinct',\n 'map',\n \n \n 'between', 'and', // between ... and ...\n \n 'is null', 'is not null',\n \n // case when ... then ... end\n 'case', 'when', 'then', 'else', 'end',\n \n 'union', 'union all',\n \n 'nulls first', 'nulls last',\n \n 'asc', 'desc',\n]\n\n\nexport const keywords = [\n 'assert',\n \n 'const',\n 'mutable',\n \n 'def',\n 'defg',\n \n // 'map',\n 'mapr',\n \n 'timer',\n \n // 流程控制\n // 'if',\n // 'else',\n 'do',\n 'for',\n 'while',\n 'return',\n 'continue',\n 'break',\n 'try',\n 'catch',\n 'throw',\n 'go',\n \n // 模块\n 'use',\n 'module',\n \n \n // 仅 Python 有的\n 'async',\n 'await',\n 'class',\n 'del',\n 'elif',\n 'except',\n 'finally',\n 'global',\n 'import',\n 'is',\n 'lambda',\n 'nonlocal',\n 'pass',\n 'raise',\n 'yield',\n \n \n // --- SQL\n ... sql_keywords,\n ... sql_keywords.map(keyword => keyword.toUpperCase())\n].sort((l, r) => { // 长的在前面,正则表达式先匹配全部,而不是部分单词,防止高亮显示不正确\n const delta_len = l.length - r.length\n if (delta_len !== 0)\n return -delta_len\n \n return 0 // 否则保留原本顺序\n})\n\n\nexport const constants = [\n 'DFLT',\n 'NULL',\n 'true',\n 'false',\n 'pi',\n 'e',\n \n // --- form\n 'SCALAR',\n 'VECTOR',\n 'PAIR',\n 'MATRIX',\n 'SET',\n 'DICT',\n 'TABLE',\n // 'CHART',\n // 'CHUNK',\n \n // --- type\n 'VOID',\n 'BOOL',\n 'CHAR',\n 'SHORT',\n 'INT', 'INDEX',\n 'LONG',\n 'DATE',\n 'MONTH',\n 'TIME',\n 'MINUTE',\n 'SECOND',\n 'DATETIME',\n 'TIMESTAMP',\n 'NANOTIME',\n 'NANOTIMESTAMP',\n 'FLOAT',\n 'DOUBLE',\n 'SYMBOL',\n 'STRING',\n 'UUID',\n 'FUNCTIONDEF',\n 'HANDLE',\n 'CODE',\n 'DATASOURCE',\n 'RESOURCE',\n 'ANY',\n // 'COMPRESS',\n 'DICTIONARY',\n 'DATEHOUR',\n 'IPADDR',\n 'INT128',\n 'BLOB',\n 'COMPLEX',\n 'POINT',\n 'DURATION',\n 'OBJECT',\n 'DECIMAL32',\n 'DECIMAL64',\n 'DECIMAL128',\n 'IOTANY',\n \n // partition type\n 'SEQ',\n 'RANGE',\n 'HASH',\n 'VALUE',\n 'LIST',\n 'COMPO',\n \n \n // defined\n // https://www.dolphindb.cn/cn/help/FunctionsandCommands/FunctionReferences/d/defined.html\n 'VAR',\n 'SHARED',\n 'DEF',\n 'GLOBAL',\n \n \n // 用户权限管理\n // https://www.dolphindb.cn/cn/help/200/SystemManagement/UserAccessControl.html\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/CommandsReferences/d/deny.html\n 'TABLE_READ',\n 'TABLE_WRITE',\n 'TABLE_INSERT',\n 'TABLE_UPDATE',\n 'TABLE_DELETE',\n 'TABLE_SENSITIVE_VIEW',\n \n 'DBOBJ_CREATE',\n 'DBOBJ_DELETE',\n \n 'COMPUTE_GROUP_EXEC',\n \n 'DB_DELETE',\n 'DB_INSERT',\n 'DB_MANAGE',\n 'DB_OWNER',\n 'DB_READ',\n 'DB_UPDATE',\n 'DB_WRITE',\n 'DB_SENSITIVE_VIEW',\n \n 'CATALOG_MANAGE',\n 'CATALOG_READ',\n 'CATALOG_WRITE',\n 'CATALOG_INSERT',\n 'CATALOG_UPDATE',\n 'CATALOG_DELETE',\n \n 'SCHEMA_MANAGE',\n 'SCHEMAOBJ_CREATE',\n 'SCHEMAOBJ_DELETE',\n 'SCHEMA_READ',\n 'SCHEMA_WRITE',\n 'SCHEMA_INSERT',\n 'SCHEMA_UPDATE',\n 'SCHEMA_DELETE',\n \n 'SCRIPT_EXEC',\n 'TASK_GROUP_MEM_LIMIT',\n 'TEST_EXEC',\n 'VIEW_EXEC',\n 'VIEW_OWNER',\n 'QUERY_RESULT_MEM_LIMIT',\n \n 'ORCA_GRAPH_CREATE',\n 'ORCA_GRAPH_DROP',\n 'ORCA_GRAPH_CONTROL',\n 'ORCA_TABLE_CREATE',\n 'ORCA_TABLE_DROP',\n 'ORCA_TABLE_READ',\n 'ORCA_TABLE_WRITE',\n 'ORCA_ENGINE_MANAGE',\n 'ORCA_MANAGE',\n \n \n // hint\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/s/sql.html\n 'HINT_HASH',\n 'HINT_SNAPSHOT',\n 'HINT_KEEPORDER',\n 'HINT_SEQ',\n 'HINT_EXPLAIN',\n 'HINT_VECTORIZED',\n \n \n // --- seek mode\n 'HEAD',\n 'CURRENT',\n 'TAIL',\n \n // --- chart type\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/p/plot.html\n 'LINE',\n 'PIE',\n 'COLUMN',\n 'BAR',\n 'AREA',\n 'SCATTER',\n 'HISTOGRAM',\n 'KLINE',\n 'SURFACE',\n \n \n // --- log level\n 'DEBUG',\n 'INFO',\n 'WARNING',\n 'ERROR',\n \n // keep duplicates\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/c/createPartitionedTable.html?highlight=first\n 'FIRST',\n 'LAST',\n 'ALL',\n \n // keep\n // https://www.dolphindb.cn/cn/help/200/FunctionsandCommands/FunctionReferences/i/isDuplicated.html?highlight=none\n 'NONE',\n \n 'HASH_PTN',\n \n // 仅 Python 有的\n 'True',\n 'False',\n 'None',\n \n] as const\n\n\nfunction get_tm_language (python = false) {\n return {\n $schema: 'https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json',\n \n name: python ? 'DolphinDB Python' : 'DolphinDB',\n \n scopeName: python ? 'source.dolphindb-python' : 'source.dolphindb',\n \n patterns: [\n {\n match: '\\\\.\\\\.\\\\.',\n name: 'invalid.ellipsis.dolphindb'\n },\n {\n include: '#keyword'\n },\n {\n include: '#literal'\n },\n {\n include: '#comment'\n },\n {\n include: '#decorator'\n },\n {\n include: '#variable'\n },\n {\n include: '#operator'\n },\n {\n include: '#method_call'\n },\n {\n include: '#function_call'\n },\n {\n include: '#property'\n },\n {\n match: ';',\n name: 'punctuation.terminator.statement.dolphindb'\n },\n {\n match: ',',\n name: 'punctuation.separator.commma.dolphindb'\n }\n ],\n \n \n repository: {\n keyword: {\n // \\b: word boundary\n // (?<![.$]): boundary 不是 . 或 $\n // ?!\\s*: 不是 label\n match: `\\\\b(?<![.$])(${keywords.join('|')})(?!(\\\\s*:|\\\\())\\\\b`,\n name: 'keyword.control.dolphindb'\n },\n \n literal: {\n patterns: [\n { include: '#constant' },\n { include: '#datetime' },\n { include: '#string' },\n { include: '#number' },\n ]\n },\n \n constant: {\n match: `\\\\b(?<![.$])(${constants.join('|')})(?!\\\\s*:)\\\\b`,\n name: 'constant.language.int.dolphindb'\n },\n \n decorator: {\n match: '^@(testing|state|transform|jit)',\n name: 'meta.decorator.dolphindb',\n },\n \n datetime: {\n patterns: [\n {\n match: '\\\\b[0-9]{4}[.][0-9]{2}[.][0-9]{2}[T ][0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{3,9})?\\\\b',\n name: 'constant.numeric.datetime.datetime.dolphindb',\n },\n {\n match: '\\\\b[0-9]{4}\\\\.[0-9]{2}M\\\\b',\n name: 'constant.numeric.datetime.month.dolphindb',\n },\n {\n match: '\\\\b[0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2}\\\\b',\n name: 'constant.numeric.datetime.date.dolphindb',\n },\n {\n match: '\\\\b[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{3,9})?\\\\b',\n name: 'constant.numeric.datetime.time.dolphindb',\n },\n {\n match: '\\\\b[0-9]{2}:[0-9]{2}m\\\\b',\n name: 'constant.numeric.datetime.minute.dolphindb',\n },\n ]\n },\n \n string: {\n patterns: [\n {\n include: '#string_single_quoted'\n },\n {\n include: '#string_double_quoted'\n },\n {\n begin: \"'''\",\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: \"'''\",\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.single.heredoc.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\).',\n name: 'constant.character.escape.backslash.dolphindb'\n }\n ]\n },\n {\n begin: '\"\"\"',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: '\"\"\"',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.double.heredoc.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\).',\n name: 'constant.character.escape.backslash.dolphindb'\n },\n {\n include: '#interpolated_dolphindb'\n }\n ]\n },\n {\n match: '`[\\\\w\\\\.]*',\n name: 'string.quoted.other.dolphindb'\n }\n ]\n },\n \n number: {\n patterns: [\n {\n match: '\\\\b[01]+[bB]\\\\b',\n name: 'constant.numeric.binary.dolphindb'\n },\n {\n // 97c\n match: '\\\\b[0-9]+([clhsmyM]|ms)\\\\b',\n name: 'constant.numeric.dolphindb'\n },\n {\n // 1.2f, 1f\n match: '\\\\b[0-9]+(\\\\.[0-9]+)?f\\\\b',\n name: 'constant.numeric.dolphindb'\n },\n {\n match: \n '(?x)\\n' +\n '(?:\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[eE][+-]?[0-9]+\\\\b)| # 1.E+3\\n' +\n ' (?:\\\\b(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # .1E+3\\n' +\n ' (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1E+3\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)| # 1.1\\n' +\n ' (?:\\\\b[0-9]+(?=\\\\.{2,3}))| # 1 followed by a slice\\n' +\n ' (?:\\\\b[0-9]+(\\\\.)\\\\b)| # 1.\\n' +\n ' (?:\\\\b(\\\\.)[0-9]+\\\\b)| # .1\\n' +\n ' (?:\\\\b[0-9]+\\\\b(?!\\\\.)) # 1\\n' +\n ')\\n',\n \n captures: {\n 0: {\n name: 'constant.numeric.decimal.dolphindb'\n },\n 1: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 2: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 3: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 4: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 5: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n },\n 6: {\n name: 'punctuation.separator.decimal.period.dolphindb'\n }\n }\n },\n ]\n },\n \n string_single_quoted: {\n patterns: [\n {\n begin: \"'\",\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: \"'\",\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.single.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)',\n name: 'constant.character.escape.backslash.dolphindb'\n }\n ]\n }\n ]\n },\n \n string_double_quoted: {\n patterns: [\n {\n begin: '\"',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.string.begin.dolphindb'\n }\n },\n end: '\"',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.string.end.dolphindb'\n }\n },\n name: 'string.quoted.double.dolphindb',\n patterns: [\n {\n captures: {\n 1: {\n name: 'punctuation.definition.escape.backslash.dolphindb'\n }\n },\n match: '(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)',\n name: 'constant.character.escape.backslash.dolphindb'\n },\n {\n include: '#interpolated_dolphindb'\n }\n ]\n }\n ]\n },\n \n function_call: {\n patterns: [\n {\n begin: '(@)?(\\\\w+!?)(?=\\\\s*\\\\()',\n beginCaptures: {\n 1: { name: 'variable.other.readwrite.instance.dolphindb' },\n 2: { patterns: [{ include: '#function_name' }] }\n },\n end: '(?<=\\\\))',\n name: 'meta.function-call.dolphindb',\n patterns: [{ include: '#arguments' }]\n }\n ]\n },\n \n \n method_call: {\n patterns: [\n {\n begin: '(?:(\\\\.)|(::))\\\\s*(\\\\w*!?)(?=\\\\()',\n beginCaptures: {\n 1: { name: 'punctuation.separator.method.period.dolphindb' },\n 2: { name: 'keyword.operator.prototype.dolphindb' },\n 3: { patterns: [{ include: '#function_name' }] }\n },\n end: '(?<=\\\\))',\n name: 'meta.method-call.dolphindb',\n patterns: [{ include: '#arguments' }]\n }\n ]\n },\n \n \n function_name: {\n patterns: [\n {\n match: '[^\\\\d\\\\W]\\\\w*!?',\n name: 'entity.name.function.dolphindb'\n },\n {\n match: '\\\\d[\\\\w]*',\n name: 'invalid.illegal.identifier.dolphindb'\n }\n ]\n },\n \n function_params: {\n patterns: [\n {\n begin: '\\\\(',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.parameters.begin.bracket.round.dolphindb'\n }\n },\n end: '\\\\)',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.parameters.end.bracket.round.dolphindb'\n }\n },\n name: 'meta.parameters.dolphindb',\n patterns: [\n {\n include: '#variable'\n },\n {\n match: '(@(?:[a-zA-Z_$][\\\\w$]*)?)(\\\\.\\\\.\\\\.)?',\n captures: {\n 1: {\n name: 'variable.parameter.function.readwrite.instance.dolphindb'\n },\n 2: {\n name: 'keyword.operator.splat.dolphindb'\n }\n }\n },\n {\n include: '$self'\n }\n ]\n }\n ]\n },\n \n comment: {\n patterns: python ? [\n {\n begin: '#',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '$',\n name: 'comment.line.number-sign.dolphindb'\n }\n ] : [\n {\n begin: '/\\\\*',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '\\\\*/',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n name: 'comment.block.dolphindb'\n },\n {\n begin: '//',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.comment.dolphindb'\n }\n },\n end: '$',\n name: 'comment.line.number-sign.dolphindb'\n },\n ]\n },\n \n arguments: {\n patterns: [\n {\n begin: '\\\\(',\n beginCaptures: {\n 0: {\n name: 'punctuation.definition.arguments.begin.bracket.round.dolphindb'\n }\n },\n end: '\\\\)',\n endCaptures: {\n 0: {\n name: 'punctuation.definition.arguments.end.bracket.round.dolphindb'\n }\n },\n name: 'meta.arguments.dolphindb',\n patterns: [\n {\n include: '$self'\n },\n {\n include: '#literal'\n },\n {\n include: '#variable'\n }\n ]\n }\n ]\n },\n \n variable: {\n patterns: [\n {\n match: '(@)([a-zA-Z_\\\\$]\\\\w*)?',\n name: 'variable.other.readwrite.instance.dolphindb'\n }\n ]\n },\n \n interpolated_dolphindb: {\n patterns: [\n {\n begin: '\\\\#\\\\{',\n captures: {\n 0: {\n name: 'punctuation.section.embedded.dolphindb'\n }\n },\n end: '\\\\}',\n name: 'source.dolphindb.embedded.source',\n patterns: [\n {\n include: '$self'\n }\n ]\n }\n ]\n },\n \n \n operator: {\n patterns: [\n {\n match: '<<|>>',\n name: 'keyword.operator.bitwise.shift.dolphindb'\n },\n {\n match: '!=|<=|>=|==|>|<',\n name: 'keyword.operator.comparison.dolphindb'\n },\n {\n match: '<-|->',\n name: 'keyword.operator.join.dolphindb'\n },\n {\n match: '&&|!|\\\\|\\\\|',\n name: 'keyword.operator.logical.dolphindb'\n },\n {\n match: '&|\\\\||\\\\^',\n name: 'keyword.operator.bitwise.dolphindb'\n },\n {\n match: '\\\\.\\\\.',\n name: 'keyword.operator.splat.dolphindb'\n },\n {\n match: '\\\\?',\n name: 'keyword.operator.existential.dolphindb'\n },\n {\n match: '/|<-|%|\\\\*|/|-|\\\\$|\\\\+',\n name: 'keyword.operator.dolphindb'\n },\n {\n match: '([a-zA-Z$_][\\\\w$]*)?\\\\s*(=|:(?!:))(?![>=])',\n captures: {\n 1: {\n name: 'variable.assignment.dolphindb'\n },\n 2: {\n name: 'keyword.operator.assignment.dolphindb'\n }\n }\n }\n ]\n },\n \n property: {\n patterns: [\n {\n match: '(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'constant.other.object.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'variable.other.object.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'constant.other.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'variable.other.property.dolphindb'\n }\n }\n },\n {\n match: '(?:(\\\\.)|(::))\\\\s*([0-9][\\\\w$]*)',\n captures: {\n 1: {\n name: 'punctuation.separator.property.period.dolphindb'\n },\n 2: {\n name: 'keyword.operator.prototype.dolphindb'\n },\n 3: {\n name: 'invalid.illegal.identifier.dolphindb'\n }\n }\n }\n ]\n }\n }\n } as Block\n}\n\n\nexport const tm_language = get_tm_language(false)\n\nexport const tm_language_python = get_tm_language(true)\n\n\ninterface Block {\n patterns: Pattern[]\n repository?: Record<string, Pattern | Block>\n}\n\ntype Pattern = Match | Include | Block\n\ntype Match = MatchOne | MatchBeginEnd\n\ninterface MatchOne {\n /** a single-line regular expression */\n match: RegExp | string\n \n /** This is the scope that will be applied to the matched text */\n name?: string\n \n /** This use of the captures > patterns structure is extremely important. \n Without it, a stretch of text matched by a match rule is considered finished, and \n TextMate’s search proceeds to the rest of the line after the matched text. \n With it, the stretch of matched text itself becomes a candidate for further matches. \n */\n captures?: Captures\n}\n\ninterface MatchBeginEnd {\n begin: RegExp | string\n \n end: RegExp | string\n \n /** This is the scope (or an expression evaluating to a scope) to be applied to \n the entire matched stretch(es) of text starting at the start of the begin match.\n */\n name?: string\n \n /** This is the scope to be applied to what’s between the begin match and the end match (or the end of the document). */\n contentName?: string\n \n /** it applies to the region between the begin and end matches. */\n patterns?: Pattern[]\n \n beginCaptures?: Captures\n \n endCaptures?: Captures\n \n whileCaptures?: Captures\n \n /** If the name or number of the matched group happens to be the same for both the begin pattern and the other pattern, \n you can (if appropriate) use captures as a shorthand to avoid saying the same thing twice.\n */\n captures?: Captures\n \n applyEndPatternLast?: 1\n}\n\ninterface Include {\n include: string\n}\n\ntype Captures = Record<string | number, {\n /** This is the scope that will be assigned to the matched group text. */\n name?: string\n \n /** This is a list of match rules to be sought within the matched group text \n — thus permitting the search for matches to continue inside the matched text.\n */\n patterns?: Pattern[]\n}>\n\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dolphindb",
|
|
3
3
|
"description": "DolphinDB JavaScript API",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.37",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
7
7
|
"browser": "./browser.js",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
"JavaScript"
|
|
30
30
|
],
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@types/node": "^25.
|
|
33
|
-
"eslint": "^
|
|
32
|
+
"@types/node": "^25.2.3",
|
|
33
|
+
"eslint": "^10.0.0",
|
|
34
34
|
"typescript": "^5.9.3"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"dayjs": "^1.11.19",
|
|
38
38
|
"ipaddr.js": "^2.3.0",
|
|
39
39
|
"tslib": "^2.8.1",
|
|
40
|
-
"xshell": "^1.3.
|
|
40
|
+
"xshell": "^1.3.38"
|
|
41
41
|
}
|
|
42
42
|
}
|
package/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AAEvH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EACH,GAAG,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACpF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAEvD,YAAY,EAC9B,YAAY,EAAE,QAAQ,EACzB,MAAM,YAAY,CAAA;AAGnB,mBAAmB,EAAE,CAAA;AAGrB,2CAA2C;AAE3C,MAAM,GAAG,GAAG,wBAAiC,CAAA;AAC7C,iDAAiD;AACjD,gDAAgD;AAChD,6CAA6C;AAE7C,MAAM,WAAW,GAAe,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAG,CAAA;AAGvE,MAAM,IAAI,GAAG,KAAK,CAAA;AAClB,KAAK,UAAU,SAAS,CAAE,GAAQ;AAElC,CAAC;AAGD,CAAC;AAAA,CAAC,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAEjC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEnC,KAAK,MAAM,CAAC,IACR,IAAI,CAAC,CAAC;QACF,CAAC,SAAS,CAAC;QACf,CAAC,CAAC;YACE,aAAa;YACb,UAAU;YACV,iBAAiB;YACjB,qBAAqB;YACrB,WAAW;YACX,UAAU;YACV,SAAS;YACT,cAAc;YACd,UAAU;YACV,WAAW;YACX,iBAAiB;YAEjB,mBAAmB;YACnB,eAAe;SAClB;QAED,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;IAEhB,GAAG,CAAC,UAAU,EAAE,CAAA;IAEhB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AACrC,CAAC,CAAC,EAAE,CAAA;AAIJ,SAAS,aAAa;IAClB,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AAC1E,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ,EAAE,IAAY;IAC9C,OAAO,IAAI,OAAO,CAAS,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,IAAI,CAAC;YACD,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,MAAM,GAAG,CAAC,IAAI,CACV,SAAS,IAAI,GAAG,EAChB;gBACI,QAAQ,CAAE,EAAE,IAAI,EAAE,IAAI,EAAE;oBACpB,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAA;wBACf,OAAO,CAAC,IAAI,CAAC,CAAA;oBACjB,CAAC;gBACL,CAAC;aACJ,CAAC,CAAA;YAEN,IAAI,CAAC,QAAQ;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACpB,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjB,IAAI,KAAyB,CAAA;IAE7B,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QACd,KAAK,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,kBAAkB,CAAC,CAAA;AACxD,CAAC;AAGD,KAAK,UAAU,qBAAqB,CAAE,GAAQ;IAC1C,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACpB,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjB,IAAI,KAAyB,CAAA;IAE7B,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QACd,KAAK,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,kBAAkB,CAAC,CAAA;AACxD,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;IAEvD,MAAM,aAAa,GAAG,MAAM,CAAA;IAC5B,MAAM,YAAY,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE,EAAE,CAAA;IAErD,IAAI,cAAgC,CAAA;IAEpC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,cAAc,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,CAAA;IACtB,MAAM,CAAC,cAAc,YAAY,gBAAgB,CAAC,CAAA;IAClD,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,aAAa,EAAE,CAAC,CAAA;IAC/F,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAA;IAClD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IACxC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAA;IACtD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IAGnD,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACvC,IAAI,gBAAoC,CAAA;IACxC,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QACvB,OAAO,CAAC,UAAU,EAAE,CAAA;QACpB,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,gBAAgB,GAAG,KAAK,CAAA;IAC5B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxB,MAAM,CAAC,gBAAgB,YAAY,kBAAkB,CAAC,CAAA;IACtD,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAG5C,oCAAoC;IACpC,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAA;IAChD,IAAI,iBAAqC,CAAA;IACzC,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,iBAAiB,GAAG,KAAK,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACzB,MAAM,CAAC,iBAAiB,YAAY,kBAAkB,CAAC,CAAA;IACvD,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,YAAY,wBAAwB,CAAC,CAAA;AAClG,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAE/B,MAAM,GAAG,GAAG,wBAAwB,CAAA;IAEpC,MAAM,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA;IAEnD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACvB,IAAI,YAAY,CAAC;YACb,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,EAAE,CAAC;SAClB,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAGD,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,EAAY;IACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpB,MAAM,CAAC,GAAG,GAAG,CAAA;IAEb,MAAM,GAAG,CAAC,IAAI,CACV,EAAE,CAAC,CAAC;QACA,SAAS;YACT,aAAa;YACb,qCAAqC;YACrC,2BAA2B;YAC3B,QAAQ;YACR,oHAAoH;YACpH,8BAA8B;YAC9B,qBAAqB;YACrB,8BAA8B;YAC9B,oBAAoB;YACpB,KAAK;QACT,CAAC;YACG,SAAS;gBACT,yCAAyC;gBACzC,kBAAkB;gBAClB,4BAA4B;gBAC5B,4BAA4B;gBAC5B,+CAA+C;gBAC/C,+CAA+C;gBAC/C,kBAAkB;gBAClB,wBAAwB;gBACxB,aAAa;gBACb,kCAAkC;gBAClC,cAAc;gBACd,iCAAiC;gBACjC,qBAAqB;gBACrB,8BAA8B;gBAC9B,oBAAoB;gBACpB,KAAK,CACZ,CAAA;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,IAAI,KAAK,GAAG,IAAI,CAAA;IAEhB,IAAI,OAAO,GAAG,KAAK,EAAQ,CAAA;IAE3B,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;QACpB,GAAG,WAAW;QACd,SAAS,EAAE;YACP,KAAK,EAAE,QAAQ;YACf,OAAO,CAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE;gBAC7C,IAAI,KAAK;oBACL,MAAM,KAAK,CAAA;gBAEf,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;gBAE5C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAE3B,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAA;oBAC3C,KAAK,GAAG,KAAK,CAAA;gBACjB,CAAC;;oBACG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAE3B,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;gBAE9C,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;gBACzB,MAAM,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAA;gBACZ,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;gBAE1B,UAAU,IAAI,IAAI,CAAC,MAAM,CAAA;gBAEzB,IAAI,UAAU,KAAK,CAAC,GAAG,EAAE;oBACrB,OAAO,CAAC,OAAO,EAAE,CAAA;YACzB,CAAC;SACJ;KACJ,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IAEpB,MAAM,GAAG,CAAC,IAAI,CACV,OAAO,CAAC,IAAI;QACZ,IAAI;QACJ,mBAAmB;QACnB,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,2CAA2C;QAC3C,mDAAmD;QACnD,yCAAyC;QACzC,cAAc;QACd,SAAS,CACZ,CAAA;IAED,MAAM,OAAO,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAGD,KAAK,UAAU,SAAS,CAAE,GAAQ;IAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAErB,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IAGpD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC1B,KAAK,CACD,QAAQ,CACJ,CACI,MAAM,GAAG,CAAC,IAAI,CAAiB,UAAU,CAAC,CAC7C,CAAC,KAAK,CACV,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAC/C,CAAC;AAGD,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,OAAe;IACpD,MAAM,IAAI,GAAG,kBAAkB,OAAO,gCAAgC,CAAA;IAEtE,MAAM,CACF,OAAO,CACH,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,EAAE,MAAM,EAAE,KAAK,EAAE,CACpB,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,CACI,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CACtB,CAAA;AACL,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAE3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAA;IAE9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CACrB,2BAA2B;QAC3B,uBAAuB;QACvB,2BAA2B;QAC3B,MAAM,CACT,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA,CAAE,mCAAmC;IACzE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAA;IAErB,sBAAsB;IACtB,eAAe;IACf,oCAAoC;IACpC,kDAAkD;IAClD,yHAAyH;IACzH,iBAAiB;IACjB,QAAQ;IACR,IAAI;IAEJ,kBAAkB;IAClB,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,CACF,OAAO,CACH,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,EAAE,MAAM,EAAE,KAAK,EAAE,CACpB,KAAK,oCAAoC,CAC7C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,GAAG,CAAC,IAAI,CAAe,SAAS,EAAE;QACpC,IAAI,MAAM,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;SAChB,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,MAAM,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;SAChB,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,CAAC,CACH,MAAM,GAAG,CAAC,IAAI,CAAkB,GAAG,CAAC,CACvC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;IAGzB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,qCAAqC;QACrC,kBAAkB;QAClB,uCAAuC;QACvC,oBAAoB;QACpB,2CAA2C;QAC3C,+CAA+C;QAC/C,mBAAmB;QACnB,uDAAuD;QACvD,IAAI;QACJ,oCAAoC;QACpC,0CAA0C,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAA;IAE3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAEhC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;IAE9F,MAAM,CAAC,KAAK,KAAK,kDAAkD,CAAC,CAAA;IAEpE,iEAAiE;IACjE,MAAM,CACF,CAAC,MAAM,GAAG,CAAC,IAAI,CAAe,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAClE,yCAAyC,CAC5C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CACrB,uCAAuC,CAC1C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAA;IAEzG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAc,gDAAgD,CAAC,CAAA;IAC3F,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAA;IAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAA;IACrE,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,wBAAwB,CAAC,CAAA;IAEtD,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAExC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAE7B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,GAAG,CAAC,IAAI,CAAa,0DAA0D,CAAC;KACzF,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAE7B,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;YACR,CAAC,EAAE;gBACC,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,IAAI;aACV;YACD,CAAC,EAAE,wBAAwB;SAC9B,CAAC,CAAC,CAAC,CACP,CAAA;IAED,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CACxD,CAAA;IAED,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC1B,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE;gBACF,IAAI,EAAE,6CAA6C;aACtD;SACJ,CAAC;KACL,CAAC,CACL,CAAA;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAE,GAAQ;IACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CACtB,qEAAqE;QACrE,4HAA4H;QAC5H,sCAAsC;QACtC,qBAAqB;QACrB,4BAA4B;QAC5B,wBAAwB;QACxB,qBAAqB;QACrB,KAAK;QACL,uCAAuC;QACvC,mDAAmD;QACnD,wBAAwB;QACxB,yCAAyC;QACzC,gLAAgL;QAChL,iBAAiB;QACjB,oBAAoB;QACpB,+KAA+K;QAC/K,iBAAiB;QACjB,oBAAoB;QACpB,IAAI;QACJ,iDAAiD,CACpD,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7B,eAAe,CACX,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EACtB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AACnB,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAExB,MAAM,GAAG,CAAC,IAAI,CACV,qBAAqB;QACrB,qBAAqB;QACrB,gBAAgB;QAChB,KAAK,CACR,CAAA;IAED,MAAM,GAAG,GAAG,gCAAgC,CAAA;IAE5C,MAAM,CACF,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;YACR,CAAC,EAAE;gBACC,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,IAAI;aACV;YACD,CAAC,EAAE,GAAG;SACT,CAAC,CAAC,CAAC;SACC,CAAC,KAAK,GAAG,CACjB,CAAA;IAED,MAAM,GAAG,CAAC,OAAO,CACb,6BAA6B;QAC7B,wBAAwB;QACxB,0BAA0B;QAC1B,iBAAiB;QACjB,wBAAwB;QACxB,6CAA6C;QAC7C,wCAAwC;QACxC,mDAAmD;QACnD,mCAAmC;QACnC,yCAAyC;QACzC,4EAA4E;QAC5E,yFAAyF;QACzF,yEAAyE;QACzE,+GAA+G;QAC/G,8BAA8B;QAC9B,0BAA0B;QAC1B,kCAAkC;QAClC,kGAAkG;QAClG,kDAAkD;QAClD,yCAAyC;QACzC,0CAA0C;QAC1C,6CAA6C,CAChD,CAAA;IAED,MAAM;IACF,yCAAyC;IACzC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAe,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAClC,CAAA;IAED,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,4BAA4B;QAC5B,qBAAqB;QACrB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE/B,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;AAC7B,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,kBAAkB;IAClB,MAAM,GAAG,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAA;IACrG,iFAAiF;IAEjF,MAAM;IACF,sBAAsB;IACtB,MAAM,GAAG,CAAC,MAAM,CACZ,aAAa,EACb;QACI,GAAG;QAEH,KAAK;QACL,IAAI,QAAQ,CAAC;YACT,MAAM;YACN,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM;YACN,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM;YACN,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACvC,CAAC;KACL,CACJ,KAAK,CAAC,CACV,CAAA;AACL,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAC7B,sBAAsB;QACtB,gCAAgC;QAChC,uCAAuC;QACvC,qBAAqB;QACrB,+BAA+B;QAC/B,yBAAyB;QACzB,wBAAwB;QACxB,+BAA+B;QAC/B,6CAA6C;QAC7C,6BAA6B;QAC7B,+BAA+B;QAC/B,+BAA+B;QAC/B,MAAM,CAAC,CAAA;IAEX,0BAA0B;IAE1B,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,oBAAoB,CAAC,CAAA;IACjD,KAAK,CAAE,UAAU,CAAC,KAAwB,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;IACzD,KAAK,CAAE,UAAU,CAAC,KAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvD,KAAK,CACD,MAAM,GAAG,CAAC,MAAM,CAAS,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,YAAY,CAAC,CAAA;IAEjB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAc,2CAA2C,CAAC,CAAA;IAE1F,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAA;IAEzD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,IAAI,CAC9B,oBAAoB;QACpB,kBAAkB;QAClB,+BAA+B;QAC/B,oCAAoC;QACpC,sBAAsB;QACtB,6BAA6B;QAC7B,0BAA0B;QAC1B,0CAA0C;QAC1C,oCAAoC;QACpC,uCAAuC;QACvC,qCAAqC;QACrC,yGAAyG;QACzG,oEAAoE;QACpE,mGAAmG;QACnG,iDAAiD;QACjD,2BAA2B;QAC3B,MAAM,CAAC,CAAA;IAEX,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,qBAAqB,CAAC,CAAA;IACnD,KAAK,CAAE,WAAW,CAAC,KAAwB,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;IAE1D,2BAA2B;IAE3B,iCAAiC;IACjC,eAAe;IACf,4DAA4D;IAE5D,eAAe;IACf,iCAAiC;AACrC,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAE3B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,4BAA4B,EAAE,SAAS,EAAE;QACrE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,CAAS,oBAAoB,CAAC;KACvD,CAAC,CAAA;IAEF,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;QACpB,GAAG,WAAW;QACd,MAAM;QACN,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;KACrB,CAAC,CAAA;IAEF,KAAK,CACD,CAAC,MAAM,IAAI,CAAC,MAAM,CAAmB,0BAA0B,CAAC,CAAC,CAC5D,CAAC,CAAC,EACP,OAAO,CAAC,CAAA;IAEZ,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;IAE5B,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC","sourcesContent":["import { deepEqual, deepStrictEqual } from 'assert/strict'\n\nimport { assert, check, defer, inspect, MyProxy, ramdisk, set_inspect_options, WebSocketConnectionError } from 'xshell'\n\nimport { keywords } from './language.ts'\n\nimport {\n DDB, DdbConnectionError, DdbDatabaseError, DdbForm, DdbInt, DdbLong, DdbObj, DdbType, \n DdbVectorAny, DdbVectorDouble, DdbVectorSymbol, month2ms, DdbDurationUnit,\n type DdbStringObj, type DdbVectorAnyObj, type DdbDurationVectorValue, type DdbVectorObj, \n type DdbTableObj, DdbTimeStamp, type DdbDictObj, type DdbTableData, type DdbOptions,\n DdbVectorInt, DdbTable, type DdbExtObjValue\n} from './index.ts'\n\n\nset_inspect_options()\n\n\n// const fpd_root = import.meta.dirname.fpd\n\nconst url = 'ws://192.168.0.54:8848' as const\n// const url = 'ws://192.168.0.125:8848' as const\n// const url = 'ws://192.168.0.69:8902' as const\n// const url = 'ws://127.0.0.1:8848' as const\n\nconst ddb_options: DdbOptions = ramdisk ? { proxy: MyProxy.work } : { }\n\n\nconst repl = false\nasync function test_repl (ddb: DDB) {\n \n}\n\n\n;(async function test () {\n console.log('--- 测试开始 ---'.green)\n \n let ddb = new DDB(url, ddb_options)\n \n for (const t of\n repl ? \n [test_repl]\n : [\n test_keywords,\n test_types,\n test_reconnection,\n test_connection_error,\n test_ticket,\n test_print,\n test_time,\n test_streaming,\n test_error,\n test_invoke,\n test_append_table\n \n // test_iot_vector,\n // test_extobj,\n ]\n )\n await t(ddb)\n \n ddb.disconnect()\n \n console.log('--- 测试通过 ---'.green)\n})()\n\n\n\nfunction test_keywords () {\n check(new Set(keywords).size === keywords.length, 'keywords 中不能有重复的项')\n}\n\n\nasync function get_printed (ddb: DDB, code: string) {\n return new Promise<string>(async (resolve, reject) => {\n try {\n let resolved = false\n await ddb.eval(\n `print(${code})`,\n {\n listener ({ type, data }) {\n if (type === 'print' && !resolved) {\n resolved = true\n resolve(data)\n }\n }\n })\n \n if (!resolved)\n reject(new Error('未输出 print 消息'))\n } catch (error) {\n reject(error)\n }\n })\n}\n\n\nasync function test_reconnection (ddb: DDB) {\n let _ddb = new DDB(url, ddb_options)\n \n await _ddb.connect()\n _ddb.disconnect()\n \n let error: DdbConnectionError\n \n try {\n await _ddb.connect()\n } catch (_error) {\n error = _error\n }\n \n assert(error && error instanceof DdbConnectionError)\n}\n\n\nasync function test_connection_error (ddb: DDB) {\n let _ddb = new DDB(url, ddb_options)\n \n await _ddb.connect()\n _ddb.disconnect()\n \n let error: DdbConnectionError\n \n try {\n await _ddb.eval('1 + 1')\n } catch (_error) {\n error = _error\n }\n \n assert(error && error instanceof DdbConnectionError)\n}\n\n\nasync function test_error (ddb: DDB) {\n console.log('测试 DdbDatabaseError 和 DdbConnectionError')\n \n const error_message = '错误消息'\n const error_script = `throw ${error_message.quote()}`\n \n let database_error: DdbDatabaseError\n \n try {\n await ddb.eval(error_script)\n } catch (error) {\n database_error = error\n }\n \n assert(database_error)\n assert(database_error instanceof DdbDatabaseError)\n assert(database_error.message === `throw ${error_message.quote('double')} => ${error_message}`)\n assert(database_error.name === 'DdbDatabaseError')\n assert(database_error.url === ddb.url)\n assert(database_error.type === 'script')\n assert(database_error.options.script === error_script)\n assert(database_error.stack.includes('test_error'))\n \n \n let ddbtest = new DDB(url, ddb_options)\n let connection_error: DdbConnectionError\n try {\n await ddbtest.connect()\n ddbtest.disconnect()\n await ddbtest.eval('1')\n } catch (error) {\n connection_error = error\n }\n \n assert(connection_error)\n assert(connection_error instanceof DdbConnectionError)\n assert(connection_error.url === ddbtest.url)\n \n \n // --- 首次连接失败也会抛出 DdbConnectionError\n let ddbtest2 = new DDB('ws://dolphindb123.com/')\n let connection_error2: DdbConnectionError\n try {\n await ddbtest2.connect()\n } catch (error) {\n connection_error2 = error\n }\n \n assert(connection_error2)\n assert(connection_error2 instanceof DdbConnectionError)\n assert(connection_error2.cause && connection_error2.cause instanceof WebSocketConnectionError)\n}\n\n\nasync function test_print (ddb: DDB) {\n console.log('测试 print message')\n \n const str = 'test print message\\n中文'\n \n assert(await get_printed(ddb, str.quote()) === str)\n \n console.log('测试 verbose 输出')\n \n let vddb = new DDB(url, { ...ddb_options, verbose: true })\n \n await vddb.call('typestr', [\n new DdbVectorAny([\n new DdbVectorSymbol(['a', 'b', 'a', 'b', 'a', 'b']),\n new DdbLong(3n)\n ])\n ])\n \n vddb.disconnect()\n}\n\n\nasync function test_streaming (ddb: DDB, ha?: boolean) {\n console.log('测试流数据')\n \n const n = 100\n \n await ddb.eval(\n ha ?\n 'try {\\n' +\n ' try {\\n' +\n \" dropStreamTable('prices')\\n\" +\n ' } catch (error) { }\\n' +\n ' \\n' +\n \" haStreamTable(11, table(10000:0, ['time', 'stock', 'price'], [TIMESTAMP, SYMBOL, DOUBLE]), 'prices', 100000)\\n\" +\n \" print('prices 流表创建成功')\\n\" +\n '} catch (error) {\\n' +\n \" print('prices 流表创建失败')\\n\" +\n ' print(error)\\n' +\n '}\\n'\n :\n 'try {\\n' +\n \" if (!defined('prices', SHARED)) {\\n\" +\n ' share(\\n' +\n ' streamTable(\\n' +\n ' 10000:0,\\n' +\n \" ['time', 'stock', 'price'],\\n\" +\n ' [TIMESTAMP, SYMBOL, DOUBLE]\\n' +\n ' ),\\n' +\n \" 'prices'\\n\" +\n ' )\\n' +\n \" print('prices 流表创建成功')\\n\" +\n ' } else\\n' +\n \" print('prices 流表已存在')\\n\" +\n '} catch (error) {\\n' +\n \" print('prices 流表创建失败')\\n\" +\n ' print(error)\\n' +\n '}\\n'\n )\n \n let total_rows = 0\n \n let first = true\n \n let promise = defer<void>()\n \n let sddb = new DDB(url, {\n ...ddb_options,\n streaming: {\n table: 'prices',\n handler ({ error, data: _data, time, id, window }) {\n if (error)\n throw error\n \n const { columns, data, name, types } = _data\n \n assert(Array.isArray(data))\n \n if (first) {\n assert(data.length === 0, '流订阅应该返回 schema')\n first = false\n } else\n assert(data.length > 0)\n \n deepEqual(columns, ['time', 'stock', 'price'])\n \n assert(name === 'prices')\n assert(typeof id === 'bigint')\n assert(time)\n assert(types.length === 3)\n \n total_rows += data.length\n \n if (total_rows === n * 10)\n promise.resolve()\n },\n }\n })\n \n await sddb.connect()\n \n await ddb.eval(\n `n = ${n}\\n` +\n '\\n' +\n 'for (i in 0..9)\\n' +\n ' append!(\\n' +\n ' prices,\\n' +\n ' table([\\n' +\n ' (now() + 0..(n-1)) as time,\\n' +\n \" take(['MSFT', 'FUTU'], n) as stock,\\n\" +\n ' (0..(n-1) \\\\ 10) as price\\n' +\n ' ])\\n' +\n ' )\\n'\n )\n \n await promise\n console.log('流数据已全部收齐')\n \n sddb.disconnect()\n}\n\n\nasync function test_time (ddb: DDB) {\n console.log('测试时间显示')\n \n await time2str_equal(ddb, '2022-09-01T14:30:01.095')\n await time2str_equal(ddb, '2022-07-01T00:00:00.000')\n await time2str_equal(ddb, '2022-07-02T00:00:00.000')\n await time2str_equal(ddb, '2022-06-30T00:00:00.000')\n await time2str_equal(ddb, '2022-12-22T16:57:30.248')\n \n \n console.log('测试 month2ms')\n check(\n month2ms(\n (\n await ddb.eval<DdbObj<number>>('2022.12M')\n ).value\n ) === new Date('2022.12.01').valueOf())\n}\n\n\nasync function time2str_equal (ddb: DDB, timestr: string) {\n const code = `temporalParse('${timestr}', 'yyyy-MM-ddTHH:mm:sss.SSS')`\n \n assert(\n inspect(\n await ddb.eval(code),\n { colors: false }\n ).slice('timestamp('.length, -1) === \n (\n await get_printed(ddb, code)\n ).replace('T', ' ')\n )\n}\n\n\nasync function test_types (ddb: DDB) {\n console.log('测试通过 ddb.call 调用 getNodeAlias 函数')\n console.log(await ddb.call('getNodeAlias'))\n \n console.log('测试 ddb.call 上传不同类型的变量')\n const result0 = await ddb.call('typestr', [new DdbInt(1)])\n console.log(result0)\n assert(result0.form === DdbForm.scalar)\n assert(result0.type === DdbType.string)\n assert(result0.value === 'INT')\n \n console.log('测试 ddb.call 上传不同类型的变量')\n const result1 = await ddb.call('typestr', [new DdbVectorDouble([0.1, 0.2, 0.3])])\n console.log(result1)\n assert(result1.form === DdbForm.scalar)\n assert(result1.type === DdbType.string)\n assert(result1.value === 'FAST DOUBLE VECTOR')\n \n console.log('测试 array vector')\n const av = await ddb.eval(\n 'av = array(INT[], 0, 3)\\n' +\n 'append!(av, [1..4])\\n' +\n 'append!(av, [1..70000])\\n' +\n 'av\\n'\n )\n \n console.log(av)\n assert(av.form === DdbForm.vector)\n assert(av.type === DdbType.int + 64) // array vector 的 type 比较特殊,需要偏移 64\n assert(av.rows === 2)\n \n // 测试 array vector 格式化\n // console.log(\n // await ddb.eval<DdbVectorObj>(\n // 'av = array(DECIMAL128(2)[], 0, 1)\\n' +\n // 'append!(av, [[92233720368547758.11, NULL, 100000000000000, NULL, -92233720368547758, -100000000000000]])\\n' +\n // 'av\\n'\n // )\n // )\n \n // 测试 Invalid Date\n await ddb.upload(['x'], [new DdbTimeStamp('2024.11.11')])\n \n assert(\n inspect(\n await ddb.eval('x'), \n { colors: false }\n ) === 'timestamp(2024.11.11 00:00:00.000)'\n )\n \n console.log('测试大数据')\n let bigarr = new Float64Array(10)\n bigarr.fill(0.5)\n \n await ddb.call<DdbStringObj>('typestr', [\n new DdbObj({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: bigarr.length,\n cols: 1,\n value: bigarr\n })\n ])\n \n await ddb.upload(['a'], [\n new DdbObj({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: bigarr.length,\n cols: 1,\n value: bigarr\n })\n ])\n \n assert((\n await ddb.eval<DdbVectorDouble>('a')\n ).rows === bigarr.length)\n \n \n console.log('测试 datasource')\n \n const ds = (await ddb.eval<DdbVectorAnyObj>(\n 'db_path = \"dfs://test-datasource\"\\n' + \n 'tb_name = \"db\"\\n' + \n 'if (!existsTable(db_path, tb_name))\\n' + \n ' createTable(\\n' + \n ' database(db_path, VALUE , [1]),\\n' +\n ' table(1:0,`id`name, [INT, STRING]),\\n' +\n ' tb_name\\n' +\n ' ).append!(table(1 2 as id, `str1`str2 as name))\\n' +\n '\\n' +\n 'tb = loadTable(db_path, tb_name)\\n' +\n 'sqlDS(<select * from tb where id = 1>)\\n'\n )).value[0] as DdbStringObj\n \n const { type, form, value } = ds\n \n assert(type === DdbType.datasource && form === DdbForm.scalar, '返回的 DdbObj 具有正确的 type 和 form')\n \n assert(value === 'DataSource< select [7] * from tb where id == 1 >')\n \n // 如果直接构造 DdbObj Datasource,将其送入 ddb.call, ddb将仍然认为送入的是一个 STRING \n assert(\n (await ddb.call<DdbStringObj>('typestr', [ds])).value === 'STRING', \n '从 js 构建的 Datasource DdbObj 会被识别为 STRING'\n )\n \n console.log('测试 pair<duration>')\n const dp = await ddb.eval<DdbVectorObj<DdbDurationVectorValue>>(\n 'pair(duration(\"20d\"), duration(\"2H\"))'\n ) \n \n console.log(dp)\n assert(dp.type === DdbType.duration, 'dp 的返回值应该为 Duration')\n assert(dp.value[0].data === 20 && dp.value[0].unit === DdbDurationUnit.d, 'pair<duration> 的 value 应该已解析')\n \n console.log('测试 void vector')\n const table = await ddb.eval<DdbTableObj>('select *, NULL as val from table(1..100 as id)')\n const { value: [ints, voids] } = table\n \n console.log(voids)\n assert(voids.rows === ints.rows, 'void vector 应该具有正常的 vector length')\n assert(voids.length === 10, 'void vector 应该具有正确的数据长度')\n assert(voids.value === null, 'void vector 的值应该为 null')\n \n await ddb.upload(['voidtable'], [table])\n \n console.log('测试 compress 类型')\n \n await ddb.upload(['c'], [\n await ddb.eval<DdbDictObj>('dict([\"a\", \"b\", \"c\"], [compress([1, 2, 3]), 123, \"bbb\"])')\n ])\n}\n\n\nasync function test_from_stdjson (ddb: DDB) {\n console.log('测试 fromStdJson')\n \n console.log(\n await ddb.call('fromStdJson', [JSON.stringify({\n a: 1234,\n b: 'aaa',\n c: {\n e: 1234,\n f: 4321\n },\n f: 'blabla\\n中文\\u4e2d\\u6587'\n })])\n )\n \n console.log(\n await ddb.call('fromStdJson', [JSON.stringify(1234)])\n )\n \n console.log(\n await ddb.call('fromStdJson', [\n JSON.stringify({\n data: {\n code: 'select * from kline where secid == \"230012\"'\n }\n })\n ])\n )\n}\n\nasync function test_iot_vector (ddb: DDB) {\n const obj = await ddb.eval(\n 'if(existsDatabase(\"dfs://testIOT\")) dropDatabase(\"dfs://testIOT\")\\n' +\n 'create database \"dfs://testIOT\" partitioned by HASH([INT, 40]),RANGE(2020.01.01 2022.01.01 2025.01.01), engine=\\'TSDB\\'\\n' +\n 'create table \"dfs://testIOT\".\"pt\"(\\n' +\n ' deviceId INT,\\n' +\n ' timestamp TIMESTAMP,\\n' +\n ' location SYMBOL,\\n' +\n ' value IOTANY,\\n' +\n ')\\n' +\n 'partitioned by deviceId, timestamp,\\n' +\n 'sortColumns=[`deviceId, `location, `timestamp],\\n' +\n 'latestKeyCache=true;\\n' +\n 'pt = loadTable(\"dfs://testIOT\",\"pt\");\\n' +\n 't=table(take(1..100000,100000) as deviceId, take(now()+(0..100), 100000) as timestamp, take(\"bb\"+string(0..100), 100000) as location, take(int(1..100000),100000) as value)\\n' +\n 'pt.append!(t)\\n' +\n 'flushTSDBCache()\\n' +\n 't=table(take(100001..200000,100000) as deviceId, take(now()+(0..100), 100000) as timestamp,take(lpad(string(1), 8, \"0\"), 100000) as location, rand(200.0, 100000) as value)\\n' +\n 'pt.append!(t)\\n' +\n 'flushTSDBCache()\\n' +\n '\\n' +\n 'select * from loadTable(\"dfs://testIOT\",\"pt\")\\n'\n )\n \n console.log('obj:', obj)\n console.log('data:', obj.data())\n await ddb.upload(['a'], [obj])\n await ddb.execute('print(a)')\n deepStrictEqual(\n await ddb.execute('a'),\n obj.data())\n}\n\n\nasync function test_invoke (ddb: DDB) {\n console.log('测试 invoke')\n \n await ddb.eval(\n 'def echo (data) {\\n' +\n // '\tprint(data)\\n' +\n '\treturn data\\n' +\n '}\\n'\n )\n \n const str = 'blabla\\n中文\"\\u4e2d\\u6587\"\\\\\\\"\\\"'\n \n assert(\n (await ddb.invoke('echo', [{\n a: 1234,\n b: 'aaa',\n c: {\n e: 1234,\n f: 4321\n },\n f: str\n }]))\n .f === str\n )\n \n await ddb.execute(\n 'cbool = true false false;\\n' +\n \"cchar = 'a' 'b' 'c';\\n\" +\n 'cshort = 122h 32h 45h;\\n' +\n 'cint = 1 4 9;\\n' +\n 'clong = 17l 39l 72l;\\n' +\n 'cdate = 2013.06.13 2015.07.12 2019.08.15;\\n' +\n 'cmonth = 2011.08M 2014.02M 2019.07M;\\n' +\n 'ctime = 04:15:51.921 09:27:16.095 11:32:28.387;\\n' +\n 'cminute = 03:25m 08:12m 10:15m;\\n' +\n 'csecond = 01:15:20 04:26:45 09:22:59;\\n' +\n 'cdatetime = 1976.09.10 02:31:42 1987.12.13 11:58:31 1999.12.10 20:49:23;\\n' +\n 'ctimestamp = 1997.07.20 21:45:16.339 2002.11.26 12:40:31.783 2008.08.10 23:54:27.629;\\n' +\n 'cnanotime = 01:25:33.365869429 03:47:25.364828475 08:16:22.748395721;\\n' +\n 'cnanotimestamp = 2005.09.23 13:30:35.468385940 2007.12.11 14:54:38.949792731 2009.09.30 16:39:51.973463623;\\n' +\n 'cfloat = 7.5f 0.79f 8.27f;\\n' +\n 'cdouble = 5.7 7.2 3.9;\\n' +\n 'cstring = \"hello\" \"hi\" \"here\";\\n' +\n 'cdatehour = datehour(2012.06.15 15:32:10.158 2012.06.15 17:30:10.008 2014.09.29 23:55:42.693);\\n' +\n 'cblob = blob(\"dolphindb\" \"gaussdb\" \"goldendb\")\\n' +\n 'cdecimal32 = decimal32(12 17 135.2,2)\\n' +\n 'cdecimal64 = decimal64(18 24 33.878,4)\\n' +\n 'cdecimal128 = decimal128(18 24 33.878,18)\\n'\n )\n \n assert(\n // await ddb.invoke<DdbTableData>('defs')\n (await ddb.invoke<DdbTableData>('objs', [true], { table: 'full' }))\n .columns.includes('shared')\n )\n \n const [a, b] = await ddb.invoke<[number, number]>(\n 'def foo (a = 1, b = 2) {\\n' +\n ' return (a, b)\\n' +\n '}\\n', \n [undefined, new DdbInt(3)])\n \n check(a === 1 && b === 3)\n}\n\n\nasync function test_append_table (ddb: DDB) {\n // 在连接对应的会话中加载或创建表\n await ddb.execute('t = table(1..10 as id, take([\"A001\", \"B001\"], 10) as sym, rand(10.0, 10) as val)')\n // await ddb.execute('t = loadTable(database(\"dfs://path-to-db\"), \"table_name\")')\n \n assert(\n // 使用 tableInsert 插入数据\n await ddb.invoke<number>(\n 'tableInsert',\n [\n 't',\n \n // 数据\n new DdbTable([\n // 第一列\n new DdbVectorInt([1, 2, 3]),\n \n // 第二列\n new DdbVectorSymbol(['a', 'b', 'c']),\n \n // 第三列\n new DdbVectorDouble([1.1, 1.2, 1.3]),\n ])\n ]\n ) === 3\n )\n}\n\n\nasync function test_extobj (ddb: DDB) {\n const instrument = await ddb.eval(\n 'parseInstrument({ \\n' +\n ' \"productType\": \"Option\",\\n' +\n ' \"optionType\": \"EuropeanOption\",\\n' +\n ' \"version\": 0,\\n' +\n ' \"instrumentId\": \"0001\",\\n' +\n ' \"nominal\": 100.0,\\n' +\n ' \"strike\": 100.0,\\n' +\n ' \"maturity\": 2022.08.09,\\n' +\n ' \"dayCountConvention\": \"ActualActual\",\\n' +\n ' \"payoffType\": \"Call\",\\n' +\n ' \"priceCurrency\": \"CNY\",\\n' +\n ' \"underlying\": \"EU_0001\"\\n' +\n '})\\n')\n \n // console.log(instrument)\n \n check(instrument.data() === 'ExtObj<instrument>')\n check((instrument.value as DdbExtObjValue).version === 0)\n check((instrument.value as DdbExtObjValue).data.length)\n \n check(\n await ddb.invoke<string>('typestr', [instrument]) === \n 'INSTRUMENT')\n \n const ext_table = await ddb.eval<DdbTableObj>('select * from loadTable(\"dfs://db\", \"pt\")')\n \n check(ext_table.data()[0].value === 'ExtObj<instrument>')\n \n const market_data = await ddb.eval(\n 'aod = 2025.07.01\\n' +\n 'parseMktData({\\n' +\n ' \"mktDataType\": \"Curve\",\\n' +\n ' \"curveType\": \"IrYieldCurve\",\\n' +\n ' \"version\": 0, \\n' +\n ' \"referenceDate\": aod,\\n' +\n ' \"currency\": \"CNY\",\\n' +\n ' \"dayCountConvention\": \"Actual365\",\\n' +\n ' \"compounding\": \"Continuous\",\\n' +\n ' \"interpMethod\": \"LinearInterp\",\\n' +\n ' \"extrapMethod\": \"FlatExtrap\",\\n' +\n ' \"dates\":[2025.07.07,2025.07.10,2025.07.17,2025.07.24,2025.08.04,2025.09.03,2025.10.09,2026.01.05,\\n' +\n ' 2026.04.03,2026.07.03,2027.01.04,2027.07.05,2028.07.03],\\n' +\n ' \"values\":[0.015785,0.015931,0.016183,0.016381,0.016493,0.016503,0.016478,0.016234,0.016321,\\n' +\n ' 0.016378,0.015508,0.015185,0.014901],\\n' +\n ' \"settlement\": aod+2\\n' +\n '})\\n')\n \n check(market_data.data() === 'ExtObj<market_data>')\n check((market_data.value as DdbExtObjValue).version === 0)\n \n // console.log(market_data)\n \n // --- 暂不支持上传 extobj 的 any vector\n // console.log(\n // await ddb.invoke<any>('print', [ext_table.value[3]]))\n \n // console.log(\n // ext_table.value[3].data())\n}\n\n\nasync function test_ticket (ddb: DDB) {\n console.log('测试 ticket 登录')\n \n const ticket = await ddb.invoke('getAuthenticatedUserTicket', undefined, {\n node: await ddb.invoke<string>('getControllerAlias')\n })\n \n let ddb_ = new DDB(url, {\n ...ddb_options,\n ticket,\n username: 'unused',\n password: 'unused'\n })\n \n check(\n (await ddb_.invoke<[bigint, string]>('getCurrentSessionAndUser'))\n [1],\n 'admin')\n \n await ddb_.login_by_ticket()\n \n ddb_.disconnect()\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AAEvH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EACH,GAAG,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACpF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAEvD,YAAY,EAC9B,YAAY,EAAE,QAAQ,EACzB,MAAM,YAAY,CAAA;AAGnB,mBAAmB,EAAE,CAAA;AAGrB,2CAA2C;AAE3C,MAAM,GAAG,GAAG,wBAAiC,CAAA;AAC7C,iDAAiD;AACjD,gDAAgD;AAChD,6CAA6C;AAE7C,MAAM,WAAW,GAAe,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAG,CAAA;AAGvE,MAAM,IAAI,GAAG,KAAK,CAAA;AAClB,KAAK,UAAU,SAAS,CAAE,GAAQ;AAElC,CAAC;AAGD,CAAC;AAAA,CAAC,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAEjC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEnC,KAAK,MAAM,CAAC,IACR,IAAI,CAAC,CAAC;QACF,CAAC,SAAS,CAAC;QACf,CAAC,CAAC;YACE,aAAa;YACb,UAAU;YACV,iBAAiB;YACjB,qBAAqB;YACrB,WAAW;YACX,UAAU;YACV,SAAS;YACT,cAAc;YACd,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,WAAW;YAEX,mBAAmB;YACnB,eAAe;SAClB;QAED,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;IAEhB,GAAG,CAAC,UAAU,EAAE,CAAA;IAEhB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AACrC,CAAC,CAAC,EAAE,CAAA;AAIJ,SAAS,aAAa;IAClB,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AAC1E,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ,EAAE,IAAY;IAC9C,OAAO,IAAI,OAAO,CAAS,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,IAAI,CAAC;YACD,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,MAAM,GAAG,CAAC,IAAI,CACV,SAAS,IAAI,GAAG,EAChB;gBACI,QAAQ,CAAE,EAAE,IAAI,EAAE,IAAI,EAAE;oBACpB,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChC,QAAQ,GAAG,IAAI,CAAA;wBACf,OAAO,CAAC,IAAI,CAAC,CAAA;oBACjB,CAAC;gBACL,CAAC;aACJ,CAAC,CAAA;YAEN,IAAI,CAAC,QAAQ;gBACT,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACpB,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjB,IAAI,KAAyB,CAAA;IAE7B,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QACd,KAAK,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,kBAAkB,CAAC,CAAA;AACxD,CAAC;AAGD,KAAK,UAAU,qBAAqB,CAAE,GAAQ;IAC1C,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAEpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACpB,IAAI,CAAC,UAAU,EAAE,CAAA;IAEjB,IAAI,KAAyB,CAAA;IAE7B,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QACd,KAAK,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,kBAAkB,CAAC,CAAA;AACxD,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;IAEvD,MAAM,aAAa,GAAG,MAAM,CAAA;IAC5B,MAAM,YAAY,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE,EAAE,CAAA;IAErD,IAAI,cAAgC,CAAA;IAEpC,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,cAAc,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,CAAA;IACtB,MAAM,CAAC,cAAc,YAAY,gBAAgB,CAAC,CAAA;IAClD,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,aAAa,EAAE,CAAC,CAAA;IAC/F,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAA;IAClD,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IACxC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAA;IACtD,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IAGnD,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACvC,IAAI,gBAAoC,CAAA;IACxC,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QACvB,OAAO,CAAC,UAAU,EAAE,CAAA;QACpB,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,gBAAgB,GAAG,KAAK,CAAA;IAC5B,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxB,MAAM,CAAC,gBAAgB,YAAY,kBAAkB,CAAC,CAAA;IACtD,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAG5C,oCAAoC;IACpC,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAA;IAChD,IAAI,iBAAqC,CAAA;IACzC,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,iBAAiB,GAAG,KAAK,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACzB,MAAM,CAAC,iBAAiB,YAAY,kBAAkB,CAAC,CAAA;IACvD,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,YAAY,wBAAwB,CAAC,CAAA;AAClG,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAE/B,MAAM,GAAG,GAAG,wBAAwB,CAAA;IAEpC,MAAM,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA;IAEnD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACvB,IAAI,YAAY,CAAC;YACb,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,EAAE,CAAC;SAClB,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAGD,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,EAAY;IACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpB,MAAM,CAAC,GAAG,GAAG,CAAA;IAEb,MAAM,GAAG,CAAC,IAAI,CACV,EAAE,CAAC,CAAC;QACA,SAAS;YACT,aAAa;YACb,qCAAqC;YACrC,2BAA2B;YAC3B,QAAQ;YACR,oHAAoH;YACpH,8BAA8B;YAC9B,qBAAqB;YACrB,8BAA8B;YAC9B,oBAAoB;YACpB,KAAK;QACT,CAAC;YACG,SAAS;gBACT,yCAAyC;gBACzC,kBAAkB;gBAClB,4BAA4B;gBAC5B,4BAA4B;gBAC5B,+CAA+C;gBAC/C,+CAA+C;gBAC/C,kBAAkB;gBAClB,wBAAwB;gBACxB,aAAa;gBACb,kCAAkC;gBAClC,cAAc;gBACd,iCAAiC;gBACjC,qBAAqB;gBACrB,8BAA8B;gBAC9B,oBAAoB;gBACpB,KAAK,CACZ,CAAA;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,IAAI,KAAK,GAAG,IAAI,CAAA;IAEhB,IAAI,OAAO,GAAG,KAAK,EAAQ,CAAA;IAE3B,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;QACpB,GAAG,WAAW;QACd,SAAS,EAAE;YACP,KAAK,EAAE,QAAQ;YACf,OAAO,CAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE;gBAC7C,IAAI,KAAK;oBACL,MAAM,KAAK,CAAA;gBAEf,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;gBAE5C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAE3B,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAA;oBAC3C,KAAK,GAAG,KAAK,CAAA;gBACjB,CAAC;;oBACG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAE3B,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;gBAE9C,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;gBACzB,MAAM,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAA;gBACZ,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;gBAE1B,UAAU,IAAI,IAAI,CAAC,MAAM,CAAA;gBAEzB,IAAI,UAAU,KAAK,CAAC,GAAG,EAAE;oBACrB,OAAO,CAAC,OAAO,EAAE,CAAA;YACzB,CAAC;SACJ;KACJ,CAAC,CAAA;IAEF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IAEpB,MAAM,GAAG,CAAC,IAAI,CACV,OAAO,CAAC,IAAI;QACZ,IAAI;QACJ,mBAAmB;QACnB,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,2CAA2C;QAC3C,mDAAmD;QACnD,yCAAyC;QACzC,cAAc;QACd,SAAS,CACZ,CAAA;IAED,MAAM,OAAO,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAGD,KAAK,UAAU,SAAS,CAAE,GAAQ;IAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAErB,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACpD,MAAM,cAAc,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IAGpD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC1B,KAAK,CACD,QAAQ,CACJ,CACI,MAAM,GAAG,CAAC,IAAI,CAAiB,UAAU,CAAC,CAC7C,CAAC,KAAK,CACV,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAC/C,CAAC;AAGD,KAAK,UAAU,cAAc,CAAE,GAAQ,EAAE,OAAe;IACpD,MAAM,IAAI,GAAG,kBAAkB,OAAO,gCAAgC,CAAA;IAEtE,MAAM,CACF,OAAO,CACH,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,EAAE,MAAM,EAAE,KAAK,EAAE,CACpB,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,CACI,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CACtB,CAAA;AACL,CAAC;AAGD,KAAK,UAAU,UAAU,CAAE,GAAQ;IAC/B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IAE3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAA;IAE9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CACrB,2BAA2B;QAC3B,uBAAuB;QACvB,2BAA2B;QAC3B,MAAM,CACT,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA,CAAE,mCAAmC;IACzE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAA;IAErB,sBAAsB;IACtB,eAAe;IACf,oCAAoC;IACpC,kDAAkD;IAClD,yHAAyH;IACzH,iBAAiB;IACjB,QAAQ;IACR,IAAI;IAEJ,kBAAkB;IAClB,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,CACF,OAAO,CACH,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,EAAE,MAAM,EAAE,KAAK,EAAE,CACpB,KAAK,oCAAoC,CAC7C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,GAAG,CAAC,IAAI,CAAe,SAAS,EAAE;QACpC,IAAI,MAAM,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;SAChB,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,MAAM,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;SAChB,CAAC;KACL,CAAC,CAAA;IAEF,MAAM,CAAC,CACH,MAAM,GAAG,CAAC,IAAI,CAAkB,GAAG,CAAC,CACvC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;IAGzB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAE5B,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,qCAAqC;QACrC,kBAAkB;QAClB,uCAAuC;QACvC,oBAAoB;QACpB,2CAA2C;QAC3C,+CAA+C;QAC/C,mBAAmB;QACnB,uDAAuD;QACvD,IAAI;QACJ,oCAAoC;QACpC,0CAA0C,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAA;IAE3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAEhC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;IAE9F,MAAM,CAAC,KAAK,KAAK,kDAAkD,CAAC,CAAA;IAEpE,iEAAiE;IACjE,MAAM,CACF,CAAC,MAAM,GAAG,CAAC,IAAI,CAAe,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAClE,yCAAyC,CAC5C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CACrB,uCAAuC,CAC1C,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAA;IAEzG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAc,gDAAgD,CAAC,CAAA;IAC3F,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAA;IAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAA;IACrE,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,wBAAwB,CAAC,CAAA;IAEtD,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAExC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAE7B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,GAAG,CAAC,IAAI,CAAa,0DAA0D,CAAC;KACzF,CAAC,CAAA;AACN,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAE7B,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;YACR,CAAC,EAAE;gBACC,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,IAAI;aACV;YACD,CAAC,EAAE,wBAAwB;SAC9B,CAAC,CAAC,CAAC,CACP,CAAA;IAED,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CACxD,CAAA;IAED,OAAO,CAAC,GAAG,CACP,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC1B,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE;gBACF,IAAI,EAAE,6CAA6C;aACtD;SACJ,CAAC;KACL,CAAC,CACL,CAAA;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAE,GAAQ;IACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CACtB,qEAAqE;QACrE,4HAA4H;QAC5H,sCAAsC;QACtC,qBAAqB;QACrB,4BAA4B;QAC5B,wBAAwB;QACxB,qBAAqB;QACrB,KAAK;QACL,uCAAuC;QACvC,mDAAmD;QACnD,wBAAwB;QACxB,yCAAyC;QACzC,gLAAgL;QAChL,iBAAiB;QACjB,oBAAoB;QACpB,+KAA+K;QAC/K,iBAAiB;QACjB,oBAAoB;QACpB,IAAI;QACJ,iDAAiD,CACpD,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7B,eAAe,CACX,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EACtB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;AACnB,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAExB,MAAM,GAAG,CAAC,IAAI,CACV,qBAAqB;QACrB,qBAAqB;QACrB,gBAAgB;QAChB,KAAK,CACR,CAAA;IAED,MAAM,GAAG,GAAG,gCAAgC,CAAA;IAE5C,MAAM,CACF,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,KAAK;YACR,CAAC,EAAE;gBACC,CAAC,EAAE,IAAI;gBACP,CAAC,EAAE,IAAI;aACV;YACD,CAAC,EAAE,GAAG;SACT,CAAC,CAAC,CAAC;SACC,CAAC,KAAK,GAAG,CACjB,CAAA;IAED,MAAM,GAAG,CAAC,OAAO,CACb,6BAA6B;QAC7B,wBAAwB;QACxB,0BAA0B;QAC1B,iBAAiB;QACjB,wBAAwB;QACxB,6CAA6C;QAC7C,wCAAwC;QACxC,mDAAmD;QACnD,mCAAmC;QACnC,yCAAyC;QACzC,4EAA4E;QAC5E,yFAAyF;QACzF,yEAAyE;QACzE,+GAA+G;QAC/G,8BAA8B;QAC9B,0BAA0B;QAC1B,kCAAkC;QAClC,kGAAkG;QAClG,kDAAkD;QAClD,yCAAyC;QACzC,0CAA0C;QAC1C,6CAA6C,CAChD,CAAA;IAED,MAAM;IACF,yCAAyC;IACzC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAe,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAClC,CAAA;IAED,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,4BAA4B;QAC5B,qBAAqB;QACrB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE/B,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;AAC7B,CAAC;AAGD,KAAK,UAAU,iBAAiB,CAAE,GAAQ;IACtC,kBAAkB;IAClB,MAAM,GAAG,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAA;IACrG,iFAAiF;IAEjF,MAAM;IACF,sBAAsB;IACtB,MAAM,GAAG,CAAC,MAAM,CACZ,aAAa,EACb;QACI,GAAG;QAEH,KAAK;QACL,IAAI,QAAQ,CAAC;YACT,MAAM;YACN,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE3B,MAAM;YACN,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM;YACN,IAAI,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACvC,CAAC;KACL,CACJ,KAAK,CAAC,CACV,CAAA;AACL,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAC7B,sBAAsB;QACtB,gCAAgC;QAChC,uCAAuC;QACvC,qBAAqB;QACrB,+BAA+B;QAC/B,yBAAyB;QACzB,wBAAwB;QACxB,+BAA+B;QAC/B,6CAA6C;QAC7C,6BAA6B;QAC7B,+BAA+B;QAC/B,+BAA+B;QAC/B,MAAM,CAAC,CAAA;IAEX,0BAA0B;IAE1B,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,oBAAoB,CAAC,CAAA;IACjD,KAAK,CAAE,UAAU,CAAC,KAAwB,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;IACzD,KAAK,CAAE,UAAU,CAAC,KAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvD,KAAK,CACD,MAAM,GAAG,CAAC,MAAM,CAAS,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,YAAY,CAAC,CAAA;IAEjB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAc,2CAA2C,CAAC,CAAA;IAE1F,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAA;IAEzD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,IAAI,CAC9B,oBAAoB;QACpB,kBAAkB;QAClB,+BAA+B;QAC/B,oCAAoC;QACpC,sBAAsB;QACtB,6BAA6B;QAC7B,0BAA0B;QAC1B,0CAA0C;QAC1C,oCAAoC;QACpC,uCAAuC;QACvC,qCAAqC;QACrC,yGAAyG;QACzG,oEAAoE;QACpE,mGAAmG;QACnG,iDAAiD;QACjD,2BAA2B;QAC3B,MAAM,CAAC,CAAA;IAEX,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,qBAAqB,CAAC,CAAA;IACnD,KAAK,CAAE,WAAW,CAAC,KAAwB,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;IAE1D,2BAA2B;IAE3B,iCAAiC;IACjC,eAAe;IACf,4DAA4D;IAE5D,eAAe;IACf,iCAAiC;AACrC,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAE3B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,4BAA4B,EAAE,SAAS,EAAE;QACrE,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,CAAS,oBAAoB,CAAC;KACvD,CAAC,CAAA;IAEF,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;QACpB,GAAG,WAAW;QACd,MAAM;QACN,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;KACrB,CAAC,CAAA;IAEF,KAAK,CACD,CAAC,MAAM,IAAI,CAAC,MAAM,CAAmB,0BAA0B,CAAC,CAAC,CAC5D,CAAC,CAAC,EACP,OAAO,CAAC,CAAA;IAEZ,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;IAE5B,IAAI,CAAC,UAAU,EAAE,CAAA;AACrB,CAAC;AAGD,KAAK,UAAU,WAAW,CAAE,GAAQ;IAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAErB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAElB,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,aAAa;IACb,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CACrB,oBAAoB;QACpB,kBAAkB,CAAC,CAAA;IAEvB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA;IAElB,IAAI,CAAC;QACD,MAAM,KAAK,CAAA;QAEX,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACpC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,UAAU,CAAC,CAAA;YACtE,SAAS,GAAG,IAAI,CAAA;QACpB,CAAC;;YACG,MAAM,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAA;IAE9D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["import { deepEqual, deepStrictEqual } from 'assert/strict'\n\nimport { assert, check, defer, inspect, MyProxy, ramdisk, set_inspect_options, WebSocketConnectionError } from 'xshell'\n\nimport { keywords } from './language.ts'\n\nimport {\n DDB, DdbConnectionError, DdbDatabaseError, DdbForm, DdbInt, DdbLong, DdbObj, DdbType, \n DdbVectorAny, DdbVectorDouble, DdbVectorSymbol, month2ms, DdbDurationUnit,\n type DdbStringObj, type DdbVectorAnyObj, type DdbDurationVectorValue, type DdbVectorObj, \n type DdbTableObj, DdbTimeStamp, type DdbDictObj, type DdbTableData, type DdbOptions,\n DdbVectorInt, DdbTable, type DdbExtObjValue\n} from './index.ts'\n\n\nset_inspect_options()\n\n\n// const fpd_root = import.meta.dirname.fpd\n\nconst url = 'ws://192.168.0.54:8848' as const\n// const url = 'ws://192.168.0.125:8848' as const\n// const url = 'ws://192.168.0.69:8902' as const\n// const url = 'ws://127.0.0.1:8848' as const\n\nconst ddb_options: DdbOptions = ramdisk ? { proxy: MyProxy.work } : { }\n\n\nconst repl = false\nasync function test_repl (ddb: DDB) {\n \n}\n\n\n;(async function test () {\n console.log('--- 测试开始 ---'.green)\n \n let ddb = new DDB(url, ddb_options)\n \n for (const t of\n repl ? \n [test_repl]\n : [\n test_keywords,\n test_types,\n test_reconnection,\n test_connection_error,\n test_ticket,\n test_print,\n test_time,\n test_streaming,\n test_error,\n test_invoke,\n test_append_table,\n test_cancel\n \n // test_iot_vector,\n // test_extobj,\n ]\n )\n await t(ddb)\n \n ddb.disconnect()\n \n console.log('--- 测试通过 ---'.green)\n})()\n\n\n\nfunction test_keywords () {\n check(new Set(keywords).size === keywords.length, 'keywords 中不能有重复的项')\n}\n\n\nasync function get_printed (ddb: DDB, code: string) {\n return new Promise<string>(async (resolve, reject) => {\n try {\n let resolved = false\n await ddb.eval(\n `print(${code})`,\n {\n listener ({ type, data }) {\n if (type === 'print' && !resolved) {\n resolved = true\n resolve(data)\n }\n }\n })\n \n if (!resolved)\n reject(new Error('未输出 print 消息'))\n } catch (error) {\n reject(error)\n }\n })\n}\n\n\nasync function test_reconnection (ddb: DDB) {\n let _ddb = new DDB(url, ddb_options)\n \n await _ddb.connect()\n _ddb.disconnect()\n \n let error: DdbConnectionError\n \n try {\n await _ddb.connect()\n } catch (_error) {\n error = _error\n }\n \n assert(error && error instanceof DdbConnectionError)\n}\n\n\nasync function test_connection_error (ddb: DDB) {\n let _ddb = new DDB(url, ddb_options)\n \n await _ddb.connect()\n _ddb.disconnect()\n \n let error: DdbConnectionError\n \n try {\n await _ddb.eval('1 + 1')\n } catch (_error) {\n error = _error\n }\n \n assert(error && error instanceof DdbConnectionError)\n}\n\n\nasync function test_error (ddb: DDB) {\n console.log('测试 DdbDatabaseError 和 DdbConnectionError')\n \n const error_message = '错误消息'\n const error_script = `throw ${error_message.quote()}`\n \n let database_error: DdbDatabaseError\n \n try {\n await ddb.eval(error_script)\n } catch (error) {\n database_error = error\n }\n \n assert(database_error)\n assert(database_error instanceof DdbDatabaseError)\n assert(database_error.message === `throw ${error_message.quote('double')} => ${error_message}`)\n assert(database_error.name === 'DdbDatabaseError')\n assert(database_error.url === ddb.url)\n assert(database_error.type === 'script')\n assert(database_error.options.script === error_script)\n assert(database_error.stack.includes('test_error'))\n \n \n let ddbtest = new DDB(url, ddb_options)\n let connection_error: DdbConnectionError\n try {\n await ddbtest.connect()\n ddbtest.disconnect()\n await ddbtest.eval('1')\n } catch (error) {\n connection_error = error\n }\n \n assert(connection_error)\n assert(connection_error instanceof DdbConnectionError)\n assert(connection_error.url === ddbtest.url)\n \n \n // --- 首次连接失败也会抛出 DdbConnectionError\n let ddbtest2 = new DDB('ws://dolphindb123.com/')\n let connection_error2: DdbConnectionError\n try {\n await ddbtest2.connect()\n } catch (error) {\n connection_error2 = error\n }\n \n assert(connection_error2)\n assert(connection_error2 instanceof DdbConnectionError)\n assert(connection_error2.cause && connection_error2.cause instanceof WebSocketConnectionError)\n}\n\n\nasync function test_print (ddb: DDB) {\n console.log('测试 print message')\n \n const str = 'test print message\\n中文'\n \n assert(await get_printed(ddb, str.quote()) === str)\n \n console.log('测试 verbose 输出')\n \n let vddb = new DDB(url, { ...ddb_options, verbose: true })\n \n await vddb.call('typestr', [\n new DdbVectorAny([\n new DdbVectorSymbol(['a', 'b', 'a', 'b', 'a', 'b']),\n new DdbLong(3n)\n ])\n ])\n \n vddb.disconnect()\n}\n\n\nasync function test_streaming (ddb: DDB, ha?: boolean) {\n console.log('测试流数据')\n \n const n = 100\n \n await ddb.eval(\n ha ?\n 'try {\\n' +\n ' try {\\n' +\n \" dropStreamTable('prices')\\n\" +\n ' } catch (error) { }\\n' +\n ' \\n' +\n \" haStreamTable(11, table(10000:0, ['time', 'stock', 'price'], [TIMESTAMP, SYMBOL, DOUBLE]), 'prices', 100000)\\n\" +\n \" print('prices 流表创建成功')\\n\" +\n '} catch (error) {\\n' +\n \" print('prices 流表创建失败')\\n\" +\n ' print(error)\\n' +\n '}\\n'\n :\n 'try {\\n' +\n \" if (!defined('prices', SHARED)) {\\n\" +\n ' share(\\n' +\n ' streamTable(\\n' +\n ' 10000:0,\\n' +\n \" ['time', 'stock', 'price'],\\n\" +\n ' [TIMESTAMP, SYMBOL, DOUBLE]\\n' +\n ' ),\\n' +\n \" 'prices'\\n\" +\n ' )\\n' +\n \" print('prices 流表创建成功')\\n\" +\n ' } else\\n' +\n \" print('prices 流表已存在')\\n\" +\n '} catch (error) {\\n' +\n \" print('prices 流表创建失败')\\n\" +\n ' print(error)\\n' +\n '}\\n'\n )\n \n let total_rows = 0\n \n let first = true\n \n let promise = defer<void>()\n \n let sddb = new DDB(url, {\n ...ddb_options,\n streaming: {\n table: 'prices',\n handler ({ error, data: _data, time, id, window }) {\n if (error)\n throw error\n \n const { columns, data, name, types } = _data\n \n assert(Array.isArray(data))\n \n if (first) {\n assert(data.length === 0, '流订阅应该返回 schema')\n first = false\n } else\n assert(data.length > 0)\n \n deepEqual(columns, ['time', 'stock', 'price'])\n \n assert(name === 'prices')\n assert(typeof id === 'bigint')\n assert(time)\n assert(types.length === 3)\n \n total_rows += data.length\n \n if (total_rows === n * 10)\n promise.resolve()\n },\n }\n })\n \n await sddb.connect()\n \n await ddb.eval(\n `n = ${n}\\n` +\n '\\n' +\n 'for (i in 0..9)\\n' +\n ' append!(\\n' +\n ' prices,\\n' +\n ' table([\\n' +\n ' (now() + 0..(n-1)) as time,\\n' +\n \" take(['MSFT', 'FUTU'], n) as stock,\\n\" +\n ' (0..(n-1) \\\\ 10) as price\\n' +\n ' ])\\n' +\n ' )\\n'\n )\n \n await promise\n console.log('流数据已全部收齐')\n \n sddb.disconnect()\n}\n\n\nasync function test_time (ddb: DDB) {\n console.log('测试时间显示')\n \n await time2str_equal(ddb, '2022-09-01T14:30:01.095')\n await time2str_equal(ddb, '2022-07-01T00:00:00.000')\n await time2str_equal(ddb, '2022-07-02T00:00:00.000')\n await time2str_equal(ddb, '2022-06-30T00:00:00.000')\n await time2str_equal(ddb, '2022-12-22T16:57:30.248')\n \n \n console.log('测试 month2ms')\n check(\n month2ms(\n (\n await ddb.eval<DdbObj<number>>('2022.12M')\n ).value\n ) === new Date('2022.12.01').valueOf())\n}\n\n\nasync function time2str_equal (ddb: DDB, timestr: string) {\n const code = `temporalParse('${timestr}', 'yyyy-MM-ddTHH:mm:sss.SSS')`\n \n assert(\n inspect(\n await ddb.eval(code),\n { colors: false }\n ).slice('timestamp('.length, -1) === \n (\n await get_printed(ddb, code)\n ).replace('T', ' ')\n )\n}\n\n\nasync function test_types (ddb: DDB) {\n console.log('测试通过 ddb.call 调用 getNodeAlias 函数')\n console.log(await ddb.call('getNodeAlias'))\n \n console.log('测试 ddb.call 上传不同类型的变量')\n const result0 = await ddb.call('typestr', [new DdbInt(1)])\n console.log(result0)\n assert(result0.form === DdbForm.scalar)\n assert(result0.type === DdbType.string)\n assert(result0.value === 'INT')\n \n console.log('测试 ddb.call 上传不同类型的变量')\n const result1 = await ddb.call('typestr', [new DdbVectorDouble([0.1, 0.2, 0.3])])\n console.log(result1)\n assert(result1.form === DdbForm.scalar)\n assert(result1.type === DdbType.string)\n assert(result1.value === 'FAST DOUBLE VECTOR')\n \n console.log('测试 array vector')\n const av = await ddb.eval(\n 'av = array(INT[], 0, 3)\\n' +\n 'append!(av, [1..4])\\n' +\n 'append!(av, [1..70000])\\n' +\n 'av\\n'\n )\n \n console.log(av)\n assert(av.form === DdbForm.vector)\n assert(av.type === DdbType.int + 64) // array vector 的 type 比较特殊,需要偏移 64\n assert(av.rows === 2)\n \n // 测试 array vector 格式化\n // console.log(\n // await ddb.eval<DdbVectorObj>(\n // 'av = array(DECIMAL128(2)[], 0, 1)\\n' +\n // 'append!(av, [[92233720368547758.11, NULL, 100000000000000, NULL, -92233720368547758, -100000000000000]])\\n' +\n // 'av\\n'\n // )\n // )\n \n // 测试 Invalid Date\n await ddb.upload(['x'], [new DdbTimeStamp('2024.11.11')])\n \n assert(\n inspect(\n await ddb.eval('x'), \n { colors: false }\n ) === 'timestamp(2024.11.11 00:00:00.000)'\n )\n \n console.log('测试大数据')\n let bigarr = new Float64Array(10)\n bigarr.fill(0.5)\n \n await ddb.call<DdbStringObj>('typestr', [\n new DdbObj({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: bigarr.length,\n cols: 1,\n value: bigarr\n })\n ])\n \n await ddb.upload(['a'], [\n new DdbObj({\n form: DdbForm.vector,\n type: DdbType.double,\n length: 0,\n rows: bigarr.length,\n cols: 1,\n value: bigarr\n })\n ])\n \n assert((\n await ddb.eval<DdbVectorDouble>('a')\n ).rows === bigarr.length)\n \n \n console.log('测试 datasource')\n \n const ds = (await ddb.eval<DdbVectorAnyObj>(\n 'db_path = \"dfs://test-datasource\"\\n' + \n 'tb_name = \"db\"\\n' + \n 'if (!existsTable(db_path, tb_name))\\n' + \n ' createTable(\\n' + \n ' database(db_path, VALUE , [1]),\\n' +\n ' table(1:0,`id`name, [INT, STRING]),\\n' +\n ' tb_name\\n' +\n ' ).append!(table(1 2 as id, `str1`str2 as name))\\n' +\n '\\n' +\n 'tb = loadTable(db_path, tb_name)\\n' +\n 'sqlDS(<select * from tb where id = 1>)\\n'\n )).value[0] as DdbStringObj\n \n const { type, form, value } = ds\n \n assert(type === DdbType.datasource && form === DdbForm.scalar, '返回的 DdbObj 具有正确的 type 和 form')\n \n assert(value === 'DataSource< select [7] * from tb where id == 1 >')\n \n // 如果直接构造 DdbObj Datasource,将其送入 ddb.call, ddb将仍然认为送入的是一个 STRING \n assert(\n (await ddb.call<DdbStringObj>('typestr', [ds])).value === 'STRING', \n '从 js 构建的 Datasource DdbObj 会被识别为 STRING'\n )\n \n console.log('测试 pair<duration>')\n const dp = await ddb.eval<DdbVectorObj<DdbDurationVectorValue>>(\n 'pair(duration(\"20d\"), duration(\"2H\"))'\n ) \n \n console.log(dp)\n assert(dp.type === DdbType.duration, 'dp 的返回值应该为 Duration')\n assert(dp.value[0].data === 20 && dp.value[0].unit === DdbDurationUnit.d, 'pair<duration> 的 value 应该已解析')\n \n console.log('测试 void vector')\n const table = await ddb.eval<DdbTableObj>('select *, NULL as val from table(1..100 as id)')\n const { value: [ints, voids] } = table\n \n console.log(voids)\n assert(voids.rows === ints.rows, 'void vector 应该具有正常的 vector length')\n assert(voids.length === 10, 'void vector 应该具有正确的数据长度')\n assert(voids.value === null, 'void vector 的值应该为 null')\n \n await ddb.upload(['voidtable'], [table])\n \n console.log('测试 compress 类型')\n \n await ddb.upload(['c'], [\n await ddb.eval<DdbDictObj>('dict([\"a\", \"b\", \"c\"], [compress([1, 2, 3]), 123, \"bbb\"])')\n ])\n}\n\n\nasync function test_from_stdjson (ddb: DDB) {\n console.log('测试 fromStdJson')\n \n console.log(\n await ddb.call('fromStdJson', [JSON.stringify({\n a: 1234,\n b: 'aaa',\n c: {\n e: 1234,\n f: 4321\n },\n f: 'blabla\\n中文\\u4e2d\\u6587'\n })])\n )\n \n console.log(\n await ddb.call('fromStdJson', [JSON.stringify(1234)])\n )\n \n console.log(\n await ddb.call('fromStdJson', [\n JSON.stringify({\n data: {\n code: 'select * from kline where secid == \"230012\"'\n }\n })\n ])\n )\n}\n\nasync function test_iot_vector (ddb: DDB) {\n const obj = await ddb.eval(\n 'if(existsDatabase(\"dfs://testIOT\")) dropDatabase(\"dfs://testIOT\")\\n' +\n 'create database \"dfs://testIOT\" partitioned by HASH([INT, 40]),RANGE(2020.01.01 2022.01.01 2025.01.01), engine=\\'TSDB\\'\\n' +\n 'create table \"dfs://testIOT\".\"pt\"(\\n' +\n ' deviceId INT,\\n' +\n ' timestamp TIMESTAMP,\\n' +\n ' location SYMBOL,\\n' +\n ' value IOTANY,\\n' +\n ')\\n' +\n 'partitioned by deviceId, timestamp,\\n' +\n 'sortColumns=[`deviceId, `location, `timestamp],\\n' +\n 'latestKeyCache=true;\\n' +\n 'pt = loadTable(\"dfs://testIOT\",\"pt\");\\n' +\n 't=table(take(1..100000,100000) as deviceId, take(now()+(0..100), 100000) as timestamp, take(\"bb\"+string(0..100), 100000) as location, take(int(1..100000),100000) as value)\\n' +\n 'pt.append!(t)\\n' +\n 'flushTSDBCache()\\n' +\n 't=table(take(100001..200000,100000) as deviceId, take(now()+(0..100), 100000) as timestamp,take(lpad(string(1), 8, \"0\"), 100000) as location, rand(200.0, 100000) as value)\\n' +\n 'pt.append!(t)\\n' +\n 'flushTSDBCache()\\n' +\n '\\n' +\n 'select * from loadTable(\"dfs://testIOT\",\"pt\")\\n'\n )\n \n console.log('obj:', obj)\n console.log('data:', obj.data())\n await ddb.upload(['a'], [obj])\n await ddb.execute('print(a)')\n deepStrictEqual(\n await ddb.execute('a'),\n obj.data())\n}\n\n\nasync function test_invoke (ddb: DDB) {\n console.log('测试 invoke')\n \n await ddb.eval(\n 'def echo (data) {\\n' +\n // '\tprint(data)\\n' +\n '\treturn data\\n' +\n '}\\n'\n )\n \n const str = 'blabla\\n中文\"\\u4e2d\\u6587\"\\\\\\\"\\\"'\n \n assert(\n (await ddb.invoke('echo', [{\n a: 1234,\n b: 'aaa',\n c: {\n e: 1234,\n f: 4321\n },\n f: str\n }]))\n .f === str\n )\n \n await ddb.execute(\n 'cbool = true false false;\\n' +\n \"cchar = 'a' 'b' 'c';\\n\" +\n 'cshort = 122h 32h 45h;\\n' +\n 'cint = 1 4 9;\\n' +\n 'clong = 17l 39l 72l;\\n' +\n 'cdate = 2013.06.13 2015.07.12 2019.08.15;\\n' +\n 'cmonth = 2011.08M 2014.02M 2019.07M;\\n' +\n 'ctime = 04:15:51.921 09:27:16.095 11:32:28.387;\\n' +\n 'cminute = 03:25m 08:12m 10:15m;\\n' +\n 'csecond = 01:15:20 04:26:45 09:22:59;\\n' +\n 'cdatetime = 1976.09.10 02:31:42 1987.12.13 11:58:31 1999.12.10 20:49:23;\\n' +\n 'ctimestamp = 1997.07.20 21:45:16.339 2002.11.26 12:40:31.783 2008.08.10 23:54:27.629;\\n' +\n 'cnanotime = 01:25:33.365869429 03:47:25.364828475 08:16:22.748395721;\\n' +\n 'cnanotimestamp = 2005.09.23 13:30:35.468385940 2007.12.11 14:54:38.949792731 2009.09.30 16:39:51.973463623;\\n' +\n 'cfloat = 7.5f 0.79f 8.27f;\\n' +\n 'cdouble = 5.7 7.2 3.9;\\n' +\n 'cstring = \"hello\" \"hi\" \"here\";\\n' +\n 'cdatehour = datehour(2012.06.15 15:32:10.158 2012.06.15 17:30:10.008 2014.09.29 23:55:42.693);\\n' +\n 'cblob = blob(\"dolphindb\" \"gaussdb\" \"goldendb\")\\n' +\n 'cdecimal32 = decimal32(12 17 135.2,2)\\n' +\n 'cdecimal64 = decimal64(18 24 33.878,4)\\n' +\n 'cdecimal128 = decimal128(18 24 33.878,18)\\n'\n )\n \n assert(\n // await ddb.invoke<DdbTableData>('defs')\n (await ddb.invoke<DdbTableData>('objs', [true], { table: 'full' }))\n .columns.includes('shared')\n )\n \n const [a, b] = await ddb.invoke<[number, number]>(\n 'def foo (a = 1, b = 2) {\\n' +\n ' return (a, b)\\n' +\n '}\\n', \n [undefined, new DdbInt(3)])\n \n check(a === 1 && b === 3)\n}\n\n\nasync function test_append_table (ddb: DDB) {\n // 在连接对应的会话中加载或创建表\n await ddb.execute('t = table(1..10 as id, take([\"A001\", \"B001\"], 10) as sym, rand(10.0, 10) as val)')\n // await ddb.execute('t = loadTable(database(\"dfs://path-to-db\"), \"table_name\")')\n \n assert(\n // 使用 tableInsert 插入数据\n await ddb.invoke<number>(\n 'tableInsert',\n [\n 't',\n \n // 数据\n new DdbTable([\n // 第一列\n new DdbVectorInt([1, 2, 3]),\n \n // 第二列\n new DdbVectorSymbol(['a', 'b', 'c']),\n \n // 第三列\n new DdbVectorDouble([1.1, 1.2, 1.3]),\n ])\n ]\n ) === 3\n )\n}\n\n\nasync function test_extobj (ddb: DDB) {\n const instrument = await ddb.eval(\n 'parseInstrument({ \\n' +\n ' \"productType\": \"Option\",\\n' +\n ' \"optionType\": \"EuropeanOption\",\\n' +\n ' \"version\": 0,\\n' +\n ' \"instrumentId\": \"0001\",\\n' +\n ' \"nominal\": 100.0,\\n' +\n ' \"strike\": 100.0,\\n' +\n ' \"maturity\": 2022.08.09,\\n' +\n ' \"dayCountConvention\": \"ActualActual\",\\n' +\n ' \"payoffType\": \"Call\",\\n' +\n ' \"priceCurrency\": \"CNY\",\\n' +\n ' \"underlying\": \"EU_0001\"\\n' +\n '})\\n')\n \n // console.log(instrument)\n \n check(instrument.data() === 'ExtObj<instrument>')\n check((instrument.value as DdbExtObjValue).version === 0)\n check((instrument.value as DdbExtObjValue).data.length)\n \n check(\n await ddb.invoke<string>('typestr', [instrument]) === \n 'INSTRUMENT')\n \n const ext_table = await ddb.eval<DdbTableObj>('select * from loadTable(\"dfs://db\", \"pt\")')\n \n check(ext_table.data()[0].value === 'ExtObj<instrument>')\n \n const market_data = await ddb.eval(\n 'aod = 2025.07.01\\n' +\n 'parseMktData({\\n' +\n ' \"mktDataType\": \"Curve\",\\n' +\n ' \"curveType\": \"IrYieldCurve\",\\n' +\n ' \"version\": 0, \\n' +\n ' \"referenceDate\": aod,\\n' +\n ' \"currency\": \"CNY\",\\n' +\n ' \"dayCountConvention\": \"Actual365\",\\n' +\n ' \"compounding\": \"Continuous\",\\n' +\n ' \"interpMethod\": \"LinearInterp\",\\n' +\n ' \"extrapMethod\": \"FlatExtrap\",\\n' +\n ' \"dates\":[2025.07.07,2025.07.10,2025.07.17,2025.07.24,2025.08.04,2025.09.03,2025.10.09,2026.01.05,\\n' +\n ' 2026.04.03,2026.07.03,2027.01.04,2027.07.05,2028.07.03],\\n' +\n ' \"values\":[0.015785,0.015931,0.016183,0.016381,0.016493,0.016503,0.016478,0.016234,0.016321,\\n' +\n ' 0.016378,0.015508,0.015185,0.014901],\\n' +\n ' \"settlement\": aod+2\\n' +\n '})\\n')\n \n check(market_data.data() === 'ExtObj<market_data>')\n check((market_data.value as DdbExtObjValue).version === 0)\n \n // console.log(market_data)\n \n // --- 暂不支持上传 extobj 的 any vector\n // console.log(\n // await ddb.invoke<any>('print', [ext_table.value[3]]))\n \n // console.log(\n // ext_table.value[3].data())\n}\n\n\nasync function test_ticket (ddb: DDB) {\n console.log('测试 ticket 登录')\n \n const ticket = await ddb.invoke('getAuthenticatedUserTicket', undefined, {\n node: await ddb.invoke<string>('getControllerAlias')\n })\n \n let ddb_ = new DDB(url, {\n ...ddb_options,\n ticket,\n username: 'unused',\n password: 'unused'\n })\n \n check(\n (await ddb_.invoke<[bigint, string]>('getCurrentSessionAndUser'))\n [1],\n 'admin')\n \n await ddb_.login_by_ticket()\n \n ddb_.disconnect()\n}\n\n\nasync function test_cancel (ddb: DDB) {\n console.log('测试取消作业')\n \n let t = Date.now()\n \n let cancelled = false\n \n // 完整执行需要 5 秒\n const ptask = ddb.execute(\n 'for (i in 0..50)\\n' +\n ' sleep(100)\\n')\n \n await ddb.cancel()\n \n try {\n await ptask\n \n throw new Error('不应该执行成功')\n } catch (error) {\n if (error instanceof DdbDatabaseError) {\n check(error.message.includes('=> The task was cancelled'), '作业应该取消成功')\n cancelled = true\n } else\n throw error\n }\n \n check(cancelled && Date.now() - t < 1000, '取消作业成功时时间应该小于 1 秒')\n \n console.log('测试取消作业成功')\n}\n\n"]}
|