@grafana/plugin-ui 0.13.1 → 0.14.0

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.
Files changed (182) hide show
  1. package/README.md +9 -3
  2. package/dist/cjs/index.cjs +3196 -168
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +102 -39
  5. package/dist/cjs/test-utils.cjs +7880 -61
  6. package/dist/cjs/test-utils.cjs.map +1 -1
  7. package/dist/cjs/test-utils.d.cts +23 -23
  8. package/dist/esm/_virtual/chance.js +6 -0
  9. package/dist/esm/_virtual/chance.js.map +1 -0
  10. package/dist/esm/_virtual/chance2.js +4 -0
  11. package/dist/esm/_virtual/chance2.js.map +1 -0
  12. package/dist/esm/_virtual/index.js +6 -0
  13. package/dist/esm/_virtual/index.js.map +1 -0
  14. package/dist/esm/_virtual/re.js +4 -0
  15. package/dist/esm/_virtual/re.js.map +1 -0
  16. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +155 -0
  17. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js.map +1 -0
  18. package/dist/esm/async-query-data/RunQueryButtons.js +52 -0
  19. package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -0
  20. package/dist/esm/async-query-data/requestLooper.js +74 -0
  21. package/dist/esm/async-query-data/requestLooper.js.map +1 -0
  22. package/dist/esm/components/QueryEditor/InlineSelect.js +1 -1
  23. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  24. package/dist/esm/components/QueryEditor/QueryEditor.js +3 -1
  25. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  26. package/dist/esm/components/QueryEditor/QueryHeader.js +2 -2
  27. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  28. package/dist/esm/components/QueryEditor/TableSelector.js +0 -1
  29. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  30. package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
  31. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +10 -2
  32. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  33. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +6 -1
  34. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  35. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +11 -1
  36. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  37. package/dist/esm/components/QueryEditor/types.js +0 -1
  38. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  39. package/dist/esm/components/QueryEditor/utils/formatSQL.js +15 -4
  40. package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
  41. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +2 -2
  42. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  43. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +0 -1
  44. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  45. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +0 -1
  46. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  47. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +0 -1
  48. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  49. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +0 -1
  50. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  51. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +10 -2
  52. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  53. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  54. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
  55. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  56. package/dist/esm/components/SQLEditor/standardSql/definition.js +0 -6
  57. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  58. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +2 -1
  59. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
  60. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +2 -1
  61. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
  62. package/dist/esm/components/SQLEditor/types.js +1 -17
  63. package/dist/esm/components/SQLEditor/types.js.map +1 -1
  64. package/dist/esm/components/SQLEditor/utils/LinkedToken.js +1 -1
  65. package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
  66. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +2 -2
  67. package/dist/esm/components/SQLEditor/utils/tokenType.js +18 -0
  68. package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -0
  69. package/dist/esm/components/SQLEditor/utils/tokenUtils.js +1 -1
  70. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +1 -1
  71. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +1 -1
  72. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +1 -1
  73. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +1 -1
  74. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +1 -1
  75. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
  76. package/dist/esm/index.d.ts +102 -39
  77. package/dist/esm/index.js +5 -1
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/node_modules/chance/chance.js +7820 -0
  80. package/dist/esm/node_modules/chance/chance.js.map +1 -0
  81. package/dist/esm/node_modules/semver/classes/comparator.js +160 -0
  82. package/dist/esm/node_modules/semver/classes/comparator.js.map +1 -0
  83. package/dist/esm/node_modules/semver/classes/range.js +575 -0
  84. package/dist/esm/node_modules/semver/classes/range.js.map +1 -0
  85. package/dist/esm/node_modules/semver/classes/semver.js +349 -0
  86. package/dist/esm/node_modules/semver/classes/semver.js.map +1 -0
  87. package/dist/esm/node_modules/semver/functions/clean.js +20 -0
  88. package/dist/esm/node_modules/semver/functions/clean.js.map +1 -0
  89. package/dist/esm/node_modules/semver/functions/cmp.js +71 -0
  90. package/dist/esm/node_modules/semver/functions/cmp.js.map +1 -0
  91. package/dist/esm/node_modules/semver/functions/coerce.js +76 -0
  92. package/dist/esm/node_modules/semver/functions/coerce.js.map +1 -0
  93. package/dist/esm/node_modules/semver/functions/compare-build.js +21 -0
  94. package/dist/esm/node_modules/semver/functions/compare-build.js.map +1 -0
  95. package/dist/esm/node_modules/semver/functions/compare-loose.js +17 -0
  96. package/dist/esm/node_modules/semver/functions/compare-loose.js.map +1 -0
  97. package/dist/esm/node_modules/semver/functions/compare.js +19 -0
  98. package/dist/esm/node_modules/semver/functions/compare.js.map +1 -0
  99. package/dist/esm/node_modules/semver/functions/diff.js +72 -0
  100. package/dist/esm/node_modules/semver/functions/diff.js.map +1 -0
  101. package/dist/esm/node_modules/semver/functions/eq.js +17 -0
  102. package/dist/esm/node_modules/semver/functions/eq.js.map +1 -0
  103. package/dist/esm/node_modules/semver/functions/gt.js +17 -0
  104. package/dist/esm/node_modules/semver/functions/gt.js.map +1 -0
  105. package/dist/esm/node_modules/semver/functions/gte.js +17 -0
  106. package/dist/esm/node_modules/semver/functions/gte.js.map +1 -0
  107. package/dist/esm/node_modules/semver/functions/inc.js +33 -0
  108. package/dist/esm/node_modules/semver/functions/inc.js.map +1 -0
  109. package/dist/esm/node_modules/semver/functions/lt.js +17 -0
  110. package/dist/esm/node_modules/semver/functions/lt.js.map +1 -0
  111. package/dist/esm/node_modules/semver/functions/lte.js +17 -0
  112. package/dist/esm/node_modules/semver/functions/lte.js.map +1 -0
  113. package/dist/esm/node_modules/semver/functions/major.js +17 -0
  114. package/dist/esm/node_modules/semver/functions/major.js.map +1 -0
  115. package/dist/esm/node_modules/semver/functions/minor.js +17 -0
  116. package/dist/esm/node_modules/semver/functions/minor.js.map +1 -0
  117. package/dist/esm/node_modules/semver/functions/neq.js +17 -0
  118. package/dist/esm/node_modules/semver/functions/neq.js.map +1 -0
  119. package/dist/esm/node_modules/semver/functions/parse.js +30 -0
  120. package/dist/esm/node_modules/semver/functions/parse.js.map +1 -0
  121. package/dist/esm/node_modules/semver/functions/patch.js +17 -0
  122. package/dist/esm/node_modules/semver/functions/patch.js.map +1 -0
  123. package/dist/esm/node_modules/semver/functions/prerelease.js +20 -0
  124. package/dist/esm/node_modules/semver/functions/prerelease.js.map +1 -0
  125. package/dist/esm/node_modules/semver/functions/rcompare.js +17 -0
  126. package/dist/esm/node_modules/semver/functions/rcompare.js.map +1 -0
  127. package/dist/esm/node_modules/semver/functions/rsort.js +17 -0
  128. package/dist/esm/node_modules/semver/functions/rsort.js.map +1 -0
  129. package/dist/esm/node_modules/semver/functions/satisfies.js +24 -0
  130. package/dist/esm/node_modules/semver/functions/satisfies.js.map +1 -0
  131. package/dist/esm/node_modules/semver/functions/sort.js +17 -0
  132. package/dist/esm/node_modules/semver/functions/sort.js.map +1 -0
  133. package/dist/esm/node_modules/semver/functions/valid.js +20 -0
  134. package/dist/esm/node_modules/semver/functions/valid.js.map +1 -0
  135. package/dist/esm/node_modules/semver/index.js +143 -0
  136. package/dist/esm/node_modules/semver/index.js.map +1 -0
  137. package/dist/esm/node_modules/semver/internal/constants.js +47 -0
  138. package/dist/esm/node_modules/semver/internal/constants.js.map +1 -0
  139. package/dist/esm/node_modules/semver/internal/debug.js +21 -0
  140. package/dist/esm/node_modules/semver/internal/debug.js.map +1 -0
  141. package/dist/esm/node_modules/semver/internal/identifiers.js +39 -0
  142. package/dist/esm/node_modules/semver/internal/identifiers.js.map +1 -0
  143. package/dist/esm/node_modules/semver/internal/lrucache.js +52 -0
  144. package/dist/esm/node_modules/semver/internal/lrucache.js.map +1 -0
  145. package/dist/esm/node_modules/semver/internal/parse-options.js +27 -0
  146. package/dist/esm/node_modules/semver/internal/parse-options.js.map +1 -0
  147. package/dist/esm/node_modules/semver/internal/re.js +238 -0
  148. package/dist/esm/node_modules/semver/internal/re.js.map +1 -0
  149. package/dist/esm/node_modules/semver/ranges/gtr.js +18 -0
  150. package/dist/esm/node_modules/semver/ranges/gtr.js.map +1 -0
  151. package/dist/esm/node_modules/semver/ranges/intersects.js +21 -0
  152. package/dist/esm/node_modules/semver/ranges/intersects.js.map +1 -0
  153. package/dist/esm/node_modules/semver/ranges/ltr.js +18 -0
  154. package/dist/esm/node_modules/semver/ranges/ltr.js.map +1 -0
  155. package/dist/esm/node_modules/semver/ranges/max-satisfying.js +40 -0
  156. package/dist/esm/node_modules/semver/ranges/max-satisfying.js.map +1 -0
  157. package/dist/esm/node_modules/semver/ranges/min-satisfying.js +39 -0
  158. package/dist/esm/node_modules/semver/ranges/min-satisfying.js.map +1 -0
  159. package/dist/esm/node_modules/semver/ranges/min-version.js +77 -0
  160. package/dist/esm/node_modules/semver/ranges/min-version.js.map +1 -0
  161. package/dist/esm/node_modules/semver/ranges/outside.js +101 -0
  162. package/dist/esm/node_modules/semver/ranges/outside.js.map +1 -0
  163. package/dist/esm/node_modules/semver/ranges/simplify.js +62 -0
  164. package/dist/esm/node_modules/semver/ranges/simplify.js.map +1 -0
  165. package/dist/esm/node_modules/semver/ranges/subset.js +264 -0
  166. package/dist/esm/node_modules/semver/ranges/subset.js.map +1 -0
  167. package/dist/esm/node_modules/semver/ranges/to-comparators.js +22 -0
  168. package/dist/esm/node_modules/semver/ranges/to-comparators.js.map +1 -0
  169. package/dist/esm/node_modules/semver/ranges/valid.js +25 -0
  170. package/dist/esm/node_modules/semver/ranges/valid.js.map +1 -0
  171. package/dist/esm/test/mocks/DataQuery.js +5 -5
  172. package/dist/esm/test/mocks/DataQuery.js.map +1 -1
  173. package/dist/esm/test/mocks/Datasource.js +21 -21
  174. package/dist/esm/test/mocks/Datasource.js.map +1 -1
  175. package/dist/esm/test/mocks/Plugin.js +29 -29
  176. package/dist/esm/test/mocks/Plugin.js.map +1 -1
  177. package/dist/esm/test/mocks/QueryEditorProps.js +6 -6
  178. package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
  179. package/dist/esm/test/mocks/utils.js +4 -4
  180. package/dist/esm/test/mocks/utils.js.map +1 -1
  181. package/dist/esm/test-utils.d.ts +23 -23
  182. package/package.json +80 -87
@@ -1 +1 @@
1
- {"version":3,"file":"SQLEditor.js","sources":["../../../../../src/components/SQLEditor/components/SQLEditor.tsx"],"sourcesContent":["import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n type CustomSuggestion,\n type PositionContext,\n type SQLCompletionItemProvider,\n type StatementPosition,\n SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type SQLMonarchLanguage,\n type StatementPositionResolversRegistryItem,\n type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\nimport { useLatestCallback } from '../hooks/useLatestCallback';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\n\nexport interface LanguageDefinition extends monacoTypes.languages.ILanguageExtensionPoint {\n loader?: (module: any) => Promise<{\n language: SQLMonarchLanguage;\n conf: monacoTypes.languages.LanguageConfiguration;\n }>;\n // Provides API for customizing the autocomplete\n completionProvider?: (m: Monaco, language: SQLMonarchLanguage) => SQLCompletionItemProvider;\n // Function that returns a formatted query\n formatter?: (q: string) => string;\n}\n\ninterface SQLEditorProps {\n query: string;\n /**\n * Use for inspecting the query as it changes. I.e. for validation.\n */\n onChange?: (q: string, processQuery: boolean) => void;\n onBlur?: (text: string) => void;\n language?: LanguageDefinition;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n}\n\ninterface LanguageRegistries {\n functions: Registry<FunctionsRegistryItem>;\n operators: Registry<OperatorsRegistryItem>;\n suggestionKinds: Registry<SuggestionKindRegistryItem>;\n positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n children,\n onBlur,\n onChange,\n query,\n language = { id: STANDARD_SQL_LANGUAGE },\n width,\n height,\n}: SQLEditorProps) => {\n const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n const langUid = useRef<string>();\n const stableOnChange = useLatestCallback(onChange);\n\n // create unique language id for each SQLEditor instance\n const id = useMemo(() => {\n const uid = v4();\n const id = `${language.id}-${uid}`;\n langUid.current = id;\n return id;\n }, [language.id]);\n\n useEffect(() => {\n return () => {\n if (langUid.current) {\n INSTANCE_CACHE.delete(langUid.current);\n }\n sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n };\n }, []);\n\n const formatQuery = useCallback(() => {\n if (monacoRef.current) {\n monacoRef.current.getAction('editor.action.formatDocument').run();\n }\n }, []);\n\n const onSqlBlur = (text: string) => {\n stableOnChange && stableOnChange(text, false);\n onBlur && onBlur(text);\n };\n\n return (\n <div style={{ width }}>\n <CodeEditor\n height={height || '240px'}\n // -2px to compensate for borders width\n width={width ? `${width - 2}px` : undefined}\n language={id}\n value={query}\n onBlur={onSqlBlur}\n showMiniMap={false}\n showLineNumbers={true}\n // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n onEditorDidMount={(editor, m) => {\n monacoRef.current = editor;\n editor.onDidChangeModelContent((e) => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, false);\n }\n });\n\n editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, true);\n }\n });\n\n editor.onKeyUp((e) => {\n // keyCode 84 is . (DOT)\n if (e.keyCode === 84) {\n editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n }\n });\n registerLanguageAndSuggestions(m, language, id);\n }}\n />\n {children && children({ formatQuery })}\n </div>\n );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n const allLangs = monaco.languages.getLanguages();\n const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n if (!custom) {\n throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n }\n\n return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n }\n\n return {\n ...standardSQLLanguageDefinition,\n ...languageDefinitionProp,\n };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n const languageDefinition = resolveLanguage(monaco, l);\n if (!languageDefinition.loader) {\n return;\n }\n const { language, conf } = await languageDefinition.loader(monaco);\n monaco.languages.register({ id: lid });\n monaco.languages.setMonarchTokensProvider(lid, { ...language });\n monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n if (languageDefinition.formatter) {\n monaco.languages.registerDocumentFormattingEditProvider(lid, {\n provideDocumentFormattingEdits: (model) => {\n const formatted = l.formatter?.(model.getValue());\n return [\n {\n range: model.getFullModelRange(),\n text: formatted || '',\n },\n ];\n },\n });\n }\n\n if (languageDefinition.completionProvider) {\n const customProvider = languageDefinition.completionProvider(monaco, language);\n extendStandardRegistries(l.id, lid, customProvider);\n const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n model,\n position,\n context,\n token\n ) => {\n const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n sqlEditorLog('Statement position', false, statementPosition);\n sqlEditorLog('Suggestion kinds', false, kind);\n\n const ctx: PositionContext = {\n position,\n currentToken,\n statementPosition,\n kind,\n range: monaco.Range.fromPositions(position),\n };\n\n const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n return {\n suggestions: stdSuggestions,\n };\n };\n\n monaco.languages.registerCompletionItemProvider(lid, {\n ...customProvider,\n provideCompletionItems: completionProvider,\n });\n }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n if (!LANGUAGES_CACHE.has(id)) {\n initializeLanguageRegistries(id);\n }\n\n const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n if (!INSTANCE_CACHE.has(lid)) {\n INSTANCE_CACHE.set(\n lid,\n new Registry(\n initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n )\n );\n }\n\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n if (customProvider.supportedFunctions) {\n for (const func of customProvider.supportedFunctions()) {\n const exists = languageRegistries.functions.getIfExists(func.id);\n if (!exists) {\n languageRegistries.functions.register(func);\n }\n }\n }\n\n if (customProvider.supportedOperators) {\n for (const op of customProvider.supportedOperators()) {\n const exists = languageRegistries.operators.getIfExists(op.id);\n if (!exists) {\n languageRegistries.operators.register({ ...op, name: op.id });\n }\n }\n }\n\n if (customProvider.supportedMacros) {\n for (const macro of customProvider.supportedMacros()) {\n const exists = languageRegistries.macros.getIfExists(macro.id);\n if (!exists) {\n languageRegistries.macros.register({ ...macro, name: macro.id });\n }\n }\n }\n\n if (customProvider.customStatementPlacement) {\n for (const placement of customProvider.customStatementPlacement()) {\n const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n if (!exists) {\n languageRegistries.positionResolvers.register({\n ...placement,\n id: placement.id as StatementPosition,\n name: placement.id,\n });\n languageRegistries.suggestionKinds.register({\n id: placement.id as StatementPosition,\n name: placement.id,\n kind: [],\n });\n } else {\n // Allow extension to the built-in placement resolvers\n const origResolve = exists.resolve;\n exists.resolve = (...args) => {\n const ext = placement.resolve(...args);\n if (placement.overrideDefault) {\n return ext;\n }\n const orig = origResolve(...args);\n return orig || ext;\n };\n }\n }\n }\n\n if (customProvider.customSuggestionKinds) {\n for (const kind of customProvider.customSuggestionKinds()) {\n kind.applyTo?.forEach((applyTo) => {\n const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n if (exists) {\n // avoid duplicates\n if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n exists.kind.push(kind.id as SuggestionKind);\n }\n }\n });\n\n if (kind.overrideDefault) {\n const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n if (stbBehavior !== undefined) {\n stbBehavior.suggestions = kind.suggestionsResolver;\n continue;\n }\n }\n\n instanceSuggestionsRegistry.register({\n id: kind.id as SuggestionKind,\n name: kind.id,\n suggestions: kind.suggestionsResolver,\n });\n }\n }\n\n if (customProvider.schemas) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const standardSchemas = await s(ctx, m);\n if (!customProvider.schemas) {\n return [...standardSchemas];\n }\n const customSchemas = await customProvider.schemas.resolve();\n const customSchemaCompletionItems = customSchemas.map((x) => ({\n label: x.name,\n insertText: `${x.completion ?? x.name}.`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n sortText: CompletionItemPriority.High,\n }));\n return [...standardSchemas, ...customSchemaCompletionItems];\n };\n }\n\n if (customProvider.tables) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n const tableIdentifier = tableNameParser(tableToken);\n\n const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n label: x.name,\n // if no custom completion is provided it's safe to move cursor further in the statement\n insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.MediumHigh,\n }));\n return [...o, ...oo];\n };\n }\n\n if (customProvider.columns) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n let tableIdentifier;\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n if (tableToken && tableToken.value) {\n tableIdentifier = tableNameParser(tableToken);\n }\n\n let oo: CustomSuggestion[] = [];\n if (tableIdentifier) {\n const columns = await customProvider.columns?.resolve!(tableIdentifier);\n oo = columns\n ? columns.map<CustomSuggestion>((x) => ({\n label: x.name,\n insertText: x.completion ?? x.name,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.High,\n detail: x.type,\n documentation: x.description,\n }))\n : [];\n }\n return [...o, ...oo];\n };\n }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n if (!LANGUAGES_CACHE.has(id)) {\n LANGUAGES_CACHE.set(id, {\n functions: new Registry(),\n operators: new Registry(),\n suggestionKinds: new Registry(initSuggestionsKindRegistry),\n positionResolvers: new Registry(initStatementPositionResolvers),\n macros: new Registry(),\n });\n }\n\n return LANGUAGES_CACHE.get(id)!;\n}\n"],"names":["id","_a"],"mappings":"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"}
1
+ {"version":3,"file":"SQLEditor.js","sources":["../../../../../src/components/SQLEditor/components/SQLEditor.tsx"],"sourcesContent":["import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n type CustomSuggestion,\n type LanguageDefinition,\n type PositionContext,\n type SQLCompletionItemProvider,\n type StatementPosition,\n SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type StatementPositionResolversRegistryItem,\n type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\nimport { useLatestCallback } from '../hooks/useLatestCallback';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\n\ninterface SQLEditorProps {\n query: string;\n /**\n * Use for inspecting the query as it changes. I.e. for validation.\n */\n onChange?: (q: string, processQuery: boolean) => void;\n onBlur?: (text: string) => void;\n language?: LanguageDefinition;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n}\n\ninterface LanguageRegistries {\n functions: Registry<FunctionsRegistryItem>;\n operators: Registry<OperatorsRegistryItem>;\n suggestionKinds: Registry<SuggestionKindRegistryItem>;\n positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n children,\n onBlur,\n onChange,\n query,\n language = { id: STANDARD_SQL_LANGUAGE },\n width,\n height,\n}: SQLEditorProps) => {\n const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n const langUid = useRef<string>();\n const stableOnChange = useLatestCallback(onChange);\n\n // create unique language id for each SQLEditor instance\n const id = useMemo(() => {\n const uid = v4();\n const id = `${language.id}-${uid}`;\n langUid.current = id;\n return id;\n }, [language.id]);\n\n useEffect(() => {\n return () => {\n if (langUid.current) {\n INSTANCE_CACHE.delete(langUid.current);\n }\n sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n };\n }, []);\n\n const formatQuery = useCallback(() => {\n if (monacoRef.current) {\n monacoRef.current.getAction('editor.action.formatDocument').run();\n }\n }, []);\n\n const onSqlBlur = (text: string) => {\n stableOnChange && stableOnChange(text, false);\n onBlur && onBlur(text);\n };\n\n return (\n <div style={{ width }}>\n <CodeEditor\n height={height || '240px'}\n // -2px to compensate for borders width\n width={width ? `${width - 2}px` : undefined}\n language={id}\n value={query}\n onBlur={onSqlBlur}\n showMiniMap={false}\n showLineNumbers={true}\n // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n onEditorDidMount={(editor, m) => {\n monacoRef.current = editor;\n editor.onDidChangeModelContent((e) => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, false);\n }\n });\n\n editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, true);\n }\n });\n\n editor.onKeyUp((e) => {\n // keyCode 84 is . (DOT)\n if (e.keyCode === 84) {\n editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n }\n });\n registerLanguageAndSuggestions(m, language, id);\n }}\n />\n {children && children({ formatQuery })}\n </div>\n );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n const allLangs = monaco.languages.getLanguages();\n const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n if (!custom) {\n throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n }\n\n return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n }\n\n return {\n ...standardSQLLanguageDefinition,\n ...languageDefinitionProp,\n };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n const languageDefinition = resolveLanguage(monaco, l);\n if (!languageDefinition.loader) {\n return;\n }\n const { language, conf } = await languageDefinition.loader(monaco);\n monaco.languages.register({ id: lid });\n monaco.languages.setMonarchTokensProvider(lid, { ...language });\n monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n if (languageDefinition.formatter) {\n monaco.languages.registerDocumentFormattingEditProvider(lid, {\n provideDocumentFormattingEdits: (model) => {\n const formatted = l.formatter?.(model.getValue());\n return [\n {\n range: model.getFullModelRange(),\n text: formatted || '',\n },\n ];\n },\n });\n }\n\n if (languageDefinition.completionProvider) {\n const customProvider = languageDefinition.completionProvider(monaco, language);\n extendStandardRegistries(l.id, lid, customProvider);\n const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n model,\n position,\n context,\n token\n ) => {\n const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n sqlEditorLog('Statement position', false, statementPosition);\n sqlEditorLog('Suggestion kinds', false, kind);\n\n const ctx: PositionContext = {\n position,\n currentToken,\n statementPosition,\n kind,\n range: monaco.Range.fromPositions(position),\n };\n\n const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n return {\n suggestions: stdSuggestions,\n };\n };\n\n monaco.languages.registerCompletionItemProvider(lid, {\n ...customProvider,\n provideCompletionItems: completionProvider,\n });\n }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n if (!LANGUAGES_CACHE.has(id)) {\n initializeLanguageRegistries(id);\n }\n\n const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n if (!INSTANCE_CACHE.has(lid)) {\n INSTANCE_CACHE.set(\n lid,\n new Registry(\n initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n )\n );\n }\n\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n if (customProvider.supportedFunctions) {\n for (const func of customProvider.supportedFunctions()) {\n const exists = languageRegistries.functions.getIfExists(func.id);\n if (!exists) {\n languageRegistries.functions.register(func);\n }\n }\n }\n\n if (customProvider.supportedOperators) {\n for (const op of customProvider.supportedOperators()) {\n const exists = languageRegistries.operators.getIfExists(op.id);\n if (!exists) {\n languageRegistries.operators.register({ ...op, name: op.id });\n }\n }\n }\n\n if (customProvider.supportedMacros) {\n for (const macro of customProvider.supportedMacros()) {\n const exists = languageRegistries.macros.getIfExists(macro.id);\n if (!exists) {\n languageRegistries.macros.register({ ...macro, name: macro.id });\n }\n }\n }\n\n if (customProvider.customStatementPlacement) {\n for (const placement of customProvider.customStatementPlacement()) {\n const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n if (!exists) {\n languageRegistries.positionResolvers.register({\n ...placement,\n id: placement.id as StatementPosition,\n name: placement.id,\n });\n languageRegistries.suggestionKinds.register({\n id: placement.id as StatementPosition,\n name: placement.id,\n kind: [],\n });\n } else {\n // Allow extension to the built-in placement resolvers\n const origResolve = exists.resolve;\n exists.resolve = (...args) => {\n const ext = placement.resolve(...args);\n if (placement.overrideDefault) {\n return ext;\n }\n const orig = origResolve(...args);\n return orig || ext;\n };\n }\n }\n }\n\n if (customProvider.customSuggestionKinds) {\n for (const kind of customProvider.customSuggestionKinds()) {\n kind.applyTo?.forEach((applyTo) => {\n const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n if (exists) {\n // avoid duplicates\n if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n exists.kind.push(kind.id as SuggestionKind);\n }\n }\n });\n\n if (kind.overrideDefault) {\n const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n if (stbBehavior !== undefined) {\n stbBehavior.suggestions = kind.suggestionsResolver;\n continue;\n }\n }\n\n instanceSuggestionsRegistry.register({\n id: kind.id as SuggestionKind,\n name: kind.id,\n suggestions: kind.suggestionsResolver,\n });\n }\n }\n\n if (customProvider.schemas) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const standardSchemas = await s(ctx, m);\n if (!customProvider.schemas) {\n return [...standardSchemas];\n }\n const customSchemas = await customProvider.schemas.resolve();\n const customSchemaCompletionItems = customSchemas.map((x) => ({\n label: x.name,\n insertText: `${x.completion ?? x.name}.`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n sortText: CompletionItemPriority.High,\n }));\n return [...standardSchemas, ...customSchemaCompletionItems];\n };\n }\n\n if (customProvider.tables) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n const tableIdentifier = tableNameParser(tableToken);\n\n const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n label: x.name,\n // if no custom completion is provided it's safe to move cursor further in the statement\n insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.MediumHigh,\n }));\n return [...o, ...oo];\n };\n }\n\n if (customProvider.columns) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n let tableIdentifier;\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n if (tableToken && tableToken.value) {\n tableIdentifier = tableNameParser(tableToken);\n }\n\n let oo: CustomSuggestion[] = [];\n if (tableIdentifier) {\n const columns = await customProvider.columns?.resolve!(tableIdentifier);\n oo = columns\n ? columns.map<CustomSuggestion>((x) => ({\n label: x.name,\n insertText: x.completion ?? x.name,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.High,\n detail: x.type,\n documentation: x.description,\n }))\n : [];\n }\n return [...o, ...oo];\n };\n }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n if (!LANGUAGES_CACHE.has(id)) {\n LANGUAGES_CACHE.set(id, {\n functions: new Registry(),\n operators: new Registry(),\n suggestionKinds: new Registry(initSuggestionsKindRegistry),\n positionResolvers: new Registry(initStatementPositionResolvers),\n macros: new Registry(),\n });\n }\n\n return LANGUAGES_CACHE.get(id)!;\n}\n"],"names":["id","_a"],"mappings":"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"}
@@ -7,7 +7,7 @@ function useLatestCallback(callback) {
7
7
  });
8
8
  const hasCallback = Boolean(callback);
9
9
  return useMemo(
10
- () => hasCallback ? ((...args) => ref.current(...args)) : undefined,
10
+ () => hasCallback ? (...args) => ref.current(...args) : undefined,
11
11
  [hasCallback]
12
12
  );
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useLatestCallback.js","sources":["../../../../../src/components/SQLEditor/hooks/useLatestCallback.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\n/**\n * Returns a stable callback that always calls the latest version of the provided callback.\n * Useful for avoiding stale closures in imperative APIs like Monaco editor callbacks.\n *\n * @param callback The callback function that may change between renders (can be undefined)\n * @returns A stable callback reference that always calls the latest version, or undefined if no callback provided\n */\nexport function useLatestCallback<T extends (...args: any[]) => unknown>(callback: T | undefined): T | undefined {\n const ref = useRef(callback);\n\n useEffect(() => {\n ref.current = callback;\n });\n\n const hasCallback = Boolean(callback);\n\n return useMemo(\n () => (hasCallback ? (((...args: Parameters<T>) => ref.current!(...args)) as T) : undefined),\n [hasCallback]\n );\n}\n"],"names":[],"mappings":";;AASO,SAAS,kBAAyD,QAAwC,EAAA;AAC/G,EAAM,MAAA,GAAA,GAAM,OAAO,QAAQ,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,QAAA;AAAA,GACf,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,EAAO,OAAA,OAAA;AAAA,IACL,MAAO,eAAgB,CAAI,GAAA,IAAA,KAAwB,IAAI,OAAS,CAAA,GAAG,IAAI,CAAW,IAAA,SAAA;AAAA,IAClF,CAAC,WAAW;AAAA,GACd;AACF;;;;"}
1
+ {"version":3,"file":"useLatestCallback.js","sources":["../../../../../src/components/SQLEditor/hooks/useLatestCallback.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\n/**\n * Returns a stable callback that always calls the latest version of the provided callback.\n * Useful for avoiding stale closures in imperative APIs like Monaco editor callbacks.\n *\n * @param callback The callback function that may change between renders (can be undefined)\n * @returns A stable callback reference that always calls the latest version, or undefined if no callback provided\n */\nexport function useLatestCallback<T extends (...args: any[]) => unknown>(callback: T | undefined): T | undefined {\n const ref = useRef(callback);\n\n useEffect(() => {\n ref.current = callback;\n });\n\n const hasCallback = Boolean(callback);\n\n return useMemo(\n () => (hasCallback ? (((...args: Parameters<T>) => ref.current!(...args)) as T) : undefined),\n [hasCallback]\n );\n}\n"],"names":[],"mappings":";;AASO,SAAS,kBAAyD,QAAwC,EAAA;AAC/G,EAAM,MAAA,GAAA,GAAM,OAAO,QAAQ,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,QAAA;AAAA,GACf,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,EAAO,OAAA,OAAA;AAAA,IACL,MAAO,cAAgB,CAAI,GAAA,IAAA,KAAwB,IAAI,OAAS,CAAA,GAAG,IAAI,CAAW,GAAA,SAAA;AAAA,IAClF,CAAC,WAAW;AAAA,GACd;AACF;;;;"}
@@ -1,10 +1,4 @@
1
1
  import '@grafana/ui';
2
- import 'react';
3
- import '@grafana/data';
4
- import './language.js';
5
- import 'uuid';
6
- import '@grafana/runtime';
7
- import '../utils/debugger.js';
8
2
  import { getStandardSQLCompletionProvider } from './standardSQLCompletionItemProvider.js';
9
3
 
10
4
  const standardSQLLanguageDefinition = {
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sources":["../../../../../src/components/SQLEditor/standardSql/definition.ts"],"sourcesContent":["import { type LanguageDefinition } from '../components/SQLEditor';\nimport { getStandardSQLCompletionProvider } from './standardSQLCompletionItemProvider';\n\nconst standardSQLLanguageDefinition: LanguageDefinition = {\n id: 'standardSql',\n extensions: ['.sql'],\n aliases: ['sql'],\n mimetypes: [],\n loader: () => import('./language'),\n\n completionProvider: getStandardSQLCompletionProvider,\n};\n\nexport default standardSQLLanguageDefinition;\n"],"names":[],"mappings":";;;;;;;;;AAGA,MAAM,6BAAoD,GAAA;AAAA,EACxD,EAAI,EAAA,aAAA;AAAA,EACJ,UAAA,EAAY,CAAC,MAAM,CAAA;AAAA,EACnB,OAAA,EAAS,CAAC,KAAK,CAAA;AAAA,EACf,WAAW,EAAC;AAAA,EACZ,MAAA,EAAQ,MAAM,OAAO,eAAY,CAAA;AAAA,EAEjC,kBAAoB,EAAA;AACtB;;;;"}
1
+ {"version":3,"file":"definition.js","sources":["../../../../../src/components/SQLEditor/standardSql/definition.ts"],"sourcesContent":["import { type LanguageDefinition } from '../types';\nimport { getStandardSQLCompletionProvider } from './standardSQLCompletionItemProvider';\n\nconst standardSQLLanguageDefinition: LanguageDefinition = {\n id: 'standardSql',\n extensions: ['.sql'],\n aliases: ['sql'],\n mimetypes: [],\n loader: () => import('./language'),\n\n completionProvider: getStandardSQLCompletionProvider,\n};\n\nexport default standardSQLLanguageDefinition;\n"],"names":[],"mappings":";;;AAGA,MAAM,6BAAoD,GAAA;AAAA,EACxD,EAAI,EAAA,aAAA;AAAA,EACJ,UAAA,EAAY,CAAC,MAAM,CAAA;AAAA,EACnB,OAAA,EAAS,CAAC,KAAK,CAAA;AAAA,EACf,WAAW,EAAC;AAAA,EACZ,MAAA,EAAQ,MAAM,OAAO,eAAY,CAAA;AAAA,EAEjC,kBAAoB,EAAA;AACtB;;;;"}
@@ -1,5 +1,6 @@
1
- import { TokenType, StatementPosition } from '../types.js';
1
+ import { StatementPosition } from '../types.js';
2
2
  import '@grafana/ui';
3
+ import { TokenType } from '../utils/tokenType.js';
3
4
  import '@grafana/data';
4
5
 
5
6
  function getStatementPosition(currentToken, statementPositionResolversRegistry) {
@@ -1 +1 @@
1
- {"version":3,"file":"getStatementPosition.js","sources":["../../../../../src/components/SQLEditor/standardSql/getStatementPosition.ts"],"sourcesContent":["import { StatementPosition, TokenType } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { type StatementPositionResolversRegistryItem } from './types';\nimport { type Registry } from '@grafana/data';\n\n// Given current cursor position in the SQL editor, returns the statement position.\nexport function getStatementPosition(\n currentToken: LinkedToken | null,\n statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>\n): StatementPosition[] {\n const previousNonWhiteSpace = currentToken?.getPreviousNonWhiteSpaceToken();\n const previousKeyword = currentToken?.getPreviousKeyword();\n const previousIsSlash = currentToken?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, '/');\n const resolvers = statementPositionResolversRegistry.list();\n const positions = [];\n\n for (const resolver of resolvers) {\n if (\n resolver.resolve(currentToken, previousKeyword ?? null, previousNonWhiteSpace ?? null, Boolean(previousIsSlash))\n ) {\n positions.push(resolver.id);\n }\n }\n\n if (positions.length === 0) {\n return [StatementPosition.Unknown];\n }\n return positions;\n}\n"],"names":[],"mappings":";;;;AAMgB,SAAA,oBAAA,CACd,cACA,kCACqB,EAAA;AATvB,EAAA,IAAA,EAAA;AAUE,EAAA,MAAM,wBAAwB,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,6BAAA,EAAA;AAC5C,EAAA,MAAM,kBAAkB,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,kBAAA,EAAA;AACtC,EAAA,MAAM,mBAAkB,EAAc,GAAA,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,6BAAA,EAAA,KAAd,IAA+C,GAAA,SAAA,GAAA,EAAA,CAAA,EAAA,CAAG,UAAU,QAAU,EAAA,GAAA,CAAA;AAC9F,EAAM,MAAA,SAAA,GAAY,mCAAmC,IAAK,EAAA;AAC1D,EAAA,MAAM,YAAY,EAAC;AAEnB,EAAA,KAAA,MAAW,YAAY,SAAW,EAAA;AAChC,IACE,IAAA,QAAA,CAAS,OAAQ,CAAA,YAAA,EAAc,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,IAAA,EAAM,wDAAyB,IAAM,EAAA,OAAA,CAAQ,eAAe,CAAC,CAC/G,EAAA;AACA,MAAU,SAAA,CAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA;AAC5B;AAGF,EAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AAC1B,IAAO,OAAA,CAAC,kBAAkB,OAAO,CAAA;AAAA;AAEnC,EAAO,OAAA,SAAA;AACT;;;;"}
1
+ {"version":3,"file":"getStatementPosition.js","sources":["../../../../../src/components/SQLEditor/standardSql/getStatementPosition.ts"],"sourcesContent":["import { StatementPosition, TokenType } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { type StatementPositionResolversRegistryItem } from './types';\nimport { type Registry } from '@grafana/data';\n\n// Given current cursor position in the SQL editor, returns the statement position.\nexport function getStatementPosition(\n currentToken: LinkedToken | null,\n statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>\n): StatementPosition[] {\n const previousNonWhiteSpace = currentToken?.getPreviousNonWhiteSpaceToken();\n const previousKeyword = currentToken?.getPreviousKeyword();\n const previousIsSlash = currentToken?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, '/');\n const resolvers = statementPositionResolversRegistry.list();\n const positions = [];\n\n for (const resolver of resolvers) {\n if (\n resolver.resolve(currentToken, previousKeyword ?? null, previousNonWhiteSpace ?? null, Boolean(previousIsSlash))\n ) {\n positions.push(resolver.id);\n }\n }\n\n if (positions.length === 0) {\n return [StatementPosition.Unknown];\n }\n return positions;\n}\n"],"names":[],"mappings":";;;;;AAMgB,SAAA,oBAAA,CACd,cACA,kCACqB,EAAA;AATvB,EAAA,IAAA,EAAA;AAUE,EAAA,MAAM,wBAAwB,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,6BAAA,EAAA;AAC5C,EAAA,MAAM,kBAAkB,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,kBAAA,EAAA;AACtC,EAAA,MAAM,mBAAkB,EAAc,GAAA,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,6BAAA,EAAA,KAAd,IAA+C,GAAA,SAAA,GAAA,EAAA,CAAA,EAAA,CAAG,UAAU,QAAU,EAAA,GAAA,CAAA;AAC9F,EAAM,MAAA,SAAA,GAAY,mCAAmC,IAAK,EAAA;AAC1D,EAAA,MAAM,YAAY,EAAC;AAEnB,EAAA,KAAA,MAAW,YAAY,SAAW,EAAA;AAChC,IACE,IAAA,QAAA,CAAS,OAAQ,CAAA,YAAA,EAAc,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,IAAA,EAAM,wDAAyB,IAAM,EAAA,OAAA,CAAQ,eAAe,CAAC,CAC/G,EAAA;AACA,MAAU,SAAA,CAAA,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA;AAC5B;AAGF,EAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AAC1B,IAAO,OAAA,CAAC,kBAAkB,OAAO,CAAA;AAAA;AAEnC,EAAO,OAAA,SAAA;AACT;;;;"}
@@ -1,7 +1,8 @@
1
- import { StatementPosition, TokenType } from '../types.js';
1
+ import { StatementPosition } from '../types.js';
2
2
  import { SELECT, WITH, AS, WHERE, BY, GROUP, FROM, AND, ORDER, DESC, ASC } from './language.js';
3
3
  import '@grafana/data';
4
4
  import '@grafana/ui';
5
+ import { TokenType } from '../utils/tokenType.js';
5
6
 
6
7
  function initStatementPositionResolvers() {
7
8
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"statementPositionResolversRegistry.js","sources":["../../../../../src/components/SQLEditor/standardSql/statementPositionResolversRegistry.ts"],"sourcesContent":["import { StatementPosition, TokenType } from '../types';\nimport { AND, AS, ASC, BY, DESC, FROM, GROUP, ORDER, SELECT, WHERE, WITH } from './language';\nimport { type StatementPositionResolversRegistryItem } from './types';\n\nexport function initStatementPositionResolvers(): StatementPositionResolversRegistryItem[] {\n return [\n {\n id: StatementPosition.SelectKeyword,\n name: StatementPosition.SelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n currentToken.is(TokenType.Keyword, SELECT) ||\n (currentToken.is(TokenType.Keyword, SELECT) && currentToken.previous === null) ||\n previousIsSlash ||\n (currentToken.isIdentifier() && (previousIsSlash || currentToken?.previous === null)) ||\n (currentToken.isIdentifier() && SELECT.startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.WithKeyword,\n name: StatementPosition.WithKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n (currentToken.is(TokenType.Keyword, WITH) && currentToken.previous === null) ||\n (currentToken.isIdentifier() && WITH.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.AfterSelectKeyword,\n name: StatementPosition.AfterSelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousNonWhiteSpace?.value.toLowerCase() === SELECT),\n },\n {\n id: StatementPosition.AfterSelectArguments,\n name: StatementPosition.AfterSelectArguments,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value === ',');\n },\n },\n {\n id: StatementPosition.AfterSelectFuncFirstArgument,\n name: StatementPosition.AfterSelectFuncFirstArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT || previousKeyword?.value.toLowerCase() === AS) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterWhereFunctionArgument,\n name: StatementPosition.AfterWhereFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, WHERE) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupBy,\n name: StatementPosition.AfterGroupBy,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.isIdentifier() ||\n previousNonWhiteSpace?.isDoubleQuotedString() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()'))\n ),\n },\n {\n id: StatementPosition.SelectAlias,\n name: StatementPosition.SelectAlias,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n if (previousNonWhiteSpace?.value === ',' && previousKeyword?.value.toLowerCase() === AS) {\n return true;\n }\n\n return false;\n },\n },\n\n {\n id: StatementPosition.FromKeyword,\n name: StatementPosition.FromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // cloudwatch specific commented out\n // Boolean(previousKeyword?.value === SELECT && previousNonWhiteSpace?.isParenthesis()),\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value !== ',') ||\n ((currentToken?.isKeyword() || currentToken?.isIdentifier()) &&\n FROM.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n );\n },\n },\n {\n id: StatementPosition.AfterFromKeyword,\n name: StatementPosition.AfterFromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(!currentToken?.value.includes('.') && previousNonWhiteSpace?.value.toLowerCase() === FROM),\n },\n {\n id: StatementPosition.AfterSchema,\n name: StatementPosition.AfterSchema,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // depending on whether the schema was the last token in the query or not, current token might be whitespace or dot. if whitespace, just use the previous token\n if (currentToken?.isWhiteSpace() && currentToken?.next) {\n currentToken = currentToken?.previous;\n previousNonWhiteSpace = currentToken!.getPreviousNonWhiteSpaceToken();\n }\n return Boolean(\n currentToken?.isIdentifier() &&\n currentToken?.value.endsWith('.') &&\n previousNonWhiteSpace?.value.toLowerCase() === FROM\n );\n },\n },\n {\n id: StatementPosition.AfterFrom,\n name: StatementPosition.AfterFrom,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isDoubleQuotedString()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isIdentifier()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isVariable())\n // cloudwatch specific\n // (previousKeyword?.value === SCHEMA && previousNonWhiteSpace?.is(TokenType.Parenthesis, ')'))\n ),\n },\n {\n id: StatementPosition.AfterTable,\n name: StatementPosition.AfterTable,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === FROM &&\n (previousNonWhiteSpace?.isVariable() ||\n (previousNonWhiteSpace?.value !== '' && previousNonWhiteSpace?.value.toLowerCase() !== FROM))\n );\n },\n },\n {\n id: StatementPosition.WhereKeyword,\n name: StatementPosition.WhereKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.isKeyword() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') ||\n previousNonWhiteSpace?.is(TokenType.Operator, AND))\n ),\n },\n {\n id: StatementPosition.WhereComparisonOperator,\n name: StatementPosition.WhereComparisonOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n !previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.isOperator() &&\n !currentToken?.is(TokenType.Delimiter, '.') &&\n !currentToken?.isParenthesis() &&\n (previousNonWhiteSpace?.isIdentifier() || previousNonWhiteSpace?.isDoubleQuotedString())\n ),\n },\n {\n id: StatementPosition.WhereValue,\n name: StatementPosition.WhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.value.toLowerCase() === WHERE && previousNonWhiteSpace?.isOperator()),\n },\n {\n id: StatementPosition.AfterWhereValue,\n name: StatementPosition.AfterWhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.is(TokenType.Operator, 'and') ||\n previousNonWhiteSpace?.is(TokenType.Operator, 'or') ||\n previousNonWhiteSpace?.isString() ||\n previousNonWhiteSpace?.isNumber() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()') ||\n previousNonWhiteSpace?.isTemplateVariable() ||\n (previousNonWhiteSpace?.is(TokenType.IdentifierQuote) &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Identifier) &&\n previousNonWhiteSpace\n ?.getPreviousNonWhiteSpaceToken()\n ?.getPreviousNonWhiteSpaceToken()\n ?.is(TokenType.IdentifierQuote)))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupByKeywords,\n name: StatementPosition.AfterGroupByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Keyword, BY) || previousNonWhiteSpace?.is(TokenType.Delimiter, ','))\n ),\n },\n {\n id: StatementPosition.AfterGroupByFunctionArgument,\n name: StatementPosition.AfterGroupByFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterOrderByKeywords,\n name: StatementPosition.AfterOrderByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousNonWhiteSpace?.is(TokenType.Keyword, BY) &&\n previousNonWhiteSpace?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER)\n ),\n },\n {\n id: StatementPosition.AfterOrderByFunction,\n name: StatementPosition.AfterOrderByFunction,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER) &&\n previousNonWhiteSpace?.is(TokenType.Parenthesis) &&\n previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Function)\n ),\n },\n {\n id: StatementPosition.AfterOrderByDirection,\n name: StatementPosition.AfterOrderByDirection,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.is(TokenType.Keyword, DESC) || previousKeyword?.is(TokenType.Keyword, ASC)),\n },\n {\n id: StatementPosition.AfterIsOperator,\n name: StatementPosition.AfterIsOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousNonWhiteSpace?.is(TokenType.Operator, 'IS'));\n },\n },\n {\n id: StatementPosition.AfterIsNotOperator,\n name: StatementPosition.AfterIsNotOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousNonWhiteSpace?.is(TokenType.Operator, 'NOT') &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, 'IS')\n );\n },\n },\n ];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statementPositionResolversRegistry.js","sources":["../../../../../src/components/SQLEditor/standardSql/statementPositionResolversRegistry.ts"],"sourcesContent":["import { StatementPosition, TokenType } from '../types';\nimport { AND, AS, ASC, BY, DESC, FROM, GROUP, ORDER, SELECT, WHERE, WITH } from './language';\nimport { type StatementPositionResolversRegistryItem } from './types';\n\nexport function initStatementPositionResolvers(): StatementPositionResolversRegistryItem[] {\n return [\n {\n id: StatementPosition.SelectKeyword,\n name: StatementPosition.SelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n currentToken.is(TokenType.Keyword, SELECT) ||\n (currentToken.is(TokenType.Keyword, SELECT) && currentToken.previous === null) ||\n previousIsSlash ||\n (currentToken.isIdentifier() && (previousIsSlash || currentToken?.previous === null)) ||\n (currentToken.isIdentifier() && SELECT.startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.WithKeyword,\n name: StatementPosition.WithKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n (currentToken.is(TokenType.Keyword, WITH) && currentToken.previous === null) ||\n (currentToken.isIdentifier() && WITH.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.AfterSelectKeyword,\n name: StatementPosition.AfterSelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousNonWhiteSpace?.value.toLowerCase() === SELECT),\n },\n {\n id: StatementPosition.AfterSelectArguments,\n name: StatementPosition.AfterSelectArguments,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value === ',');\n },\n },\n {\n id: StatementPosition.AfterSelectFuncFirstArgument,\n name: StatementPosition.AfterSelectFuncFirstArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT || previousKeyword?.value.toLowerCase() === AS) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterWhereFunctionArgument,\n name: StatementPosition.AfterWhereFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, WHERE) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupBy,\n name: StatementPosition.AfterGroupBy,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.isIdentifier() ||\n previousNonWhiteSpace?.isDoubleQuotedString() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()'))\n ),\n },\n {\n id: StatementPosition.SelectAlias,\n name: StatementPosition.SelectAlias,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n if (previousNonWhiteSpace?.value === ',' && previousKeyword?.value.toLowerCase() === AS) {\n return true;\n }\n\n return false;\n },\n },\n\n {\n id: StatementPosition.FromKeyword,\n name: StatementPosition.FromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // cloudwatch specific commented out\n // Boolean(previousKeyword?.value === SELECT && previousNonWhiteSpace?.isParenthesis()),\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value !== ',') ||\n ((currentToken?.isKeyword() || currentToken?.isIdentifier()) &&\n FROM.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n );\n },\n },\n {\n id: StatementPosition.AfterFromKeyword,\n name: StatementPosition.AfterFromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(!currentToken?.value.includes('.') && previousNonWhiteSpace?.value.toLowerCase() === FROM),\n },\n {\n id: StatementPosition.AfterSchema,\n name: StatementPosition.AfterSchema,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // depending on whether the schema was the last token in the query or not, current token might be whitespace or dot. if whitespace, just use the previous token\n if (currentToken?.isWhiteSpace() && currentToken?.next) {\n currentToken = currentToken?.previous;\n previousNonWhiteSpace = currentToken!.getPreviousNonWhiteSpaceToken();\n }\n return Boolean(\n currentToken?.isIdentifier() &&\n currentToken?.value.endsWith('.') &&\n previousNonWhiteSpace?.value.toLowerCase() === FROM\n );\n },\n },\n {\n id: StatementPosition.AfterFrom,\n name: StatementPosition.AfterFrom,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isDoubleQuotedString()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isIdentifier()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isVariable())\n // cloudwatch specific\n // (previousKeyword?.value === SCHEMA && previousNonWhiteSpace?.is(TokenType.Parenthesis, ')'))\n ),\n },\n {\n id: StatementPosition.AfterTable,\n name: StatementPosition.AfterTable,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === FROM &&\n (previousNonWhiteSpace?.isVariable() ||\n (previousNonWhiteSpace?.value !== '' && previousNonWhiteSpace?.value.toLowerCase() !== FROM))\n );\n },\n },\n {\n id: StatementPosition.WhereKeyword,\n name: StatementPosition.WhereKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.isKeyword() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') ||\n previousNonWhiteSpace?.is(TokenType.Operator, AND))\n ),\n },\n {\n id: StatementPosition.WhereComparisonOperator,\n name: StatementPosition.WhereComparisonOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n !previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.isOperator() &&\n !currentToken?.is(TokenType.Delimiter, '.') &&\n !currentToken?.isParenthesis() &&\n (previousNonWhiteSpace?.isIdentifier() || previousNonWhiteSpace?.isDoubleQuotedString())\n ),\n },\n {\n id: StatementPosition.WhereValue,\n name: StatementPosition.WhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.value.toLowerCase() === WHERE && previousNonWhiteSpace?.isOperator()),\n },\n {\n id: StatementPosition.AfterWhereValue,\n name: StatementPosition.AfterWhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.is(TokenType.Operator, 'and') ||\n previousNonWhiteSpace?.is(TokenType.Operator, 'or') ||\n previousNonWhiteSpace?.isString() ||\n previousNonWhiteSpace?.isNumber() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()') ||\n previousNonWhiteSpace?.isTemplateVariable() ||\n (previousNonWhiteSpace?.is(TokenType.IdentifierQuote) &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Identifier) &&\n previousNonWhiteSpace\n ?.getPreviousNonWhiteSpaceToken()\n ?.getPreviousNonWhiteSpaceToken()\n ?.is(TokenType.IdentifierQuote)))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupByKeywords,\n name: StatementPosition.AfterGroupByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Keyword, BY) || previousNonWhiteSpace?.is(TokenType.Delimiter, ','))\n ),\n },\n {\n id: StatementPosition.AfterGroupByFunctionArgument,\n name: StatementPosition.AfterGroupByFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterOrderByKeywords,\n name: StatementPosition.AfterOrderByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousNonWhiteSpace?.is(TokenType.Keyword, BY) &&\n previousNonWhiteSpace?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER)\n ),\n },\n {\n id: StatementPosition.AfterOrderByFunction,\n name: StatementPosition.AfterOrderByFunction,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER) &&\n previousNonWhiteSpace?.is(TokenType.Parenthesis) &&\n previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Function)\n ),\n },\n {\n id: StatementPosition.AfterOrderByDirection,\n name: StatementPosition.AfterOrderByDirection,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.is(TokenType.Keyword, DESC) || previousKeyword?.is(TokenType.Keyword, ASC)),\n },\n {\n id: StatementPosition.AfterIsOperator,\n name: StatementPosition.AfterIsOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousNonWhiteSpace?.is(TokenType.Operator, 'IS'));\n },\n },\n {\n id: StatementPosition.AfterIsNotOperator,\n name: StatementPosition.AfterIsNotOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousNonWhiteSpace?.is(TokenType.Operator, 'NOT') &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, 'IS')\n );\n },\n },\n ];\n}\n"],"names":[],"mappings":";;;;;;AAIO,SAAS,8BAA2E,GAAA;AACzF,EAAO,OAAA;AAAA,IACL;AAAA,MACE,IAAI,iBAAkB,CAAA,aAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,aAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAC9D,KAAA,OAAA;AAAA,QACE,iBAAiB,IACd,IAAA,YAAA,CAAa,YAAa,EAAA,IAAK,aAAa,QAAa,KAAA,IAAA,IAC1D,YAAa,CAAA,EAAA,CAAG,UAAU,OAAS,EAAA,MAAM,KACxC,YAAa,CAAA,EAAA,CAAG,UAAU,OAAS,EAAA,MAAM,CAAK,IAAA,YAAA,CAAa,aAAa,IACzE,IAAA,eAAA,IACC,aAAa,YAAa,EAAA,KAAM,oBAAmB,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,QAAA,MAAa,IAC9E,CAAA,IAAA,YAAA,CAAa,cAAkB,IAAA,MAAA,CAAO,WAAW,YAAa,CAAA,KAAA,CAAM,aAAa;AAAA;AACtF,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,WAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,WAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAC9D,KAAA,OAAA;AAAA,QACE,YAAA,KAAiB,IACd,IAAA,YAAA,CAAa,YAAa,EAAA,IAAK,YAAa,CAAA,QAAA,KAAa,IACzD,IAAA,YAAA,CAAa,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,IAAI,CAAK,IAAA,YAAA,CAAa,QAAa,KAAA,IAAA,IACtE,YAAa,CAAA,YAAA,EAAkB,IAAA,IAAA,CAAK,WAAY,EAAA,CAAE,UAAW,CAAA,YAAA,CAAa,KAAM,CAAA,WAAA,EAAa;AAAA;AAClG,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,kBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,kBAAA;AAAA,MACxB,OAAA,EAAS,CAAC,YAAA,EAAc,eAAiB,EAAA,qBAAA,EAAuB,oBAC9D,OAAQ,CAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,KAAM,CAAA,WAAA,EAAA,MAAkB,MAAM;AAAA,KACjE;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,oBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,oBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAA,OAAO,SAAQ,eAAiB,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,KAAA,CAAM,mBAAkB,MAAU,IAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,WAAU,GAAG,CAAA;AAAA;AACxG,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,4BAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,4BAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAO,OAAA,OAAA;AAAA,UAAA,CAAA,CACJ,sDAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,MAAU,IAAA,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,MAAM,WAAkB,EAAA,MAAA,EAAA,MAAA,CAC1F,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,EAAA,CAAG,UAAU,WAAa,EAAA,GAAA,CAAA,MAAQ,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,EAAA,CAAG,UAAU,WAAa,EAAA,IAAA,CAAA,CAAA;AAAA,SACtG;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,0BAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,0BAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAO,OAAA,OAAA;AAAA,UAAA,CACL,eAAiB,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,EAAA,CAAG,SAAU,CAAA,OAAA,EAAS,KACpC,CAAA,MAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,WAAa,EAAA,GAAA,CAAA,MAAQ,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,EAAA,CAAG,UAAU,WAAa,EAAA,IAAA,CAAA,CAAA;AAAA,SACtG;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,YAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,YAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAiB,KAAA;AAnEvF,QAAA,IAAA,EAAA;AAoEQ,QAAA,OAAA,OAAA;AAAA,UACE,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,EAAA,CAAA,MAAA,CACrC,2DAAiB,kBAAjB,EAAA,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAuC,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,KAAA,CAAA,CAAA,KAAA,CAC5D,kEAAuB,YACtB,EAAA,MAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,oBACvB,EAAA,CAAA,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,aAAa,GACjD,CAAA,CAAA,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,WAAa,EAAA,IAAA,CAAA,CAAA;AAAA,SACvD;AAAA;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,WAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,WAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAA,IAAA,CAAI,kEAAuB,KAAU,MAAA,GAAA,IAAA,CAAO,eAAiB,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,KAAA,CAAM,mBAAkB,EAAI,EAAA;AACvF,UAAO,OAAA,IAAA;AAAA;AAGT,QAAO,OAAA,KAAA;AAAA;AACT,KACF;AAAA,IAEA;AAAA,MACE,IAAI,iBAAkB,CAAA,WAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,WAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAGlF,QAAO,OAAA,OAAA;AAAA,UAAA,CACJ,sDAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,WAAU,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,KAAA,MAAU,SACjF,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,SAAA,EAAA,MAAe,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,YAAA,EAAA,CAAA,KAC3C,KAAK,WAAY,EAAA,CAAE,WAAW,YAAa,CAAA,KAAA,CAAM,aAAa;AAAA,SACpE;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,gBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,gBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAC9D,KAAA,OAAA,CAAQ,EAAC,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAc,MAAM,QAAS,CAAA,GAAA,CAAA,CAAA,IAAA,CAAQ,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,KAAA,CAAM,mBAAkB,IAAI;AAAA,KACrG;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,WAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,WAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAElF,QAAI,IAAA,CAAA,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAc,YAAkB,EAAA,MAAA,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAc,IAAM,CAAA,EAAA;AACtD,UAAA,YAAA,GAAe,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,QAAA;AAC7B,UAAA,qBAAA,GAAwB,aAAc,6BAA8B,EAAA;AAAA;AAEtE,QAAO,OAAA,OAAA;AAAA,UACL,CAAA,YAAA,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAc,oBACZ,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,KAAA,CAAM,SAAS,GAC7B,CAAA,CAAA,IAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,MAAM,WAAkB,EAAA,MAAA;AAAA,SACnD;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,SAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,SAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAC9D,KAAA,OAAA;AAAA,QAAA,CACG,sDAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,IAAQ,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,4BACtE,eAAiB,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,KAAA,CAAM,WAAkB,EAAA,MAAA,IAAA,KAAQ,kEAAuB,YACxE,EAAA,CAAA,IAAA,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,SAAQ,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,UAAA,EAAA;AAAA;AAAA;AAAA;AAG7E,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,UAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,UAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAO,OAAA,OAAA;AAAA,UACL,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,IACtC,KAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,UACrB,EAAA,KAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,KAAU,MAAA,EAAA,IAAA,CAAM,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,KAAA,CAAM,WAAkB,EAAA,MAAA,IAAA;AAAA,SAC7F;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,YAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,YAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAC9D,KAAA,OAAA;AAAA,QAAA,CACE,eAAiB,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,KAAA,CAAM,WAAkB,EAAA,MAAA,KAAA,KAAA,CACtC,kEAAuB,SACtB,EAAA,MAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,WAAa,EAAA,GAAA,CAAA,CAAA,KACjD,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,EAAA,CAAG,UAAU,QAAU,EAAA,GAAA,CAAA,CAAA;AAAA;AACpD,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,uBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,uBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAiB,KAAA;AAjKvF,QAAA,IAAA,EAAA;AAkKQ,QAAA,OAAA,OAAA;AAAA,UACE,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,MAAM,WAAkB,EAAA,MAAA,KAAA,IACvC,GAAC,EAAuB,GAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,6BAAA,EAAA,KAAvB,sBAAwD,UACzD,EAAA,CAAA,IAAA,EAAC,gDAAc,EAAG,CAAA,SAAA,CAAU,WAAW,GACvC,CAAA,CAAA,IAAA,EAAC,gDAAc,aACd,EAAA,CAAA,KAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,oBAAkB,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,oBAAA,EAAA,CAAA;AAAA,SACrE;AAAA;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,UAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,UAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,qBAAuB,EAAA,eAAA,KAC9D,OAAQ,CAAA,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,KAAM,CAAA,WAAA,EAAA,MAAkB,KAAS,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,UAAY,EAAA,CAAA;AAAA,KACjG;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,eAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,eAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAnL1F,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAoLQ,QAAO,OAAA,OAAA;AAAA,UACL,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,MAAM,WAAkB,EAAA,MAAA,KAAA,KAAA,CACtC,kEAAuB,EAAG,CAAA,SAAA,CAAU,UAAU,KAC7C,CAAA,MAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,GAAG,SAAU,CAAA,QAAA,EAAU,WAC9C,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,QAAA,EAAA,CAAA,KACvB,kEAAuB,QACvB,EAAA,CAAA,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,WAAa,EAAA,GAAA,CAAA,CAAA,KACjD,kEAAuB,EAAG,CAAA,SAAA,CAAU,aAAa,IACjD,CAAA,CAAA,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,0BACtB,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,EAAA,CAAG,SAAU,CAAA,eAAA,CAAA,MAAA,CACnC,EAAsB,GAAA,qBAAA,CAAA,6BAAA,OAAtB,IAAuD,GAAA,SAAA,GAAA,EAAA,CAAA,EAAA,CAAG,UAAU,UACpE,CAAA,CAAA,KAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CACI,oCADJ,IAEI,GAAA,SAAA,GAAA,EAAA,CAAA,6BAAA,EAAA,KAFJ,IAGI,GAAA,SAAA,GAAA,EAAA,CAAA,EAAA,CAAG,SAAU,CAAA,eAAA,CAAA,CAAA;AAAA,SACzB;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,oBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,oBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAiB,KAAA;AAzMvF,QAAA,IAAA,EAAA;AA0MQ,QAAA,OAAA,OAAA;AAAA,UACE,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,GAAG,SAAU,CAAA,OAAA,EAAS,UACrC,EAAiB,GAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,kBAAA,EAAA,KAAjB,sBAAuC,EAAG,CAAA,SAAA,CAAU,SAAS,KAC5D,CAAA,CAAA,KAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,GAAG,SAAU,CAAA,OAAA,EAAS,SAAO,qBAAuB,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAA,EAAA,CAAG,UAAU,SAAW,EAAA,GAAA,CAAA,CAAA;AAAA,SACxG;AAAA;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,4BAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,4BAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAnN1F,QAAA,IAAA,EAAA;AAoNQ,QAAO,OAAA,OAAA;AAAA,UACL,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,GAAG,SAAU,CAAA,OAAA,EAAS,UACrC,EAAiB,GAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,kBAAA,EAAA,KAAjB,sBAAuC,EAAG,CAAA,SAAA,CAAU,SAAS,KAC5D,CAAA,CAAA,KAAA,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,GAAG,SAAU,CAAA,WAAA,EAAa,UAAQ,YAAc,IAAA,IAAA,GAAA,SAAA,GAAA,YAAA,CAAA,EAAA,CAAG,UAAU,WAAa,EAAA,IAAA,CAAA,CAAA;AAAA,SACtG;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,oBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,oBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAiB,KAAA;AA9NvF,QAAA,IAAA,EAAA;AA+NQ,QAAA,OAAA,OAAA;AAAA,UACE,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,EAAA,CAAA,MAAA,CAC3C,uEAAuB,kBAAvB,EAAA,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAA6C,EAAG,CAAA,SAAA,CAAU,OAAS,EAAA,KAAA,CAAA;AAAA,SACvE;AAAA;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,oBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,oBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAiB,KAAA;AAvOvF,QAAA,IAAA,EAAA,EAAA,EAAA;AAwOQ,QAAA,OAAA,OAAA;AAAA,UACE,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,GAAG,SAAU,CAAA,OAAA,EAAS,UACrC,EAAiB,GAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAA,kBAAA,EAAA,KAAjB,sBAAuC,EAAG,CAAA,SAAA,CAAU,SAAS,KAC7D,CAAA,CAAA,KAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,GAAG,SAAU,CAAA,WAAA,CAAA,CAAA,KAAA,CACpC,uEAAuB,6BAAvB,EAAA,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAwD,GAAG,SAAU,CAAA,QAAA,CAAA;AAAA,SACzE;AAAA;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,qBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,qBAAA;AAAA,MACxB,SAAS,CAAC,YAAA,EAAc,eAAiB,EAAA,qBAAA,EAAuB,oBAC9D,OAAQ,CAAA,CAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,EAAG,CAAA,SAAA,CAAU,SAAS,IAAS,CAAA,MAAA,eAAA,IAAA,IAAA,GAAA,SAAA,GAAA,eAAA,CAAiB,EAAG,CAAA,SAAA,CAAU,SAAS,GAAI,CAAA,CAAA;AAAA,KACvG;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,eAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,eAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AAClF,QAAA,OAAO,OAAQ,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,UAAU,IAAK,CAAA,CAAA;AAAA;AACpE,KACF;AAAA,IACA;AAAA,MACE,IAAI,iBAAkB,CAAA,kBAAA;AAAA,MACtB,MAAM,iBAAkB,CAAA,kBAAA;AAAA,MACxB,OAAS,EAAA,CAAC,YAAc,EAAA,eAAA,EAAiB,uBAAuB,eAAoB,KAAA;AA/P1F,QAAA,IAAA,EAAA;AAgQQ,QAAO,OAAA,OAAA;AAAA,UACL,CAAA,qBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,qBAAA,CAAuB,EAAG,CAAA,SAAA,CAAU,QAAU,EAAA,KAAA,CAAA,MAAA,CAC5C,EAAsB,GAAA,qBAAA,CAAA,6BAAA,EAAtB,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAuD,EAAG,CAAA,SAAA,CAAU,QAAU,EAAA,IAAA,CAAA;AAAA,SAClF;AAAA;AACF;AACF,GACF;AACF;;;;"}
@@ -1,5 +1,4 @@
1
1
  import '@grafana/ui';
2
- import '@grafana/data';
3
2
 
4
3
  var OperatorType = /* @__PURE__ */ ((OperatorType2) => {
5
4
  OperatorType2[OperatorType2["Comparison"] = 0] = "Comparison";
@@ -14,21 +13,6 @@ var MacroType = /* @__PURE__ */ ((MacroType2) => {
14
13
  MacroType2[MacroType2["Table"] = 4] = "Table";
15
14
  return MacroType2;
16
15
  })(MacroType || {});
17
- var TokenType = /* @__PURE__ */ ((TokenType2) => {
18
- TokenType2["Parenthesis"] = "delimiter.parenthesis.sql";
19
- TokenType2["Whitespace"] = "white.sql";
20
- TokenType2["Keyword"] = "keyword.sql";
21
- TokenType2["Delimiter"] = "delimiter.sql";
22
- TokenType2["Operator"] = "operator.sql";
23
- TokenType2["Identifier"] = "identifier.sql";
24
- TokenType2["IdentifierQuote"] = "identifier.quote.sql";
25
- TokenType2["Type"] = "type.sql";
26
- TokenType2["Function"] = "predefined.sql";
27
- TokenType2["Number"] = "number.sql";
28
- TokenType2["String"] = "string.sql";
29
- TokenType2["Variable"] = "variable.sql";
30
- return TokenType2;
31
- })(TokenType || {});
32
16
  var StatementPosition = /* @__PURE__ */ ((StatementPosition2) => {
33
17
  StatementPosition2["Unknown"] = "unknown";
34
18
  StatementPosition2["SelectKeyword"] = "selectKeyword";
@@ -136,5 +120,5 @@ var SQLEditorMode = /* @__PURE__ */ ((SQLEditorMode2) => {
136
120
  return SQLEditorMode2;
137
121
  })(SQLEditorMode || {});
138
122
 
139
- export { CompletionItemInsertTextRule, CompletionItemKind, CompletionItemPriority, MacroType, OperatorType, SQLEditorMode, StatementPosition, SuggestionKind, TokenType };
123
+ export { CompletionItemInsertTextRule, CompletionItemKind, CompletionItemPriority, MacroType, OperatorType, SQLEditorMode, StatementPosition, SuggestionKind };
140
124
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/SQLEditor/types.ts"],"sourcesContent":["import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type SQLMonarchLanguage, type StatementPositionResolver, type SuggestionsResolver } from './standardSql/types';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n position: monacoTypes.IPosition;\n kind: SuggestionKind[];\n statementPosition: StatementPosition[];\n currentToken: LinkedToken | null;\n range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n id: string;\n suggestionsResolver: SuggestionsResolver;\n applyTo?: Array<StatementPosition | string>;\n overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n id: string;\n name?: string;\n resolve: StatementPositionResolver;\n overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n name: string;\n type?: string;\n description?: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface SchemaDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface TableDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface Operator {\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n}\n\nexport interface TableIdentifier {\n table?: string;\n schema?: string;\n catalog?: string;\n}\n\nexport interface SQLCompletionItemProvider\n extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n /**\n * Allows dialect specific functions to be added to the completion list.\n * @alpha\n */\n supportedFunctions?: () => Array<{\n id: string;\n name: string;\n description?: string;\n }>;\n\n /**\n * Allows dialect specific operators to be added to the completion list.\n * @alpha\n */\n supportedOperators?: () => Array<{\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n }>;\n\n supportedMacros?: () => Array<{\n id: string;\n text: string;\n type: MacroType;\n args: string[];\n description?: string;\n }>;\n\n /**\n * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n * @alpha\n */\n customSuggestionKinds?: SuggestionKindProvider;\n\n /**\n * Allows custom statement placement definition.\n * @alpha\n */\n customStatementPlacement?: StatementPlacementProvider;\n\n /**\n * Allows providing a custom function for resolving schemas.\n * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n schemas?: {\n resolve: () => Promise<SchemaDefinition[]>;\n };\n\n /**\n * Allows providing a custom function for resolving db tables.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n tables?: {\n resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n };\n /**\n * Allows providing a custom function for resolving table.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n columns?: {\n resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n };\n\n /**\n * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n * @alpha\n */\n provideCompletionItems?: (\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position,\n context: monacoTypes.languages.CompletionContext,\n token: monacoTypes.CancellationToken,\n positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n ) => monacoTypes.languages.CompletionList;\n}\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport enum OperatorType {\n Comparison,\n Logical,\n}\n\nexport enum MacroType {\n Value,\n Filter,\n Group,\n Column,\n Table,\n}\n\nexport enum TokenType {\n Parenthesis = 'delimiter.parenthesis.sql',\n Whitespace = 'white.sql',\n Keyword = 'keyword.sql',\n Delimiter = 'delimiter.sql',\n Operator = 'operator.sql',\n Identifier = 'identifier.sql',\n IdentifierQuote = 'identifier.quote.sql',\n Type = 'type.sql',\n Function = 'predefined.sql',\n Number = 'number.sql',\n String = 'string.sql',\n Variable = 'variable.sql',\n}\n\nexport enum StatementPosition {\n Unknown = 'unknown',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n AfterSelectKeyword = 'afterSelectKeyword',\n AfterSelectArguments = 'afterSelectArguments',\n AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n SelectAlias = 'selectAlias',\n AfterFromKeyword = 'afterFromKeyword',\n AfterTable = 'afterTable',\n SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n FromKeyword = 'fromKeyword',\n AfterFrom = 'afterFrom',\n WhereKeyword = 'whereKeyword',\n WhereComparisonOperator = 'whereComparisonOperator',\n WhereValue = 'whereValue',\n AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n AfterWhereValue = 'afterWhereValue',\n AfterGroupByKeywords = 'afterGroupByKeywords',\n AfterGroupBy = 'afterGroupBy',\n AfterOrderByKeywords = 'afterOrderByKeywords',\n AfterOrderByFunction = 'afterOrderByFunction',\n AfterOrderByDirection = 'afterOrderByDirection',\n AfterIsOperator = 'afterIsOperator',\n AfterIsNotOperator = 'afterIsNotOperator',\n AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n Schemas = 'schemas',\n Tables = 'tables',\n Columns = 'columns',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n FunctionsWithArguments = 'functionsWithArguments',\n FromKeyword = 'fromKeyword',\n WhereKeyword = 'whereKeyword',\n GroupByKeywords = 'groupByKeywords',\n OrderByKeywords = 'orderByKeywords',\n FunctionsWithoutArguments = 'functionsWithoutArguments',\n LimitKeyword = 'limitKeyword',\n SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n ComparisonOperators = 'comparisonOperators',\n LogicalOperators = 'logicalOperators',\n SelectMacro = 'selectMacro',\n TableMacro = 'tableMacro',\n FilterMacro = 'filterMacro',\n GroupMacro = 'groupMacro',\n BoolValues = 'boolValues',\n NullValue = 'nullValue',\n NotKeyword = 'notKeyword',\n TemplateVariables = 'templateVariables',\n StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n High = 'a',\n MediumHigh = 'd',\n Medium = 'g',\n MediumLow = 'k',\n Low = 'q',\n}\n\nexport enum CompletionItemKind {\n Method = 0,\n Function = 1,\n Constructor = 2,\n Field = 3,\n Variable = 4,\n Class = 5,\n Struct = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Event = 10,\n Operator = 11,\n Unit = 12,\n Value = 13,\n Constant = 14,\n Enum = 15,\n EnumMember = 16,\n Keyword = 17,\n Text = 18,\n Color = 19,\n File = 20,\n Reference = 21,\n Customcolor = 22,\n Folder = 23,\n TypeParameter = 24,\n User = 25,\n Issue = 26,\n Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n KeepWhitespace = 1,\n InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n"],"names":["OperatorType","MacroType","TokenType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/SQLEditor/types.ts"],"sourcesContent":["import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n position: monacoTypes.IPosition;\n kind: SuggestionKind[];\n statementPosition: StatementPosition[];\n currentToken: LinkedToken | null;\n range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n id: string;\n suggestionsResolver: SuggestionsResolver;\n applyTo?: Array<StatementPosition | string>;\n overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n id: string;\n name?: string;\n resolve: StatementPositionResolver;\n overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n name: string;\n type?: string;\n description?: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface SchemaDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface TableDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface Operator {\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n}\n\nexport interface TableIdentifier {\n table?: string;\n schema?: string;\n catalog?: string;\n}\n\nexport interface SQLCompletionItemProvider\n extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n /**\n * Allows dialect specific functions to be added to the completion list.\n * @alpha\n */\n supportedFunctions?: () => Array<{\n id: string;\n name: string;\n description?: string;\n }>;\n\n /**\n * Allows dialect specific operators to be added to the completion list.\n * @alpha\n */\n supportedOperators?: () => Array<{\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n }>;\n\n supportedMacros?: () => Array<{\n id: string;\n text: string;\n type: MacroType;\n args: string[];\n description?: string;\n }>;\n\n /**\n * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n * @alpha\n */\n customSuggestionKinds?: SuggestionKindProvider;\n\n /**\n * Allows custom statement placement definition.\n * @alpha\n */\n customStatementPlacement?: StatementPlacementProvider;\n\n /**\n * Allows providing a custom function for resolving schemas.\n * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n schemas?: {\n resolve: () => Promise<SchemaDefinition[]>;\n };\n\n /**\n * Allows providing a custom function for resolving db tables.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n tables?: {\n resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n };\n /**\n * Allows providing a custom function for resolving table.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n columns?: {\n resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n };\n\n /**\n * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n * @alpha\n */\n provideCompletionItems?: (\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position,\n context: monacoTypes.languages.CompletionContext,\n token: monacoTypes.CancellationToken,\n positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n ) => monacoTypes.languages.CompletionList;\n}\n\nexport interface SQLMonarchLanguage extends monacoTypes.languages.IMonarchLanguage {\n keywords?: string[];\n builtinFunctions?: string[];\n\n /* Example: AND, OR, LIKE */\n logicalOperators?: string[];\n /* Example: >, <>, = */\n comparisonOperators?: string[];\n\n /** Used by basic languages in the monaco registry **/\n operators?: string[];\n}\n\nexport type StatementPositionResolver = (\n currentToken: LinkedToken | null,\n previousKeyword: LinkedToken | null,\n previousNonWhiteSpace: LinkedToken | null,\n previousIsSlash: Boolean\n) => Boolean;\n\nexport type SuggestionsResolver = <T extends PositionContext = PositionContext>(\n positionContext: T\n) => Promise<CustomSuggestion[]>;\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport interface LanguageDefinition extends monacoTypes.languages.ILanguageExtensionPoint {\n loader?: (module: any) => Promise<{\n language: SQLMonarchLanguage;\n conf: monacoTypes.languages.LanguageConfiguration;\n }>;\n // Provides API for customizing the autocomplete\n completionProvider?: (m: Monaco, language: SQLMonarchLanguage) => SQLCompletionItemProvider;\n // Function that returns a formatted query\n formatter?: (q: string) => string;\n}\n\nexport enum OperatorType {\n Comparison,\n Logical,\n}\n\nexport enum MacroType {\n Value,\n Filter,\n Group,\n Column,\n Table,\n}\n\nexport { TokenType } from './utils/tokenType';\n\nexport enum StatementPosition {\n Unknown = 'unknown',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n AfterSelectKeyword = 'afterSelectKeyword',\n AfterSelectArguments = 'afterSelectArguments',\n AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n SelectAlias = 'selectAlias',\n AfterFromKeyword = 'afterFromKeyword',\n AfterTable = 'afterTable',\n SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n FromKeyword = 'fromKeyword',\n AfterFrom = 'afterFrom',\n WhereKeyword = 'whereKeyword',\n WhereComparisonOperator = 'whereComparisonOperator',\n WhereValue = 'whereValue',\n AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n AfterWhereValue = 'afterWhereValue',\n AfterGroupByKeywords = 'afterGroupByKeywords',\n AfterGroupBy = 'afterGroupBy',\n AfterOrderByKeywords = 'afterOrderByKeywords',\n AfterOrderByFunction = 'afterOrderByFunction',\n AfterOrderByDirection = 'afterOrderByDirection',\n AfterIsOperator = 'afterIsOperator',\n AfterIsNotOperator = 'afterIsNotOperator',\n AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n Schemas = 'schemas',\n Tables = 'tables',\n Columns = 'columns',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n FunctionsWithArguments = 'functionsWithArguments',\n FromKeyword = 'fromKeyword',\n WhereKeyword = 'whereKeyword',\n GroupByKeywords = 'groupByKeywords',\n OrderByKeywords = 'orderByKeywords',\n FunctionsWithoutArguments = 'functionsWithoutArguments',\n LimitKeyword = 'limitKeyword',\n SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n ComparisonOperators = 'comparisonOperators',\n LogicalOperators = 'logicalOperators',\n SelectMacro = 'selectMacro',\n TableMacro = 'tableMacro',\n FilterMacro = 'filterMacro',\n GroupMacro = 'groupMacro',\n BoolValues = 'boolValues',\n NullValue = 'nullValue',\n NotKeyword = 'notKeyword',\n TemplateVariables = 'templateVariables',\n StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n High = 'a',\n MediumHigh = 'd',\n Medium = 'g',\n MediumLow = 'k',\n Low = 'q',\n}\n\nexport enum CompletionItemKind {\n Method = 0,\n Function = 1,\n Constructor = 2,\n Field = 3,\n Variable = 4,\n Class = 5,\n Struct = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Event = 10,\n Operator = 11,\n Unit = 12,\n Value = 13,\n Constant = 14,\n Enum = 15,\n EnumMember = 16,\n Keyword = 17,\n Text = 18,\n Color = 19,\n File = 20,\n Reference = 21,\n Customcolor = 22,\n Folder = 23,\n TypeParameter = 24,\n User = 25,\n Issue = 26,\n Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n KeepWhitespace = 1,\n InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n"],"names":["OperatorType","MacroType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import '@grafana/ui';
2
- import { TokenType } from '../types.js';
2
+ import { TokenType } from './tokenType.js';
3
3
 
4
4
  class LinkedToken {
5
5
  constructor(type, value, range, previous, next) {
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedToken.js","sources":["../../../../../src/components/SQLEditor/utils/LinkedToken.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\n\nexport class LinkedToken {\n constructor(\n public type: string,\n public value: string,\n public range: monacoTypes.IRange,\n public previous: LinkedToken | null,\n public next: LinkedToken | null\n ) {}\n\n isKeyword(): boolean {\n return this.type === TokenType.Keyword;\n }\n\n isWhiteSpace(): boolean {\n return this.type === TokenType.Whitespace;\n }\n\n isParenthesis(): boolean {\n return this.type === TokenType.Parenthesis;\n }\n\n isIdentifier(): boolean {\n return this.type === TokenType.Identifier;\n }\n\n isString(): boolean {\n return this.type === TokenType.String;\n }\n\n isNumber(): boolean {\n return this.type === TokenType.Number;\n }\n\n isDoubleQuotedString(): boolean {\n return this.type === TokenType.Type;\n }\n\n isVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n isFunction(): boolean {\n return this.type === TokenType.Function;\n }\n\n isOperator(): boolean {\n return this.type === TokenType.Operator;\n }\n\n isTemplateVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n is(type: TokenType, value?: string | number | boolean): boolean {\n const isType = this.type === type;\n\n return value !== undefined ? isType && compareTokenWithValue(type, this, value) : isType;\n }\n\n getPreviousNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.previous;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.previous;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.previous;\n }\n\n return tokens;\n }\n\n getNextUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.next;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.next;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.next;\n }\n\n return tokens;\n }\n\n getPreviousKeyword(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (curr.isKeyword()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getNextNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n\n getNextOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n}\n\nfunction compareTokenWithValue(type: TokenType, token: LinkedToken, value: string | number | boolean) {\n return type === TokenType.Keyword || type === TokenType.Operator\n ? token.value.toLowerCase() === value.toString().toLowerCase()\n : token.value === value;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkedToken.js","sources":["../../../../../src/components/SQLEditor/utils/LinkedToken.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from './tokenType';\n\nexport class LinkedToken {\n constructor(\n public type: string,\n public value: string,\n public range: monacoTypes.IRange,\n public previous: LinkedToken | null,\n public next: LinkedToken | null\n ) {}\n\n isKeyword(): boolean {\n return this.type === TokenType.Keyword;\n }\n\n isWhiteSpace(): boolean {\n return this.type === TokenType.Whitespace;\n }\n\n isParenthesis(): boolean {\n return this.type === TokenType.Parenthesis;\n }\n\n isIdentifier(): boolean {\n return this.type === TokenType.Identifier;\n }\n\n isString(): boolean {\n return this.type === TokenType.String;\n }\n\n isNumber(): boolean {\n return this.type === TokenType.Number;\n }\n\n isDoubleQuotedString(): boolean {\n return this.type === TokenType.Type;\n }\n\n isVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n isFunction(): boolean {\n return this.type === TokenType.Function;\n }\n\n isOperator(): boolean {\n return this.type === TokenType.Operator;\n }\n\n isTemplateVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n is(type: TokenType, value?: string | number | boolean): boolean {\n const isType = this.type === type;\n\n return value !== undefined ? isType && compareTokenWithValue(type, this, value) : isType;\n }\n\n getPreviousNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.previous;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.previous;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.previous;\n }\n\n return tokens;\n }\n\n getNextUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.next;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.next;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.next;\n }\n\n return tokens;\n }\n\n getPreviousKeyword(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (curr.isKeyword()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getNextNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n\n getNextOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n}\n\nfunction compareTokenWithValue(type: TokenType, token: LinkedToken, value: string | number | boolean) {\n return type === TokenType.Keyword || type === TokenType.Operator\n ? token.value.toLowerCase() === value.toString().toLowerCase()\n : token.value === value;\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { TokenType } from '../types.js';
2
- import { LinkedToken } from './LinkedToken.js';
3
1
  import '@grafana/ui';
2
+ import { LinkedToken } from './LinkedToken.js';
3
+ import { TokenType } from './tokenType.js';
4
4
 
5
5
  function linkedTokenBuilder(monaco, model, position, languageId = "sql") {
6
6
  var _a;
@@ -0,0 +1,18 @@
1
+ var TokenType = /* @__PURE__ */ ((TokenType2) => {
2
+ TokenType2["Parenthesis"] = "delimiter.parenthesis.sql";
3
+ TokenType2["Whitespace"] = "white.sql";
4
+ TokenType2["Keyword"] = "keyword.sql";
5
+ TokenType2["Delimiter"] = "delimiter.sql";
6
+ TokenType2["Operator"] = "operator.sql";
7
+ TokenType2["Identifier"] = "identifier.sql";
8
+ TokenType2["IdentifierQuote"] = "identifier.quote.sql";
9
+ TokenType2["Type"] = "type.sql";
10
+ TokenType2["Function"] = "predefined.sql";
11
+ TokenType2["Number"] = "number.sql";
12
+ TokenType2["String"] = "string.sql";
13
+ TokenType2["Variable"] = "variable.sql";
14
+ return TokenType2;
15
+ })(TokenType || {});
16
+
17
+ export { TokenType };
18
+ //# sourceMappingURL=tokenType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenType.js","sources":["../../../../../src/components/SQLEditor/utils/tokenType.ts"],"sourcesContent":["export enum TokenType {\n Parenthesis = 'delimiter.parenthesis.sql',\n Whitespace = 'white.sql',\n Keyword = 'keyword.sql',\n Delimiter = 'delimiter.sql',\n Operator = 'operator.sql',\n Identifier = 'identifier.sql',\n IdentifierQuote = 'identifier.quote.sql',\n Type = 'type.sql',\n Function = 'predefined.sql',\n Number = 'number.sql',\n String = 'string.sql',\n Variable = 'variable.sql',\n}\n"],"names":["TokenType"],"mappings":"AAAY,IAAA,SAAA,qBAAAA,UAAL,KAAA;AACL,EAAAA,WAAA,aAAc,CAAA,GAAA,2BAAA;AACd,EAAAA,WAAA,YAAa,CAAA,GAAA,WAAA;AACb,EAAAA,WAAA,SAAU,CAAA,GAAA,aAAA;AACV,EAAAA,WAAA,WAAY,CAAA,GAAA,eAAA;AACZ,EAAAA,WAAA,UAAW,CAAA,GAAA,cAAA;AACX,EAAAA,WAAA,YAAa,CAAA,GAAA,gBAAA;AACb,EAAAA,WAAA,iBAAkB,CAAA,GAAA,sBAAA;AAClB,EAAAA,WAAA,MAAO,CAAA,GAAA,UAAA;AACP,EAAAA,WAAA,UAAW,CAAA,GAAA,gBAAA;AACX,EAAAA,WAAA,QAAS,CAAA,GAAA,YAAA;AACT,EAAAA,WAAA,QAAS,CAAA,GAAA,YAAA;AACT,EAAAA,WAAA,UAAW,CAAA,GAAA,cAAA;AAZD,EAAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { FROM, SELECT } from '../standardSql/language.js';
2
- import { TokenType } from '../types.js';
3
2
  import '@grafana/ui';
3
+ import { TokenType } from './tokenType.js';
4
4
 
5
5
  const getSelectToken = (currentToken) => {
6
6
  var _a;
@@ -13,7 +13,7 @@ import { EditorStack } from '../../QueryEditor/EditorStack.js';
13
13
  import 'react-use';
14
14
  import '../../QueryEditor/QueryHeader.js';
15
15
  import 'react-virtualized-auto-sizer';
16
- import 'sql-formatter-plus';
16
+ import 'sql-formatter';
17
17
  import '../../SQLEditor/standardSql/language.js';
18
18
  import '@grafana/runtime';
19
19
  import '../../SQLEditor/utils/debugger.js';
@@ -11,7 +11,7 @@ import '../../QueryEditor/EditorList.js';
11
11
  import { EditorStack } from '../../QueryEditor/EditorStack.js';
12
12
  import '../../QueryEditor/QueryHeader.js';
13
13
  import 'react-virtualized-auto-sizer';
14
- import 'sql-formatter-plus';
14
+ import 'sql-formatter';
15
15
  import '../../SQLEditor/standardSql/language.js';
16
16
  import 'uuid';
17
17
  import '@grafana/runtime';
@@ -9,7 +9,7 @@ import { EditorStack } from '../../QueryEditor/EditorStack.js';
9
9
  import 'react-use';
10
10
  import '../../QueryEditor/QueryHeader.js';
11
11
  import 'react-virtualized-auto-sizer';
12
- import 'sql-formatter-plus';
12
+ import 'sql-formatter';
13
13
  import '../../SQLEditor/standardSql/language.js';
14
14
  import 'uuid';
15
15
  import '@grafana/runtime';
@@ -9,7 +9,7 @@ import { EditorStack } from '../../QueryEditor/EditorStack.js';
9
9
  import 'react-use';
10
10
  import '../../QueryEditor/QueryHeader.js';
11
11
  import 'react-virtualized-auto-sizer';
12
- import 'sql-formatter-plus';
12
+ import 'sql-formatter';
13
13
  import '../../SQLEditor/standardSql/language.js';
14
14
  import 'uuid';
15
15
  import '@grafana/runtime';
@@ -9,7 +9,7 @@ import { EditorStack } from '../../QueryEditor/EditorStack.js';
9
9
  import 'react-use';
10
10
  import '../../QueryEditor/QueryHeader.js';
11
11
  import 'react-virtualized-auto-sizer';
12
- import 'sql-formatter-plus';
12
+ import 'sql-formatter';
13
13
  import '../../SQLEditor/standardSql/language.js';
14
14
  import 'uuid';
15
15
  import '@grafana/runtime';
@@ -10,7 +10,7 @@ import '../../QueryEditor/EditorList.js';
10
10
  import { EditorStack } from '../../QueryEditor/EditorStack.js';
11
11
  import '../../QueryEditor/QueryHeader.js';
12
12
  import 'react-virtualized-auto-sizer';
13
- import 'sql-formatter-plus';
13
+ import 'sql-formatter';
14
14
  import '../../SQLEditor/standardSql/language.js';
15
15
  import 'uuid';
16
16
  import '../../SQLEditor/utils/debugger.js';