diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9eb74891..4dd88102 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,3 +28,5 @@ jobs: - name: Build for canary run: | bun run build:canary + env: + NODE_OPTIONS: --max-old-space-size=10240 --expose-gc diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 23b69cf5..a23c5759 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -37,6 +37,7 @@ jobs: run: bun run build:canary env: VITE_PORTAL_GATEWAY_BASE_URL: 'https://m.longbridge.xyz' + NODE_OPTIONS: --max-old-space-size=10240 --expose-gc - name: Upload to Aliyun OSS run: | diff --git a/.gitignore b/.gitignore index e299a36c..71016c25 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ docs/superpowers # generated at build time by fetch-mcp-tools plugin docs/.vitepress/data/mcp-tools.json +docs/.vitepress/.temp/ diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 8919cbc9..f466d247 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -38,6 +38,7 @@ export default defineConfig( metaChunk: true, ignoreDeadLinks: true, base: '/', + buildConcurrency: 10, srcExclude: ['README.md', ...regionSrcExclude], rewrites: rewriteMarkdownPath, @@ -180,7 +181,7 @@ export default defineConfig( vite: { ssr: { - noExternal: ['vue-i18n'], + noExternal: ['vue-i18n', 'mark.js'], }, server: { port: 8000, @@ -203,6 +204,18 @@ export default defineConfig( }, build: { chunkSizeWarningLimit: 1000, + rollupOptions: { + output: { + manualChunks(id) { + if (id.includes('node_modules')) { + if (id.includes('shiki') || id.includes('shikiji')) return 'shiki' + if (id.includes('@vue') || id.includes('vue-demi')) return 'vue-vendor' + if (id.includes('unocss') || id.includes('@unocss')) return 'unocss' + return 'vendor' + } + }, + }, + }, }, resolve: { alias: [ @@ -217,6 +230,15 @@ export default defineConfig( ], }, plugins: [ + { + name: 'gc-between-bundles', + buildEnd() { + if (typeof global.gc === 'function') { + global.gc() + console.log('✓ GC triggered after bundle') + } + }, + }, { name: 'yaml-transform', transform(src: string, id: string) { diff --git a/docs/.vitepress/config/markdown.ts b/docs/.vitepress/config/markdown.ts index c94a6f96..fa77a9ff 100644 --- a/docs/.vitepress/config/markdown.ts +++ b/docs/.vitepress/config/markdown.ts @@ -5,12 +5,20 @@ import { GenTryItPlugin } from '../md-plugins/gen-try-it.ts' import { NormalizeMdPlugin } from '../md-plugins/normalize-md' import { CliCommandPlugin } from '../md-plugins/cli-command' import { RegionFilterPlugin } from '../md-plugins/region-filter' +import openPineGrammar from '../grammars/openpine.tmLanguage.json' export const markdownConfig: MarkdownOptions = { image: { lazyLoading: true, }, math: true, + languages: [ + { + ...openPineGrammar, + name: 'openpine', + aliases: ['pine'], + }, + ], codeTransformers: [ // We use `[!!code` in demo to prevent transformation, here we revert it back. { diff --git a/docs/.vitepress/grammars/openpine.tmLanguage.json b/docs/.vitepress/grammars/openpine.tmLanguage.json new file mode 100644 index 00000000..d60f8245 --- /dev/null +++ b/docs/.vitepress/grammars/openpine.tmLanguage.json @@ -0,0 +1,2007 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "OpenPine", + "patterns": [ + { "include": "#comments" }, + { "include": "#imports" }, + { "include": "#strings" }, + { "include": "#hover_function_parameters" }, + { "include": "#hover_variable_constant_type" }, + { "include": "#built_in_variables" }, + { "include": "#keywords" }, + { "include": "#built_in_functions" }, + { "include": "#multiline_functions" }, + { "include": "#user_defined_functions" }, + { "include": "#exports" }, + { "include": "#variable_declarations" }, + { "include": "#operators" }, + { "include": "#local_variables" } + ], + "repository": { + "comments": { + "patterns": [ + { + "match": "(||||||)", + "name": "comment.line.double-slash.ps" + }, + { + "match": "(^\/\/)\\s*(©)\\s*(\\w.*)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "comment.line.double-slash.ps" }, + "3": { "name": "meta.numeric.ps" }, + "4": { "name": "comment.line.double-slash.ps" } + } + }, + { + "match": "(^\/\/)\\s*(ⓘ)\\s*(https:\/\/www\\.tradingview\\.com)([\\w.,@?^=%&:\/~+#-\\{]*[\\}\\w@?^=%&\/~+#-])(\\w+)(.*)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "meta.numeric.ps" }, + "3": { "name": "keyword.operator.logical.ps" }, + "4": { "name": "keyword.operator.logical.ps" }, + "5": { "name": "keyword.operator.logical.ps" } + } + }, + { + "match": "(^\/\/)\\s*(@)(version)(=)(5)(.*)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "meta.section.embedded.other.ps" }, + "3": { "name": "meta.other.ps" }, + "4": { "name": "meta.assignment.ps" }, + "5": { "name": "meta.numeric.ps" } + } + }, + { + "match": "(^\/\/).*(\\d{10})(.*)(#)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "punctuation.definition.list.markdown.ps" }, + "3": { "name": "comment.line.double-slash.ps" } + } + }, + { + "match": "(^\/\/)\\s*(@)(description|enum|function|param|returns|type|field|strategy_alert_message|variable)(.*)", + "captures": { + "0": { "name": "meta.annotation.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "punctuation.definition.annotation.ps" }, + "3": { "name": "meta.annotation.identifier.ps" }, + "4": { "name": "comment.line.double-slash.ps" } + } + }, + { + "match": "(^\/\/).*(\\d{4}\\s\\w{3,10}\\s\\w{3,10}).*(\\|)\\s(\\d{2}:\\d{2}:\\d{2})(.*)(#)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "markup.italic.markdown.ps" }, + "3": { "name": "comment.line.double-slash.ps" }, + "4": { "name": "punctuation.definition.list.markdown.ps" }, + "5": { "name": "invalid.illegal.ps" }, + "6": { "name": "comment.line.double-slash.ps" } + } + }, + { + "match": "(^\/\/).*(\\d{2}-\\d{2}-\\d{2}).*(\\|)\\s(\\d{2}:\\d{2}:\\d{2})(.*)(#)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "markup.italic.markdown.ps" }, + "3": { "name": "comment.line.double-slash.ps" }, + "4": { "name": "punctuation.definition.list.markdown.ps" }, + "5": { "name": "invalid.illegal.ps" }, + "6": { "name": "comment.line.double-slash.ps" } + } + }, + { + "match": "(^\/\/).*(##)(.*)(\\|)\\s*(>)\\s*(.*)(#)", + "captures": { + "0": { "name": "comment.line.double-slash.ps" }, + "1": { "name": "comment.line.double-slash.ps" }, + "2": { "name": "markup.italic.markdown.ps" }, + "3": { "name": "token.info-token.ps" }, + "4": { "name": "comment.line.double-slash.ps" }, + "5": { "name": "invalid.illegal.ps" }, + "6": { "name": "punctuation.definition.list.markdown.ps" } + } + }, + { + "match": "//.*", + "name": "comment.line.double-slash.ps" + } + ] + }, + "imports": { + "patterns": [ + { + "match": "^(import)\\s+([\\w-]+)(\/)(\\w+)(\/)(\\w+)\\s+(as)\\s+(\\w+)", + "captures": { + "1": { "name": "keyword.control.import.ps" }, + "2": { "name": "entity.name.type.class.ps" }, + "3": { "name": "punctuation.separator.ps" }, + "4": { "name": "entity.name.type.class.ps" }, + "5": { "name": "punctuation.separator.ps" }, + "6": { "name": "constant.numeric.ps" }, + "7": { "name": "keyword.control.as.ps" }, + "8": { "name": "entity.name.namespace.ps" } + } + }, + { + "match": "^(import)\\s+([\\w-]+)(\/)(\\w+)(\/)(\\w+)", + "captures": { + "1": { "name": "keyword.control.import.ps" }, + "2": { "name": "entity.name.type.class.ps" }, + "3": { "name": "punctuation.separator.ps" }, + "4": { "name": "entity.name.type.class.ps" }, + "5": { "name": "punctuation.separator.ps" }, + "6": { "name": "constant.numeric.ps" } + } + } + ] + }, + "strings": { + "patterns": [ + { + "begin": "\"", + "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ps" } }, + "end": "\"", + "endCaptures": { "0": { "name": "punctuation.definition.string.end.ps" } }, + "name": "string.quoted.double.ps", + "patterns": [ + { + "match": "\\\\.", + "name": "constant.character.escaped.ps" + }, + { + "match": "(\\{)([^\"\\{\\}]+)(\\})", + "captures": { + "0": { "name": "variable.parameter.placeholder.ps" }, + "1": { "name": "constant.character.format.placeholder.other.ps" }, + "3": { "name": "constant.character.format.placeholder.other.ps" }, + "2": { "patterns": [{ "include": "#format_placeholders" }] } + } + } + ] + }, + { + "begin": "'", + "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.ps" } }, + "end": "'", + "endCaptures": { "1": { "name": "punctuation.definition.string.end.ps" } }, + "name": "string.quoted.single.ps", + "patterns": [ + { + "match": "\\\\.", + "name": "constant.character.escaped.ps" + }, + { + "match": "(\\{)([^'\\{\\}]+)(\\})", + "captures": { + "0": { "name": "variable.parameter.placeholder.ps" }, + "1": { "name": "constant.character.format.placeholder.other.ps" }, + "3": { "name": "constant.character.format.placeholder.other.ps" }, + "2": { "patterns": [{ "include": "#format_placeholders" }] } + } + } + ] + } + ] + }, + "format_placeholders": { + "patterns": [ + { + "match": "\\,", + "name": "punctuation.separator.comma.placeholder.ps" + }, + { + "match": "\\b([0-9]+)\\b(?!\\.)", + "name": "constant.numeric.decimal.placeholder.ps" + }, + { + "match": "[^\\s,]+", + "name": "variable.parameter.placeholder.ps" + } + ] + }, + "built_in_variables": { + "patterns": [ + { + "match": "(?)(?=\\s*\\()", + "captures": { + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "keyword.operator.new.support.ps" + }, + "4": { + "name": "punctuation.definition.generic.begin.ps" + }, + "5": { + "name": "support.type.primitive.ps" + }, + "6": { + "name": "punctuation.definition.generic.end.ps" + } + } + }, + { + "match": "\\b(box)(\\.)(copy|delete|get_bottom|get_left|get_right|get_top|set_bgcolor|set_border_color|set_border_style|set_border_width|set_bottom_right_point|set_bottom|set_extend|set_lefttop|set_left|set_rightbottom|set_right|set_text_color|set_text_font_family|set_text_halign|set_text_size|set_text_valign|set_text_wrap|set_text|set_top_left_point|set_top)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(box|color|label|line|linefill|table|ticker|chart.point|polyline)(\\.)(new)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "keyword.operator.new.support.ps" + } + } + }, + { + "match": "\\b(chart)(\\.)(point)(\\.)(copy|from_index|from_time|now)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "support.function.ps" + }, + "4": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(color)(\\.)(rgb|b|from_gradient|g|r|t)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(input)(\\.)(bool|color|enum|float|int|price|session|source|string|symbol|text_area|timeframe|time)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(label)(\\.)(copy|delete|get_text|get_x|get_y|set_color|set_point|set_size|set_style|set_text_font_family|set_textalign|set_textcolor|set_text|set_tooltip|set_xloc|set_xy|set_x|set_yloc|set_y)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(line)(\\.)(copy|delete|get_price|get_x1|get_x2|get_y1|get_y2|set_color|set_extend|set_first_point|set_second_point|set_style|set_width|set_x1|set_x2|set_xloc|set_xy1|set_xy2|set_y1|set_y2)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(linefill)(\\.)(delete|get_line1|get_line2|set_color)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(log)(\\.)(error|info|warning)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(map)(\\.)(clear|contains|copy|get|keys|put_all|put|remove|size|values)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "(?)(?=\\s*\\()", + "captures": { + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "keyword.operator.new.support.ps" + }, + "4": { + "name": "punctuation.definition.generic.begin.ps" + }, + "5": { + "name": "support.type.primitive.ps" + }, + "6": { + "name": "punctuation.separator.comma.ps" + }, + "7": { + "name": "support.type.primitive.ps" + }, + "8": { + "name": "punctuation.definition.generic.end.ps" + } + } + }, + { + "match": "\\b(math)(\\.)(abs|acos|asin|atan|avg|ceil|cos|exp|floor|log10|log|max|min|pow|random|round_to_mintick|round|sign|sin|sqrt|sum|tan|todegrees|toradians)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(polyline)(\\.)(delete)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(request)(\\.)(currency_rate|dividends|earnings|economic|financial|quandl|security_lower_tf|security|seed|splits)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(runtime)(\\.)(error)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(str)(\\.)(contains|endswith|format_time|format|length|lower|match|pos|repeat|replace_all|replace|split|startswith|substring|tonumber|tostring|trim|upper)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(strategy)(\\.)(closedtrades)(\\.)(commission|entry_bar_index|entry_comment|entry_id|entry_price|entry_time|exit_bar_index|exit_comment|exit_id|exit_price|exit_time|max_drawdown_percent|max_runup_percent|profit_percent|max_drawdown|max_runup|profit|size)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "support.function.ps" + }, + "4": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(strategy)(\\.)(opentrades)(\\.)(commission|entry_bar_index|entry_comment|entry_id|entry_price|entry_time|max_drawdown_percent|max_runup_percent|profit_percent|max_drawdown|max_runup|profit|size)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "support.function.ps" + }, + "4": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(strategy)(\\.)(risk)(\\.)(allow_entry_in|max_cons_loss_days|max_drawdown|max_intraday_filled_orders|max_intraday_loss|max_position_size)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + }, + "3": { + "name": "support.function.ps" + }, + "4": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(strategy)(\\.)(cancel_all|cancel|close_all|close|convert_to_account|convert_to_symbol|default_entry_qty|entry|exit|order)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(syminfo)(\\.)(prefix|ticker)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(ta)(\\.)(alma|atr|barssince|bbw|bb|cci|change|cmo|cog|correlation|crossover|crossunder|cross|cum|dev|dmi|ema|falling|highestbars|highest|hma|kcw|kc|linreg|lowestbars|lowest|macd|max|median|mfi|min|mode|mom|percentile_linear_interpolation|percentile_nearest_rank|percentrank|pivot_point_levels|pivothigh|pivotlow|range|rising|rma|roc|rsi|sar|sma|stdev|stoch|supertrend|swma|tr|tsi|valuewhen|variance|vwap|vwma|wma|wpr)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(table)(\\.)(cell_set_bgcolor|cell_set_height|cell_set_text_color|cell_set_text_font_family|cell_set_text_halign|cell_set_text_size|cell_set_text_valign|cell_set_text|cell_set_tooltip|cell_set_width|cell|clear|delete|merge_cells|set_bgcolor|set_border_color|set_border_width|set_frame_color|set_frame_width|set_position)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(ticker)(\\.)(heikinashi|inherit|kagi|linebreak|modify|pointfigure|renko|standard)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "\\b(timeframe)(\\.)(change|from_seconds|in_seconds)\\b(?=\\s*\\()", + "captures": { + "0": { + "name": "support.function.property.ps" + }, + "1": { + "name": "support.function.ps" + }, + "2": { + "name": "punctuation.accessor.function.ps" + } + } + }, + { + "match": "(?", + "name": "keyword.control.switch.ps" + }, + { + "match": "\\b(in|continue|break|for|while|by)\\b", + "name": "keyword.control.loop.ps" + }, + { + "match": "\\b(to)\\b(?!\\s*\\=)", + "name": "keyword.control.loop.ps" + }, + { + "match": "\\b(var|varip)\\b(?!\\s*\\=)", + "name": "storage.type.ps" + }, + { + "match": "\\b(and|or|not)\\b", + "name": "keyword.operator.word.ps" + } + ] + }, + "exports": { + "patterns": [ + { + "include": "#collection_new" + }, + { + "match": "^(?:(export)\\s+)?\\b(enum|type)\\s+([a-zA-Z_]\\w*)\\b(?=\\s*(?:\\s*//.*)?$)", + "captures": { + "1": { "name": "keyword.control.export.ps" }, + "2": { "name": "storage.type.type.ps" }, + "3": { "name": "support.type.primitive.ps" } + } + }, + { + "match": "^(export)\\s+(enum|type)\\b", + "captures": { + "1": { "name": "keyword.control.export.ps" }, + "2": { "name": "storage.type.type.ps" } + } + }, + { + "match": "^(export)\\s+(method)\\b", + "captures": { + "1": { "name": "keyword.control.export.ps" }, + "2": { "name": "storage.type.function.ps" } + } + }, + { + "match": "^\\b(enum|type)\\b", + "name": "storage.type.type.ps" + } + ] + }, + "variable_declarations": { + "patterns": [ + { + "match": "\\b([\\w\\.]+)\\b(\\s*\\[\\s*\\])?\\s+([a-zA-Z_]\\w*)\\s*(?=\\=)(?!\\=\\=)", + "captures": { + "1": { + "patterns": [ + { "include": "#keywords" }, + { "include": "#keyword_control_words" }, + { + "match": ".*", + "name": "support.type.primitive.ps" + } + ] + }, + "2": { "name": "meta.brace.square.ps" }, + "3": { + "patterns": [ + { "include": "#keywords" }, + { "include": "#keyword_control_words" }, + { "include": "#built_in_var_extend" }, + { "include": "#built_in_variables" }, + { + "match": ".*", + "name": "variable.other.readwrite.ps" + } + ] + } + } + }, + { + "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\s*(?=\\=|:=)", + "name": "variable.other.readwrite.ps" + }, + { + "match": "^\\s*\\b([\\w\\.]+)\\b(\\s*\\[\\s*\\])?\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=(?:\\s*//.*)?$)", + "captures": { + "1": { + "patterns": [ + { "include": "#keywords" }, + { "include": "#keyword_control_words" }, + { + "match": ".*", + "name": "support.type.primitive.ps" + } + ] + }, + "2": { "name": "meta.brace.square.ps" }, + "3": { + "patterns": [ + { "include": "#keywords" }, + { "include": "#keyword_control_words" }, + { "include": "#built_in_var_extend" }, + { "include": "#built_in_variables" }, + { + "match": ".*", + "name": "variable.other.readwrite.ps" + } + ] + } + } + } + ] + }, + "operators": { + "patterns": [ + { + "match": "(\\-\\=|\\+\\=|\\*\\=|/=|%=)", + "name": "keyword.operator.assignment.compound.ps" + }, + { + "match": "(\\-|\\+|\\*|/|%)", + "name": "keyword.operator.arithmetic.ps" + }, + { + "match": "(<=|>=|<|>)", + "name": "keyword.operator.relational.ps" + }, + { + "match": "(={2}|!=)", + "name": "keyword.operator.comparison.ps" + }, + { + "match": ":=", + "name": "keyword.operator.assignment.ps" + }, + { + "match": "(\\?|\\:)", + "name": "keyword.operator.ternary.ps" + }, + { + "match": "\\.", + "name": "punctuation.accessor.ps" + }, + { + "match": "\\(", + "name": "meta.brace.round.ps" + }, + { + "match": "\\)", + "name": "meta.brace.round.ps" + }, + { + "match": "[]\\[]", + "name": "meta.brace.square.ps" + }, + { + "match": "\\,", + "name": "punctuation.separator.comma.ps" + }, + { + "match": "=", + "name": "keyword.operator.assignment.ps" + }, + { "include": "#keyword_control_words" }, + { "include": "#support_type" } + ] + }, + "local_variables": { + "patterns": [ + { + "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b", + "name": "variable.other.readwrite.ps" + } + ] + }, + "collection_new": { + "patterns": [ + { + "match": "(?)", + "captures": { + "1": { "name": "support.type.primitive.ps" }, + "2": { "name": "punctuation.definition.generic.begin.ps" }, + "3": { "name": "support.type.primitive.ps" }, + "4": { "name": "punctuation.definition.generic.end.ps" } + } + }, + { + "match": "(?)", + "captures": { + "1": { "name": "support.type.primitive.ps" }, + "2": { "name": "punctuation.definition.generic.begin.ps" }, + "3": { "name": "support.type.primitive.ps" }, + "4": { "name": "punctuation.separator.comma.ps" }, + "5": { "name": "support.type.primitive.ps" }, + "6": { "name": "punctuation.definition.generic.end.ps" } + } + }, + { + "match": "\\b([a-zA-Z_][\\w\\.]*)\\b\\s*(\\[\\s*\\])", + "captures": { + "0": { "name": "support.type.primitive.ps" }, + "1": { "name": "support.type.primitive.ps" }, + "2": { "name": "meta.brace.square.ps" } + } + } + ] + }, + "multiline_functions": { + "patterns": [ + { + "match": "(?<=^(?:export\\s+)?(?:method\\s+)?\\b\\w+\\s*\\()([\\s\\S]*)(\\))\\s*(\\=>)", + "captures": { + "1": { "patterns": [{ "include": "#functions_parameters_capture" }] }, + "2": { "name": "meta.brace.round.ps" }, + "3": { "name": "storage.type.function.arrow.ps" } + } + }, + { + "match": "(?<=^export\\s+(?:method\\s+)?\\b\\w+\\s*\\()\\b([\\w][^\\(\\)]*)(?=\\s*\\,\\s*(?://.*)?$)", + "captures": { "1": { "patterns": [{ "include": "#functions_parameters_capture" }] } } + }, + { + "match": "(?<=^(?:export\\s+)?method\\s+\\b\\w+\\s*\\()\\b([\\w][^\\(\\)]*)(?=\\s*\\,\\s*(?://.*)?$)", + "captures": { "1": { "patterns": [{ "include": "#functions_parameters_capture" }] } } + }, + { + "match": "(?<=^(?:export\\s+)?(?:method\\s+)?\\b\\w+\\s*\\()((?:\\s*(?:\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+)?\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*\\,)*(?:\\s*\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*)(?:\\,\\s*(?:\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+)?\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*)*)(?=\\s*\\,\\s*(?://.*)?$)", + "captures": { "1": { "patterns": [{ "include": "#functions_parameters_capture" }] } } + }, + { + "match": "(?<=^\\s+)((?:\\s*(?:\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+)?\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*\\,)*(?:\\s*\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*)(?:\\,\\s*(?:\\b[\\w\\.]+\\s*(?:(?:\\<\\s*(?:(?:[\\w\\.]+)|(?:[\\w]+\\s*\\,\\s*[\\w\\.]+))\\s*\\>)|(?:\\[\\s*\\]))?\\s+)?\\b\\w+\\s*(?:\\=\\s*[\\w\\.\\#]+)?\\s*)*)(?=\\s*\\,\\s*(?://.*)?$)", + "captures": { "1": { "patterns": [{ "include": "#functions_parameters_capture" }] } } + }, + { + "match": "(?<=^\\s+)\\b([\\w][^\\(\\)]*)(\\))\\s*(\\=>)", + "captures": { + "1": { "patterns": [{ "include": "#functions_parameters_capture" }] }, + "2": { "name": "meta.brace.round.ps" }, + "3": { "name": "storage.type.function.arrow.ps" } + } + } + ] + }, + "functions_parameters_capture": { + "patterns": [ + { "include": "#strings" }, + { "include": "#collection_new" }, + { "include": "#built_in_variables" }, + { "include": "#support_type" }, + { "include": "#built_in_var_extend" }, + { "include": "#user_define_types" }, + { + "match": "\\b([a-zA-Z_]\\w*)\\b", + "name": "variable.parameter.ps" + }, + { + "include": "#operators" + } + ] + }, + "hover_function_parameters": { + "patterns": [ + { + "match": "(?<=^\\s\\((?:function|variable|constant)\\)\\s(?:(?:[a-zA-Z_]\\w*)|(?:\\b[\\w\\.]*\\b\\.(?:(?:[a-zA-Z_]\\w*)|(?:new\\s*<\\s*[a-zA-Z_][^\\(\\)]*\\b\\s*>))))\\s*\\(\\s*)([^\\(\\)]*)\\)\\s*(→)(.+)", + "captures": { + "1": { + "patterns": [ + { + "match": "\\b([a-zA-Z_]\\w*)\\b", + "name": "variable.parameter.ps" + }, + { + "include": "#operators" + } + ] + }, + "2": { "name": "storage.type.function.arrow.ps" }, + "3": { + "patterns": [ + { + "match": "<", + "name": "punctuation.definition.generic.begin.ps" + }, + { + "match": ">", + "name": "punctuation.definition.generic.end.ps" + }, + { "include": "#operators" }, + { + "match": "\\b(void|input|map|keyType|valueType|value_type)\\b", + "name": "support.type.primitive.ps" + }, + { + "match": "\\b([a-zA-Z_]+)\\b", + "name": "support.type.primitive.ps" + } + ] + } + } + }, + { + "match": "^\\s(\\(function\\))\\s(?=(?:(?:[a-zA-Z_]\\w*)|(?:\\b[\\w\\.]*\\b\\.(?:(?:[a-zA-Z_]\\w*)|(?:new\\s*<\\s*[a-zA-Z_][^\\(\\)]*\\b\\s*>))))\\s*\\(\\s*[^\\(\\)]*\\)\\s*→.+)", + "captures": { + "1": { "name": "support.type.primitive.ps" } + } + } + ] + }, + "hover_variable_constant_type": { + "patterns": [ + { + "match": "^\\s(\\((?:variable|constant|type)\\))\\s(?=(?:(?:\\b[\\w\\.]*\\b\\.[a-zA-Z_]\\w*)|(?:[a-zA-Z_]\\w*))\\b(?!\\s*[\\(\\.]))", + "captures": { + "1": { "name": "support.type.primitive.ps" } + } + } + ] + }, + "user_define_types": { + "patterns": [ + { + "match": "\\b([\\w\\.]+)\\b\\s+([a-zA-Z_]\\w*)\\b", + "captures": { + "1": { "name": "support.type.primitive.ps" }, + "2": { "name": "variable.parameter.ps" } + } + } + ] + }, + "array_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(max|min|sort_indices|sort|stdev)\\b(?=\\s*\\()", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(binary_search_leftmost|binary_search_rightmost|binary_search|concat|covariance|get|percentile_linear_interpolation|percentile_nearest_rank|percentrank|remove|set|slice|variance)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(fill|from|includes|indexof|insert|join|lastindexof|push|unshift)\\b(?=\\s*\\((?!\\s*\\)))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(abs|avg|clear|copy|every|first|last|median|mode|pop|range|reverse|shift|size|some|standardize|sum)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "box_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_bgcolor|set_border_color|set_border_style|set_border_width|set_bottom_right_point|set_bottom|set_extend|set_lefttop|set_left|set_rightbottom|set_right|set_text_color|set_text_font_family|set_text_halign|set_text_size|set_text_valign|set_text_wrap|set_top_left_point|set_top)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_text)\\b(?=\\s*\\((?!\\s*\\)))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(copy|delete|get_bottom|get_left|get_right|get_top)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "label_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_size)\\b(?=\\s*\\()", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_color|set_point|set_style|set_text_font_family|set_textalign|set_textcolor|set_x|set_xloc|set_xy|set_y|set_yloc)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_text|set_tooltip)\\b(?=\\s*\\((?!\\s*\\)))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(copy|delete|get_text|get_x|get_y)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "line_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(get_price|set_color|set_extend|set_first_point|set_second_point|set_style|set_width|set_x1|set_x2|set_xloc|set_xy1|set_xy2|set_y1|set_y2)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(copy|delete|get_x1|get_x2|get_y1|get_y2)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "linefill_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_color)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(delete|get_line1|get_line2)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "map_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(put_all)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(contains|get|put|remove)\\b(?=\\s*\\((?!\\s*\\)))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(clear|copy|keys|size|values)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "matrix_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(add_col|add_row|remove_col|remove_row|sort|submatrix)\\b(?=\\s*\\()", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(col|concat|diff|get|kron|mult|pow|reshape|row|set|sum|swap_columns|swap_rows)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(fill)\\b(?=\\s*\\((?!\\s*\\)))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(avg|columns|copy|det|eigenvalues|eigenvectors|elements_count|inv|is_antidiagonal|is_antisymmetric|is_binary|is_diagonal|is_identity|is_square|is_stochastic|is_symmetric|is_triangular|is_zero|max|median|min|mode|pinv|rank|reverse|rows|trace|transpose)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "table_methods": { + "patterns": [ + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(set_bgcolor|set_border_color|set_border_width|set_frame_color|set_frame_width)\\b(?=\\s*\\()", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(cell_set_bgcolor|cell_set_height|cell_set_text_color|cell_set_text_font_family|cell_set_text_halign|cell_set_text_size|cell_set_text_valign|cell_set_text|cell_set_tooltip|cell_set_width|cell|clear|merge_cells|set_position)\\b(?=\\s*\\((?!\\s*[\"'\\)]))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + }, + { + "match": "(?:([\\w\\.]*)|(?<=\\)))(\\.)(delete)\\b(?=\\s*\\(\\s*\\))", + "captures": { + "1": { "patterns": [{ "include": "#method_namespace" }] }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "support.function.property.ps" } + } + } + ] + }, + "method_namespace": { + "patterns": [ + { + "match": "([\\.]?\\b[a-zA-Z_][\\w\\.]*)\\b(\\.)([a-zA-Z_]\\w*)\\b", + "captures": { + "1": { + "patterns": [ + { + "match": "\\b[a-zA-Z_]\\w*\\b", + "name": "variable.other.readwrite.ps" + }, + { + "match": "\\.", + "name": "punctuation.accessor.ps" + } + ] + }, + "2": { "name": "punctuation.accessor.ps" }, + "3": { "name": "variable.other.readwrite.ps" } + } + }, + { + "match": "([\\.]?)\\b([a-zA-Z_]\\w*)\\b", + "captures": { + "1": { "name": "punctuation.accessor.ps" }, + "2": { "name": "variable.other.readwrite.ps" } + } + } + ] + }, + "support_type": { + "patterns": [ + { "include": "#primitive_type" }, + { + "match": "(? = { participants: '/docs/cli/market-data/participants', 'security-list': '/docs/cli/market-data/security-list', subscriptions: '/docs/cli/market-data/subscriptions', + 'ah-premium': '/docs/cli/market-data/ah-premium', + anomaly: '/docs/cli/market-data/anomaly', + 'broker-holding': '/docs/cli/market-data/broker-holding', + constituent: '/docs/cli/market-data/constituent', + 'market-status': '/docs/cli/market-data/market-status', + 'trade-stats': '/docs/cli/market-data/trade-stats', // Derivatives option: '/docs/cli/derivatives/option', warrant: '/docs/cli/derivatives/warrant', + 'short-positions': '/docs/cli/derivatives/short-positions', + // Fundamentals + company: '/docs/cli/fundamentals/company', + consensus: '/docs/cli/fundamentals/consensus', + 'corp-action': '/docs/cli/fundamentals/corp-action', + dividend: '/docs/cli/fundamentals/dividend', + executive: '/docs/cli/fundamentals/executive', + 'finance-calendar': '/docs/cli/fundamentals/finance-calendar', + 'financial-report': '/docs/cli/fundamentals/financial-report', + 'forecast-eps': '/docs/cli/fundamentals/forecast-eps', + 'industry-valuation': '/docs/cli/fundamentals/industry-valuation', + 'institution-rating': '/docs/cli/fundamentals/institution-rating', + 'invest-relation': '/docs/cli/fundamentals/invest-relation', + operating: '/docs/cli/fundamentals/operating', + valuation: '/docs/cli/fundamentals/valuation', + // Research + shareholder: '/docs/cli/research/shareholder', // Content news: '/docs/cli/content/news', topic: '/docs/cli/content/topic', @@ -35,12 +58,17 @@ const CLI_COMMAND_MAP: Record = { filing: '/docs/cli/content/filing', // Watchlist watchlist: '/docs/cli/watchlist/watchlist', + sharelist: '/docs/cli/watchlist/sharelist', // Account assets: '/docs/cli/account/assets', positions: '/docs/cli/account/positions', 'fund-positions': '/docs/cli/account/fund-positions', + 'fund-holder': '/docs/cli/account/fund-holder', 'cash-flow': '/docs/cli/account/cash-flow', portfolio: '/docs/cli/account/portfolio', + alert: '/docs/cli/account/alert', + dca: '/docs/cli/account/dca', + 'profit-analysis': '/docs/cli/account/profit-analysis', // Orders order: '/docs/cli/orders/order', orders: '/docs/cli/orders/order', diff --git a/docs/.vitepress/theme/components/NewHomePage/PlatformStats.vue b/docs/.vitepress/theme/components/NewHomePage/PlatformStats.vue index f7b24a12..db00342f 100644 --- a/docs/.vitepress/theme/components/NewHomePage/PlatformStats.vue +++ b/docs/.vitepress/theme/components/NewHomePage/PlatformStats.vue @@ -1,15 +1,19 @@ @@ -26,7 +25,6 @@ import Footer from './Footer.vue' -