12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';
- // Dynamic labels: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html
- export const DYNAMIC_LABEL_PATTERNS = [
- '${DATAPOINT_COUNT}',
- '${FIRST}',
- '${FIRST_LAST_RANGE}',
- '${FIRST_LAST_TIME_RANGE}',
- '${FIRST_TIME}',
- '${FIRST_TIME_RELATIVE}',
- '${LABEL}',
- '${LAST}',
- '${LAST_TIME}',
- '${LAST_TIME_RELATIVE}',
- '${MAX}',
- '${MAX_TIME}',
- '${MAX_TIME_RELATIVE}',
- '${MIN}',
- '${MIN_MAX_RANGE}',
- '${MIN_MAX_TIME_RANGE}',
- '${MIN_TIME}',
- '${MIN_TIME_RELATIVE}',
- "${PROP('AccountId')}",
- "${PROP('MetricName')}",
- "${PROP('Namespace')}",
- "${PROP('Period')}",
- "${PROP('Region')}",
- "${PROP('Stat')}",
- '${SUM}',
- ];
- export const language: monacoType.languages.IMonarchLanguage = {
- id: 'dynamicLabels',
- ignoreCase: false,
- tokenizer: {
- root: [
- { include: '@whitespace' },
- { include: '@builtInFunctions' },
- { include: '@string' },
- [/\$\{PROP\('Dim.[a-zA-Z0-9-_]?.*'\)\}+/, 'predefined'], //custom handling for dimension patterns
- ],
- builtInFunctions: [[DYNAMIC_LABEL_PATTERNS.map(escapeRegExp).join('|'), 'predefined']],
- whitespace: [[/\s+/, 'white']],
- string: [],
- },
- };
- export const conf: monacoType.languages.LanguageConfiguration = {};
- function escapeRegExp(string: string) {
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
- }
|